Class Wealth Dynamics
Empirically-derived ODE system modeling wealth flows between four Marxian classes. Fitted from FRED Distributional Financial Accounts (2015-2025).
Research Question
The original research question that motivated this analysis:
User’s Theory (Exact Words)
I have a theory I want to validate against empirical evidence. The theory goes as follows: Within the imperial core today, there are 4 broad ‘classes’ identifiable by wealth.
The top 1%
The next 9% (90-99 percentile)
The next 50% (50-90 percentile)
The bottom 40-50%
The theory states:
Top 1% owns approximately 1/3 of total wealth
Next 9% (90-99%) owns approximately 1/3 of total wealth
Next 50% (50-90%) owns approximately 1/3 of total wealth
Bottom 40-50% owns essentially nothing (~0%)
I want to:
Validate this against FRED Distributional Financial Accounts data
Create a visualization with wealth brackets as FIXED (33%/33%/33%/0%) and population as the DEPENDENT variable
Show a stacked area chart of population concentration in each wealth third
Derive flow-based Marxian differential equations for class wealth dynamics
These ODEs should be compatible with Babylon’s formula system
Empirical Validation
Using FRED Distributional Financial Accounts (2015 Q1 - 2025 Q2):
Population Tier |
Pop Share |
Wealth Share |
Theory Prediction |
Babylon Class |
|---|---|---|---|---|
Top 1% |
1% |
30.7% |
~33% ✓ |
|
90-99% |
9% |
36.4% |
~33% (slightly above) |
|
50-90% |
40% |
30.3% |
~33% ✓ |
|
Bottom 50% |
50% |
2.5% |
~0% ✓ |
|
Verdict: Theory is approximately correct. The actual distribution follows a 31/36/30/2.5 pattern rather than exact 33/33/33/0, but the structural insight holds.
Inverted Distribution
When we invert the question—asking what fraction of the population owns each third of wealth—we find:
Wealth Bracket |
Population Share |
Interpretation |
|---|---|---|
Bottom third (0-33%) |
90.1% |
Nine-tenths of Americans |
Middle third (33-67%) |
8.3% |
Professional-managerial class |
Top third (67-100%) |
1.6% |
Ultra-wealthy |
ODE System
State Variables
The system tracks four wealth shares that must sum to 1.0:
Where:
\(W_1(t)\) = Core Bourgeoisie (Top 1%)
\(W_2(t)\) = Petty Bourgeoisie (90-99%)
\(W_3(t)\) = Labor Aristocracy (50-90%)
\(W_4(t)\) = Internal Proletariat (Bottom 50%)
First-Order System
Wealth flows between classes via extraction and redistribution:
Where:
\(\alpha_{ij}\) = Extraction rate from class \(j\) to class \(i\)
\(\delta_i\) = Redistribution rate from class \(i\) (taxation, inheritance)
\(\gamma_3\) = Imperial rent formation rate (superwages to core workers)
FRED-Fitted Parameters (per quarter):
Parameter |
Value |
Description |
|---|---|---|
\(\alpha_{21}\) |
0.0006 |
Petty bourgeoisie → Bourgeoisie |
\(\alpha_{41}, \alpha_{31}, \alpha_{32}, \alpha_{42}, \alpha_{43}\) |
0.0 |
Other extraction rates (negligible) |
Parameter |
Value |
Description |
|---|---|---|
\(\delta_1\) |
0.0010 |
From Bourgeoisie (progressive taxation) |
\(\delta_2\) |
0.0020 |
From Petty Bourgeoisie |
\(\delta_3\) |
0.0010 |
From Labor Aristocracy |
Parameter |
Value |
Description |
|---|---|---|
\(\gamma_3\) |
0.0057 |
Imperial rent injection to Labor Aristocracy |
Second-Order Dynamics
Models momentum effects and oscillation around equilibrium:
Where:
\(\beta_i\) = Damping coefficient (negative for mean-reversion)
\(\omega_i\) = Natural frequency of oscillation
\(W_i^*\) = Equilibrium wealth share (attractor)
FRED-Fitted Equilibrium:
Class |
\(W^*\) |
Interpretation |
|---|---|---|
Core Bourgeoisie |
0.305 |
Top 1% maintains ~30.5% homeostasis |
Petty Bourgeoisie |
0.382 |
90-99% holds largest share |
Labor Aristocracy |
0.294 |
50-90% receives imperial rent |
Internal Proletariat |
0.020 |
Bottom 50% owns essentially nothing |
API Reference
Classes
- class ClassDynamicsParams
Parameters for the first-order ODE system.
All rates are per-quarter (fitted from FRED 2015-2025).
- Variables:
alpha_41 – Extraction: proletariat → bourgeoisie (default: 0.0)
alpha_31 – Extraction: labor aristocracy → bourgeoisie (default: 0.0)
alpha_21 – Extraction: petty bourgeoisie → bourgeoisie (default: 0.0006)
alpha_32 – Extraction: labor aristocracy → petty bourgeoisie (default: 0.0)
alpha_42 – Extraction: proletariat → petty bourgeoisie (default: 0.0)
alpha_43 – Extraction: proletariat → labor aristocracy (default: 0.0)
delta_1 – Redistribution from bourgeoisie (default: 0.0010)
delta_2 – Redistribution from petty bourgeoisie (default: 0.0020)
delta_3 – Redistribution from labor aristocracy (default: 0.0010)
gamma_3 – Imperial rent formation rate (default: 0.0057)
- class SecondOrderParams
Parameters for second-order momentum dynamics.
- Variables:
beta – Damping coefficients (negative = mean-reverting)
omega – Natural frequencies of oscillation
equilibrium – Attractor wealth shares
Functions
- calculate_wealth_flow(source_share, extraction_rate, resistance=0.0)
Calculate per-tick wealth flow from source class.
\[\text{Flow} = \alpha \times W_{\text{source}} \times (1 - r)\]- Parameters:
source_share – Source class wealth share [0, 1]
extraction_rate – Base extraction coefficient
resistance – Class consciousness resistance [0, 1]
- Returns:
Wealth delta flowing out of source class
- calculate_class_dynamics_derivative(wealth_shares, params=None, resistances=(0, 0, 0, 0))
Compute dW/dt for all four classes.
- Parameters:
wealth_shares – (W1, W2, W3, W4) current wealth shares summing to 1
params – ODE system parameters (defaults to ClassDynamicsParams())
resistances – (r1, r2, r3, r4) class consciousness levels [0, 1]
- Returns:
(dW1/dt, dW2/dt, dW3/dt, dW4/dt) derivatives
- calculate_wealth_acceleration(wealth_share, velocity, equilibrium, damping=-0.1, frequency=0.05)
Compute second derivative for momentum dynamics.
- Parameters:
wealth_share – Current wealth share W
velocity – First derivative dW/dt
equilibrium – Target equilibrium W*
damping – Damping coefficient (negative = mean-reverting)
frequency – Natural frequency of oscillation
- Returns:
Second derivative d2W/dt2
- calculate_full_dynamics(wealth_shares, velocities, params=None, second_order=None, resistances=(0, 0, 0, 0))
Compute both first and second order derivatives.
- Parameters:
wealth_shares – Current wealth shares
velocities – Current velocities (first derivatives)
params – First-order ODE parameters
second_order – Second-order parameters
resistances – Class consciousness levels
- Returns:
Tuple of (first_derivatives, second_derivatives)
- invert_wealth_to_population(wealth_shares, target_wealth_pct=33.333)
Find population percentile owning target wealth percentage.
Inverts the wealth distribution to find what fraction of the population owns a given fraction of total wealth.
- Parameters:
wealth_shares – (top_1%, 90-99%, 50-90%, bottom_50%) shares
target_wealth_pct – Target cumulative wealth percentage
- Returns:
Population percentile owning up to target_wealth_pct of wealth
Usage Examples
Basic Derivative Calculation
from babylon.formulas import (
ClassDynamicsParams,
calculate_class_dynamics_derivative,
)
# Current wealth shares (must sum to 1.0)
shares = (0.30, 0.36, 0.30, 0.04)
# Calculate derivatives using default FRED-fitted params
dw = calculate_class_dynamics_derivative(shares)
# Verify conservation: derivatives sum to zero
assert abs(sum(dw)) < 1e-10
Simulating Wealth Dynamics
from babylon.formulas import calculate_class_dynamics_derivative
# Initial shares (2015 Q1 FRED data)
shares = [0.307, 0.393, 0.289, 0.011]
dt = 1.0 # One quarter
# Simulate 40 quarters (10 years)
for _ in range(40):
dw = calculate_class_dynamics_derivative(tuple(shares))
for i in range(4):
shares[i] += dw[i] * dt
# shares now approximately equals 2025 Q1 FRED data
Modeling Class Consciousness
from babylon.formulas import calculate_class_dynamics_derivative
shares = (0.30, 0.36, 0.30, 0.04)
# No resistance: full extraction
dw_no_resist = calculate_class_dynamics_derivative(shares)
# Labor aristocracy develops consciousness (r=0.5)
dw_conscious = calculate_class_dynamics_derivative(
shares,
resistances=(0.0, 0.0, 0.5, 0.0)
)
# With consciousness, less flows to bourgeoisie
assert dw_conscious[0] < dw_no_resist[0]
Inverting the Distribution
from babylon.formulas import invert_wealth_to_population
# 2025 Q2 FRED data (as percentages)
shares = (30.7, 36.4, 30.3, 2.5)
# What population owns the bottom third of wealth?
pop_at_33 = invert_wealth_to_population(shares, 33.333)
# Returns ~90.1 (90.1% of population owns bottom third)
# What population owns the bottom two-thirds?
pop_at_67 = invert_wealth_to_population(shares, 66.667)
# Returns ~98.4 (98.4% of population owns bottom two-thirds)
Theoretical Implications
MLM-TW Validation
The empirical data validates core Marxist-Leninist-Maoist Third Worldist predictions:
Structural Stability: Wealth concentration is remarkably stable (30% ± 1% for Top 1% over 11 years). This is not accidental but structurally self-reinforcing.
Proletariat Dispossession: Bottom 50% owns essentially nothing (2.5%). This validates Marx’s prediction of proletarianization.
Labor Aristocracy Mechanism: The 50-90% tier receives a constant injection of imperial rent (\(\gamma_3 = 0.0057\)). This is the material basis of first-world worker complicity in imperialism.
Buffer Class Erosion: The 90-99% (petty bourgeoisie) slowly loses ground (-0.3%/year). The professional-managerial buffer is weakening.
COVID-19 as Natural Experiment
The COVID pandemic provided a natural experiment in crisis dynamics:
Q4 2019 → Q1 2020: Top 1% dropped from 30.5% to 29.1%
Q1 2020: Bottom 50% rose from 1.9% to 2.7% (stimulus)
Q4 2020: System restored homeostasis (Top 1% back to 30.5%)
The system’s rapid return to equilibrium demonstrates the structural nature of wealth concentration—it cannot be reformed away.
See Also
Formulas Reference - Complete formula specification
FRED Economic Data - FRED data sources and API usage
tools/analyze_wealth_distribution.py- Analysis scriptai-docs/class-dynamics.yaml- Machine-readable specification