You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: lectures/gorman_heterogeneous_households.md
+63-44Lines changed: 63 additions & 44 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -53,7 +53,7 @@ import matplotlib.pyplot as plt
53
53
54
54
Gorman aggregation lets us solve heterogeneous-household economies in two steps: solve a representative-agent linear-quadratic planning problem for aggregates, then recover household allocations via a "sharing rule" with household-specific deviation terms.
55
55
56
-
Gorman conditions ensure all consumers have parallel Engel curves, so aggregate allocations and prices can be determined independently of distribution.
56
+
The key is that Gorman conditions ensure all consumers have parallel Engel curves, so aggregate allocations and prices can be determined independently of distribution.
57
57
58
58
This eliminates the standard problem where the utility possibility frontier shifts with endowment changes, making it impossible to rank allocations without specifying distributional weights.
59
59
@@ -254,6 +254,8 @@ In the dynamic setting, we set the utility index $u^j$ equal to household $j$'s
254
254
255
255
The ratio $\mu_{0j}^w / \mu_{0a}^w$ (where $\mu_{0a}^w = \sum_j \mu_{0j}^w$) then serves as the time-invariant Gorman weight that determines household $j$'s share of aggregate consumption in excess of baseline.
256
256
257
+
Without spoiling further, we now introduce the basic setup for the dynamic heterogeneous-household economy.
258
+
257
259
258
260
## Set up
259
261
@@ -290,6 +292,8 @@ The vector $z_t$ typically contains three types of components.
290
292
The selection matrices $U_b$ and $U_d$ pick out which components of $z_t$ affect
291
293
household preferences (bliss points) and endowments.
292
294
295
+
This structure allows us to model both aggregate and idiosyncratic shocks within a unified framework at a later stage.
296
+
293
297
### Technologies
294
298
295
299
The economy's resource constraint is
@@ -946,7 +950,11 @@ This transforms heterogeneous endowment risk into proportional shares of aggrega
946
950
947
951
We now derive the law of motion for the bond position $\hat{k}_{jt}$.
This is the present value of future deviation consumption.
1014
1022
1015
-
Under the Chapter 12.6 measurability restriction ($\tilde{\chi}_{jt} \in \mathcal{J}_0$), this sum is known at date zero and can be used to set the initial bond position.
1023
+
Under the measurability restriction ($\tilde{\chi}_{jt} \in \mathcal{J}_0$), this sum is known at date zero and can be used to set the initial bond position.
1016
1024
1017
1025
```{note}
1018
1026
@@ -1030,7 +1038,9 @@ All changes over time in portfolio composition take place through transactions i
1030
1038
Below is the code that computes household allocations and limited-markets portfolios along a fixed aggregate path according to the mechanism described above
print(f"Endowments: α in [{np.min(αs):.2f}, {np.max(αs):.2f}], Σφ={np.sum(φs):.6f}")
1697
+
print(f"Endowments: α in [{np.min(αs):.2f}, {np.max(αs):.2f}]")
1683
1698
```
1684
1699
1685
1700
The next plots show household consumption and dividend paths after discarding the initial burn-in period.
@@ -1705,7 +1720,9 @@ plt.show()
1705
1720
1706
1721
### Closed-loop state-space system
1707
1722
1708
-
The DLE framework represents the economy as a linear state-space system. After solving the optimal control problem and substituting the policy rule, we obtain a closed-loop system:
1723
+
The DLE framework represents the economy as a linear state-space system.
1724
+
1725
+
After solving the optimal control problem and substituting the policy rule, we obtain a closed-loop system:
1709
1726
1710
1727
$$
1711
1728
x_{t+1} = A_0 x_t + C w_{t+1},
@@ -1762,9 +1779,6 @@ G = np.vstack([
1762
1779
n_h = np.atleast_2d(econ.thetah).shape[0]
1763
1780
n_k = np.atleast_2d(econ.thetak).shape[0]
1764
1781
n_endo = n_h + n_k # endogenous state dimension
1765
-
1766
-
print(f"Shapes: A0 {A0.shape}, C {C.shape}, G {G.shape}")
label=f'Mean across {d_households.shape[0]} households', alpha=0.8)
1879
+
label=f'Mean across {d_households.shape[0]} households', alpha=0.8)
1866
1880
1867
1881
axes[1].set_xlabel('Time (after burn-in)')
1868
1882
axes[1].set_ylabel('Endowment')
@@ -1912,7 +1926,9 @@ To implement a redistribution from $\mu$ to $\lambda^*$, we construct new Pareto
1912
1926
3. Leave middle-$j$ types relatively unaffected
1913
1927
4. Preserve the constraint $\sum_{j=1}^J \lambda_j^* = 1$
1914
1928
1915
-
We implement this using a smooth transformation. Let $\{\lambda_j\}_{j=1}^J$ denote the original competitive equilibrium Pareto weights (sorted in descending order). Define the redistribution function:
1929
+
We implement this using a smooth transformation.
1930
+
1931
+
Let $\{\lambda_j\}_{j=1}^J$ denote the original competitive equilibrium Pareto weights (sorted in descending order). Define the redistribution function:
1916
1932
1917
1933
$$
1918
1934
f(j; J) = \frac{j-1}{J-1}, \qquad
@@ -1922,8 +1938,8 @@ $$
1922
1938
1923
1939
where:
1924
1940
- $j \in \{1, \ldots, J\}$ is the household index
1925
-
- $\alpha > 0$ controls the overall magnitude of redistribution (with $\tau$ maximized at the extremes)
1926
-
- $\beta > 1$ controls the progressivity (higher $\beta$ concentrates redistribution more strongly in the tails)
1941
+
- $\alpha > 0$ controls the overall magnitude of redistribution
1942
+
- $\beta$ controls the progressivity (higher $\beta$ concentrates redistribution more strongly in the tails)
0 commit comments