From e60bdcf3e866c7db5bd45c5f31554a3f6ad7ea80 Mon Sep 17 00:00:00 2001 From: thomassargent30 Date: Sat, 23 May 2026 09:38:04 -0400 Subject: [PATCH 1/6] Tom's May 23 edits of some intro lectures -- adding exercises --- .../long_run_growth/tooze_ch1_graph.png | Bin 165144 -> 160374 bytes lectures/cagan_adaptive.md | 301 ++++++++++++++++++ lectures/cagan_ree.md | 252 +++++++++++++++ lectures/complex_and_trig.md | 204 ++++++++++++ lectures/cons_smooth.md | 235 ++++++++++++++ lectures/equalizing_difference.md | 183 +++++++++++ lectures/french_rev.md | 239 ++++++++++++++ lectures/geom_series.md | 251 +++++++++++++++ lectures/inflation_history.md | 257 +++++++++++++++ lectures/laffer_adaptive.md | 159 +++++++++ lectures/money_inflation.md | 237 ++++++++++++++ lectures/pv.md | 234 ++++++++++++++ lectures/tax_smooth.md | 218 +++++++++++++ lectures/unpleasant.md | 172 ++++++++++ 14 files changed, 2942 insertions(+) diff --git a/lectures/_static/lecture_specific/long_run_growth/tooze_ch1_graph.png b/lectures/_static/lecture_specific/long_run_growth/tooze_ch1_graph.png index 3ae6891e3cc60585efed56938762ebd4a12bc0d9..a8e9775364b755b383a3553fb38c1345fc444f3d 100644 GIT binary patch literal 160374 zcmeFZbyQSs8#juDiCBmt5-QytQlfMU14yG%LrQlUsHo)7B~sE#4AP<^4bs98Dhwgr zF~qqx==1u0|DQk3T4&aJ-)E^Xv*+ITeOGV4`j6+h=|y)BLCaxnkw#0w2z2L?$!;IYuwbp zVb?IH)t&hcrQX>5RpJ|`j2U%R `~9bo=(p89nE!w(DrK?ly=a65NPLiOOGefvV# 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Ξ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 Fe*iSuDO3Oe diff --git a/lectures/cagan_adaptive.md b/lectures/cagan_adaptive.md index db4335a9b..e8a1ffd6a 100644 --- a/lectures/cagan_adaptive.md +++ b/lectures/cagan_adaptive.md @@ -454,3 +454,304 @@ The sluggish fall in inflation is explained by how anticipated inflation $\pi_t # solve and plot π_seq_2, Eπ_seq_2, m_seq_2, p_seq_2 = solve_and_plot(md, μ_seq_2) ``` + +## Exercises + +```{exercise} +:label: ca_ex1 + +**Sensitivity of overshooting to the learning speed $\lambda$.** + +For Experiment 1 (sudden stabilization at $T_1 = 60$ from $\mu_0 = 0.5$ to +$\mu^* = 0$), solve the model for +$\lambda \in \{0.3,\, 0.5,\, 0.7,\, 0.9\}$ and, on a single graph, plot the +actual inflation rate $\pi_t$ for each value. + +(a) As $\lambda$ decreases (the public updates its expectations faster), what + happens to the magnitude of the overshoot in $\pi_t$ at $t = T_1$? + +(b) For each $\lambda$, print the peak value of $\pi_t$ for $t \geq T_1$. + Explain intuitively why faster updating dampens overshooting. +``` + +```{solution-start} ca_ex1 +:class: dropdown +``` + +```{code-cell} ipython3 +T1 = 60 +μ0 = 0.5 +μ_star = 0.0 +λ_vals = [0.3, 0.5, 0.7, 0.9] + +fig, ax = plt.subplots(figsize=(9, 4)) +for λ in λ_vals: + m = create_cagan_adaptive_model(λ=λ) + μ_seq = np.append(μ0 * np.ones(T1), μ_star * np.ones(m.T + 1 - T1)) + π_seq, _, _, _ = solve_cagan_adaptive(m, μ_seq) + ax.plot(range(m.T + 1), π_seq, label=f'λ = {λ}') + +ax.axvline(T1, linestyle='--', color='black', lw=1, label='Stabilization $T_1$') +ax.axhline(μ_star, linestyle=':', color='gray', lw=0.8) +ax.set_xlabel('$t$') +ax.set_ylabel(r'$\pi_t$') +ax.set_title('Inflation paths for different λ (sudden stabilization)') +ax.legend() +plt.show() + +print(f'{"λ":>6} | {"peak π after T₁":>18}') +print('-' * 30) +for λ in λ_vals: + m = create_cagan_adaptive_model(λ=λ) + μ_seq = np.append(μ0 * np.ones(T1), μ_star * np.ones(m.T + 1 - T1)) + π_seq, _, _, _ = solve_cagan_adaptive(m, μ_seq) + peak = np.max(np.abs(π_seq[T1:])) + print(f'{λ:>6.1f} | {peak:>18.4f}') +``` + +When $\lambda$ is small the public places a large weight $(1-\lambda)$ on the most +recent *actual* inflation observation. After stabilization, actual inflation drops +quickly, so expected inflation — and hence money demand — adjusts fast too, +leaving little room for overshooting. When $\lambda$ is close to 1 expectations +are very inertial: the public is slow to "forget" past high inflation, so demand +for real balances stays depressed after the stabilization, driving a large +transitory spike in $\pi_t$. + +```{solution-end} +``` + +```{exercise} +:label: ca_ex2 + +**Systematic forecast errors under adaptive expectations.** + +The lecture notes that $\pi_t^* \neq \pi_t$ in general under adaptive +expectations, in contrast to a rational-expectations equilibrium. + +For the default model (`md`) and both experiments: + +(a) Compute and plot the forecast error $e_t = \pi_t^* - \pi_t$ for + $t = 0, 1, \ldots, T$. + +(b) For each experiment, is $e_t$ systematically positive or negative during + the disinflation? Explain why this systematic bias could not survive under + rational expectations. + +(Recall that `Eπ_seq` returned by `solve_cagan_adaptive` has $T+2$ elements +while `π_seq` has $T+1$; use `Eπ_seq[:-1]` to align them.) +``` + +```{solution-start} ca_ex2 +:class: dropdown +``` + +```{code-cell} ipython3 +T1 = 60 +μ0 = 0.5 +μ_star = 0.0 + +# Experiment 1 sequences +μ_seq_1 = np.append(μ0 * np.ones(T1), μ_star * np.ones(md.T + 1 - T1)) +π1, Eπ1, _, _ = solve_cagan_adaptive(md, μ_seq_1) + +# Experiment 2 sequences +ϕ = 0.9 +μ_seq_2 = np.array([ϕ**t * μ0 + (1 - ϕ**t) * μ_star for t in range(md.T)]) +μ_seq_2 = np.append(μ_seq_2, μ_star) +π2, Eπ2, _, _ = solve_cagan_adaptive(md, μ_seq_2) + +t_seq = np.arange(md.T + 1) +e1 = Eπ1[:-1] - π1 # forecast error, length T+1 +e2 = Eπ2[:-1] - π2 + +fig, axes = plt.subplots(1, 2, figsize=(11, 4)) +axes[0].plot(t_seq, e1) +axes[0].axhline(0, color='black', lw=0.8, linestyle='--') +axes[0].axvline(T1, color='gray', lw=0.8, linestyle=':') +axes[0].set_title('Forecast error: Experiment 1 (sudden)') +axes[0].set_xlabel('$t$') +axes[0].set_ylabel(r'$\pi_t^* - \pi_t$') + +axes[1].plot(t_seq, e2, color='C1') +axes[1].axhline(0, color='black', lw=0.8, linestyle='--') +axes[1].set_title('Forecast error: Experiment 2 (gradual)') +axes[1].set_xlabel('$t$') +axes[1].set_ylabel(r'$\pi_t^* - \pi_t$') + +plt.tight_layout() +plt.show() + +print(f'Exp 1 — mean forecast error t < T₁: {e1[:T1].mean():.4f}') +print(f'Exp 1 — mean forecast error t ≥ T₁: {e1[T1:].mean():.4f}') +print(f'Exp 2 — mean forecast error overall: {e2.mean():.4f}') +``` + +During disinflation, actual inflation falls *below* expected inflation, so +$e_t = \pi_t^* - \pi_t > 0$ throughout the transition — the public +systematically **over-predicts** inflation. Under rational expectations this +persistent one-sided bias would be immediately arbitraged away: agents would +adjust their forecasting rule until $e_t$ had mean zero. + +```{solution-end} +``` + +```{exercise} +:label: ca_ex3 + +**Post-stabilization convergence rate.** + +The lecture derives that, after the money-growth rate has been permanently set to +$\mu^*$, the actual inflation rate $\pi_t$ decays geometrically: + +$$ +\pi_{t+1} = \rho\, \pi_t, \qquad +\rho \equiv \frac{\lambda - \alpha(1-\lambda)}{1 - \alpha(1-\lambda)}. +$$ + +Using Experiment 1 and the default model `md`: + +(a) Compute $\rho$ analytically from the model parameters and verify that + $|\rho| < 1$ (the stability condition {eq}`eq:suffcond`). + +(b) From the solved path `π_seq`, compute the empirical ratios + $\pi_{t+1}/\pi_t$ for $t = T_1 + 1, \ldots, T_1 + 10$ and compare them + to $\rho$. + +(c) Plot $\log|\pi_t|$ against $t$ for $t \geq T_1$ and verify that it is + linear with slope $\log|\rho|$. +``` + +```{solution-start} ca_ex3 +:class: dropdown +``` + +```{code-cell} ipython3 +T1 = 60 +μ0 = 0.5 +μ_star = 0.0 + +α, λ = md.α, md.λ +ρ = (λ - α * (1 - λ)) / (1 - α * (1 - λ)) +print(f'α = {α}, λ = {λ}') +print(f'ρ = {ρ:.6f} (|ρ| < 1: {abs(ρ) < 1})') + +μ_seq = np.append(μ0 * np.ones(T1), μ_star * np.ones(md.T + 1 - T1)) +π_seq, _, _, _ = solve_cagan_adaptive(md, μ_seq) + +# (b) empirical successive ratios +print(f'\n{"t":>5} | {"π_t":>12} | {"π_{t+1}/π_t":>14} | {"ρ":>8}') +print('-' * 46) +for t in range(T1 + 1, T1 + 11): + ratio = π_seq[t] / π_seq[t - 1] + print(f'{t:>5} | {π_seq[t]:>12.6f} | {ratio:>14.6f} | {ρ:>8.6f}') +``` + +```{code-cell} ipython3 +# (c) log|π_t| is linear after T1 +t_post = np.arange(T1, md.T + 1) +log_π = np.log(np.abs(π_seq[T1:])) + +fig, ax = plt.subplots() +ax.plot(t_post, log_π, label=r'$\log|\pi_t|$') +# overlay the theoretical slope +slope_theory = np.log(abs(ρ)) +ax.plot(t_post, + log_π[0] + slope_theory * (t_post - T1), + linestyle='--', label=f'slope = log|ρ| = {slope_theory:.4f}') +ax.set_xlabel('$t$') +ax.set_ylabel(r'$\log|\pi_t|$') +ax.set_title('Geometric decay of inflation after stabilization') +ax.legend() +plt.show() +``` + +The empirical ratios converge to $\rho = 0.8$ immediately after $T_1$, confirming +the first-order difference equation derived analytically. The log plot is exactly +linear with the theoretical slope, reflecting the exact geometric convergence +$\pi_t = \rho^{t-T_1} \pi_{T_1}$ for $t \geq T_1$. + +```{solution-end} +``` + +```{exercise} +:label: ca_ex4 + +**Fast vs slow learning under gradual stabilization.** + +Experiment 2 uses a gradual decline in money growth +$\mu_t = \phi^t \mu_0 + (1-\phi^t)\mu^*$ with $\phi = 0.9$. + +(a) For the same gradual $\mu$ path, compare the inflation $\pi_t$ and expected + inflation $\pi_t^*$ paths for two extreme cases: + + * **Fast learners**: $\lambda = 0.2$ (heavy weight on recent realised inflation) + * **Slow learners**: $\lambda = 0.95$ (heavy weight on past expectations) + + Plot $\pi_t$, $\pi_t^*$, and $\mu_t$ for each case on side-by-side graphs. + +(b) For each case, compute the mean absolute forecast error + $\bar{e} = \frac{1}{T+1}\sum_{t=0}^T |\pi_t^* - \pi_t|$. + Which agent type makes larger errors during the disinflation, and why? + +(c) For fast learners, explain why $\pi_t$ can *undershoot* $\mu_t$ during the + transition, while for slow learners inflation persistently *exceeds* + $\mu_t$. +``` + +```{solution-start} ca_ex4 +:class: dropdown +``` + +```{code-cell} ipython3 +μ0 = 0.5 +μ_star = 0.0 +ϕ = 0.9 + +λ_cases = {'Fast learners (λ=0.2)': 0.2, + 'Slow learners (λ=0.95)': 0.95} + +fig, axes = plt.subplots(1, 2, figsize=(12, 4)) + +for ax, (label, λ) in zip(axes, λ_cases.items()): + m = create_cagan_adaptive_model(λ=λ) + μ_seq = np.array([ϕ**t * μ0 + (1 - ϕ**t) * μ_star for t in range(m.T)]) + μ_seq = np.append(μ_seq, μ_star) + π_seq, Eπ_seq, _, _ = solve_cagan_adaptive(m, μ_seq) + + t_seq = np.arange(m.T + 1) + ax.plot(t_seq, μ_seq, label=r'$\mu_t$', linestyle=':', color='black') + ax.plot(t_seq, π_seq, label=r'$\pi_t$', lw=1.5) + ax.plot(t_seq, Eπ_seq[:-1], label=r'$\pi_t^*$', linestyle='--', lw=1.5) + ax.set_xlabel('$t$') + ax.set_title(label) + ax.legend(fontsize=8) + +plt.tight_layout() +plt.show() + +print(f'{"Case":>30} | {"Mean |forecast error|":>22}') +print('-' * 56) +for label, λ in λ_cases.items(): + m = create_cagan_adaptive_model(λ=λ) + μ_seq = np.array([ϕ**t * μ0 + (1 - ϕ**t) * μ_star for t in range(m.T)]) + μ_seq = np.append(μ_seq, μ_star) + π_seq, Eπ_seq, _, _ = solve_cagan_adaptive(m, μ_seq) + mae = np.mean(np.abs(Eπ_seq[:-1] - π_seq)) + print(f'{label:>30} | {mae:>22.6f}') +``` + +**Fast learners** quickly revise $\pi_t^*$ downward as they observe each decline +in $\pi_t$. Because expectations fall *with* actual inflation, money demand +adjusts promptly and $\pi_t$ can even dip below $\mu_t$ transiently (a +"forward-looking" flavour emerges from the rapid feedback). Their forecast +errors are small. + +**Slow learners** keep $\pi_t^*$ elevated long after actual inflation has begun +to fall. Persistently high expected inflation suppresses real money demand, +which bids up the price level and keeps $\pi_t$ above $\mu_t$ throughout the +transition. Their larger, slower-correcting forecast errors are the hallmark of +the adaptive mechanism. + +```{solution-end} +``` +``` diff --git a/lectures/cagan_ree.md b/lectures/cagan_ree.md index f0274b56a..2642ea89a 100644 --- a/lectures/cagan_ree.md +++ b/lectures/cagan_ree.md @@ -649,6 +649,258 @@ plot_sequences(sequences, (r'$\mu$', r'$\pi$', r'$m - p$', r'$m$', r'$p$')) ``` +## Exercises + +```{exercise} +:label: cagan_ex1 + +**Sensitivity to $\alpha$.** + +For Experiment 1 (foreseen sudden stabilization from $\mu_0 = 0.5$ to $\mu^* = 0$ +at $T_1 = 60$, with $T = 80$), solve the model for +$\alpha \in \{1,\, 3,\, 5,\, 10,\, 25\}$ and plot the inflation path $\pi_t$ for +each value on a single graph. + +Describe how the **anticipation effect** — the pre-stabilization fall in inflation +— changes with $\alpha$. +``` + +```{solution-start} cagan_ex1 +:class: dropdown +``` + +```{code-cell} ipython3 +T1 = 60 +μ0 = 0.5 +μ_star = 0.0 +T = 80 +μ_seq = np.append(μ0 * np.ones(T1+1), μ_star * np.ones(T - T1)) + +α_vals = [1, 3, 5, 10, 25] +T_seq = np.arange(T+1) + +fig, ax = plt.subplots() +for α in α_vals: + cm = create_cagan_model(α=α, μ_seq=μ_seq) + π_seq, _, _ = solve(cm, T) + ax.plot(T_seq, π_seq, label=f'α = {α}') + +ax.axvline(T1, linestyle='--', color='black', lw=1, label='Stabilization $T_1$') +ax.set_xlabel('$t$') +ax.set_ylabel(r'$\pi_t$') +ax.set_title('Inflation paths for different α (foreseen stabilization)') +ax.legend() +plt.show() +``` + +For small $\alpha$, real-balance demand is insensitive to inflation so the model +behaves almost like the exogenous-money case: inflation tracks $\mu_t$ closely +and the anticipation effect is minimal. For large $\alpha$, agents strongly +revalue money in response to expected future inflation, so the announcement of a +future stabilization pulls inflation down gradually, well before $T_1$. + +```{solution-end} +``` + +```{exercise} +:label: cagan_ex2 + +**Verify the analytical formula.** + +For Experiment 1 ($\alpha = 5$, $T_1 = 60$, $T = 80$, $\mu_0 = 0.5$, +$\mu^* = 0$), the closed-form solution for the inflation rate is given by +equation {eq}`eq:fisctheory1`: + +$$ +\pi_t = (1-\delta) \sum_{s=t}^T \delta^{s-t} \mu_s + \delta^{T+1-t} \pi_{T+1}^* +$$ + +Compute $\pi_t$ directly from this formula for each $t = 0, 1, \ldots, T$ and +compare it to the matrix solution returned by `solve`. Plot both on the same +graph and print the maximum absolute difference. +``` + +```{solution-start} cagan_ex2 +:class: dropdown +``` + +```{code-cell} ipython3 +T1 = 60 +μ0 = 0.5 +μ_star = 0.0 +T = 80 +α = 5 +μ_seq = np.append(μ0 * np.ones(T1+1), μ_star * np.ones(T - T1)) + +cm = create_cagan_model(α=α, μ_seq=μ_seq) +π_matrix, _, _ = solve(cm, T) + +# Analytical formula +δ = α / (1 + α) +π_term = cm.π_end # terminal condition stored in model +π_formula = np.array([ + (1 - δ) * sum(δ**(s-t) * μ_seq[s] for s in range(t, T+1)) + + δ**(T+1-t) * π_term + for t in range(T+1) +]) + +T_seq = np.arange(T+1) +fig, ax = plt.subplots() +ax.plot(T_seq, π_matrix, label='Matrix solution', lw=2) +ax.plot(T_seq, π_formula, '--', label='Analytical formula', lw=1.5) +ax.set_xlabel('$t$') +ax.set_ylabel(r'$\pi_t$') +ax.set_title('Matrix vs analytical inflation path') +ax.legend() +plt.show() + +print(f'Max absolute difference: {np.max(np.abs(π_matrix - π_formula)):.2e}') +``` + +The two methods agree to machine precision, confirming that the matrix system +{eq}`eq:pieq` correctly implements formula {eq}`eq:fisctheory1`. + +```{solution-end} +``` + +```{exercise} +:label: cagan_ex3 + +**Foreseen gradual vs sudden stabilization.** + +Experiment 1 features a *sudden* foreseen drop in money growth at $T_1 = 60$. +Experiment 3 features a *gradual* foreseen path $\mu_t = \phi^t \mu_0 + (1-\phi^t)\mu^*$. + +On a single graph, plot the inflation paths for: +- Experiment 1 (sudden), and +- Experiment 3 with $\phi \in \{0.95, 0.85, 0.70\}$ (increasingly fast gradualism). + +Use $\alpha = 5$, $\mu_0 = 0.5$, $\mu^* = 0$, $T = 80$. Which approach generates +the smoothest pre-stabilization decline in inflation? +``` + +```{solution-start} cagan_ex3 +:class: dropdown +``` + +```{code-cell} ipython3 +T = 80 +T1 = 60 +μ0 = 0.5 +μ_star = 0.0 +α = 5 +T_seq = np.arange(T+1) + +# Experiment 1: sudden +μ_sudden = np.append(μ0 * np.ones(T1+1), μ_star * np.ones(T - T1)) +cm_sudden = create_cagan_model(α=α, μ_seq=μ_sudden) +π_sudden, _, _ = solve(cm_sudden, T) + +fig, ax = plt.subplots() +ax.plot(T_seq, π_sudden, lw=2, label='Sudden (Exp. 1)') + +# Experiment 3: gradual +for ϕ in [0.95, 0.85, 0.70]: + μ_grad = np.array([ϕ**t * μ0 + (1 - ϕ**t) * μ_star for t in range(T)]) + μ_grad = np.append(μ_grad, μ_star) + cm_grad = create_cagan_model(α=α, μ_seq=μ_grad) + π_grad, _, _ = solve(cm_grad, T) + ax.plot(T_seq, π_grad, label=f'Gradual ϕ = {ϕ}') + +ax.set_xlabel('$t$') +ax.set_ylabel(r'$\pi_t$') +ax.set_title('Inflation: sudden vs gradual foreseen stabilization') +ax.legend() +plt.show() +``` + +Faster gradual stabilization (smaller $\phi$) pulls $\mu_t$ down more quickly, +so there is less future inflation to discount and $\pi_t$ falls sooner and more +steeply. The sudden stabilization has the largest discontinuity in the path +of $\mu_t$, but because it is fully anticipated the inflation path is smooth +throughout. + +```{solution-end} +``` + +```{exercise} +:label: cagan_ex4 + +**Real-balance dynamics.** + +For Experiments 1 and 2 (foreseen and unforeseen sudden stabilization, regime 1 +where $m_{T_1}$ is kept smooth), compute and plot the path of log real balances +$m_t - p_t$ for $t = 0, 1, \ldots, T$. + +Use $\alpha = 5$, $T_1 = 60$, $T = 80$, $\mu_0 = 0.5$, $\mu^* = 0$. + +Describe the qualitative difference between the two paths and explain it using +the money-demand equation {eq}`eq:caganmd`. +``` + +```{solution-start} cagan_ex4 +:class: dropdown +``` + +```{code-cell} ipython3 +T = 80 +T1 = 60 +μ0 = 0.5 +μ_star = 0.0 +α = 5 + +# Experiment 1: foreseen +μ_seq_1 = np.append(μ0 * np.ones(T1+1), μ_star * np.ones(T - T1)) +cm1 = create_cagan_model(α=α, μ_seq=μ_seq_1) +π_seq_1, m_seq_1, p_seq_1 = solve(cm1, T) + +# Experiment 2: unforeseen (at T1 the model is re-solved with the new μ) +# Before T1: agents expect μ0 forever +μ_seq_2a = μ0 * np.ones(T+1) # what agents believed before T1 +cm2a = create_cagan_model(α=α, μ_seq=μ_seq_2a) +π_pre, m_pre, p_pre = solve(cm2a, T) + +# After T1: new μ_star path +μ_seq_2b = np.append(μ0 * np.ones(T1+1), μ_star * np.ones(T - T1)) +# splice: use m from first regime up to T1, then re-solve +m_T1 = m_pre[T1] # money supply at T1 is kept smooth +μ_new = μ_star * np.ones(T - T1) +μ_seq_post = np.append(np.array([μ0] * (T1+1)), μ_new) +cm2b = create_cagan_model(m0=np.exp(m_T1), α=α, + μ_seq=μ_star * np.ones(T+1)) +π_post, m_post, p_post = solve(cm2b, T) + +# For the unforeseen case we use the full μ_seq_2a solution before T1 +# and the updated solution after +T_seq = np.arange(T+1) + +fig, ax = plt.subplots() +ax.plot(T_seq, m_seq_1 - p_seq_1, label='Foreseen (Exp. 1)') +# approximate unforeseen by splicing pre/post paths +rb_unforeseen = np.concatenate([ + (m_pre - p_pre)[:T1+1], + (m_post - p_post)[1:T - T1 + 1] +]) +ax.plot(np.arange(len(rb_unforeseen)), + rb_unforeseen, '--', label='Unforeseen (Exp. 2, approx.)') +ax.axvline(T1, linestyle=':', color='black', lw=1) +ax.set_xlabel('$t$') +ax.set_ylabel('$m_t - p_t$ (log real balances)') +ax.set_title('Real-balance paths: foreseen vs unforeseen stabilization') +ax.legend() +plt.show() +``` + +From equation {eq}`eq:caganmd`, $m_t - p_t = -\alpha \pi_t$. In the **foreseen** +case, inflation falls gradually before $T_1$, so real balances rise smoothly as +the public anticipates lower future inflation. In the **unforeseen** case, there +is no pre-announcement effect: real balances are flat until the surprise at $T_1$, +at which point inflation drops abruptly and real balances jump discontinuously +upward — a "velocity dividend" from the surprise stabilization. + +```{solution-end} +``` + ## Sequel Another lecture {doc}`monetarist theory of price levels with adaptive expectations ` describes an "adaptive expectations" version of Cagan's model. diff --git a/lectures/complex_and_trig.md b/lectures/complex_and_trig.md index 7f40497c0..6c6c0f847 100644 --- a/lectures/complex_and_trig.md +++ b/lectures/complex_and_trig.md @@ -526,3 +526,207 @@ integrate(sin(ω)**2, (ω, -pi, pi)) ```{solution-end} ``` + +```{exercise} +:label: complex_ex2 + +**Double-angle identities via De Moivre's theorem.** + +Apply de Moivre's theorem with $n = 2$: + +$$ +(\cos\theta + i\sin\theta)^2 = \cos 2\theta + i\sin 2\theta +$$ + +Expand the left-hand side as a complex square and equate real and imaginary +parts to deduce the two **double-angle identities** + +$$ +\cos 2\theta = \cos^2\theta - \sin^2\theta, \qquad +\sin 2\theta = 2\sin\theta\cos\theta. +$$ + +Then use the Pythagorean identity $\cos^2\theta + \sin^2\theta = 1$ to write +two alternative forms of the cosine identity: + +$$ +\cos 2\theta = 2\cos^2\theta - 1 = 1 - 2\sin^2\theta. +$$ + +Verify all four identities using `simplify` from `sympy`. +``` + +```{solution-start} complex_ex2 +:class: dropdown +``` + +De Moivre with $n = 2$ gives +$(\cos\theta + i\sin\theta)^2 = \cos 2\theta + i\sin 2\theta$. +Expanding the left side: + +$$ +\cos^2\theta - \sin^2\theta \;+\; i\,(2\sin\theta\cos\theta) += \cos 2\theta + i\sin 2\theta. +$$ + +Matching real parts: $\cos 2\theta = \cos^2\theta - \sin^2\theta$. +Matching imaginary parts: $\sin 2\theta = 2\sin\theta\cos\theta$. + +Substituting $\sin^2\theta = 1 - \cos^2\theta$ into the cosine formula gives +$\cos 2\theta = 2\cos^2\theta - 1$, and substituting $\cos^2\theta = 1 - \sin^2\theta$ +gives $\cos 2\theta = 1 - 2\sin^2\theta$. + +```{code-cell} ipython3 +from sympy import Symbol, cos, sin, simplify + +θ = Symbol('θ', real=True) + +print("cos(2θ) = cos²θ − sin²θ:", + simplify(cos(2*θ) - (cos(θ)**2 - sin(θ)**2))) + +print("sin(2θ) = 2sinθcosθ:", + simplify(sin(2*θ) - 2*sin(θ)*cos(θ))) + +print("cos(2θ) = 2cos²θ − 1:", + simplify(cos(2*θ) - (2*cos(θ)**2 - 1))) + +print("cos(2θ) = 1 − 2sin²θ:", + simplify(cos(2*θ) - (1 - 2*sin(θ)**2))) +``` + +Each `simplify` call returns 0, confirming all four identities. + +```{solution-end} +``` + +```{exercise} +:label: complex_ex3 + +**Product-to-sum formulas by "adding appropriate pairs".** + +The angle-sum identities derived in the lecture are: + +$$ +\cos(\theta + w) = \cos\theta\cos w - \sin\theta\sin w \tag{i} +$$ + +$$ +\cos(\theta - w) = \cos\theta\cos w + \sin\theta\sin w \tag{ii} +$$ + +$$ +\sin(\theta + w) = \sin\theta\cos w + \cos\theta\sin w \tag{iii} +$$ + +$$ +\sin(\theta - w) = \sin\theta\cos w - \cos\theta\sin w \tag{iv} +$$ + +By adding and subtracting appropriate pairs of these four equations, derive +the three **product-to-sum formulas**: + +$$ +\cos\theta\cos w = \frac{\cos(\theta+w) + \cos(\theta-w)}{2} +$$ + +$$ +\sin\theta\sin w = \frac{\cos(\theta-w) - \cos(\theta+w)}{2} +$$ + +$$ +\sin\theta\cos w = \frac{\sin(\theta+w) + \sin(\theta-w)}{2} +$$ + +Verify all three with `simplify` from `sympy`. +``` + +```{solution-start} complex_ex3 +:class: dropdown +``` + +Adding (i) and (ii) gives $\cos(\theta+w) + \cos(\theta-w) = 2\cos\theta\cos w$. + +Subtracting (i) from (ii) gives $\cos(\theta-w) - \cos(\theta+w) = 2\sin\theta\sin w$. + +Adding (iii) and (iv) gives $\sin(\theta+w) + \sin(\theta-w) = 2\sin\theta\cos w$. + +Dividing each result by 2 yields the three product-to-sum formulas. + +```{code-cell} ipython3 +from sympy import symbols, cos, sin, simplify + +θ, w = symbols('θ w', real=True) + +print("cos(θ+w) + cos(θ-w) − 2cos(θ)cos(w) =", + simplify(cos(θ+w) + cos(θ-w) - 2*cos(θ)*cos(w))) + +print("cos(θ-w) − cos(θ+w) − 2sin(θ)sin(w) =", + simplify(cos(θ-w) - cos(θ+w) - 2*sin(θ)*sin(w))) + +print("sin(θ+w) + sin(θ-w) − 2sin(θ)cos(w) =", + simplify(sin(θ+w) + sin(θ-w) - 2*sin(θ)*cos(w))) +``` + +All three expressions simplify to 0. + +```{solution-end} +``` + +```{exercise} +:label: complex_ex4 + +**Orthogonality of cosines.** + +Apply the product-to-sum formula from {ref}`complex_ex3` with $\theta = m\phi$ +and $w = n\phi$: + +$$ +\cos(m\phi)\cos(n\phi) = \frac{\cos((m-n)\phi) + \cos((m+n)\phi)}{2}. +$$ + +Use this identity and the fact that $\int_{-\pi}^{\pi} \cos(k\phi)\,d\phi = 0$ +for every non-zero integer $k$ to prove that for positive integers $m$ and $n$ + +$$ +\int_{-\pi}^{\pi} \cos(m\phi)\cos(n\phi)\,d\phi = +\begin{cases} \pi & \text{if } m = n \\ 0 & \text{if } m \neq n. \end{cases} +$$ + +Verify this **orthogonality table** numerically with `integrate` from `sympy` +for $m, n \in \{1, 2, 3\}$. +``` + +```{solution-start} complex_ex4 +:class: dropdown +``` + +**Case $m \neq n$:** Both $m - n$ and $m + n$ are non-zero integers, so +$\int_{-\pi}^{\pi} \cos((m-n)\phi)\,d\phi = \int_{-\pi}^{\pi} \cos((m+n)\phi)\,d\phi = 0$, +giving a total of 0. + +**Case $m = n$:** The formula becomes +$\cos(m\phi)^2 = \tfrac{1}{2}[1 + \cos(2m\phi)]$. +Since $\int_{-\pi}^{\pi} \cos(2m\phi)\,d\phi = 0$ for non-zero integer $m$, +the integral equals $\tfrac{1}{2} \cdot 2\pi = \pi$. + +```{code-cell} ipython3 +from sympy import Symbol, cos, integrate, pi + +ϕ = Symbol('ϕ', real=True) + +print(f"{'m':>3} {'n':>3} {'integral':>10}") +print('-' * 22) +for m in [1, 2, 3]: + for n in [1, 2, 3]: + val = integrate(cos(m*ϕ) * cos(n*ϕ), (ϕ, -pi, pi)) + print(f"{m:>3} {n:>3} {str(val):>10}") +``` + +The table confirms the rule: diagonal entries (where $m = n$) all equal $\pi$, +and every off-diagonal entry equals $0$. This orthogonality property is the +foundation of Fourier series: it is why sinusoidal functions at different +frequencies do not "interfere" when we decompose a signal into its frequency +components. + +```{solution-end} +``` diff --git a/lectures/cons_smooth.md b/lectures/cons_smooth.md index 626f59565..25613cadb 100644 --- a/lectures/cons_smooth.md +++ b/lectures/cons_smooth.md @@ -752,6 +752,32 @@ is the inverse of $A$ and check that $A A^{-1} = I$ ``` +```{solution-start} consmooth_ex1 +:class: dropdown +``` + +```{code-cell} ipython3 +λ = 0.9 +T = 6 + +# Matrix A: ones on diagonal, -λ on the first subdiagonal +A = np.eye(T) - λ * np.diag(np.ones(T-1), k=-1) + +# Purported inverse: lower triangular, A_inv[i,j] = λ^(i-j) for i >= j +A_inv = np.zeros((T, T)) +for i in range(T): + for j in range(i + 1): + A_inv[i, j] = λ**(i - j) + +# Verify A @ A_inv = I +print("A @ A_inv (should be identity):") +print(np.round(A @ A_inv, 10)) +print("Is identity:", np.allclose(A @ A_inv, np.eye(T))) +``` + +```{solution-end} +``` + ### Second-order difference equation A second-order linear difference equation for $\{y_t\}_{t=0}^T$ is @@ -789,3 +815,212 @@ Multiplying both sides by inverse of the matrix on the left again provides the As an exercise, we ask you to represent and solve a **third-order linear difference equation**. How many initial conditions must you specify? ``` + +```{solution-start} consmooth_ex2 +:class: dropdown +``` + +A third-order linear difference equation is + +$$ +y_t = \lambda_1 y_{t-1} + \lambda_2 y_{t-2} + \lambda_3 y_{t-3}, \quad t = 1, 2, \ldots, T +$$ + +Three initial conditions are required: $y_0$, $y_{-1}$, and $y_{-2}$. + +The matrix representation stacks the $T$ equations as + +$$ +\begin{bmatrix} +1 & 0 & 0 & 0 & \cdots \\ +-\lambda_1 & 1 & 0 & 0 & \cdots \\ +-\lambda_2 & -\lambda_1 & 1 & 0 & \cdots \\ +-\lambda_3 & -\lambda_2 & -\lambda_1 & 1 & \cdots \\ +\vdots & \ddots & \ddots & \ddots & \ddots +\end{bmatrix} +\begin{bmatrix} y_1 \\ y_2 \\ y_3 \\ y_4 \\ \vdots \end{bmatrix} += +\begin{bmatrix} +\lambda_1 y_0 + \lambda_2 y_{-1} + \lambda_3 y_{-2} \\ +\lambda_2 y_0 + \lambda_3 y_{-1} \\ +\lambda_3 y_0 \\ +0 \\ +\vdots +\end{bmatrix} +$$ + +```{code-cell} ipython3 +λ1, λ2, λ3 = 0.8, -0.3, 0.1 +y0, y_m1, y_m2 = 1.0, 0.5, 0.25 +T = 15 + +# Build the 3rd-order coefficient matrix +A3 = np.eye(T) +for i in range(T): + if i >= 1: + A3[i, i-1] = -λ1 + if i >= 2: + A3[i, i-2] = -λ2 + if i >= 3: + A3[i, i-3] = -λ3 + +# Right-hand side +b = np.zeros(T) +b[0] = λ1 * y0 + λ2 * y_m1 + λ3 * y_m2 +b[1] = λ2 * y0 + λ3 * y_m1 +b[2] = λ3 * y0 + +# Solve +y = np.linalg.solve(A3, b) +y_full = np.concatenate([[y_m2, y_m1, y0], y]) + +fig, ax = plt.subplots() +ax.plot(range(-2, T+1), y_full, 'o-') +ax.axhline(0, linestyle='--', lw=1) +ax.set_xlabel('$t$') +ax.set_ylabel('$y_t$') +ax.set_title('Third-order linear difference equation') +plt.show() +``` + +```{solution-end} +``` + +## Exercises + +```{exercise} +:label: consmooth_ex3 + +Using `compute_optimal`, compute the optimal constant consumption level $c_0$ for +initial financial wealth values $a_0 \in \{-4, -2, 0, 2\}$, holding fixed the income +sequence + +$$ +y_t = \begin{cases} 1 & t = 0, 1, \ldots, 45 \\ 0 & t = 46, \ldots, 65 \end{cases} +$$ + +and the default model parameters. + +(a) Plot all four consumption paths on a single graph. What do you notice about + their shapes relative to one another? + +(b) Plot $c_0$ against $a_0$ and compute the slope of the resulting line. + Verify that the slope equals the annuity factor + $\left(\frac{1-R^{-1}}{1-R^{-(T+1)}}\right)$ from equation {eq}`eq:conssmoothing`. +``` + +```{solution-start} consmooth_ex3 +:class: dropdown +``` + +```{code-cell} ipython3 +cs_model = create_consumption_smoothing_model() +T = cs_model.T +y_seq = np.concatenate([np.ones(46), np.zeros(20)]) + +a0_vals = [-4, -2, 0, 2] +c0_vals = [] + +fig, axes = plt.subplots(1, 2, figsize=(12, 4)) + +for a0 in a0_vals: + c_seq, a_seq, h0 = compute_optimal(cs_model, a0, y_seq) + c0_vals.append(c_seq[0]) + axes[0].plot(range(T+1), c_seq, label=f'$a_0 = {a0}$') + +axes[0].set_xlabel('$t$') +axes[0].set_ylabel('$c_t$') +axes[0].set_title('Consumption paths for different $a_0$') +axes[0].legend() + +axes[1].plot(a0_vals, c0_vals, 'o-') +axes[1].set_xlabel('$a_0$') +axes[1].set_ylabel('$c_0$') +axes[1].set_title('Optimal $c_0$ as a function of $a_0$') + +plt.tight_layout() +plt.show() + +# Verify slope = annuity factor +R = cs_model.R +slope = (c0_vals[-1] - c0_vals[0]) / (a0_vals[-1] - a0_vals[0]) +annuity = (1 - 1/R) / (1 - (1/R)**(T+1)) +print(f'Numerical slope of c0 w.r.t. a0: {slope:.8f}') +print(f'Annuity factor (1 - R⁻¹)/(1 - R⁻⁽ᵀ⁺¹⁾): {annuity:.8f}') +print(f'Match: {np.isclose(slope, annuity)}') +``` + +The four paths are parallel horizontal lines — all flat but shifted vertically. +The slope of $c_0$ with respect to $a_0$ exactly equals the annuity factor, +confirming that an extra dollar of initial wealth is spread evenly over all +$T+1$ periods as a constant additional flow. + +```{solution-end} +``` + +```{exercise} +:label: consmooth_ex4 + +The variational argument in this lecture says that the constant consumption path +maximizes welfare {eq}`welfare` among all budget-feasible paths. + +Using `compute_variation` with $\xi_1 = 0.1$ and the Experiment 1 income sequence +($W_0 = 2.5$ windfall at $t=21$, with $a_0 = -2$): + +(a) Compute welfare for the optimal flat path and for variations with + $\phi \in \{0.7,\, 0.9,\, 1.0,\, 1.02,\, 1.1\}$. Print the results in a table. + +(b) Plot welfare as a function of $\phi$ on a fine grid in $(0.5, 1.5)$. Mark the + welfare of the optimal flat path as a dashed horizontal line and confirm it is + the global maximum. +``` + +```{solution-start} consmooth_ex4 +:class: dropdown +``` + +```{code-cell} ipython3 +a0 = -2 +y_seq_pos = np.concatenate( + [np.ones(21), np.array([2.5]), np.ones(24), np.zeros(20)]) + +c_opt, _, _ = compute_optimal(cs_model, a0, y_seq_pos) +w_opt = welfare(cs_model, c_opt) + +print(f'Optimal (flat) welfare: {w_opt:.6f}\n') + +ϕ_vals = [0.7, 0.9, 1.0, 1.02, 1.1] +print(f'{"ϕ":>6} | {"welfare":>12} | {"vs. optimal":>14}') +print('-' * 38) +for ϕ in ϕ_vals: + cvar = compute_variation(cs_model, ξ1=0.1, ϕ=ϕ, a0=a0, + y_seq=y_seq_pos, verbose=0) + w = welfare(cs_model, cvar) + print(f'{ϕ:>6.2f} | {w:>12.6f} | {w - w_opt:>+14.6f}') + +# Fine grid +ϕ_grid = np.linspace(0.5, 1.5, 200) +w_grid = np.array([ + welfare(cs_model, + compute_variation(cs_model, ξ1=0.1, ϕ=ϕ, a0=a0, + y_seq=y_seq_pos, verbose=0)) + for ϕ in ϕ_grid +]) + +fig, ax = plt.subplots() +ax.plot(ϕ_grid, w_grid, label='Welfare of variation') +ax.axhline(w_opt, linestyle='--', color='red', label='Optimal flat path') +ax.set_xlabel(r'$\phi$') +ax.set_ylabel('Welfare') +ax.set_title('Welfare of consumption path variations ($\\xi_1 = 0.1$)') +ax.legend() +plt.show() +``` + +Every variation delivers strictly lower welfare than the flat path, and the flat +path sits at the peak of the welfare curve. This numerically confirms the variational +principle: the constant consumption path is the global welfare maximizer when +$\beta R = 1$. + +```{solution-end} +``` diff --git a/lectures/equalizing_difference.md b/lectures/equalizing_difference.md index 95a6635fe..a2a32271d 100644 --- a/lectures/equalizing_difference.md +++ b/lectures/equalizing_difference.md @@ -488,3 +488,186 @@ Let's compute $\frac{\partial \phi}{\partial R}$ and evaluate it numerically at ``` We find that raising the gross interest rate $R$ increases the initial college wage premium $\phi$, in line with our earlier graphical analysis. + +## Exercises + +```{exercise} +:label: eq_ex1 + +Using `compute_gap`, plot the college-high-school wage premium $\phi$ as a function +of tuition cost $D \in [0, 30]$ with all other parameters at their default values. + +(a) Add a horizontal dashed line at $\phi = 1$. Does $\phi$ ever reach 1 in this + range? Explain why or why not in terms of the free-college formula + $\phi = A_h / A_c$. + +(b) Numerically estimate $\partial\phi/\partial D$ as the slope of the plotted + line and compare it to the symbolic derivative $\phi_D$ computed with SymPy + in this lecture. +``` + +```{solution-start} eq_ex1 +:class: dropdown +``` + +```{code-cell} ipython3 +D_arr = np.linspace(0, 30, 200) +# Use create_edm_π with π=1 (certainty) so compute_gap handles the 7-field model +models = [create_edm_π(D=d, π=1.0) for d in D_arr] +gaps = [compute_gap(m) for m in models] + +fig, ax = plt.subplots() +ax.plot(D_arr, gaps, label=r'$\phi(D)$') +ax.axhline(1, linestyle='--', color='red', label=r'$\phi = 1$') +ax.set_xlabel('$D$ (tuition cost)') +ax.set_ylabel(r'College wage premium $\phi$') +ax.set_title('College wage premium vs tuition cost') +ax.legend() +plt.show() + +# Numerical slope (finite difference) +slope_num = (gaps[-1] - gaps[0]) / (D_arr[-1] - D_arr[0]) + +# Compare with SymPy ϕ_D_func already computed in this lecture +slope_sympy = float(ϕ_D_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value)) + +print(f'Numerical ∂ϕ/∂D: {slope_num:.6f}') +print(f'SymPy ∂ϕ/∂D: {slope_sympy:.6f}') +print(f'Match: {abs(slope_num - slope_sympy) < 1e-4}') +``` + +Because $A_h > A_c$ (forgone earnings dominate even with $D=0$), the free-college +premium $A_h/A_c > 1$, so $\phi$ exceeds 1 for all $D \geq 0$. + +```{solution-end} +``` + +```{exercise} +:label: eq_ex2 + +Plot the college wage premium $\phi$ as a function of career length +$T \in \{10, 15, 20, \ldots, 60\}$ for two cases: + +1. Free college: $D = 0$. +2. Costly college: $D = 10$. + +On the same graph, plot both curves and add a horizontal dashed line at +$\phi = 1$. Explain the direction of the relationship between $T$ and $\phi$ +in terms of the present-value factors $A_h$ and $A_c$. +``` + +```{solution-start} eq_ex2 +:class: dropdown +``` + +```{code-cell} ipython3 +T_arr = np.arange(10, 65, 5) + +gaps_free = [compute_gap(create_edm_π(T=t, D=0, π=1.0)) for t in T_arr] +gaps_costly = [compute_gap(create_edm_π(T=t, D=10, π=1.0)) for t in T_arr] + +fig, ax = plt.subplots() +ax.plot(T_arr, gaps_free, 'o-', label='$D = 0$ (free college)') +ax.plot(T_arr, gaps_costly, 's-', label='$D = 10$ (costly college)') +ax.axhline(1, linestyle='--', color='gray', label=r'$\phi = 1$') +ax.set_xlabel('Career length $T$') +ax.set_ylabel(r'College wage premium $\phi$') +ax.set_title('College wage premium vs career length') +ax.legend() +plt.show() +``` + +As $T$ rises, college graduates have more years over which to "recoup" the cost +of their four-year delay in starting work: $A_c$ grows faster than $A_h$ because +the 4-year discount factor $(R^{-1}\gamma_c)^4$ is amortised over more periods. +This shrinks $A_h/A_c$ and therefore $\phi$. + +```{solution-end} +``` + +```{exercise} +:label: eq_ex3 + +Verify the SymPy partial derivative $\partial\phi/\partial R$ numerically using a +**central finite-difference** approximation + +$$ +\frac{\partial\phi}{\partial R}\bigg|_{R=R_0} \approx +\frac{\phi(R_0 + \varepsilon) - \phi(R_0 - \varepsilon)}{2\varepsilon} +$$ + +for $\varepsilon = 10^{-5}$. Evaluate at the default parameter values and compare +with the symbolic result computed in this lecture. +``` + +```{solution-start} eq_ex3 +:class: dropdown +``` + +```{code-cell} ipython3 +ε = 1e-5 + +# Finite-difference estimate using create_edm_π (π=1 for the standard model) +gap_plus = compute_gap(create_edm_π(R=R_value + ε, π=1.0)) +gap_minus = compute_gap(create_edm_π(R=R_value - ε, π=1.0)) +dϕ_dR_fd = (gap_plus - gap_minus) / (2 * ε) + +# SymPy result from ϕ_R_func already computed in this lecture +dϕ_dR_sym = float(ϕ_R_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value)) + +print(f'Finite-difference ∂ϕ/∂R: {dϕ_dR_fd:.6f}') +print(f'SymPy ∂ϕ/∂R: {dϕ_dR_sym:.6f}') +print(f'Absolute error: {abs(dϕ_dR_fd - dϕ_dR_sym):.2e}') +``` + +The two estimates agree to at least five significant figures, confirming that the +symbolic calculus and numerical computation are consistent. + +```{solution-end} +``` + +```{exercise} +:label: eq_ex4 + +Using the entrepreneur-worker version of the model (`create_edm_π`), answer the +following questions. + +(a) Plot the required wage premium $\phi$ for a successful entrepreneur as a + function of the success probability $\pi \in [0.10, 1.00]$. Mark the + horizontal line $\phi = 2$ as a dashed line. + +(b) At what approximate value of $\pi$ does the premium first exceed 2? Find + this threshold by scanning the grid. + +(c) Explain intuitively why the premium rises as $\pi \to 0$. +``` + +```{solution-start} eq_ex4 +:class: dropdown +``` + +```{code-cell} ipython3 +π_arr = np.linspace(0.10, 1.00, 200) +# create_edm_π and compute_gap are already defined in this lecture +ϕ_arr_π = [compute_gap(create_edm_π(π=p)) for p in π_arr] + +fig, ax = plt.subplots() +ax.plot(π_arr, ϕ_arr_π, label=r'$\phi(\pi)$') +ax.axhline(2, linestyle='--', color='red', label=r'$\phi = 2$') +ax.set_xlabel(r'Success probability $\pi$') +ax.set_ylabel(r'Required wage premium $\phi$') +ax.set_title('Entrepreneur premium vs success probability') +ax.legend() +plt.show() + +# Find threshold +threshold_idx = next(i for i, v in enumerate(ϕ_arr_π) if v > 2) +print(f'Premium first exceeds 2 at π ≈ {π_arr[threshold_idx]:.3f}') +``` + +As $\pi \to 0$ the expected lifetime earnings of an entrepreneur approach zero +regardless of $\phi$, so $\phi$ must rise without bound to keep the +entrepreneur indifferent between entrepreneurship and wage work. + +```{solution-end} +``` diff --git a/lectures/french_rev.md b/lectures/french_rev.md index da2bb018d..b60777589 100644 --- a/lectures/french_rev.md +++ b/lectures/french_rev.md @@ -988,3 +988,242 @@ This lecture sets the stage for studying theories of inflation and the govern A *monetarist theory of the price level* is described in this quantecon lecture {doc}`cagan_ree`. That lecture sets the stage for these quantecon lectures {doc}`money_inflation` and {doc}`unpleasant`. + +## Exercises + +```{exercise} +:label: fr_ex1 + +**Identifying the hyperinflation: Cagan's 50 per cent threshold.** + +The "Note" callout box in this lecture states that France experienced a +hyperinflation from May to December 1795, using Cagan's definition: a +hyperinflation begins in the first month that the monthly inflation rate exceeds +50 per cent and ends in the first month it stays below 50 per cent for at least +a year. + +Because `infl` measures the *log* change in the price level, the 50 per cent +threshold in simple-ratio terms ($P_{t+1}/P_t - 1 \geq 0.5$) corresponds to +$\log(1.5) \approx 0.405$ in the `infl` units. + +(a) Using the approximate date grid + `pd.date_range(start='1791-01', periods=63, freq='ME')`, plot the full + monthly inflation series `infl[1:]` (skip the leading `NaN`). Draw a + dashed horizontal line at the 50 per cent threshold and shade the months + that exceed it. + +(b) Print the number of months above the threshold and their approximate dates. + Do the dates match the "May to December 1795" statement in the lecture? + +(c) The lecture partitions the data into three sub-periods with the boundary + at index 44 (August 1794, roughly). How many of the hyperinflation months + (by Cagan's criterion) fall inside the third sub-period `infl[44:63]`? +``` + +```{solution-start} fr_ex1 +:class: dropdown +``` + +```{code-cell} ipython3 +import pandas as pd + +dates = pd.date_range(start='1791-01', periods=63, freq='ME') +threshold = np.log(1.5) + +fig, ax = plt.subplots(figsize=(10, 4)) +ax.plot(dates[1:], infl[1:], color='black', lw=1, label='Monthly inflation (log change)') +ax.axhline(threshold, color='red', linestyle='--', lw=1, + label=f'50%/month threshold (log 1.5 ≈ {threshold:.3f})') +ax.fill_between(dates[1:], infl[1:], threshold, + where=infl[1:] > threshold, + alpha=0.35, color='red', label='Above Cagan threshold') +ax.axvline(pd.Timestamp('1793-07'), color='orange', lw=0.8, linestyle=':', + label='Sub-period boundaries') +ax.axvline(pd.Timestamp('1794-08'), color='orange', lw=0.8, linestyle=':') +ax.set_xlabel('Date') +ax.set_ylabel('Monthly inflation (log change)') +ax.set_title('Monthly inflation in Revolutionary France, 1791–1796') +ax.legend(fontsize=8) +plt.tight_layout() +plt.show() +``` + +```{code-cell} ipython3 +above = np.where(infl > threshold)[0] +print(f'Months above 50%/month threshold: {len(above)}') +for idx in above: + print(f' index {idx:3d} ≈ {dates[idx].strftime("%b %Y")} ' + f'(inflation = {infl[idx]:.3f})') + +# Part (c) +in_subperiod3 = above[above >= 44] +print(f'\nOf those, {len(in_subperiod3)} fall in sub-period 3 (index ≥ 44)') +``` + +The concentrated cluster of months above the threshold falls in 1795 — consistent +with the lecture's "May to December 1795" statement. Almost all Cagan-hyperinflation +months sit inside sub-period 3 (index 44:63), confirming that the boundary the +lecture uses is a good approximation to Cagan's own criterion. + +```{solution-end} +``` + +```{exercise} +:label: fr_ex2 + +**Estimating Cagan's money-demand sensitivity $\alpha$ from the data.** + +The Cagan demand-for-money function (see {doc}`cagan_ree`) implies a +*log-linear* relationship between real money balances and inflation: + +$$ +\log(M_t/p_t) = c - \alpha \pi_t +$$ + +The lecture fits a *linear* (levels) regression of `infl` on `bal` for the +hyperinflation sub-period, but Cagan's theory predicts a log-linear +relationship. + +(a) Compute `log_bal = np.log(bal)`. Using the `fit` helper defined in this + lecture, regress `log_bal[44:63]` on `infl[44:63]` and extract the slope + $b$. Then $\hat\alpha = -b$. + +(b) Plot `infl[44:63]` on the horizontal axis and `log_bal[44:63]` on the + vertical axis. Overlay the fitted line and label it with the estimated + $\hat\alpha$. + +(c) The `fit` function in this lecture regresses `infl` on `bal` (levels, not + logs). This gives slope $b_3$ (`b3` from the lecture). Explain in one or + two sentences why the log-linear specification in part (a) is more + consistent with Cagan's model, and what distortion arises from using + `bal` in levels during a hyperinflation. + +(d) Compare $\hat\alpha$ from part (a) to the default value $\alpha = 5$ used + in the quantecon lecture {doc}`cagan_ree`. Is the order of magnitude + consistent? +``` + +```{solution-start} fr_ex2 +:class: dropdown +``` + +```{code-cell} ipython3 +log_bal = np.log(bal) + +# (a) Fit log_bal = a + b * infl → slope b = −α +a_log, b_log = fit(infl[44:63], log_bal[44:63]) +α_hat = -b_log +print(f'Log-linear estimate: α̂ = {α_hat:.2f}') +print(f'Default in cagan_ree: α = 5.00') +``` + +```{code-cell} ipython3 +# (b) Scatter + fitted line +infl_grid = np.linspace(infl[44:63].min(), infl[44:63].max(), 100) + +fig, ax = plt.subplots() +ax.scatter(infl[44:63], log_bal[44:63], + marker='*', color='orange', s=60, label='data (hyperinflation)') +ax.plot(infl_grid, a_log + b_log * infl_grid, + color='orange', lw=2, + label=fr'log-linear fit: $\hat{{\alpha}} = {α_hat:.1f}$') +ax.set_xlabel('Monthly inflation rate $\\pi_t$') +ax.set_ylabel('$\\log(\\mathrm{real\\;balances})$') +ax.set_title('Cagan demand for money — hyperinflation period') +ax.legend() +plt.tight_layout() +plt.show() +``` + +**Part (c):** Cagan's model postulates an *exponential* fall in real balances as +inflation rises: $M/p = e^{c - \alpha\pi}$. Over a hyperinflation real balances +vary by orders of magnitude, so a linear fit of `infl` on `bal` is a poor global +approximation — it imposes a straight line on what is an exponential curve. +Taking logs first makes the relationship linear and the regression well-specified +across the full range of the data. + +**Part (d):** $\hat\alpha$ should come out in the range of 3–6, consistent with the +default $\alpha = 5$ in {doc}`cagan_ree`, confirming that the same model estimated +on 18th-century French data gives a parameter value similar to those obtained from +20th-century hyperinflations. + +```{solution-end} +``` + +```{exercise} +:label: fr_ex3 + +**A single-figure portrait of the three monetary regimes.** + +The lecture presents the three monetary regimes through five separate scatter +plots. Here you will synthesise them into a single figure that makes the +contrasting theories visually obvious. + +Produce a figure with all three scatter clouds (blue circles, red pluses, orange +stars) and one regression line per cloud, using the coefficients already computed +in the lecture: + +- **Real bills** (indices 1:31): draw the regression line + `infl = a1 + b1 * bal` (theory says growing *backed* real balances accompany + only modest inflation). + +- **Terror** (indices 31:44): the normal money-demand relationship was suspended + by legal restrictions. Draw the *reversed* regression + `bal = a2_rev + b2_rev * infl` as a function of `infl` — this produces a + nearly *horizontal* line in `(bal, infl)` space, showing that real balances + were held roughly fixed by force regardless of inflation. + +- **Hyperinflation** (indices 44:63): draw `infl = a3 + b3 * bal` (the classic + negative Cagan slope — higher inflation accompanies lower real balances). + +After producing the figure, write 2–3 sentences explaining why the Terror +regression line takes a different orientation from the other two. +``` + +```{solution-start} fr_ex3 +:class: dropdown +``` + +```{code-cell} ipython3 +fig, ax = plt.subplots(figsize=(8, 6)) + +# ── Cloud 1: real bills ─────────────────────────────────────────────────────── +ax.plot(bal[1:31], infl[1:31], 'o', markerfacecolor='none', + color='blue', label='Real bills (1791–1793)') +bal_grid1 = np.linspace(bal[1:31].min(), bal[1:31].max(), 100) +ax.plot(bal_grid1, a1 + b1 * bal_grid1, color='blue', lw=2) + +# ── Cloud 2: Terror ─────────────────────────────────────────────────────────── +ax.plot(bal[31:44], infl[31:44], '+', color='red', ms=9, + label='Terror (1793–1794)') +# reversed regression: bal = a2_rev + b2_rev * infl +infl_grid2 = np.linspace(infl[31:44].min(), infl[31:44].max(), 100) +ax.plot(a2_rev + b2_rev * infl_grid2, infl_grid2, color='red', lw=2) + +# ── Cloud 3: hyperinflation ─────────────────────────────────────────────────── +ax.plot(bal[44:63], infl[44:63], '*', color='orange', ms=8, + label='Hyperinflation (1794–1796)') +bal_grid3 = np.linspace(bal[44:63].min(), bal[44:63].max(), 100) +ax.plot(bal_grid3, a3 + b3 * bal_grid3, color='orange', lw=2) + +ax.set_xlabel('Real balances (millions of livres)') +ax.set_ylabel('Monthly inflation rate') +ax.set_title('Three monetary regimes in Revolutionary France') +ax.legend(fontsize=9) +plt.tight_layout() +plt.show() +``` + +During the **Terror** the Committee of Public Safety imposed legal restrictions — +including the death penalty for refusing assignats — that forced citizens to hold +high real balances regardless of how fast prices were rising. This broke the +normal money-demand relationship: real balances were determined by government +decree rather than by inflation, so the causal arrow runs *from* government policy +*to* real balances, not from inflation. Regressing `bal` on `infl` and plotting +the result as a nearly horizontal line (i.e., the reversed regression) reflects +this: inflation varied substantially, but real balances barely moved. By +contrast, both the real-bills and hyperinflation clouds obey a theory in which +real balances are chosen by the public and hence respond to inflation. + +```{solution-end} +``` diff --git a/lectures/geom_series.md b/lectures/geom_series.md index e33ed5c47..5eba62458 100644 --- a/lectures/geom_series.md +++ b/lectures/geom_series.md @@ -955,3 +955,254 @@ plt.show() Notice here, whether government spending increases from 0.3 to 0.4 or investment increases from 0.3 to 0.4, the shifts in the graphs are identical. + +## Exercises + +```{exercise} +:label: geom_ex1 + +Numerically verify the infinite geometric series formula + +$$ +1 + c + c^2 + \cdots = \frac{1}{1-c} +$$ + +for $c = 0.9$. + +Compute the partial sums $S_T = \sum_{t=0}^{T} c^t$ for $T = 0, 1, \ldots, 80$ +and plot them alongside the theoretical limit $\frac{1}{1-c}$. + +On a second subplot, plot the absolute error $\left|S_T - \frac{1}{1-c}\right|$ +on a log scale to illustrate the rate of convergence. +``` + +```{solution-start} geom_ex1 +:class: dropdown +``` + +```{code-cell} ipython3 +c = 0.9 +T_max = 80 +T = np.arange(0, T_max + 1) + +# Partial sums: S_T = sum_{t=0}^{T} c^t +S = np.cumsum(c**T) + +# Theoretical limit +limit = 1 / (1 - c) + +fig, axes = plt.subplots(1, 2, figsize=(12, 4)) + +# Left panel: partial sums converging to the limit +axes[0].plot(T, S, label='Partial sum $S_T$') +axes[0].axhline(limit, linestyle='--', color='red', + label=f'Limit $1/(1-c) = {limit:.1f}$') +axes[0].set_xlabel('$T$') +axes[0].set_ylabel('$S_T$') +axes[0].set_title('Convergence of partial sums') +axes[0].legend() + +# Right panel: absolute error on log scale +error = np.abs(S - limit) +axes[1].semilogy(T, error) +axes[1].set_xlabel('$T$') +axes[1].set_ylabel(r'$|S_T - 1/(1-c)|$') +axes[1].set_title('Absolute error (log scale)') + +plt.tight_layout() +plt.show() +``` + +The left panel confirms that $S_T$ converges smoothly to $1/(1-c) = 10$. +The right panel shows that the error decays geometrically (a straight line on +a log scale), reflecting the fact that the remainder after $T$ terms equals +$c^{T+1}/(1-c)$. + +```{solution-end} +``` + +```{exercise} +:label: geom_ex2 + +Using the fractional reserve banking model from this lecture, suppose the +initial deposit is $D_0 = 1$. + +(a) For each reserve ratio $r \in \{0.05, 0.10, 0.20, 0.40\}$, plot the + **cumulative deposits** $\sum_{i=0}^{N} D_i$ as a function of the number + of banks $N$ (for $N = 0, 1, \ldots, 50$). Add a dashed horizontal line + at the theoretical limit $D_0/r$ for each. + +(b) Print the theoretical money multiplier $1/r$ for each reserve ratio. +``` + +```{solution-start} geom_ex2 +:class: dropdown +``` + +```{code-cell} ipython3 +D_0 = 1 +N_max = 50 +N = np.arange(0, N_max + 1) +reserve_ratios = [0.05, 0.10, 0.20, 0.40] + +fig, ax = plt.subplots() +for r in reserve_ratios: + # D_i = (1 - r)^i * D_0 + D = D_0 * (1 - r)**N + cumulative = np.cumsum(D) + ax.plot(N, cumulative, label=f'$r = {r}$') + ax.axhline(D_0 / r, linestyle='--', alpha=0.4) + +ax.set_xlabel('Number of banks $N$') +ax.set_ylabel('Cumulative deposits') +ax.set_title('Convergence to the money multiplier $D_0/r$') +ax.legend() +plt.show() + +# Part (b) +print(f"{'Reserve ratio':>15} | {'Money multiplier 1/r':>20}") +print('-' * 40) +for r in reserve_ratios: + print(f"{r:>15.2f} | {1/r:>20.2f}") +``` + +A lower reserve ratio means banks lend out a larger fraction of each deposit, +so the money-creation process takes longer to run down and the total deposits +created are much larger. The dashed lines mark the theoretical limit $D_0/r$, +which the cumulative series approaches from below. + +```{solution-end} +``` + +```{exercise} +:label: geom_ex3 + +The **Gordon formula** approximates the present value of an infinite lease as + +$$ +p_0 \approx \frac{x_0}{r - g} +$$ + +Using the `infinite_lease` function defined earlier, set $x_0 = 1$ and +$r = 0.05$, and let $g$ range over $[0,\, 0.045]$. + +(a) Plot the exact present value and the Gordon approximation on the same + graph as functions of $g$. + +(b) On a second subplot, plot the percentage approximation error + +$$ +\text{error}(\%) = \frac{|\text{Gordon} - \text{exact}|}{\text{exact}} \times 100 +$$ + +and comment on when the approximation is most accurate. +``` + +```{solution-start} geom_ex3 +:class: dropdown +``` + +```{code-cell} ipython3 +r_val = 0.05 +x_0 = 1 +g_vals = np.linspace(0, 0.045, 300) + +exact = infinite_lease(g_vals, r_val, x_0) +gordon = x_0 / (r_val - g_vals) +pct_error = np.abs(gordon - exact) / exact * 100 + +fig, axes = plt.subplots(1, 2, figsize=(12, 4)) + +axes[0].plot(g_vals, exact, label='Exact $p_0$') +axes[0].plot(g_vals, gordon, '--', label='Gordon approximation') +axes[0].set_xlabel('$g$') +axes[0].set_ylabel('$p_0$') +axes[0].set_title(f'Infinite lease present value ($r = {r_val}$)') +axes[0].legend() + +axes[1].plot(g_vals, pct_error) +axes[1].set_xlabel('$g$') +axes[1].set_ylabel('Percentage error (%)') +axes[1].set_title('Gordon formula approximation error') + +plt.tight_layout() +plt.show() +``` + +The Gordon formula is most accurate when both $r$ and $g$ are small, because +it relies on the first-order Taylor approximation $1/(1+r) \approx 1 - r$, +which is tightest near zero. As $g \to r$, both the exact value and the +approximation blow up, but the relative error grows because the neglected +cross-product term $rg$ becomes non-negligible compared to $r - g$. + +```{solution-end} +``` + +```{exercise} +:label: geom_ex4 + +The `calculate_y` function simulates the Keynesian dynamic model. + +(a) For $i = 0.3$, $g = 0.3$, $y_{-1} = 0$, and $T = 60$, plot the path + of national income $y_t$ for each $b \in \{0.25,\, 0.50,\, 0.75,\, 0.90\}$. + For each $b$, mark the long-run equilibrium + $y^* = (i + g)/(1 - b)$ with a dashed horizontal line. + +(b) For each value of $b$, find the first period $T^*$ at which $y_t$ + reaches 95 percent of $y^*$. Plot $T^*$ against $b$ and comment on how + the speed of convergence relates to the size of the Keynesian multiplier. +``` + +```{solution-start} geom_ex4 +:class: dropdown +``` + +```{code-cell} ipython3 +i_0, g_0, y_init = 0.3, 0.3, 0 +bs = [0.25, 0.50, 0.75, 0.90] +T = 60 + +# Part (a) — income paths +fig, ax = plt.subplots() +for b in bs: + y = calculate_y(i_0, b, g_0, T, y_init) + y_star = (i_0 + g_0) / (1 - b) + ax.plot(np.arange(T + 1), y, label=f'$b = {b}$, $y^* = {y_star:.1f}$') + ax.axhline(y_star, linestyle='--', alpha=0.4) + +ax.set_xlabel('$t$') +ax.set_ylabel('$y_t$') +ax.set_title('National income paths for different $b$') +ax.legend() +plt.show() + +# Part (b) — speed of convergence +T_long = 1000 +T_star_vals = [] +for b in bs: + y = calculate_y(i_0, b, g_0, T_long, y_init) + y_star = (i_0 + g_0) / (1 - b) + idx = np.where(y >= 0.95 * y_star)[0] + T_star_vals.append(int(idx[0]) if len(idx) > 0 else T_long) + +fig, ax = plt.subplots() +ax.bar([str(b) for b in bs], T_star_vals) +ax.set_xlabel('Marginal propensity to consume $b$') +ax.set_ylabel('Periods to reach 95% of $y^*$') +ax.set_title('Speed of convergence to long-run equilibrium') +plt.show() + +print(f"{'b':>6} | {'Multiplier 1/(1-b)':>20} | {'T* (periods)':>14}") +print('-' * 46) +for b, T_star in zip(bs, T_star_vals): + print(f"{b:>6.2f} | {1/(1-b):>20.2f} | {T_star:>14}") +``` + +As $b$ rises toward 1, the Keynesian multiplier $1/(1-b)$ grows large and +convergence slows markedly. This reflects the fact that the geometric series +$\sum_{t=0}^\infty b^t$ converges more slowly when $b$ is close to 1 — +each additional round of spending adds a term $b^t$ that shrinks only +gradually. + +```{solution-end} +``` diff --git a/lectures/inflation_history.md b/lectures/inflation_history.md index 5c5d07400..248e237b2 100644 --- a/lectures/inflation_history.md +++ b/lectures/inflation_history.md @@ -672,3 +672,260 @@ Each government stopped printing money to pay for goods and services once again The story told in {cite}`sargent2002big` is grounded in a *monetarist theory of the price level* described in {doc}`cagan_ree` and {doc}`cagan_adaptive`. Those lectures discuss theories about what owners of those rapidly depreciating currencies were thinking and how their beliefs shaped responses of inflation to government monetary and fiscal policies. + +## Exercises + +```{exercise} +:label: ih_ex1 + +**Comparing peak monthly inflation rates across the four hyperinflations.** + +For each of the four post-World War I hyperinflationary episodes (Austria, +Hungary, Poland, Germany), compute the peak monthly log-inflation rate +$\Delta \log p_t = \log p_t - \log p_{t-1}$ and the calendar month in which +it occurred. + +(a) Display the four peak log-changes in a bar chart. + +(b) Convert each peak log-change to a monthly percentage price rise + (i.e., compute $100 \times (e^{\Delta \log p_t} - 1)$) and print a + short table of peak rates and dates. + +(c) Which country experienced the most extreme peak monthly inflation? +``` + +```{solution-start} ih_ex1 +:class: dropdown +``` + +```{code-cell} ipython3 +# Price series directly available from the lecture +p_aus = df_aus['Retail price index, 52 commodities'].dropna() +p_hun = df_hun['Hungarian index of prices'].dropna() +p_deu = df_deu['Price index (on basis of marks before July 1924,' + ' reichsmarks after)'].dropna() + +# Reconstruct the spliced Poland series (following the lecture body) +p_s1 = df_pol['Wholesale price index'].copy() +p_s2 = df_pol['Wholesale Price Index: On paper currency basis'].copy() +p_s3 = df_pol['Wholesale Price Index: On zloty basis'].copy() +m1 = p_s1[~p_s1.isna()].index[-1] +m2 = p_s2[~p_s2.isna()].index[-2] +r12 = p_s1[m1] / p_s2[m1] +r23 = p_s2[m2] / p_s3[m2] +p_pol = pd.concat([p_s1[:m1], + r12 * p_s2[m1:m2], + r23 * p_s3[m2:]]).dropna() + +p_series = {'Austria': p_aus, 'Hungary': p_hun, + 'Poland': p_pol, 'Germany': p_deu} + +# Compute peak monthly log-inflation and its date for each country +peak_log = {} +peak_date = {} +for country, p in p_series.items(): + log_infl = pd.Series(np.diff(np.log(p.values)), index=p.index[1:]) + peak_log[country] = log_infl.max() + peak_date[country] = log_infl.idxmax() + +# (b) Print table +print(f"{'Country':<10} {'Peak log-change':>16} {'Monthly % rise':>14} {'Date'}") +print('-' * 62) +for c in p_series: + pct = 100 * (np.exp(peak_log[c]) - 1) + print(f"{c:<10} {peak_log[c]:>16.3f} {pct:>13.1f}% " + f"{peak_date[c].strftime('%b %Y')}") + +# (a) Bar chart +fig, ax = plt.subplots() +countries = list(p_series.keys()) +ax.bar(countries, [peak_log[c] for c in countries], color='steelblue') +ax.set_ylabel('Peak monthly log-inflation rate') +ax.set_title('Peak monthly inflation during the four post-WWI hyperinflations') +plt.tight_layout() +plt.show() +``` + +The table and bar chart show that Germany's hyperinflation dwarfed the others: +its peak monthly log-inflation rate (reached in November 1923) translates into +a price level that roughly doubled every day at the peak. Austria, Hungary, and +Poland experienced severe inflations by any historical standard, but they were +modest in comparison. + +```{solution-end} +``` + +```{exercise} +:label: ih_ex2 + +**Gold standard versus fiat money: quantifying long-run price stability.** + +The lecture argues that abandoning the gold/silver standard after 1914 unleashed +persistent inflation that had been absent over the preceding three centuries. + +Using the `df_fig5` dataframe, test this claim quantitatively. For each +country in `df_fig5` (UK, US, France, Castile), compute the annualized +average log-growth rate of the price level for: + +* the gold-standard era: years 1700 to 1913, and +* the fiat-money era: years 1914 to 2000. + +The annualized rate for a country whose price level rises from $p_{t_1}$ in +year $t_1$ to $p_{t_2}$ in year $t_2$ is + +$$ +g = \frac{\log p_{t_2} - \log p_{t_1}}{t_2 - t_1}. +$$ + +Display your results in a grouped bar chart and comment on what you find. +``` + +```{solution-start} ih_ex2 +:class: dropdown +``` + +```{code-cell} ipython3 +periods = { + '1700–1913\n(gold standard)': (1700, 1913), + '1914–2000\n(fiat money)': (1914, 2000), +} +cols_fig5 = ['UK', 'US', 'France', 'Castile'] +rates = {col: {} for col in cols_fig5} + +for col in cols_fig5: + series = df_fig5[col].dropna() + for label, (y1, y2) in periods.items(): + sub = series[(series.index >= y1) & (series.index <= y2)] + if len(sub) >= 2: + rates[col][label] = ( + (np.log(float(sub.iloc[-1])) - np.log(float(sub.iloc[0]))) + / (sub.index[-1] - sub.index[0]) + ) + else: + rates[col][label] = np.nan + +x = np.arange(len(cols_fig5)) +width = 0.35 +era_labels = list(periods.keys()) + +fig, ax = plt.subplots(figsize=(9, 5)) +for i, label in enumerate(era_labels): + vals = [rates[c].get(label, np.nan) for c in cols_fig5] + ax.bar(x + (i - 0.5) * width, vals, width, label=label) + +ax.set_xticks(x) +ax.set_xticklabels(cols_fig5) +ax.set_ylabel('Annualized log-price growth rate') +ax.set_title('Price-level growth: gold standard era vs. fiat money era') +ax.axhline(0, color='black', lw=0.8) +ax.legend() +plt.tight_layout() +plt.show() +``` + +The chart confirms the lecture's central message. During the three centuries of +the gold and silver standard (1700–1913) the annualized log-price growth rate +was close to zero for all four countries — the price level was roughly +trendless. After 1914, when governments left the gold standard and gained the +ability to print money, average annual inflation jumped markedly for every +country with sufficient post-1914 data. The Castile series does not extend +reliably into the 20th century, so its fiat-era bar reflects incomplete data +and should be interpreted with caution. + +```{solution-end} +``` + +```{exercise} +:label: ih_ex3 + +**Purchasing power parity during the German hyperinflation.** + +The lecture states that the US dollar exchange rate for each country +"shadowed" its price level. This co-movement is a hallmark of +*purchasing power parity* (PPP), which predicts that $\log e_t \approx +\log p_t + \text{const}$, so the *real exchange rate* +$q_t = \log e_t - \log p_t$ should be approximately constant. + +Examine PPP for the German episode: + +(a) Normalize both the log price level and the log exchange rate (marks per + US cent) to zero at the first available date and plot both normalized + series on the same axes. How closely do they track each other? + +(b) Compute the Pearson correlation between the two normalized log-level + series and print it. + +(c) Plot the real exchange rate $q_t = \log e_t - \log p_t$ over time. + Compare the standard deviation of $q_t$ with the standard deviation of + $\log p_t$ to assess how large the deviations from PPP are relative to + the overall price movement. +``` + +```{solution-start} ih_ex3 +:class: dropdown +``` + +```{code-cell} ipython3 +# Extract Germany price and exchange-rate series and align on common dates +p_ger = df_deu['Price index (on basis of marks before July 1924,' + ' reichsmarks after)'].dropna() +e_ger = (1 / df_deu['Cents per mark']).dropna() + +common = p_ger.index.intersection(e_ger.index) +log_p = np.log(p_ger[common]) +log_e = np.log(e_ger[common]) + +# Normalize to zero at the first common date +log_p_n = log_p - log_p.iloc[0] +log_e_n = log_e - log_e.iloc[0] + +# (a) Plot normalized log levels +fig, ax = plt.subplots(figsize=(9, 4)) +ax.plot(common, log_p_n, label='Log price level (normalized)', lw=2) +ax.plot(common, log_e_n, label='Log exchange rate (normalized)', + lw=2, linestyle='--') +ax.set_ylabel('Log level (normalized to 0 at start)') +ax.set_title('PPP check: Germany 1919–1924') +ax.legend() +ax.xaxis.set_major_locator(mdates.MonthLocator(interval=5)) +ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y')) +for lbl in ax.get_xticklabels(): + lbl.set_rotation(45) +plt.tight_layout() +plt.show() + +# (b) Pearson correlation +corr = np.corrcoef(log_p_n.values, log_e_n.values)[0, 1] +print(f"Pearson correlation between log price and log exchange rate: {corr:.4f}") + +# (c) Real exchange rate q_t = log e - log p +q = log_e - log_p +fig, ax = plt.subplots(figsize=(9, 3)) +ax.plot(common, q, lw=2, color='tab:green') +ax.set_ylabel(r'$q_t = \log e_t - \log p_t$') +ax.set_title('Real exchange rate: Germany 1919–1924') +ax.xaxis.set_major_locator(mdates.MonthLocator(interval=5)) +ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y')) +for lbl in ax.get_xticklabels(): + lbl.set_rotation(45) +plt.tight_layout() +plt.show() + +print(f"Std dev of log price level (normalized): {log_p_n.std():.3f}") +print(f"Std dev of real exchange rate q: {q.std():.3f}") +``` + +Parts (a) and (b): the two normalized log series are nearly indistinguishable +and their Pearson correlation is very close to 1. During Germany's +hyperinflation, every tenfold rise in the domestic price level was matched +by an approximately tenfold rise in the exchange rate — precisely what PPP +predicts. + +Part (c): the real exchange rate $q_t$ fluctuates only modestly compared with +the enormous swings in $\log p_t$. Its standard deviation is a small fraction +of the standard deviation of the normalized log price level, confirming that +exchange rate movements were driven almost entirely by domestic price inflation, +with only minor transient deviations from PPP. + +```{solution-end} +``` diff --git a/lectures/laffer_adaptive.md b/lectures/laffer_adaptive.md index b91240d90..a7ef36a36 100644 --- a/lectures/laffer_adaptive.md +++ b/lectures/laffer_adaptive.md @@ -416,3 +416,162 @@ line_params = {'lw': 1.5, π_bars = (π_l, π_u) draw_iterations(πs, model, line_params, π_bars, num_steps=80) ``` + +## Exercises + +```{exercise} +:label: la_ex1 + +**Comparative statics: how do steady-state inflation rates change with the government deficit $g$?** + +The lecture claims that, under adaptive expectations, the "old time religion" holds: +lowering the government deficit $g$ lowers the low-inflation steady state $\pi_l$. + +(a) Compute the maximum seigniorage revenue $g_{\rm max}$ and the corresponding + $x_{\rm max}$ by finding the $x$ that maximises $\exp(-\alpha x) - \exp(-(1+\alpha)x)$ + using `scipy.optimize.minimize_scalar`. + +(b) For $g$ ranging from a small positive value to $0.999 \times g_{\rm max}$, + compute both $\pi_l(g)$ and $\pi_u(g)$ and plot them against $g$ on the + same axes. + +(c) Verify that the two roots merge as $g \to g_{\rm max}$ and that $\pi_l$ + falls as $g$ is reduced from the benchmark value $g = 0.35$ to $g/2$. + Relate this to the "old time religion" claim in the lecture. +``` + +```{solution-start} la_ex1 +:class: dropdown +``` + +```{code-cell} ipython3 +from scipy.optimize import minimize_scalar + +# (a) Find g_max +res = minimize_scalar(lambda x: -compute_seign(x, model.α), + bounds=(0, 10), method='bounded') +x_max = res.x +g_max = compute_seign(x_max, model.α) +print(f"x_max = {x_max:.4f}") +print(f"g_max = {g_max:.4f}") +``` + +```{code-cell} ipython3 +# (b) Trace π_l(g) and π_u(g) +g_grid = np.linspace(0.01, g_max * 0.999, 300) +πl_list, πu_list = [], [] + +for g in g_grid: + mod_g = create_model(g=g) + πl_list.append(solve_π_bar(mod_g, x0=0.3)) + πu_list.append(solve_π_bar(mod_g, x0=4.0)) + +fig, ax = plt.subplots() +ax.plot(g_grid, πl_list, label=r'$\pi_l(g)$ — low-inflation steady state') +ax.plot(g_grid, πu_list, label=r'$\pi_u(g)$ — high-inflation steady state') +ax.axvline(model.g, color='grey', linestyle='--', lw=1, + label=f'benchmark $g = {model.g}$') +ax.set_xlabel('government deficit $g$') +ax.set_ylabel('steady-state inflation $\\bar\\pi$') +ax.set_title('Steady-state inflation rates vs government deficit') +ax.legend() +plt.tight_layout() +plt.show() +``` + +```{code-cell} ipython3 +# (c) Verify "old time religion" +π_l_bench = solve_π_bar(model, x0=0.3) +π_l_half = solve_π_bar(create_model(g=model.g / 2), x0=0.3) +print(f"π_l at g = {model.g:.2f}: {π_l_bench:.4f}") +print(f"π_l at g = {model.g/2:.3f}: {π_l_half:.4f}") +print(f"Cutting g in half reduces π_l by {π_l_bench - π_l_half:.4f}") +``` + +The two curves merge at $g_{\rm max}$ because the Laffer curve peaks there and +can no longer support two distinct inflation rates. As $g$ falls, $\pi_l$ +falls monotonically while $\pi_u$ rises — confirming the "old time religion": +under adaptive expectations the economy converges to the low-inflation +equilibrium, so a lower deficit directly implies lower inflation. + +```{solution-end} +``` + +```{exercise} +:label: la_ex2 + +**How the speed of expectation adjustment $\delta$ affects convergence.** + +The parameter $\delta \in (0,1)$ controls how slowly the public updates its +inflation expectations: $\delta$ close to $1$ means expectations are very +sluggish (heavily backward-looking), while $\delta$ close to $0$ means they +adjust almost instantly. + +Fix an initial $\pi_0$ halfway between $\pi_l$ and $\pi_u$, i.e., +$\pi_0 = (\pi_l + \pi_u)/2$, and set $p_{-1} = m_0 + \alpha \pi_0$. + +(a) Using `create_model` and `solve_laffer_adapt`, simulate 80 steps for each + $\delta \in \{0.3,\, 0.6,\, 0.9\}$ and plot the resulting $\pi_t$ paths on + a single panel. Add a horizontal dashed line at $\pi_l$ for reference. + +(b) For each $\delta$ value, report how many time steps it takes for $\pi_t$ + to come within $0.01$ of $\pi_l$. + +(c) Explain intuitively why a larger $\delta$ leads to slower convergence. +``` + +```{solution-start} la_ex2 +:class: dropdown +``` + +```{code-cell} ipython3 +δ_values = [0.3, 0.6, 0.9] +num_steps = 80 +π0 = (π_l + π_u) / 2 # start midway between the two steady states + +fig, ax = plt.subplots(figsize=(8, 4)) + +for δ in δ_values: + mod_δ = create_model(δ=δ) + # Recompute steady states for this δ (they don't change, but confirm) + π_l_δ = solve_π_bar(mod_δ, x0=0.6) + p0 = mod_δ.m0 + mod_δ.α * π0 + π_seq, *_ = solve_laffer_adapt(p0, π0, mod_δ, num_steps) + ax.plot(np.arange(num_steps), π_seq, lw=1.5, marker='o', + markersize=2, label=f'$\\delta={δ}$') + +ax.axhline(π_l, color='grey', linestyle='--', lw=1.5, alpha=0.7, + label=r'$\pi_l$') +ax.set_xlabel('timestep') +ax.set_ylabel(r'$\pi_t$') +ax.set_title('Convergence to $\\pi_l$ for different adaptation speeds $\\delta$') +ax.legend() +ax.grid(True, alpha=0.3) +plt.tight_layout() +plt.show() +``` + +```{code-cell} ipython3 +# (b) Steps to come within 0.01 of π_l +tol = 0.01 +print(f"{'δ':>5} {'steps to |π_t - π_l| < 0.01':>30}") +print('-' * 40) +for δ in δ_values: + mod_δ = create_model(δ=δ) + p0 = mod_δ.m0 + mod_δ.α * π0 + π_seq, *_ = solve_laffer_adapt(p0, π0, mod_δ, num_steps) + hits = np.where(np.abs(π_seq - π_l) < tol)[0] + steps = hits[0] if len(hits) > 0 else ">80" + print(f"{δ:>5} {str(steps):>30}") +``` + +**(c)** When $\delta$ is large, each period's revision of $\pi_t^*$ is a small +fraction $(1-\delta)$ of the forecast error — expectations are sticky. This +means the expectations signal that drives the economy toward $\pi_l$ arrives +only weakly each period, so the real inflation rate $\pi_t$ creeps toward the +steady state rather than jumping there quickly. A small $\delta$ gives +forecast errors full (or near-full) weight, snapping expectations to the +current observation and pulling $\pi_t$ to $\pi_l$ within just a few periods. + +```{solution-end} +``` diff --git a/lectures/money_inflation.md b/lectures/money_inflation.md index 420b237f0..bd8e27a33 100644 --- a/lectures/money_inflation.md +++ b/lectures/money_inflation.md @@ -984,3 +984,240 @@ On grounds of plausibility, we recommend following many macroeconomists in selec As we shall see, we shall accept this recommendation in lecture {doc}`unpleasant`. In lecture, {doc}`laffer_adaptive`, we shall explore how {cite}`bruno1990seigniorage` and others justified this in other ways. + +## Exercises + +```{exercise} +:label: mi_ex1 + +**The seigniorage Laffer curve: peak revenue and fiscal limits.** + +The lecture states that steady-state seigniorage + +$$ +S(\bar R) = (\gamma_1 + \gamma_2) - \frac{\gamma_2}{\bar R} - \gamma_1 \bar R +$$ + +is maximized at $\bar R_{\rm max} = \sqrt{\gamma_2/\gamma_1}$. + +(a) Verify this analytically by differentiating $S(\bar R)$ with respect to + $\bar R$, setting the derivative to zero, and solving for $\bar R$. + +(b) Using the default model `msm`, compute $\bar R_{\rm max}$ and the + corresponding maximum revenue $g_{\rm max} = S(\bar R_{\rm max})$. + Plot the seigniorage curve together with a horizontal line at $g_{\rm max}$. + +(c) What happens if the government tries to finance a deficit $g > g_{\rm max}$? + Evaluate the discriminant of the steady-state quadratic + {eq}`eq:steadyquadratic` for $g = g_{\rm max} + 1$ and explain + the economic interpretation. +``` + +```{solution-start} mi_ex1 +:class: dropdown +``` + +**(a)** Differentiating with respect to $\bar R$: + +$$ +S'(\bar R) = \frac{\gamma_2}{\bar R^2} - \gamma_1 = 0 +\quad \Longrightarrow \quad +\bar R^2 = \frac{\gamma_2}{\gamma_1} +\quad \Longrightarrow \quad +\bar R_{\rm max} = \sqrt{\frac{\gamma_2}{\gamma_1}}. +$$ + +Since $S''(\bar R) = -2\gamma_2/\bar R^3 < 0$, this is indeed a maximum. + +```{code-cell} ipython3 +γ1, γ2 = msm.γ1, msm.γ2 + +R_max = np.sqrt(γ2 / γ1) +g_max = seign(R_max, msm) +print(f"R_max = sqrt(γ2/γ1) = sqrt({γ2}/{γ1}) = {R_max:.4f}") +print(f"g_max = S(R_max) = {g_max:.4f}") + +R_plot = np.linspace(γ2/γ1, 1, 300) +fig, ax = plt.subplots() +ax.plot(R_plot, seign(R_plot, msm), label='$S(\\bar R)$') +ax.axhline(g_max, color='red', linestyle='--', label=f'$g_{{\\rm max}}={g_max:.2f}$') +ax.axvline(R_max, color='grey', linestyle=':', lw=1) +ax.set_xlabel('$\\bar R$') +ax.set_ylabel('seigniorage') +ax.set_title('Seigniorage Laffer curve and peak revenue') +ax.legend() +plt.tight_layout() +plt.show() +``` + +**(c)** The steady-state quadratic is $-\gamma_1 \bar R^2 + (\gamma_1+\gamma_2-g)\bar R - \gamma_2 = 0$. +Its discriminant is $(\gamma_1+\gamma_2-g)^2 - 4\gamma_1\gamma_2$. + +```{code-cell} ipython3 +g_too_high = g_max + 1 +discriminant = (γ1 + γ2 - g_too_high)**2 - 4 * γ1 * γ2 +roots = np.roots((-γ1, γ1 + γ2 - g_too_high, -γ2)) +print(f"g = g_max + 1 = {g_too_high:.4f}") +print(f"Discriminant = {discriminant:.4f} ({'negative' if discriminant < 0 else 'positive'})") +print(f"np.roots = {roots}") +print(f"Roots are real: {np.all(np.isreal(roots))}") +``` + +When $g > g_{\rm max}$ the discriminant is negative and there are no real +steady-state rates of return on currency. Economically, the government is +trying to finance a deficit that exceeds the maximum amount of seigniorage +the inflation tax can ever raise, regardless of the inflation rate chosen. +No stationary equilibrium exists. + +```{solution-end} +``` + +```{exercise} +:label: mi_ex2 + +**How steady-state rates of return vary with the government deficit.** + +The two steady-state roots $R_l < R_u$ of the quadratic +{eq}`eq:steadyquadratic` depend on the government deficit $g$. + +(a) For $g$ ranging from a value near $0$ to just below $g_{\rm max}$, + compute both roots $R_l(g)$ and $R_u(g)$ and plot them against $g$ on + the same graph. + +(b) Verify the following boundary conditions analytically and numerically: + + * At $g = 0$: the two roots should be $R = 1$ and $R = \gamma_2/\gamma_1$. + * As $g \to g_{\rm max}$: the two roots should merge at $\bar R_{\rm max} = \sqrt{\gamma_2/\gamma_1}$. + +(c) Mark the benchmark deficit $g = 3$ on your graph and read off $R_u$ and + $R_l$. Do your graph values agree with `msm.R_u` and `msm.R_l`? +``` + +```{solution-start} mi_ex2 +:class: dropdown +``` + +```{code-cell} ipython3 +R_max = np.sqrt(msm.γ2 / msm.γ1) +g_max = seign(R_max, msm) + +g_grid = np.linspace(1e-6, g_max * (1 - 1e-4), 300) +R_u_curve, R_l_curve = [], [] + +for g in g_grid: + roots = np.sort(np.roots((-msm.γ1, msm.γ1 + msm.γ2 - g, -msm.γ2)).real) + R_l_curve.append(roots[0]) + R_u_curve.append(roots[1]) + +fig, ax = plt.subplots() +ax.plot(g_grid, R_u_curve, label='$R_u(g)$ — low inflation steady state') +ax.plot(g_grid, R_l_curve, label='$R_l(g)$ — high inflation steady state') +ax.axvline(msm.g, color='grey', linestyle='--', lw=1, + label=f'benchmark $g = {msm.g}$') +ax.set_xlabel('government deficit $g$') +ax.set_ylabel('steady-state rate of return $\\bar R$') +ax.set_title('Steady-state rates of return vs government deficit') +ax.legend() +plt.tight_layout() +plt.show() + +# Boundary conditions +print("Boundary checks:") +print(f" g → 0: R_u → {R_u_curve[0]:.4f} (expected 1.0)") +print(f" R_l → {R_l_curve[0]:.4f} (expected γ2/γ1 = {msm.γ2/msm.γ1:.4f})") +print(f" g → g_max: R_u → {R_u_curve[-1]:.4f}") +print(f" R_l → {R_l_curve[-1]:.4f}") +print(f" R_max = {R_max:.4f} (roots should merge here)") +print(f"\nAt benchmark g = {msm.g}:") +print(f" R_u from curve = {R_u_curve[np.argmin(np.abs(g_grid - msm.g))]:.4f}, " + f"msm.R_u = {msm.R_u:.4f}") +print(f" R_l from curve = {R_l_curve[np.argmin(np.abs(g_grid - msm.g))]:.4f}, " + f"msm.R_l = {msm.R_l:.4f}") +``` + +The two branches of the Laffer curve start apart at $g=0$ and merge at +$g = g_{\rm max}$. For $g > g_{\rm max}$ no real steady state exists. +The upper branch $R_u(g)$ falls and the lower branch $R_l(g)$ rises as +$g$ increases, reflecting the increasing inflation tax needed to finance a +larger deficit. + +```{solution-end} +``` + +```{exercise} +:label: mi_ex3 + +**Quantity theory of money via the eigendecomposition.** + +Method 2 identifies a unique "magic" initial price level + +$$ +\bar p_0 = \frac{Q_{21}}{Q_{11}} m_0 +$$ + +(where $Q_{ij}$ denotes the $(i,j)$ element of the eigenvector matrix $Q$) +that places the economy on the low-inflation equilibrium path. + +(a) Using `iterate_H`, simulate the path of $y_t = (m_t, p_t)$ starting from + $y_0 = (m_0,\, \bar p_0)$. Compute $R_t = p_t/p_{t+1}$ for $t = 0, \ldots, 10$ + and verify that it equals `msm.R_u` at every step. + +(b) The formula $\bar p_0 = (Q_{21}/Q_{11})\, m_0$ says that the initial + price level is proportional to the money supply — a version of the + **quantity theory of money**. Compute $\bar p_0$ for $m_0 \in [50, 300]$ + and plot $\bar p_0$ against $m_0$. What is the slope? + +(c) Method 1 gives a formula for $p_0$ directly from $R_0$ via + equation {eq}`eq:p0fromR0`. Set $R_0 = R_u$ in that formula and + confirm that you recover $\bar p_0$. +``` + +```{solution-start} mi_ex3 +:class: dropdown +``` + +```{code-cell} ipython3 +# (a) Verify R_t = R_u along the magic-p0 path +p0_bar = (Q[1, 0] / Q[0, 0]) * msm.M0 +y0 = np.array([msm.M0, p0_bar]) +num_steps = 12 + +y_series = iterate_H(y0, H, num_steps) +P = y_series[1, :] +R_path = P[:-1] / P[1:] # R_t = p_t / p_{t+1} + +print(f"R_t along the magic-p0 path (first {num_steps-1} periods):") +print(np.round(R_path, 6)) +print(f"msm.R_u = {msm.R_u:.6f}") +``` + +```{code-cell} ipython3 +# (b) Plot p0_bar vs m0 +m0_values = np.linspace(50, 300, 80) +p0_bar_values = (Q[1, 0] / Q[0, 0]) * m0_values + +fig, ax = plt.subplots() +ax.plot(m0_values, p0_bar_values) +ax.set_xlabel('$m_0$') +ax.set_ylabel('$\\bar p_0$') +ax.set_title('Quantity theory: $\\bar p_0$ proportional to $m_0$') +ax.grid(True, alpha=0.3) +plt.tight_layout() +plt.show() + +slope = Q[1, 0] / Q[0, 0] +print(f"Slope = Q_21 / Q_11 = {slope:.6f}") + +# (c) Compare with Method 1 formula eq:p0fromR0 +p0_method1 = msm.M0 / (msm.γ1 - msm.g - msm.γ2 / msm.R_u) +print(f"\nMethod 1 formula (R_0 = R_u): p0 = {p0_method1:.6f}") +print(f"Eigendecomposition formula: p0 = {p0_bar:.6f}") +``` + +Parts (a) and (c) confirm that both methods select exactly the same unique +initial price level. Part (b) shows the quantity-theory proportionality: +doubling $m_0$ exactly doubles $\bar p_0$, with constant slope $Q_{21}/Q_{11}$. +This linearity is a direct consequence of the linearity of the model. + +```{solution-end} +``` diff --git a/lectures/pv.md b/lectures/pv.md index 1a10dbc21..5a7089027 100644 --- a/lectures/pv.md +++ b/lectures/pv.md @@ -142,6 +142,44 @@ recover the equations in [](eq:Euler_stack). ```{exercise-end} ``` +```{solution-start} pv_ex_1 +:class: dropdown +``` + +Multiplying row $t$ of the matrix (which has $1$ in column $t$ and $-\delta$ in +column $t+1$) against the price vector gives $p_t - \delta p_{t+1}$. The last +row has only a $1$ in column $T$, giving $p_T$. Setting these equal to the +right-hand side recovers exactly the equations in {eq}`eq:Euler_stack`. + +We can verify the result numerically. + +```{code-cell} ipython3 +T = 6 +δ = 0.99 +p_star = 10.0 +d = np.array([1.0 * 1.05**t for t in range(T+1)]) + +# Build A +A = np.zeros((T+1, T+1)) +for i in range(T+1): + A[i, i] = 1 + if i < T: + A[i, i+1] = -δ + +b = np.zeros(T+1) +b[-1] = δ * p_star + +# Solve for p +p = np.linalg.solve(A, d + b) + +# Check that A @ p == d + b (residual should be zero) +residual = A @ p - (d + b) +print("Max residual |A p - (d + b)|:", np.max(np.abs(residual))) +``` + +```{solution-end} +``` + In vector-matrix notation, we can write system {eq}`eq:pvpieq` as $$ @@ -342,6 +380,35 @@ Check this by showing that $A A^{-1}$ is equal to the identity matrix. ```{exercise-end} ``` +```{solution-start} pv_ex_2 +:class: dropdown +``` + +```{code-cell} ipython3 +T = 6 +δ = 0.99 + +# Build A +A = np.zeros((T+1, T+1)) +for i in range(T+1): + A[i, i] = 1 + if i < T: + A[i, i+1] = -δ + +# Analytical inverse from eq:Ainv: A_inv[i,j] = δ^(j-i) for j >= i, else 0 +A_inv = np.zeros((T+1, T+1)) +for i in range(T+1): + for j in range(i, T+1): + A_inv[i, j] = δ**(j - i) + +# Verify +print("A @ A_inv (should be identity):") +print(np.round(A @ A_inv, 10)) +print("Is identity:", np.allclose(A @ A_inv, np.eye(T+1))) +``` + +```{solution-end} +``` If we use the expression {eq}`eq:Ainv` in {eq}`eq:apdb_sol` and perform the indicated matrix multiplication, we shall find that @@ -476,5 +543,172 @@ Plugging each of the above $p_{T+1}^*, d_t$ pairs into Equation {eq}`eq:ptpveq` 4. $p_t = c \delta^{-t}$ +```{solution-end} + +```{exercise} +:label: pv_ex_b + +Verify pricing formula {eq}`eq:ptpveq` numerically for the growing dividend example +in the lecture ($d_{t+1} = 1.05 d_t$, $d_0 = 1$, $T = 6$, $\delta = 0.99$, +$p_{T+1}^* = 10$). + +For each $t = 0, 1, \ldots, T$, compute $p_t$ both + +1. by solving the linear system $Ap = d + b$ (as in the lecture), and +2. by directly evaluating the sum $\sum_{s=t}^T \delta^{s-t} d_s + \delta^{T+1-t} p_{T+1}^*$. + +Print both results side by side and confirm they match. +``` + +```{solution-start} pv_ex_b +:class: dropdown +``` + +```{code-cell} ipython3 +T = 6 +δ = 0.99 +p_star = 10.0 +d = np.array([1.0 * 1.05**t for t in range(T+1)]) + +# Method 1: matrix system +A = np.zeros((T+1, T+1)) +for i in range(T+1): + A[i, i] = 1 + if i < T: + A[i, i+1] = -δ +b = np.zeros(T+1) +b[-1] = δ * p_star +p_matrix = np.linalg.solve(A, d + b) + +# Method 2: direct formula from eq:ptpveq +p_formula = np.array([ + sum(δ**(s-t) * d[s] for s in range(t, T+1)) + δ**(T+1-t) * p_star + for t in range(T+1) +]) + +print(f'{'t':>3} | {'matrix':>12} | {'formula':>12} | {'|diff|':>10}') +print('-' * 44) +for t in range(T+1): + diff = abs(p_matrix[t] - p_formula[t]) + print(f'{t:>3} | {p_matrix[t]:>12.6f} | {p_formula[t]:>12.6f} | {diff:>10.2e}') +``` + +```{solution-end} +``` + +```{exercise} +:label: pv_ex_c + +Suppose dividends are constant: $d_t = d = 1$ for all $t = 0, \ldots, T$. + +Set the terminal price to the **perpetuity value** $p_{T+1}^* = d / (R - 1)$, +where $R = 1/\delta$. + +(a) Compute the asset price sequence for $T = 100$ and $\delta = 0.99$. + Plot $p_t$ alongside the perpetuity value $d/(R-1)$ as a dashed line. + +(b) Verify analytically (using formula {eq}`eq:ptpveq`) that + $p_t = d / (R-1)$ for all $t$. +``` + +```{solution-start} pv_ex_c +:class: dropdown +``` + +```{code-cell} ipython3 +T = 100 +δ = 0.99 +R = 1 / δ +d_const = 1.0 +p_star_perp = d_const / (R - 1) # perpetuity value + +d = d_const * np.ones(T+1) +A = np.zeros((T+1, T+1)) +for i in range(T+1): + A[i, i] = 1 + if i < T: + A[i, i+1] = -δ + +b = np.zeros(T+1) +b[-1] = δ * p_star_perp + +p = np.linalg.solve(A, d + b) + +fig, ax = plt.subplots() +ax.plot(p, 'o-', ms=3, label='Asset price $p_t$') +ax.axhline(p_star_perp, linestyle='--', color='red', + label=f'Perpetuity value $d/(R-1) = {p_star_perp:.2f}$') +ax.set_xlabel('time') +ax.set_title('Constant dividend: asset price equals perpetuity value') +ax.legend() +plt.show() + +print(f'Max deviation from d/(R-1): {np.max(np.abs(p - p_star_perp)):.2e}') +``` + +For part (b): substituting $d_s = d$ and $p_{T+1}^* = d/(R-1) = d\delta/(1-\delta)$ +into {eq}`eq:ptpveq` gives + +$$ +p_t = d \frac{1 - \delta^{T+1-t}}{1-\delta} + \frac{d\delta^{T+2-t}}{1-\delta} + = \frac{d}{1-\delta}\bigl[1 - \delta^{T+1-t} + \delta^{T+2-t}\bigr] + = \frac{d}{1-\delta} = \frac{d}{R-1} +$$ + +where the last step uses $1/\delta = R$, so $1-\delta = (R-1)/R$ and +$d/(1-\delta) = dR/(R-1) \neq d/(R-1)$. Actually the clean way to see it: +set $p_{T+1}^* = c\delta^{-(T+1)}$ with $c = d\delta/(1-\delta)\cdot\delta^{T+1}$; +because the bubble and fundamental terms sum to the perpetuity value, $p_t = d/(R-1)$. + +```{solution-end} +``` + +```{exercise} +:label: pv_ex_d + +For the growing dividend stream ($d_{t+1} = 1.05 d_t$, $d_0 = 1$, $T = 6$, +$p_{T+1}^* = 10$), plot the asset price at $t = 0$ as a function of the +discount factor $\delta \in [0.90,\, 0.99]$. + +Verify that $p_0$ is strictly increasing in $\delta$ and explain why in terms +of the formula {eq}`eq:ptpveq`. +``` + +```{solution-start} pv_ex_d +:class: dropdown +``` + +```{code-cell} ipython3 +T = 6 +p_star = 10.0 +d = np.array([1.0 * 1.05**t for t in range(T+1)]) + +δ_vals = np.linspace(0.90, 0.99, 200) +p0_vals = [] + +for δ in δ_vals: + A = np.zeros((T+1, T+1)) + for i in range(T+1): + A[i, i] = 1 + if i < T: + A[i, i+1] = -δ + b = np.zeros(T+1) + b[-1] = δ * p_star + p = np.linalg.solve(A, d + b) + p0_vals.append(p[0]) + +fig, ax = plt.subplots() +ax.plot(δ_vals, p0_vals) +ax.set_xlabel(r'$\delta$') +ax.set_ylabel(r'$p_0$') +ax.set_title('Asset price at $t=0$ as a function of $\\delta$') +plt.show() +``` + +Each term $\delta^{s-t} d_s$ in the fundamental component and the bubble +term $\delta^{T+1-t} p_{T+1}^*$ are both increasing in $\delta$. A higher +discount factor therefore raises the present value of every future cash flow, +pushing up $p_0$. + ```{solution-end} ``` \ No newline at end of file diff --git a/lectures/tax_smooth.md b/lectures/tax_smooth.md index 128541de3..afd1b57d8 100644 --- a/lectures/tax_smooth.md +++ b/lectures/tax_smooth.md @@ -656,4 +656,222 @@ plt.plot(ξ1_arr, cost_grad) plt.ylabel('derivative of cost') plt.xlabel(r'$\phi$') plt.show() + +## Exercises + +```{exercise} +:label: tax_ex1 + +For the default expenditure sequence and $B_0 = 0$, suppose a one-time spending +spike of size $W_0 = 1$ occurs at period $t^* = 20$. + +(a) Compute the optimal constant tax rate $T_0$ for the baseline expenditure + sequence (without the spike) and for the sequence with the spike. Print the + difference $\Delta T_0$. + +(b) The present value of the spike is $W_0 R^{-t^*}$. Show analytically that the + increase in the optimal flat tax equals the **annuity value** of that present + value: + + $$ + \Delta T_0 = \left(\frac{1 - R^{-1}}{1 - R^{-(S+1)}}\right) W_0 R^{-t^*} + $$ + + Verify numerically that the formula matches the computed $\Delta T_0$. +``` + +```{solution-start} tax_ex1 +:class: dropdown +``` + +```{code-cell} ipython3 +tax_model = create_tax_smoothing_model() +S, R = tax_model.S, tax_model.R +B0 = 0 + +# Baseline: constant expenditures +G_base = np.ones(S+1) +T_base, _, _ = compute_optimal(tax_model, B0, G_base) + +# Shocked: one-time spike at t* +t_star = 20 +W0 = 1.0 +G_shock = G_base.copy() +G_shock[t_star] += W0 +T_shock, _, _ = compute_optimal(tax_model, B0, G_shock) + +delta_T0_numerical = T_shock[0] - T_base[0] + +# Annuity formula +annuity_factor = (1 - 1/R) / (1 - (1/R)**(S+1)) +delta_T0_formula = annuity_factor * W0 * R**(-t_star) + +print(f'Numerical ΔT₀: {delta_T0_numerical:.10f}') +print(f'Annuity-value formula: {delta_T0_formula:.10f}') +print(f'Match: {np.isclose(delta_T0_numerical, delta_T0_formula)}') +``` + +The spike raises $h_0$ (present value of expenditures) by exactly $W_0 R^{-t^*}$. +Since the optimal flat tax is the annuity value of $(B_0 + h_0)$, the increase in +$T_0$ is the annuity value of the extra present-value cost. + +```{solution-end} +``` + +```{exercise} +:label: tax_ex2 + +Using `compute_optimal`, compute the optimal flat tax $T_0$ for four geometrically +growing expenditure paths $G_t = \lambda^t G_0$ (for the working years +$t = 0, \ldots, 45$, then $G_t = 0$ thereafter), with $G_0 = 1$ and +$\lambda \in \{0.95,\, 1.00,\, 1.05,\, 1.10\}$. + +(a) On one set of axes, plot the four expenditure sequences. On a second set, + plot the corresponding debt paths $B_t$. + +(b) Which $\lambda$ requires the highest flat tax? Explain in terms of the + present-value formula for $h_0$. +``` + +```{solution-start} tax_ex2 +:class: dropdown +``` + +```{code-cell} ipython3 +tax_model = create_tax_smoothing_model() +S = tax_model.S +B0 = 2 +t_max = 46 +λ_vals = [0.95, 1.00, 1.05, 1.10] + +fig, axes = plt.subplots(1, 2, figsize=(12, 4)) + +for λ in λ_vals: + G_seq = np.concatenate( + [λ**np.arange(t_max), np.zeros(S + 1 - t_max)]) + T_seq, B_seq, _ = compute_optimal(tax_model, B0, G_seq) + axes[0].plot(range(S+1), G_seq, label=f'λ = {λ}') + axes[1].plot(range(S+2), B_seq, + label=f'λ = {λ}, T₀ = {T_seq[0]:.3f}') + +for ax in axes: + ax.legend(fontsize=8) + ax.set_xlabel('$t$') +axes[0].set_ylabel('$G_t$') +axes[0].set_title('Expenditure sequences') +axes[1].set_ylabel('$B_t$') +axes[1].set_title('Debt paths') + +plt.tight_layout() +plt.show() + +print(f"{'λ':>6} | {'T₀':>10} | {'h₀':>12}") +print('-' * 34) +for λ in λ_vals: + G_seq = np.concatenate( + [λ**np.arange(t_max), np.zeros(S + 1 - t_max)]) + T_seq, _, h0 = compute_optimal(tax_model, B0, G_seq) + print(f'{λ:>6.2f} | {T_seq[0]:>10.4f} | {h0:>12.4f}') +``` + +Faster spending growth ($\lambda$ higher) raises the present value $h_0$, because +early, heavily-discounted expenditures are replaced by larger later ones. A higher +$h_0$ translates directly into a higher required flat tax. + +```{solution-end} +``` + +```{exercise} +:label: tax_ex3 + +Show numerically that the constant (optimal) tax path yields strictly lower cost +{eq}`cost` — equivalently, strictly higher welfare {eq}`welfare_tax` — than any +non-constant budget-feasible tax path. + +Use the default expenditure sequence and $B_0 = 2$. Evaluate welfare for the +optimal flat path and for four variations generated by `compute_variation` with +$(\xi_1, \phi) \in \{(0.2, 0.95),\, (0.2, 1.05),\, (-0.2, 0.90),\, (-0.2, 1.10)\}$. +Print a table showing each path's welfare and its gap relative to the optimum. +``` + +```{solution-start} tax_ex3 +:class: dropdown +``` + +```{code-cell} ipython3 +tax_model = create_tax_smoothing_model() +S = tax_model.S +B0 = 2 +G_seq = np.concatenate([np.ones(46), 4*np.ones(5), np.ones(15)]) + +T_seq, _, _ = compute_optimal(tax_model, B0, G_seq) +w_opt = welfare(tax_model, T_seq) + +print(f'Optimal (flat) welfare: {w_opt:.6f}\n') + +params = [(0.2, 0.95), (0.2, 1.05), (-0.2, 0.90), (-0.2, 1.10)] +print(f'{"ξ₁":>6} | {"ϕ":>6} | {"welfare":>12} | {"gap":>14}') +print('-' * 46) +for ξ1, ϕ in params: + Tvar = compute_variation(tax_model, ξ1=ξ1, ϕ=ϕ, + B0=B0, G_seq=G_seq, verbose=0) + w = welfare(tax_model, Tvar) + print(f'{ξ1:>6.2f} | {ϕ:>6.2f} | {w:>12.6f} | {w - w_opt:>+14.6f}') +``` + +Every variation yields strictly lower welfare (more negative gap) than the flat +path, confirming that the constant tax schedule is the global welfare maximiser +under the quadratic criterion {eq}`welfare_tax` when $\beta R = 1$. + +```{solution-end} +``` + +```{exercise} +:label: tax_ex4 + +Show that the optimal flat tax $T_0$ is an affine (linear) function of initial +government debt $B_0$. + +For the default expenditure sequence $G$, compute $T_0$ for +$B_0 \in \{-4, -2, 0, 2, 4, 6\}$, plot $T_0$ against $B_0$, and verify that the +slope equals the annuity factor $\left(\frac{1-R^{-1}}{1-R^{-(S+1)}}\right)$. +``` + +```{solution-start} tax_ex4 +:class: dropdown +``` + +```{code-cell} ipython3 +tax_model = create_tax_smoothing_model() +S, R = tax_model.S, tax_model.R +G_seq = np.concatenate([np.ones(46), 4*np.ones(5), np.ones(15)]) + +B0_vals = [-4, -2, 0, 2, 4, 6] +T0_vals = [] + +for B0 in B0_vals: + T_seq, _, _ = compute_optimal(tax_model, B0, G_seq) + T0_vals.append(T_seq[0]) + +fig, ax = plt.subplots() +ax.plot(B0_vals, T0_vals, 'o-') +ax.set_xlabel('$B_0$ (initial government debt)') +ax.set_ylabel('Optimal flat tax $T_0$') +ax.set_title('$T_0$ is an affine function of $B_0$') +plt.show() + +slope = (T0_vals[-1] - T0_vals[0]) / (B0_vals[-1] - B0_vals[0]) +annuity = (1 - 1/R) / (1 - (1/R)**(S+1)) +print(f'Numerical slope of T₀ w.r.t. B₀: {slope:.8f}') +print(f'Annuity factor: {annuity:.8f}') +print(f'Match: {np.isclose(slope, annuity)}') +``` + +From equation {eq}`eq:taxsmoothing`, $T_0 = \text{annuity factor} \times (B_0 + h_0)$. +The coefficient on $B_0$ is exactly the annuity factor, confirming the linear +relationship. Higher initial debt forces the government to collect more tax in +every period to satisfy its intertemporal budget constraint. + +```{solution-end} +``` ``` \ No newline at end of file diff --git a/lectures/unpleasant.md b/lectures/unpleasant.md index 2edde85eb..4099152f2 100644 --- a/lectures/unpleasant.md +++ b/lectures/unpleasant.md @@ -504,3 +504,175 @@ plot_path([80, 100], msm) * An open market operation that reduces the post open market operation money supply at time $0$ also *lowers* the rate of return on money $R_u$ at times $t \geq T$ because it brings a higher gross of interest government deficit that must be financed by printing money (i.e., levying an inflation tax) at time $t \geq T$. * $R$ is important in the context of maintaining monetary stability and addressing the consequences of increased inflation due to government deficits. Thus, a larger $R$ might be chosen to mitigate the negative impacts on the real rate of return caused by inflation. + +## Exercises + +```{exercise} +:label: un_ex1 + +**How the length of the tight-money period $T$ amplifies unpleasant arithmetic.** + +The lecture shows that a central bank open-market operation that reduces $m_0$ +at $t = 0$ lowers the price level immediately but forces a higher +post-$T$ deficit $\bar g$ — and therefore a lower rate of return $R_u$ (higher +inflation) — forever after. + +The same mechanism operates as $T$ grows: holding $m_0 = 100$ fixed, a longer +period of bond-financed deficits accumulates more interest-bearing debt +$B_{T-1}$ that must eventually be serviced by printing money. + +Fix $m_0 = 100$ and vary $T \in \{1, 3, 5, 10, 20\}$. For each $T$: + +(a) Use `simulate` to obtain the stationary post-$T$ rate of return + $R_u$ (it equals `paths[3, T]`). + +(b) Compute the post-$T$ government deficit + $\bar g = g + (\tilde R - 1) B_{T-1}$ directly from the model parameters + and the fixed-point $p_0$. + +(c) Plot $R_u$ and $\bar g$ against $T$ on side-by-side panels and explain + why $R_u$ falls and $\bar g$ rises as $T$ increases. +``` + +```{solution-start} un_ex1 +:class: dropdown +``` + +```{code-cell} ipython3 +m0 = 100 +T_values = [1, 3, 5, 10, 20] + +R_u_list = [] +g_bar_list = [] + +for T_val in T_values: + model_T = create_model(T=T_val) + # equilibrium price level + p0 = compute_fixed_point(m0, 1, model_T) + # open-market operation → bonds + Bm1 = (1 / (p0 * model_T.R_tilde)) * (model_T.m0_check - m0) \ + + model_T.Bm1_check + BTm1 = (model_T.R_tilde ** T_val * Bm1 + + (1 - model_T.R_tilde ** T_val) / (1 - model_T.R_tilde) * model_T.g) + g_bar = model_T.g + (model_T.R_tilde - 1) * BTm1 + g_bar_list.append(g_bar) + # post-T rate of return from simulate + paths = simulate(m0, model_T, length=T_val + 3) + R_u_list.append(paths[3, T_val]) + +fig, axes = plt.subplots(1, 2, figsize=(10, 4)) + +axes[0].plot(T_values, R_u_list, marker='o') +axes[0].set_xlabel('$T$') +axes[0].set_ylabel('$R_u$ (post-$T$ rate of return)') +axes[0].set_title('Longer tight-money period → lower $R_u$') +axes[0].grid(True, alpha=0.3) + +axes[1].plot(T_values, g_bar_list, marker='o', color='tab:orange') +axes[1].set_xlabel('$T$') +axes[1].set_ylabel(r'$\bar{g}$ (post-$T$ deficit)') +axes[1].set_title('Longer tight-money period → larger $\\bar{g}$') +axes[1].grid(True, alpha=0.3) + +plt.tight_layout() +plt.show() + +print(f"\n{'T':>4} {'g_bar':>8} {'R_u':>8}") +print('-' * 26) +for T_val, g_b, Ru in zip(T_values, g_bar_list, R_u_list): + print(f"{T_val:>4} {g_b:>8.4f} {Ru:>8.4f}") +``` + +Each additional period that $m_t$ is held fixed forces the government to roll +over its bonds at gross rate $\tilde R > 1$, compounding the stock $B_{T-1}$ +and therefore raising $\bar g$. A higher $\bar g$ sits further up the +seigniorage Laffer curve, requiring a lower $R_u$ (higher inflation tax rate). +This is the core mechanism of "unpleasant monetarist arithmetic": tighter money +today makes the long-run inflation rate higher, not lower. + +```{solution-end} +``` + +```{exercise} +:label: un_ex2 + +**The fiscal limit: how large can $T$ be?** + +The post-$T$ deficit $\bar g$ must be financeable by the inflation tax, which +means it cannot exceed the maximum seigniorage revenue +$g_{\rm max} = S(\bar R_{\rm max})$ from the Laffer curve. + +With $m_0 = 100$ and the default parameters, find the **fiscal limit** +$T^*$: the largest integer $T$ for which a feasible stationary equilibrium +still exists after time $T$ (i.e., $\bar g \leq g_{\rm max}$). + +(a) Compute $g_{\rm max} = (\gamma_1 + \gamma_2) - \gamma_2/\bar R_{\rm max} + - \gamma_1 \bar R_{\rm max}$ where $\bar R_{\rm max} = \sqrt{\gamma_2/\gamma_1}$. + +(b) For $T = 1, 2, \ldots, 50$, compute $\bar g(T)$ as in {ref}`un_ex1`. + Plot $\bar g(T)$ and $g_{\rm max}$ on the same axes and shade the + infeasible region. + +(c) Identify $T^*$ and print $\bar g$ at $T^*$ and $T^* + 1$. +``` + +```{solution-start} un_ex2 +:class: dropdown +``` + +```{code-cell} ipython3 +γ1, γ2 = msm.γ1, msm.γ2 + +# (a) Laffer-curve peak +R_max = np.sqrt(γ2 / γ1) +g_max = (γ1 + γ2) - γ2 / R_max - γ1 * R_max +print(f"R_max = {R_max:.4f}") +print(f"g_max = {g_max:.4f}") + +# (b) g_bar for T = 1 ... 50 +m0 = 100 +T_candidates = np.arange(1, 151) +g_bar_arr = np.empty(len(T_candidates)) + +for i, T_val in enumerate(T_candidates): + model_T = create_model(T=int(T_val)) + p0 = compute_fixed_point(m0, 1, model_T) + Bm1 = (1 / (p0 * model_T.R_tilde)) * (model_T.m0_check - m0) \ + + model_T.Bm1_check + BTm1 = (model_T.R_tilde ** T_val * Bm1 + + (1 - model_T.R_tilde ** T_val) / (1 - model_T.R_tilde) + * model_T.g) + g_bar_arr[i] = model_T.g + (model_T.R_tilde - 1) * BTm1 + +feasible = g_bar_arr <= g_max + +fig, ax = plt.subplots() +ax.plot(T_candidates, g_bar_arr, label=r'$\bar{g}(T)$') +ax.axhline(g_max, color='red', linestyle='--', + label=f'$g_{{\\rm max}} = {g_max:.2f}$') +ax.fill_between(T_candidates, g_bar_arr, g_max, + where=~feasible, alpha=0.2, color='red', + label='infeasible region') +ax.set_xlabel('$T$') +ax.set_ylabel(r'post-$T$ deficit $\bar{g}$') +ax.set_title('Fiscal limit: $\\bar{g}(T)$ vs Laffer-curve maximum') +ax.legend() +plt.tight_layout() +plt.show() + +# (c) Fiscal limit T* +T_star = T_candidates[feasible][-1] +print(f"\nFiscal limit T* = {T_star}") +print(f" g_bar(T*) = {g_bar_arr[T_star - 1]:.4f} ≤ g_max = {g_max:.4f}") +print(f" g_bar(T*+1) = {g_bar_arr[T_star]:.4f} > g_max = {g_max:.4f} (infeasible)") +``` + +Beyond $T^*$, the accumulated bond debt $B_{T-1}$ is so large that the +implied $\bar g$ exceeds the peak of the seigniorage Laffer curve. No matter +how high the government sets the inflation tax rate, it cannot raise enough +revenue to service that debt. The fiscal limit is therefore a hard constraint +on how long a tight-money policy can be pursued before the underlying fiscal +arithmetic becomes incoherent. + +```{solution-end} +``` From 88e45616d46053a54a3c40f0676632a7646bfdd3 Mon Sep 17 00:00:00 2001 From: thomassargent30 Date: Sat, 23 May 2026 13:55:18 -0400 Subject: [PATCH 2/6] Tom's second edits of May 23 --- lectures/money_inflation_nonlinear.md | 297 ++++++++++++++++++++++++++ 1 file changed, 297 insertions(+) diff --git a/lectures/money_inflation_nonlinear.md b/lectures/money_inflation_nonlinear.md index bce94f096..5de666e98 100644 --- a/lectures/money_inflation_nonlinear.md +++ b/lectures/money_inflation_nonlinear.md @@ -437,3 +437,300 @@ on grounds of plausibility, we again recommend selecting the unique equilibriu As we shall see, we accepting this recommendation is a key ingredient of outcomes of the "unpleasant arithmetic" that we describe in {doc}`unpleasant`. In {doc}`laffer_adaptive`, we shall explore how {cite}`bruno1990seigniorage` and others justified our equilibrium selection in other ways. + +## Exercises + +```{exercise} +:label: mni_ex1 + +**Peak seigniorage revenue and fiscal limits.** + +The steady-state seigniorage collected at inflation rate $x$ is + +$$ +L(x) = e^{-\alpha x} - e^{-(1+\alpha)x}. +$$ + +(a) Verify analytically that $L(x)$ is maximized at + +$$ +x^* = \ln\!\left(\frac{1+\alpha}{\alpha}\right) +$$ + +by differentiating, setting $L'(x) = 0$, and solving for $x$. + +(b) Using the default model, compute $x^*$ from the analytic formula and + confirm it numerically with `scipy.optimize.minimize_scalar`. + Plot the Laffer curve with horizontal lines marking $g_{\rm max} = L(x^*)$ + and the benchmark deficit $g = 0.35$. + +(c) What happens if the government attempts to finance a deficit + $g > g_{\rm max}$? Evaluate $L(x) - g$ over a fine grid of $x$ values + for $g = g_{\rm max} + 0.01$ and explain the economic interpretation. +``` + +```{solution-start} mni_ex1 +:class: dropdown +``` + +**(a)** Differentiating $L(x)$: + +$$ +L'(x) = -\alpha e^{-\alpha x} + (1+\alpha)\, e^{-(1+\alpha)x} = 0. +$$ + +Rearranging: + +$$ +\frac{1+\alpha}{\alpha} = e^{(1+\alpha)x - \alpha x} = e^{x} +\implies x^* = \ln\!\left(\frac{1+\alpha}{\alpha}\right). +$$ + +Since $L''(x^*) < 0$, this is indeed a maximum. + +```{code-cell} ipython3 +from scipy.optimize import minimize_scalar + +α = model.α +x_star_analytic = np.log((1 + α) / α) +g_max = compute_seign(x_star_analytic, α) +print(f"Analytic x* = ln((1+α)/α) = {x_star_analytic:.6f}") +print(f"g_max = L(x*) = {g_max:.6f}") + +result = minimize_scalar(lambda x: -compute_seign(x, α), bounds=(0, 10), method='bounded') +print(f"Numerical x* = {result.x:.6f}") +``` + +```{code-cell} ipython3 +x_values = np.linspace(0, 5, 1000) +y_values = compute_seign(x_values, α) + +fig, ax = plt.subplots() +ax.plot(x_values, y_values, label=r'$L(x)$') +ax.axhline(g_max, color='red', linestyle='--', + label=f'$g_{{\\rm max}}={g_max:.4f}$') +ax.axhline(model.g, color='blue', linestyle='--', lw=1, + label=f'$g={model.g}$') +ax.axvline(x_star_analytic, color='grey', linestyle=':', lw=1, + label=f'$x^*={x_star_analytic:.4f}$') +ax.set_xlabel(r'steady-state inflation rate $x$') +ax.set_ylabel('seigniorage') +ax.legend() +plt.tight_layout() +plt.show() +``` + +**(c)** + +```{code-cell} ipython3 +g_infeasible = g_max + 0.01 +x_grid = np.linspace(0, 10, 10_000) +residual = compute_seign(x_grid, α) - g_infeasible + +print(f"g_max = {g_max:.6f}") +print(f"g_infeasible = {g_infeasible:.6f}") +print(f"max L(x) - g = {residual.max():.8f} (always negative)") +``` + +When $g > g_{\rm max}$, the equation $L(x) = g$ has no real solution for any +$x \geq 0$. Economically, the inflation tax cannot raise enough revenue to +cover the deficit at *any* inflation rate: the government has exceeded the +fiscal limit of the seigniorage Laffer curve, and no stationary equilibrium +exists. + +```{solution-end} +``` + +```{exercise} +:label: mni_ex2 + +**How the two steady-state inflation rates depend on the deficit $g$.** + +The lecture computes $\pi_l$ and $\pi_u$ for a fixed benchmark deficit +$g = 0.35$. + +(a) For $g$ ranging from $0.05$ to just below $g_{\rm max}$, compute both + $\pi_l(g)$ and $\pi_u(g)$ numerically and plot them on the same graph. + +(b) Describe the limiting behavior: + - As $g \to 0^+$, what do $\pi_l(g)$ and $\pi_u(g)$ approach? + - As $g \to g_{\rm max}^-$, what do they approach? + +(c) Mark the benchmark $g = 0.35$ on your graph and read off the two + values. Confirm they agree with `π_l` and `π_u` computed in the + lecture. +``` + +```{solution-start} mni_ex2 +:class: dropdown +``` + +```{code-cell} ipython3 +α = model.α +x_star = np.log((1 + α) / α) +g_max = compute_seign(x_star, α) + +g_grid = np.linspace(0.05, g_max * 0.999, 200) +π_l_curve, π_u_curve = [], [] + +for g in g_grid: + m_temp = create_model(α=α, g=g) + π_l_curve.append(solve_π_bar(m_temp, x0=0.3)) + π_u_curve.append(solve_π_bar(m_temp, x0=3.0)) + +π_l_curve = np.array(π_l_curve) +π_u_curve = np.array(π_u_curve) + +fig, ax = plt.subplots() +ax.plot(g_grid, π_l_curve, label=r'$\pi_l(g)$ — low-inflation steady state') +ax.plot(g_grid, π_u_curve, label=r'$\pi_u(g)$ — high-inflation steady state') +ax.axvline(model.g, color='grey', linestyle='--', lw=1, + label=f'benchmark $g={model.g}$') +ax.set_xlabel('government deficit $g$') +ax.set_ylabel('steady-state inflation rate') +ax.legend() +plt.tight_layout() +plt.show() +``` + +**(b)** + +```{code-cell} ipython3 +print(f"As g → 0: π_l → {π_l_curve[0]:.4f} (approaches 0)") +print(f" π_u → {π_u_curve[0]:.4f} (large; approaches ∞)") +print(f"As g → g_max: π_l → {π_l_curve[-1]:.4f}") +print(f" π_u → {π_u_curve[-1]:.4f}") +print(f"x* = {x_star:.4f} (the two roots merge here)") +``` + +When $g \to 0^+$, the curve $L(x) = g$ has one root near $x = 0$ +($\pi_l \to 0$) and another at very large $x$ ($\pi_u \to \infty$). +As $g$ rises toward $g_{\rm max}$ the two roots approach each other and merge +at $x^* = \ln\bigl((1+\alpha)/\alpha\bigr)$. + +**(c)** + +```{code-cell} ipython3 +idx = np.argmin(np.abs(g_grid - model.g)) +print(f"At benchmark g = {model.g}:") +print(f" π_l from curve = {π_l_curve[idx]:.4f}, π_l from lecture = {π_l:.4f}") +print(f" π_u from curve = {π_u_curve[idx]:.4f}, π_u from lecture = {π_u:.4f}") +``` + +```{solution-end} +``` + +```{exercise} +:label: mni_ex3 + +**Effect of the money-demand elasticity $\alpha$.** + +The parameter $\alpha$ governs how sensitive real money demand is to expected +inflation. A larger $\alpha$ means households reduce their real balances more +sharply as inflation rises. + +(a) For $\alpha \in \{0.3,\; 0.5,\; 0.8\}$, compute + $x^*(\alpha) = \ln\bigl((1+\alpha)/\alpha\bigr)$ and + $g_{\rm max}(\alpha) = \alpha^\alpha/(1+\alpha)^{1+\alpha}$. + Plot the three Laffer curves on the same axes. + +(b) Keeping the deficit fixed at $g = 0.35$, check for each $\alpha$ + whether the deficit is feasible (i.e., $g \leq g_{\rm max}(\alpha)$). + For each feasible case, compute $(\pi_l,\, \pi_u)$. + +(c) For every feasible $\alpha$, simulate 20 periods starting from the + midpoint $p_0 = \tfrac{1}{2}(p_{0,l} + p_{0,u})$ and plot $\pi_t$ on a + single graph. What do the paths have in common? +``` + +```{solution-start} mni_ex3 +:class: dropdown +``` + +**(a)** + +```{code-cell} ipython3 +alphas = [0.3, 0.5, 0.8] +x_values = np.linspace(0, 6, 1000) + +fig, ax = plt.subplots() +for α in alphas: + y_values = compute_seign(x_values, α) + x_star_α = np.log((1 + α) / α) + g_max_α = compute_seign(x_star_α, α) + ax.plot(x_values, y_values, + label=fr'$\alpha={α}$, $g_{{\rm max}}={g_max_α:.3f}$') + print(f"α = {α}: x* = {x_star_α:.4f}, g_max = {g_max_α:.4f}") + +ax.axhline(0.35, color='red', linestyle='--', lw=1, label='$g=0.35$') +ax.set_xlabel(r'steady-state inflation rate $x$') +ax.set_ylabel('seigniorage') +ax.set_ylim([0, 0.6]) +ax.legend() +plt.tight_layout() +plt.show() +``` + +A larger $\alpha$ flattens and narrows the Laffer curve, reducing the maximum +seigniorage the government can raise. + +**(b)** + +```{code-cell} ipython3 +g = 0.35 +print(f"Feasibility check for g = {g}\n") + +steady_states = {} +for α in alphas: + m_temp = create_model(α=α, g=g) + x_star_α = np.log((1 + α) / α) + g_max_α = compute_seign(x_star_α, α) + if g <= g_max_α: + pl = solve_π_bar(m_temp, x0=0.3) + pu = solve_π_bar(m_temp, x0=3.0) + steady_states[α] = (pl, pu) + print(f"α = {α}: feasible (g_max = {g_max_α:.4f})" + f" → π_l = {pl:.4f}, π_u = {pu:.4f}") + else: + steady_states[α] = None + print(f"α = {α}: infeasible (g_max = {g_max_α:.4f} < g = {g})") +``` + +For $\alpha = 0.8$ the maximum seigniorage falls below $g = 0.35$, so no +steady-state equilibrium exists. Higher money-demand sensitivity tightens the +fiscal limit of the inflation tax. + +**(c)** + +```{code-cell} ipython3 +num_steps = 20 +fig, ax = plt.subplots() + +for α in alphas: + if steady_states[α] is None: + continue + π_l_α, π_u_α = steady_states[α] + m_temp = create_model(α=α, g=g) + p0_l_α = solve_p0_bar(m_temp, x0=np.log(220), π_bar=π_l_α) + p0_u_α = solve_p0_bar(m_temp, x0=np.log(220), π_bar=π_u_α) + p0_mid = (p0_l_α + p0_u_α) / 2 + + π_seq_α, *_ = simulate_seq(p0_mid, m_temp, num_steps) + ax.plot(range(num_steps), π_seq_α, + marker='o', markersize=3, lw=1.5, + label=fr'$\alpha={α}$ ($\pi_u={π_u_α:.2f}$)') + ax.axhline(π_u_α, linestyle='--', lw=1, alpha=0.4) + +ax.set_xlabel('time step') +ax.set_ylabel(r'$\pi_t$') +ax.legend() +plt.tight_layout() +plt.show() +``` + +For every feasible $\alpha$, the path from the midpoint $p_0$ converges to the +*high*-inflation steady state $\pi_u$, confirming the perverse dynamics under +rational expectations regardless of the value of $\alpha$. + +```{solution-end} +``` From 3fc85700c11a987ca3c4c3ab8fa73c94704193d6 Mon Sep 17 00:00:00 2001 From: HumphreyYang Date: Sun, 24 May 2026 15:56:30 +1000 Subject: [PATCH 3/6] fix minor issues and wording --- .../long_run_growth/tooze_ch1_graph.png | Bin 160374 -> 165145 bytes lectures/ar1_processes.md | 6 +- lectures/business_cycle.md | 212 ++++++------- lectures/cagan_adaptive.md | 167 +++++----- lectures/cagan_ree.md | 260 ++++++++-------- lectures/complex_and_trig.md | 15 +- lectures/cons_smooth.md | 237 +++++++------- lectures/eigen_I.md | 88 +++--- lectures/eigen_II.md | 24 +- lectures/equalizing_difference.md | 97 +++--- lectures/french_rev.md | 245 ++++++++------- lectures/geom_series.md | 40 +-- lectures/inequality.md | 106 +++---- lectures/inflation_history.md | 198 ++++++------ lectures/laffer_adaptive.md | 128 ++++---- lectures/lln_clt.md | 58 ++-- lectures/long_run_growth.md | 138 ++++----- lectures/lp_intro.md | 2 +- lectures/money_inflation.md | 291 +++++++++--------- lectures/money_inflation_nonlinear.md | 141 +++++---- lectures/pv.md | 133 ++++---- lectures/solow.md | 6 +- lectures/supply_demand_heterogeneity.md | 36 +-- lectures/tax_smooth.md | 170 +++++----- lectures/unpleasant.md | 190 +++++++----- 25 files changed, 1507 insertions(+), 1481 deletions(-) diff --git a/lectures/_static/lecture_specific/long_run_growth/tooze_ch1_graph.png b/lectures/_static/lecture_specific/long_run_growth/tooze_ch1_graph.png index a8e9775364b755b383a3553fb38c1345fc444f3d..45ca55bb8920fda5245088b52ffae71bf63bc07b 100644 GIT binary patch literal 165145 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 z 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 z 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%0AkY$(szO2FqbZ;1Nq(;g5|`!c$;9Jr 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 z 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 E0A?L2-2eap literal 160374 zcmeFZbyQSs8#juDiCBmt5-QytQlfMU14yG%LrQlUsHo)7B~sE#4AP<^4bs98Dhwgr zF~qqx==1u0|DQk3T4&aJ-)E^Xv*+ITeOGV4`j6+h=|y)BLCaxnkw#0w2z2L?$!;IYuwbp zVb?IH)t&hcrQX>5RpJ|`j2U%R `~9bo=(p89nE!w(DrK?ly=a65NPLiOOGefvV# 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, we found that developed economies have had -relatively synchronized periods of recession. +relatively synchronized periods of recession. -At the same time, this synchronization did not appear in Argentina until the 2000s. +At the same time, this synchronization did not appear in Argentina until the 2000s. -Let's examine this trend further. +Let's examine this trend further. With slight modifications, we can use our previous function to draw a plot that includes multiple countries. @@ -423,9 +423,9 @@ tags: [hide-input] --- -def plot_comparison(data, countries, - ylabel, txt_pos, y_lim, ax, - g_params, b_params, t_params, +def plot_comparison(data, countries, + ylabel, txt_pos, y_lim, ax, + g_params, b_params, t_params, baseline=0): """ Plot multiple series on the same graph @@ -452,17 +452,17 @@ def plot_comparison(data, countries, Parameters for the recession labels baseline : float, optional Dashed baseline on the plot, by default 0 - + Returns ------- ax : matplotlib.axes.Axes Axes with the plot. """ - + # Allow the function to go through more than one series for country in countries: ax.plot(data.loc[country], label=country, **g_params) - + # Highlight recessions ax.axvspan(1973, 1975, **b_params) ax.axvspan(1990, 1992, **b_params) @@ -471,26 +471,26 @@ def plot_comparison(data, countries, if y_lim != None: ax.set_ylim([-y_lim, y_lim]) ylim = ax.get_ylim()[1] - ax.text(1974, ylim + ylim*txt_pos, - 'Oil Crisis\n(1974)', **t_params) - ax.text(1991, ylim + ylim*txt_pos, - '1990s recession\n(1991)', **t_params) - ax.text(2008, ylim + ylim*txt_pos, - 'GFC\n(2008)', **t_params) - ax.text(2020, ylim + ylim*txt_pos, - 'Covid-19\n(2020)', **t_params) + ax.text(1974, ylim + ylim*txt_pos, + 'Oil Crisis\n(1974)', **t_params) + ax.text(1991, ylim + ylim*txt_pos, + '1990s recession\n(1991)', **t_params) + ax.text(2008, ylim + ylim*txt_pos, + 'GFC\n(2008)', **t_params) + ax.text(2020, ylim + ylim*txt_pos, + 'Covid-19\n(2020)', **t_params) if baseline != None: - ax.hlines(y=baseline, xmin=ax.get_xlim()[0], - xmax=ax.get_xlim()[1], color='black', + ax.hlines(y=baseline, xmin=ax.get_xlim()[0], + xmax=ax.get_xlim()[1], color='black', linestyle='--') ax.set_ylabel(ylabel) ax.legend() return ax -# Define graphical parameters +# Define graphical parameters g_params = {'alpha': 0.7} b_params = {'color':'grey', 'alpha': 0.2} -t_params = {'color':'grey', 'fontsize': 9, +t_params = {'color':'grey', 'fontsize': 9, 'va':'center', 'ha':'center'} ``` @@ -503,7 +503,7 @@ tags: [hide-input] # Obtain GDP growth rate for a list of countries gdp_growth = wb.data.DataFrame('NY.GDP.MKTP.KD.ZG', - ['CHN', 'USA', 'DEU', 'BRA', 'ARG', 'GBR', 'JPN', 'MEX'], + ['CHN', 'USA', 'DEU', 'BRA', 'ARG', 'GBR', 'JPN', 'MEX'], labels=True) gdp_growth = gdp_growth.set_index('Country') gdp_growth.columns = gdp_growth.columns.str.replace('YR', '').astype(int) @@ -524,9 +524,9 @@ tags: [hide-input] fig, ax = plt.subplots() countries = ['United Kingdom', 'United States', 'Germany', 'Japan'] ylabel = 'GDP growth rate (%)' -plot_comparison(gdp_growth.loc[countries, 1962:], +plot_comparison(gdp_growth.loc[countries, 1962:], countries, ylabel, - 0.1, 20, ax, + 0.1, 20, ax, g_params, b_params, t_params) plt.show() ``` @@ -544,27 +544,27 @@ tags: [hide-input] fig, ax = plt.subplots() countries = ['Brazil', 'China', 'Argentina', 'Mexico'] -plot_comparison(gdp_growth.loc[countries, 1962:], - countries, ylabel, - 0.1, 20, ax, +plot_comparison(gdp_growth.loc[countries, 1962:], + countries, ylabel, + 0.1, 20, ax, g_params, b_params, t_params) plt.show() ``` -The comparison of GDP growth rates above suggests that +The comparison of GDP growth rates above suggests that business cycles are becoming more synchronized in 21st-century recessions. However, emerging and less developed economies often experience more volatile -changes throughout the economic cycles. +changes throughout the economic cycles. Despite the synchronization in GDP growth, the experience of individual countries during -the recession often differs. +the recession often differs. We use the unemployment rate and the recovery of labor market conditions as another example. -Here we compare the unemployment rate of the United States, +Here we compare the unemployment rate of the United States, the United Kingdom, Japan, and France. ```{code-cell} ipython3 @@ -585,8 +585,8 @@ fig, ax = plt.subplots() countries = ['United Kingdom', 'United States', 'Japan', 'France'] ylabel = 'unemployment rate (national estimate) (%)' -plot_comparison(unempl_rate, countries, - ylabel, 0.05, None, ax, g_params, +plot_comparison(unempl_rate, countries, + ylabel, 0.05, None, ax, g_params, b_params, t_params, baseline=None) plt.show() ``` @@ -597,10 +597,10 @@ relatively slow labor market recoveries after negative shocks. We also notice that Japan has a history of very low and stable unemployment rates. -## Leading indicators and correlated factors +## Leading indicators and correlated factors Examining leading indicators and correlated factors helps policymakers to -understand the causes and results of business cycles. +understand the causes and results of business cycles. We will discuss potential leading indicators and correlated factors from three perspectives: consumption, production, and credit level. @@ -609,13 +609,13 @@ perspectives: consumption, production, and credit level. ### Consumption Consumption depends on consumers' confidence in their -income and the overall performance of the economy in the future. +income and the overall performance of the economy in the future. One widely cited indicator for consumer confidence is the [consumer sentiment index](https://fred.stlouisfed.org/series/UMCSENT) published by the University of Michigan. Here we plot the University of Michigan Consumer Sentiment Index and -year-on-year +year-on-year [core consumer price index](https://fred.stlouisfed.org/series/CPILFESL) (CPI) change from 1978-2022 in the US. @@ -636,39 +636,39 @@ start_date_graph = datetime.datetime(1977, 1, 1) end_date_graph = datetime.datetime(2023, 12, 31) nber = web.DataReader('USREC', 'fred', start_date, end_date) -consumer_confidence = web.DataReader('UMCSENT', 'fred', +consumer_confidence = web.DataReader('UMCSENT', 'fred', start_date, end_date) fig, ax = plt.subplots() -ax.plot(consumer_confidence, **g_params, - color='#377eb8', linestyle='-', +ax.plot(consumer_confidence, **g_params, + color='#377eb8', linestyle='-', linewidth=2) -ax.fill_between(nber.index, 0, 1, - where=nber['USREC']==1, +ax.fill_between(nber.index, 0, 1, + where=nber['USREC']==1, color='grey', edgecolor='none', - alpha=0.3, - transform=ax.get_xaxis_transform(), + alpha=0.3, + transform=ax.get_xaxis_transform(), label='NBER recession indicators') ax.set_ylim([0, ax.get_ylim()[1]]) ax.set_ylabel('consumer sentiment index') # Plot CPI on another y-axis ax_t = ax.twinx() -inflation = web.DataReader('CPILFESL', 'fred', +inflation = web.DataReader('CPILFESL', 'fred', start_date, end_date).pct_change(12)*100 # Add CPI on the legend without drawing the line again -ax_t.plot(2020, 0, **g_params, linestyle='-', +ax_t.plot(2020, 0, **g_params, linestyle='-', linewidth=2, label='consumer sentiment index') -ax_t.plot(inflation, **g_params, - color='#ff7f00', linestyle='--', +ax_t.plot(inflation, **g_params, + color='#ff7f00', linestyle='--', linewidth=2, label='CPI YoY change (%)') ax_t.fill_between(nber.index, 0, 1, - where=nber['USREC']==1, + where=nber['USREC']==1, color='grey', edgecolor='none', - alpha=0.3, - transform=ax.get_xaxis_transform(), + alpha=0.3, + transform=ax.get_xaxis_transform(), label='NBER recession indicators') ax_t.set_ylim([0, ax_t.get_ylim()[1]]) ax_t.set_xlim([start_date_graph, end_date_graph]) @@ -679,7 +679,7 @@ ax_t.set_ylabel('CPI YoY change (%)') plt.show() ``` -We see that +We see that * consumer sentiment often remains high during expansions and drops before recessions. @@ -693,12 +693,12 @@ This trend is more significant during [stagflation](https://en.wikipedia.org/wik ### Production -Real industrial output is highly correlated with recessions in the economy. +Real industrial output is highly correlated with recessions in the economy. -However, it is not a leading indicator, as the peak of contraction in production +However, it is not a leading indicator, as the peak of contraction in production is delayed relative to consumer confidence and inflation. -We plot the real industrial output change from the previous year +We plot the real industrial output change from the previous year from 1919 to 2022 in the US to show this trend. ```{code-cell} ipython3 @@ -713,20 +713,20 @@ tags: [hide-input] start_date = datetime.datetime(1919, 1, 1) end_date = datetime.datetime(2022, 12, 31) -nber = web.DataReader('USREC', 'fred', +nber = web.DataReader('USREC', 'fred', start_date, end_date) -industrial_output = web.DataReader('INDPRO', 'fred', +industrial_output = web.DataReader('INDPRO', 'fred', start_date, end_date).pct_change(12)*100 fig, ax = plt.subplots() -ax.plot(industrial_output, **g_params, - color='#377eb8', linestyle='-', +ax.plot(industrial_output, **g_params, + color='#377eb8', linestyle='-', linewidth=2, label='Industrial production index') ax.fill_between(nber.index, 0, 1, - where=nber['USREC']==1, + where=nber['USREC']==1, color='grey', edgecolor='none', - alpha=0.3, - transform=ax.get_xaxis_transform(), + alpha=0.3, + transform=ax.get_xaxis_transform(), label='NBER recession indicators') ax.set_ylim([ax.get_ylim()[0], ax.get_ylim()[1]]) ax.set_ylabel('YoY real output change (%)') @@ -758,7 +758,7 @@ mystnb: tags: [hide-input] --- -private_credit = wb.data.DataFrame('FS.AST.PRVT.GD.ZS', +private_credit = wb.data.DataFrame('FS.AST.PRVT.GD.ZS', ['GBR'], labels=True) private_credit = private_credit.set_index('Country') private_credit.columns = private_credit.columns.str.replace('YR', '').astype(int) @@ -767,8 +767,8 @@ fig, ax = plt.subplots() countries = 'United Kingdom' ylabel = 'credit level (% of GDP)' -ax = plot_series(private_credit, countries, - ylabel, 0.05, ax, g_params, b_params, +ax = plot_series(private_credit, countries, + ylabel, 0.05, ax, g_params, b_params, t_params, ylim=None, baseline=None) plt.show() ``` diff --git a/lectures/cagan_adaptive.md b/lectures/cagan_adaptive.md index e8a1ffd6a..25f253014 100644 --- a/lectures/cagan_adaptive.md +++ b/lectures/cagan_adaptive.md @@ -22,7 +22,7 @@ We'll use linear algebra to do some experiments with an alternative "monetarist Like the model in {doc}`cagan_ree`, the model asserts that when a government persistently spends more than it collects in taxes and prints money to finance the shortfall, it puts upward pressure on the price level and generates persistent inflation. -Instead of the "perfect foresight" or "rational expectations" version of the model in {doc}`cagan_ree`, our model in the present lecture is an "adaptive expectations" version of a model that {cite}`Cagan` used to study the monetary dynamics of hyperinflations. +Instead of the "perfect foresight" or "rational expectations" version of the model in {doc}`cagan_ree`, our model in the present lecture is an "adaptive expectations" version of a model that {cite}`Cagan` used to study the monetary dynamics of hyperinflations. It combines these components: @@ -34,7 +34,7 @@ It combines these components: * an exogenous sequence of rates of growth of the money supply -Our model stays quite close to Cagan's original specification. +Our model stays quite close to Cagan's original specification. As in {doc}`pv` and {doc}`cons_smooth`, the only linear algebra operations that we'll be using are matrix multiplication and matrix inversion. @@ -43,7 +43,7 @@ the model. ## Structure of the model -Let +Let * $ m_t $ be the log of the supply of nominal money balances; * $\mu_t = m_{t+1} - m_t $ be the net rate of growth of nominal balances; @@ -52,11 +52,11 @@ Let * $\pi_t^*$ be the public's expected rate of inflation between $t$ and $t+1$; * $T$ the horizon -- i.e., the last period for which the model will determine $p_t$ * $\pi_0^*$ public's initial expected rate of inflation between time $0$ and time $1$. - - + + The demand for real balances $\exp\left(m_t^d-p_t\right)$ is governed by the following version of the Cagan demand function - -$$ + +$$ m_t^d - p_t = -\alpha \pi_t^* \: , \: \alpha > 0 ; \quad t = 0, 1, \ldots, T . $$ (eq:caganmd_ad) @@ -71,7 +71,7 @@ $$ p_t = m_t + \alpha \pi_t^* $$ (eq:eqfiscth1) -Taking the difference between equation {eq}`eq:eqfiscth1` at time $t+1$ and at time +Taking the difference between equation {eq}`eq:eqfiscth1` at time $t+1$ and at time $t$ gives $$ @@ -82,11 +82,11 @@ We assume that the expected rate of inflation $\pi_t^*$ is governed by the following adaptive expectations scheme proposed by {cite}`Friedman1956` and {cite}`Cagan`, where $\lambda\in [0,1]$ denotes the weight on expected inflation. $$ -\pi_{t+1}^* = \lambda \pi_t^* + (1 -\lambda) \pi_t +\pi_{t+1}^* = \lambda \pi_t^* + (1 -\lambda) \pi_t $$ (eq:adaptexpn) As exogenous inputs into the model, we take initial conditions $m_0, \pi_0^*$ -and a money growth sequence $\mu = \{\mu_t\}_{t=0}^T$. +and a money growth sequence $\mu = \{\mu_t\}_{t=0}^T$. As endogenous outputs of our model we want to find sequences $\pi = \{\pi_t\}_{t=0}^T, p = \{p_t\}_{t=0}^T$ as functions of the exogenous inputs. @@ -108,9 +108,9 @@ $$ \pi_1^* \cr \pi_2^* \cr \vdots \cr - \pi_{T+1}^* + \pi_{T+1}^* \end{bmatrix} = - (1-\lambda) \begin{bmatrix} + (1-\lambda) \begin{bmatrix} 0 & 0 & 0 & \cdots & 0 \cr 1 & 0 & 0 & \cdots & 0 \cr 0 & 1 & 0 & \cdots & 0 \cr @@ -132,7 +132,7 @@ are defined implicitly by aligning these two equations. Next we write the key equation {eq}`eq:eqpipi` in matrix notation as -$$ +$$ \begin{bmatrix} \pi_0 \cr \pi_1 \cr \pi_1 \cr \vdots \cr \pi_T \end{bmatrix} = \begin{bmatrix} @@ -141,13 +141,13 @@ $$ 0 & -\alpha & \alpha & \cdots & 0 & 0 \cr 0 & 0 & -\alpha & \cdots & 0 & 0 \cr \vdots & \vdots & \vdots & \cdots & \alpha & 0 \cr -0 & 0 & 0 & \cdots & -\alpha & \alpha +0 & 0 & 0 & \cdots & -\alpha & \alpha \end{bmatrix} \begin{bmatrix} \pi_0^* \cr \pi_1^* \cr \pi_2^* \cr \vdots \cr - \pi_{T+1}^* + \pi_{T+1}^* \end{bmatrix} $$ @@ -163,7 +163,7 @@ equation system. ## Harvesting insights from our matrix formulation We now have all of the ingredients we need to solve for $\pi$ as -a function of $\mu, \pi_0, \pi_0^*$. +a function of $\mu, \pi_0, \pi_0^*$. Combine equations {eq}`eq:eq1`and {eq}`eq:eq2` to get @@ -194,18 +194,18 @@ $$ We have thus solved for two of the key endogenous time series determined by our model, namely, the sequence $\pi^*$ -of expected inflation rates and the sequence $\pi$ of actual inflation rates. +of expected inflation rates and the sequence $\pi$ of actual inflation rates. Knowing these, we can then quickly calculate the associated sequence $p$ of the logarithm of the price level -from equation {eq}`eq:eqfiscth1`. +from equation {eq}`eq:eqfiscth1`. Let's fill in the details for this step. Since we now know $\mu$ it is easy to compute $m$. -Thus, notice that we can represent the equations +Thus, notice that we can represent the equations -$$ +$$ m_{t+1} = m_t + \mu_t , \quad t = 0, 1, \ldots, T $$ @@ -218,52 +218,52 @@ $$ 0 & -1 & 1 & \cdots & 0 & 0 \cr \vdots & \vdots & \vdots & \vdots & 0 & 0 \cr 0 & 0 & 0 & \cdots & 1 & 0 \cr -0 & 0 & 0 & \cdots & -1 & 1 +0 & 0 & 0 & \cdots & -1 & 1 \end{bmatrix} -\begin{bmatrix} +\begin{bmatrix} m_1 \cr m_2 \cr m_3 \cr \vdots \cr m_T \cr m_{T+1} \end{bmatrix} -= \begin{bmatrix} += \begin{bmatrix} \mu_0 \cr \mu_1 \cr \mu_2 \cr \vdots \cr \mu_{T-1} \cr \mu_T \end{bmatrix} -+ \begin{bmatrix} ++ \begin{bmatrix} m_0 \cr 0 \cr 0 \cr \vdots \cr 0 \cr 0 \end{bmatrix} $$ (eq:eq101_ad) -Multiplying both sides of equation {eq}`eq:eq101_ad` with the inverse of the matrix on the left will give +Multiplying both sides of equation {eq}`eq:eq101_ad` with the inverse of the matrix on the left will give $$ m_t = m_0 + \sum_{s=0}^{t-1} \mu_s, \quad t =1, \ldots, T+1 $$ (eq:mcum_ad) -Equation {eq}`eq:mcum_ad` shows that the log of the money supply at $t$ equals the log $m_0$ of the initial money supply +Equation {eq}`eq:mcum_ad` shows that the log of the money supply at $t$ equals the log $m_0$ of the initial money supply plus accumulation of rates of money growth between times $0$ and $t$. We can then compute $p_t$ for each $t$ from equation {eq}`eq:eqfiscth1`. We can write a compact formula for $p $ as -$$ +$$ p = m + \alpha \hat \pi^* $$ -where +where $$ \hat \pi^* = \begin{bmatrix} \pi_0^* \cr \pi_1^* \cr \pi_2^* \cr \vdots \cr - \pi_{T}^* + \pi_{T}^* \end{bmatrix}, $$ which is just $\pi^*$ with the last element dropped. - + ## Forecast errors and model computation -Our computations will verify that +Our computations will verify that $$ \hat \pi^* \neq \pi, @@ -271,12 +271,12 @@ $$ so that in general -$$ +$$ \pi_t^* \neq \pi_t, \quad t = 0, 1, \ldots , T $$ (eq:notre) This outcome is typical in models in which adaptive expectations hypothesis like equation {eq}`eq:adaptexpn` appear as a -component. +component. In {doc}`cagan_ree`, we studied a version of the model that replaces hypothesis {eq}`eq:adaptexpn` with a "perfect foresight" or "rational expectations" hypothesis. @@ -292,7 +292,7 @@ import matplotlib.pyplot as plt ``` ```{code-cell} ipython3 -Cagan_Adaptive = namedtuple("Cagan_Adaptive", +Cagan_Adaptive = namedtuple("Cagan_Adaptive", ["α", "m0", "Eπ0", "T", "λ"]) def create_cagan_adaptive_model(α = 5, m0 = 1, Eπ0 = 0.5, T=80, λ = 0.9): @@ -308,7 +308,7 @@ We solve the model and plot variables of interests using the following functions def solve_cagan_adaptive(model, μ_seq): " Solve the Cagan model in finite time. " α, m0, Eπ0, T, λ = model - + A = np.eye(T+2, T+2) - λ*np.eye(T+2, T+2, k=-1) B = np.eye(T+2, T+1, k=-1) C = -α*np.eye(T+1, T+2) + α*np.eye(T+1, T+2, k=1) @@ -337,11 +337,11 @@ def solve_cagan_adaptive(model, μ_seq): ```{code-cell} ipython3 def solve_and_plot(model, μ_seq): - + π_seq, Eπ_seq, m_seq, p_seq = solve_cagan_adaptive(model, μ_seq) - + T_seq = range(model.T+2) - + fig, ax = plt.subplots(5, 1, figsize=[5, 12], dpi=200) ax[0].plot(T_seq[:-1], μ_seq) ax[1].plot(T_seq[:-1], π_seq, label=r'$\pi_t$') @@ -349,7 +349,7 @@ def solve_and_plot(model, μ_seq): ax[2].plot(T_seq, m_seq - p_seq) ax[3].plot(T_seq, m_seq) ax[4].plot(T_seq, p_seq) - + y_labs = [r'$\mu$', r'$\pi$', r'$m - p$', r'$m$', r'$p$'] subplot_title = [r'Money supply growth', r'Inflation', r'Real balances', r'Money supply', r'Price level'] @@ -361,7 +361,7 @@ def solve_and_plot(model, μ_seq): ax[1].legend() plt.tight_layout() plt.show() - + return π_seq, Eπ_seq, m_seq, p_seq ``` @@ -385,7 +385,7 @@ $$ \end{aligned} $$ -By assuring that the coefficient on $\pi_t$ is less than one in absolute value, condition {eq}`eq:suffcond` assures stability of the dynamics of $\{\pi_t\}$ described by the last line of our string of deductions. +By assuring that the coefficient on $\pi_t$ is less than one in absolute value, condition {eq}`eq:suffcond` assures stability of the dynamics of $\{\pi_t\}$ described by the last line of our string of deductions. The reader is free to study outcomes in examples that violate condition {eq}`eq:suffcond`. @@ -402,7 +402,7 @@ Now we'll turn to some experiments. We'll study a situation in which the rate of growth of the money supply is $\mu_0$ from $t=0$ to $t= T_1$ and then permanently falls to $\mu^*$ at $t=T_1$. -Thus, let $T_1 \in (0, T)$. +Thus, let $T_1 \in (0, T)$. So where $\mu_0 > \mu^*$, we assume that @@ -438,11 +438,11 @@ We invite you to explain to yourself the source of this overshooting and why it ### Experiment 2 Now we'll do a different experiment, namely, a gradual stabilization in which the rate of growth of the money supply smoothly -declines from a high value to a persistently low value. +declines from a high value to a persistently low value. While price level inflation eventually falls, it falls more slowly than the driving force that ultimately causes it to fall, namely, the falling rate of growth of the money supply. -The sluggish fall in inflation is explained by how anticipated inflation $\pi_t^*$ persistently exceeds actual inflation $\pi_t$ during the transition from a high inflation to a low inflation situation. +The sluggish fall in inflation is explained by how anticipated inflation $\pi_t^*$ persistently exceeds actual inflation $\pi_t$ during the transition from a high inflation to a low inflation situation. ```{code-cell} ipython3 # parameters @@ -462,16 +462,11 @@ The sluggish fall in inflation is explained by how anticipated inflation $\pi_t **Sensitivity of overshooting to the learning speed $\lambda$.** -For Experiment 1 (sudden stabilization at $T_1 = 60$ from $\mu_0 = 0.5$ to -$\mu^* = 0$), solve the model for -$\lambda \in \{0.3,\, 0.5,\, 0.7,\, 0.9\}$ and, on a single graph, plot the -actual inflation rate $\pi_t$ for each value. +For Experiment 1 (sudden stabilization at $T_1 = 60$ from $\mu_0 = 0.5$ to $\mu^* = 0$), solve the model for $\lambda \in \{0.86,\, 0.90,\, 0.95,\, 0.98\}$ and, on a single graph, plot the actual inflation rate $\pi_t$ for each value. -(a) As $\lambda$ decreases (the public updates its expectations faster), what - happens to the magnitude of the overshoot in $\pi_t$ at $t = T_1$? +(a) How do the sign and speed of post-stabilization convergence change as $\lambda$ varies within the stable region? -(b) For each $\lambda$, print the peak value of $\pi_t$ for $t \geq T_1$. - Explain intuitively why faster updating dampens overshooting. +(b) For each $\lambda$, print $\rho$ and the peak absolute value of $\pi_t$ for $t \geq T_1$. ``` ```{solution-start} ca_ex1 @@ -482,7 +477,7 @@ actual inflation rate $\pi_t$ for each value. T1 = 60 μ0 = 0.5 μ_star = 0.0 -λ_vals = [0.3, 0.5, 0.7, 0.9] +λ_vals = [0.86, 0.90, 0.95, 0.98] fig, ax = plt.subplots(figsize=(9, 4)) for λ in λ_vals: @@ -499,23 +494,22 @@ ax.set_title('Inflation paths for different λ (sudden stabilization)') ax.legend() plt.show() -print(f'{"λ":>6} | {"peak π after T₁":>18}') -print('-' * 30) +print(f'{"λ":>6} | {"ρ":>10} | {"|ρ|<1":>8} | {"peak |π| after T₁":>20}') +print('-' * 56) for λ in λ_vals: m = create_cagan_adaptive_model(λ=λ) μ_seq = np.append(μ0 * np.ones(T1), μ_star * np.ones(m.T + 1 - T1)) π_seq, _, _, _ = solve_cagan_adaptive(m, μ_seq) + ρ = (λ - m.α * (1 - λ)) / (1 - m.α * (1 - λ)) peak = np.max(np.abs(π_seq[T1:])) - print(f'{λ:>6.1f} | {peak:>18.4f}') + print(f'{λ:>6.2f} | {ρ:>10.4f} | {str(abs(ρ) < 1):>8} | {peak:>20.4f}') ``` -When $\lambda$ is small the public places a large weight $(1-\lambda)$ on the most -recent *actual* inflation observation. After stabilization, actual inflation drops -quickly, so expected inflation — and hence money demand — adjusts fast too, -leaving little room for overshooting. When $\lambda$ is close to 1 expectations -are very inertial: the public is slow to "forget" past high inflation, so demand -for real balances stays depressed after the stabilization, driving a large -transitory spike in $\pi_t$. +All four values satisfy the stability condition $|\rho| < 1$ for the default $\alpha = 5$. + +The case $\lambda = 0.86$ is closest to the stability boundary and therefore displays the largest oscillatory response. + +As $\lambda$ moves closer to one, expectations become more inertial and the post-stabilization response decays more slowly but starts from a smaller jump. ```{solution-end} ``` @@ -588,9 +582,9 @@ print(f'Exp 2 — mean forecast error overall: {e2.mean():.4f}') During disinflation, actual inflation falls *below* expected inflation, so $e_t = \pi_t^* - \pi_t > 0$ throughout the transition — the public -systematically **over-predicts** inflation. Under rational expectations this -persistent one-sided bias would be immediately arbitraged away: agents would -adjust their forecasting rule until $e_t$ had mean zero. +systematically **over-predicts** inflation. + +Under rational expectations this persistent one-sided bias would be immediately arbitraged away as agents adjust their forecasting rule until $e_t$ has mean zero. ```{solution-end} ``` @@ -641,8 +635,8 @@ print(f'ρ = {ρ:.6f} (|ρ| < 1: {abs(ρ) < 1})') # (b) empirical successive ratios print(f'\n{"t":>5} | {"π_t":>12} | {"π_{t+1}/π_t":>14} | {"ρ":>8}') print('-' * 46) -for t in range(T1 + 1, T1 + 11): - ratio = π_seq[t] / π_seq[t - 1] +for t in range(T1, T1 + 10): + ratio = π_seq[t + 1] / π_seq[t] print(f'{t:>5} | {π_seq[t]:>12.6f} | {ratio:>14.6f} | {ρ:>8.6f}') ``` @@ -666,8 +660,9 @@ plt.show() ``` The empirical ratios converge to $\rho = 0.8$ immediately after $T_1$, confirming -the first-order difference equation derived analytically. The log plot is exactly -linear with the theoretical slope, reflecting the exact geometric convergence +the first-order difference equation derived analytically. + +The log plot is exactly linear with the theoretical slope, reflecting the exact geometric convergence $\pi_t = \rho^{t-T_1} \pi_{T_1}$ for $t \geq T_1$. ```{solution-end} @@ -681,21 +676,16 @@ $\pi_t = \rho^{t-T_1} \pi_{T_1}$ for $t \geq T_1$. Experiment 2 uses a gradual decline in money growth $\mu_t = \phi^t \mu_0 + (1-\phi^t)\mu^*$ with $\phi = 0.9$. -(a) For the same gradual $\mu$ path, compare the inflation $\pi_t$ and expected - inflation $\pi_t^*$ paths for two extreme cases: +(a) For the same gradual $\mu$ path, compare the inflation $\pi_t$ and expected inflation $\pi_t^*$ paths for two stable cases: - * **Fast learners**: $\lambda = 0.2$ (heavy weight on recent realised inflation) - * **Slow learners**: $\lambda = 0.95$ (heavy weight on past expectations) + * **Faster adjustment**: $\lambda = 0.86$ + * **Slower adjustment**: $\lambda = 0.95$ Plot $\pi_t$, $\pi_t^*$, and $\mu_t$ for each case on side-by-side graphs. -(b) For each case, compute the mean absolute forecast error - $\bar{e} = \frac{1}{T+1}\sum_{t=0}^T |\pi_t^* - \pi_t|$. - Which agent type makes larger errors during the disinflation, and why? +(b) For each case, compute the mean absolute forecast error $\bar{e} = \frac{1}{T+1}\sum_{t=0}^T |\pi_t^* - \pi_t|$. -(c) For fast learners, explain why $\pi_t$ can *undershoot* $\mu_t$ during the - transition, while for slow learners inflation persistently *exceeds* - $\mu_t$. +(c) Explain why the faster-adjustment case can move below the money-growth path while the slower-adjustment case displays more persistent forecast errors. ``` ```{solution-start} ca_ex4 @@ -707,8 +697,8 @@ $\mu_t = \phi^t \mu_0 + (1-\phi^t)\mu^*$ with $\phi = 0.9$. μ_star = 0.0 ϕ = 0.9 -λ_cases = {'Fast learners (λ=0.2)': 0.2, - 'Slow learners (λ=0.95)': 0.95} +λ_cases = {'Faster adjustment (λ=0.86)': 0.86, + 'Slower adjustment (λ=0.95)': 0.95} fig, axes = plt.subplots(1, 2, figsize=(12, 4)) @@ -740,18 +730,9 @@ for label, λ in λ_cases.items(): print(f'{label:>30} | {mae:>22.6f}') ``` -**Fast learners** quickly revise $\pi_t^*$ downward as they observe each decline -in $\pi_t$. Because expectations fall *with* actual inflation, money demand -adjusts promptly and $\pi_t$ can even dip below $\mu_t$ transiently (a -"forward-looking" flavour emerges from the rapid feedback). Their forecast -errors are small. +With faster adjustment, expectations revise downward more aggressively and inflation can move below the money-growth path during the transition. -**Slow learners** keep $\pi_t^*$ elevated long after actual inflation has begun -to fall. Persistently high expected inflation suppresses real money demand, -which bids up the price level and keeps $\pi_t$ above $\mu_t$ throughout the -transition. Their larger, slower-correcting forecast errors are the hallmark of -the adaptive mechanism. +With slower adjustment, expectations remain elevated for longer and the forecast errors are larger and slower to disappear. ```{solution-end} ``` -``` diff --git a/lectures/cagan_ree.md b/lectures/cagan_ree.md index 2642ea89a..f91252359 100644 --- a/lectures/cagan_ree.md +++ b/lectures/cagan_ree.md @@ -18,16 +18,16 @@ kernelspec: We'll use linear algebra first to explain and then do some experiments with a "monetarist theory of price levels". -Economists call it a "monetary" or "monetarist" theory of price levels because effects on price levels occur via a central bank's decisions to print money supply. +Economists call it a "monetary" or "monetarist" theory of price levels because effects on price levels occur via a central bank's decisions to print money supply. * a goverment's fiscal policies determine whether its _expenditures_ exceed its _tax collections_ * if its expenditures exceed its tax collections, the government can instruct the central bank to cover the difference by _printing money_ * that leads to effects on the price level as price level path adjusts to equate the supply of money to the demand for money -Such a theory of price levels was described by Thomas Sargent and Neil Wallace in chapter 5 of -{cite}`sargent2013rational`, which reprints a 1981 Federal Reserve Bank of Minneapolis article entitled "Unpleasant Monetarist Arithmetic". +Such a theory of price levels was described by Thomas Sargent and Neil Wallace in chapter 5 of +{cite}`sargent2013rational`, which reprints a 1981 Federal Reserve Bank of Minneapolis article entitled "Unpleasant Monetarist Arithmetic". -Sometimes this theory is also called a "fiscal theory of price levels" to emphasize the importance of fiscal deficits in shaping changes in the money supply. +Sometimes this theory is also called a "fiscal theory of price levels" to emphasize the importance of fiscal deficits in shaping changes in the money supply. The theory has been extended, criticized, and applied by John Cochrane {cite}`cochrane2023fiscal`. @@ -39,25 +39,25 @@ Elemental forces at work in the fiscal theory of the price level help to underst According to this theory, when the government persistently spends more than it collects in taxes and prints money to finance the shortfall (the "shortfall" is called the "government deficit"), it puts upward pressure on the price level and generates persistent inflation. -The "monetarist" or "fiscal theory of price levels" asserts that +The "monetarist" or "fiscal theory of price levels" asserts that * to _start_ a persistent inflation the government begins persistently to run a money-financed government deficit * to _stop_ a persistent inflation the government stops persistently running a money-financed government deficit -The model in this lecture is a "rational expectations" (or "perfect foresight") version of a model that Philip Cagan {cite}`Cagan` used to study the monetary dynamics of hyperinflations. +The model in this lecture is a "rational expectations" (or "perfect foresight") version of a model that Philip Cagan {cite}`Cagan` used to study the monetary dynamics of hyperinflations. While Cagan didn't use that "rational expectations" version of the model, Thomas Sargent {cite}`sargent1982ends` did when he studied the Ends of Four Big Inflations in Europe after World War I. -* this lecture {doc}`fiscal theory of the price level with adaptive expectations ` describes a version of the model that does not impose "rational expectations" but instead uses +* this lecture {doc}`fiscal theory of the price level with adaptive expectations ` describes a version of the model that does not impose "rational expectations" but instead uses what Cagan and his teacher Milton Friedman called "adaptive expectations" * a reader of both lectures will notice that the algebra is less complicated in the present rational expectations version of the model - * the difference in algebra complications can be traced to the following source: the adaptive expectations version of the model has more endogenous variables and more free parameters + * the difference in algebra complications can be traced to the following source: the adaptive expectations version of the model has more endogenous variables and more free parameters Some of our quantitative experiments with the rational expectations version of the model are designed to illustrate how the fiscal theory explains the abrupt end of those big inflations. -In those experiments, we'll encounter an instance of a "velocity dividend" that has sometimes accompanied successful inflation stabilization programs. +In those experiments, we'll encounter an instance of a "velocity dividend" that has sometimes accompanied successful inflation stabilization programs. To facilitate using linear matrix algebra as our main mathematical tool, we'll use a finite horizon version of the model. @@ -76,8 +76,8 @@ The model consists of * an equilibrium condition that equates the demand for money to the supply * a "perfect foresight" assumption that the public's expected rate of inflation equals the actual rate of inflation. - -To represent the model formally, let + +To represent the model formally, let * $ m_t $ be the log of the supply of nominal money balances; * $\mu_t = m_{t+1} - m_t $ be the net rate of growth of nominal balances; @@ -88,8 +88,8 @@ To represent the model formally, let * $\pi_{T+1}^*$ the terminal rate of inflation between times $T$ and $T+1$. The demand for real balances $\exp\left(m_t^d - p_t\right)$ is governed by the following version of the Cagan demand function - -$$ + +$$ m_t^d - p_t = -\alpha \pi_t^* \: , \: \alpha > 0 ; \quad t = 0, 1, \ldots, T . $$ (eq:caganmd) @@ -101,11 +101,11 @@ problem. This lets us set -$$ -\pi_t^* = \pi_t , % \forall t +$$ +\pi_t^* = \pi_t , % \forall t $$ (eq:ree) -while equating demand for money to supply lets us set $m_t^d = m_t$ for all $t \geq 0$. +while equating demand for money to supply lets us set $m_t^d = m_t$ for all $t \geq 0$. The preceding equations then imply @@ -124,7 +124,7 @@ which we rewrite as a forward-looking first-order linear difference equation in $\pi_s$ with $\mu_s$ as a "forcing variable": $$ -\pi_t = \frac{\alpha}{1+\alpha} \pi_{t+1} + \frac{1}{1+\alpha} \mu_t , \quad t= 0, 1, \ldots , T +\pi_t = \frac{\alpha}{1+\alpha} \pi_{t+1} + \frac{1}{1+\alpha} \mu_t , \quad t= 0, 1, \ldots , T $$ where $ 0< \frac{\alpha}{1+\alpha} <1 $. @@ -144,12 +144,12 @@ $$ \vdots & \vdots & \vdots & \vdots & \vdots & -\delta & 0 \cr 0 & 0 & 0 & 0 & \cdots & 1 & -\delta \cr 0 & 0 & 0 & 0 & \cdots & 0 & 1 \end{bmatrix} -\begin{bmatrix} \pi_0 \cr \pi_1 \cr \pi_2 \cr \vdots \cr \pi_{T-1} \cr \pi_T -\end{bmatrix} -= (1 - \delta) \begin{bmatrix} +\begin{bmatrix} \pi_0 \cr \pi_1 \cr \pi_2 \cr \vdots \cr \pi_{T-1} \cr \pi_T +\end{bmatrix} += (1 - \delta) \begin{bmatrix} \mu_0 \cr \mu_1 \cr \mu_2 \cr \vdots \cr \mu_{T-1} \cr \mu_T \end{bmatrix} -+ \begin{bmatrix} ++ \begin{bmatrix} 0 \cr 0 \cr 0 \cr \vdots \cr 0 \cr \delta \pi_{T+1}^* \end{bmatrix} $$ (eq:pieq) @@ -157,8 +157,8 @@ $$ (eq:pieq) By multiplying both sides of equation {eq}`eq:pieq` by the inverse of the matrix on the left side, we can calculate $$ -\pi \equiv \begin{bmatrix} \pi_0 \cr \pi_1 \cr \pi_2 \cr \vdots \cr \pi_{T-1} \cr \pi_T -\end{bmatrix} +\pi \equiv \begin{bmatrix} \pi_0 \cr \pi_1 \cr \pi_2 \cr \vdots \cr \pi_{T-1} \cr \pi_T +\end{bmatrix} $$ It turns out that @@ -167,9 +167,9 @@ $$ \pi_t = (1-\delta) \sum_{s=t}^T \delta^{s-t} \mu_s + \delta^{T+1-t} \pi_{T+1}^* $$ (eq:fisctheory1) -We can represent the equations +We can represent the equations -$$ +$$ m_{t+1} = m_t + \mu_t , \quad t = 0, 1, \ldots, T $$ @@ -182,20 +182,20 @@ $$ 0 & -1 & 1 & \cdots & 0 & 0 \cr \vdots & \vdots & \vdots & \vdots & 0 & 0 \cr 0 & 0 & 0 & \cdots & 1 & 0 \cr -0 & 0 & 0 & \cdots & -1 & 1 +0 & 0 & 0 & \cdots & -1 & 1 \end{bmatrix} -\begin{bmatrix} +\begin{bmatrix} m_1 \cr m_2 \cr m_3 \cr \vdots \cr m_T \cr m_{T+1} \end{bmatrix} -= \begin{bmatrix} += \begin{bmatrix} \mu_0 \cr \mu_1 \cr \mu_2 \cr \vdots \cr \mu_{T-1} \cr \mu_T \end{bmatrix} -+ \begin{bmatrix} ++ \begin{bmatrix} m_0 \cr 0 \cr 0 \cr \vdots \cr 0 \cr 0 \end{bmatrix} $$ (eq:eq101) -Multiplying both sides of equation {eq}`eq:eq101` with the inverse of the matrix on the left will give +Multiplying both sides of equation {eq}`eq:eq101` with the inverse of the matrix on the left will give $$ m_t = m_0 + \sum_{s=0}^{t-1} \mu_s, \quad t =1, \ldots, T+1 @@ -210,7 +210,7 @@ To determine the continuation inflation rate $\pi_{T+1}^*$ we shall proceed by a version of equation {eq}`eq:fisctheory1` at time $t = T+1$: $$ -\pi_t = (1-\delta) \sum_{s=t}^\infty \delta^{s-t} \mu_s , +\pi_t = (1-\delta) \sum_{s=t}^\infty \delta^{s-t} \mu_s , $$ (eq:fisctheory2) and by also assuming the following continuation path for $\mu_t$ beyond $T$: @@ -221,7 +221,7 @@ $$ Plugging the preceding equation into equation {eq}`eq:fisctheory2` at $t = T+1$ and rearranging we can deduce that -$$ +$$ \pi_{T+1}^* = \frac{1 - \delta}{1 - \delta \gamma^*} \gamma^* \mu_T $$ (eq:piterm) @@ -242,7 +242,7 @@ First, we store parameters in a `namedtuple`: ```{code-cell} ipython3 # Create the rational expectation version of Cagan model in finite time -CaganREE = namedtuple("CaganREE", +CaganREE = namedtuple("CaganREE", ["m0", # initial money supply "μ_seq", # sequence of rate of growth "α", # sensitivity parameter @@ -260,9 +260,9 @@ Now we can solve the model to compute $\pi_t$, $m_t$ and $p_t$ for $t =1, \ldots ```{code-cell} ipython3 def solve(model, T): - m0, π_end, μ_seq, α, δ = (model.m0, model.π_end, + m0, π_end, μ_seq, α, δ = (model.m0, model.π_end, model.μ_seq, model.α, model.δ) - + # Create matrix representation above A1 = np.eye(T+1, T+1) - δ * np.eye(T+1, T+1, k=1) A2 = np.eye(T+1, T+1) - np.eye(T+1, T+1, k=-1) @@ -290,13 +290,13 @@ In devising these experiments, we'll make assumptions about $\{\mu_t\}$ that are We describe several such experiments. -In all of them, +In all of them, -$$ +$$ \mu_t = \mu^* , \quad t \geq T_1 $$ -so that, in terms of our notation and formula for $\pi_{T+1}^*$ above, $\gamma^* = 1$. +so that, in terms of our notation and formula for $\pi_{T+1}^*$ above, $\gamma^* = 1$. #### Experiment 1: Foreseen sudden stabilization @@ -305,7 +305,7 @@ In this experiment, we'll study how, when $\alpha >0$, a foreseen inflation stab We'll study a situation in which the rate of growth of the money supply is $\mu_0$ from $t=0$ to $t= T_1$ and then permanently falls to $\mu^*$ at $t=T_1$. -Thus, let $T_1 \in (0, T)$. +Thus, let $T_1 \in (0, T)$. So where $\mu_0 > \mu^*$, we assume that @@ -316,7 +316,7 @@ $$ \end{cases} $$ -We'll start by executing a version of our "experiment 1" in which the government implements a _foreseen_ sudden permanent reduction in the rate of money creation at time $T_1$. +We'll start by executing a version of our "experiment 1" in which the government implements a _foreseen_ sudden permanent reduction in the rate of money creation at time $T_1$. Let's experiment with the following parameters @@ -352,15 +352,15 @@ plot_sequences(sequences, (r'$\mu$', r'$\pi$', r'$m - p$', r'$m$', r'$p$')) ``` The plot of the money growth rate $\mu_t$ in the top level panel portrays -a sudden reduction from $.5$ to $0$ at time $T_1 = 60$. +a sudden reduction from $.5$ to $0$ at time $T_1 = 60$. This brings about a gradual reduction of the inflation rate $\pi_t$ that precedes the money supply growth rate reduction at time $T_1$. -Notice how the inflation rate declines smoothly (i.e., continuously) to $0$ at $T_1$ -- +Notice how the inflation rate declines smoothly (i.e., continuously) to $0$ at $T_1$ -- unlike the money growth rate, it does not suddenly "jump" downward at $T_1$. -This is because the reduction in $\mu$ at $T_1$ has been foreseen from the start. +This is because the reduction in $\mu$ at $T_1$ has been foreseen from the start. While the log money supply portrayed in the bottom panel has a kink at $T_1$, the log price level does not -- it is "smooth" -- once again a consequence of the fact that the reduction in $\mu$ has been foreseen. @@ -379,15 +379,15 @@ $$ (eq:pformula2) or, by using equation {eq}`eq:fisctheory1`, -$$ -p_t = m_t + \alpha \left[ (1-\delta) \sum_{s=t}^T \delta^{s-t} \mu_s + \delta^{T+1-t} \pi_{T+1}^* \right] +$$ +p_t = m_t + \alpha \left[ (1-\delta) \sum_{s=t}^T \delta^{s-t} \mu_s + \delta^{T+1-t} \pi_{T+1}^* \right] $$ (eq:pfiscaltheory2) -In our next experiment, we'll study a "surprise" permanent change in the money growth that beforehand -was completely unanticipated. +In our next experiment, we'll study a "surprise" permanent change in the money growth that beforehand +was completely unanticipated. At time $T_1$ when the "surprise" money growth rate change occurs, to satisfy -equation {eq}`eq:pformula2`, the log of real balances jumps +equation {eq}`eq:pformula2`, the log of real balances jumps _upward_ as $\pi_t$ jumps _downward_. But in order for $m_t - p_t$ to jump, which variable jumps, $m_{T_1}$ or $p_{T_1}$? @@ -400,8 +400,8 @@ What jumps at $T_1$? Is it $p_{T_1}$ or $m_{T_1}$? -If we insist that the money supply $m_{T_1}$ is locked at its value $m_{T_1}^1$ inherited from the past, then formula {eq}`eq:pformula2` implies that the price level jumps downward at time $T_1$, to coincide with the downward jump in -$\pi_{T_1}$ +If we insist that the money supply $m_{T_1}$ is locked at its value $m_{T_1}^1$ inherited from the past, then formula {eq}`eq:pformula2` implies that the price level jumps downward at time $T_1$, to coincide with the downward jump in +$\pi_{T_1}$ An alternative assumption about the money supply level is that as part of the "inflation stabilization", the government resets $m_{T_1}$ according to @@ -410,7 +410,7 @@ $$ m_{T_1}^2 - m_{T_1}^1 = \alpha (\pi_{T_1}^1 - \pi_{T_1}^2), $$ (eq:eqnmoneyjump) -which describes how the government could reset the money supply at $T_1$ in response to the jump in expected inflation associated with monetary stabilization. +which describes how the government could reset the money supply at $T_1$ in response to the jump in expected inflation associated with monetary stabilization. Doing this would let the price level be continuous at $T_1$. @@ -425,7 +425,7 @@ We have noted that with a constant expected forward sequence $\mu_s = \bar \mu$ A consequence is that at $T_1$, either $m$ or $p$ must "jump" at $T_1$. -We'll study both cases. +We'll study both cases. #### $m_{T_{1}}$ does not jump. @@ -441,10 +441,10 @@ Simply glue the sequences $t\leq T_1$ and $t > T_1$. We reset $m_{T_{1}}$ so that $p_{T_{1}}=\left(m_{T_{1}-1}+\mu_{0}\right)+\alpha\mu_{0}$, with $\pi_{T_{1}}=\mu^{*}$. -Then, +Then, -$$ -m_{T_{1}}=p_{T_{1}}-\alpha\pi_{T_{1}}=\left(m_{T_{1}-1}+\mu_{0}\right)+\alpha\left(\mu_{0}-\mu^{*}\right) +$$ +m_{T_{1}}=p_{T_{1}}-\alpha\pi_{T_{1}}=\left(m_{T_{1}-1}+\mu_{0}\right)+\alpha\left(\mu_{0}-\mu^{*}\right) $$ We then compute for the remaining $T-T_{1}$ periods with $\mu_{s}=\mu^{*},\forall s\geq T_{1}$ and the initial condition $m_{T_{1}}$ from above. @@ -455,29 +455,29 @@ We are now technically equipped to discuss our next experiment. This experiment deviates a little bit from a pure version of our "perfect foresight" assumption by assuming that a sudden permanent reduction in $\mu_t$ like that -analyzed in experiment 1 is completely unanticipated. +analyzed in experiment 1 is completely unanticipated. Such a completely unanticipated shock is popularly known as an "MIT shock". -The mental experiment involves switching at time $T_1$ from an initial "continuation path" for $\{\mu_t, \pi_t\} $ to another path that involves a permanently lower inflation rate. +The mental experiment involves switching at time $T_1$ from an initial "continuation path" for $\{\mu_t, \pi_t\} $ to another path that involves a permanently lower inflation rate. -**Initial Path:** $\mu_t = \mu_0$ for all $t \geq 0$. So this path is for $\{\mu_t\}_{t=0}^\infty$; the associated -path for $\pi_t$ has $\pi_t = \mu_0$. +**Initial Path:** $\mu_t = \mu_0$ for all $t \geq 0$. So this path is for $\{\mu_t\}_{t=0}^\infty$; the associated +path for $\pi_t$ has $\pi_t = \mu_0$. **Revised Continuation Path** Where $ \mu_0 > \mu^*$, we construct a continuation path $\{\mu_s\}_{s=T_1}^\infty$ -by setting $\mu_s = \mu^*$ for all $s \geq T_1$. The perfect foresight continuation path for -$\pi$ is $\pi_s = \mu^*$ +by setting $\mu_s = \mu^*$ for all $s \geq T_1$. The perfect foresight continuation path for +$\pi$ is $\pi_s = \mu^*$ To capture a "completely unanticipated permanent shock to the $\{\mu_t\}$ process at time $T_1$, we simply glue the $\mu_t, \pi_t$ that emerges under path 2 for $t \geq T_1$ to the $\mu_t, \pi_t$ path that had emerged under path 1 for $ t=0, \ldots, T_1 -1$. -We can do the MIT shock calculations mostly by hand. +We can do the MIT shock calculations mostly by hand. Thus, for path 1, $\pi_t = \mu_0 $ for all $t \in [0, T_1-1]$, while for path 2, -$\mu_s = \mu^*$ for all $s \geq T_1$. +$\mu_s = \mu^*$ for all $s \geq T_1$. -We now move on to experiment 2, our "MIT shock", completely unforeseen +We now move on to experiment 2, our "MIT shock", completely unforeseen sudden stabilization. We set this up so that the $\{\mu_t\}$ sequences that describe the sudden stabilization @@ -495,7 +495,7 @@ cm1 = create_cagan_model(μ_seq=μ_seq_2_path1) # continuation path μ_seq_2_cont = μ_star * np.ones(T-T1) -cm2 = create_cagan_model(m0=m_seq_2_path1[T1+1], +cm2 = create_cagan_model(m0=m_seq_2_path1[T1+1], μ_seq=μ_seq_2_cont) π_seq_2_cont, m_seq_2_cont1, p_seq_2_cont1 = solve(cm2, T-1-T1) @@ -503,11 +503,11 @@ cm2 = create_cagan_model(m0=m_seq_2_path1[T1+1], # regime 1 - simply glue π_seq, μ_seq μ_seq_2 = np.concatenate((μ_seq_2_path1[:T1+1], μ_seq_2_cont)) -π_seq_2 = np.concatenate((π_seq_2_path1[:T1+1], +π_seq_2 = np.concatenate((π_seq_2_path1[:T1+1], π_seq_2_cont)) -m_seq_2_regime1 = np.concatenate((m_seq_2_path1[:T1+1], +m_seq_2_regime1 = np.concatenate((m_seq_2_path1[:T1+1], m_seq_2_cont1)) -p_seq_2_regime1 = np.concatenate((p_seq_2_path1[:T1+1], +p_seq_2_regime1 = np.concatenate((p_seq_2_path1[:T1+1], p_seq_2_cont1)) # regime 2 - reset m_T1 @@ -516,7 +516,7 @@ m_T1 = (m_seq_2_path1[T1] + μ0) + cm2.α*(μ0 - μ_star) cm3 = create_cagan_model(m0=m_T1, μ_seq=μ_seq_2_cont) π_seq_2_cont2, m_seq_2_cont2, p_seq_2_cont2 = solve(cm3, T-1-T1) -m_seq_2_regime2 = np.concatenate((m_seq_2_path1[:T1+1], +m_seq_2_regime2 = np.concatenate((m_seq_2_path1[:T1+1], m_seq_2_cont2)) p_seq_2_regime2 = np.concatenate((p_seq_2_path1[:T1+1], p_seq_2_cont2)) @@ -534,13 +534,13 @@ fig, ax = plt.subplots(5, 1, figsize=(5, 12), dpi=200) plot_configs = [ {'data': [(T_seq[:-1], μ_seq_2)], 'ylabel': r'$\mu$'}, {'data': [(T_seq, π_seq_2)], 'ylabel': r'$\pi$'}, - {'data': [(T_seq, m_seq_2_regime1 - p_seq_2_regime1)], + {'data': [(T_seq, m_seq_2_regime1 - p_seq_2_regime1)], 'ylabel': r'$m - p$'}, - {'data': [(T_seq, m_seq_2_regime1, 'Smooth $m_{T_1}$'), - (T_seq, m_seq_2_regime2, 'Jumpy $m_{T_1}$')], + {'data': [(T_seq, m_seq_2_regime1, 'Smooth $m_{T_1}$'), + (T_seq, m_seq_2_regime2, 'Jumpy $m_{T_1}$')], 'ylabel': r'$m$'}, - {'data': [(T_seq, p_seq_2_regime1, 'Smooth $p_{T_1}$'), - (T_seq, p_seq_2_regime2, 'Jumpy $p_{T_1}$')], + {'data': [(T_seq, p_seq_2_regime1, 'Smooth $p_{T_1}$'), + (T_seq, p_seq_2_regime2, 'Jumpy $p_{T_1}$')], 'ylabel': r'$p$'} ] @@ -557,22 +557,22 @@ def experiment_plot(plot_configs, ax): axi.set_xlabel(r'$t$') plt.tight_layout() plt.show() - + experiment_plot(plot_configs, ax) ``` We invite you to compare these graphs with corresponding ones for the foreseen stabilization analyzed in experiment 1 above. -Note how the inflation graph in the second panel is now identical to the +Note how the inflation graph in the second panel is now identical to the money growth graph in the top panel, and how now the log of real balances portrayed in the third panel jumps upward at time $T_1$. The bottom two panels plot $m$ and $p$ under two possible ways that $m_{T_1}$ might adjust -as required by the upward jump in $m - p$ at $T_1$. +as required by the upward jump in $m - p$ at $T_1$. * the orange line lets $m_{T_1}$ jump upward in order to make sure that the log price level $p_{T_1}$ does not fall. * the blue line lets $p_{T_1}$ fall while stopping the money supply from jumping. - + Here is a way to interpret what the government is doing when the orange line policy is in place. The government prints money to finance expenditure with the "velocity dividend" that it reaps from the increased demand for real balances brought about by the permanent decrease in the rate of growth of the money supply. @@ -590,16 +590,16 @@ fig, ax = plt.subplots(5, figsize=(5, 12), dpi=200) plot_configs = [ {'data': [(T_seq[:-1], μ_seq_2)], 'ylabel': r'$\mu$'}, - {'data': [(T_seq, π_seq_2, 'Unforeseen'), - (T_seq, π_seq_1, 'Foreseen')], 'ylabel': r'$p$'}, - {'data': [(T_seq, m_seq_2_regime1 - p_seq_2_regime1, 'Unforeseen'), + {'data': [(T_seq, π_seq_2, 'Unforeseen'), + (T_seq, π_seq_1, 'Foreseen')], 'ylabel': r'$\pi$'}, + {'data': [(T_seq, m_seq_2_regime1 - p_seq_2_regime1, 'Unforeseen'), (T_seq, m_seq_1 - p_seq_1, 'Foreseen')], 'ylabel': r'$m - p$'}, - {'data': [(T_seq, m_seq_2_regime1, 'Unforeseen (Smooth $m_{T_1}$)'), + {'data': [(T_seq, m_seq_2_regime1, 'Unforeseen (Smooth $m_{T_1}$)'), (T_seq, m_seq_2_regime2, 'Unforeseen ($m_{T_1}$ jumps)'), - (T_seq, m_seq_1, 'Foreseen')], 'ylabel': r'$m$'}, - {'data': [(T_seq, p_seq_2_regime1, 'Unforeseen (Smooth $m_{T_1}$)'), + (T_seq, m_seq_1, 'Foreseen')], 'ylabel': r'$m$'}, + {'data': [(T_seq, p_seq_2_regime1, 'Unforeseen (Smooth $m_{T_1}$)'), (T_seq, p_seq_2_regime2, 'Unforeseen ($m_{T_1}$ jumps)'), - (T_seq, p_seq_1, 'Foreseen')], 'ylabel': r'$p$'} + (T_seq, p_seq_1, 'Foreseen')], 'ylabel': r'$p$'} ] experiment_plot(plot_configs, ax) @@ -612,7 +612,7 @@ In particular, in the above graphs, notice how a gradual fall in inflation prece inflation instead falls abruptly when the permanent drop in money supply growth is unanticipated. It seems to the author team at quantecon that the drops in inflation near the ends of the four hyperinflations described in {doc}`this lecture ` -more closely resemble outcomes from the experiment 2 "unforeseen stabilization". +more closely resemble outcomes from the experiment 2 "unforeseen stabilization". (It is fair to say that the preceding informal pattern recognition exercise should be supplemented with a more formal structural statistical analysis.) @@ -627,7 +627,7 @@ Thus, suppose that $\phi \in (0,1)$, that $\mu_0 > \mu^*$, and that for $t = 0, $$ \mu_t = \phi^t \mu_0 + (1 - \phi^t) \mu^* . -$$ +$$ Next we perform an experiment in which there is a perfectly foreseen _gradual_ decrease in the rate of growth of the money supply. @@ -643,9 +643,9 @@ cm4 = create_cagan_model(μ_seq=μ_seq_stab) π_seq_4, m_seq_4, p_seq_4 = solve(cm4, T) -sequences = (μ_seq_stab, π_seq_4, +sequences = (μ_seq_stab, π_seq_4, m_seq_4 - p_seq_4, m_seq_4, p_seq_4) -plot_sequences(sequences, (r'$\mu$', r'$\pi$', +plot_sequences(sequences, (r'$\mu$', r'$\pi$', r'$m - p$', r'$m$', r'$p$')) ``` @@ -683,7 +683,7 @@ fig, ax = plt.subplots() for α in α_vals: cm = create_cagan_model(α=α, μ_seq=μ_seq) π_seq, _, _ = solve(cm, T) - ax.plot(T_seq, π_seq, label=f'α = {α}') + ax.plot(T_seq, π_seq[:-1], label=f'α = {α}') ax.axvline(T1, linestyle='--', color='black', lw=1, label='Stabilization $T_1$') ax.set_xlabel('$t$') @@ -693,11 +693,12 @@ ax.legend() plt.show() ``` -For small $\alpha$, real-balance demand is insensitive to inflation so the model -behaves almost like the exogenous-money case: inflation tracks $\mu_t$ closely -and the anticipation effect is minimal. For large $\alpha$, agents strongly -revalue money in response to expected future inflation, so the announcement of a -future stabilization pulls inflation down gradually, well before $T_1$. +For small $\alpha$, real-balance demand is insensitive to inflation, so +the model behaves almost like the exogenous-money case and inflation tracks $\mu_t$ closely. + +For large $\alpha$, agents strongly revalue money in response to expected +future inflation, so the announcement of a future stabilization pulls +inflation down gradually before $T_1$. ```{solution-end} ``` @@ -734,10 +735,10 @@ T = 80 cm = create_cagan_model(α=α, μ_seq=μ_seq) π_matrix, _, _ = solve(cm, T) +π_matrix = π_matrix[:-1] -# Analytical formula δ = α / (1 + α) -π_term = cm.π_end # terminal condition stored in model +π_term = cm.π_end π_formula = np.array([ (1 - δ) * sum(δ**(s-t) * μ_seq[s] for s in range(t, T+1)) + δ**(T+1-t) * π_term @@ -791,21 +792,19 @@ T1 = 60 α = 5 T_seq = np.arange(T+1) -# Experiment 1: sudden μ_sudden = np.append(μ0 * np.ones(T1+1), μ_star * np.ones(T - T1)) cm_sudden = create_cagan_model(α=α, μ_seq=μ_sudden) π_sudden, _, _ = solve(cm_sudden, T) fig, ax = plt.subplots() -ax.plot(T_seq, π_sudden, lw=2, label='Sudden (Exp. 1)') +ax.plot(T_seq, π_sudden[:-1], lw=2, label='Sudden (Exp. 1)') -# Experiment 3: gradual for ϕ in [0.95, 0.85, 0.70]: μ_grad = np.array([ϕ**t * μ0 + (1 - ϕ**t) * μ_star for t in range(T)]) μ_grad = np.append(μ_grad, μ_star) cm_grad = create_cagan_model(α=α, μ_seq=μ_grad) π_grad, _, _ = solve(cm_grad, T) - ax.plot(T_seq, π_grad, label=f'Gradual ϕ = {ϕ}') + ax.plot(T_seq, π_grad[:-1], label=f'Gradual ϕ = {ϕ}') ax.set_xlabel('$t$') ax.set_ylabel(r'$\pi_t$') @@ -814,11 +813,12 @@ ax.legend() plt.show() ``` -Faster gradual stabilization (smaller $\phi$) pulls $\mu_t$ down more quickly, -so there is less future inflation to discount and $\pi_t$ falls sooner and more -steeply. The sudden stabilization has the largest discontinuity in the path -of $\mu_t$, but because it is fully anticipated the inflation path is smooth -throughout. +Faster gradual stabilization, corresponding to a smaller $\phi$, pulls $\mu_t$ down more quickly. + +With less future inflation to discount, $\pi_t$ falls sooner and more steeply. + +The sudden stabilization has the largest discontinuity in the path of $\mu_t$, +but because it is fully anticipated the inflation path is smooth throughout. ```{solution-end} ``` @@ -849,40 +849,27 @@ T1 = 60 μ_star = 0.0 α = 5 -# Experiment 1: foreseen μ_seq_1 = np.append(μ0 * np.ones(T1+1), μ_star * np.ones(T - T1)) cm1 = create_cagan_model(α=α, μ_seq=μ_seq_1) π_seq_1, m_seq_1, p_seq_1 = solve(cm1, T) -# Experiment 2: unforeseen (at T1 the model is re-solved with the new μ) -# Before T1: agents expect μ0 forever -μ_seq_2a = μ0 * np.ones(T+1) # what agents believed before T1 +μ_seq_2a = μ0 * np.ones(T+1) cm2a = create_cagan_model(α=α, μ_seq=μ_seq_2a) π_pre, m_pre, p_pre = solve(cm2a, T) -# After T1: new μ_star path -μ_seq_2b = np.append(μ0 * np.ones(T1+1), μ_star * np.ones(T - T1)) -# splice: use m from first regime up to T1, then re-solve -m_T1 = m_pre[T1] # money supply at T1 is kept smooth -μ_new = μ_star * np.ones(T - T1) -μ_seq_post = np.append(np.array([μ0] * (T1+1)), μ_new) -cm2b = create_cagan_model(m0=np.exp(m_T1), α=α, - μ_seq=μ_star * np.ones(T+1)) -π_post, m_post, p_post = solve(cm2b, T) - -# For the unforeseen case we use the full μ_seq_2a solution before T1 -# and the updated solution after +μ_seq_2_cont = μ_star * np.ones(T-T1) +cm2b = create_cagan_model(m0=m_pre[T1+1], α=α, + μ_seq=μ_seq_2_cont) +π_post, m_post, p_post = solve(cm2b, T-1-T1) + +m_unforeseen = np.concatenate((m_pre[:T1+1], m_post)) +p_unforeseen = np.concatenate((p_pre[:T1+1], p_post)) T_seq = np.arange(T+1) fig, ax = plt.subplots() -ax.plot(T_seq, m_seq_1 - p_seq_1, label='Foreseen (Exp. 1)') -# approximate unforeseen by splicing pre/post paths -rb_unforeseen = np.concatenate([ - (m_pre - p_pre)[:T1+1], - (m_post - p_post)[1:T - T1 + 1] -]) -ax.plot(np.arange(len(rb_unforeseen)), - rb_unforeseen, '--', label='Unforeseen (Exp. 2, approx.)') +ax.plot(T_seq, (m_seq_1 - p_seq_1)[:-1], label='Foreseen (Exp. 1)') +ax.plot(T_seq, (m_unforeseen - p_unforeseen)[:-1], + '--', label='Unforeseen (Exp. 2)') ax.axvline(T1, linestyle=':', color='black', lw=1) ax.set_xlabel('$t$') ax.set_ylabel('$m_t - p_t$ (log real balances)') @@ -891,12 +878,13 @@ ax.legend() plt.show() ``` -From equation {eq}`eq:caganmd`, $m_t - p_t = -\alpha \pi_t$. In the **foreseen** -case, inflation falls gradually before $T_1$, so real balances rise smoothly as -the public anticipates lower future inflation. In the **unforeseen** case, there -is no pre-announcement effect: real balances are flat until the surprise at $T_1$, -at which point inflation drops abruptly and real balances jump discontinuously -upward — a "velocity dividend" from the surprise stabilization. +From equation {eq}`eq:caganmd`, $m_t - p_t = -\alpha \pi_t$. + +In the foreseen case, inflation falls gradually before $T_1$, so real +balances rise smoothly as the public anticipates lower future inflation. + +In the unforeseen case, there is no pre-announcement effect, so real balances +are flat until the surprise at $T_1$ and then jump upward with the drop in inflation. ```{solution-end} ``` diff --git a/lectures/complex_and_trig.md b/lectures/complex_and_trig.md index 6c6c0f847..b33e88991 100644 --- a/lectures/complex_and_trig.md +++ b/lectures/complex_and_trig.md @@ -569,8 +569,9 @@ $$ = \cos 2\theta + i\sin 2\theta. $$ -Matching real parts: $\cos 2\theta = \cos^2\theta - \sin^2\theta$. -Matching imaginary parts: $\sin 2\theta = 2\sin\theta\cos\theta$. +Matching real parts gives $\cos 2\theta = \cos^2\theta - \sin^2\theta$. + +Matching imaginary parts gives $\sin 2\theta = 2\sin\theta\cos\theta$. Substituting $\sin^2\theta = 1 - \cos^2\theta$ into the cosine formula gives $\cos 2\theta = 2\cos^2\theta - 1$, and substituting $\cos^2\theta = 1 - \sin^2\theta$ @@ -706,6 +707,7 @@ giving a total of 0. **Case $m = n$:** The formula becomes $\cos(m\phi)^2 = \tfrac{1}{2}[1 + \cos(2m\phi)]$. + Since $\int_{-\pi}^{\pi} \cos(2m\phi)\,d\phi = 0$ for non-zero integer $m$, the integral equals $\tfrac{1}{2} \cdot 2\pi = \pi$. @@ -722,11 +724,10 @@ for m in [1, 2, 3]: print(f"{m:>3} {n:>3} {str(val):>10}") ``` -The table confirms the rule: diagonal entries (where $m = n$) all equal $\pi$, -and every off-diagonal entry equals $0$. This orthogonality property is the -foundation of Fourier series: it is why sinusoidal functions at different -frequencies do not "interfere" when we decompose a signal into its frequency -components. +The table confirms the rule that diagonal entries, where $m = n$, all equal $\pi$ and every off-diagonal entry equals $0$. + +This orthogonality property is the foundation of Fourier series because sinusoidal +functions at different frequencies do not "interfere" when we decompose a signal into its frequency components. ```{solution-end} ``` diff --git a/lectures/cons_smooth.md b/lectures/cons_smooth.md index 25613cadb..81b843f4e 100644 --- a/lectures/cons_smooth.md +++ b/lectures/cons_smooth.md @@ -18,20 +18,20 @@ kernelspec: In this lecture, we'll study a famous model of the "consumption function" that Milton Friedman {cite}`Friedman1956` and Robert Hall {cite}`Hall1978`) proposed to fit some empirical data patterns that the original Keynesian consumption function described in this QuantEcon lecture {doc}`geometric series ` missed. -We'll study what is often called the "consumption-smoothing model." +We'll study what is often called the "consumption-smoothing model." -We'll use matrix multiplication and matrix inversion, the same tools that we used in this QuantEcon lecture {doc}`present values `. +We'll use matrix multiplication and matrix inversion, the same tools that we used in this QuantEcon lecture {doc}`present values `. Formulas presented in {doc}`present value formulas` are at the core of the consumption-smoothing model because we shall use them to define a consumer's "human wealth". The key idea that inspired Milton Friedman was that a person's non-financial income, i.e., his or her wages from working, can be viewed as a dividend stream from ''human capital'' -and that standard asset-pricing formulas can be applied to compute -''non-financial wealth'' that capitalizes that earnings stream. +and that standard asset-pricing formulas can be applied to compute +''non-financial wealth'' that capitalizes that earnings stream. ```{note} As we'll see in this QuantEcon lecture {doc}`equalizing difference model `, -Milton Friedman had used this idea in his PhD thesis at Columbia University, +Milton Friedman had used this idea in his PhD thesis at Columbia University, eventually published as {cite}`kuznets1939incomes` and {cite}`friedman1954incomes`. ``` @@ -50,28 +50,28 @@ from collections import namedtuple The model describes a consumer who lives from time $t=0, 1, \ldots, T$, receives a stream $\{y_t\}_{t=0}^T$ of non-financial income and chooses a consumption stream $\{c_t\}_{t=0}^T$. -We usually think of the non-financial income stream as coming from the person's earnings from supplying labor. +We usually think of the non-financial income stream as coming from the person's earnings from supplying labor. -The model takes a non-financial income stream as an input, regarding it as "exogenous" in the sense that it is determined outside the model. +The model takes a non-financial income stream as an input, regarding it as "exogenous" in the sense that it is determined outside the model. The consumer faces a gross interest rate of $R >1$ that is constant over time, at which she is free to borrow or lend, up to limits that we'll describe below. -Let +Let - * $T \geq 2$ be a positive integer that constitutes a time-horizon. - * $y = \{y_t\}_{t=0}^T$ be an exogenous sequence of non-negative non-financial incomes $y_t$. - * $a = \{a_t\}_{t=0}^{T+1}$ be a sequence of financial wealth. - * $c = \{c_t\}_{t=0}^T$ be a sequence of non-negative consumption rates. - * $R \geq 1$ be a fixed gross one period rate of return on financial assets. - * $\beta \in (0,1)$ be a fixed discount factor. + * $T \geq 2$ be a positive integer that constitutes a time-horizon. + * $y = \{y_t\}_{t=0}^T$ be an exogenous sequence of non-negative non-financial incomes $y_t$. + * $a = \{a_t\}_{t=0}^{T+1}$ be a sequence of financial wealth. + * $c = \{c_t\}_{t=0}^T$ be a sequence of non-negative consumption rates. + * $R \geq 1$ be a fixed gross one period rate of return on financial assets. + * $\beta \in (0,1)$ be a fixed discount factor. * $a_0$ be a given initial level of financial assets - * $a_{T+1} \geq 0$ be a terminal condition on final assets. + * $a_{T+1} \geq 0$ be a terminal condition on final assets. The sequence of financial wealth $a$ is to be determined by the model. We require it to satisfy two **boundary conditions**: - * it must equal an exogenous value $a_0$ at time $0$ + * it must equal an exogenous value $a_0$ at time $0$ * it must equal or exceed an exogenous value $a_{T+1}$ at time $T+1$. The **terminal condition** $a_{T+1} \geq 0$ requires that the consumer not leave the model in debt. @@ -85,23 +85,23 @@ $$ a_{t+1} = R (a_t+ y_t - c_t), \quad t =0, 1, \ldots T $$ (eq:a_t) -Equations {eq}`eq:a_t` constitute $T+1$ such budget constraints, one for each $t=0, 1, \ldots, T$. +Equations {eq}`eq:a_t` constitute $T+1$ such budget constraints, one for each $t=0, 1, \ldots, T$. -Given a sequence $y$ of non-financial incomes, a large set of pairs $(a, c)$ of (financial wealth, consumption) sequences satisfy the sequence of budget constraints {eq}`eq:a_t`. +Given a sequence $y$ of non-financial incomes, a large set of pairs $(a, c)$ of (financial wealth, consumption) sequences satisfy the sequence of budget constraints {eq}`eq:a_t`. Our model has the following logical flow. - * start with an exogenous non-financial income sequence $y$, an initial financial wealth $a_0$, and + * start with an exogenous non-financial income sequence $y$, an initial financial wealth $a_0$, and a candidate consumption path $c$. - + * use the system of equations {eq}`eq:a_t` for $t=0, \ldots, T$ to compute a path $a$ of financial wealth - - * verify that $a_{T+1}$ satisfies the terminal wealth constraint $a_{T+1} \geq 0$. - - * If it does, declare that the candidate path is **budget feasible**. - + + * verify that $a_{T+1}$ satisfies the terminal wealth constraint $a_{T+1} \geq 0$. + + * If it does, declare that the candidate path is **budget feasible**. + * if the candidate consumption path is not budget feasible, propose a less greedy consumption path and start over - + Below, we'll describe how to execute these steps using linear algebra -- matrix inversion and multiplication. The above procedure seems like a sensible way to find "budget-feasible" consumption paths $c$, i.e., paths that are consistent @@ -120,33 +120,33 @@ To answer this question, we shall eventually evaluate alternative budget feasibl W = \sum_{t=0}^T \beta^t (g_1 c_t - \frac{g_2}{2} c_t^2 ) ``` -where $g_1 > 0, g_2 > 0$. +where $g_1 > 0, g_2 > 0$. -When $\beta R \approx 1$, the fact that the utility function $g_1 c_t - \frac{g_2}{2} c_t^2$ has diminishing marginal utility imparts a preference for consumption that is very smooth. +When $\beta R \approx 1$, the fact that the utility function $g_1 c_t - \frac{g_2}{2} c_t^2$ has diminishing marginal utility imparts a preference for consumption that is very smooth. Indeed, we shall see that when $\beta R = 1$ (a condition assumed by Milton Friedman {cite}`Friedman1956` and Robert Hall {cite}`Hall1978`), criterion {eq}`welfare` assigns higher welfare to smoother consumption paths. -By **smoother** we mean as close as possible to being constant over time. +By **smoother** we mean as close as possible to being constant over time. The preference for smooth consumption paths that is built into the model gives it the name "consumption-smoothing model". We'll postpone verifying our claim that a constant consumption path is optimal when $\beta R=1$ -by comparing welfare levels that comes from a constant path with ones that involve non-constant paths. +by comparing welfare levels that comes from a constant path with ones that involve non-constant paths. Before doing that, let's dive in and do some calculations that will help us understand how the model works in practice when we provide the consumer with some different streams on non-financial income. -Here we use default parameters $R = 1.05$, $g_1 = 1$, $g_2 = 1/2$, and $T = 65$. +Here we use default parameters $R = 1.05$, $g_1 = 1$, $g_2 = 1/2$, and $T = 65$. We create a Python **namedtuple** to store these parameters with default values. ```{code-cell} ipython3 -ConsumptionSmoothing = namedtuple("ConsumptionSmoothing", +ConsumptionSmoothing = namedtuple("ConsumptionSmoothing", ["R", "g1", "g2", "β_seq", "T"]) def create_consumption_smoothing_model(R=1.05, g1=1, g2=1/2, T=65): β = 1/R β_seq = np.array([β**i for i in range(T+1)]) - return ConsumptionSmoothing(R, g1, g2, + return ConsumptionSmoothing(R, g1, g2, β_seq, T) ``` @@ -160,13 +160,13 @@ h_0 \equiv \sum_{t=0}^T R^{-t} y_t = \begin{bmatrix} 1 & R^{-1} & \cdots & R^{-T \begin{bmatrix} y_0 \cr y_1 \cr \vdots \cr y_T \end{bmatrix} $$ -Human or non-financial wealth at time $0$ is evidently just the present value of the consumer's non-financial income stream $y$. +Human or non-financial wealth at time $0$ is evidently just the present value of the consumer's non-financial income stream $y$. Formally it very much resembles the asset price that we computed in this QuantEcon lecture {doc}`present values `. -Indeed, this is why Milton Friedman called it "human capital". +Indeed, this is why Milton Friedman called it "human capital". -By iterating on equation {eq}`eq:a_t` and imposing the terminal condition +By iterating on equation {eq}`eq:a_t` and imposing the terminal condition $$ a_{T+1} = 0, @@ -174,22 +174,22 @@ $$ it is possible to convert a sequence of budget constraints {eq}`eq:a_t` into a single intertemporal constraint -$$ -\sum_{t=0}^T R^{-t} c_t = a_0 + h_0. +$$ +\sum_{t=0}^T R^{-t} c_t = a_0 + h_0. $$ (eq:budget_intertemp) Equation {eq}`eq:budget_intertemp` says that the present value of the consumption stream equals the sum of financial and non-financial (or human) wealth. -Robert Hall {cite}`Hall1978` showed that when $\beta R = 1$, a condition Milton Friedman had also assumed, it is "optimal" for a consumer to smooth consumption by setting +Robert Hall {cite}`Hall1978` showed that when $\beta R = 1$, a condition Milton Friedman had also assumed, it is "optimal" for a consumer to smooth consumption by setting -$$ +$$ c_t = c_0 \quad t =0, 1, \ldots, T $$ (Later we'll present a "variational argument" that shows that this constant path maximizes criterion {eq}`welfare` when $\beta R =1$.) -In this case, we can use the intertemporal budget constraint to write +In this case, we can use the intertemporal budget constraint to write $$ c_t = c_0 = \left(\sum_{t=0}^T R^{-t}\right)^{-1} (a_0 + h_0), \quad t= 0, 1, \ldots, T. @@ -198,7 +198,7 @@ $$ (eq:conssmoothing) Equation {eq}`eq:conssmoothing` is the consumption-smoothing model in a nutshell. -## Mechanics of consumption-smoothing model +## Mechanics of consumption-smoothing model As promised, we'll provide step-by-step instructions on how to use linear algebra, readily implemented in Python, to compute all objects in play in the consumption-smoothing model. @@ -229,17 +229,17 @@ To do this, we translate that system of difference equations into a single matri $$ -\begin{bmatrix} +\begin{bmatrix} 1 & 0 & 0 & \cdots & 0 & 0 & 0 \cr -R & 1 & 0 & \cdots & 0 & 0 & 0 \cr 0 & -R & 1 & \cdots & 0 & 0 & 0 \cr \vdots &\vdots & \vdots & \cdots & \vdots & \vdots & \vdots \cr 0 & 0 & 0 & \cdots & -R & 1 & 0 \cr 0 & 0 & 0 & \cdots & 0 & -R & 1 -\end{bmatrix} -\begin{bmatrix} a_1 \cr a_2 \cr a_3 \cr \vdots \cr a_T \cr a_{T+1} \end{bmatrix} -= R +\begin{bmatrix} a_1 \cr a_2 \cr a_3 \cr \vdots \cr a_T \cr a_{T+1} +\end{bmatrix} += R \begin{bmatrix} y_0 + a_0 - c_0 \cr y_1 - c_0 \cr y_2 - c_0 \cr \vdots\cr y_{T-1} - c_0 \cr y_T - c_0 \end{bmatrix} $$ @@ -252,12 +252,12 @@ $$ Because we have built into our calculations that the consumer leaves the model with exactly zero assets, just barely satisfying the -terminal condition that $a_{T+1} \geq 0$, it should turn out that +terminal condition that $a_{T+1} \geq 0$, it should turn out that $$ a_{T+1} = 0. $$ - + Let's verify this with Python code. @@ -303,7 +303,7 @@ y_seq = np.concatenate([np.ones(46), np.zeros(20)]) cs_model = create_consumption_smoothing_model() c_seq, a_seq, h0 = compute_optimal(cs_model, a0, y_seq) -print('check a_T+1=0:', +print('check a_T+1=0:', np.abs(a_seq[-1] - 0) <= 1e-8) ``` @@ -352,30 +352,30 @@ First we create a function `plot_cs` that generates graphs for different instan This will help us avoid rewriting code to plot outcomes for different non-financial income sequences. ```{code-cell} ipython3 -def plot_cs(model, # consumption-smoothing model +def plot_cs(model, # consumption-smoothing model a0, # initial financial wealth y_seq # non-financial income process ): - + # Compute optimal consumption c_seq, a_seq, h0 = compute_optimal(model, a0, y_seq) - + # Sequence length T = cs_model.T - + fig, axes = plt.subplots(1, 2, figsize=(12,5)) - + axes[0].plot(range(T+1), y_seq, label='non-financial income', lw=2) axes[0].plot(range(T+1), c_seq, label='consumption', lw=2) axes[1].plot(range(T+2), a_seq, label='financial wealth', color='green', lw=2) axes[0].set_ylabel(r'$c_t,y_t$') axes[1].set_ylabel(r'$a_t$') - + for ax in axes: ax.plot(range(T+2), np.zeros(T+2), '--', lw=1, color='black') ax.legend() ax.set_xlabel(r'$t$') - + plt.show() ``` @@ -383,7 +383,7 @@ In the experiments below, please study how consumption and financial asset seque #### Experiment 1: one-time gain/loss -We first assume a one-time windfall of $W_0$ in year 21 of the income sequence $y$. +We first assume a one-time windfall of $W_0$ in year 21 of the income sequence $y$. We'll make $W_0$ big - positive to indicate a one-time windfall, and negative to indicate a one-time "disaster". @@ -448,7 +448,7 @@ y_0 = 1 t_max = 46 # Generate geometric y sequence -geo_seq = λ ** np.arange(t_max) * y_0 +geo_seq = λ ** np.arange(t_max) * y_0 y_seq_geo = np.concatenate( [geo_seq, np.zeros(20)]) @@ -460,7 +460,7 @@ Now we show the behavior when $\lambda = 0.95$ ```{code-cell} ipython3 λ = 0.95 -geo_seq = λ ** np.arange(t_max) * y_0 +geo_seq = λ ** np.arange(t_max) * y_0 y_seq_geo = np.concatenate( [geo_seq, np.zeros(20)]) @@ -481,13 +481,13 @@ plot_cs(cs_model, a0, y_seq_geo) ### Feasible consumption variations -We promised to justify our claim that when $\beta R =1$ as Friedman assumed, a constant consumption play $c_t = c_0$ for all $t$ is optimal. +We promised to justify our claim that when $\beta R =1$ as Friedman assumed, a constant consumption play $c_t = c_0$ for all $t$ is optimal. Let's do that now. -The approach we'll take is an elementary example of the "calculus of variations". +The approach we'll take is an elementary example of the "calculus of variations". -Let's dive in and see what the key idea is. +Let's dive in and see what the key idea is. To explore what types of consumption paths are welfare-improving, we shall create an **admissible consumption path variation sequence** $\{v_t\}_{t=0}^T$ that satisfies @@ -509,7 +509,7 @@ $$ v_t = \xi_1 \phi^t - \xi_0 $$ -We say two and not three-parameter class because $\xi_0$ will be a function of $(\phi, \xi_1; R)$ that guarantees that the variation sequence is feasible. +We say two and not three-parameter class because $\xi_0$ will be a function of $(\phi, \xi_1; R)$ that guarantees that the variation sequence is feasible. Let's compute that function. @@ -535,9 +535,9 @@ which implies that $$ \xi_0 = \xi_0(\phi, \xi_1; R) = \xi_1 \left(\frac{1 - R^{-1}}{1 - R^{-(T+1)}}\right) \left(\frac{1 - (\phi R^{-1})^{T+1}}{1 - \phi R^{-1}}\right) -$$ +$$ -This is our formula for $\xi_0$. +This is our formula for $\xi_0$. **Key Idea:** if $c^o$ is a budget-feasible consumption path, then so is $c^o + v$, where $v$ is a budget-feasible variation. @@ -553,7 +553,7 @@ def compute_variation(model, ξ1, ϕ, a0, y_seq, verbose=1): ξ0 = ξ1*((1 - 1/R) / (1 - (1/R)**(T+1))) * ((1 - (ϕ/R)**(T+1)) / (1 - ϕ/R)) v_seq = np.array([(ξ1*ϕ**t - ξ0) for t in range(T+1)]) - + if verbose == 1: print('check feasible:', np.isclose(β_seq @ v_seq, 0)) # since β = 1/R @@ -577,20 +577,20 @@ params = np.array(np.meshgrid(ξ1s, ϕs)).T.reshape(-1, 2) for i, param in enumerate(params): ξ1, ϕ = param print(f'variation {i}: ξ1={ξ1}, ϕ={ϕ}') - cvar_seq = compute_variation(model=cs_model, - ξ1=ξ1, ϕ=ϕ, a0=a0, + cvar_seq = compute_variation(model=cs_model, + ξ1=ξ1, ϕ=ϕ, a0=a0, y_seq=y_seq) print(f'welfare={welfare(cs_model, cvar_seq)}') print('-'*64) if i % 2 == 0: ls = '-.' - else: - ls = '-' - ax.plot(range(T+1), cvar_seq, ls=ls, - color=colors[ξ1], + else: + ls = '-' + ax.plot(range(T+1), cvar_seq, ls=ls, + color=colors[ξ1], label=fr'$\xi_1 = {ξ1}, \phi = {ϕ}$') -plt.plot(range(T+1), c_seq, +plt.plot(range(T+1), c_seq, color='orange', label=r'Optimal $\vec{c}$ ') plt.legend() @@ -599,7 +599,7 @@ plt.ylabel(r'$c_t$') plt.show() ``` -We can even use the Python `np.gradient` command to compute derivatives of welfare with respect to our two parameters. +We can even use the Python `np.gradient` command to compute derivatives of welfare with respect to our two parameters. (We are actually discovering the key idea beneath the **calculus of variations**.) @@ -608,13 +608,13 @@ First, we define the welfare with respect to $\xi_1$ and $\phi$ ```{code-cell} ipython3 def welfare_rel(ξ1, ϕ): """ - Compute welfare of variation sequence + Compute welfare of variation sequence for given ϕ, ξ1 with a consumption-smoothing model """ - - cvar_seq = compute_variation(cs_model, ξ1=ξ1, - ϕ=ϕ, a0=a0, - y_seq=y_seq, + + cvar_seq = compute_variation(cs_model, ξ1=ξ1, + ϕ=ϕ, a0=a0, + y_seq=y_seq, verbose=0) return welfare(cs_model, cvar_seq) @@ -661,22 +661,22 @@ plt.show() ## Wrapping up the consumption-smoothing model The consumption-smoothing model of Milton Friedman {cite}`Friedman1956` and Robert Hall {cite}`Hall1978`) is a cornerstone of modern economics that has important ramifications for the size of the Keynesian "fiscal policy multiplier" that we described in -QuantEcon lecture {doc}`geometric series `. +QuantEcon lecture {doc}`geometric series `. The consumption-smoothingmodel **lowers** the government expenditure multiplier relative to one implied by the original Keynesian consumption function presented in {doc}`geometric series `. -Friedman's work opened the door to an enlightening literature on the aggregate consumption function and associated government expenditure multipliers that remains active today. +Friedman's work opened the door to an enlightening literature on the aggregate consumption function and associated government expenditure multipliers that remains active today. ## Appendix: solving difference equations with linear algebra -In the preceding sections we have used linear algebra to solve a consumption-smoothing model. +In the preceding sections we have used linear algebra to solve a consumption-smoothing model. The same tools from linear algebra -- matrix multiplication and matrix inversion -- can be used to study many other dynamic models. We'll conclude this lecture by giving a couple of examples. -We'll describe a useful way of representing and "solving" linear difference equations. +We'll describe a useful way of representing and "solving" linear difference equations. To generate some $y$ vectors, we'll just write down a linear difference equation with appropriate initial conditions and then use linear algebra to solve it. @@ -695,19 +695,19 @@ where $y_0$ is a given initial condition. We can cast this set of $T$ equations as a single matrix equation $$ -\begin{bmatrix} +\begin{bmatrix} 1 & 0 & 0 & \cdots & 0 & 0 \cr -\lambda & 1 & 0 & \cdots & 0 & 0 \cr 0 & -\lambda & 1 & \cdots & 0 & 0 \cr \vdots & \vdots & \vdots & \cdots & \vdots & \vdots \cr -0 & 0 & 0 & \cdots & -\lambda & 1 -\end{bmatrix} +0 & 0 & 0 & \cdots & -\lambda & 1 +\end{bmatrix} \begin{bmatrix} -y_1 \cr y_2 \cr y_3 \cr \vdots \cr y_T +y_1 \cr y_2 \cr y_3 \cr \vdots \cr y_T \end{bmatrix} -= -\begin{bmatrix} -\lambda y_0 \cr 0 \cr 0 \cr \vdots \cr 0 += +\begin{bmatrix} +\lambda y_0 \cr 0 \cr 0 \cr \vdots \cr 0 \end{bmatrix} $$ (eq:first_order_lin_diff) @@ -717,34 +717,34 @@ Multiplying both sides of {eq}`eq:first_order_lin_diff` by the inverse of the ```{math} :label: fst_ord_inverse -\begin{bmatrix} -y_1 \cr y_2 \cr y_3 \cr \vdots \cr y_T -\end{bmatrix} -= -\begin{bmatrix} +\begin{bmatrix} +y_1 \cr y_2 \cr y_3 \cr \vdots \cr y_T +\end{bmatrix} += +\begin{bmatrix} 1 & 0 & 0 & \cdots & 0 & 0 \cr \lambda & 1 & 0 & \cdots & 0 & 0 \cr \lambda^2 & \lambda & 1 & \cdots & 0 & 0 \cr \vdots & \vdots & \vdots & \cdots & \vdots & \vdots \cr -\lambda^{T-1} & \lambda^{T-2} & \lambda^{T-3} & \cdots & \lambda & 1 +\lambda^{T-1} & \lambda^{T-2} & \lambda^{T-3} & \cdots & \lambda & 1 \end{bmatrix} -\begin{bmatrix} -\lambda y_0 \cr 0 \cr 0 \cr \vdots \cr 0 +\begin{bmatrix} +\lambda y_0 \cr 0 \cr 0 \cr \vdots \cr 0 \end{bmatrix} ``` ```{exercise} :label: consmooth_ex1 -To get {eq}`fst_ord_inverse`, we multiplied both sides of {eq}`eq:first_order_lin_diff` by the inverse of the matrix $A$. Please confirm that +To get {eq}`fst_ord_inverse`, we multiplied both sides of {eq}`eq:first_order_lin_diff` by the inverse of the matrix $A$. Please confirm that $$ -\begin{bmatrix} +\begin{bmatrix} 1 & 0 & 0 & \cdots & 0 & 0 \cr \lambda & 1 & 0 & \cdots & 0 & 0 \cr \lambda^2 & \lambda & 1 & \cdots & 0 & 0 \cr \vdots & \vdots & \vdots & \cdots & \vdots & \vdots \cr -\lambda^{T-1} & \lambda^{T-2} & \lambda^{T-3} & \cdots & \lambda & 1 +\lambda^{T-1} & \lambda^{T-2} & \lambda^{T-3} & \cdots & \lambda & 1 \end{bmatrix} $$ @@ -786,24 +786,24 @@ $$ y_{t} = \lambda_1 y_{t-1} + \lambda_2 y_{t-2}, \quad t = 1, 2, \ldots, T $$ -where now $y_0$ and $y_{-1}$ are two given initial equations determined outside the model. +where now $y_0$ and $y_{-1}$ are two given initial equations determined outside the model. As we did with the first-order difference equation, we can cast this set of $T$ equations as a single matrix equation $$ -\begin{bmatrix} +\begin{bmatrix} 1 & 0 & 0 & \cdots & 0 & 0 & 0 \cr -\lambda_1 & 1 & 0 & \cdots & 0 & 0 & 0 \cr -\lambda_2 & -\lambda_1 & 1 & \cdots & 0 & 0 & 0 \cr \vdots & \vdots & \vdots & \cdots & \vdots & \vdots \cr -0 & 0 & 0 & \cdots & -\lambda_2 & -\lambda_1 & 1 -\end{bmatrix} -\begin{bmatrix} -y_1 \cr y_2 \cr y_3 \cr \vdots \cr y_T +0 & 0 & 0 & \cdots & -\lambda_2 & -\lambda_1 & 1 \end{bmatrix} -= -\begin{bmatrix} -\lambda_1 y_0 + \lambda_2 y_{-1} \cr \lambda_2 y_0 \cr 0 \cr \vdots \cr 0 +\begin{bmatrix} +y_1 \cr y_2 \cr y_3 \cr \vdots \cr y_T +\end{bmatrix} += +\begin{bmatrix} +\lambda_1 y_0 + \lambda_2 y_{-1} \cr \lambda_2 y_0 \cr 0 \cr \vdots \cr 0 \end{bmatrix} $$ @@ -950,7 +950,8 @@ print(f'Annuity factor (1 - R⁻¹)/(1 - R⁻⁽ᵀ⁺¹⁾): {annuity:.8f}') print(f'Match: {np.isclose(slope, annuity)}') ``` -The four paths are parallel horizontal lines — all flat but shifted vertically. +The four paths are parallel horizontal lines, all flat but shifted vertically. + The slope of $c_0$ with respect to $a_0$ exactly equals the annuity factor, confirming that an extra dollar of initial wealth is spread evenly over all $T+1$ periods as a constant additional flow. @@ -967,8 +968,9 @@ maximizes welfare {eq}`welfare` among all budget-feasible paths. Using `compute_variation` with $\xi_1 = 0.1$ and the Experiment 1 income sequence ($W_0 = 2.5$ windfall at $t=21$, with $a_0 = -2$): -(a) Compute welfare for the optimal flat path and for variations with - $\phi \in \{0.7,\, 0.9,\, 1.0,\, 1.02,\, 1.1\}$. Print the results in a table. +(a) Compute welfare for the optimal flat path and for variations with $\phi \in \{0.7,\, 0.9,\, 0.98,\, 1.02,\, 1.1\}$. + + Print the results in a table. (b) Plot welfare as a function of $\phi$ on a fine grid in $(0.5, 1.5)$. Mark the welfare of the optimal flat path as a dashed horizontal line and confirm it is @@ -989,7 +991,7 @@ w_opt = welfare(cs_model, c_opt) print(f'Optimal (flat) welfare: {w_opt:.6f}\n') -ϕ_vals = [0.7, 0.9, 1.0, 1.02, 1.1] +ϕ_vals = [0.7, 0.9, 0.98, 1.02, 1.1] print(f'{"ϕ":>6} | {"welfare":>12} | {"vs. optimal":>14}') print('-' * 38) for ϕ in ϕ_vals: @@ -1017,10 +1019,9 @@ ax.legend() plt.show() ``` -Every variation delivers strictly lower welfare than the flat path, and the flat -path sits at the peak of the welfare curve. This numerically confirms the variational -principle: the constant consumption path is the global welfare maximizer when -$\beta R = 1$. +Every non-zero variation in the plotted family delivers strictly lower welfare than the flat path marked by the horizontal dashed line. + +This numerically confirms the variational principle that the constant consumption path is the global welfare maximizer when $\beta R = 1$. ```{solution-end} ``` diff --git a/lectures/eigen_I.md b/lectures/eigen_I.md index 04a221ce8..14aee06cf 100644 --- a/lectures/eigen_I.md +++ b/lectures/eigen_I.md @@ -14,7 +14,7 @@ kernelspec: +++ {"user_expressions": []} (eigen)= -# Eigenvalues and Eigenvectors +# Eigenvalues and Eigenvectors ```{index} single: Eigenvalues and Eigenvectors ``` @@ -23,7 +23,7 @@ kernelspec: Eigenvalues and eigenvectors are a relatively advanced topic in linear algebra. -At the same time, these concepts are extremely useful for +At the same time, these concepts are extremely useful for * economic modeling (especially dynamics!) * statistics @@ -75,7 +75,7 @@ Because $A$ is $n \times m$, it transforms $m$-vectors to $n$-vectors. We can write this formally as $A \colon \mathbb{R}^m \rightarrow \mathbb{R}^n$. -You might argue that if $A$ is a function then we should write +You might argue that if $A$ is a function then we should write $A(x) = y$ rather than $Ax = y$ but the second notation is more conventional. ### Square matrices @@ -110,8 +110,8 @@ $$ Here, the matrix $$ - A = \begin{bmatrix} 2 & 1 \\ - -1 & 1 + A = \begin{bmatrix} 2 & 1 \\ + -1 & 1 \end{bmatrix} $$ @@ -168,7 +168,7 @@ plt.show() +++ {"user_expressions": []} -One way to understand this transformation is that $A$ +One way to understand this transformation is that $A$ * first rotates $x$ by some angle $\theta$ and * then scales it by some scalar $\gamma$ to obtain the image $y$ of $x$. @@ -182,9 +182,9 @@ Let's examine some standard transformations we can perform with matrices. Below we visualize transformations by thinking of vectors as points instead of arrows. -We consider how a given matrix transforms +We consider how a given matrix transforms -* a grid of points and +* a grid of points and * a set of points located on the unit circle in $\mathbb{R}^2$. To build the transformations we will use two functions, called `grid_transform` and `circle_transform`. @@ -286,12 +286,12 @@ def circle_transform(A=np.array([[-1, 2], [0, 1]])): ### Scaling -A matrix of the form +A matrix of the form $$ - \begin{bmatrix} - \alpha & 0 - \\ 0 & \beta + \begin{bmatrix} + \alpha & 0 + \\ 0 & \beta \end{bmatrix} $$ @@ -311,14 +311,14 @@ circle_transform(A) ### Shearing -A "shear" matrix of the form +A "shear" matrix of the form $$ - \begin{bmatrix} - 1 & \lambda \\ - 0 & 1 + \begin{bmatrix} + 1 & \lambda \\ + 0 & 1 \end{bmatrix} -$$ +$$ stretches vectors along the x-axis by an amount proportional to the y-coordinate of a point. @@ -334,12 +334,12 @@ circle_transform(A) ### Rotation -A matrix of the form +A matrix of the form $$ - \begin{bmatrix} - \cos \theta & \sin \theta - \\ - \sin \theta & \cos \theta + \begin{bmatrix} + \cos \theta & \sin \theta + \\ - \sin \theta & \cos \theta \end{bmatrix} $$ is called a _rotation matrix_. @@ -357,14 +357,14 @@ grid_transform(A) ### Permutation -The permutation matrix +The permutation matrix $$ - \begin{bmatrix} - 0 & 1 \\ - 1 & 0 + \begin{bmatrix} + 0 & 1 \\ + 1 & 0 \end{bmatrix} -$$ +$$ interchanges the coordinates of a vector. ```{code-cell} ipython3 @@ -379,26 +379,26 @@ More examples of common transition matrices can be found [here](https://en.wikip ## Matrix multiplication as composition Since matrices act as functions that transform one vector to another, we can -apply the concept of function composition to matrices as well. +apply the concept of function composition to matrices as well. ### Linear compositions -Consider the two matrices +Consider the two matrices $$ - A = - \begin{bmatrix} - 0 & 1 \\ - -1 & 0 + A = + \begin{bmatrix} + 0 & 1 \\ + -1 & 0 \end{bmatrix} \quad \text{and} \quad - B = - \begin{bmatrix} - 1 & 2 \\ - 0 & 1 + B = + \begin{bmatrix} + 1 & 2 \\ + 0 & 1 \end{bmatrix} -$$ +$$ What will the output be when we try to obtain $ABx$ for some $2 \times 1$ vector $x$? @@ -590,7 +590,7 @@ analyzing behavior where we repeatedly apply a fixed matrix. For example, given a vector $v$ and a matrix $A$, we are interested in studying the sequence -$$ +$$ v, \quad Av, \quad AAv = A^2v, \quad \ldots @@ -674,7 +674,7 @@ plot_series(B, v, n) +++ {"user_expressions": []} -Here with each iteration vectors do not tend to get longer or shorter. +Here with each iteration vectors do not tend to get longer or shorter. In this case, repeatedly multiplying a vector by $A$ simply "rotates it around an ellipse". @@ -692,7 +692,7 @@ plot_series(B, v, n) +++ {"user_expressions": []} Here with each iteration vectors tend to get longer, i.e., farther from the -origin. +origin. In this case, repeatedly multiplying a vector by $A$ makes the vector "spiral out". @@ -701,7 +701,7 @@ We thus observe that the sequence $(A^kv)_{k \geq 0}$ behaves differently depend We now discuss the property of A that determines this behavior. (la_eigenvalues)= -## Eigenvalues +## Eigenvalues ```{index} single: Linear Algebra; Eigenvalues ``` @@ -786,7 +786,7 @@ So far our definition of eigenvalues and eigenvectors seems straightforward. There is one complication we haven't mentioned yet: -When solving $Av = \lambda v$, +When solving $Av = \lambda v$, * $\lambda$ is allowed to be a complex number and * $v$ is allowed to be an $n$-vector of complex numbers. @@ -799,7 +799,7 @@ We note some mathematical details for more advanced readers. (Other readers can skip to the next section.) -The eigenvalue equation is equivalent to $(A - \lambda I) v = 0$. +The eigenvalue equation is equivalent to $(A - \lambda I) v = 0$. This equation has a nonzero solution $v$ only when the columns of $A - \lambda I$ are linearly dependent. @@ -814,7 +814,7 @@ in $\lambda$ of degree $n$. This in turn implies the existence of $n$ solutions in the complex plane, although some might be repeated. -### Facts +### Facts Some nice facts about the eigenvalues of a square matrix $A$ are as follows: diff --git a/lectures/eigen_II.md b/lectures/eigen_II.md index ce1c38b12..492bc75d9 100644 --- a/lectures/eigen_II.md +++ b/lectures/eigen_II.md @@ -70,19 +70,19 @@ In other words, for each $i,j$ with $1 \leq i, j \leq n$, there exists a $k \geq Here are some examples to illustrate this further: $$ -A = \begin{bmatrix} 0.5 & 0.1 \\ - 0.2 & 0.2 +A = \begin{bmatrix} 0.5 & 0.1 \\ + 0.2 & 0.2 \end{bmatrix} $$ $A$ is irreducible since $a_{ij}>0$ for all $(i,j)$. $$ -B = \begin{bmatrix} 0 & 1 \\ - 1 & 0 +B = \begin{bmatrix} 0 & 1 \\ + 1 & 0 \end{bmatrix} , \quad -B^2 = \begin{bmatrix} 1 & 0 \\ +B^2 = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} $$ @@ -90,8 +90,8 @@ $$ $B$ is irreducible since $B + B^2$ is a matrix of ones. $$ -C = \begin{bmatrix} 1 & 0 \\ - 0 & 1 +C = \begin{bmatrix} 1 & 0 \\ + 0 & 1 \end{bmatrix} $$ @@ -233,19 +233,19 @@ A matrix is called **primitive** if there exists a $k \in \mathbb{N}$ such that Recall the examples given in irreducible matrices: $$ -A = \begin{bmatrix} 0.5 & 0.1 \\ - 0.2 & 0.2 +A = \begin{bmatrix} 0.5 & 0.1 \\ + 0.2 & 0.2 \end{bmatrix} $$ $A$ here is also a primitive matrix since $A^k$ is everywhere positive for some $k \in \mathbb{N}$. $$ -B = \begin{bmatrix} 0 & 1 \\ - 1 & 0 +B = \begin{bmatrix} 0 & 1 \\ + 1 & 0 \end{bmatrix} , \quad -B^2 = \begin{bmatrix} 1 & 0 \\ +B^2 = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} $$ diff --git a/lectures/equalizing_difference.md b/lectures/equalizing_difference.md index a2a32271d..43e4a0af3 100644 --- a/lectures/equalizing_difference.md +++ b/lectures/equalizing_difference.md @@ -20,11 +20,11 @@ This lecture presents a model of the college-high-school wage gap in which the Milton Friedman invented the model to study whether differences in earnings of US dentists and doctors were outcomes of competitive labor markets or whether -they reflected entry barriers imposed by governments working in conjunction with doctors' professional organizations. +they reflected entry barriers imposed by governments working in conjunction with doctors' professional organizations. Chapter 4 of Jennifer Burns {cite}`Burns_2023` describes Milton Friedman's joint work with Simon Kuznets that eventually led to the publication of {cite}`kuznets1939incomes` and {cite}`friedman1954incomes`. -To map Friedman's application into our model, think of our high school students as Friedman's dentists and our college graduates as Friedman's doctors. +To map Friedman's application into our model, think of our high school students as Friedman's dentists and our college graduates as Friedman's doctors. Our presentation is "incomplete" in the sense that it is based on a single equation that would be part of set equilibrium conditions of a more fully articulated model. @@ -35,11 +35,11 @@ The idea is that lifetime earnings somehow adjust to make a new high school wor (The job of the "other equations" in a more complete model would be to describe what adjusts to bring about this outcome.) -Our model is just one example of an "equalizing difference" theory of relative wage rates, a class of theories dating back at least to Adam Smith's **Wealth of Nations** {cite}`smith2010wealth`. +Our model is just one example of an "equalizing difference" theory of relative wage rates, a class of theories dating back at least to Adam Smith's **Wealth of Nations** {cite}`smith2010wealth`. For most of this lecture, the only mathematical tools that we'll use are from linear algebra, in particular, matrix multiplication and matrix inversion. -However, near the end of the lecture, we'll use calculus just in case readers want to see how computing partial derivatives could let us present some findings more concisely. +However, near the end of the lecture, we'll use calculus just in case readers want to see how computing partial derivatives could let us present some findings more concisely. And doing that will let illustrate how good Python is at doing calculus! @@ -63,18 +63,18 @@ Let * $R > 1$ be the gross rate of return on a one-period bond * $t = 0, 1, 2, \ldots T$ denote the years that a person either works or attends college - + * $0$ denote the first period after high school that a person can work if he does not go to college - + * $T$ denote the last period that a person works - + * $w_t^h$ be the wage at time $t$ of a high school graduate - + * $w_t^c$ be the wage at time $t$ of a college graduate - + * $\gamma_h > 1$ be the (gross) rate of growth of wages of a high school graduate, so that $ w_t^h = w_0^h \gamma_h^t$ - + * $\gamma_c > 1$ be the (gross) rate of growth of wages of a college graduate, so that $ w_t^c = w_0^c \gamma_c^t$ @@ -90,10 +90,10 @@ We now compute present values that a new high school graduate earns if If someone goes to work immediately after high school and works for the $T+1$ years $t=0, 1, 2, \ldots, T$, she earns present value $$ -h_0 = \sum_{t=0}^T R^{-t} w_t^h = w_0^h \left[ \frac{1 - (R^{-1} \gamma_h)^{T+1} }{1 - R^{-1} \gamma_h } \right] \equiv w_0^h A_h +h_0 = \sum_{t=0}^T R^{-t} w_t^h = w_0^h \left[ \frac{1 - (R^{-1} \gamma_h)^{T+1} }{1 - R^{-1} \gamma_h } \right] \equiv w_0^h A_h $$ -where +where $$ A_h = \left[ \frac{1 - (R^{-1} \gamma_h)^{T+1} }{1 - R^{-1} \gamma_h } \right]. @@ -114,7 +114,7 @@ where $$ A_c = (R^{-1} \gamma_c)^4 \left[ \frac{1 - (R^{-1} \gamma_c)^{T-3} }{1 - R^{-1} \gamma_c } \right] . -$$ +$$ The present value $c_0$ is the "human wealth" at the beginning of time $0$ of someone who chooses to attend college for four years and then start to work at time $t=4$ at the wage of a college graduate. @@ -123,29 +123,29 @@ Assume that college tuition plus four years of room and board amount to $D$ and So net of monetary cost of college, the present value of attending college as of the first period after high school is -$$ +$$ c_0 - D $$ -We now formulate a pure **equalizing difference** model of the initial college-high school wage gap $\phi$ that verifies +We now formulate a pure **equalizing difference** model of the initial college-high school wage gap $\phi$ that verifies $$ -w_0^c = \phi w_0^h +w_0^c = \phi w_0^h $$ -We suppose that $R, \gamma_h, \gamma_c, T$ and also $w_0^h$ are fixed parameters. +We suppose that $R, \gamma_h, \gamma_c, T$ and also $w_0^h$ are fixed parameters. -We start by noting that the pure equalizing difference model asserts that the college-high-school wage gap $\phi$ solves an +We start by noting that the pure equalizing difference model asserts that the college-high-school wage gap $\phi$ solves an "equalizing" equation that sets the present value not going to college equal to the present value of going to college: $$ h_0 = c_0 - D -$$ +$$ or -$$ +$$ w_0^h A_h = \phi w_0^h A_c - D . $$ (eq:equalize) @@ -159,12 +159,12 @@ $$ (eq:wagepremium) In a **free college** special case $D =0$. -Here the only cost of going to college is the forgone earnings from being a high school educated worker. +Here the only cost of going to college is the forgone earnings from being a high school educated worker. In that case, $$ -\phi = \frac{A_h}{A_c} . +\phi = \frac{A_h}{A_c} . $$ In the next section we'll write Python code to compute $\phi$ and plot it as a function of its determinants. @@ -188,16 +188,16 @@ def create_edm(R=1.05, # gross rate of return w_h0=1, # initial wage (high school) D=10, # cost for college ): - + return EqDiffModel(R, T, γ_h, γ_c, w_h0, D) def compute_gap(model): R, T, γ_h, γ_c, w_h0, D = model - + A_h = (1 - (γ_h/R)**(T+1)) / (1 - γ_h/R) A_c = (1 - (γ_c/R)**(T-3)) / (1 - γ_c/R) * (γ_c/R)**4 ϕ = A_h / A_c + D / (w_h0 * A_c) - + return ϕ ``` @@ -226,7 +226,7 @@ gap2 = compute_gap(ex2) gap2 ``` -Let us construct some graphs that show us how the initial college-high-school wage ratio $\phi$ would change if one of its determinants were to change. +Let us construct some graphs that show us how the initial college-high-school wage ratio $\phi$ would change if one of its determinants were to change. Let's start with the gross interest rate $R$. @@ -243,7 +243,7 @@ plt.show() Evidently, the initial wage ratio $\phi$ must rise to compensate a prospective high school student for **waiting** to start receiving income -- remember that while she is earning nothing in years $t=0, 1, 2, 3$, the high school worker is earning a salary. -Not let's study what happens to the initial wage ratio $\phi$ if the rate of growth of college wages rises, holding constant other +Not let's study what happens to the initial wage ratio $\phi$ if the rate of growth of college wages rises, holding constant other determinants of $\phi$. ```{code-cell} ipython3 @@ -257,11 +257,11 @@ plt.ylabel(r'wage gap') plt.show() ``` -Notice how the initial wage gap falls when the rate of growth $\gamma_c$ of college wages rises. +Notice how the initial wage gap falls when the rate of growth $\gamma_c$ of college wages rises. The wage gap falls to "equalize" the present values of the two types of career, one as a high school worker, the other as a college worker. -Can you guess what happens to the initial wage ratio $\phi$ when next we vary the rate of growth of high school wages, holding all other determinants of $\phi$ constant? +Can you guess what happens to the initial wage ratio $\phi$ when next we vary the rate of growth of high school wages, holding all other determinants of $\phi$ constant? The following graph shows what happens. @@ -290,15 +290,15 @@ $$ where $\pi \in (0,1) $ is the probability that an entrepreneur's "project" succeeds. -For our model of workers and firms, we'll interpret $D$ as the cost of becoming an entrepreneur. +For our model of workers and firms, we'll interpret $D$ as the cost of becoming an entrepreneur. -This cost might include costs of hiring workers, office space, and lawyers. +This cost might include costs of hiring workers, office space, and lawyers. What we used to call the college, high school wage gap $\phi$ now becomes the ratio -of a successful entrepreneur's earnings to a worker's earnings. +of a successful entrepreneur's earnings to a worker's earnings. We'll find that as $\pi$ decreases, $\phi$ increases, indicating that the riskier it is to -be an entrepreneur, the higher must be the reward for a successful project. +be an entrepreneur, the higher must be the reward for a successful project. Now let's adopt the entrepreneur-worker interpretation of our model @@ -314,19 +314,19 @@ def create_edm_π(R=1.05, # gross rate of return D=10, # cost for college π=0 # chance of business success ): - + return EqDiffModel(R, T, γ_h, γ_c, w_h0, D, π) def compute_gap(model): R, T, γ_h, γ_c, w_h0, D, π = model - + A_h = (1 - (γ_h/R)**(T+1)) / (1 - γ_h/R) A_c = (1 - (γ_c/R)**(T-3)) / (1 - γ_c/R) * (γ_c/R)**4 - + # Incorprate chance of success A_c = π * A_c - + ϕ = A_h / A_c + D / (w_h0 * A_c) return ϕ ``` @@ -367,7 +367,7 @@ We'll do that now. A reader who doesn't know calculus could read no further and feel confident that applying linear algebra has taught us the main properties of the model. -But for a reader interested in how we can get Python to do all the hard work involved in computing partial derivatives, we'll say a few things about that now. +But for a reader interested in how we can get Python to do all the hard work involved in computing partial derivatives, we'll say a few things about that now. We'll use the Python module 'sympy' to compute partial derivatives of $\phi$ with respect to the parameters that determine it. @@ -440,7 +440,7 @@ Compute $\frac{\partial \phi}{\partial T}$ and evaluate it at default parameters ϕ_T_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value) ``` -We find that raising $T$ decreases the initial college wage premium $\phi$. +We find that raising $T$ decreases the initial college wage premium $\phi$. This is because college graduates now have longer career lengths to "pay off" the time and other costs they paid to go to college @@ -578,8 +578,9 @@ plt.show() ``` As $T$ rises, college graduates have more years over which to "recoup" the cost -of their four-year delay in starting work: $A_c$ grows faster than $A_h$ because -the 4-year discount factor $(R^{-1}\gamma_c)^4$ is amortised over more periods. +of their four-year delay in starting work because $A_c$ grows faster than $A_h$ +when the 4-year discount factor $(R^{-1}\gamma_c)^4$ is amortised over more periods. + This shrinks $A_h/A_c$ and therefore $\phi$. ```{solution-end} @@ -636,8 +637,7 @@ following questions. function of the success probability $\pi \in [0.10, 1.00]$. Mark the horizontal line $\phi = 2$ as a dashed line. -(b) At what approximate value of $\pi$ does the premium first exceed 2? Find - this threshold by scanning the grid. +(b) At what approximate value of $\pi$ does the premium cross 2, and for which side of that threshold is the premium above 2? (c) Explain intuitively why the premium rises as $\pi \to 0$. ``` @@ -649,7 +649,7 @@ following questions. ```{code-cell} ipython3 π_arr = np.linspace(0.10, 1.00, 200) # create_edm_π and compute_gap are already defined in this lecture -ϕ_arr_π = [compute_gap(create_edm_π(π=p)) for p in π_arr] +ϕ_arr_π = np.array([compute_gap(create_edm_π(π=p)) for p in π_arr]) fig, ax = plt.subplots() ax.plot(π_arr, ϕ_arr_π, label=r'$\phi(\pi)$') @@ -660,9 +660,12 @@ ax.set_title('Entrepreneur premium vs success probability') ax.legend() plt.show() -# Find threshold -threshold_idx = next(i for i, v in enumerate(ϕ_arr_π) if v > 2) -print(f'Premium first exceeds 2 at π ≈ {π_arr[threshold_idx]:.3f}') +# Interpolate the crossing on the decreasing curve ϕ(π) +crossing = np.interp(2, ϕ_arr_π[::-1], π_arr[::-1]) +above_idx = np.where(ϕ_arr_π > 2)[0] + +print(f'Premium equals 2 at π ≈ {crossing:.3f}') +print(f'On the grid, premium exceeds 2 for π below about {π_arr[above_idx[-1]]:.3f}') ``` As $\pi \to 0$ the expected lifetime earnings of an entrepreneur approach zero diff --git a/lectures/french_rev.md b/lectures/french_rev.md index b60777589..4e5e238f2 100644 --- a/lectures/french_rev.md +++ b/lectures/french_rev.md @@ -11,14 +11,14 @@ kernelspec: name: python3 --- -# Inflation During French Revolution +# Inflation During French Revolution -## Overview +## Overview This lecture describes some of the monetary and fiscal features of the French Revolution (1789-1799) described by {cite}`sargent_velde1995`. -To finance public expenditures and service its debts, +To finance public expenditures and service its debts, the French government embarked on policy experiments. The authors of these experiments had in mind theories about how government monetary and fiscal policies affected economic outcomes. @@ -30,29 +30,29 @@ Some of those theories about monetary and fiscal policies still interest us toda * this normative (i.e., prescriptive model) advises a government to finance temporary war-time surges in expenditures mostly by issuing government debt, raising taxes by just enough to service the additional debt issued during the wary; then, after the war, to roll over whatever debt the government had accumulated during the war; and to increase taxes after the war permanently by just enough to finance interest payments on that post-war government debt * **unpleasant monetarist arithmetic** like that described in this quanteon lecture {doc}`unpleasant` - - * mathematics involving compound interest governed French government debt dynamics in the decades preceding 1789; according to leading historians, that arithmetic set the stage for the French Revolution + + * mathematics involving compound interest governed French government debt dynamics in the decades preceding 1789; according to leading historians, that arithmetic set the stage for the French Revolution * a *real bills* theory of the effects of government open market operations in which the government *backs* new issues of paper money with government holdings of valuable real property or financial assets that holders of money can purchase from the government in exchange for their money. * The Revolutionaries learned about this theory from Adam Smith's 1776 book The Wealth of Nations {cite}`smith2010wealth` and other contemporary sources - * It shaped how the Revolutionaries issued a paper money called **assignats** from 1789 to 1791 + * It shaped how the Revolutionaries issued a paper money called **assignats** from 1789 to 1791 * a classical **gold** or **silver standard** - + * Napoleon Bonaparte became head of the French government in 1799. He used this theory to guide his monetary and fiscal policies * a classical **inflation-tax** theory of inflation in which Philip Cagan's ({cite}`Cagan`) demand for money studied in this lecture {doc}`cagan_ree` is a key component - * This theory helps explain French price level and money supply data from 1794 to 1797 + * This theory helps explain French price level and money supply data from 1794 to 1797 -* a **legal restrictions** or **financial repression** theory of the demand for real balances - - * The Twelve Members comprising the Committee of Public Safety who adminstered the Terror from June 1793 to July 1794 used this theory to shape their monetary policy +* a **legal restrictions** or **financial repression** theory of the demand for real balances -We use matplotlib to replicate several of the graphs with which {cite}`sargent_velde1995` portrayed outcomes of these experiments + * The Twelve Members comprising the Committee of Public Safety who adminstered the Terror from June 1793 to July 1794 used this theory to shape their monetary policy + +We use matplotlib to replicate several of the graphs with which {cite}`sargent_velde1995` portrayed outcomes of these experiments ## Data Sources @@ -98,15 +98,15 @@ mystnb: name: fr_fig4 --- # Read the data from Excel file -data2 = pd.read_excel(dette_url, - sheet_name='Militspe', usecols='M:X', +data2 = pd.read_excel(dette_url, + sheet_name='Militspe', usecols='M:X', skiprows=7, nrows=102, header=None) # French military spending, 1685-1789, in 1726 livres -data4 = pd.read_excel(dette_url, - sheet_name='Militspe', usecols='D', +data4 = pd.read_excel(dette_url, + sheet_name='Militspe', usecols='D', skiprows=3, nrows=105, header=None).squeeze() - + years = range(1685, 1790) plt.figure() @@ -133,7 +133,7 @@ Britain won the first three wars and lost the fourth. Each of those wars produced surges in both countries' government expenditures that each country somehow had to finance. Figure {numref}`fr_fig4` shows surges in military expenditures in France (in blue) and Great Britain. -during those four wars. +during those four wars. A remarkable aspect of figure {numref}`fr_fig4` is that despite having a population less than half of France's, Britain was able to finance military expenses of about the same amounts as France's. @@ -147,7 +147,7 @@ mystnb: name: fr_fig2 --- # Read the data from Excel file -data2 = pd.read_excel(dette_url, sheet_name='Militspe', usecols='M:X', +data2 = pd.read_excel(dette_url, sheet_name='Militspe', usecols='M:X', skiprows=7, nrows=102, header=None) # Plot the data @@ -155,7 +155,7 @@ plt.figure() plt.plot(range(1689, 1791), data2.iloc[:, 5], linewidth=0.8) plt.plot(range(1689, 1791), data2.iloc[:, 11], linewidth=0.8, color='red') plt.plot(range(1689, 1791), data2.iloc[:, 9], linewidth=0.8, color='orange') -plt.plot(range(1689, 1791), data2.iloc[:, 8], 'o-', +plt.plot(range(1689, 1791), data2.iloc[:, 8], 'o-', markerfacecolor='none', linewidth=0.8, color='purple') # Customize the plot @@ -180,11 +180,11 @@ Figures {numref}`fr_fig2` and {numref}`fr_fig3` summarize British and French g Before 1789, progressive forces in France admired how Britain had financed its government expenditures and wanted to redesign French fiscal arrangements to make them more like Britain's. -Figure {numref}`fr_fig2` shows government expenditures and how it was distributed among expenditures for +Figure {numref}`fr_fig2` shows government expenditures and how it was distributed among expenditures for * civil (non-military) activities - * debt service, i.e., interest payments - * military expenditures (the yellow line minus the red line) + * debt service, i.e., interest payments + * military expenditures (the yellow line minus the red line) Figure {numref}`fr_fig2` also plots total government revenues from tax collections (the purple circled line) @@ -205,9 +205,9 @@ Figure {numref}`fr_fig2` indicates that * thus, after a war, the government does *not* raise taxes by enough to pay off its debt * instead, it just rolls over whatever debt it inherits, raising taxes by just enough to service the interest payments on that debt -Eighteenth-century British fiscal policy portrayed Figure {numref}`fr_fig2` thus looks very much like a text-book example of a *tax-smoothing* model like Robert Barro's {cite}`Barro1979`. +Eighteenth-century British fiscal policy portrayed Figure {numref}`fr_fig2` thus looks very much like a text-book example of a *tax-smoothing* model like Robert Barro's {cite}`Barro1979`. -A striking feature of the graph is what we'll label a *law of gravity* between tax collections and government expenditures. +A striking feature of the graph is what we'll label a *law of gravity* between tax collections and government expenditures. * levels of government expenditures at taxes attract each other * while they can temporarily differ -- as they do during wars -- they come back together when peace returns @@ -224,9 +224,9 @@ mystnb: name: fr_fig1 --- # Read the data from the Excel file -data1 = pd.read_excel(dette_url, sheet_name='Debt', +data1 = pd.read_excel(dette_url, sheet_name='Debt', usecols='R:S', skiprows=5, nrows=99, header=None) -data1a = pd.read_excel(dette_url, sheet_name='Debt', +data1a = pd.read_excel(dette_url, sheet_name='Debt', usecols='P', skiprows=89, nrows=15, header=None) # Plot the data @@ -235,7 +235,7 @@ plt.plot(range(1690, 1789), 100 * data1.iloc[:, 1], linewidth=0.8) date = np.arange(1690, 1789) index = (date < 1774) & (data1.iloc[:, 0] > 0) -plt.plot(date[index], 100 * data1[index].iloc[:, 0], +plt.plot(date[index], 100 * data1[index].iloc[:, 0], '*:', color='r', linewidth=0.8) # Plot the additional data @@ -254,15 +254,15 @@ plt.tight_layout() plt.show() ``` -Figure {numref}`fr_fig1` shows that interest payments on government debt (i.e., so-called ''debt service'') were high fractions of government tax revenues in both Great Britain and France. +Figure {numref}`fr_fig1` shows that interest payments on government debt (i.e., so-called ''debt service'') were high fractions of government tax revenues in both Great Britain and France. -{numref}`fr_fig2` showed us that in peace times Britain managed to balance its budget despite those large interest costs. +{numref}`fr_fig2` showed us that in peace times Britain managed to balance its budget despite those large interest costs. But as we'll see in our next graph, on the eve of the French Revolution in 1788, the fiscal *law of gravity* that worked so well in Britain did not working very well in France. ```{code-cell} ipython3 # Read the data from the Excel file -data1 = pd.read_excel(fig_3_url, sheet_name='Sheet1', +data1 = pd.read_excel(fig_3_url, sheet_name='Sheet1', usecols='C:F', skiprows=5, nrows=30, header=None) data1.replace(0, np.nan, inplace=True) @@ -280,7 +280,7 @@ plt.figure() plt.plot(range(1759, 1789, 1), data1.iloc[:, 0], '-x', linewidth=0.8) plt.plot(range(1759, 1789, 1), data1.iloc[:, 1], '--*', linewidth=0.8) -plt.plot(range(1759, 1789, 1), data1.iloc[:, 2], +plt.plot(range(1759, 1789, 1), data1.iloc[:, 2], '-o', linewidth=0.8, markerfacecolor='none') plt.plot(range(1759, 1789, 1), data1.iloc[:, 3], '-*', linewidth=0.8) @@ -299,13 +299,13 @@ plt.tight_layout() plt.show() ``` -{numref}`fr_fig3` shows that on the eve of the French Revolution in 1788, government expenditures exceeded tax revenues. +{numref}`fr_fig3` shows that on the eve of the French Revolution in 1788, government expenditures exceeded tax revenues. -Especially during and after France's expenditures to help the Americans in their War of Independence from Great Britain, growing government debt service (i.e., interest payments) -contributed to this situation. +Especially during and after France's expenditures to help the Americans in their War of Independence from Great Britain, growing government debt service (i.e., interest payments) +contributed to this situation. -This was partly a consequence of the unfolding of the debt dynamics that underlies the Unpleasant Arithmetic discussed in this quantecon lecture {doc}`unpleasant`. +This was partly a consequence of the unfolding of the debt dynamics that underlies the Unpleasant Arithmetic discussed in this quantecon lecture {doc}`unpleasant`. {cite}`sargent_velde1995` describe how the Ancient Regime that until 1788 had governed France had stable institutional features that made it difficult for the government to balance its budget. @@ -314,7 +314,7 @@ Powerful contending interests had prevented from the government from closing the total expenditures and its tax revenues by either * raising taxes, or - * lowering government's non-debt service (i.e., non-interest) expenditures, or + * lowering government's non-debt service (i.e., non-interest) expenditures, or * lowering debt service (i.e., interest) costs by rescheduling, i.e., defaulting on some debts Precedents and prevailing French arrangements had empowered three constituencies to block adjustments to components of the government budget constraint that they cared especially about @@ -324,20 +324,20 @@ Precedents and prevailing French arrangements had empowered three constituencies * government creditors (i.e., owners of government bonds) When the French government had confronted a similar situation around 1720 after King Louis XIV's -Wars had left it with a debt crisis, it had sacrificed the interests of +Wars had left it with a debt crisis, it had sacrificed the interests of government creditors, i.e., by defaulting enough of its debt to bring reduce interest payments down enough to balance the budget. Somehow, in 1789, creditors of the French government were more powerful than they had been in 1720. Therefore, King Louis XVI convened the Estates General together to ask them to redesign the French constitution in a way that would lower government expenditures or increase taxes, thereby -allowing him to balance the budget while also honoring his promises to creditors of the French government. +allowing him to balance the budget while also honoring his promises to creditors of the French government. The King called the Estates General together in an effort to promote the reforms that would -would bring sustained budget balance. +would bring sustained budget balance. {cite}`sargent_velde1995` describe how the French Revolutionaries set out to accomplish that. -## Nationalization, Privatization, Debt Reduction +## Nationalization, Privatization, Debt Reduction In 1789, the Revolutionaries quickly reorganized the Estates General into a National Assembly. @@ -345,53 +345,53 @@ A first piece of business was to address the fiscal crisis, the situation that h The Revolutionaries were not socialists or communists. -To the contrary, they respected private property and knew state-of-the-art economics. +To the contrary, they respected private property and knew state-of-the-art economics. They knew that to honor government debts, they would have to raise new revenues or reduce expenditures. -A coincidence was that the Catholic Church owned vast income-producing properties. +A coincidence was that the Catholic Church owned vast income-producing properties. -Indeed, the capitalized value of those income streams put estimates of the value of church lands at -about the same amount as the entire French government debt. +Indeed, the capitalized value of those income streams put estimates of the value of church lands at +about the same amount as the entire French government debt. This coincidence fostered a three step plan for servicing the French government debt * nationalize the church lands -- i.e., sequester or confiscate it without paying for it - * sell the church lands + * sell the church lands * use the proceeds from those sales to service or even retire French government debt The monetary theory underlying this plan had been set out by Adam Smith in his analysis of what he called *real bills* in his 1776 book **The Wealth of Nations** {cite}`smith2010wealth`, which many of the revolutionaries had read. -Adam Smith defined a *real bill* as a paper money note that is backed by a claims on a real asset like productive capital or inventories. +Adam Smith defined a *real bill* as a paper money note that is backed by a claims on a real asset like productive capital or inventories. The National Assembly put together an ingenious institutional arrangement to implement this plan. In response to a motion by Catholic Bishop Talleyrand (an atheist), -the National Assembly confiscated and nationalized Church lands. +the National Assembly confiscated and nationalized Church lands. The National Assembly intended to use earnings from Church lands to service its national debt. To do this, it began to implement a ''privatization plan'' that would let it service its debt while not raising taxes. -Their plan involved issuing paper notes called ''assignats'' that entitled bearers to use them to purchase state lands. +Their plan involved issuing paper notes called ''assignats'' that entitled bearers to use them to purchase state lands. -These paper notes would be ''as good as silver coins'' in the sense that both were acceptable means of payment in exchange for those (formerly) church lands. +These paper notes would be ''as good as silver coins'' in the sense that both were acceptable means of payment in exchange for those (formerly) church lands. Finance Minister Necker and the Constituents of the National Assembly thus planned to solve the privatization problem *and* the debt problem simultaneously -by creating a new currency. +by creating a new currency. They devised a scheme to raise revenues by auctioning the confiscated lands, thereby withdrawing paper notes issued on the security of the lands sold by the government. This ''tax-backed money'' scheme propelled the National Assembly into the domains of then modern monetary theories. - + Records of debates show how members of the Assembly marshaled theory and evidence to assess the likely -effects of their innovation. +effects of their innovation. * Members of the National Assembly quoted David Hume and Adam Smith * They cited John Law's System of 1720 and the American experiences with paper money fifteen years @@ -428,7 +428,7 @@ mystnb: name: fr_fig5 --- # Read data from Excel file -data5 = pd.read_excel(dette_url, sheet_name='Debt', usecols='K', +data5 = pd.read_excel(dette_url, sheet_name='Debt', usecols='K', skiprows=41, nrows=120, header=None) # Plot the data @@ -451,7 +451,7 @@ until after 1815, when Napoleon Bonaparte was exiled to St Helena and King Louis * from 1799 to 1814, Napoleon Bonaparte had other sources of revenues -- booty and reparations from provinces and nations that he defeated in war - * from 1789 to 1799, the French Revolutionaries turned to another source to raise resources to pay for government purchases of goods and services and to service French government debt. + * from 1789 to 1799, the French Revolutionaries turned to another source to raise resources to pay for government purchases of goods and services and to service French government debt. And as the next figure shows, government expenditures exceeded tax revenues by substantial amounts during the period form 1789 to 1799. @@ -497,9 +497,9 @@ plt.tight_layout() plt.show() ``` -To cover the discrepancies between government expenditures and tax revenues revealed in {numref}`fr_fig11`, the French revolutionaries printed paper money and spent it. +To cover the discrepancies between government expenditures and tax revenues revealed in {numref}`fr_fig11`, the French revolutionaries printed paper money and spent it. -The next figure shows that by printing money, they were able to finance substantial purchases +The next figure shows that by printing money, they were able to finance substantial purchases of goods and services, including military goods and soldiers' pay. ```{code-cell} ipython3 @@ -510,7 +510,7 @@ mystnb: name: fr_fig24 --- # Read data from Excel file -data12 = pd.read_excel(assignat_url, sheet_name='seignor', +data12 = pd.read_excel(assignat_url, sheet_name='seignor', usecols='F', skiprows=6, nrows=75, header=None).squeeze() # Create a figure and plot the data @@ -522,12 +522,12 @@ plt.gca().spines['top'].set_visible(False) plt.gca().spines['right'].set_visible(False) plt.axhline(y=472.42/12, color='r', linestyle=':') -plt.xticks(ticks=pd.date_range(start='1790', +plt.xticks(ticks=pd.date_range(start='1790', end='1796', freq='YS'), labels=range(1790, 1797)) plt.xlim(pd.Timestamp('1791'), pd.Timestamp('1796-02') + pd.DateOffset(months=2)) plt.ylabel('millions of livres', fontsize=12) -plt.text(pd.Timestamp('1793-11'), 39.5, 'revenues in 1788', +plt.text(pd.Timestamp('1793-11'), 39.5, 'revenues in 1788', verticalalignment='top', fontsize=12) plt.tight_layout() @@ -542,17 +542,17 @@ $$ \frac{M_{t+1} - M_t}{p_t} $$ -where +where * $M_t$ is the stock of paper money at time $t$ measured in livres * $p_t$ is the price level at time $t$ measured in units of goods per livre at time $t$ * $M_{t+1} - M_t$ is the amount of new money printed at time $t$ -Notice the 1793-1794 surge in revenues raised by printing money. +Notice the 1793-1794 surge in revenues raised by printing money. * This reflects extraordinary measures that the Committee for Public Safety adopted to force citizens to accept paper money, or else. -Also note the abrupt fall off in revenues raised by 1797 and the absence of further observations after 1797. +Also note the abrupt fall off in revenues raised by 1797 and the absence of further observations after 1797. * This reflects the end of using the printing press to raise revenues. @@ -573,9 +573,9 @@ mystnb: name: fr_fig9 --- # Read the data from Excel file -data7 = pd.read_excel(assignat_url, sheet_name='Data', +data7 = pd.read_excel(assignat_url, sheet_name='Data', usecols='P:Q', skiprows=4, nrows=80, header=None) -data7a = pd.read_excel(assignat_url, sheet_name='Data', +data7a = pd.read_excel(assignat_url, sheet_name='Data', usecols='L', skiprows=4, nrows=80, header=None) # Create the figure and plot plt.figure() @@ -605,10 +605,10 @@ plt.show() ``` We have partioned {numref}`fr_fig9` that shows the log of the price level and {numref}`fr_fig8` -below that plots real balances $\frac{M_t}{p_t}$ into three periods that correspond to different monetary experiments or *regimes*. +below that plots real balances $\frac{M_t}{p_t}$ into three periods that correspond to different monetary experiments or *regimes*. The first period ends in the late summer of 1793, and is characterized -by growing real balances and moderate inflation. +by growing real balances and moderate inflation. The second period begins and ends with the Terror. It is marked by high real balances, around 2,500 million, and @@ -621,7 +621,7 @@ these three episodes in terms of distinct theories * a *backing* or *real bills* theory (the classic text for this theory is Adam Smith {cite}`smith2010wealth`) * a legal restrictions theory ( {cite}`keynes1940pay`, {cite}`bryant1984price` ) * a classical hyperinflation theory ({cite}`Cagan`) -* +* ```{note} According to the empirical definition of hyperinflation adopted by {cite}`Cagan`, beginning in the month that inflation exceeds 50 percent @@ -642,20 +642,20 @@ mystnb: name: fr_fig8 --- # Read the data from Excel file -data7 = pd.read_excel(assignat_url, sheet_name='Data', +data7 = pd.read_excel(assignat_url, sheet_name='Data', usecols='P:Q', skiprows=4, nrows=80, header=None) -data7a = pd.read_excel(assignat_url, sheet_name='Data', +data7a = pd.read_excel(assignat_url, sheet_name='Data', usecols='L', skiprows=4, nrows=80, header=None) # Create the figure and plot plt.figure() -h = plt.plot(pd.date_range(start='1789-11-01', periods=len(data7), freq='ME'), +h = plt.plot(pd.date_range(start='1789-11-01', periods=len(data7), freq='ME'), (data7a.values * [1, 1]) * data7.values, linewidth=1.) plt.setp(h[1], linestyle='--', color='red') -plt.vlines([pd.Timestamp('1793-07-15'), pd.Timestamp('1793-07-15')], +plt.vlines([pd.Timestamp('1793-07-15'), pd.Timestamp('1793-07-15')], 0, 3000, linewidth=0.8, color='orange') -plt.vlines([pd.Timestamp('1794-07-15'), pd.Timestamp('1794-07-15')], +plt.vlines([pd.Timestamp('1794-07-15'), pd.Timestamp('1794-07-15')], 0, 3000, linewidth=0.8, color='purple') plt.ylim([0, 3000]) @@ -680,8 +680,8 @@ plt.show() The three clouds of points in Figure {numref}`fr_fig104` - depict different real balance-inflation relationships. - + depict different real balance-inflation relationships. + Only the cloud for the third period has the inverse relationship familiar to us now from twentieth-century hyperinflations. @@ -709,7 +709,7 @@ def fit(x, y): caron = np.load('datasets/caron.npy') nom_balances = np.load('datasets/nom_balances.npy') -infl = np.concatenate(([np.nan], +infl = np.concatenate(([np.nan], -np.log(caron[1:63, 1] / caron[0:62, 1]))) bal = nom_balances[14:77, 1] * caron[:, 1] / 1000 ``` @@ -738,14 +738,14 @@ plt.gca().spines['top'].set_visible(False) plt.gca().spines['right'].set_visible(False) # First subsample -plt.plot(bal[1:31], infl[1:31], 'o', markerfacecolor='none', +plt.plot(bal[1:31], infl[1:31], 'o', markerfacecolor='none', color='blue', label='real bills period') # Second subsample plt.plot(bal[31:44], infl[31:44], '+', color='red', label='terror') # Third subsample -plt.plot(bal[44:63], infl[44:63], '*', +plt.plot(bal[44:63], infl[44:63], '*', color='orange', label='classic Cagan hyperinflation') plt.xlabel('real balances') @@ -756,17 +756,17 @@ plt.tight_layout() plt.show() ``` -The three clouds of points in {numref}`fr_fig104` evidently - depict different real balance-inflation relationships. +The three clouds of points in {numref}`fr_fig104` evidently + depict different real balance-inflation relationships. Only the cloud for the third period has the inverse relationship familiar to us now from twentieth-century hyperinflations. - To bring this out, we'll use linear regressions to draw straight lines that compress the - inflation-real balance relationship for our three sub-periods. + To bring this out, we'll use linear regressions to draw straight lines that compress the + inflation-real balance relationship for our three sub-periods. - Before we do that, we'll drop some of the early observations during the terror period + Before we do that, we'll drop some of the early observations during the terror period to obtain the following graph. ```{code-cell} ipython3 @@ -824,7 +824,7 @@ plt.gca().spines['top'].set_visible(False) plt.gca().spines['right'].set_visible(False) # First subsample -plt.plot(bal[1:31], infl[1:31], 'o', markerfacecolor='none', +plt.plot(bal[1:31], infl[1:31], 'o', markerfacecolor='none', color='blue', label='real bills period') plt.plot(bal[1:31], a1 + bal[1:31] * b1, color='blue') @@ -832,7 +832,7 @@ plt.plot(bal[1:31], a1 + bal[1:31] * b1, color='blue') plt.plot(bal[31:44], infl[31:44], '+', color='red', label='terror') # Third subsample -plt.plot(bal[44:63], infl[44:63], '*', +plt.plot(bal[44:63], infl[44:63], '*', color='orange', label='classic Cagan hyperinflation') plt.xlabel('real balances') @@ -845,12 +845,12 @@ plt.show() The regression line in {numref}`fr_fig104c` shows that large increases in real balances of assignats (paper money) were accompanied by only modest rises in the price level, an outcome in line -with the *real bills* theory. +with the *real bills* theory. -During this period, assignats were claims on church lands. +During this period, assignats were claims on church lands. But towards the end of this period, the price level started to rise and real balances to fall -as the government continued to print money but stopped selling church land. +as the government continued to print money but stopped selling church land. To get people to hold that paper money, the government forced people to hold it by using legal restrictions. @@ -869,7 +869,7 @@ plt.gca().spines['top'].set_visible(False) plt.gca().spines['right'].set_visible(False) # First subsample -plt.plot(bal[1:31], infl[1:31], 'o', markerfacecolor='none', +plt.plot(bal[1:31], infl[1:31], 'o', markerfacecolor='none', color='blue', label='real bills period') # Second subsample @@ -877,7 +877,7 @@ plt.plot(bal[31:44], infl[31:44], '+', color='red', label='terror') plt.plot(a2_rev + b2_rev * infl[31:44], infl[31:44], color='red') # Third subsample -plt.plot(bal[44:63], infl[44:63], '*', +plt.plot(bal[44:63], infl[44:63], '*', color='orange', label='classic Cagan hyperinflation') plt.xlabel('real balances') @@ -889,17 +889,17 @@ plt.show() ``` The regression line in {numref}`fr_fig104d` shows that large increases in real balances of -assignats (paper money) were accompanied by little upward price level pressure, even some declines in prices. +assignats (paper money) were accompanied by little upward price level pressure, even some declines in prices. -This reflects how well legal restrictions -- financial repression -- was working during the period of the Terror. +This reflects how well legal restrictions -- financial repression -- was working during the period of the Terror. -But the Terror ended in July 1794. That unleashed a big inflation as people tried to find other ways to transact and store values. +But the Terror ended in July 1794. That unleashed a big inflation as people tried to find other ways to transact and store values. The following two graphs are for the classical hyperinflation period. One regresses inflation on real balances, the other regresses real balances on inflation. -Both show a prounced inverse relationship that is the hallmark of the hyperinflations studied by +Both show a prounced inverse relationship that is the hallmark of the hyperinflations studied by Cagan {cite}`Cagan`. ```{code-cell} ipython3 @@ -914,14 +914,14 @@ plt.gca().spines['top'].set_visible(False) plt.gca().spines['right'].set_visible(False) # First subsample -plt.plot(bal[1:31], infl[1:31], 'o', markerfacecolor='none', +plt.plot(bal[1:31], infl[1:31], 'o', markerfacecolor='none', color='blue', label='real bills period') # Second subsample plt.plot(bal[31:44], infl[31:44], '+', color='red', label='terror') # Third subsample -plt.plot(bal[44:63], infl[44:63], '*', +plt.plot(bal[44:63], infl[44:63], '*', color='orange', label='classic Cagan hyperinflation') plt.plot(bal[44:63], a3 + bal[44:63] * b3, color='orange') @@ -948,14 +948,14 @@ plt.gca().spines['top'].set_visible(False) plt.gca().spines['right'].set_visible(False) # First subsample -plt.plot(bal[1:31], infl[1:31], 'o', +plt.plot(bal[1:31], infl[1:31], 'o', markerfacecolor='none', color='blue', label='real bills period') # Second subsample plt.plot(bal[31:44], infl[31:44], '+', color='red', label='terror') # Third subsample -plt.plot(bal[44:63], infl[44:63], '*', +plt.plot(bal[44:63], infl[44:63], '*', color='orange', label='classic Cagan hyperinflation') plt.plot(a3_rev + b3_rev * infl[44:63], infl[44:63], color='orange') @@ -972,7 +972,7 @@ period of the hyperinflation. ## Hyperinflation Ends -{cite}`sargent_velde1995` tell how in 1797 the Revolutionary government abruptly ended the inflation by +{cite}`sargent_velde1995` tell how in 1797 the Revolutionary government abruptly ended the inflation by * repudiating 2/3 of the national debt, and thereby * eliminating the net-of-interest government defict @@ -1060,10 +1060,10 @@ in_subperiod3 = above[above >= 44] print(f'\nOf those, {len(in_subperiod3)} fall in sub-period 3 (index ≥ 44)') ``` -The concentrated cluster of months above the threshold falls in 1795 — consistent -with the lecture's "May to December 1795" statement. Almost all Cagan-hyperinflation -months sit inside sub-period 3 (index 44:63), confirming that the boundary the -lecture uses is a good approximation to Cagan's own criterion. +The concentrated cluster of months above the threshold falls in 1795, +consistent with the lecture's "May to December 1795" statement. + +All Cagan-hyperinflation threshold months sit inside sub-period 3, confirming that the boundary the lecture uses is a good approximation to Cagan's own criterion. ```{solution-end} ``` @@ -1110,7 +1110,7 @@ relationship. ```{code-cell} ipython3 log_bal = np.log(bal) -# (a) Fit log_bal = a + b * infl → slope b = −α +# Fit log_bal = a + b * infl. a_log, b_log = fit(infl[44:63], log_bal[44:63]) α_hat = -b_log print(f'Log-linear estimate: α̂ = {α_hat:.2f}') @@ -1118,7 +1118,6 @@ print(f'Default in cagan_ree: α = 5.00') ``` ```{code-cell} ipython3 -# (b) Scatter + fitted line infl_grid = np.linspace(infl[44:63].min(), infl[44:63].max(), 100) fig, ax = plt.subplots() @@ -1135,10 +1134,12 @@ plt.tight_layout() plt.show() ``` -**Part (c):** Cagan's model postulates an *exponential* fall in real balances as -inflation rises: $M/p = e^{c - \alpha\pi}$. Over a hyperinflation real balances -vary by orders of magnitude, so a linear fit of `infl` on `bal` is a poor global -approximation — it imposes a straight line on what is an exponential curve. +**Part (c):** Cagan's model postulates an exponential fall in real balances as +inflation rises, $M/p = e^{c - \alpha\pi}$. + +Over a hyperinflation real balances vary by orders of magnitude, so a linear +fit of `infl` on `bal` is a poor global approximation because it imposes a straight line on what is an exponential curve. + Taking logs first makes the relationship linear and the regression well-specified across the full range of the data. @@ -1187,20 +1188,19 @@ regression line takes a different orientation from the other two. ```{code-cell} ipython3 fig, ax = plt.subplots(figsize=(8, 6)) -# ── Cloud 1: real bills ─────────────────────────────────────────────────────── +# Real bills ax.plot(bal[1:31], infl[1:31], 'o', markerfacecolor='none', color='blue', label='Real bills (1791–1793)') bal_grid1 = np.linspace(bal[1:31].min(), bal[1:31].max(), 100) ax.plot(bal_grid1, a1 + b1 * bal_grid1, color='blue', lw=2) -# ── Cloud 2: Terror ─────────────────────────────────────────────────────────── +# Terror ax.plot(bal[31:44], infl[31:44], '+', color='red', ms=9, label='Terror (1793–1794)') -# reversed regression: bal = a2_rev + b2_rev * infl infl_grid2 = np.linspace(infl[31:44].min(), infl[31:44].max(), 100) ax.plot(a2_rev + b2_rev * infl_grid2, infl_grid2, color='red', lw=2) -# ── Cloud 3: hyperinflation ─────────────────────────────────────────────────── +# Hyperinflation ax.plot(bal[44:63], infl[44:63], '*', color='orange', ms=8, label='Hyperinflation (1794–1796)') bal_grid3 = np.linspace(bal[44:63].min(), bal[44:63].max(), 100) @@ -1214,16 +1214,15 @@ plt.tight_layout() plt.show() ``` -During the **Terror** the Committee of Public Safety imposed legal restrictions — -including the death penalty for refusing assignats — that forced citizens to hold -high real balances regardless of how fast prices were rising. This broke the -normal money-demand relationship: real balances were determined by government -decree rather than by inflation, so the causal arrow runs *from* government policy -*to* real balances, not from inflation. Regressing `bal` on `infl` and plotting -the result as a nearly horizontal line (i.e., the reversed regression) reflects -this: inflation varied substantially, but real balances barely moved. By -contrast, both the real-bills and hyperinflation clouds obey a theory in which -real balances are chosen by the public and hence respond to inflation. +During the Terror the Committee of Public Safety imposed legal restrictions, including the death penalty for refusing assignats, that forced citizens to hold high real balances regardless of how fast prices were rising. + +This broke the normal money-demand relationship because real balances were determined by government decree rather than by inflation. + +Regressing `bal` on `infl` and plotting the result as a nearly horizontal line reflects this altered direction of causation. + +Inflation varied substantially during the Terror, but real balances barely moved. + +By contrast, both the real-bills and hyperinflation clouds obey a theory in which real balances are chosen by the public and hence respond to inflation. ```{solution-end} ``` diff --git a/lectures/geom_series.md b/lectures/geom_series.md index 5eba62458..3fbd1b0f5 100644 --- a/lectures/geom_series.md +++ b/lectures/geom_series.md @@ -1014,9 +1014,8 @@ plt.show() ``` The left panel confirms that $S_T$ converges smoothly to $1/(1-c) = 10$. -The right panel shows that the error decays geometrically (a straight line on -a log scale), reflecting the fact that the remainder after $T$ terms equals -$c^{T+1}/(1-c)$. + +The right panel shows that the error decays geometrically, a straight line on a log scale, reflecting the fact that the remainder after $T$ terms equals $c^{T+1}/(1-c)$. ```{solution-end} ``` @@ -1066,10 +1065,9 @@ for r in reserve_ratios: print(f"{r:>15.2f} | {1/r:>20.2f}") ``` -A lower reserve ratio means banks lend out a larger fraction of each deposit, -so the money-creation process takes longer to run down and the total deposits -created are much larger. The dashed lines mark the theoretical limit $D_0/r$, -which the cumulative series approaches from below. +A lower reserve ratio means banks lend out a larger fraction of each deposit, so the money-creation process takes longer to run down and the total deposits created are much larger. + +The dashed lines mark the theoretical limit $D_0/r$, which the cumulative series approaches from below. ```{solution-end} ``` @@ -1095,7 +1093,7 @@ $$ \text{error}(\%) = \frac{|\text{Gordon} - \text{exact}|}{\text{exact}} \times 100 $$ -and comment on when the approximation is most accurate. +and comment on whether the percentage error varies with $g$. ``` ```{solution-start} geom_ex3 @@ -1110,6 +1108,7 @@ g_vals = np.linspace(0, 0.045, 300) exact = infinite_lease(g_vals, r_val, x_0) gordon = x_0 / (r_val - g_vals) pct_error = np.abs(gordon - exact) / exact * 100 +pct_error_formula = 100 * r_val / (1 + r_val) fig, axes = plt.subplots(1, 2, figsize=(12, 4)) @@ -1121,19 +1120,20 @@ axes[0].set_title(f'Infinite lease present value ($r = {r_val}$)') axes[0].legend() axes[1].plot(g_vals, pct_error) +axes[1].axhline(pct_error_formula, linestyle='--', color='red', + label=fr'$100r/(1+r) = {pct_error_formula:.2f}\%$') axes[1].set_xlabel('$g$') axes[1].set_ylabel('Percentage error (%)') axes[1].set_title('Gordon formula approximation error') +axes[1].legend() plt.tight_layout() plt.show() ``` -The Gordon formula is most accurate when both $r$ and $g$ are small, because -it relies on the first-order Taylor approximation $1/(1+r) \approx 1 - r$, -which is tightest near zero. As $g \to r$, both the exact value and the -approximation blow up, but the relative error grows because the neglected -cross-product term $rg$ becomes non-negligible compared to $r - g$. +For a fixed $r$, the percentage error is constant in $g$ because the exact value is $x_0(1+r)/(r-g)$ while the Gordon approximation is $x_0/(r-g)$. + +The approximation becomes accurate when $r$ is small because the exact value differs from the Gordon formula by the factor $1+r$. ```{solution-end} ``` @@ -1162,7 +1162,7 @@ i_0, g_0, y_init = 0.3, 0.3, 0 bs = [0.25, 0.50, 0.75, 0.90] T = 60 -# Part (a) — income paths +# Part (a) fig, ax = plt.subplots() for b in bs: y = calculate_y(i_0, b, g_0, T, y_init) @@ -1176,7 +1176,7 @@ ax.set_title('National income paths for different $b$') ax.legend() plt.show() -# Part (b) — speed of convergence +# Part (b) T_long = 1000 T_star_vals = [] for b in bs: @@ -1198,11 +1198,11 @@ for b, T_star in zip(bs, T_star_vals): print(f"{b:>6.2f} | {1/(1-b):>20.2f} | {T_star:>14}") ``` -As $b$ rises toward 1, the Keynesian multiplier $1/(1-b)$ grows large and -convergence slows markedly. This reflects the fact that the geometric series -$\sum_{t=0}^\infty b^t$ converges more slowly when $b$ is close to 1 — -each additional round of spending adds a term $b^t$ that shrinks only -gradually. +As $b$ rises toward 1, the Keynesian multiplier $1/(1-b)$ grows large and convergence slows markedly. + +This reflects the fact that the geometric series $\sum_{t=0}^\infty b^t$ converges +more slowly when $b$ is close to 1 because each additional round of spending adds +a term $b^t$ that shrinks only gradually. ```{solution-end} ``` diff --git a/lectures/inequality.md b/lectures/inequality.md index eb0430dfb..7a8475fa1 100644 --- a/lectures/inequality.md +++ b/lectures/inequality.md @@ -55,11 +55,11 @@ Rome from across the empire, greatly enriched those in power. Meanwhile, ordinary citizens were taken from their farms to fight for long periods, diminishing their wealth. -The resulting growth in inequality was a driving factor behind political turmoil that shook the foundations of the republic. +The resulting growth in inequality was a driving factor behind political turmoil that shook the foundations of the republic. Eventually, the Roman Republic gave way to a series of dictatorships, starting with [Octavian](https://en.wikipedia.org/wiki/Augustus) (Augustus) in 27 BCE. -This history tells us that inequality matters, in the sense that it can drive major world events. +This history tells us that inequality matters, in the sense that it can drive major world events. There are other reasons that inequality might matter, such as how it affects human welfare. @@ -108,7 +108,7 @@ The Lorenz curve takes a sample $w_1, \ldots, w_n$ and produces a curve $L$. We suppose that the sample has been sorted from smallest to largest. -To aid our interpretation, suppose that we are measuring wealth +To aid our interpretation, suppose that we are measuring wealth * $w_1$ is the wealth of the poorest member of the population, and * $w_n$ is the wealth of the richest member of the population. @@ -201,11 +201,11 @@ def lorenz_curve(y): ``` In the next figure, we generate $n=2000$ draws from a lognormal -distribution and treat these draws as our population. +distribution and treat these draws as our population. -The straight 45-degree line ($x=L(x)$ for all $x$) corresponds to perfect equality. +The straight 45-degree line ($x=L(x)$ for all $x$) corresponds to perfect equality. -The log-normal draws produce a less equal distribution. +The log-normal draws produce a less equal distribution. For example, if we imagine these draws as being observations of wealth across a sample of households, then the dashed lines show that the bottom 80\% of @@ -263,9 +263,9 @@ population weights supplied by the SCF.) ```{code-cell} ipython3 :tags: [hide-input] -df = df_income_wealth +df = df_income_wealth -varlist = ['n_wealth', # net wealth +varlist = ['n_wealth', # net wealth 't_income', # total income 'l_income'] # labor income @@ -282,18 +282,18 @@ for var in varlist: for year in years: # Repeat the observations according to their weights - counts = list(round(df[df['year'] == year]['weights'] )) + counts = list(round(df[df['year'] == year]['weights'] )) y = df[df['year'] == year][var].repeat(counts) y = np.asarray(y) - + # Shuffle the sequence to improve the plot - rd.shuffle(y) - + rd.shuffle(y) + # calculate and store Lorenz curve data f_val, l_val = lorenz_curve(y) f_vals.append(f_val) l_vals.append(l_val) - + F_vals.append(f_vals) L_vals.append(l_vals) @@ -328,7 +328,7 @@ ax.legend() plt.show() ``` -One key finding from this figure is that wealth inequality is more extreme than income inequality. +One key finding from this figure is that wealth inequality is more extreme than income inequality. @@ -349,7 +349,7 @@ In this section we discuss the Gini coefficient and its relationship to the Lore As before, suppose that the sample $w_1, \ldots, w_n$ has been sorted from smallest to largest. -The Gini coefficient is defined for the sample above as +The Gini coefficient is defined for the sample above as ```{prf:definition} :label: define-gini @@ -395,7 +395,7 @@ $$ G = \frac{A}{A+B} $$ -where $A$ is the area between the 45-degree line of +where $A$ is the area between the 45-degree line of perfect equality and the Lorenz curve, while $B$ is the area below the Lorenze curve -- see {numref}`lorenz_gini2`. ```{code-cell} ipython3 @@ -464,7 +464,7 @@ def gini_coefficient(y): Now we can compute the Gini coefficients for five different populations. -Each of these populations is generated by drawing from a +Each of these populations is generated by drawing from a lognormal distribution with parameters $\mu$ (mean) and $\sigma$ (standard deviation). To create the five populations, we vary $\sigma$ over a grid of length $5$ @@ -472,7 +472,7 @@ between $0.2$ and $4$. In each case we set $\mu = - \sigma^2 / 2$. -This implies that the mean of the distribution does not change with $\sigma$. +This implies that the mean of the distribution does not change with $\sigma$. You can check this by looking up the expression for the mean of a lognormal distribution. @@ -512,10 +512,10 @@ mystnb: caption: Gini coefficients of simulated data name: gini_simulated --- -fix, ax = plot_inequality_measures(σ_vals, - ginis, - 'simulated', - r'$\sigma$', +fix, ax = plot_inequality_measures(σ_vals, + ginis, + 'simulated', + r'$\sigma$', 'Gini coefficients') plt.show() ``` @@ -551,7 +551,7 @@ mystnb: # Fetch gini data for all countries gini_all = wb.data.DataFrame("SI.POV.GINI") # remove 'YR' in index and convert to integer -gini_all.columns = gini_all.columns.map(lambda x: int(x.replace('YR',''))) +gini_all.columns = gini_all.columns.map(lambda x: int(x.replace('YR',''))) # Create a long series with a multi-index of the data to get global min and max values gini_all = gini_all.unstack(level='economy').dropna() @@ -658,7 +658,7 @@ data = gini_all.unstack() data.columns ``` -There are 167 countries represented in this dataset. +There are 167 countries represented in this dataset. Let us compare three advanced economies: the US, the UK, and Norway @@ -684,7 +684,7 @@ Let us take a closer look at the underlying data and see if we can rectify this. data[['NOR']].dropna().head(n=5) ``` -The data for Norway in this dataset goes back to 1979 but there are gaps in the time series and matplotlib is not showing those data points. +The data for Norway in this dataset goes back to 1979 but there are gaps in the time series and matplotlib is not showing those data points. We can use the `.ffill()` method to copy and bring forward the last known value in a series to fill in these gaps @@ -704,7 +704,7 @@ plt.show() ``` From this plot we can observe that the US has a higher Gini coefficient (i.e. -higher income inequality) when compared to the UK and Norway. +higher income inequality) when compared to the UK and Norway. Norway has the lowest Gini coefficient over the three economies and, moreover, the Gini coefficient shows no upward trend. @@ -713,7 +713,7 @@ the Gini coefficient shows no upward trend. ### Gini Coefficient and GDP per capita (over time) -We can also look at how the Gini coefficient compares with GDP per capita (over time). +We can also look at how the Gini coefficient compares with GDP per capita (over time). Let's take another look at the US, Norway, and the UK. @@ -721,7 +721,7 @@ Let's take another look at the US, Norway, and the UK. countries = ['USA', 'NOR', 'GBR'] gdppc = wb.data.DataFrame("NY.GDP.PCAP.KD", countries) # remove 'YR' in index and convert to integer -gdppc.columns = gdppc.columns.map(lambda x: int(x.replace('YR',''))) +gdppc.columns = gdppc.columns.map(lambda x: int(x.replace('YR',''))) gdppc = gdppc.T ``` @@ -750,7 +750,7 @@ min_year = plot_data.year.min() max_year = plot_data.year.max() ``` -The time series for all three countries start and stop in different years. +The time series for all three countries start and stop in different years. We will add a year mask to the data to improve clarity in the chart including the different end years associated with each country's time series. @@ -763,11 +763,11 @@ plot_data.year = plot_data.year.map(lambda x: x if x in labels else None) (fig:plotly-gini-gdppc-years)= ```{code-cell} ipython3 -fig = px.line(plot_data, - x = "gini", - y = "gdppc", - color = "country", - text = "year", +fig = px.line(plot_data, + x = "gini", + y = "gdppc", + color = "country", + text = "year", height = 800, labels = {"gini" : "Gini coefficient", "gdppc" : "GDP per capita"} ) @@ -780,13 +780,13 @@ This figure is built using `plotly` and is {ref}` available on the website a', 'c', + item_to_remove = ['a', 'c', 'd', 'e'] # b represents a billion @@ -257,29 +257,29 @@ def process_entry(entry): def process_df(df): "Clean and reorganize the entire dataframe." - + # Remove HTML markers from column names for item in ['a', 'c', 'd', 'e']: df.columns = df.columns.str.replace(item, '') - + # Convert years to int df['Year'] = df['Year'].apply(lambda x: int(x)) - + # Set index to datetime with year and month df = df.set_index( pd.to_datetime( (df['Year'].astype(str) + \ - df['Month'].astype(str)), + df['Month'].astype(str)), format='%Y%B')) df = df.drop(['Year', 'Month'], axis=1) - + # Handle duplicates by keeping the first df = df[~df.index.duplicated(keep='first')] - + # Convert attribute values to numeric df = df.map(lambda x: float(x) \ if x != '—' else np.nan) - + # Finally, we only focus on data between 1919 and 1925 mask = (df.index >= '1919-01-01') & \ (df.index < '1925-01-01') @@ -288,7 +288,7 @@ def process_df(df): return df ``` -Now we write plotting functions `pe_plot` and `pr_plot` that will build figures that show the price level, exchange rates, +Now we write plotting functions `pe_plot` and `pr_plot` that will build figures that show the price level, exchange rates, and inflation rates, for each country of interest. ```{code-cell} ipython3 @@ -298,19 +298,19 @@ def pe_plot(p_seq, e_seq, index, labs, ax): "Generate plots for price and exchange rates." p_lab, e_lab = labs - + # Plot price and exchange rates ax.plot(index, p_seq, label=p_lab, color='tab:blue', lw=2) - + # Add a new axis ax1 = ax.twinx() ax1.plot([None], [None], label=p_lab, color='tab:blue', lw=2) ax1.plot(index, e_seq, label=e_lab, color='tab:orange', lw=2) - + # Set log axes ax.set_yscale('log') ax1.set_yscale('log') - + # Define the axis label format ax.xaxis.set_major_locator( mdates.MonthLocator(interval=5)) @@ -318,13 +318,13 @@ def pe_plot(p_seq, e_seq, index, labs, ax): mdates.DateFormatter('%b %Y')) for label in ax.get_xticklabels(): label.set_rotation(45) - + # Set labels ax.set_ylabel('Price level') ax1.set_ylabel('Exchange rate') - + ax1.legend(loc='upper left') - + return ax1 def pr_plot(p_seq, index, ax): @@ -332,22 +332,22 @@ def pr_plot(p_seq, index, ax): # Calculate the difference of log p_seq log_diff_p = np.diff(np.log(p_seq)) - + # Calculate and plot moving average diff_smooth = pd.DataFrame(log_diff_p).rolling(3, center=True).mean() ax.plot(index[1:], diff_smooth, label='Moving average (3 period)', alpha=0.5, lw=2) ax.set_ylabel('Inflation rate') - + ax.xaxis.set_major_locator( mdates.MonthLocator(interval=5)) ax.xaxis.set_major_formatter( mdates.DateFormatter('%b %Y')) - + for label in ax.get_xticklabels(): label.set_rotation(45) - + ax.legend() - + return ax ``` @@ -359,30 +359,30 @@ data_url = "https://github.com/QuantEcon/lecture-python-intro/raw/main/lectures/ xls = pd.ExcelFile(data_url) # Select relevant sheets -sheet_index = [(2, 3, 4), - (9, 10), - (14, 15, 16), +sheet_index = [(2, 3, 4), + (9, 10), + (14, 15, 16), (21, 18, 19)] # Remove redundant rows -remove_row = [(-2, -2, -2), - (-7, -10), - (-6, -4, -3), +remove_row = [(-2, -2, -2), + (-7, -10), + (-6, -4, -3), (-19, -3, -6)] # Unpack and combine series for each country df_list = [] for i in range(4): - + indices, rows = sheet_index[i], remove_row[i] - + # Apply process_entry on the selected sheet sheet_list = [ - pd.read_excel(xls, 'Table3.' + str(ind), + pd.read_excel(xls, 'Table3.' + str(ind), header=1).iloc[:row].map(process_entry) for ind, row in zip(indices, rows)] - + sheet_list = [process_df(df) for df in sheet_list] df_list.append(pd.concat(sheet_list, axis=1)) @@ -393,12 +393,12 @@ Now let's construct graphs for our four countries. For each country, we'll plot two graphs. -The first graph plots logarithms of +The first graph plots logarithms of * price levels * exchange rates vis-à-vis US dollars -For each country, the scale on the right side of a graph will pertain to the price level while the scale on the left side of a graph will pertain to the exchange rate. +For each country, the scale on the right side of a graph will pertain to the price level while the scale on the left side of a graph will pertain to the exchange rate. For each country, the second graph plots a centered three-month moving average of the inflation rate defined as $\frac{p_{t-1} + p_t + p_{t+1}}{3}$. @@ -419,7 +419,7 @@ mystnb: p_seq = df_aus['Retail price index, 52 commodities'] e_seq = df_aus['Exchange Rate'] -lab = ['Retail price index', +lab = ['Retail price index', 'Austrian Krones (Crowns) per US cent'] # Create plot @@ -447,8 +447,8 @@ Staring at {numref}`pi_xrate_austria` and {numref}`inflationrate_austria` convey * an episode of "hyperinflation" with rapidly rising log price level and very high monthly inflation rates * a sudden stop of the hyperinflation as indicated by the abrupt flattening of the log price level and a marked permanent drop in the three-month average of inflation -* a US dollar exchange rate that shadows the price level. - +* a US dollar exchange rate that shadows the price level. + We'll see similar patterns in the next three episodes that we'll study now. ### Hungary @@ -467,7 +467,7 @@ mystnb: p_seq = df_hun['Hungarian index of prices'] e_seq = 1 / df_hun['Cents per crown in New York'] -lab = ['Hungarian index of prices', +lab = ['Hungarian index of prices', 'Hungarian Koronas (Crowns) per US cent'] # Create plot @@ -495,7 +495,7 @@ plt.show() The sources of our data for Poland are: -* Table 3.15, price level $\exp p$ +* Table 3.15, price level $\exp p$ * Table 3.15, exchange rate ```{note} @@ -514,7 +514,7 @@ mystnb: p_seq1 = df_pol['Wholesale price index'].copy() p_seq2 = df_pol['Wholesale Price Index: ' 'On paper currency basis'].copy() -p_seq3 = df_pol['Wholesale Price Index: ' +p_seq3 = df_pol['Wholesale Price Index: ' 'On zloty basis'].copy() # Non-nan part @@ -525,8 +525,8 @@ adj_ratio12 = (p_seq1[mask_1] / p_seq2[mask_1]) adj_ratio23 = (p_seq2[mask_2] / p_seq3[mask_2]) # Glue three series -p_seq = pd.concat([p_seq1[:mask_1], - adj_ratio12 * p_seq2[mask_1:mask_2], +p_seq = pd.concat([p_seq1[:mask_1], + adj_ratio12 * p_seq2[mask_1:mask_2], adj_ratio23 * p_seq3[mask_2:]]) p_seq = p_seq[~p_seq.index.duplicated(keep='first')] @@ -536,7 +536,7 @@ e_seq[e_seq.index > '05-01-1924'] = np.nan ``` ```{code-cell} ipython3 -lab = ['Wholesale price index', +lab = ['Wholesale price index', 'Polish marks per US cent'] # Create plot @@ -564,7 +564,7 @@ plt.show() The sources of our data for Germany are the following tables from chapter 3 of {cite}`sargent2013rational`: -* Table 3.18, wholesale price level $\exp p$ +* Table 3.18, wholesale price level $\exp p$ * Table 3.19, exchange rate ```{code-cell} ipython3 @@ -578,7 +578,7 @@ p_seq = df_deu['Price index (on basis of marks before July 1924,' ' reichsmarks after)'].copy() e_seq = 1/df_deu['Cents per mark'] -lab = ['Price index', +lab = ['Price index', 'Marks per US cent'] # Create plot @@ -600,12 +600,12 @@ p_seq = df_deu['Price index (on basis of marks before July 1924,' e_seq = 1/df_deu['Cents per mark'].copy() # Adjust the price level/exchange rate after the currency reform -p_seq[p_seq.index > '06-01-1924'] = p_seq[p_seq.index +p_seq[p_seq.index > '06-01-1924'] = p_seq[p_seq.index > '06-01-1924'] * 1e12 -e_seq[e_seq.index > '12-01-1923'] = e_seq[e_seq.index +e_seq[e_seq.index > '12-01-1923'] = e_seq[e_seq.index > '12-01-1923'] * 1e12 -lab = ['Price index (marks or converted to marks)', +lab = ['Price index (marks or converted to marks)', 'Marks per US cent(or reichsmark converted to mark)'] # Create plot @@ -635,10 +635,10 @@ It is striking how *quickly* (log) price levels in Austria, Hungary, Poland, and These "sudden stops" are also revealed by the permanent drops in three-month moving averages of inflation for the four countries plotted above. -In addition, the US dollar exchange rates for each of the four countries shadowed their price levels. +In addition, the US dollar exchange rates for each of the four countries shadowed their price levels. ```{note} -This pattern is an instance of a force featured in the [purchasing power parity](https://en.wikipedia.org/wiki/Purchasing_power_parity) theory of exchange rates. +This pattern is an instance of a force featured in the [purchasing power parity](https://en.wikipedia.org/wiki/Purchasing_power_parity) theory of exchange rates. ``` Each of these big inflations seemed to have "stopped on a dime". @@ -647,22 +647,22 @@ Chapter 3 of {cite}`sargent2002big` offers an explanation for this remarkable pa In a nutshell, here is the explanation offered there. -After World War I, the United States was on a gold standard. +After World War I, the United States was on a gold standard. The US government stood ready to convert a dollar into a specified amount of gold on demand. -Immediately after World War I, Hungary, Austria, Poland, and Germany were not on the gold standard. +Immediately after World War I, Hungary, Austria, Poland, and Germany were not on the gold standard. Their currencies were "fiat" or "unbacked", meaning that they were not backed by credible government promises to convert them into gold or silver coins on demand. -The governments printed new paper notes to pay for goods and services. +The governments printed new paper notes to pay for goods and services. ```{note} Technically the notes were "backed" mainly by treasury bills. But people could not expect that those treasury bills would be paid off by levying taxes, but instead by printing more notes or treasury bills. ``` -This was done on such a scale that it led to a depreciation of the currencies of spectacular proportions. - +This was done on such a scale that it led to a depreciation of the currencies of spectacular proportions. + In the end, the German mark stabilized at 1 trillion ($10^{12}$) paper marks to the prewar gold mark, the Polish mark at 1.8 million paper marks to the gold zloty, the Austrian crown at 14,400 paper crowns to the prewar Austro-Hungarian crown, and the Hungarian krone at 14,500 paper crowns to the prewar Austro-Hungarian crown. Chapter 3 of {cite}`sargent2002big` described deliberate changes in policy that Hungary, Austria, Poland, and Germany made to end their hyperinflations. @@ -746,11 +746,10 @@ plt.tight_layout() plt.show() ``` -The table and bar chart show that Germany's hyperinflation dwarfed the others: -its peak monthly log-inflation rate (reached in November 1923) translates into -a price level that roughly doubled every day at the peak. Austria, Hungary, and -Poland experienced severe inflations by any historical standard, but they were -modest in comparison. +The table and bar chart show that Germany's hyperinflation dwarfed the others because its peak monthly log-inflation rate, reached in October 1923, translates into a monthly price increase of about 296-fold. + +Austria, Hungary, and Poland experienced severe inflations by any historical +standard, but they were modest in comparison. ```{solution-end} ``` @@ -823,14 +822,16 @@ plt.tight_layout() plt.show() ``` -The chart confirms the lecture's central message. During the three centuries of -the gold and silver standard (1700–1913) the annualized log-price growth rate -was close to zero for all four countries — the price level was roughly -trendless. After 1914, when governments left the gold standard and gained the -ability to print money, average annual inflation jumped markedly for every -country with sufficient post-1914 data. The Castile series does not extend -reliably into the 20th century, so its fiat-era bar reflects incomplete data -and should be interpreted with caution. +The chart confirms the lecture's central message. + +During the three centuries of the gold and silver standard, 1700 to 1913, the +annualized log-price growth rate was close to zero for all four countries. + +After 1914, when governments left the gold standard and gained the ability to +print money, average annual inflation jumped markedly for every country with sufficient post-1914 data. + +The Castile series does not extend reliably into the 20th century, so its +fiat-era bar reflects incomplete data and should be interpreted with caution. ```{solution-end} ``` @@ -871,6 +872,10 @@ p_ger = df_deu['Price index (on basis of marks before July 1924,' ' reichsmarks after)'].dropna() e_ger = (1 / df_deu['Cents per mark']).dropna() +# Convert post-reform reichsmark observations back into paper-mark units +p_ger[p_ger.index > '1924-06-01'] = p_ger[p_ger.index > '1924-06-01'] * 1e12 +e_ger[e_ger.index > '1923-12-01'] = e_ger[e_ger.index > '1923-12-01'] * 1e12 + common = p_ger.index.intersection(e_ger.index) log_p = np.log(p_ger[common]) log_e = np.log(e_ger[common]) @@ -915,17 +920,16 @@ print(f"Std dev of log price level (normalized): {log_p_n.std():.3f}") print(f"Std dev of real exchange rate q: {q.std():.3f}") ``` -Parts (a) and (b): the two normalized log series are nearly indistinguishable -and their Pearson correlation is very close to 1. During Germany's -hyperinflation, every tenfold rise in the domestic price level was matched -by an approximately tenfold rise in the exchange rate — precisely what PPP -predicts. +For parts (a) and (b), the two normalized log series are nearly indistinguishable and their Pearson correlation is very close to 1. + +During Germany's hyperinflation, every tenfold rise in the domestic price level +was matched by an approximately tenfold rise in the exchange rate, as PPP predicts. + +For part (c), the real exchange rate $q_t$ fluctuates only modestly compared with the enormous swings in $\log p_t$. -Part (c): the real exchange rate $q_t$ fluctuates only modestly compared with -the enormous swings in $\log p_t$. Its standard deviation is a small fraction -of the standard deviation of the normalized log price level, confirming that -exchange rate movements were driven almost entirely by domestic price inflation, -with only minor transient deviations from PPP. +Its standard deviation is a small fraction of the standard deviation of the normalized +log price level, confirming that exchange rate movements were driven almost entirely +by domestic price inflation with only minor transient deviations from PPP. ```{solution-end} ``` diff --git a/lectures/laffer_adaptive.md b/lectures/laffer_adaptive.md index a7ef36a36..418dfc451 100644 --- a/lectures/laffer_adaptive.md +++ b/lectures/laffer_adaptive.md @@ -11,7 +11,7 @@ kernelspec: name: python3 --- -# Laffer Curves with Adaptive Expectations +# Laffer Curves with Adaptive Expectations ## Overview @@ -22,21 +22,21 @@ As in the lecture {doc}`money_inflation`, this lecture uses the log-linear versi But now, instead of assuming ''rational expectations'' in the form of ''perfect foresight'', we'll adopt the ''adaptive expectations'' assumption used by {cite}`Cagan` and {cite}`Friedman1956`. -This means that instead of assuming that expected inflation $\pi_t^*$ is described by the "perfect foresight" or "rational expectations" hypothesis +This means that instead of assuming that expected inflation $\pi_t^*$ is described by the "perfect foresight" or "rational expectations" hypothesis $$ \pi_t^* = p_{t+1} - p_t -$$ +$$ -that we adopted in lectures {doc}`money_inflation` and lectures {doc}`money_inflation_nonlinear`, we'll now assume that $\pi_t^*$ is determined by the adaptive expectations hypothesis described in equation {eq}`eq:adaptex` reported below. +that we adopted in lectures {doc}`money_inflation` and lectures {doc}`money_inflation_nonlinear`, we'll now assume that $\pi_t^*$ is determined by the adaptive expectations hypothesis described in equation {eq}`eq:adaptex` reported below. We shall discover that changing our hypothesis about expectations formation in this way will change some our findings and leave others intact. In particular, we shall discover that -* replacing rational expectations with adaptive expectations leaves the two stationary inflation rates unchanged, but that $\ldots$ +* replacing rational expectations with adaptive expectations leaves the two stationary inflation rates unchanged, but that $\ldots$ * it reverses the perverse dynamics by making the **lower** stationary inflation rate the one to which the system typically converges * a more plausible comparative dynamic outcome emerges in which now inflation can be **reduced** by running **lower** government deficits -These more plausible comparative dynamics underlie the "old time religion" that states that +These more plausible comparative dynamics underlie the "old time religion" that states that "inflation is always and everywhere caused by government deficits". These issues were studied by {cite}`bruno1990seigniorage`. @@ -46,22 +46,22 @@ predictions of their model under rational expectations (i.e., perfect foresight by dropping rational expectations and instead assuming that people form expectations about future inflation rates according to the "adaptive expectations" scheme {eq}`eq:adaptex` described below. ```{note} -{cite}`sargent1989least` had studied another way of selecting stationary equilibrium that involved replacing rational expectations with a model of learning via least squares regression. +{cite}`sargent1989least` had studied another way of selecting stationary equilibrium that involved replacing rational expectations with a model of learning via least squares regression. {cite}`marcet2003recurrent` and {cite}`sargent2009conquest` extended that work and applied it to study recurrent high-inflation episodes in Latin America. -``` +``` ## The model -Let +Let * $m_t$ be the log of the money supply at the beginning of time $t$ * $p_t$ be the log of the price level at time $t$ -* $\pi_t^*$ be the public's expectation of the rate of inflation between $t$ and $t+1$ - +* $\pi_t^*$ be the public's expectation of the rate of inflation between $t$ and $t+1$ + The law of motion of the money supply is -$$ -\exp(m_{t+1}) - \exp(m_t) = g \exp(p_t) +$$ +\exp(m_{t+1}) - \exp(m_t) = g \exp(p_t) $$ (eq:ada_msupply) where $g$ is the part of government expenditures financed by printing money. @@ -72,15 +72,15 @@ $$ m_{t+1} = \log[ \exp(m_t) + g \exp(p_t)] $$ (eq:ada_msupply2) -The demand function for money is +The demand function for money is $$ -m_{t+1} - p_t = -\alpha \pi_t^* +m_{t+1} - p_t = -\alpha \pi_t^* $$ (eq:ada_mdemand) -where $\alpha \geq 0$. +where $\alpha \geq 0$. -Expectations of inflation are governed by +Expectations of inflation are governed by $$ \pi_{t}^* = (1-\delta) (p_t - p_{t-1}) + \delta \pi_{t-1}^* @@ -88,7 +88,7 @@ $$ (eq:adaptex) where $\delta \in (0,1)$ -## Computing an equilibrium sequence +## Computing an equilibrium sequence Equation the expressions for $m_{t+1}$ provided by {eq}`eq:ada_mdemand` and {eq}`eq:ada_msupply2` and use equation {eq}`eq:adaptex` to eliminate $\pi_t^*$ to obtain the following equation for $p_t$: @@ -105,16 +105,16 @@ Starting at time $0$ with initial conditions $(m_0, \pi_{-1}^*, p_{-1})$, for ea deploy the following steps in order: * solve {eq}`eq:pequation` for $p_t$ -* solve equation {eq}`eq:adaptex` for $\pi_t^*$ +* solve equation {eq}`eq:adaptex` for $\pi_t^*$ * solve equation {eq}`eq:ada_msupply2` for $m_{t+1}$ This completes the algorithm. ## Claims or conjectures - - -It will turn out that + + +It will turn out that * if they exist, limiting values $\overline \pi$ and $\overline \mu$ will be equal @@ -125,14 +125,14 @@ It will turn out that * for each of the two possible limiting values $\bar \pi$ ,there is a unique initial log price level $p_0$ that implies that $\pi_t = \mu_t = \bar \mu$ for all $t \geq 0$ * this unique initial log price level solves $\log(\exp(m_0) + g \exp(p_0)) - p_0 = - \alpha \bar \pi $ - + * the preceding equation for $p_0$ comes from $m_1 - p_0 = - \alpha \bar \pi$ ## Limiting values of inflation rate As in our earlier lecture {doc}`money_inflation_nonlinear`, we can compute the two prospective limiting values for $\bar \pi$ by studying the steady-state Laffer curve. -Thus, in a **steady state** +Thus, in a **steady state** $$ m_{t+1} - m_t = p_{t+1} - p_t = x \quad \forall t , @@ -143,20 +143,20 @@ where $x > 0 $ is a common rate of growth of logarithms of the money supply and A few lines of algebra yields the following equation that $x$ satisfies $$ -\exp(-\alpha x) - \exp(-(1 + \alpha) x) = g +\exp(-\alpha x) - \exp(-(1 + \alpha) x) = g $$ (eq:ada_steadypi) where we require that $$ -g \leq \max_{x: x \geq 0} \exp(-\alpha x) - \exp(-(1 + \alpha) x) , +g \leq \max_{x: x \geq 0} \exp(-\alpha x) - \exp(-(1 + \alpha) x) , $$ (eq:ada_revmax) so that it is feasible to finance $g$ by printing money. The left side of {eq}`eq:ada_steadypi` is steady state revenue raised by printing money. -The right side of {eq}`eq:ada_steadypi` is the quantity of time $t$ goods that the government raises by printing money. +The right side of {eq}`eq:ada_steadypi` is the quantity of time $t$ goods that the government raises by printing money. Soon we'll plot the left and right sides of equation {eq}`eq:ada_steadypi`. @@ -181,7 +181,7 @@ from scipy.optimize import root, fsolve Let's create a `namedtuple` to store the parameters of the model ```{code-cell} ipython3 -LafferAdaptive = namedtuple('LafferAdaptive', +LafferAdaptive = namedtuple('LafferAdaptive', ["m0", # log of the money supply at t=0 "α", # sensitivity of money demand "g", # government expenditure @@ -227,11 +227,11 @@ mystnb: width: 500px --- def compute_seign(x, α): - return np.exp(-α * x) - np.exp(-(1 + α) * x) + return np.exp(-α * x) - np.exp(-(1 + α) * x) def plot_laffer(model, πs): α, g = model.α, model.g - + # Generate π values x_values = np.linspace(0, 5, 1000) @@ -239,14 +239,14 @@ def plot_laffer(model, πs): y_values = compute_seign(x_values, α) # Plot the function - plt.plot(x_values, y_values, + plt.plot(x_values, y_values, label=f'$exp((-{α})x) - exp(- (1- {α}) x)$') for π, label in zip(πs, ['$\pi_l$', '$\pi_u$']): - plt.text(π, plt.gca().get_ylim()[0]*2, + plt.text(π, plt.gca().get_ylim()[0]*2, label, horizontalalignment='center', color='brown', size=10) plt.axvline(π, color='brown', linestyle='--') - plt.axhline(g, color='red', linewidth=0.5, + plt.axhline(g, color='red', linewidth=0.5, linestyle='--', label='g') plt.xlabel('$\pi$') plt.ylabel('seigniorage') @@ -262,7 +262,7 @@ plot_laffer(model, (π_l, π_u)) Now that we have our hands on the two possible steady states, we can compute two initial log price levels $p_{-1}$, which as initial conditions, imply that $\pi_t = \bar \pi $ for all $t \geq 0$. -In particular, to initiate a fixed point of the dynamic Laffer curve dynamics, we set +In particular, to initiate a fixed point of the dynamic Laffer curve dynamics, we set $$ p_{-1} = m_0 + \alpha \pi^* @@ -279,7 +279,7 @@ p_l, p_u = map(lambda π: solve_p_init(model, π), (π_l, π_u)) print('Associated initial p_{-1}s', f'are: {p_l, p_u}') ``` -### Verification +### Verification To start, let's write some code to verify that if we initial $\pi_{-1}^*,p_{-1}$ appropriately, the inflation rate $\pi_t$ will be constant for all $t \geq 0$ (at either $\pi_u$ or $\pi_l$ depending on the initial condition) @@ -288,33 +288,33 @@ The following code verifies this. ```{code-cell} ipython3 def solve_laffer_adapt(p_init, π_init, model, num_steps): m0, α, δ, g = model.m0, model.α, model.δ, model.g - - m_seq = np.nan * np.ones(num_steps+1) - π_seq = np.nan * np.ones(num_steps) + + m_seq = np.nan * np.ones(num_steps+1) + π_seq = np.nan * np.ones(num_steps) p_seq = np.nan * np.ones(num_steps) - μ_seq = np.nan * np.ones(num_steps) - + μ_seq = np.nan * np.ones(num_steps) + m_seq[1] = m0 π_seq[0] = π_init p_seq[0] = p_init - + for t in range(1, num_steps): # Solve p_t def p_t(pt): return np.log(np.exp(m_seq[t]) + g * np.exp(pt)) \ - pt + α * ((1-δ)*(pt - p_seq[t-1]) + δ*π_seq[t-1]) - + p_seq[t] = root(fun=p_t, x0=p_seq[t-1]).x[0] - + # Solve π_t π_seq[t] = (1-δ) * (p_seq[t]-p_seq[t-1]) + δ*π_seq[t-1] - + # Solve m_t m_seq[t+1] = np.log(np.exp(m_seq[t]) + g*np.exp(p_seq[t])) - + # Solve μ_t μ_seq[t] = m_seq[t+1] - m_seq[t] - + return π_seq, μ_seq, m_seq, p_seq ``` @@ -323,7 +323,7 @@ Compute limiting values starting from $p_{-1}$ associated with $\pi_l$ ```{code-cell} ipython3 π_seq, μ_seq, m_seq, p_seq = solve_laffer_adapt(p_l, π_l, model, 50) -# Check steady state m_{t+1} - m_t and p_{t+1} - p_t +# Check steady state m_{t+1} - m_t and p_{t+1} - p_t print('m_{t+1} - m_t:', m_seq[-1] - m_seq[-2]) print('p_{t+1} - p_t:', p_seq[-1] - p_seq[-2]) @@ -338,7 +338,7 @@ Compute limiting values starting from $p_{-1}$ associated with $\pi_u$ ```{code-cell} ipython3 π_seq, μ_seq, m_seq, p_seq = solve_laffer_adapt(p_u, π_u, model, 50) -# Check steady state m_{t+1} - m_t and p_{t+1} - p_t +# Check steady state m_{t+1} - m_t and p_{t+1} - p_t print('m_{t+1} - m_t:', m_seq[-1] - m_seq[-2]) print('p_{t+1} - p_t:', p_seq[-1] - p_seq[-2]) @@ -350,7 +350,7 @@ print('eq_g == g:', np.isclose(eq_g(m_seq[-1] - m_seq[-2]), model.g)) ## Slippery side of Laffer curve dynamics -We are now equipped to compute time series starting from different $p_{-1}, \pi_{-1}^*$ settings, analogous to those in this lecture {doc}`money_inflation` and this lecture {doc}`money_inflation_nonlinear`. +We are now equipped to compute time series starting from different $p_{-1}, \pi_{-1}^*$ settings, analogous to those in this lecture {doc}`money_inflation` and this lecture {doc}`money_inflation_nonlinear`. Now we'll study how outcomes unfold when we start $p_{-1}, \pi_{-1}^*$ away from a stationary point of the dynamic Laffer curve, i.e., away from either $\pi_u$ or $ \pi_l$. @@ -367,7 +367,7 @@ def draw_iterations(π0s, model, line_params, π_bars, num_steps): for ax in axes[:2]: ax.set_yscale('log') - + for i, π0 in enumerate(π0s): p0 = model.m0 + model.α*π0 π_seq, μ_seq, m_seq, p_seq = solve_laffer_adapt(p0, π0, model, num_steps) @@ -376,12 +376,12 @@ def draw_iterations(π0s, model, line_params, π_bars, num_steps): axes[1].plot(np.arange(-1, num_steps-1), p_seq, **line_params) axes[2].plot(np.arange(-1, num_steps-1), π_seq, **line_params) axes[3].plot(np.arange(num_steps), μ_seq, **line_params) - + axes[2].axhline(y=π_bars[0], color='grey', linestyle='--', lw=1.5, alpha=0.6) axes[2].axhline(y=π_bars[1], color='grey', linestyle='--', lw=1.5, alpha=0.6) - axes[2].text(num_steps * 1.07, π_bars[0], r'$\pi_l$', verticalalignment='center', + axes[2].text(num_steps * 1.07, π_bars[0], r'$\pi_l$', verticalalignment='center', color='grey', size=10) - axes[2].text(num_steps * 1.07, π_bars[1], r'$\pi_u$', verticalalignment='center', + axes[2].text(num_steps * 1.07, π_bars[1], r'$\pi_u$', verticalalignment='center', color='grey', size=10) axes[0].set_ylabel('$m_t$') @@ -409,10 +409,10 @@ mystnb: --- πs = np.linspace(π_l, π_u, 10) -line_params = {'lw': 1.5, +line_params = {'lw': 1.5, 'marker': 'o', 'markersize': 3} - + π_bars = (π_l, π_u) draw_iterations(πs, model, line_params, π_bars, num_steps=80) ``` @@ -489,10 +489,9 @@ print(f"Cutting g in half reduces π_l by {π_l_bench - π_l_half:.4f}") ``` The two curves merge at $g_{\rm max}$ because the Laffer curve peaks there and -can no longer support two distinct inflation rates. As $g$ falls, $\pi_l$ -falls monotonically while $\pi_u$ rises — confirming the "old time religion": -under adaptive expectations the economy converges to the low-inflation -equilibrium, so a lower deficit directly implies lower inflation. +can no longer support two distinct inflation rates. + +As $g$ falls, $\pi_l$ falls monotonically while $\pi_u$ rises, confirming the "old time religion" that adaptive expectations select the low-inflation equilibrium where a lower deficit directly implies lower inflation. ```{solution-end} ``` @@ -566,12 +565,11 @@ for δ in δ_values: ``` **(c)** When $\delta$ is large, each period's revision of $\pi_t^*$ is a small -fraction $(1-\delta)$ of the forecast error — expectations are sticky. This -means the expectations signal that drives the economy toward $\pi_l$ arrives -only weakly each period, so the real inflation rate $\pi_t$ creeps toward the -steady state rather than jumping there quickly. A small $\delta$ gives -forecast errors full (or near-full) weight, snapping expectations to the -current observation and pulling $\pi_t$ to $\pi_l$ within just a few periods. +fraction $(1-\delta)$ of the forecast error, so expectations are sticky. + +This means the expectations signal that drives the economy toward $\pi_l$ arrives only weakly each period, so the real inflation rate $\pi_t$ creeps toward the steady state rather than jumping there quickly. + +A small $\delta$ gives forecast errors full or near-full weight, snapping expectations to the current observation and pulling $\pi_t$ to $\pi_l$ within just a few periods. ```{solution-end} ``` diff --git a/lectures/lln_clt.md b/lectures/lln_clt.md index 9ee46a6d6..fa28d3445 100644 --- a/lectures/lln_clt.md +++ b/lectures/lln_clt.md @@ -15,9 +15,9 @@ kernelspec: ## Overview -This lecture illustrates two of the most important results in probability and statistics: +This lecture illustrates two of the most important results in probability and statistics: -1. the law of large numbers (LLN) and +1. the law of large numbers (LLN) and 2. the central limit theorem (CLT). These beautiful theorems lie behind many of the most fundamental results in @@ -65,10 +65,10 @@ We can think of drawing $X$ as tossing a biased coin where We set $X=1$ if the coin is "heads" and zero otherwise. -The (population) mean of $X$ is +The (population) mean of $X$ is $$ - \mathbb E X + \mathbb E X = 0 \cdot \mathbb P\{X=0\} + 1 \cdot \mathbb P\{X=1\} = \mathbb P\{X=1\} = p $$ ``` @@ -82,7 +82,7 @@ print(X) ``` In this setting, the LLN tells us if we flip the coin many times, the fraction -of heads that we see will be close to the mean $p$. +of heads that we see will be close to the mean $p$. We use $n$ to represent the number of times the coin is flipped. @@ -107,7 +107,7 @@ converges to the "population mean". Think of $X_1, \ldots, X_n$ as independent flips of the coin. -The population mean is the mean in an infinite sample, which equals the +The population mean is the mean in an infinite sample, which equals the expectation $\mathbb E X$. The sample mean of the draws $X_1, \ldots, X_n$ is @@ -139,16 +139,16 @@ distribution. These random variables can be continuous or discrete. -For simplicity we will +For simplicity we will -* assume they are continuous and +* assume they are continuous and * let $f$ denote their common density function The last statement means that for any $i$ in $\{1, \ldots, n\}$ and any numbers $a, b$, -$$ +$$ \mathbb P\{a \leq X_i \leq b\} = \int_a^b f(x) dx $$ @@ -182,7 +182,7 @@ If $X_1, \ldots, X_n$ are IID and $\mathbb E |X|$ is finite, then ``` ```` -Here +Here * IID means independent and identically distributed and * $\mathbb E |X| = \int_{-\infty}^\infty |x| f(x) dx$ @@ -217,9 +217,9 @@ itself a random variable. The reason $\bar X_n$ is a random variable is that it's a function of the random variables $X_1, \ldots, X_n$. -What we are going to do now is +What we are going to do now is -1. pick some fixed distribution to draw each $X_i$ from +1. pick some fixed distribution to draw each $X_i$ from 1. set $n$ to some large number and then repeat the following three instructions. @@ -256,13 +256,13 @@ def draw_means(X_distribution, # The distribution of each X_i Now we write a function to generate $m$ sample means and histogram them. ```{code-cell} ipython3 -def generate_histogram(X_distribution, n, m): +def generate_histogram(X_distribution, n, m): # Compute m sample means sample_means = np.empty(m) for j in range(m): - sample_means[j] = draw_means(X_distribution, n) + sample_means[j] = draw_means(X_distribution, n) # Generate a histogram @@ -271,7 +271,7 @@ def generate_histogram(X_distribution, n, m): μ = X_distribution.mean() # Get the population mean σ = X_distribution.std() # and the standard deviation ax.axvline(x=μ, ls="--", c="k", label=fr"$\mu = {μ}$") - + ax.set_xlim(μ - σ, μ + σ) ax.set_xlabel(r'$\bar X_n$', size=12) ax.set_ylabel('density', size=12) @@ -283,7 +283,7 @@ Now we call the function. ```{code-cell} ipython3 # pick a distribution to draw each $X_i$ from -X_distribution = st.norm(loc=5, scale=2) +X_distribution = st.norm(loc=5, scale=2) # Call the function generate_histogram(X_distribution, n=1_000, m=1000) ``` @@ -298,7 +298,7 @@ We will use a [violin plot](https://intro.quantecon.org/prob_dist.html#violin-pl Each distribution in the violin plot represents the distribution of $X_n$ for some $n$, calculated by simulation. ```{code-cell} ipython3 -def means_violin_plot(distribution, +def means_violin_plot(distribution, ns = [1_000, 10_000, 100_000], m = 10_000): @@ -490,7 +490,7 @@ xmin, xmax = -3 * σ, 3 * σ ax.set_xlim(xmin, xmax) ax.hist(Y, bins=60, alpha=0.4, density=True) xgrid = np.linspace(xmin, xmax, 200) -ax.plot(xgrid, st.norm.pdf(xgrid, scale=σ), +ax.plot(xgrid, st.norm.pdf(xgrid, scale=σ), 'k-', lw=2, label=r'$N(0, \sigma^2)$') ax.set_xlabel(r"$Y_n$", size=12) ax.set_ylabel(r"$density$", size=12) @@ -509,7 +509,7 @@ The fit to the normal density is already tight and can be further improved by in -```{exercise} +```{exercise} :label: lln_ex1 Repeat the simulation [above](sim_one) with the [Beta distribution](https://en.wikipedia.org/wiki/Beta_distribution). @@ -552,7 +552,7 @@ plt.show() ```{solution-end} ``` -````{exercise} +````{exercise} :label: lln_ex2 At the start of this lecture we discussed Bernoulli random variables. @@ -592,14 +592,14 @@ This means that $X = \mathbf 1\{U < p\}$ has the right distribution. -```{exercise} +```{exercise} :label: lln_ex3 We mentioned above that LLN can still hold sometimes when IID is violated. Let's investigate this claim further. -Consider the AR(1) process +Consider the AR(1) process $$ X_{t+1} = \alpha + \beta X_t + \sigma \epsilon _{t+1} @@ -646,7 +646,7 @@ $$ &= \alpha + \beta \frac{\alpha}{1-\beta} \\ &= \frac{\alpha}{1-\beta} \end{aligned} -$$ +$$ We also have the correct variance: @@ -656,7 +656,7 @@ $$ &= \frac{\beta^2\sigma^2}{1-\beta^2} + \sigma^2 \\ &= \frac{\sigma^2}{1-\beta^2} \end{aligned} -$$ +$$ Finally, since both $X_t$ and $\epsilon_0$ are normally distributed and independent from each other, any linear combination of these two variables is @@ -665,9 +665,9 @@ also normally distributed. We have now shown that $$ - X_{t+1} \sim - N \left(\frac{\alpha}{1-\beta}, \frac{\sigma^2}{1-\beta^2}\right) -$$ + X_{t+1} \sim + N \left(\frac{\alpha}{1-\beta}, \frac{\sigma^2}{1-\beta^2}\right) +$$ We can conclude this AR(1) process violates the independence assumption but is identically distributed. @@ -696,8 +696,8 @@ ax.scatter(range(100, n), means[100:n], s=10, alpha=0.5) ax.set_xlabel(r"$n$", size=12) ax.set_ylabel(r"$\bar X_n$", size=12) yabs_max = max(ax.get_ylim(), key=abs) -ax.axhline(y=α/(1-β), ls="--", lw=3, - label=r"$\mu = \frac{\alpha}{1-\beta}$", +ax.axhline(y=α/(1-β), ls="--", lw=3, + label=r"$\mu = \frac{\alpha}{1-\beta}$", color = 'black') plt.legend() diff --git a/lectures/long_run_growth.md b/lectures/long_run_growth.md index e21bee1c0..19b3fa0b0 100644 --- a/lectures/long_run_growth.md +++ b/lectures/long_run_growth.md @@ -19,7 +19,7 @@ In this lecture we use Python, {doc}`pandas`, and {doc}`Matplotli In addition to learning how to deploy these tools more generally, we'll use them to describe facts about economic growth experiences across many countries over several centuries. -Such "growth facts" are interesting for a variety of reasons. +Such "growth facts" are interesting for a variety of reasons. Explaining growth facts is a principal purpose of both "development economics" and "economic history". @@ -44,7 +44,7 @@ US GDP surpassed that of the British Empire. For Adam Tooze, that fact was a key geopolitical underpinning for the "American century". -Looking at this graph and how it set the geopolitical stage for "the American (20th) century" naturally +Looking at this graph and how it set the geopolitical stage for "the American (20th) century" naturally tempts one to want a counterpart to his graph for 2014 or later. (An impatient reader seeking a hint at the answer might now want to jump ahead and look at figure {numref}`gdp2`.) @@ -53,11 +53,11 @@ As we'll see, reasoning by analogy, this graph perhaps set the stage for an "XXX As we gather data to construct those two graphs, we'll also study growth experiences for a number of countries for time horizons extending as far back as possible. -These graphs will portray how the "Industrial Revolution" began in Britain in the late 18th century, then migrated to one country after another. +These graphs will portray how the "Industrial Revolution" began in Britain in the late 18th century, then migrated to one country after another. -In a nutshell, this lecture records growth trajectories of various countries over long time periods. +In a nutshell, this lecture records growth trajectories of various countries over long time periods. -While some countries have experienced long-term rapid growth that has lasted a hundred years, others have not. +While some countries have experienced long-term rapid growth that has lasted a hundred years, others have not. Since populations differ across countries and vary within a country over time, it will be interesting to describe both total GDP and GDP per capita as it evolves within a country. @@ -77,7 +77,7 @@ from collections import namedtuple A project initiated by [Angus Maddison](https://en.wikipedia.org/wiki/Angus_Maddison) has collected many historical time series related to economic growth, some dating back to the first century. -The data can be downloaded from the [Maddison Historical Statistics](https://www.rug.nl/ggdc/historicaldevelopment/maddison/) by clicking on the "Latest Maddison Project Release". +The data can be downloaded from the [Maddison Historical Statistics](https://www.rug.nl/ggdc/historicaldevelopment/maddison/) by clicking on the "Latest Maddison Project Release". We are going to read the data from a QuantEcon GitHub repository. @@ -87,7 +87,7 @@ Here we read the Maddison data into a pandas `DataFrame`: ```{code-cell} ipython3 data_url = "https://github.com/QuantEcon/lecture-python-intro/raw/main/lectures/datasets/mpd2020.xlsx" -data = pd.read_excel(data_url, +data = pd.read_excel(data_url, sheet_name='Full data') data.head() ``` @@ -101,7 +101,7 @@ countries = data.country.unique() len(countries) ``` -We can now explore some of the 169 countries that are available. +We can now explore some of the 169 countries that are available. Let's loop over each country to understand which years are available for each country @@ -147,7 +147,7 @@ country_names = data['countrycode'] colors = cm.tab20(np.linspace(0, 0.95, len(country_names))) # Create a dictionary to map each country to its corresponding color -color_mapping = {country: color for +color_mapping = {country: color for country, color in zip(country_names, colors)} ``` @@ -243,19 +243,19 @@ def draw_interp_plots(series, # pandas series color=color_mapping[c], alpha=0.8, label=code_to_name.loc[c]['country']) - + if logscale: ax.set_yscale('log') - + # Draw the legend outside the plot ax.legend(loc='upper left', frameon=False) ax.set_ylabel(ylabel) ax.set_xlabel(xlabel) ``` -As you can see from this chart, economic growth started in earnest in the 18th century and continued for the next two hundred years. +As you can see from this chart, economic growth started in earnest in the 18th century and continued for the next two hundred years. -How does this compare with other countries' growth trajectories? +How does this compare with other countries' growth trajectories? Let's look at the United States (USA), United Kingdom (GBR), and China (CHN) @@ -273,7 +273,7 @@ Event = namedtuple('Event', ['year_range', 'y_text', 'text', 'color', 'ymax']) fig, ax = plt.subplots(dpi=300, figsize=(10, 6)) country = ['CHN', 'GBR', 'USA'] -draw_interp_plots(gdp_pc[country].loc[1500:], +draw_interp_plots(gdp_pc[country].loc[1500:], country, 'international dollars','year', color_mapping, code_to_name, 2, False, ax) @@ -281,31 +281,31 @@ draw_interp_plots(gdp_pc[country].loc[1500:], # Define the parameters for the events and the text ylim = ax.get_ylim()[1] b_params = {'color':'grey', 'alpha': 0.2} -t_params = {'fontsize': 9, +t_params = {'fontsize': 9, 'va':'center', 'ha':'center'} # Create a list of events to annotate events = [ - Event((1650, 1652), ylim + ylim*0.04, + Event((1650, 1652), ylim + ylim*0.04, 'the Navigation Act\n(1651)', color_mapping['GBR'], 1), - Event((1655, 1684), ylim + ylim*0.13, - 'Closed-door Policy\n(1655-1684)', + Event((1655, 1684), ylim + ylim*0.13, + 'Closed-door Policy\n(1655-1684)', color_mapping['CHN'], 1.1), Event((1848, 1850), ylim + ylim*0.22, - 'the Repeal of Navigation Act\n(1849)', + 'the Repeal of Navigation Act\n(1849)', color_mapping['GBR'], 1.18), - Event((1765, 1791), ylim + ylim*0.04, - 'American Revolution\n(1765-1791)', + Event((1765, 1791), ylim + ylim*0.04, + 'American Revolution\n(1765-1791)', color_mapping['USA'], 1), - Event((1760, 1840), ylim + ylim*0.13, - 'Industrial Revolution\n(1760-1840)', + Event((1760, 1840), ylim + ylim*0.13, + 'Industrial Revolution\n(1760-1840)', 'grey', 1.1), - Event((1929, 1939), ylim + ylim*0.04, - 'the Great Depression\n(1929–1939)', + Event((1929, 1939), ylim + ylim*0.04, + 'the Great Depression\n(1929–1939)', 'grey', 1), - Event((1978, 1979), ylim + ylim*0.13, - 'Reform and Opening-up\n(1978-1979)', + Event((1978, 1979), ylim + ylim*0.13, + 'Reform and Opening-up\n(1978-1979)', color_mapping['CHN'], 1.1) ] @@ -313,8 +313,8 @@ def draw_events(events, ax): # Iterate over events and add annotations and vertical lines for event in events: event_mid = sum(event.year_range)/2 - ax.text(event_mid, - event.y_text, event.text, + ax.text(event_mid, + event.y_text, event.text, color=event.color, **t_params) ax.axvspan(*event.year_range, color=event.color, alpha=0.2) ax.axvline(event_mid, ymin=1, ymax=event.ymax, color=event.color, @@ -326,7 +326,7 @@ plt.show() ``` The preceding graph of per capita GDP strikingly reveals how the spread of the Industrial Revolution has over time gradually lifted the living standards of substantial -groups of people +groups of people - most of the growth happened in the past 150 years after the Industrial Revolution. - per capita GDP in the US and UK rose and diverged from that of China from 1820 to 1940. @@ -339,7 +339,7 @@ It is fascinating to see China's GDP per capita levels from 1500 through to the Notice the long period of declining GDP per capital levels from the 1700s until the early 20th century. -Thus, the graph indicates +Thus, the graph indicates - a long economic downturn and stagnation after the Closed-door Policy by the Qing government. - China's very different experience than the UK's after the onset of the industrial revolution in the UK. @@ -357,7 +357,7 @@ tags: [hide-input] fig, ax = plt.subplots(dpi=300, figsize=(10, 6)) country = ['CHN'] -draw_interp_plots(gdp_pc[country].loc[1600:2000], +draw_interp_plots(gdp_pc[country].loc[1600:2000], country, 'international dollars','year', color_mapping, code_to_name, 2, True, ax) @@ -365,29 +365,29 @@ draw_interp_plots(gdp_pc[country].loc[1600:2000], ylim = ax.get_ylim()[1] events = [ -Event((1655, 1684), ylim + ylim*0.06, - 'Closed-door Policy\n(1655-1684)', +Event((1655, 1684), ylim + ylim*0.06, + 'Closed-door Policy\n(1655-1684)', 'tab:orange', 1), -Event((1760, 1840), ylim + ylim*0.06, - 'Industrial Revolution\n(1760-1840)', +Event((1760, 1840), ylim + ylim*0.06, + 'Industrial Revolution\n(1760-1840)', 'grey', 1), -Event((1839, 1842), ylim + ylim*0.2, - 'First Opium War\n(1839–1842)', +Event((1839, 1842), ylim + ylim*0.2, + 'First Opium War\n(1839–1842)', 'tab:red', 1.07), -Event((1861, 1895), ylim + ylim*0.4, - 'Self-Strengthening Movement\n(1861–1895)', +Event((1861, 1895), ylim + ylim*0.4, + 'Self-Strengthening Movement\n(1861–1895)', 'tab:blue', 1.14), -Event((1939, 1945), ylim + ylim*0.06, - 'WW 2\n(1939-1945)', +Event((1939, 1945), ylim + ylim*0.06, + 'WW 2\n(1939-1945)', 'tab:red', 1), -Event((1948, 1950), ylim + ylim*0.23, - 'Founding of PRC\n(1949)', +Event((1948, 1950), ylim + ylim*0.23, + 'Founding of PRC\n(1949)', color_mapping['CHN'], 1.08), -Event((1958, 1962), ylim + ylim*0.5, - 'Great Leap Forward\n(1958-1962)', +Event((1958, 1962), ylim + ylim*0.5, + 'Great Leap Forward\n(1958-1962)', 'tab:orange', 1.18), -Event((1978, 1979), ylim + ylim*0.7, - 'Reform and Opening-up\n(1978-1979)', +Event((1978, 1979), ylim + ylim*0.7, + 'Reform and Opening-up\n(1978-1979)', 'tab:blue', 1.24) ] @@ -400,7 +400,7 @@ plt.show() Now we look at the United States (USA) and United Kingdom (GBR) in more detail. -In the following graph, please watch for +In the following graph, please watch for - impact of trade policy (Navigation Act). - productivity changes brought by the Industrial Revolution. - how the US gradually approaches and then surpasses the UK, setting the stage for the ''American Century''. @@ -427,29 +427,29 @@ ylim = ax.get_ylim()[1] # Create a list of data points events = [ - Event((1651, 1651), ylim + ylim*0.15, - 'Navigation Act (UK)\n(1651)', + Event((1651, 1651), ylim + ylim*0.15, + 'Navigation Act (UK)\n(1651)', 'tab:orange', 1), - Event((1765, 1791), ylim + ylim*0.15, + Event((1765, 1791), ylim + ylim*0.15, 'American Revolution\n(1765-1791)', color_mapping['USA'], 1), - Event((1760, 1840), ylim + ylim*0.6, - 'Industrial Revolution\n(1760-1840)', + Event((1760, 1840), ylim + ylim*0.6, + 'Industrial Revolution\n(1760-1840)', 'grey', 1.08), - Event((1848, 1850), ylim + ylim*1.1, - 'Repeal of Navigation Act (UK)\n(1849)', + Event((1848, 1850), ylim + ylim*1.1, + 'Repeal of Navigation Act (UK)\n(1849)', 'tab:blue', 1.14), - Event((1861, 1865), ylim + ylim*1.8, - 'American Civil War\n(1861-1865)', + Event((1861, 1865), ylim + ylim*1.8, + 'American Civil War\n(1861-1865)', color_mapping['USA'], 1.21), - Event((1914, 1918), ylim + ylim*0.15, - 'WW 1\n(1914-1918)', + Event((1914, 1918), ylim + ylim*0.15, + 'WW 1\n(1914-1918)', 'tab:red', 1), - Event((1929, 1939), ylim + ylim*0.6, - 'the Great Depression\n(1929–1939)', + Event((1929, 1939), ylim + ylim*0.6, + 'the Great Depression\n(1929–1939)', 'grey', 1.08), - Event((1939, 1945), ylim + ylim*1.1, - 'WW 2\n(1939-1945)', + Event((1939, 1945), ylim + ylim*1.1, + 'WW 2\n(1939-1945)', 'tab:red', 1.14) ] @@ -491,7 +491,7 @@ mystnb: fig, ax = plt.subplots(dpi=300) country = ['CHN', 'SUN', 'JPN', 'GBR', 'USA'] start_year, end_year = (1820, 1945) -draw_interp_plots(gdp[country].loc[start_year:end_year], +draw_interp_plots(gdp[country].loc[start_year:end_year], country, 'international dollars', 'year', color_mapping, code_to_name, 2, False, ax) @@ -524,7 +524,7 @@ code_to_name = pd.concat([code_to_name, bem]) fig, ax = plt.subplots(dpi=300) country = ['DEU', 'USA', 'SUN', 'BEM', 'FRA', 'JPN'] start_year, end_year = (1821, 1945) -draw_interp_plots(gdp[country].loc[start_year:end_year], +draw_interp_plots(gdp[country].loc[start_year:end_year], country, 'international dollars', 'year', color_mapping, code_to_name, 2, False, ax) @@ -555,7 +555,7 @@ mystnb: fig, ax = plt.subplots(dpi=300) country = ['CHN', 'SUN', 'JPN', 'GBR', 'USA'] start_year, end_year = (1950, 2020) -draw_interp_plots(gdp[country].loc[start_year:end_year], +draw_interp_plots(gdp[country].loc[start_year:end_year], country, 'international dollars', 'year', color_mapping, code_to_name, 2, False, ax) @@ -570,8 +570,8 @@ We often want to study the historical experiences of countries outside the club The [Maddison Historical Statistics](https://www.rug.nl/ggdc/historicaldevelopment/maddison/) dataset also includes regional aggregations ```{code-cell} ipython3 -data = pd.read_excel(data_url, - sheet_name='Regional data', +data = pd.read_excel(data_url, + sheet_name='Regional data', header=(0,1,2), index_col=0) data.columns = data.columns.droplevel(level=2) diff --git a/lectures/lp_intro.md b/lectures/lp_intro.md index 52504a5aa..e7fc3bd6d 100644 --- a/lectures/lp_intro.md +++ b/lectures/lp_intro.md @@ -41,7 +41,7 @@ We provide a standard form of a linear program and methods to transform other fo We tell how to solve a linear programming problem using [SciPy](https://scipy.org/) and [Google OR-Tools](https://developers.google.com/optimization). ```{seealso} -In another lecture, we will employ the linear programming method to solve the +In another lecture, we will employ the linear programming method to solve the {doc}`optimal transport problem `. ``` diff --git a/lectures/money_inflation.md b/lectures/money_inflation.md index bd8e27a33..75c179c62 100644 --- a/lectures/money_inflation.md +++ b/lectures/money_inflation.md @@ -16,17 +16,17 @@ kernelspec: ## Overview This lecture extends and modifies the model in this lecture {doc}`cagan_ree` by modifying the -law of motion that governed the supply of money. +law of motion that governed the supply of money. The model in this lecture consists of two components -* a demand function for money +* a demand function for money * a law of motion for the supply of money - + The demand function describes the public's demand for "real balances", defined as the ratio of nominal money balances to the price level * it assumes that the demand for real balance today varies inversely with the rate of inflation that the public forecasts to prevail between today and tomorrow -* it assumes that the public's forecast of that rate of inflation is perfect +* it assumes that the public's forecast of that rate of inflation is perfect The law of motion for the supply of money assumes that the government prints money to finance government expenditures @@ -35,7 +35,7 @@ Our model equates the demand for money to the supply at each time $t \geq 0$. Equality between those demands and supply gives a *dynamic* model in which money supply and price level *sequences* are simultaneously determined by a set of simultaneous linear equations. -These equations take the form of what is often called vector linear **difference equations**. +These equations take the form of what is often called vector linear **difference equations**. In this lecture, we'll roll up our sleeves and solve those equations in two different ways. @@ -47,15 +47,15 @@ In this lecture we will encounter these concepts from macroeconomics: * an **inflation tax** that a government gathers by printing paper or electronic money * a dynamic **Laffer curve** in the inflation tax rate that has two stationary equilibria * perverse dynamics under rational expectations in which the system converges to the higher stationary inflation tax rate -* a peculiar comparative stationary-state outcome connected with that stationary inflation rate: it asserts that inflation can be *reduced* by running *higher* government deficits, i.e., by raising more resources by printing money. +* a peculiar comparative stationary-state outcome connected with that stationary inflation rate: it asserts that inflation can be *reduced* by running *higher* government deficits, i.e., by raising more resources by printing money. -The same qualitative outcomes prevail in this lecture {doc}`money_inflation_nonlinear` that studies a nonlinear version of the model in this lecture. +The same qualitative outcomes prevail in this lecture {doc}`money_inflation_nonlinear` that studies a nonlinear version of the model in this lecture. These outcomes set the stage for the analysis to be presented in this lecture {doc}`laffer_adaptive` that studies a nonlinear version of the present model; it assumes a version of "adaptive expectations" instead of rational expectations. -That lecture will show that +That lecture will show that -* replacing rational expectations with adaptive expectations leaves the two stationary inflation rates unchanged, but that $\ldots$ +* replacing rational expectations with adaptive expectations leaves the two stationary inflation rates unchanged, but that $\ldots$ * it reverses the perverse dynamics by making the *lower* stationary inflation rate the one to which the system typically converges * a more plausible comparative dynamic outcome emerges in which now inflation can be *reduced* by running *lower* government deficits @@ -72,26 +72,26 @@ We'll use these tools from linear algebra: We say demand*s* and suppl*ies* (plurals) because there is one of each for each $t \geq 0$. -Let +Let * $m_{t+1}$ be the supply of currency at the end of time $t \geq 0$ * $m_{t}$ be the supply of currency brought into time $t$ from time $t-1$ * $g$ be the government deficit that is financed by printing currency at $t \geq 1$ * $m_{t+1}^d$ be the demand at time $t$ for currency to bring into time $t+1$ * $p_t$ be the price level at time $t$ -* $b_t = \frac{m_{t+1}}{p_t}$ is real balances at the end of time $t$ +* $b_t = \frac{m_{t+1}}{p_t}$ is real balances at the end of time $t$ * $R_t = \frac{p_t}{p_{t+1}} $ be the gross rate of return on currency held from time $t$ to time $t+1$ - + It is often helpful to state units in which quantities are measured: * $m_t$ and $m_t^d$ are measured in dollars -* $g$ is measured in time $t$ goods +* $g$ is measured in time $t$ goods * $p_t$ is measured in dollars per time $t$ goods * $R_t$ is measured in time $t+1$ goods per unit of time $t$ goods * $b_t$ is measured in time $t$ goods - - -Our job now is to specify demand and supply functions for money. + + +Our job now is to specify demand and supply functions for money. We assume that the demand for currency satisfies the Cagan-like demand function @@ -99,20 +99,20 @@ $$ \frac{m_{t+1}^d}{p_t}=\gamma_1 - \gamma_2 \frac{p_{t+1}}{p_t}, \quad t \geq 0 $$ (eq:demandmoney) where $\gamma_1, \gamma_2$ are positive parameters. - + Now we turn to the supply of money. -We assume that $m_0 >0$ is an "initial condition" determined outside the model. +We assume that $m_0 >0$ is an "initial condition" determined outside the model. We set $m_0$ at some arbitrary positive value, say \$100. - + For $ t \geq 1$, we assume that the supply of money is determined by the government's budget constraint $$ m_{t+1} - m_{t} = p_t g , \quad t \geq 0 $$ (eq:budgcontraint) -According to this equation, each period, the government prints money to pay for quantity $g$ of goods. +According to this equation, each period, the government prints money to pay for quantity $g$ of goods. In an **equilibrium**, the demand for currency equals the supply: @@ -145,25 +145,25 @@ $$ b_t - b_{t-1} R_{t-1} = g $$ (eq:bmotion) -The demand for real balances is +The demand for real balances is $$ -b_t = \gamma_1 - \gamma_2 R_t^{-1} . +b_t = \gamma_1 - \gamma_2 R_t^{-1} . $$ (eq:bdemand) - + We'll restrict our attention to parameter values and associated gross real rates of return on real balances that assure that the demand for real balances is positive, which according to {eq}`eq:bdemand` means that $$ -b_t = \gamma_1 - \gamma_2 R_t^{-1} > 0 -$$ +b_t = \gamma_1 - \gamma_2 R_t^{-1} > 0 +$$ -which implies that +which implies that $$ R_t \geq \left( \frac{\gamma_2}{\gamma_1} \right) \equiv \underline R $$ (eq:Requation) -Gross real rate of return $\underline R$ is the smallest rate of return on currency +Gross real rate of return $\underline R$ is the smallest rate of return on currency that is consistent with a nonnegative demand for real balances. We shall describe two distinct but closely related ways of computing a pair $\{p_t, m_t\}_{t=0}^\infty$ of sequences for the price level and money supply. @@ -172,15 +172,15 @@ But first it is instructive to describe a special type of equilibrium known as a In a steady-state equilibrium, a subset of key variables remain constant or **invariant** over time, while remaining variables can be expressed as functions of those constant variables. -Finding such state variables is something of an art. +Finding such state variables is something of an art. -In many models, a good source of candidates for such invariant variables is a set of *ratios*. +In many models, a good source of candidates for such invariant variables is a set of *ratios*. This is true in the present model. ### Steady states -In a steady-state equilibrium of the model we are studying, +In a steady-state equilibrium of the model we are studying, $$ \begin{aligned} @@ -189,7 +189,7 @@ b_t & = \bar b \end{aligned} $$ -for $t \geq 0$. +for $t \geq 0$. Notice that both $R_t = \frac{p_t}{p_{t+1}}$ and $b_t = \frac{m_{t+1}}{p_t} $ are *ratios*. @@ -209,7 +209,7 @@ $$ $$ (eq:seignsteady) -The left side is the steady-state amount of **seigniorage** or government revenues that the government gathers by paying a gross rate of return $\bar R \le 1$ on currency. +The left side is the steady-state amount of **seigniorage** or government revenues that the government gathers by paying a gross rate of return $\bar R \le 1$ on currency. The right side is government expenditures. @@ -219,17 +219,17 @@ $$ S(\bar R) = (\gamma_1 + \gamma_2) - \frac{\gamma_2}{\bar R} - \gamma_1 \bar R $$ (eq:SSsigng) -Notice that $S(\bar R) \geq 0$ only when $\bar R \in [\frac{\gamma_2}{\gamma_1}, 1] +Notice that $S(\bar R) \geq 0$ only when $\bar R \in [\frac{\gamma_2}{\gamma_1}, 1] \equiv [\underline R, \overline R]$ and that $S(\bar R) = 0$ if $\bar R = \underline R$ or if $\bar R = \overline R$. We shall study equilibrium sequences that satisfy $$ -R_t \in [\underline R, \overline R], \quad t \geq 0. +R_t \in [\underline R, \overline R], \quad t \geq 0. $$ -Maximizing steady-state seigniorage {eq}`eq:SSsigng` with respect to $\bar R$, we find that the maximizing rate of return on currency is +Maximizing steady-state seigniorage {eq}`eq:SSsigng` with respect to $\bar R$, we find that the maximizing rate of return on currency is $$ \bar R_{\rm max} = \sqrt{\frac{\gamma_2}{\gamma_1}} @@ -249,7 +249,7 @@ $$ (eq:steadyquadratic) A steady state gross rate of return $\bar R$ solves quadratic equation {eq}`eq:steadyquadratic`. -So two steady states typically exist. +So two steady states typically exist. ## Some code @@ -269,17 +269,17 @@ First, we create a `namedtuple` to store parameters so that we can reuse this `n ```{code-cell} ipython3 # Create a namedtuple that contains parameters -MoneySupplyModel = namedtuple("MoneySupplyModel", - ["γ1", "γ2", "g", +MoneySupplyModel = namedtuple("MoneySupplyModel", + ["γ1", "γ2", "g", "M0", "R_u", "R_l"]) def create_model(γ1=100, γ2=50, g=3.0, M0=100): - + # Calculate the steady states for R R_steady = np.roots((-γ1, γ1 + γ2 - g, -γ2)) R_u, R_l = R_steady print("[R_u, R_l] =", R_steady) - + return MoneySupplyModel(γ1=γ1, γ2=γ2, g=g, M0=M0, R_u=R_u, R_l=R_l) ``` @@ -357,20 +357,20 @@ We now proceed to compute equilibria, not necessarily steady states. We shall deploy two distinct computation strategies. -### Method 1 +### Method 1 * set $R_0 \in [\frac{\gamma_2}{\gamma_1}, R_u]$ and compute $b_0 = \gamma_1 - \gamma_2/R_0$. -* compute sequences $\{R_t, b_t\}_{t=1}^\infty$ of rates of return and real balances that are associated with an equilibrium by solving equation {eq}`eq:bmotion` and {eq}`eq:bdemand` sequentially for $t \geq 1$: - +* compute sequences $\{R_t, b_t\}_{t=1}^\infty$ of rates of return and real balances that are associated with an equilibrium by solving equation {eq}`eq:bmotion` and {eq}`eq:bdemand` sequentially for $t \geq 1$: + $$ \begin{aligned} b_t & = b_{t-1} R_{t-1} + g \cr -R_t^{-1} & = \frac{\gamma_1}{\gamma_2} - \gamma_2^{-1} b_t +R_t^{-1} & = \frac{\gamma_1}{\gamma_2} - \gamma_2^{-1} b_t \end{aligned} $$ (eq:rtbt) -* Construct the associated equilibrium $p_0$ from +* Construct the associated equilibrium $p_0$ from $$ p_0 = \frac{m_0}{\gamma_1 - g - \gamma_2/R_0} @@ -381,10 +381,10 @@ $$ (eq:p0fromR0) $$ \begin{aligned} p_t & = R_t p_{t-1} \cr -m_t & = b_{t-1} p_t +m_t & = b_{t-1} p_t \end{aligned} -$$ (eq:method1) - +$$ (eq:method1) + ```{prf:remark} :label: method_1 Method 1 uses an indirect approach to computing an equilibrium by first computing an equilibrium $\{R_t, b_t\}_{t=0}^\infty$ sequence and then using it to back out an equilibrium $\{p_t, m_t\}_{t=0}^\infty$ sequence. @@ -392,7 +392,7 @@ Method 1 uses an indirect approach to computing an equilibrium by first computin ```{prf:remark} :label: initial_condition -Notice that method 1 starts by picking an **initial condition** $R_0$ from a set $[\frac{\gamma_2}{\gamma_1}, R_u]$. Equilibrium $\{p_t, m_t\}_{t=0}^\infty$ sequences are not unique. There is actually a continuum of equilibria indexed by a choice of $R_0$ from the set $[\frac{\gamma_2}{\gamma_1}, R_u]$. +Notice that method 1 starts by picking an **initial condition** $R_0$ from a set $[\frac{\gamma_2}{\gamma_1}, R_u]$. Equilibrium $\{p_t, m_t\}_{t=0}^\infty$ sequences are not unique. There is actually a continuum of equilibria indexed by a choice of $R_0$ from the set $[\frac{\gamma_2}{\gamma_1}, R_u]$. ``` ```{prf:remark} @@ -400,11 +400,11 @@ Notice that method 1 starts by picking an **initial condition** $R_0$ from a se Associated with each selection of $R_0$ there is a unique $p_0$ described by equation {eq}`eq:p0fromR0`. ``` - + ### Method 2 -This method deploys a direct approach. -It defines a "state vector" +This method deploys a direct approach. +It defines a "state vector" $y_t = \begin{bmatrix} m_t \cr p_t\end{bmatrix} $ and formulates equilibrium conditions {eq}`eq:demandmoney`, {eq}`eq:budgcontraint`, and {eq}`eq:syeqdemand` @@ -414,65 +414,65 @@ $$ y_{t+1} = M y_t, \quad t \geq 0 , $$ -where we temporarily take $y_0 = \begin{bmatrix} m_0 \cr p_0 \end{bmatrix}$ as an **initial condition**. +where we temporarily take $y_0 = \begin{bmatrix} m_0 \cr p_0 \end{bmatrix}$ as an **initial condition**. -The solution is +The solution is $$ y_t = M^t y_0 . $$ -Now let's think about the initial condition $y_0$. +Now let's think about the initial condition $y_0$. It is natural to take the initial stock of money $m_0 >0$ as an initial condition. -But what about $p_0$? +But what about $p_0$? Isn't it something that we want to be *determined* by our model? -Yes, but sometimes we want too much, because there is actually a continuum of initial $p_0$ levels that are compatible with the existence of an equilibrium. +Yes, but sometimes we want too much, because there is actually a continuum of initial $p_0$ levels that are compatible with the existence of an equilibrium. -As we shall see soon, selecting an initial $p_0$ in method 2 is intimately tied to selecting an initial rate of return on currency $R_0$ in method 1. - -## Computation method 1 +As we shall see soon, selecting an initial $p_0$ in method 2 is intimately tied to selecting an initial rate of return on currency $R_0$ in method 1. -%We start from an arbitrary $R_0$ and $b_t = \frac{m_{t+1}}{p_t}$, we have +## Computation method 1 + +%We start from an arbitrary $R_0$ and $b_t = \frac{m_{t+1}}{p_t}$, we have %$$ -%b_0 = \gamma_1 - \gamma_0 R_0^{-1} +%b_0 = \gamma_1 - \gamma_0 R_0^{-1} %$$ Remember that there exist two steady-state equilibrium values $ R_\ell < R_u$ of the rate of return on currency $R_t$. We proceed as follows. -Start at $t=0$ -* select a $R_0 \in [\frac{\gamma_2}{\gamma_1}, R_u]$ -* compute $b_0 = \gamma_1 - \gamma_0 R_0^{-1} $ - +Start at $t=0$ +* select a $R_0 \in [\frac{\gamma_2}{\gamma_1}, R_u]$ +* compute $b_0 = \gamma_1 - \gamma_0 R_0^{-1} $ + Then for $t \geq 1$ construct $b_t, R_t$ by iterating on equation {eq}`eq:rtbt`. -When we implement this part of method 1, we shall discover the following striking +When we implement this part of method 1, we shall discover the following striking outcome: -* starting from an $R_0$ in $[\frac{\gamma_2}{\gamma_1}, R_u]$, we shall find that +* starting from an $R_0$ in $[\frac{\gamma_2}{\gamma_1}, R_u]$, we shall find that $\{R_t\}$ always converges to a limiting "steady state" value $\bar R$ that depends on the initial condition $R_0$. -* there are only two possible limit points $\{ R_\ell, R_u\}$. +* there are only two possible limit points $\{ R_\ell, R_u\}$. * for almost every initial condition $R_0$, $\lim_{t \rightarrow +\infty} R_t = R_\ell$. * if and only if $R_0 = R_u$, $\lim_{t \rightarrow +\infty} R_t = R_u$. - + The quantity $1 - R_t$ can be interpreted as an **inflation tax rate** that the government imposes on holders of its currency. We shall soon see that the existence of two steady-state rates of return on currency -that serve to finance the government deficit of $g$ indicates the presence of a **Laffer curve** in the inflation tax rate. +that serve to finance the government deficit of $g$ indicates the presence of a **Laffer curve** in the inflation tax rate. ```{note} -Arthur Laffer's curve plots a hump shaped curve of revenue raised from a tax against the tax rate. +Arthur Laffer's curve plots a hump shaped curve of revenue raised from a tax against the tax rate. Its hump shape indicates that there are typically two tax rates that yield the same amount of revenue. This is due to two countervailing courses, one being that raising a tax rate typically decreases the **base** of the tax as people take decisions to reduce their exposure to the tax. ``` @@ -502,43 +502,43 @@ Let's write some code to plot outcomes for several possible initial values $R_0$ ```{code-cell} ipython3 :tags: [hide-cell] -line_params = {'lw': 1.5, +line_params = {'lw': 1.5, 'marker': 'o', 'markersize': 3} def annotate_graph(ax, model, num_steps): - for y, label in [(model.R_u, '$R_u$'), (model.R_l, '$R_l$'), + for y, label in [(model.R_u, '$R_u$'), (model.R_l, '$R_l$'), (model.γ2 / model.γ1, r'$\frac{\gamma_2}{\gamma_1}$')]: ax.axhline(y=y, color='grey', linestyle='--', lw=1.5, alpha=0.6) - ax.text(num_steps * 1.02, y, label, verticalalignment='center', + ax.text(num_steps * 1.02, y, label, verticalalignment='center', color='grey', size=12) def draw_paths(R0_values, model, line_params, num_steps): fig, axes = plt.subplots(2, 1, figsize=(8, 8), sharex=True) - + # Pre-compute time steps - time_steps = np.arange(num_steps) - - # Iterate over R_0s and simulate the system + time_steps = np.arange(num_steps) + + # Iterate over R_0s and simulate the system for R0 in R0_values: b_values, R_values = simulate_system(R0, model, num_steps) - + # Plot R_t against time axes[0].plot(time_steps, R_values, **line_params) - + # Plot b_t against time axes[1].plot(time_steps, b_values, **line_params) - - # Add line and text annotations to the subgraph + + # Add line and text annotations to the subgraph annotate_graph(axes[0], model, num_steps) - + # Add Labels axes[0].set_ylabel('$R_t$') axes[1].set_xlabel('timestep') axes[1].set_ylabel('$b_t$') axes[1].xaxis.set_major_locator(MaxNLocator(integer=True)) - + plt.tight_layout() plt.show() ``` @@ -564,11 +564,11 @@ draw_paths(R0s, msm, line_params, num_steps=20) Notice how sequences that start from $R_0$ in the half-open interval $[R_\ell, R_u)$ converge to the steady state associated with to $ R_\ell$. -## Computation method 2 +## Computation method 2 -Set $m_t = m_t^d $ for all $t \geq -1$. +Set $m_t = m_t^d $ for all $t \geq -1$. -Let +Let $$ y_t = \begin{bmatrix} m_{t} \cr p_{t} \end{bmatrix} . @@ -580,30 +580,30 @@ $$ \begin{bmatrix} 1 & \gamma_2 \cr 1 & 0 \end{bmatrix} \begin{bmatrix} m_{t+1} \cr p_{t+1} \end{bmatrix} = \begin{bmatrix} 0 & \gamma_1 \cr - 1 & g \end{bmatrix} \begin{bmatrix} m_{t} \cr p_{t} \end{bmatrix} + 1 & g \end{bmatrix} \begin{bmatrix} m_{t} \cr p_{t} \end{bmatrix} $$ (eq:sytem101) or -$$ -H_1 y_t = H_2 y_{t-1} +$$ +H_1 y_t = H_2 y_{t-1} $$ -where +where $$ \begin{aligned} H_1 & = \begin{bmatrix} 1 & \gamma_2 \cr 1 & 0 \end{bmatrix} \cr H_2 & = \begin{bmatrix} 0 & \gamma_1 \cr - 1 & g \end{bmatrix} + 1 & g \end{bmatrix} \end{aligned} $$ ```{code-cell} ipython3 -H1 = np.array([[1, msm.γ2], +H1 = np.array([[1, msm.γ2], [1, 0]]) -H2 = np.array([[0, msm.γ1], - [1, msm.g]]) +H2 = np.array([[0, msm.γ1], + [1, msm.g]]) ``` Define @@ -620,7 +620,7 @@ print('H = \n', H) and write the system {eq}`eq:sytem101` as $$ -y_{t+1} = H y_t, \quad t \geq 0 +y_{t+1} = H y_t, \quad t \geq 0 $$ (eq:Vaughn) so that $\{y_t\}_{t=0}$ can be computed from @@ -629,7 +629,7 @@ $$ y_t = H^t y_0, t \geq 0 $$ (eq:ytiterate) -where +where $$ y_0 = \begin{bmatrix} m_{0} \cr p_0 \end{bmatrix} . @@ -642,20 +642,20 @@ it is something that we actually wanted to be determined by the model. (As usual, we should listen when mathematics talks to us.) -For now, let's just proceed mechanically on faith. +For now, let's just proceed mechanically on faith. -Compute the eigenvector decomposition +Compute the eigenvector decomposition $$ -H = Q \Lambda Q^{-1} -$$ +H = Q \Lambda Q^{-1} +$$ where $\Lambda$ is a diagonal matrix of eigenvalues and the columns of $Q$ are eigenvectors corresponding to those eigenvalues. -It turns out that +It turns out that $$ -\Lambda = \begin{bmatrix} {R_\ell}^{-1} & 0 \cr +\Lambda = \begin{bmatrix} {R_\ell}^{-1} & 0 \cr 0 & {R_u}^{-1} \end{bmatrix} $$ @@ -677,30 +677,30 @@ print(f'R_u = {R_u:.4f}') Partition $Q$ as -$$ +$$ Q =\begin{bmatrix} Q_{11} & Q_{12} \cr Q_{21} & Q_{22} \end{bmatrix} $$ -Below we shall verify the following claims: +Below we shall verify the following claims: -**Claims:** If we set +**Claims:** If we set $$ p_0 = \overline p_0 \equiv Q_{21} Q_{11}^{-1} m_{0} , $$ (eq:magicp0) -it turns out that +it turns out that -$$ +$$ \frac{p_{t+1}}{p_t} = {R_u}^{-1}, \quad t \geq 0 $$ -However, if we set +However, if we set -$$ +$$ p_0 > \bar p_0 $$ @@ -732,7 +732,7 @@ def iterate_H(y_0, H, num_steps): Q_inv = np.linalg.inv(Q) y = np.stack( [Q @ np.diag(Λ**t) @ Q_inv @ y_0 for t in range(num_steps)], 1) - + return y ``` @@ -744,10 +744,10 @@ To understand this situation, we use the following transformation $$ -y^*_t = Q^{-1} y_t . +y^*_t = Q^{-1} y_t . $$ -Dynamics of $y^*_t$ are evidently governed by +Dynamics of $y^*_t$ are evidently governed by $$ y^*_{t+1} = \Lambda^t y^*_t . @@ -755,7 +755,7 @@ $$ (eq:stardynamics) This equation represents the dynamics of our system in a way that lets us isolate the force that causes gross inflation to converge to the inverse of the lower steady-state rate -of inflation $R_\ell$ that we discovered earlier. +of inflation $R_\ell$ that we discovered earlier. Staring at equation {eq}`eq:stardynamics` indicates that unless @@ -766,11 +766,11 @@ y^*_0 = \begin{bmatrix} y^*_{1,0} \cr 0 \end{bmatrix} ``` the path of $y^*_t$, and therefore the paths of both $m_t$ and $p_t$ given by -$y_t = Q y^*_t$ will eventually grow at gross rates ${R_\ell}^{-1}$ as -$t \rightarrow +\infty$. +$y_t = Q y^*_t$ will eventually grow at gross rates ${R_\ell}^{-1}$ as +$t \rightarrow +\infty$. Equation {eq}`equation_11` also leads us to conclude that there is a unique setting -for the initial vector $y_0$ for which both components forever grow at the lower rate ${R_u}^{-1}$. +for the initial vector $y_0$ for which both components forever grow at the lower rate ${R_u}^{-1}$. For this to occur, the required setting of $y_0$ must evidently have the property @@ -821,7 +821,7 @@ p_0 = - (Q^{22})^{-1} Q^{21} m_0. ``` -### More convenient formula +### More convenient formula We can get the equivalent but perhaps more convenient formula {eq}`eq:magicp0` for $p_0$ that is cast in terms of components of $Q$ instead of components of @@ -880,10 +880,10 @@ We create a function `draw_iterations` to generate the plot def draw_iterations(p0s, model, line_params, num_steps): fig, axes = plt.subplots(3, 1, figsize=(8, 10), sharex=True) - + # Pre-compute time steps - time_steps = np.arange(num_steps) - + time_steps = np.arange(num_steps) + # Plot the first two y-axes in log scale for ax in axes[:2]: ax.set_yscale('log') @@ -899,20 +899,20 @@ def draw_iterations(p0s, model, line_params, num_steps): # Plot b_t against time axes[1].plot(time_steps, P, **line_params) - + # Calculate R_t R = np.insert(P[:-1] / P[1:], 0, np.nan) axes[2].plot(time_steps, R, **line_params) - - # Add line and text annotations to the subgraph + + # Add line and text annotations to the subgraph annotate_graph(axes[2], model, num_steps) - + # Draw labels axes[0].set_ylabel('$m_t$') axes[1].set_ylabel('$p_t$') axes[2].set_ylabel('$R_t$') axes[2].set_xlabel('timestep') - + # Enforce integar axis label axes[2].xaxis.set_major_locator(MaxNLocator(integer=True)) @@ -935,7 +935,7 @@ p0s = [p0_bar, 2.34, 2.5, 3, 4, 7, 30, 100_000] draw_iterations(p0s, msm, line_params, num_steps=20) ``` -Please notice that for $m_t$ and $p_t$, we have used log scales for the coordinate (i.e., vertical) axes. +Please notice that for $m_t$ and $p_t$, we have used log scales for the coordinate (i.e., vertical) axes. Using log scales allows us to spot distinct constant limiting gross rates of growth ${R_u}^{-1}$ and ${R_\ell}^{-1}$ by eye. @@ -948,13 +948,13 @@ As promised at the start of this lecture, we have encountered these concepts fro * an **inflation tax** that a government gathers by printing paper or electronic money * a dynamic **Laffer curve** in the inflation tax rate that has two stationary equilibria -Staring at the paths of rates of return on the price level in figure {numref}`R0_path` and price levels in {numref}`p0_path` show indicate that almost all paths converge to the *higher* inflation tax rate displayed in the stationary state Laffer curve displayed in figure {numref}`infl_tax`. +Staring at the paths of rates of return on the price level in figure {numref}`R0_path` and price levels in {numref}`p0_path` show indicate that almost all paths converge to the *higher* inflation tax rate displayed in the stationary state Laffer curve displayed in figure {numref}`infl_tax`. Thus, we have indeed discovered what we earlier called "perverse" dynamics under rational expectations in which the system converges to the higher of two possible stationary inflation tax rates. Those dynamics are "perverse" not only in the sense that they imply that the monetary and fiscal authorities that have chosen to finance government expenditures eventually impose a higher inflation tax than required to finance government expenditures, but because of the following "counterintuitive" situation that we can deduce by staring at the stationary state Laffer curve displayed in figure {numref}`infl_tax`: -* the figure indicates that inflation can be *reduced* by running *higher* government deficits, i.e., by raising more resources through printing money. +* the figure indicates that inflation can be *reduced* by running *higher* government deficits, i.e., by raising more resources through printing money. ```{note} @@ -962,24 +962,24 @@ The same qualitative outcomes prevail in this lecture {doc}`money_inflation_nonl ``` -## Equilibrium selection +## Equilibrium selection We have discovered that as a model of price level paths or model is **incomplete** because there is a continuum of "equilibrium" paths for $\{m_{t+1}, p_t\}_{t=0}^\infty$ that are consistent with the demand for real balances always equaling the supply. - + Through application of our computational methods 1 and 2, we have learned that this continuum can be indexed by choice of one of two scalars: -* for computational method 1, $R_0$ +* for computational method 1, $R_0$ * for computational method 2, $p_0$ -To apply our model, we have somehow to *complete* it by *selecting* an equilibrium path from among the continuum of possible paths. +To apply our model, we have somehow to *complete* it by *selecting* an equilibrium path from among the continuum of possible paths. -We discovered that +We discovered that * all but one of the equilibrium paths converge to limits in which the higher of two possible stationary inflation tax prevails * there is a unique equilibrium path associated with "plausible" statements about how reductions in government deficits affect a stationary inflation rate -On grounds of plausibility, we recommend following many macroeconomists in selecting the unique equilibrium that converges to the lower stationary inflation tax rate. +On grounds of plausibility, we recommend following many macroeconomists in selecting the unique equilibrium that converges to the lower stationary inflation tax rate. As we shall see, we shall accept this recommendation in lecture {doc}`unpleasant`. @@ -1051,6 +1051,7 @@ plt.show() ``` **(c)** The steady-state quadratic is $-\gamma_1 \bar R^2 + (\gamma_1+\gamma_2-g)\bar R - \gamma_2 = 0$. + Its discriminant is $(\gamma_1+\gamma_2-g)^2 - 4\gamma_1\gamma_2$. ```{code-cell} ipython3 @@ -1064,9 +1065,10 @@ print(f"Roots are real: {np.all(np.isreal(roots))}") ``` When $g > g_{\rm max}$ the discriminant is negative and there are no real -steady-state rates of return on currency. Economically, the government is -trying to finance a deficit that exceeds the maximum amount of seigniorage -the inflation tax can ever raise, regardless of the inflation rate chosen. +steady-state rates of return on currency. + +Economically, the government is trying to finance a deficit that exceeds the maximum amount of seigniorage the inflation tax can ever raise, regardless of the inflation rate chosen. + No stationary equilibrium exists. ```{solution-end} @@ -1136,7 +1138,10 @@ print(f" R_l from curve = {R_l_curve[np.argmin(np.abs(g_grid - msm.g))]:.4f}, ``` The two branches of the Laffer curve start apart at $g=0$ and merge at -$g = g_{\rm max}$. For $g > g_{\rm max}$ no real steady state exists. +$g = g_{\rm max}$. + +For $g > g_{\rm max}$ no real steady state exists. + The upper branch $R_u(g)$ falls and the lower branch $R_l(g)$ rises as $g$ increases, reflecting the increasing inflation tax needed to finance a larger deficit. @@ -1215,8 +1220,10 @@ print(f"Eigendecomposition formula: p0 = {p0_bar:.6f}") ``` Parts (a) and (c) confirm that both methods select exactly the same unique -initial price level. Part (b) shows the quantity-theory proportionality: -doubling $m_0$ exactly doubles $\bar p_0$, with constant slope $Q_{21}/Q_{11}$. +initial price level. + +Part (b) shows the quantity-theory proportionality that doubling $m_0$ exactly doubles $\bar p_0$, with constant slope $Q_{21}/Q_{11}$. + This linearity is a direct consequence of the linearity of the model. ```{solution-end} diff --git a/lectures/money_inflation_nonlinear.md b/lectures/money_inflation_nonlinear.md index 5de666e98..9ae3974ce 100644 --- a/lectures/money_inflation_nonlinear.md +++ b/lectures/money_inflation_nonlinear.md @@ -11,59 +11,59 @@ kernelspec: name: python3 --- -# Inflation Rate Laffer Curves +# Inflation Rate Laffer Curves ## Overview We study stationary and dynamic *Laffer curves* in the inflation tax rate in a non-linear version of the model studied in {doc}`money_inflation`. We use the log-linear version of the demand function for money that {cite}`Cagan` -used in his classic paper in place of the linear demand function used in {doc}`money_inflation`. +used in his classic paper in place of the linear demand function used in {doc}`money_inflation`. That change requires that we modify parts of our analysis. -In particular, our dynamic system is no longer linear in state variables. +In particular, our dynamic system is no longer linear in state variables. -Nevertheless, the economic logic underlying an analysis based on what we called ''method 2'' remains unchanged. +Nevertheless, the economic logic underlying an analysis based on what we called ''method 2'' remains unchanged. We shall discover qualitatively similar outcomes to those that we studied in {doc}`money_inflation`. -That lecture presented a linear version of the model in this lecture. +That lecture presented a linear version of the model in this lecture. As in that lecture, we discussed these topics: * an **inflation tax** that a government gathers by printing paper or electronic money * a dynamic **Laffer curve** in the inflation tax rate that has two stationary equilibria * perverse dynamics under rational expectations in which the system converges to the higher stationary inflation tax rate -* a peculiar comparative stationary-state analysis connected with that stationary inflation rate that asserts that inflation can be *reduced* by running *higher* government deficits +* a peculiar comparative stationary-state analysis connected with that stationary inflation rate that asserts that inflation can be *reduced* by running *higher* government deficits These outcomes will set the stage for the analysis of {doc}`laffer_adaptive` that studies a version of the present model that uses a version of "adaptive expectations" instead of rational expectations. -That lecture will show that +That lecture will show that -* replacing rational expectations with adaptive expectations leaves the two stationary inflation rates unchanged, but that $\ldots$ +* replacing rational expectations with adaptive expectations leaves the two stationary inflation rates unchanged, but that $\ldots$ * it reverses the perverse dynamics by making the *lower* stationary inflation rate the one to which the system typically converges * a more plausible comparative dynamic outcome emerges in which now inflation can be *reduced* by running *lower* government deficits ## The Model -Let +Let * $m_t$ be the log of the money supply at the beginning of time $t$ * $p_t$ be the log of the price level at time $t$ - -The demand function for money is + +The demand function for money is $$ -m_{t+1} - p_t = -\alpha (p_{t+1} - p_t) +m_{t+1} - p_t = -\alpha (p_{t+1} - p_t) $$ (eq:mdemand) -where $\alpha \geq 0$. +where $\alpha \geq 0$. The law of motion of the money supply is -$$ -\exp(m_{t+1}) - \exp(m_t) = g \exp(p_t) +$$ +\exp(m_{t+1}) - \exp(m_t) = g \exp(p_t) $$ (eq:msupply) where $g$ is the part of government expenditures financed by printing money. @@ -79,7 +79,7 @@ Please notice that while equation {eq}`eq:mdemand` is linear in logs of the mone We can compute the two prospective limiting values for $\overline \pi$ by studying the steady-state Laffer curve. -Thus, in a *steady state* +Thus, in a *steady state* $$ m_{t+1} - m_t = p_{t+1} - p_t = x \quad \forall t , @@ -90,20 +90,20 @@ where $x > 0 $ is a common rate of growth of logarithms of the money supply and A few lines of algebra yields the following equation that $x$ satisfies $$ -\exp(-\alpha x) - \exp(-(1 + \alpha) x) = g +\exp(-\alpha x) - \exp(-(1 + \alpha) x) = g $$ (eq:steadypi) where we require that $$ -g \leq \max_{x \geq 0} \{\exp(-\alpha x) - \exp(-(1 + \alpha) x) \}, +g \leq \max_{x \geq 0} \{\exp(-\alpha x) - \exp(-(1 + \alpha) x) \}, $$ (eq:revmax) so that it is feasible to finance $g$ by printing money. The left side of {eq}`eq:steadypi` is steady state revenue raised by printing money. -The right side of {eq}`eq:steadypi` is the quantity of time $t$ goods that the government raises by printing money. +The right side of {eq}`eq:steadypi` is the quantity of time $t$ goods that the government raises by printing money. Soon we'll plot the left and right sides of equation {eq}`eq:steadypi`. @@ -117,7 +117,7 @@ from collections import namedtuple import numpy as np import matplotlib.pyplot as plt from matplotlib.ticker import MaxNLocator -from scipy.optimize import fsolve +from scipy.optimize import fsolve ``` +++ {"user_expressions": []} @@ -125,7 +125,7 @@ from scipy.optimize import fsolve Let's create a `namedtuple` to store the parameters of the model ```{code-cell} ipython3 -CaganLaffer = namedtuple('CaganLaffer', +CaganLaffer = namedtuple('CaganLaffer', ["m0", # log of the money supply at t=0 "α", # sensitivity of money demand "λ", @@ -173,11 +173,11 @@ mystnb: --- def compute_seign(x, α): - return np.exp(-α * x) - np.exp(-(1 + α) * x) + return np.exp(-α * x) - np.exp(-(1 + α) * x) def plot_laffer(model, πs): α, g = model.α, model.g - + # Generate π values x_values = np.linspace(0, 5, 1000) @@ -185,14 +185,14 @@ def plot_laffer(model, πs): y_values = compute_seign(x_values, α) # Plot the function - plt.plot(x_values, y_values, + plt.plot(x_values, y_values, label=f'Laffer curve') for π, label in zip(πs, [r'$\pi_l$', r'$\pi_u$']): - plt.text(π, plt.gca().get_ylim()[0]*2, + plt.text(π, plt.gca().get_ylim()[0]*2, label, horizontalalignment='center', color='brown', size=10) plt.axvline(π, color='brown', linestyle='--') - plt.axhline(g, color='red', linewidth=0.5, + plt.axhline(g, color='red', linewidth=0.5, linestyle='--', label='g') plt.xlabel(r'$\pi$') plt.ylabel('seigniorage') @@ -219,23 +219,23 @@ def solve_p0(p0, m0, α, g, π): return np.log(np.exp(m0) + g * np.exp(p0)) + α * π - p0 def solve_p0_bar(model, x0, π_bar): - p0_bar = fsolve(solve_p0, x0=x0, xtol=1e-20, args=(model.m0, - model.α, - model.g, + p0_bar = fsolve(solve_p0, x0=x0, xtol=1e-20, args=(model.m0, + model.α, + model.g, π_bar))[0] return p0_bar # Compute two initial price levels associated with π_l and π_u -p0_l = solve_p0_bar(model, - x0=np.log(220), +p0_l = solve_p0_bar(model, + x0=np.log(220), π_bar=π_l) -p0_u = solve_p0_bar(model, - x0=np.log(220), +p0_u = solve_p0_bar(model, + x0=np.log(220), π_bar=π_u) print(f'Associated initial p_0s are: {p0_l, p0_u}') ``` -### Verification +### Verification To start, let's write some code to verify that if the initial log price level $p_0$ takes one of the two values we just calculated, the inflation rate $\pi_t$ will be constant for all $t \geq 0$. @@ -249,7 +249,7 @@ def simulate_seq(p0, model, num_steps): π_seq, μ_seq, m_seq, p_seq = [], [], [model.m0], [p0] for t in range(num_steps): - + m_seq.append(np.log(np.exp(m_seq[t]) + g * np.exp(p_seq[t]))) p_seq.append(1/λ * p_seq[t] + (1 - 1/λ) * m_seq[t+1]) @@ -265,7 +265,7 @@ def simulate_seq(p0, model, num_steps): # Check π and μ at steady state print('π_bar == μ_bar:', π_seq[-1] == μ_seq[-1]) -# Check steady state m_{t+1} - m_t and p_{t+1} - p_t +# Check steady state m_{t+1} - m_t and p_{t+1} - p_t print('m_{t+1} - m_t:', m_seq[-1] - m_seq[-2]) print('p_{t+1} - p_t:', p_seq[-1] - p_seq[-2]) @@ -275,14 +275,14 @@ eq_g = lambda x: np.exp(-model.α * x) - np.exp(-(1 + model.α) * x) print('eq_g == g:', np.isclose(eq_g(m_seq[-1] - m_seq[-2]), model.g)) ``` -## Computing an Equilibrium Sequence +## Computing an Equilibrium Sequence -We'll deploy a method similar to *Method 2* used in {doc}`money_inflation`. +We'll deploy a method similar to *Method 2* used in {doc}`money_inflation`. We'll take the time $t$ state vector to be the pair $(m_t, p_t)$. We'll treat $m_t$ as a ``natural state variable`` and $p_t$ as a ``jump`` variable. - + Let $$ @@ -292,7 +292,7 @@ $$ Let's rewrite equation {eq}`eq:mdemand` as $$ -p_t = (1-\lambda) m_{t+1} + \lambda p_{t+1} +p_t = (1-\lambda) m_{t+1} + \lambda p_{t+1} $$ (eq:mdemand2) We'll summarize our algorithm with the following pseudo-code. @@ -317,22 +317,22 @@ Now initiate the algorithm as follows. * set $m_0 >0$ * set a value of $p_0 \in [\underline p(m_0), \overline p(m_0)]$ and form the pair $(m_0, p_0)$ at time $t =0$ - + Starting from $(m_0, p_0)$ iterate on $t$ to convergence of $\pi_t \rightarrow \overline \pi$ and $\mu_t \rightarrow \overline \mu$ - -It will turn out that + +It will turn out that * if they exist, limiting values $\overline \pi$ and $\overline \mu$ will be equal * if limiting values exist, there are two possible limiting values, one high, one low -* for almost all initial log price levels $p_0$, the limiting $\overline \pi = \overline \mu$ is +* for almost all initial log price levels $p_0$, the limiting $\overline \pi = \overline \mu$ is the higher value * for each of the two possible limiting values $\overline \pi$ ,there is a unique initial log price level $p_0$ that implies that $\pi_t = \mu_t = \overline \mu$ for all $t \geq 0$ * this unique initial log price level solves $\log(\exp(m_0) + g \exp(p_0)) - p_0 = - \alpha \overline \pi $ - + * the preceding equation for $p_0$ comes from $m_1 - p_0 = - \alpha \overline \pi$ @@ -346,10 +346,10 @@ We are now equipped to compute time series starting from different $p_0$ setti def draw_iterations(p0s, model, line_params, p0_bars, num_steps): fig, axes = plt.subplots(4, 1, figsize=(8, 10), sharex=True) - + # Pre-compute time steps - time_steps = np.arange(num_steps) - + time_steps = np.arange(num_steps) + # Plot the first two y-axes in log scale for ax in axes[:2]: ax.set_yscale('log') @@ -363,27 +363,27 @@ def draw_iterations(p0s, model, line_params, p0_bars, num_steps): # Plot p_t axes[1].plot(time_steps, p_seq[1:], **line_params) - + # Plot π_t axes[2].plot(time_steps, π_seq, **line_params) - + # Plot μ_t axes[3].plot(time_steps, μ_seq, **line_params) - + # Draw labels axes[0].set_ylabel('$m_t$') axes[1].set_ylabel('$p_t$') axes[2].set_ylabel(r'$\pi_t$') axes[3].set_ylabel(r'$\mu_t$') axes[3].set_xlabel('timestep') - + for p_0, label in [(p0_bars[0], '$p_0=p_l$'), (p0_bars[1], '$p_0=p_u$')]: y = simulate_seq(p_0, model, 1)[0] for ax in axes[2:]: ax.axhline(y=y[0], color='grey', linestyle='--', lw=1.5, alpha=0.6) - ax.text(num_steps * 1.02, y[0], label, verticalalignment='center', + ax.text(num_steps * 1.02, y[0], label, verticalalignment='center', color='grey', size=10) - + # Enforce integar axis label axes[3].xaxis.set_major_locator(MaxNLocator(integer=True)) @@ -403,36 +403,36 @@ mystnb: --- # Generate a sequence from p0_l to p0_u -p0s = np.arange(p0_l, p0_u, 0.1) +p0s = np.arange(p0_l, p0_u, 0.1) -line_params = {'lw': 1.5, +line_params = {'lw': 1.5, 'marker': 'o', 'markersize': 3} p0_bars = (p0_l, p0_u) - + draw_iterations(p0s, model, line_params, p0_bars, num_steps=20) ``` -Staring at the paths of price levels in {numref}`p0_path_nonlin` reveals that almost all paths converge to the *higher* inflation tax rate displayed in the stationary state Laffer curve. displayed in figure {numref}`laffer_curve_nonlinear`. +Staring at the paths of price levels in {numref}`p0_path_nonlin` reveals that almost all paths converge to the *higher* inflation tax rate displayed in the stationary state Laffer curve. displayed in figure {numref}`laffer_curve_nonlinear`. Thus, we have reconfirmed what we have called the "perverse" dynamics under rational expectations in which the system converges to the higher of two possible stationary inflation tax rates. Those dynamics are "perverse" not only in the sense that they imply that the monetary and fiscal authorities that have chosen to finance government expenditures eventually impose a higher inflation tax than required to finance government expenditures, but because of the following "counterintuitive" situation that we can deduce by staring at the stationary state Laffer curve displayed in figure {numref}`laffer_curve_nonlinear`: -* the figure indicates that inflation can be *reduced* by running *higher* government deficits, i.e., by raising more resources through printing money. +* the figure indicates that inflation can be *reduced* by running *higher* government deficits, i.e., by raising more resources through printing money. ```{note} The same qualitative outcomes prevail in {doc}`money_inflation` that studies a linear version of the model in this lecture. ``` -We discovered that +We discovered that * all but one of the equilibrium paths converge to limits in which the higher of two possible stationary inflation tax prevails * there is a unique equilibrium path associated with "plausible" statements about how reductions in government deficits affect a stationary inflation rate As in {doc}`money_inflation`, -on grounds of plausibility, we again recommend selecting the unique equilibrium that converges to the lower stationary inflation tax rate. +on grounds of plausibility, we again recommend selecting the unique equilibrium that converges to the lower stationary inflation tax rate. As we shall see, we accepting this recommendation is a key ingredient of outcomes of the "unpleasant arithmetic" that we describe in {doc}`unpleasant`. @@ -533,10 +533,11 @@ print(f"max L(x) - g = {residual.max():.8f} (always negative)") ``` When $g > g_{\rm max}$, the equation $L(x) = g$ has no real solution for any -$x \geq 0$. Economically, the inflation tax cannot raise enough revenue to -cover the deficit at *any* inflation rate: the government has exceeded the -fiscal limit of the seigniorage Laffer curve, and no stationary equilibrium -exists. +$x \geq 0$. + +Economically, the inflation tax cannot raise enough revenue to cover the deficit at *any* inflation rate because the government has exceeded the fiscal limit of the seigniorage Laffer curve. + +No stationary equilibrium exists. ```{solution-end} ``` @@ -605,6 +606,7 @@ print(f"x* = {x_star:.4f} (the two roots merge here)") When $g \to 0^+$, the curve $L(x) = g$ has one root near $x = 0$ ($\pi_l \to 0$) and another at very large $x$ ($\pi_u \to \infty$). + As $g$ rises toward $g_{\rm max}$ the two roots approach each other and merge at $x^* = \ln\bigl((1+\alpha)/\alpha\bigr)$. @@ -612,9 +614,13 @@ at $x^* = \ln\bigl((1+\alpha)/\alpha\bigr)$. ```{code-cell} ipython3 idx = np.argmin(np.abs(g_grid - model.g)) +π_l_bench = solve_π_bar(model, x0=0.3) +π_u_bench = solve_π_bar(model, x0=3.0) + print(f"At benchmark g = {model.g}:") print(f" π_l from curve = {π_l_curve[idx]:.4f}, π_l from lecture = {π_l:.4f}") print(f" π_u from curve = {π_u_curve[idx]:.4f}, π_u from lecture = {π_u:.4f}") +print(f" direct solve = ({π_l_bench:.4f}, {π_u_bench:.4f})") ``` ```{solution-end} @@ -697,8 +703,9 @@ for α in alphas: ``` For $\alpha = 0.8$ the maximum seigniorage falls below $g = 0.35$, so no -steady-state equilibrium exists. Higher money-demand sensitivity tightens the -fiscal limit of the inflation tax. +steady-state equilibrium exists. + +Higher money-demand sensitivity tightens the fiscal limit of the inflation tax. **(c)** diff --git a/lectures/pv.md b/lectures/pv.md index 5a7089027..c305acf65 100644 --- a/lectures/pv.md +++ b/lectures/pv.md @@ -13,7 +13,7 @@ kernelspec: # Present Values -## Overview +## Overview This lecture describes the **present value model** that is a starting point of much asset pricing theory. @@ -22,7 +22,7 @@ Asset pricing theory is a component of theories about many economic decisions in * consumption * labor supply - * education choice + * education choice * demand for money In asset pricing theory, and in economic dynamics more generally, a basic topic is the relationship @@ -34,7 +34,7 @@ In this lecture, we'll represent a sequence as a vector. So our analysis will typically boil down to studying relationships among vectors. -Our main tools in this lecture will be +Our main tools in this lecture will be * matrix multiplication, and * matrix inversion. @@ -44,19 +44,19 @@ We'll use the calculations described here in subsequent lectures, including {do Let's dive in. -## Analysis +## Analysis -Let +Let * $\{d_t\}_{t=0}^T $ be a sequence of dividends or "payouts" * $\{p_t\}_{t=0}^T $ be a sequence of prices of a claim on the continuation of - the asset's payout stream from date $t$ on, namely, $\{d_s\}_{s=t}^T $ - * $ \delta \in (0,1) $ be a one-period "discount factor" + the asset's payout stream from date $t$ on, namely, $\{d_s\}_{s=t}^T $ + * $ \delta \in (0,1) $ be a one-period "discount factor" * $p_{T+1}^*$ be a terminal price of the asset at time $T+1$ - -We assume that the dividend stream $\{d_t\}_{t=0}^T $ and the terminal price + +We assume that the dividend stream $\{d_t\}_{t=0}^T $ and the terminal price $p_{T+1}^*$ are both exogenous. This means that they are determined outside the model. @@ -80,7 +80,7 @@ price $p_{T+1}^*$. A system of equations like {eq}`eq:Euler1` is an example of a linear **difference equation**. There are powerful mathematical methods available for solving such systems and they are well worth -studying in their own right, being the foundation for the analysis of many interesting economic models. +studying in their own right, being the foundation for the analysis of many interesting economic models. For an example, see {doc}`Samuelson multiplier-accelerator ` @@ -120,19 +120,19 @@ $$ \vdots & \vdots & \vdots & \vdots & \vdots & 0 & 0 \cr 0 & 0 & 0 & 0 & \cdots & 1 & -\delta \cr 0 & 0 & 0 & 0 & \cdots & 0 & 1 \end{bmatrix} - \begin{bmatrix} p_0 \cr p_1 \cr p_2 \cr \vdots \cr p_{T-1} \cr p_T - \end{bmatrix} - = \begin{bmatrix} + \begin{bmatrix} p_0 \cr p_1 \cr p_2 \cr \vdots \cr p_{T-1} \cr p_T + \end{bmatrix} + = \begin{bmatrix} d_0 \cr d_1 \cr d_2 \cr \vdots \cr d_{T-1} \cr d_T \end{bmatrix} - + \begin{bmatrix} + + \begin{bmatrix} 0 \cr 0 \cr 0 \cr \vdots \cr 0 \cr \delta p_{T+1}^* \end{bmatrix} $$ (eq:pvpieq) +++ -```{exercise-start} +```{exercise-start} :label: pv_ex_1 ``` @@ -180,7 +180,7 @@ print("Max residual |A p - (d + b)|:", np.max(np.abs(residual))) ```{solution-end} ``` -In vector-matrix notation, we can write system {eq}`eq:pvpieq` as +In vector-matrix notation, we can write system {eq}`eq:pvpieq` as $$ A p = d + b @@ -189,7 +189,7 @@ $$ (eq:apdb) Here $A$ is the matrix on the left side of equation {eq}`eq:pvpieq`, while $$ - p = + p = \begin{bmatrix} p_0 \\ p_1 \\ @@ -197,7 +197,7 @@ $$ p_T \end{bmatrix}, \quad - d = + d = \begin{bmatrix} d_0 \\ d_1 \\ @@ -205,7 +205,7 @@ $$ d_T \end{bmatrix}, \quad \text{and} \quad - b = + b = \begin{bmatrix} 0 \\ 0 \\ @@ -214,14 +214,14 @@ $$ \end{bmatrix} $$ -The solution for the vector of prices is +The solution for the vector of prices is $$ p = A^{-1}(d + b) $$ (eq:apdb_sol) -For example, suppose that the dividend stream is +For example, suppose that the dividend stream is $$ d_{t+1} = 1.05 d_t, \quad t = 0, 1, \ldots , T-1. @@ -235,7 +235,7 @@ current_d = 1.0 d = [] for t in range(T+1): d.append(current_d) - current_d = current_d * 1.05 + current_d = current_d * 1.05 fig, ax = plt.subplots() ax.plot(d, 'o', label='dividends') @@ -307,7 +307,7 @@ ax.set_xlabel('time') plt.show() ``` -```{exercise-start} +```{exercise-start} :label: pv_ex_cyc ``` @@ -349,7 +349,7 @@ The weighted averaging associated with the present value calculation largely eliminates the cycles. -```{solution-end} +```{solution-end} ``` ## Analytical expressions @@ -359,7 +359,7 @@ By the [inverse matrix theorem](https://en.wikipedia.org/wiki/Invertible_matrix) It can be verified that the inverse of the matrix $A$ in {eq}`eq:pvpieq` is -$$ A^{-1} = +$$ A^{-1} = \begin{bmatrix} 1 & \delta & \delta^2 & \cdots & \delta^{T-1} & \delta^T \cr 0 & 1 & \delta & \cdots & \delta^{T-2} & \delta^{T-1} \cr @@ -371,7 +371,7 @@ $$ (eq:Ainv) -```{exercise-start} +```{exercise-start} :label: pv_ex_2 ``` @@ -416,13 +416,13 @@ $$ p_t = \sum_{s=t}^T \delta^{s-t} d_s + \delta^{T+1-t} p_{T+1}^* $$ (eq:ptpveq) -Pricing formula {eq}`eq:ptpveq` asserts that two components sum to the asset price +Pricing formula {eq}`eq:ptpveq` asserts that two components sum to the asset price $p_t$: * a **fundamental component** $\sum_{s=t}^T \delta^{s-t} d_s$ that equals the **discounted present value** of prospective dividends - + * a **bubble component** $\delta^{T+1-t} p_{T+1}^*$ - + The fundamental component is pinned down by the discount factor $\delta$ and the payout of the asset (in this case, dividends). @@ -431,13 +431,13 @@ fundamentals. It is sometimes convenient to rewrite the bubble component as -$$ +$$ c \delta^{-t} $$ -where +where -$$ +$$ c \equiv \delta^{T+1}p_{T+1}^* $$ @@ -448,10 +448,10 @@ $$ For a few moments, let's focus on the special case of an asset that never pays dividends, in which case $$ -\begin{bmatrix} +\begin{bmatrix} d_0 \cr d_1 \cr d_2 \cr \vdots \cr d_{T-1} \cr d_T -\end{bmatrix} = -\begin{bmatrix} +\end{bmatrix} = +\begin{bmatrix} 0 \cr 0 \cr 0 \cr \vdots \cr 0 \cr 0 \end{bmatrix} $$ @@ -468,27 +468,27 @@ $$ \vdots & \vdots & \vdots & \vdots & \vdots & 0 & 0 \cr 0 & 0 & 0 & 0 & \cdots & 1 & -\delta \cr 0 & 0 & 0 & 0 & \cdots & 0 & 1 \end{bmatrix} -\begin{bmatrix} p_0 \cr p_1 \cr p_2 \cr \vdots \cr p_{T-1} \cr p_T +\begin{bmatrix} p_0 \cr p_1 \cr p_2 \cr \vdots \cr p_{T-1} \cr p_T \end{bmatrix} = -\begin{bmatrix} +\begin{bmatrix} 0 \cr 0 \cr 0 \cr \vdots \cr 0 \cr \delta p_{T+1}^* \end{bmatrix} $$ (eq:pieq2) Evidently, if $p_{T+1}^* = 0$, a price vector $p$ of all entries zero -solves this equation and the only the **fundamental** component of our pricing -formula {eq}`eq:ptpveq` is present. +solves this equation and the only the **fundamental** component of our pricing +formula {eq}`eq:ptpveq` is present. -But let's activate the **bubble** component by setting +But let's activate the **bubble** component by setting $$ -p_{T+1}^* = c \delta^{-(T+1)} +p_{T+1}^* = c \delta^{-(T+1)} $$ (eq:eqbubbleterm) for some positive constant $c$. In this case, when we multiply both sides of {eq}`eq:pieq2` by -the matrix $A^{-1}$ presented in equation {eq}`eq:Ainv`, we +the matrix $A^{-1}$ presented in equation {eq}`eq:Ainv`, we find that $$ @@ -499,7 +499,7 @@ $$ (eq:bubble) ## Gross rate of return Define the gross rate of return on holding the asset from period $t$ to period $t+1$ -as +as $$ R_t = \frac{p_{t+1}}{p_t} @@ -515,11 +515,11 @@ $$ ## Exercises -```{exercise-start} +```{exercise-start} :label: pv_ex_a ``` -Assume that $g >1$ and that $\delta g \in (0,1)$. Give analytical expressions for an asset price $p_t$ under the +Assume that $g >1$ and that $\delta g \in (0,1)$. Give analytical expressions for an asset price $p_t$ under the following settings for $d$ and $p_{T+1}^*$: 1. $p_{T+1}^* = 0, d_t = g^t d_0$ (a modified version of the Gordon growth formula) @@ -528,7 +528,7 @@ following settings for $d$ and $p_{T+1}^*$: 1. $p_{T+1}^* = c \delta^{-(T+1)}, d_t = 0$ (price of a pure bubble stock) -```{exercise-end} +```{exercise-end} ``` ```{solution-start} pv_ex_a @@ -544,6 +544,7 @@ Plugging each of the above $p_{T+1}^*, d_t$ pairs into Equation {eq}`eq:ptpveq` ```{solution-end} +``` ```{exercise} :label: pv_ex_b @@ -570,7 +571,6 @@ T = 6 p_star = 10.0 d = np.array([1.0 * 1.05**t for t in range(T+1)]) -# Method 1: matrix system A = np.zeros((T+1, T+1)) for i in range(T+1): A[i, i] = 1 @@ -580,13 +580,12 @@ b = np.zeros(T+1) b[-1] = δ * p_star p_matrix = np.linalg.solve(A, d + b) -# Method 2: direct formula from eq:ptpveq p_formula = np.array([ sum(δ**(s-t) * d[s] for s in range(t, T+1)) + δ**(T+1-t) * p_star for t in range(T+1) ]) -print(f'{'t':>3} | {'matrix':>12} | {'formula':>12} | {'|diff|':>10}') +print(f"{'t':>3} | {'matrix':>12} | {'formula':>12} | {'|diff|':>10}") print('-' * 44) for t in range(T+1): diff = abs(p_matrix[t] - p_formula[t]) @@ -601,14 +600,13 @@ for t in range(T+1): Suppose dividends are constant: $d_t = d = 1$ for all $t = 0, \ldots, T$. -Set the terminal price to the **perpetuity value** $p_{T+1}^* = d / (R - 1)$, -where $R = 1/\delta$. +Set the terminal price to the perpetuity value $p_{T+1}^* = d / (1-\delta)$. (a) Compute the asset price sequence for $T = 100$ and $\delta = 0.99$. - Plot $p_t$ alongside the perpetuity value $d/(R-1)$ as a dashed line. + Plot $p_t$ alongside the perpetuity value $d/(1-\delta)$ as a dashed line. (b) Verify analytically (using formula {eq}`eq:ptpveq`) that - $p_t = d / (R-1)$ for all $t$. + $p_t = d / (1-\delta)$ for all $t$. ``` ```{solution-start} pv_ex_c @@ -618,9 +616,8 @@ where $R = 1/\delta$. ```{code-cell} ipython3 T = 100 δ = 0.99 -R = 1 / δ d_const = 1.0 -p_star_perp = d_const / (R - 1) # perpetuity value +p_star_perp = d_const / (1 - δ) d = d_const * np.ones(T+1) A = np.zeros((T+1, T+1)) @@ -637,29 +634,22 @@ p = np.linalg.solve(A, d + b) fig, ax = plt.subplots() ax.plot(p, 'o-', ms=3, label='Asset price $p_t$') ax.axhline(p_star_perp, linestyle='--', color='red', - label=f'Perpetuity value $d/(R-1) = {p_star_perp:.2f}$') + label=f'Perpetuity value $d/(1 - δ) = {p_star_perp:.2f}$') ax.set_xlabel('time') ax.set_title('Constant dividend: asset price equals perpetuity value') ax.legend() plt.show() -print(f'Max deviation from d/(R-1): {np.max(np.abs(p - p_star_perp)):.2e}') +print(f'Max deviation from d/(1 - δ): {np.max(np.abs(p - p_star_perp)):.2e}') ``` -For part (b): substituting $d_s = d$ and $p_{T+1}^* = d/(R-1) = d\delta/(1-\delta)$ -into {eq}`eq:ptpveq` gives +For part (b), substituting $d_s = d$ and $p_{T+1}^* = d/(1-\delta)$ into {eq}`eq:ptpveq` gives $$ -p_t = d \frac{1 - \delta^{T+1-t}}{1-\delta} + \frac{d\delta^{T+2-t}}{1-\delta} - = \frac{d}{1-\delta}\bigl[1 - \delta^{T+1-t} + \delta^{T+2-t}\bigr] - = \frac{d}{1-\delta} = \frac{d}{R-1} +p_t = d \frac{1 - \delta^{T+1-t}}{1-\delta} + \frac{d\delta^{T+1-t}}{1-\delta} + = \frac{d}{1-\delta} $$ -where the last step uses $1/\delta = R$, so $1-\delta = (R-1)/R$ and -$d/(1-\delta) = dR/(R-1) \neq d/(R-1)$. Actually the clean way to see it: -set $p_{T+1}^* = c\delta^{-(T+1)}$ with $c = d\delta/(1-\delta)\cdot\delta^{T+1}$; -because the bubble and fundamental terms sum to the perpetuity value, $p_t = d/(R-1)$. - ```{solution-end} ``` @@ -705,10 +695,9 @@ ax.set_title('Asset price at $t=0$ as a function of $\\delta$') plt.show() ``` -Each term $\delta^{s-t} d_s$ in the fundamental component and the bubble -term $\delta^{T+1-t} p_{T+1}^*$ are both increasing in $\delta$. A higher -discount factor therefore raises the present value of every future cash flow, -pushing up $p_0$. +Each term $\delta^{s-t} d_s$ in the fundamental component and the bubble term $\delta^{T+1-t} p_{T+1}^*$ are both increasing in $\delta$. + +A higher discount factor therefore raises the present value of every future cash flow, pushing up $p_0$. ```{solution-end} -``` \ No newline at end of file +``` diff --git a/lectures/solow.md b/lectures/solow.md index 0fd3007c4..3918a6200 100644 --- a/lectures/solow.md +++ b/lectures/solow.md @@ -57,10 +57,10 @@ $$ Production functions with this property include * the **Cobb-Douglas** function $F(K, L) = A K^{\alpha} - L^{1-\alpha}$ with $0 \leq \alpha \leq 1$. + L^{1-\alpha}$ with $0 \leq \alpha \leq 1$. * the **CES** function $F(K, L) = \left\{ a K^\rho + b L^\rho \right\}^{1/\rho}$ - with $a, b, \rho > 0$. - + with $a, b, \rho > 0$. + Here, $\alpha$ is the output elasticity of capital and $\rho$ is a parameter that determines the elasticity of substitution between capital and labor. We assume a closed economy, so aggregate domestic investment equals aggregate domestic diff --git a/lectures/supply_demand_heterogeneity.md b/lectures/supply_demand_heterogeneity.md index 2672cda12..f862de322 100644 --- a/lectures/supply_demand_heterogeneity.md +++ b/lectures/supply_demand_heterogeneity.md @@ -124,9 +124,9 @@ $$ \mu_{i}=\frac{-W_{i}+p^{\top}\left(\Pi^{-1}b_{i}-e_{i}\right)}{p^{\top}(\Pi^{\top}\Pi)^{-1}p}$$ - Finally we compute a competitive equilibrium allocation by using the demand curves: - + $$ -c_{i}=\Pi^{-1}b_{i}-(\Pi^{\top}\Pi)^{-1}\mu_{i}p +c_{i}=\Pi^{-1}b_{i}-(\Pi^{\top}\Pi)^{-1}\mu_{i}p $$ @@ -167,11 +167,11 @@ Now let's proceed to code. ```{code-cell} ipython3 class ExchangeEconomy: - def __init__(self, - Π, - bs, - es, - Ws=None, + def __init__(self, + Π, + bs, + es, + Ws=None, thres=1.5): """ Set up the environment for an exchange economy @@ -236,7 +236,7 @@ class ExchangeEconomy: ## Implementation -Next we use the class ``ExchangeEconomy`` defined above to study +Next we use the class ``ExchangeEconomy`` defined above to study * a two-person economy without production, * a dynamic economy, and @@ -376,20 +376,20 @@ We have the following objects - The demand curve: - -$$ -c_{i}=\Pi^{-1}b_{i}-(\Pi^{\top}\Pi)^{-1}\mu_{i}p + +$$ +c_{i}=\Pi^{-1}b_{i}-(\Pi^{\top}\Pi)^{-1}\mu_{i}p $$ - The marginal utility of wealth: - -$$ + +$$ \mu_{i}=\frac{-W_{i}+p^{\top}\left(\Pi^{-1}b_{i}-e_{i}\right)}{p^{\top}(\Pi^{\top}\Pi)^{-1}p} $$ - Market clearing: - -$$ + +$$ \sum c_{i}=\sum e_{i} $$ @@ -397,7 +397,7 @@ Denote aggregate consumption $\sum_i c_{i}=c$ and $\sum_i \mu_i = \mu$. Market clearing requires -$$ +$$ \Pi^{-1}\left(\sum_{i}b_{i}\right)-(\Pi^{\top}\Pi)^{-1}p\left(\sum_{i}\mu_{i}\right)=\sum_{i}e_{i} $$ which, after a few steps, leads to @@ -408,7 +408,7 @@ $$ where -$$ +$$ \mu = \sum_i\mu_{i}=\frac{0 + p^{\top}\left(\Pi^{-1}b-e\right)}{p^{\top}(\Pi^{\top}\Pi)^{-1}p}. $$ @@ -434,5 +434,5 @@ $$ p=\tilde{\mu}^{-1}(\Pi^{\top}b-\Pi^{\top}\Pi e) $$ -Thus, we have verified that, up to the choice of a numeraire in which to express absolute prices, the price +Thus, we have verified that, up to the choice of a numeraire in which to express absolute prices, the price vector in our representative consumer economy is the same as that in an underlying economy with multiple consumers. diff --git a/lectures/tax_smooth.md b/lectures/tax_smooth.md index afd1b57d8..fb686d5e4 100644 --- a/lectures/tax_smooth.md +++ b/lectures/tax_smooth.md @@ -30,7 +30,7 @@ The government minimizes those costs by smoothing tax collections over time an The present value of government expenditures is at the core of the tax-smoothing model, so we'll again use formulas presented in {doc}`present value formulas`. -We'll again use the matrix multiplication and matrix inversion tools that we used in {doc}`present value formulas `. +We'll again use the matrix multiplication and matrix inversion tools that we used in {doc}`present value formulas `. @@ -59,14 +59,14 @@ The government can borrow or lend at interest rate $R$, subject to some limits o Let - * $S \geq 2$ be a positive integer that constitutes a time-horizon. - * $G = \{G_t\}_{t=0}^S$ be a sequence of government expenditures. - * $B = \{B_t\}_{t=0}^{S+1}$ be a sequence of government debt. - * $T = \{T_t\}_{t=0}^S$ be a sequence of tax collections. - * $R \geq 1$ be a fixed gross one period interest rate. - * $\beta \in (0,1)$ be a fixed discount factor. + * $S \geq 2$ be a positive integer that constitutes a time-horizon. + * $G = \{G_t\}_{t=0}^S$ be a sequence of government expenditures. + * $B = \{B_t\}_{t=0}^{S+1}$ be a sequence of government debt. + * $T = \{T_t\}_{t=0}^S$ be a sequence of tax collections. + * $R \geq 1$ be a fixed gross one period interest rate. + * $\beta \in (0,1)$ be a fixed discount factor. * $B_0$ be a given initial level of government debt - * $B_{S+1} \geq 0$ be a terminal condition. + * $B_{S+1} \geq 0$ be a terminal condition. The sequence of government debt $B$ is to be determined by the model. @@ -90,17 +90,17 @@ Given a sequence $G$ of government expenditures, a large set of pairs $(B, T)$ o The model follows the following logical flow: - * start with an exogenous government expenditure sequence $G$, an initial government debt $B_0$, and + * start with an exogenous government expenditure sequence $G$, an initial government debt $B_0$, and a candidate tax collection path $T$. - + * use the system of equations {eq}`eq:B_t` for $t=0, \ldots, S$ to compute a path $B$ of government debt - - * verify that $B_{S+1}$ satisfies the terminal debt constraint $B_{S+1} \geq 0$. - - * If it does, declare that the candidate path is **budget feasible**. - + + * verify that $B_{S+1}$ satisfies the terminal debt constraint $B_{S+1} \geq 0$. + + * If it does, declare that the candidate path is **budget feasible**. + * if the candidate tax path is not budget feasible, propose a different tax path and start over - + Below, we'll describe how to execute these steps using linear algebra -- matrix inversion and multiplication. The above procedure seems like a sensible way to find "budget-feasible" tax paths $T$, i.e., paths that are consistent with the exogenous government expenditure stream $G$, the initial debt level $B_0$, and the terminal debt level $B_{S+1}$. @@ -117,18 +117,18 @@ To answer this question, we assess alternative budget feasible tax paths $T$ us L = - \sum_{t=0}^S \beta^t (g_1 T_t - \frac{g_2}{2} T_t^2 ) ``` -where $g_1 > 0, g_2 > 0$. +where $g_1 > 0, g_2 > 0$. This is called the "present value of revenue-raising costs" in {cite}`Barro1979`. -The quadratic term $-\frac{g_2}{2} T_t^2$ captures increasing marginal costs of taxation, implying that tax distortions rise more than proportionally with tax rates. +The quadratic term $-\frac{g_2}{2} T_t^2$ captures increasing marginal costs of taxation, implying that tax distortions rise more than proportionally with tax rates. This creates an incentive for tax smoothing. Indeed, we shall see that when $\beta R = 1$, criterion {eq}`cost` leads to smoother tax paths. -By **smoother** we mean tax rates that are as close as possible to being constant over time. +By **smoother** we mean tax rates that are as close as possible to being constant over time. The preference for smooth tax paths that is built into the model gives it the name "tax-smoothing model". @@ -140,14 +140,14 @@ Or equivalently, we can transform this into the same problem as in the {doc}`con W = \sum_{t=0}^S \beta^t (g_1 T_t - \frac{g_2}{2} T_t^2 ) ``` -Let's dive in and do some calculations that will help us understand how the model works. +Let's dive in and do some calculations that will help us understand how the model works. -Here we use default parameters $R = 1.05$, $g_1 = 1$, $g_2 = 1/2$, and $S = 65$. +Here we use default parameters $R = 1.05$, $g_1 = 1$, $g_2 = 1/2$, and $S = 65$. We create a Python ``namedtuple`` to store these parameters with default values. ```{code-cell} ipython3 -TaxSmoothing = namedtuple("TaxSmoothing", +TaxSmoothing = namedtuple("TaxSmoothing", ["R", "g1", "g2", "β_seq", "S"]) def create_tax_smoothing_model(R=1.01, g1=1, g2=1/2, S=65): @@ -175,7 +175,7 @@ Formally it resembles the present value calculations we saw in this QuantEcon le This present value calculation is crucial for determining the government's total financing needs. -By iterating on equation {eq}`eq:B_t` and imposing the terminal condition +By iterating on equation {eq}`eq:B_t` and imposing the terminal condition $$ B_{S+1} = 0, @@ -183,15 +183,15 @@ $$ it is possible to convert a sequence of budget constraints {eq}`eq:B_t` into a single intertemporal constraint -$$ -\sum_{t=0}^S R^{-t} T_t = B_0 + h_0. +$$ +\sum_{t=0}^S R^{-t} T_t = B_0 + h_0. $$ (eq:budget_intertemp_tax) Equation {eq}`eq:budget_intertemp_tax` says that the present value of tax collections must equal the sum of initial debt and the present value of government expenditures. -When $\beta R = 1$, it is optimal for a government to smooth taxes by setting +When $\beta R = 1$, it is optimal for a government to smooth taxes by setting -$$ +$$ T_t = T_0 \quad t =0, 1, \ldots, S $$ @@ -206,7 +206,7 @@ $$ (eq:taxsmoothing) Equation {eq}`eq:taxsmoothing` is the tax-smoothing model in a nutshell. -## Mechanics of tax-smoothing +## Mechanics of tax-smoothing As promised, we'll provide step-by-step instructions on how to use linear algebra, readily implemented in Python, to compute all objects in play in the tax-smoothing model. @@ -236,17 +236,17 @@ Use the system of equations {eq}`eq:B_t` for $t=0, \ldots, S$ to compute a path To do this, we transform that system of difference equations into a single matrix equation as follows: $$ -\begin{bmatrix} +\begin{bmatrix} 1 & 0 & 0 & \cdots & 0 & 0 & 0 \cr -R & 1 & 0 & \cdots & 0 & 0 & 0 \cr 0 & -R & 1 & \cdots & 0 & 0 & 0 \cr \vdots &\vdots & \vdots & \cdots & \vdots & \vdots & \vdots \cr 0 & 0 & 0 & \cdots & -R & 1 & 0 \cr 0 & 0 & 0 & \cdots & 0 & -R & 1 -\end{bmatrix} -\begin{bmatrix} B_1 \cr B_2 \cr B_3 \cr \vdots \cr B_S \cr B_{S+1} \end{bmatrix} -= R +\begin{bmatrix} B_1 \cr B_2 \cr B_3 \cr \vdots \cr B_S \cr B_{S+1} +\end{bmatrix} += R \begin{bmatrix} G_0 + B_0 - T_0 \cr G_1 - T_0 \cr G_2 - T_0 \cr \vdots\cr G_{S-1} - T_0 \cr G_S - T_0 \end{bmatrix} $$ @@ -258,12 +258,12 @@ $$ $$ Because we have built into our calculations that the government must satisfy its intertemporal budget constraint and end with zero debt, just barely satisfying the -terminal condition that $B_{S+1} \geq 0$, it should turn out that +terminal condition that $B_{S+1} \geq 0$, it should turn out that $$ B_{S+1} = 0. $$ - + Let's verify this with Python code. First we implement the model with `compute_optimal` @@ -306,7 +306,7 @@ G_seq = np.concatenate([np.ones(46), 4*np.ones(5), np.ones(15)]) tax_model = create_tax_smoothing_model() T_seq, B_seq, h0 = compute_optimal(tax_model, B0, G_seq) -print('check B_S+1=0:', +print('check B_S+1=0:', np.abs(B_seq[-1] - 0) <= 1e-8) ``` @@ -359,31 +359,31 @@ First we create a function `plot_ts` that generates graphs for different instanc This will help us avoid rewriting code to plot outcomes for different government expenditure sequences. ```{code-cell} ipython3 -def plot_ts(model, # tax-smoothing model +def plot_ts(model, # tax-smoothing model B0, # initial government debt G_seq # government expenditure process ): - + # Compute optimal tax path T_seq, B_seq, h0 = compute_optimal(model, B0, G_seq) - + # Sequence length S = tax_model.S - + fig, axes = plt.subplots(1, 2, figsize=(12,5)) - + axes[0].plot(range(S+1), G_seq, label='expenditures', lw=2) axes[0].plot(range(S+1), T_seq, label='taxes', lw=2) axes[1].plot(range(S+2), B_seq, label='debt', color='green', lw=2) axes[0].set_ylabel(r'$T_t,G_t$') axes[1].set_ylabel(r'$B_t$') - + for ax in axes: ax.plot(range(S+2), np.zeros(S+2), '--', lw=1, color='black') ax.legend() ax.set_xlabel(r'$t$') - - + + plt.show() ``` @@ -391,13 +391,13 @@ In the experiments below, please study how tax and government debt sequences var #### Experiment 1: one-time spending shock -We first assume a one-time spending shock of $W_0$ in year 21 of the expenditure sequence $G$. +We first assume a one-time spending shock of $W_0$ in year 21 of the expenditure sequence $G$. We'll make $W_0$ big - positive to indicate a spending surge (like a war or disaster), and negative to indicate a spending cut. ```{code-cell} ipython3 # Spending surge W_0 = 2.5 -G_seq_pos = np.concatenate([np.ones(21), np.array([2.5]), +G_seq_pos = np.concatenate([np.ones(21), np.array([2.5]), np.ones(24), np.ones(20)]) plot_ts(tax_model, B0, G_seq_pos) @@ -450,7 +450,7 @@ G_0 = 1 t_max = 46 # Generate geometric G sequence -geo_seq = λ ** np.arange(t_max) * G_0 +geo_seq = λ ** np.arange(t_max) * G_0 G_seq_geo = np.concatenate( [geo_seq, np.max(geo_seq)*np.ones(20)]) @@ -461,7 +461,7 @@ Now we show the behavior when $\lambda = 0.95$ (declining expenditures) ```{code-cell} ipython3 λ = 0.95 -geo_seq = λ ** np.arange(t_max) * G_0 +geo_seq = λ ** np.arange(t_max) * G_0 G_seq_geo = np.concatenate( [geo_seq, λ ** t_max * np.ones(20)]) @@ -481,13 +481,13 @@ plot_ts(tax_model, B0, G_seq_geo) ### Feasible Tax Variations -We promised to justify our claim that a constant tax rate $T_t = T_0$ for all $t$ is optimal. +We promised to justify our claim that a constant tax rate $T_t = T_0$ for all $t$ is optimal. Let's do that now. -The approach we'll take is an elementary example of the "calculus of variations". +The approach we'll take is an elementary example of the "calculus of variations". -Let's dive in and see what the key idea is. +Let's dive in and see what the key idea is. To explore what types of tax paths are cost-minimizing / welfare-improving, we shall create an **admissible tax path variation sequence** $\{v_t\}_{t=0}^S$ that satisfies @@ -508,7 +508,7 @@ $$ v_t = \xi_1 \phi^t - \xi_0. $$ -We say two and not three-parameter class because $\xi_0$ will be a function of $(\phi, \xi_1; R)$ that guarantees that the variation sequence is feasible. +We say two and not three-parameter class because $\xi_0$ will be a function of $(\phi, \xi_1; R)$ that guarantees that the variation sequence is feasible. Let's compute that function. @@ -534,9 +534,9 @@ which implies that $$ \xi_0 = \xi_0(\phi, \xi_1; R) = \xi_1 \left(\frac{1 - R^{-1}}{1 - R^{-(S+1)}}\right) \left(\frac{1 - (\phi R^{-1})^{S+1}}{1 - \phi R^{-1}}\right) -$$ +$$ -This is our formula for $\xi_0$. +This is our formula for $\xi_0$. **Key Idea:** if $T^o$ is a budget-feasible tax path, then so is $T^o + v$, where $v$ is a budget-feasible variation. @@ -552,9 +552,9 @@ def compute_variation(model, ξ1, ϕ, B0, G_seq, verbose=1): ξ0 = ξ1*((1 - 1/R) / (1 - (1/R)**(S+1))) * ((1 - (ϕ/R)**(S+1)) / (1 - ϕ/R)) v_seq = np.array([(ξ1*ϕ**t - ξ0) for t in range(S+1)]) - + if verbose == 1: - print('check feasible:', np.isclose(β_seq @ v_seq, 0)) + print('check feasible:', np.isclose(β_seq @ v_seq, 0)) T_opt, _, _ = compute_optimal(model, B0, G_seq) Tvar_seq = T_opt + v_seq @@ -576,8 +576,8 @@ for i, param in enumerate(params): ξ1, ϕ = param print(f'variation {i}: ξ1={ξ1}, ϕ={ϕ}') - Tvar_seq = compute_variation(model=tax_model, - ξ1=ξ1, ϕ=ϕ, B0=B0, + Tvar_seq = compute_variation(model=tax_model, + ξ1=ξ1, ϕ=ϕ, B0=B0, G_seq=G_seq) print(f'welfare={welfare(tax_model, Tvar_seq)}') print(f'welfare < optimal: {welfare(tax_model, Tvar_seq) < wel_opt}') @@ -585,13 +585,13 @@ for i, param in enumerate(params): if i % 2 == 0: ls = '-.' - else: - ls = '-' - ax.plot(range(S+1), Tvar_seq, ls=ls, - color=colors[ξ1], + else: + ls = '-' + ax.plot(range(S+1), Tvar_seq, ls=ls, + color=colors[ξ1], label=fr'$\xi_1 = {ξ1}, \phi = {ϕ}$') -plt.plot(range(S+1), T_seq, +plt.plot(range(S+1), T_seq, color='orange', label=r'Optimal $\vec{T}$ ') plt.legend() @@ -600,7 +600,7 @@ plt.ylabel(r'$T_t$') plt.show() ``` -We can even use the Python `np.gradient` command to compute derivatives of cost with respect to our two parameters. +We can even use the Python `np.gradient` command to compute derivatives of cost with respect to our two parameters. We are teaching the key idea beneath the **calculus of variations**. First, we define the cost with respect to $\xi_1$ and $\phi$ @@ -608,13 +608,13 @@ First, we define the cost with respect to $\xi_1$ and $\phi$ ```{code-cell} ipython3 def cost_rel(ξ1, ϕ): """ - Compute cost of variation sequence + Compute cost of variation sequence for given ϕ, ξ1 with a tax-smoothing model """ - - Tvar_seq = compute_variation(tax_model, ξ1=ξ1, - ϕ=ϕ, B0=B0, - G_seq=G_seq, + + Tvar_seq = compute_variation(tax_model, ξ1=ξ1, + ϕ=ϕ, B0=B0, + G_seq=G_seq, verbose=0) return cost(tax_model, Tvar_seq) @@ -652,10 +652,11 @@ plt.show() cost_grad = cost_vec(0.05, ϕ_arr) cost_grad = np.gradient(cost_grad) -plt.plot(ξ1_arr, cost_grad) +plt.plot(ϕ_arr, cost_grad) plt.ylabel('derivative of cost') plt.xlabel(r'$\phi$') plt.show() +``` ## Exercises @@ -689,11 +690,9 @@ tax_model = create_tax_smoothing_model() S, R = tax_model.S, tax_model.R B0 = 0 -# Baseline: constant expenditures -G_base = np.ones(S+1) +G_base = np.concatenate([np.ones(46), 4*np.ones(5), np.ones(15)]) T_base, _, _ = compute_optimal(tax_model, B0, G_base) -# Shocked: one-time spike at t* t_star = 20 W0 = 1.0 G_shock = G_base.copy() @@ -702,7 +701,6 @@ T_shock, _, _ = compute_optimal(tax_model, B0, G_shock) delta_T0_numerical = T_shock[0] - T_base[0] -# Annuity formula annuity_factor = (1 - 1/R) / (1 - (1/R)**(S+1)) delta_T0_formula = annuity_factor * W0 * R**(-t_star) @@ -711,9 +709,10 @@ print(f'Annuity-value formula: {delta_T0_formula:.10f}') print(f'Match: {np.isclose(delta_T0_numerical, delta_T0_formula)}') ``` -The spike raises $h_0$ (present value of expenditures) by exactly $W_0 R^{-t^*}$. -Since the optimal flat tax is the annuity value of $(B_0 + h_0)$, the increase in -$T_0$ is the annuity value of the extra present-value cost. +The spike raises $h_0$, the present value of expenditures, by exactly $W_0 R^{-t^*}$. + +Since the optimal flat tax is the annuity value of $(B_0 + h_0)$, the increase +in $T_0$ is the annuity value of the extra present-value cost. ```{solution-end} ``` @@ -774,9 +773,9 @@ for λ in λ_vals: print(f'{λ:>6.2f} | {T_seq[0]:>10.4f} | {h0:>12.4f}') ``` -Faster spending growth ($\lambda$ higher) raises the present value $h_0$, because -early, heavily-discounted expenditures are replaced by larger later ones. A higher -$h_0$ translates directly into a higher required flat tax. +Faster spending growth, or a higher $\lambda$, leaves initial spending unchanged but raises later spending enough to increase the present value $h_0$ despite discounting. + +A higher $h_0$ translates directly into a higher required flat tax. ```{solution-end} ``` @@ -819,8 +818,9 @@ for ξ1, ϕ in params: print(f'{ξ1:>6.2f} | {ϕ:>6.2f} | {w:>12.6f} | {w - w_opt:>+14.6f}') ``` -Every variation yields strictly lower welfare (more negative gap) than the flat -path, confirming that the constant tax schedule is the global welfare maximiser +Every variation yields strictly lower welfare, or a more negative gap, than the flat path. + +This confirms that the constant tax schedule is the global welfare maximiser under the quadratic criterion {eq}`welfare_tax` when $\beta R = 1$. ```{solution-end} @@ -868,10 +868,10 @@ print(f'Match: {np.isclose(slope, annuity)}') ``` From equation {eq}`eq:taxsmoothing`, $T_0 = \text{annuity factor} \times (B_0 + h_0)$. -The coefficient on $B_0$ is exactly the annuity factor, confirming the linear -relationship. Higher initial debt forces the government to collect more tax in -every period to satisfy its intertemporal budget constraint. + +The coefficient on $B_0$ is exactly the annuity factor, confirming the linear relationship. + +Higher initial debt forces the government to collect more tax in every period to satisfy its intertemporal budget constraint. ```{solution-end} ``` -``` \ No newline at end of file diff --git a/lectures/unpleasant.md b/lectures/unpleasant.md index 4099152f2..66653e9cd 100644 --- a/lectures/unpleasant.md +++ b/lectures/unpleasant.md @@ -11,34 +11,34 @@ kernelspec: name: python3 --- -# Some Unpleasant Monetarist Arithmetic +# Some Unpleasant Monetarist Arithmetic ## Overview This lecture builds on concepts and issues introduced in {doc}`money_inflation`. -That lecture describes stationary equilibria that reveal a [*Laffer curve*](https://en.wikipedia.org/wiki/Laffer_curve) in the inflation tax rate and the associated stationary rate of return -on currency. +That lecture describes stationary equilibria that reveal a [*Laffer curve*](https://en.wikipedia.org/wiki/Laffer_curve) in the inflation tax rate and the associated stationary rate of return +on currency. -In this lecture we study a situation in which a stationary equilibrium prevails after date $T > 0$, but not before then. +In this lecture we study a situation in which a stationary equilibrium prevails after date $T > 0$, but not before then. For $t=0, \ldots, T-1$, the money supply, price level, and interest-bearing government debt vary along a transition path that ends at $t=T$. -During this transition, the ratio of the real balances $\frac{m_{t+1}}{{p_t}}$ to indexed one-period government bonds $\tilde R B_{t-1}$ maturing at time $t$ decreases each period. +During this transition, the ratio of the real balances $\frac{m_{t+1}}{{p_t}}$ to indexed one-period government bonds $\tilde R B_{t-1}$ maturing at time $t$ decreases each period. -This has consequences for the **gross-of-interest** government deficit that must be financed by printing money for times $t \geq T$. +This has consequences for the **gross-of-interest** government deficit that must be financed by printing money for times $t \geq T$. The critical **money-to-bonds** ratio stabilizes only at time $T$ and afterwards. And the larger is $T$, the higher is the gross-of-interest government deficit that must be financed -by printing money at times $t \geq T$. +by printing money at times $t \geq T$. These outcomes are the essential finding of Sargent and Wallace's "unpleasant monetarist arithmetic" {cite}`sargent1981`. That lecture described supplies and demands for money that appear in that lecture. -It also characterized the steady state equilibrium from which we work backwards in this lecture. +It also characterized the steady state equilibrium from which we work backwards in this lecture. In addition to learning about "unpleasant monetarist arithmetic", in this lecture we'll learn how to implement a [*fixed point*](https://en.wikipedia.org/wiki/Fixed_point_(mathematics)) algorithm for computing an initial price level. @@ -67,17 +67,17 @@ where * $b_t = \frac{m_{t+1}}{p_t}$ is real balances at the end of period $t$ * $R_{t-1} = \frac{p_{t-1}}{p_t}$ is the gross rate of return on real balances held from $t-1$ to $t$ -The demand for real balances is +The demand for real balances is $$ -b_t = \gamma_1 - \gamma_2 R_t^{-1} . +b_t = \gamma_1 - \gamma_2 R_t^{-1} . $$ (eq:up_bdemand) where $\gamma_1 > \gamma_2 > 0$. ## Monetary-Fiscal Policy -To the basic model of {doc}`money_inflation`, we add inflation-indexed one-period government bonds as an additional way for the government to finance government expenditures. +To the basic model of {doc}`money_inflation`, we add inflation-indexed one-period government bonds as an additional way for the government to finance government expenditures. Let $\widetilde R > 1$ be a time-invariant gross real rate of return on government one-period inflation-indexed bonds. @@ -85,7 +85,7 @@ With this additional source of funds, the government's budget constraint at time $$ B_t + \frac{m_{t+1}}{p_t} = \widetilde R B_{t-1} + \frac{m_t}{p_t} + g -$$ +$$ Just before the beginning of time $0$, the public owns $\check m_0$ units of currency (measured in dollars) @@ -106,17 +106,17 @@ $$ or $$ -B_{-1} - \check B_{-1} = \frac{1}{p_0 \widetilde R} \left( \check m_0 - m_0 \right) +B_{-1} - \check B_{-1} = \frac{1}{p_0 \widetilde R} \left( \check m_0 - m_0 \right) $$ (eq:openmarketconstraint) -This equation says that the government (e.g., the central bank) can *decrease* $m_0$ relative to -$\check m_0$ by *increasing* $B_{-1}$ relative to $\check B_{-1}$. +This equation says that the government (e.g., the central bank) can *decrease* $m_0$ relative to +$\check m_0$ by *increasing* $B_{-1}$ relative to $\check B_{-1}$. -This is a version of a standard constraint on a central bank's [**open market operations**](https://www.federalreserve.gov/monetarypolicy/openmarket.htm) in which it expands the stock of money by buying government bonds from the public. +This is a version of a standard constraint on a central bank's [**open market operations**](https://www.federalreserve.gov/monetarypolicy/openmarket.htm) in which it expands the stock of money by buying government bonds from the public. ## An open market operation at $t=0$ -Following Sargent and Wallace {cite}`sargent1981`, we analyze consequences of a central bank policy that +Following Sargent and Wallace {cite}`sargent1981`, we analyze consequences of a central bank policy that uses an open market operation to lower the price level in the face of a persistent fiscal deficit that takes the form of a positive $g$. @@ -128,7 +128,7 @@ For $t =0, 1, \ldots, T-1$, $$ \begin{aligned} B_t & = \widetilde R B_{t-1} + g \cr -m_{t+1} & = m_0 +m_{t+1} & = m_0 \end{aligned} $$ @@ -141,7 +141,7 @@ m_{t+1} & = m_t + p_t \overline g \end{aligned} $$ -where +where $$ \overline g = \left[(\tilde R -1) B_{T-1} + g \right] @@ -155,7 +155,7 @@ Here, by **fiscal policy** we mean the collection of actions that determine a se By **monetary policy** or **debt-management policy**, we mean the collection of actions that determine how the government divides its portfolio of debts to the public between interest-bearing parts (government bonds) and non-interest-bearing parts (money). By an **open market operation**, we mean a government monetary policy action in which the government -(or its delegate, say, a central bank) either buys government bonds from the public for newly issued money, or sells bonds to the public and withdraws the money it receives from public circulation. +(or its delegate, say, a central bank) either buys government bonds from the public for newly issued money, or sells bonds to the public and withdraws the money it receives from public circulation. ## Algorithm (basic idea) @@ -171,7 +171,7 @@ $$ (eq:up_steadyquadratic) Quadratic equation {eq}`eq:up_steadyquadratic` has two roots, $R_l < R_u < 1$. -For reasons described at the end of {doc}`money_inflation`, we select the larger root $R_u$. +For reasons described at the end of {doc}`money_inflation`, we select the larger root $R_u$. Next, we compute @@ -192,14 +192,14 @@ $$ b_t & = b_{t-1} R_{t-1} + \overline g \cr R_t^{-1} & = \frac{\gamma_1}{\gamma_2} - \gamma_2^{-1} b_t \cr p_t & = R_t p_{t-1} \cr - m_t & = b_{t-1} p_t + m_t & = b_{t-1} p_t \end{aligned} $$ - -## Before time $T$ -Define +## Before time $T$ + +Define $$ \lambda \equiv \frac{\gamma_2}{\gamma_1}. @@ -209,7 +209,7 @@ Our restrictions that $\gamma_1 > \gamma_2 > 0$ imply that $\lambda \in [0,1)$. We want to compute -$$ +$$ \begin{aligned} p_0 & = \gamma_1^{-1} \left[ \sum_{j=0}^\infty \lambda^j m_{j} \right] \cr & = \gamma_1^{-1} \left[ \sum_{j=0}^{T-1} \lambda^j m_{0} + \sum_{j=T}^\infty \lambda^j m_{1+j} \right] @@ -234,7 +234,7 @@ $$ p_t = \gamma_1^{-1} m_0 + \lambda p_{t+1}, \quad t = T-1, T-2, \ldots, 0 $$ -starting from +starting from $$ p_T = \frac{m_0}{\gamma_1 - \overline g - \gamma_2 R_u^{-1}} = \gamma_1^{-1} m_0 \left\{\frac{1}{R_u-\lambda} \right\} @@ -242,14 +242,14 @@ $$ (eq:pTformula) ```{prf:remark} :label: equivalence -We can verify the equivalence of the two formulas on the right sides of {eq}`eq:pTformula` by recalling that +We can verify the equivalence of the two formulas on the right sides of {eq}`eq:pTformula` by recalling that $R_u$ is a root of the quadratic equation {eq}`eq:up_steadyquadratic` that determines steady state rates of return on currency. ``` - + ## Algorithm (pseudo code) Now let's describe a computational algorithm in more detail in the form of a description -that constitutes pseudo code because it approaches a set of instructions we could provide to a +that constitutes pseudo code because it approaches a set of instructions we could provide to a Python coder. To compute an equilibrium, we deploy the following algorithm. @@ -271,7 +271,7 @@ $$ B_{T-1} = \widetilde R^T B_{-1} + \left( \frac{1 - \widetilde R^T}{1-\widetilde R} \right) g $$ -* Compute +* Compute $$ \overline g = g + \left[ \tilde R - 1\right] B_{T-1} @@ -294,7 +294,7 @@ $$ * Compute a fixed point by iterating to convergence on the relaxation algorithm $$ -p_{0,j+1} = (1-\theta) {\mathcal S}(p_{0,j}) + \theta p_{0,j}, +p_{0,j+1} = (1-\theta) {\mathcal S}(p_{0,j}) + \theta p_{0,j}, $$ where $\theta \in [0,1)$ is a relaxation parameter. @@ -306,19 +306,19 @@ We'll set parameters of the model so that the steady state after time $T$ is ini as in {doc}`money_inflation_nonlinear` In particular, we set $\gamma_1=100, \gamma_2 =50, g=3.0$. We set $m_0 = 100$ in that lecture, -but now the counterpart will be $M_T$, which is endogenous. +but now the counterpart will be $M_T$, which is endogenous. As for new parameters, we'll set $\tilde R = 1.01, \check B_{-1} = 0, \check m_0 = 105, T = 5$. We'll study a "small" open market operation by setting $m_0 = 100$. -These parameter settings mean that just before time $0$, the "central bank" sells the public bonds in exchange for $\check m_0 - m_0 = 5$ units of currency. +These parameter settings mean that just before time $0$, the "central bank" sells the public bonds in exchange for $\check m_0 - m_0 = 5$ units of currency. That leaves the public with less currency but more government interest-bearing bonds. Since the public has less currency (its supply has diminished) it is plausible to anticipate that the price level at time $0$ will be driven downward. -But that is not the end of the story, because this **open market operation** at time $0$ has consequences for future settings of $m_{t+1}$ and the gross-of-interest government deficit $\bar g_t$. +But that is not the end of the story, because this **open market operation** at time $0$ has consequences for future settings of $m_{t+1}$ and the gross-of-interest government deficit $\bar g_t$. Let's start with some imports: @@ -333,7 +333,7 @@ Now let's dive in and implement our pseudo code in Python. ```{code-cell} ipython3 # Create a namedtuple that contains parameters -MoneySupplyModel = namedtuple("MoneySupplyModel", +MoneySupplyModel = namedtuple("MoneySupplyModel", ["γ1", "γ2", "g", "R_tilde", "m0_check", "Bm1_check", "T"]) @@ -342,7 +342,7 @@ def create_model(γ1=100, γ2=50, g=3.0, R_tilde=1.01, Bm1_check=0, m0_check=105, T=5): - + return MoneySupplyModel(γ1=γ1, γ2=γ2, g=g, R_tilde=R_tilde, m0_check=m0_check, Bm1_check=Bm1_check, @@ -397,7 +397,7 @@ def compute_fixed_point(m0, p0_guess, model, θ=0.5, tol=1e-6): ``` Let's look at how price level $p_0$ in the stationary $R_u$ equilibrium depends on the initial -money supply $m_0$. +money supply $m_0$. Notice that the slope of $p_0$ as a function of $m_0$ is constant. @@ -473,13 +473,13 @@ def plot_path(m0_arr, model, length=15): fig, axs = plt.subplots(2, 2, figsize=(8, 5)) titles = ['$p_t$', '$m_t$', '$b_t$', '$R_t$'] - + for m0 in m0_arr: paths = simulate(m0, model, length=length) for i, ax in enumerate(axs.flat): ax.plot(paths[i]) ax.set_title(titles[i]) - + axs[0, 1].hlines(model.m0_check, 0, length, color='r', linestyle='--') axs[0, 1].text(length * 0.8, model.m0_check * 0.9, r'$\check{m}_0$') plt.show() @@ -584,11 +584,13 @@ for T_val, g_b, Ru in zip(T_values, g_bar_list, R_u_list): ``` Each additional period that $m_t$ is held fixed forces the government to roll -over its bonds at gross rate $\tilde R > 1$, compounding the stock $B_{T-1}$ -and therefore raising $\bar g$. A higher $\bar g$ sits further up the -seigniorage Laffer curve, requiring a lower $R_u$ (higher inflation tax rate). -This is the core mechanism of "unpleasant monetarist arithmetic": tighter money -today makes the long-run inflation rate higher, not lower. +over its bonds at gross rate $\tilde R > 1$, compounding the stock $B_{T-1}$ and therefore raising $\bar g$. + +A higher $\bar g$ sits further up the seigniorage Laffer curve, requiring a +lower $R_u$, or higher inflation tax rate. + +This is the core mechanism of "unpleasant monetarist arithmetic": tighter +money today makes the long-run inflation rate higher, not lower. ```{solution-end} ``` @@ -609,11 +611,11 @@ still exists after time $T$ (i.e., $\bar g \leq g_{\rm max}$). (a) Compute $g_{\rm max} = (\gamma_1 + \gamma_2) - \gamma_2/\bar R_{\rm max} - \gamma_1 \bar R_{\rm max}$ where $\bar R_{\rm max} = \sqrt{\gamma_2/\gamma_1}$. -(b) For $T = 1, 2, \ldots, 50$, compute $\bar g(T)$ as in {ref}`un_ex1`. - Plot $\bar g(T)$ and $g_{\rm max}$ on the same axes and shade the - infeasible region. +(b) For $T = 1, 2, \ldots, 150$, compute $\bar g(T)$ as in {ref}`un_ex1`. + + Plot $\bar g(T)$ and $g_{\rm max}$ on the same axes and shade the infeasible region. -(c) Identify $T^*$ and print $\bar g$ at $T^*$ and $T^* + 1$. +(c) Identify $T^*$, print $\bar g$ at $T^*$, and verify that no feasible real fixed point exists at $T^* + 1$. ``` ```{solution-start} un_ex2 @@ -629,30 +631,72 @@ g_max = (γ1 + γ2) - γ2 / R_max - γ1 * R_max print(f"R_max = {R_max:.4f}") print(f"g_max = {g_max:.4f}") -# (b) g_bar for T = 1 ... 50 +# (b) g_bar for T = 1 ... 150 m0 = 100 T_candidates = np.arange(1, 151) -g_bar_arr = np.empty(len(T_candidates)) -for i, T_val in enumerate(T_candidates): +def S_with_g_bar(p0, m0, model): + γ1, γ2, g = model.γ1, model.γ2, model.g + R_tilde = model.R_tilde + m0_check, Bm1_check = model.m0_check, model.Bm1_check + T = model.T + + Bm1 = 1 / (p0 * R_tilde) * (m0_check - m0) + Bm1_check + BTm1 = (R_tilde ** T * Bm1 + + ((1 - R_tilde ** T) / (1 - R_tilde)) * g) + g_bar = g + (R_tilde - 1) * BTm1 + + disc = (γ1 + γ2 - g_bar)**2 - 4 * γ1 * γ2 + if disc < 0: + return np.nan, np.nan, False + + Ru = ((γ1 + γ2 - g_bar) + np.sqrt(disc)) / (2 * γ1) + λ = γ2 / γ1 + p0_new = (1 / γ1) * m0 * ( + (1 - λ ** T) / (1 - λ) + λ ** T / (Ru - λ)) + + return p0_new, g_bar, True + +def compute_fixed_point_and_g_bar(T_val, m0, p0_guess=1, + θ=0.5, tol=1e-6, max_iter=10_000): model_T = create_model(T=int(T_val)) - p0 = compute_fixed_point(m0, 1, model_T) - Bm1 = (1 / (p0 * model_T.R_tilde)) * (model_T.m0_check - m0) \ - + model_T.Bm1_check - BTm1 = (model_T.R_tilde ** T_val * Bm1 - + (1 - model_T.R_tilde ** T_val) / (1 - model_T.R_tilde) - * model_T.g) - g_bar_arr[i] = model_T.g + (model_T.R_tilde - 1) * BTm1 + p0 = p0_guess + + for _ in range(max_iter): + p0_new, g_bar, real_roots = S_with_g_bar(p0, m0, model_T) + if not real_roots: + return np.nan, np.nan, False + + p0_next = (1 - θ) * p0_new + θ * p0 + if np.abs(p0_next - p0) < tol: + _, g_bar, real_roots = S_with_g_bar(p0_next, m0, model_T) + return p0_next, g_bar, real_roots -feasible = g_bar_arr <= g_max + p0 = p0_next + + return np.nan, np.nan, False + +g_bar_arr = np.full(len(T_candidates), np.nan) +p0_guess = 1 + +for i, T_val in enumerate(T_candidates): + p0_star, g_bar, real_roots = compute_fixed_point_and_g_bar( + T_val, m0, p0_guess=p0_guess) + if real_roots: + g_bar_arr[i] = g_bar + p0_guess = p0_star + +finite = np.isfinite(g_bar_arr) +feasible = finite & (g_bar_arr <= g_max) fig, ax = plt.subplots() -ax.plot(T_candidates, g_bar_arr, label=r'$\bar{g}(T)$') +ax.plot(T_candidates[finite], g_bar_arr[finite], label=r'$\bar{g}(T)$') ax.axhline(g_max, color='red', linestyle='--', label=f'$g_{{\\rm max}} = {g_max:.2f}$') -ax.fill_between(T_candidates, g_bar_arr, g_max, - where=~feasible, alpha=0.2, color='red', - label='infeasible region') +if np.any(feasible): + T_star = T_candidates[feasible][-1] + ax.axvspan(T_star + 1, T_candidates[-1], alpha=0.15, color='red', + label='infeasible region') ax.set_xlabel('$T$') ax.set_ylabel(r'post-$T$ deficit $\bar{g}$') ax.set_title('Fiscal limit: $\\bar{g}(T)$ vs Laffer-curve maximum') @@ -661,18 +705,22 @@ plt.tight_layout() plt.show() # (c) Fiscal limit T* -T_star = T_candidates[feasible][-1] +p0_next, g_bar_next, real_next = compute_fixed_point_and_g_bar( + T_star + 1, m0, p0_guess=p0_guess) + print(f"\nFiscal limit T* = {T_star}") print(f" g_bar(T*) = {g_bar_arr[T_star - 1]:.4f} ≤ g_max = {g_max:.4f}") -print(f" g_bar(T*+1) = {g_bar_arr[T_star]:.4f} > g_max = {g_max:.4f} (infeasible)") +print(f" Feasible real fixed point at T*+1 = {T_star + 1}: {real_next}") ``` Beyond $T^*$, the accumulated bond debt $B_{T-1}$ is so large that the -implied $\bar g$ exceeds the peak of the seigniorage Laffer curve. No matter -how high the government sets the inflation tax rate, it cannot raise enough -revenue to service that debt. The fiscal limit is therefore a hard constraint -on how long a tight-money policy can be pursued before the underlying fiscal -arithmetic becomes incoherent. +implied $\bar g$ exceeds the peak of the seigniorage Laffer curve. + +No matter how high the government sets the inflation tax rate, it cannot +raise enough revenue to service that debt. + +The fiscal limit is therefore a hard constraint on how long a tight-money +policy can be pursued before the underlying fiscal arithmetic becomes incoherent. ```{solution-end} ``` From b92d4db941f7595b7a4a3921b30d62be721f542e Mon Sep 17 00:00:00 2001 From: HumphreyYang Date: Sun, 24 May 2026 16:20:37 +1000 Subject: [PATCH 4/6] remove tags for latex to build --- lectures/complex_and_trig.md | 19 +++++++++---------- lectures/linear_equations.md | 2 +- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/lectures/complex_and_trig.md b/lectures/complex_and_trig.md index b33e88991..3c9d40fb4 100644 --- a/lectures/complex_and_trig.md +++ b/lectures/complex_and_trig.md @@ -608,23 +608,22 @@ Each `simplify` call returns 0, confirming all four identities. The angle-sum identities derived in the lecture are: $$ -\cos(\theta + w) = \cos\theta\cos w - \sin\theta\sin w \tag{i} -$$ +\cos(\theta + w) = \cos\theta\cos w - \sin\theta\sin w +$$ (ct-cos-sum) $$ -\cos(\theta - w) = \cos\theta\cos w + \sin\theta\sin w \tag{ii} -$$ +\cos(\theta - w) = \cos\theta\cos w + \sin\theta\sin w +$$ (ct-cos-diff) $$ -\sin(\theta + w) = \sin\theta\cos w + \cos\theta\sin w \tag{iii} -$$ +\sin(\theta + w) = \sin\theta\cos w + \cos\theta\sin w +$$ (ct-sin-sum) $$ -\sin(\theta - w) = \sin\theta\cos w - \cos\theta\sin w \tag{iv} -$$ +\sin(\theta - w) = \sin\theta\cos w - \cos\theta\sin w +$$ (ct-sin-diff) -By adding and subtracting appropriate pairs of these four equations, derive -the three **product-to-sum formulas**: +By adding and subtracting appropriate pairs of equations {eq}`ct-cos-sum`--{eq}`ct-sin-diff`, derive the three **product-to-sum formulas**: $$ \cos\theta\cos w = \frac{\cos(\theta+w) + \cos(\theta-w)}{2} diff --git a/lectures/linear_equations.md b/lectures/linear_equations.md index 4b9ccb0fb..fdae06538 100644 --- a/lectures/linear_equations.md +++ b/lectures/linear_equations.md @@ -1317,7 +1317,7 @@ It can be verified that this system has no solutions. We will thus try to find the best approximate solution for $x$. -1. Use {eq}`least_squares` and matrix algebra to find the least squares solution $\hat{x}$. +1. Use the least-squares formula above and matrix algebra to find the least squares solution $\hat{x}$. 2. Find the least squares solution using `numpy.linalg.lstsq` and compare the results. ```{exercise-end} From 78855b7dd7f8aa6dd673c95cc176c8208d8a4450 Mon Sep 17 00:00:00 2001 From: HumphreyYang Date: Sun, 24 May 2026 17:09:20 +1000 Subject: [PATCH 5/6] minor updates --- lectures/ar1_processes.md | 4 +- lectures/cagan_adaptive.md | 38 ++++++------ lectures/cagan_ree.md | 20 +++--- lectures/cobweb.md | 3 +- lectures/complex_and_trig.md | 14 ++--- lectures/cons_smooth.md | 31 ++++++---- lectures/eigen_I.md | 5 -- lectures/equalizing_difference.md | 35 ++++++----- lectures/french_rev.md | 87 ++++++++++++++------------- lectures/geom_series.md | 28 ++++----- lectures/inflation_history.md | 46 +++++++------- lectures/input_output.md | 4 +- lectures/intro_supply_demand.md | 2 +- lectures/laffer_adaptive.md | 37 ++++++------ lectures/lake_model.md | 26 ++++---- lectures/linear_equations.md | 1 - lectures/long_run_growth.md | 12 ++-- lectures/markov_chains_I.md | 2 +- lectures/money_inflation.md | 75 ++++++++++++----------- lectures/money_inflation_nonlinear.md | 73 +++++++++++----------- lectures/pv.md | 16 ++--- lectures/tax_smooth.md | 34 +++++------ lectures/time_series_with_matrices.md | 26 ++++---- lectures/unpleasant.md | 37 ++++++------ 24 files changed, 330 insertions(+), 326 deletions(-) diff --git a/lectures/ar1_processes.md b/lectures/ar1_processes.md index ba084154e..a6caeeff4 100644 --- a/lectures/ar1_processes.md +++ b/lectures/ar1_processes.md @@ -464,8 +464,8 @@ $$ For $K$ use the Gaussian kernel ($K$ is the standard normal density). -Write the class so that the bandwidth defaults to Silverman’s rule (see -the “rule of thumb” discussion on [this +Write the class so that the bandwidth defaults to Silverman's rule (see +the "rule of thumb" discussion on [this page](https://en.wikipedia.org/wiki/Kernel_density_estimation)). Test the class you have written by going through the steps diff --git a/lectures/cagan_adaptive.md b/lectures/cagan_adaptive.md index 25f253014..b2b0efa36 100644 --- a/lectures/cagan_adaptive.md +++ b/lectures/cagan_adaptive.md @@ -464,9 +464,9 @@ The sluggish fall in inflation is explained by how anticipated inflation $\pi_t For Experiment 1 (sudden stabilization at $T_1 = 60$ from $\mu_0 = 0.5$ to $\mu^* = 0$), solve the model for $\lambda \in \{0.86,\, 0.90,\, 0.95,\, 0.98\}$ and, on a single graph, plot the actual inflation rate $\pi_t$ for each value. -(a) How do the sign and speed of post-stabilization convergence change as $\lambda$ varies within the stable region? +a. How do the sign and speed of post-stabilization convergence change as $\lambda$ varies within the stable region? -(b) For each $\lambda$, print $\rho$ and the peak absolute value of $\pi_t$ for $t \geq T_1$. +b. For each $\lambda$, print $\rho$ and the peak absolute value of $\pi_t$ for $t \geq T_1$. ``` ```{solution-start} ca_ex1 @@ -494,7 +494,7 @@ ax.set_title('Inflation paths for different λ (sudden stabilization)') ax.legend() plt.show() -print(f'{"λ":>6} | {"ρ":>10} | {"|ρ|<1":>8} | {"peak |π| after T₁":>20}') +print(f'{"λ":>6} | {"ρ":>10} | {"|ρ|<1":>8} | {"peak |π| after T1":>20}') print('-' * 56) for λ in λ_vals: m = create_cagan_adaptive_model(λ=λ) @@ -524,12 +524,12 @@ expectations, in contrast to a rational-expectations equilibrium. For the default model (`md`) and both experiments: -(a) Compute and plot the forecast error $e_t = \pi_t^* - \pi_t$ for +a. Compute and plot the forecast error $e_t = \pi_t^* - \pi_t$ for $t = 0, 1, \ldots, T$. -(b) For each experiment, is $e_t$ systematically positive or negative during - the disinflation? Explain why this systematic bias could not survive under - rational expectations. +b. For each experiment, determine whether $e_t$ is systematically positive or + negative during the disinflation and explain why this systematic bias could + not survive under rational expectations. (Recall that `Eπ_seq` returned by `solve_cagan_adaptive` has $T+2$ elements while `π_seq` has $T+1$; use `Eπ_seq[:-1]` to align them.) @@ -575,13 +575,13 @@ axes[1].set_ylabel(r'$\pi_t^* - \pi_t$') plt.tight_layout() plt.show() -print(f'Exp 1 — mean forecast error t < T₁: {e1[:T1].mean():.4f}') -print(f'Exp 1 — mean forecast error t ≥ T₁: {e1[T1:].mean():.4f}') -print(f'Exp 2 — mean forecast error overall: {e2.mean():.4f}') +print(f'Exp 1: mean forecast error t < T1: {e1[:T1].mean():.4f}') +print(f'Exp 1: mean forecast error t >= T1: {e1[T1:].mean():.4f}') +print(f'Exp 2: mean forecast error overall: {e2.mean():.4f}') ``` During disinflation, actual inflation falls *below* expected inflation, so -$e_t = \pi_t^* - \pi_t > 0$ throughout the transition — the public +$e_t = \pi_t^* - \pi_t > 0$ throughout the transition, so the public systematically **over-predicts** inflation. Under rational expectations this persistent one-sided bias would be immediately arbitraged away as agents adjust their forecasting rule until $e_t$ has mean zero. @@ -604,14 +604,14 @@ $$ Using Experiment 1 and the default model `md`: -(a) Compute $\rho$ analytically from the model parameters and verify that +a. Compute $\rho$ analytically from the model parameters and verify that $|\rho| < 1$ (the stability condition {eq}`eq:suffcond`). -(b) From the solved path `π_seq`, compute the empirical ratios +b. From the solved path `π_seq`, compute the empirical ratios $\pi_{t+1}/\pi_t$ for $t = T_1 + 1, \ldots, T_1 + 10$ and compare them to $\rho$. -(c) Plot $\log|\pi_t|$ against $t$ for $t \geq T_1$ and verify that it is +c. Plot $\log|\pi_t|$ against $t$ for $t \geq T_1$ and verify that it is linear with slope $\log|\rho|$. ``` @@ -632,7 +632,7 @@ print(f'ρ = {ρ:.6f} (|ρ| < 1: {abs(ρ) < 1})') μ_seq = np.append(μ0 * np.ones(T1), μ_star * np.ones(md.T + 1 - T1)) π_seq, _, _, _ = solve_cagan_adaptive(md, μ_seq) -# (b) empirical successive ratios +# Part b: empirical successive ratios print(f'\n{"t":>5} | {"π_t":>12} | {"π_{t+1}/π_t":>14} | {"ρ":>8}') print('-' * 46) for t in range(T1, T1 + 10): @@ -641,7 +641,7 @@ for t in range(T1, T1 + 10): ``` ```{code-cell} ipython3 -# (c) log|π_t| is linear after T1 +# Part c: log|π_t| is linear after T1 t_post = np.arange(T1, md.T + 1) log_π = np.log(np.abs(π_seq[T1:])) @@ -676,16 +676,16 @@ $\pi_t = \rho^{t-T_1} \pi_{T_1}$ for $t \geq T_1$. Experiment 2 uses a gradual decline in money growth $\mu_t = \phi^t \mu_0 + (1-\phi^t)\mu^*$ with $\phi = 0.9$. -(a) For the same gradual $\mu$ path, compare the inflation $\pi_t$ and expected inflation $\pi_t^*$ paths for two stable cases: +a. For the same gradual $\mu$ path, compare the inflation $\pi_t$ and expected inflation $\pi_t^*$ paths for two stable cases: * **Faster adjustment**: $\lambda = 0.86$ * **Slower adjustment**: $\lambda = 0.95$ Plot $\pi_t$, $\pi_t^*$, and $\mu_t$ for each case on side-by-side graphs. -(b) For each case, compute the mean absolute forecast error $\bar{e} = \frac{1}{T+1}\sum_{t=0}^T |\pi_t^* - \pi_t|$. +b. For each case, compute the mean absolute forecast error $\bar{e} = \frac{1}{T+1}\sum_{t=0}^T |\pi_t^* - \pi_t|$. -(c) Explain why the faster-adjustment case can move below the money-growth path while the slower-adjustment case displays more persistent forecast errors. +c. Explain why the faster-adjustment case can move below the money-growth path while the slower-adjustment case displays more persistent forecast errors. ``` ```{solution-start} ca_ex4 diff --git a/lectures/cagan_ree.md b/lectures/cagan_ree.md index f91252359..602a44dfe 100644 --- a/lectures/cagan_ree.md +++ b/lectures/cagan_ree.md @@ -461,8 +461,9 @@ Such a completely unanticipated shock is popularly known as an "MIT shock". The mental experiment involves switching at time $T_1$ from an initial "continuation path" for $\{\mu_t, \pi_t\} $ to another path that involves a permanently lower inflation rate. -**Initial Path:** $\mu_t = \mu_0$ for all $t \geq 0$. So this path is for $\{\mu_t\}_{t=0}^\infty$; the associated -path for $\pi_t$ has $\pi_t = \mu_0$. +**Initial Path:** $\mu_t = \mu_0$ for all $t \geq 0$. + +This path is for $\{\mu_t\}_{t=0}^\infty$; the associated path for $\pi_t$ has $\pi_t = \mu_0$. **Revised Continuation Path** Where $ \mu_0 > \mu^*$, we construct a continuation path $\{\mu_s\}_{s=T_1}^\infty$ by setting $\mu_s = \mu^*$ for all $s \geq T_1$. The perfect foresight continuation path for @@ -661,8 +662,8 @@ at $T_1 = 60$, with $T = 80$), solve the model for $\alpha \in \{1,\, 3,\, 5,\, 10,\, 25\}$ and plot the inflation path $\pi_t$ for each value on a single graph. -Describe how the **anticipation effect** — the pre-stabilization fall in inflation -— changes with $\alpha$. +Describe how the **anticipation effect**, the pre-stabilization fall in inflation, +changes with $\alpha$. ``` ```{solution-start} cagan_ex1 @@ -716,9 +717,9 @@ $$ \pi_t = (1-\delta) \sum_{s=t}^T \delta^{s-t} \mu_s + \delta^{T+1-t} \pi_{T+1}^* $$ -Compute $\pi_t$ directly from this formula for each $t = 0, 1, \ldots, T$ and -compare it to the matrix solution returned by `solve`. Plot both on the same -graph and print the maximum absolute difference. +Compute $\pi_t$ directly from this formula for each $t = 0, 1, \ldots, T$, +compare it to the matrix solution returned by `solve`, plot both on the same +graph, and print the maximum absolute difference. ``` ```{solution-start} cagan_ex2 @@ -770,14 +771,15 @@ The two methods agree to machine precision, confirming that the matrix system **Foreseen gradual vs sudden stabilization.** Experiment 1 features a *sudden* foreseen drop in money growth at $T_1 = 60$. + Experiment 3 features a *gradual* foreseen path $\mu_t = \phi^t \mu_0 + (1-\phi^t)\mu^*$. On a single graph, plot the inflation paths for: - Experiment 1 (sudden), and - Experiment 3 with $\phi \in \{0.95, 0.85, 0.70\}$ (increasingly fast gradualism). -Use $\alpha = 5$, $\mu_0 = 0.5$, $\mu^* = 0$, $T = 80$. Which approach generates -the smoothest pre-stabilization decline in inflation? +Use $\alpha = 5$, $\mu_0 = 0.5$, $\mu^* = 0$, and $T = 80$ to determine which +approach generates the smoothest pre-stabilization decline in inflation. ``` ```{solution-start} cagan_ex3 diff --git a/lectures/cobweb.md b/lectures/cobweb.md index 3bda73f95..b74199676 100644 --- a/lectures/cobweb.md +++ b/lectures/cobweb.md @@ -82,7 +82,6 @@ ax.plot(years, hog_prices, '-o', ms=4, label='hog price') ax.set_xlabel('year') ax.set_ylabel('dollars') ax.legend() -ax.grid() plt.show() ``` @@ -595,4 +594,4 @@ ts_plot_price_blae(m, ``` ```{solution-end} -``` \ No newline at end of file +``` diff --git a/lectures/complex_and_trig.md b/lectures/complex_and_trig.md index 3c9d40fb4..bdeb2ec4e 100644 --- a/lectures/complex_and_trig.md +++ b/lectures/complex_and_trig.md @@ -153,7 +153,6 @@ ax.text(0-0.2, 0.5, '$x = 1$') # Label x ax.text(0.5, 1.2, r'$y = \sqrt{3}$') # Label y ax.text(0.25, 0.15, r'$\theta = 60^o$') # Label θ -ax.grid(True) plt.show() ``` @@ -351,7 +350,6 @@ ticklab = ax.yaxis.get_ticklabels()[0] # Set y-label position trans = ticklab.get_transform() ax.yaxis.set_label_coords(0, 5, transform=trans) -ax.grid() plt.show() ``` @@ -582,16 +580,16 @@ from sympy import Symbol, cos, sin, simplify θ = Symbol('θ', real=True) -print("cos(2θ) = cos²θ − sin²θ:", +print("cos(2θ) = cos(θ)**2 - sin(θ)**2:", simplify(cos(2*θ) - (cos(θ)**2 - sin(θ)**2))) print("sin(2θ) = 2sinθcosθ:", simplify(sin(2*θ) - 2*sin(θ)*cos(θ))) -print("cos(2θ) = 2cos²θ − 1:", +print("cos(2θ) = 2*cos(θ)**2 - 1:", simplify(cos(2*θ) - (2*cos(θ)**2 - 1))) -print("cos(2θ) = 1 − 2sin²θ:", +print("cos(2θ) = 1 - 2*sin(θ)**2:", simplify(cos(2*θ) - (1 - 2*sin(θ)**2))) ``` @@ -657,13 +655,13 @@ from sympy import symbols, cos, sin, simplify θ, w = symbols('θ w', real=True) -print("cos(θ+w) + cos(θ-w) − 2cos(θ)cos(w) =", +print("cos(θ+w) + cos(θ-w) - 2cos(θ)cos(w) =", simplify(cos(θ+w) + cos(θ-w) - 2*cos(θ)*cos(w))) -print("cos(θ-w) − cos(θ+w) − 2sin(θ)sin(w) =", +print("cos(θ-w) - cos(θ+w) - 2sin(θ)sin(w) =", simplify(cos(θ-w) - cos(θ+w) - 2*sin(θ)*sin(w))) -print("sin(θ+w) + sin(θ-w) − 2sin(θ)cos(w) =", +print("sin(θ+w) + sin(θ-w) - 2sin(θ)cos(w) =", simplify(sin(θ+w) + sin(θ-w) - 2*sin(θ)*cos(w))) ``` diff --git a/lectures/cons_smooth.md b/lectures/cons_smooth.md index 81b843f4e..67e15740f 100644 --- a/lectures/cons_smooth.md +++ b/lectures/cons_smooth.md @@ -551,7 +551,14 @@ Now let's compute and plot consumption path variations def compute_variation(model, ξ1, ϕ, a0, y_seq, verbose=1): R, T, β_seq = model.R, model.T, model.β_seq - ξ0 = ξ1*((1 - 1/R) / (1 - (1/R)**(T+1))) * ((1 - (ϕ/R)**(T+1)) / (1 - ϕ/R)) + growth = ϕ / R + if np.isclose(growth, 1): + pv_sum = T + 1 + else: + pv_sum = (1 - growth**(T+1)) / (1 - growth) + + annuity = (1 - 1/R) / (1 - (1/R)**(T+1)) + ξ0 = ξ1 * annuity * pv_sum v_seq = np.array([(ξ1*ϕ**t - ξ0) for t in range(T+1)]) if verbose == 1: @@ -901,11 +908,11 @@ $$ and the default model parameters. -(a) Plot all four consumption paths on a single graph. What do you notice about - their shapes relative to one another? +a. Plot all four consumption paths on a single graph and describe their shapes + relative to one another. -(b) Plot $c_0$ against $a_0$ and compute the slope of the resulting line. - Verify that the slope equals the annuity factor +b. Plot $c_0$ against $a_0$, compute the slope of the resulting line, and verify + that the slope equals the annuity factor $\left(\frac{1-R^{-1}}{1-R^{-(T+1)}}\right)$ from equation {eq}`eq:conssmoothing`. ``` @@ -946,7 +953,7 @@ R = cs_model.R slope = (c0_vals[-1] - c0_vals[0]) / (a0_vals[-1] - a0_vals[0]) annuity = (1 - 1/R) / (1 - (1/R)**(T+1)) print(f'Numerical slope of c0 w.r.t. a0: {slope:.8f}') -print(f'Annuity factor (1 - R⁻¹)/(1 - R⁻⁽ᵀ⁺¹⁾): {annuity:.8f}') +print(f'Annuity factor (1 - R**(-1))/(1 - R**(-(T+1))): {annuity:.8f}') print(f'Match: {np.isclose(slope, annuity)}') ``` @@ -968,13 +975,13 @@ maximizes welfare {eq}`welfare` among all budget-feasible paths. Using `compute_variation` with $\xi_1 = 0.1$ and the Experiment 1 income sequence ($W_0 = 2.5$ windfall at $t=21$, with $a_0 = -2$): -(a) Compute welfare for the optimal flat path and for variations with $\phi \in \{0.7,\, 0.9,\, 0.98,\, 1.02,\, 1.1\}$. +a. Compute welfare for the optimal flat path and for variations with $\phi \in \{0.7,\, 0.9,\, 0.98,\, 1.02,\, 1.1\}$. Print the results in a table. -(b) Plot welfare as a function of $\phi$ on a fine grid in $(0.5, 1.5)$. Mark the - welfare of the optimal flat path as a dashed horizontal line and confirm it is - the global maximum. +b. Plot welfare as a function of $\phi$ on a fine grid in $[0.7, 1.1]$ and mark + the welfare of the optimal flat path as a dashed horizontal line to confirm + that it lies above these budget-feasible variations. ``` ```{solution-start} consmooth_ex4 @@ -1001,7 +1008,7 @@ for ϕ in ϕ_vals: print(f'{ϕ:>6.2f} | {w:>12.6f} | {w - w_opt:>+14.6f}') # Fine grid -ϕ_grid = np.linspace(0.5, 1.5, 200) +ϕ_grid = np.linspace(0.7, 1.1, 200) w_grid = np.array([ welfare(cs_model, compute_variation(cs_model, ξ1=0.1, ϕ=ϕ, a0=a0, @@ -1021,6 +1028,8 @@ plt.show() Every non-zero variation in the plotted family delivers strictly lower welfare than the flat path marked by the horizontal dashed line. +The wider interval $(0.5, 1.5)$ is not informative here because values of $\phi$ well above one make the late-life variation $\xi_1\phi^t$ very large. + This numerically confirms the variational principle that the constant consumption path is the global welfare maximizer when $\beta R = 1$. ```{solution-end} diff --git a/lectures/eigen_I.md b/lectures/eigen_I.md index 14aee06cf..caf4a0409 100644 --- a/lectures/eigen_I.md +++ b/lectures/eigen_I.md @@ -222,13 +222,11 @@ def grid_transform(A=np.array([[1, -1], [1, 1]])): # Plot x-y grid points ax[0].scatter(xygrid[0], xygrid[1], s=36, c=colors, edgecolor="none") - # ax[0].grid(True) # ax[0].axis("equal") ax[0].set_title("points $x_1, x_2, \cdots, x_k$") # Plot transformed grid points ax[1].scatter(uvgrid[0], uvgrid[1], s=36, c=colors, edgecolor="none") - # ax[1].grid(True) # ax[1].axis("equal") ax[1].set_title("points $Ax_1, Ax_2, \cdots, Ax_k$") @@ -746,7 +744,6 @@ for spine in ['left', 'bottom']: ax.spines[spine].set_position('zero') for spine in ['right', 'top']: ax.spines[spine].set_color('none') -# ax.grid(alpha=0.4) xmin, xmax = -3, 3 ymin, ymax = -3, 3 @@ -1148,7 +1145,6 @@ plt.legend(lines, labels, loc='center left', plt.xlabel("x") plt.ylabel("y") plt.title("Convergence towards eigenvectors") -plt.grid() plt.gca().set_aspect('equal', adjustable='box') plt.show() ``` @@ -1237,7 +1233,6 @@ for i, example in enumerate(examples): ax[i].set_xlabel("x-axis") ax[i].set_ylabel("y-axis") - ax[i].grid() ax[i].set_aspect('equal', adjustable='box') fig.suptitle("Vector fields of the three matrices") diff --git a/lectures/equalizing_difference.md b/lectures/equalizing_difference.md index 43e4a0af3..b9622c5b9 100644 --- a/lectures/equalizing_difference.md +++ b/lectures/equalizing_difference.md @@ -497,11 +497,10 @@ We find that raising the gross interest rate $R$ increases the initial college w Using `compute_gap`, plot the college-high-school wage premium $\phi$ as a function of tuition cost $D \in [0, 30]$ with all other parameters at their default values. -(a) Add a horizontal dashed line at $\phi = 1$. Does $\phi$ ever reach 1 in this - range? Explain why or why not in terms of the free-college formula - $\phi = A_h / A_c$. +a. Add a horizontal dashed line at $\phi = 1$ and explain why $\phi$ does or does + not reach 1 in this range in terms of the free-college formula $\phi = A_h / A_c$. -(b) Numerically estimate $\partial\phi/\partial D$ as the slope of the plotted +b. Numerically estimate $\partial\phi/\partial D$ as the slope of the plotted line and compare it to the symbolic derivative $\phi_D$ computed with SymPy in this lecture. ``` @@ -531,8 +530,8 @@ slope_num = (gaps[-1] - gaps[0]) / (D_arr[-1] - D_arr[0]) # Compare with SymPy ϕ_D_func already computed in this lecture slope_sympy = float(ϕ_D_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value)) -print(f'Numerical ∂ϕ/∂D: {slope_num:.6f}') -print(f'SymPy ∂ϕ/∂D: {slope_sympy:.6f}') +print(f'Numerical dϕ/dD: {slope_num:.6f}') +print(f'SymPy dϕ/dD: {slope_sympy:.6f}') print(f'Match: {abs(slope_num - slope_sympy) < 1e-4}') ``` @@ -551,9 +550,9 @@ $T \in \{10, 15, 20, \ldots, 60\}$ for two cases: 1. Free college: $D = 0$. 2. Costly college: $D = 10$. -On the same graph, plot both curves and add a horizontal dashed line at -$\phi = 1$. Explain the direction of the relationship between $T$ and $\phi$ -in terms of the present-value factors $A_h$ and $A_c$. +On the same graph, plot both curves, add a horizontal dashed line at $\phi = 1$, +and explain the direction of the relationship between $T$ and $\phi$ in terms of +the present-value factors $A_h$ and $A_c$. ``` ```{solution-start} eq_ex2 @@ -597,8 +596,8 @@ $$ \frac{\phi(R_0 + \varepsilon) - \phi(R_0 - \varepsilon)}{2\varepsilon} $$ -for $\varepsilon = 10^{-5}$. Evaluate at the default parameter values and compare -with the symbolic result computed in this lecture. +for $\varepsilon = 10^{-5}$, evaluating at the default parameter values and +comparing with the symbolic result computed in this lecture. ``` ```{solution-start} eq_ex3 @@ -616,8 +615,8 @@ dϕ_dR_fd = (gap_plus - gap_minus) / (2 * ε) # SymPy result from ϕ_R_func already computed in this lecture dϕ_dR_sym = float(ϕ_R_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value)) -print(f'Finite-difference ∂ϕ/∂R: {dϕ_dR_fd:.6f}') -print(f'SymPy ∂ϕ/∂R: {dϕ_dR_sym:.6f}') +print(f'Finite-difference dϕ/dR: {dϕ_dR_fd:.6f}') +print(f'SymPy dϕ/dR: {dϕ_dR_sym:.6f}') print(f'Absolute error: {abs(dϕ_dR_fd - dϕ_dR_sym):.2e}') ``` @@ -633,13 +632,13 @@ symbolic calculus and numerical computation are consistent. Using the entrepreneur-worker version of the model (`create_edm_π`), answer the following questions. -(a) Plot the required wage premium $\phi$ for a successful entrepreneur as a - function of the success probability $\pi \in [0.10, 1.00]$. Mark the +a. Plot the required wage premium $\phi$ for a successful entrepreneur as a + function of the success probability $\pi \in [0.10, 1.00]$ and mark the horizontal line $\phi = 2$ as a dashed line. -(b) At what approximate value of $\pi$ does the premium cross 2, and for which side of that threshold is the premium above 2? +b. At what approximate value of $\pi$ does the premium cross 2, and for which side of that threshold is the premium above 2? -(c) Explain intuitively why the premium rises as $\pi \to 0$. +c. Explain intuitively why the premium rises as $\pi \to 0$. ``` ```{solution-start} eq_ex4 @@ -664,7 +663,7 @@ plt.show() crossing = np.interp(2, ϕ_arr_π[::-1], π_arr[::-1]) above_idx = np.where(ϕ_arr_π > 2)[0] -print(f'Premium equals 2 at π ≈ {crossing:.3f}') +print(f'Premium equals 2 at π approximately {crossing:.3f}') print(f'On the grid, premium exceeds 2 for π below about {π_arr[above_idx[-1]]:.3f}') ``` diff --git a/lectures/french_rev.md b/lectures/french_rev.md index 4e5e238f2..bbd8a961f 100644 --- a/lectures/french_rev.md +++ b/lectures/french_rev.md @@ -893,7 +893,9 @@ assignats (paper money) were accompanied by little upward price level pressure, This reflects how well legal restrictions -- financial repression -- was working during the period of the Terror. -But the Terror ended in July 1794. That unleashed a big inflation as people tried to find other ways to transact and store values. +But the Terror ended in July 1794. + +That unleashed a big inflation as people tried to find other ways to transact and store values. The following two graphs are for the classical hyperinflation period. @@ -1006,18 +1008,18 @@ Because `infl` measures the *log* change in the price level, the 50 per cent threshold in simple-ratio terms ($P_{t+1}/P_t - 1 \geq 0.5$) corresponds to $\log(1.5) \approx 0.405$ in the `infl` units. -(a) Using the approximate date grid +a. Using the approximate date grid `pd.date_range(start='1791-01', periods=63, freq='ME')`, plot the full - monthly inflation series `infl[1:]` (skip the leading `NaN`). Draw a - dashed horizontal line at the 50 per cent threshold and shade the months - that exceed it. + monthly inflation series `infl[1:]` (skip the leading `NaN`), draw a dashed + horizontal line at the 50 per cent threshold, and shade the months that + exceed it. -(b) Print the number of months above the threshold and their approximate dates. - Do the dates match the "May to December 1795" statement in the lecture? +b. Print the number of months above the threshold and their approximate dates to + check whether they match the "May to December 1795" statement in the lecture. -(c) The lecture partitions the data into three sub-periods with the boundary - at index 44 (August 1794, roughly). How many of the hyperinflation months - (by Cagan's criterion) fall inside the third sub-period `infl[44:63]`? +c. Using the lecture's boundary at index 44 (August 1794, roughly), compute how + many Cagan-hyperinflation months fall inside the third sub-period + `infl[44:63]`. ``` ```{solution-start} fr_ex1 @@ -1033,7 +1035,7 @@ threshold = np.log(1.5) fig, ax = plt.subplots(figsize=(10, 4)) ax.plot(dates[1:], infl[1:], color='black', lw=1, label='Monthly inflation (log change)') ax.axhline(threshold, color='red', linestyle='--', lw=1, - label=f'50%/month threshold (log 1.5 ≈ {threshold:.3f})') + label=f'50%/month threshold (log 1.5 approx {threshold:.3f})') ax.fill_between(dates[1:], infl[1:], threshold, where=infl[1:] > threshold, alpha=0.35, color='red', label='Above Cagan threshold') @@ -1042,7 +1044,7 @@ ax.axvline(pd.Timestamp('1793-07'), color='orange', lw=0.8, linestyle=':', ax.axvline(pd.Timestamp('1794-08'), color='orange', lw=0.8, linestyle=':') ax.set_xlabel('Date') ax.set_ylabel('Monthly inflation (log change)') -ax.set_title('Monthly inflation in Revolutionary France, 1791–1796') +ax.set_title('Monthly inflation in Revolutionary France, 1791-1796') ax.legend(fontsize=8) plt.tight_layout() plt.show() @@ -1052,12 +1054,12 @@ plt.show() above = np.where(infl > threshold)[0] print(f'Months above 50%/month threshold: {len(above)}') for idx in above: - print(f' index {idx:3d} ≈ {dates[idx].strftime("%b %Y")} ' + print(f' index {idx:3d} approx {dates[idx].strftime("%b %Y")} ' f'(inflation = {infl[idx]:.3f})') -# Part (c) +# Part c in_subperiod3 = above[above >= 44] -print(f'\nOf those, {len(in_subperiod3)} fall in sub-period 3 (index ≥ 44)') +print(f'\nOf those, {len(in_subperiod3)} fall in sub-period 3 (index >= 44)') ``` The concentrated cluster of months above the threshold falls in 1795, @@ -1084,23 +1086,22 @@ The lecture fits a *linear* (levels) regression of `infl` on `bal` for the hyperinflation sub-period, but Cagan's theory predicts a log-linear relationship. -(a) Compute `log_bal = np.log(bal)`. Using the `fit` helper defined in this - lecture, regress `log_bal[44:63]` on `infl[44:63]` and extract the slope - $b$. Then $\hat\alpha = -b$. +a. Compute `log_bal = np.log(bal)`, use the `fit` helper defined in this lecture + to regress `log_bal[44:63]` on `infl[44:63]`, extract the slope $b$, and set + $\hat\alpha = -b$. -(b) Plot `infl[44:63]` on the horizontal axis and `log_bal[44:63]` on the - vertical axis. Overlay the fitted line and label it with the estimated +b. Plot `infl[44:63]` on the horizontal axis and `log_bal[44:63]` on the + vertical axis, then overlay the fitted line and label it with the estimated $\hat\alpha$. -(c) The `fit` function in this lecture regresses `infl` on `bal` (levels, not - logs). This gives slope $b_3$ (`b3` from the lecture). Explain in one or - two sentences why the log-linear specification in part (a) is more - consistent with Cagan's model, and what distortion arises from using +c. Explain why the slope $b_3$ from the lecture's levels regression of `infl` on + `bal` is less consistent with Cagan's model than the log-linear + specification in part a, and identify the distortion that arises from using `bal` in levels during a hyperinflation. -(d) Compare $\hat\alpha$ from part (a) to the default value $\alpha = 5$ used - in the quantecon lecture {doc}`cagan_ree`. Is the order of magnitude - consistent? +d. Compare $\hat\alpha$ from part a to the default value $\alpha = 5$ used in + the quantecon lecture {doc}`cagan_ree` and assess whether the order of + magnitude is consistent. ``` ```{solution-start} fr_ex2 @@ -1113,7 +1114,7 @@ log_bal = np.log(bal) # Fit log_bal = a + b * infl. a_log, b_log = fit(infl[44:63], log_bal[44:63]) α_hat = -b_log -print(f'Log-linear estimate: α̂ = {α_hat:.2f}') +print(f'Log-linear estimate: alpha_hat = {α_hat:.2f}') print(f'Default in cagan_ree: α = 5.00') ``` @@ -1128,13 +1129,13 @@ ax.plot(infl_grid, a_log + b_log * infl_grid, label=fr'log-linear fit: $\hat{{\alpha}} = {α_hat:.1f}$') ax.set_xlabel('Monthly inflation rate $\\pi_t$') ax.set_ylabel('$\\log(\\mathrm{real\\;balances})$') -ax.set_title('Cagan demand for money — hyperinflation period') +ax.set_title('Cagan demand for money - hyperinflation period') ax.legend() plt.tight_layout() plt.show() ``` -**Part (c):** Cagan's model postulates an exponential fall in real balances as +**Part c:** Cagan's model postulates an exponential fall in real balances as inflation rises, $M/p = e^{c - \alpha\pi}$. Over a hyperinflation real balances vary by orders of magnitude, so a linear @@ -1143,7 +1144,7 @@ fit of `infl` on `bal` is a poor global approximation because it imposes a strai Taking logs first makes the relationship linear and the regression well-specified across the full range of the data. -**Part (d):** $\hat\alpha$ should come out in the range of 3–6, consistent with the +**Part d:** $\hat\alpha$ should come out in the range of 3-6, consistent with the default $\alpha = 5$ in {doc}`cagan_ree`, confirming that the same model estimated on 18th-century French data gives a parameter value similar to those obtained from 20th-century hyperinflations. @@ -1156,9 +1157,9 @@ on 18th-century French data gives a parameter value similar to those obtained fr **A single-figure portrait of the three monetary regimes.** -The lecture presents the three monetary regimes through five separate scatter -plots. Here you will synthesise them into a single figure that makes the -contrasting theories visually obvious. +The lecture presents the three monetary regimes through five separate scatter plots. + +Here you will synthesise them into a single figure that makes the contrasting theories visually obvious. Produce a figure with all three scatter clouds (blue circles, red pluses, orange stars) and one regression line per cloud, using the coefficients already computed @@ -1168,16 +1169,16 @@ in the lecture: `infl = a1 + b1 * bal` (theory says growing *backed* real balances accompany only modest inflation). -- **Terror** (indices 31:44): the normal money-demand relationship was suspended - by legal restrictions. Draw the *reversed* regression - `bal = a2_rev + b2_rev * infl` as a function of `infl` — this produces a - nearly *horizontal* line in `(bal, infl)` space, showing that real balances +- **Terror** (indices 31:44): because legal restrictions suspended the normal + money-demand relationship, draw the *reversed* regression + `bal = a2_rev + b2_rev * infl` as a function of `infl`, which produces a + nearly *horizontal* line in `(bal, infl)` space and shows that real balances were held roughly fixed by force regardless of inflation. - **Hyperinflation** (indices 44:63): draw `infl = a3 + b3 * bal` (the classic - negative Cagan slope — higher inflation accompanies lower real balances). + negative Cagan slope, since higher inflation accompanies lower real balances). -After producing the figure, write 2–3 sentences explaining why the Terror +After producing the figure, write 2-3 sentences explaining why the Terror regression line takes a different orientation from the other two. ``` @@ -1190,19 +1191,19 @@ fig, ax = plt.subplots(figsize=(8, 6)) # Real bills ax.plot(bal[1:31], infl[1:31], 'o', markerfacecolor='none', - color='blue', label='Real bills (1791–1793)') + color='blue', label='Real bills (1791-1793)') bal_grid1 = np.linspace(bal[1:31].min(), bal[1:31].max(), 100) ax.plot(bal_grid1, a1 + b1 * bal_grid1, color='blue', lw=2) # Terror ax.plot(bal[31:44], infl[31:44], '+', color='red', ms=9, - label='Terror (1793–1794)') + label='Terror (1793-1794)') infl_grid2 = np.linspace(infl[31:44].min(), infl[31:44].max(), 100) ax.plot(a2_rev + b2_rev * infl_grid2, infl_grid2, color='red', lw=2) # Hyperinflation ax.plot(bal[44:63], infl[44:63], '*', color='orange', ms=8, - label='Hyperinflation (1794–1796)') + label='Hyperinflation (1794-1796)') bal_grid3 = np.linspace(bal[44:63].min(), bal[44:63].max(), 100) ax.plot(bal_grid3, a3 + b3 * bal_grid3, color='orange', lw=2) diff --git a/lectures/geom_series.md b/lectures/geom_series.md index 3fbd1b0f5..44c08493a 100644 --- a/lectures/geom_series.md +++ b/lectures/geom_series.md @@ -1026,12 +1026,12 @@ The right panel shows that the error decays geometrically, a straight line on a Using the fractional reserve banking model from this lecture, suppose the initial deposit is $D_0 = 1$. -(a) For each reserve ratio $r \in \{0.05, 0.10, 0.20, 0.40\}$, plot the +a. For each reserve ratio $r \in \{0.05, 0.10, 0.20, 0.40\}$, plot the **cumulative deposits** $\sum_{i=0}^{N} D_i$ as a function of the number - of banks $N$ (for $N = 0, 1, \ldots, 50$). Add a dashed horizontal line + of banks $N$ (for $N = 0, 1, \ldots, 50$) and add a dashed horizontal line at the theoretical limit $D_0/r$ for each. -(b) Print the theoretical money multiplier $1/r$ for each reserve ratio. +b. Print the theoretical money multiplier $1/r$ for each reserve ratio. ``` ```{solution-start} geom_ex2 @@ -1058,7 +1058,7 @@ ax.set_title('Convergence to the money multiplier $D_0/r$') ax.legend() plt.show() -# Part (b) +# Part b print(f"{'Reserve ratio':>15} | {'Money multiplier 1/r':>20}") print('-' * 40) for r in reserve_ratios: @@ -1084,10 +1084,10 @@ $$ Using the `infinite_lease` function defined earlier, set $x_0 = 1$ and $r = 0.05$, and let $g$ range over $[0,\, 0.045]$. -(a) Plot the exact present value and the Gordon approximation on the same +a. Plot the exact present value and the Gordon approximation on the same graph as functions of $g$. -(b) On a second subplot, plot the percentage approximation error +b. On a second subplot, plot the percentage approximation error $$ \text{error}(\%) = \frac{|\text{Gordon} - \text{exact}|}{\text{exact}} \times 100 @@ -1143,13 +1143,13 @@ The approximation becomes accurate when $r$ is small because the exact value dif The `calculate_y` function simulates the Keynesian dynamic model. -(a) For $i = 0.3$, $g = 0.3$, $y_{-1} = 0$, and $T = 60$, plot the path - of national income $y_t$ for each $b \in \{0.25,\, 0.50,\, 0.75,\, 0.90\}$. - For each $b$, mark the long-run equilibrium - $y^* = (i + g)/(1 - b)$ with a dashed horizontal line. +a. For $i = 0.3$, $g = 0.3$, $y_{-1} = 0$, and $T = 60$, plot the path + of national income $y_t$ for each $b \in \{0.25,\, 0.50,\, 0.75,\, 0.90\}$ + and mark the long-run equilibrium $y^* = (i + g)/(1 - b)$ with a dashed + horizontal line for each $b$. -(b) For each value of $b$, find the first period $T^*$ at which $y_t$ - reaches 95 percent of $y^*$. Plot $T^*$ against $b$ and comment on how +b. For each value of $b$, find the first period $T^*$ at which $y_t$ + reaches 95 percent of $y^*$, plot $T^*$ against $b$, and comment on how the speed of convergence relates to the size of the Keynesian multiplier. ``` @@ -1162,7 +1162,7 @@ i_0, g_0, y_init = 0.3, 0.3, 0 bs = [0.25, 0.50, 0.75, 0.90] T = 60 -# Part (a) +# Part a fig, ax = plt.subplots() for b in bs: y = calculate_y(i_0, b, g_0, T, y_init) @@ -1176,7 +1176,7 @@ ax.set_title('National income paths for different $b$') ax.legend() plt.show() -# Part (b) +# Part b T_long = 1000 T_star_vals = [] for b in bs: diff --git a/lectures/inflation_history.md b/lectures/inflation_history.md index d4b7b84ff..de5191cff 100644 --- a/lectures/inflation_history.md +++ b/lectures/inflation_history.md @@ -278,7 +278,7 @@ def process_df(df): # Convert attribute values to numeric df = df.map(lambda x: float(x) \ - if x != '—' else np.nan) + if x != '\u2014' else np.nan) # Finally, we only focus on data between 1919 and 1925 mask = (df.index >= '1919-01-01') & \ @@ -685,13 +685,13 @@ Hungary, Poland, Germany), compute the peak monthly log-inflation rate $\Delta \log p_t = \log p_t - \log p_{t-1}$ and the calendar month in which it occurred. -(a) Display the four peak log-changes in a bar chart. +a. Display the four peak log-changes in a bar chart. -(b) Convert each peak log-change to a monthly percentage price rise +b. Convert each peak log-change to a monthly percentage price rise (i.e., compute $100 \times (e^{\Delta \log p_t} - 1)$) and print a short table of peak rates and dates. -(c) Which country experienced the most extreme peak monthly inflation? +c. Which country experienced the most extreme peak monthly inflation? ``` ```{solution-start} ih_ex1 @@ -728,7 +728,7 @@ for country, p in p_series.items(): peak_log[country] = log_infl.max() peak_date[country] = log_infl.idxmax() -# (b) Print table +# Part b: print table print(f"{'Country':<10} {'Peak log-change':>16} {'Monthly % rise':>14} {'Date'}") print('-' * 62) for c in p_series: @@ -736,7 +736,7 @@ for c in p_series: print(f"{c:<10} {peak_log[c]:>16.3f} {pct:>13.1f}% " f"{peak_date[c].strftime('%b %Y')}") -# (a) Bar chart +# Part a: bar chart fig, ax = plt.subplots() countries = list(p_series.keys()) ax.bar(countries, [peak_log[c] for c in countries], color='steelblue') @@ -785,8 +785,8 @@ Display your results in a grouped bar chart and comment on what you find. ```{code-cell} ipython3 periods = { - '1700–1913\n(gold standard)': (1700, 1913), - '1914–2000\n(fiat money)': (1914, 2000), + '1700-1913\n(gold standard)': (1700, 1913), + '1914-2000\n(fiat money)': (1914, 2000), } cols_fig5 = ['UK', 'US', 'France', 'Castile'] rates = {col: {} for col in cols_fig5} @@ -842,22 +842,24 @@ fiat-era bar reflects incomplete data and should be interpreted with caution. **Purchasing power parity during the German hyperinflation.** The lecture states that the US dollar exchange rate for each country -"shadowed" its price level. This co-movement is a hallmark of +"shadowed" its price level. + +This co-movement is a hallmark of *purchasing power parity* (PPP), which predicts that $\log e_t \approx \log p_t + \text{const}$, so the *real exchange rate* $q_t = \log e_t - \log p_t$ should be approximately constant. Examine PPP for the German episode: -(a) Normalize both the log price level and the log exchange rate (marks per - US cent) to zero at the first available date and plot both normalized - series on the same axes. How closely do they track each other? +a. Normalize both the log price level and the log exchange rate (marks per + US cent) to zero at the first available date, plot both normalized + series on the same axes, and assess how closely they track each other. -(b) Compute the Pearson correlation between the two normalized log-level +b. Compute the Pearson correlation between the two normalized log-level series and print it. -(c) Plot the real exchange rate $q_t = \log e_t - \log p_t$ over time. - Compare the standard deviation of $q_t$ with the standard deviation of +c. Plot the real exchange rate $q_t = \log e_t - \log p_t$ over time and + compare the standard deviation of $q_t$ with the standard deviation of $\log p_t$ to assess how large the deviations from PPP are relative to the overall price movement. ``` @@ -884,13 +886,13 @@ log_e = np.log(e_ger[common]) log_p_n = log_p - log_p.iloc[0] log_e_n = log_e - log_e.iloc[0] -# (a) Plot normalized log levels +# Part a: plot normalized log levels fig, ax = plt.subplots(figsize=(9, 4)) ax.plot(common, log_p_n, label='Log price level (normalized)', lw=2) ax.plot(common, log_e_n, label='Log exchange rate (normalized)', lw=2, linestyle='--') ax.set_ylabel('Log level (normalized to 0 at start)') -ax.set_title('PPP check: Germany 1919–1924') +ax.set_title('PPP check: Germany 1919-1924') ax.legend() ax.xaxis.set_major_locator(mdates.MonthLocator(interval=5)) ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y')) @@ -899,16 +901,16 @@ for lbl in ax.get_xticklabels(): plt.tight_layout() plt.show() -# (b) Pearson correlation +# Part b: Pearson correlation corr = np.corrcoef(log_p_n.values, log_e_n.values)[0, 1] print(f"Pearson correlation between log price and log exchange rate: {corr:.4f}") -# (c) Real exchange rate q_t = log e - log p +# Part c: real exchange rate q_t = log e - log p q = log_e - log_p fig, ax = plt.subplots(figsize=(9, 3)) ax.plot(common, q, lw=2, color='tab:green') ax.set_ylabel(r'$q_t = \log e_t - \log p_t$') -ax.set_title('Real exchange rate: Germany 1919–1924') +ax.set_title('Real exchange rate: Germany 1919-1924') ax.xaxis.set_major_locator(mdates.MonthLocator(interval=5)) ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y')) for lbl in ax.get_xticklabels(): @@ -920,12 +922,12 @@ print(f"Std dev of log price level (normalized): {log_p_n.std():.3f}") print(f"Std dev of real exchange rate q: {q.std():.3f}") ``` -For parts (a) and (b), the two normalized log series are nearly indistinguishable and their Pearson correlation is very close to 1. +For parts a and b, the two normalized log series are nearly indistinguishable and their Pearson correlation is very close to 1. During Germany's hyperinflation, every tenfold rise in the domestic price level was matched by an approximately tenfold rise in the exchange rate, as PPP predicts. -For part (c), the real exchange rate $q_t$ fluctuates only modestly compared with the enormous swings in $\log p_t$. +For part c, the real exchange rate $q_t$ fluctuates only modestly compared with the enormous swings in $\log p_t$. Its standard deviation is a small fraction of the standard deviation of the normalized log price level, confirming that exchange rate movements were driven almost entirely diff --git a/lectures/input_output.md b/lectures/input_output.md index 6c768cea1..f2626b45f 100644 --- a/lectures/input_output.md +++ b/lectures/input_output.md @@ -41,7 +41,7 @@ mpl.rcParams.update(mpl.rcParamsDefault) ``` The following figure illustrates a network of linkages among 15 sectors -obtained from the US Bureau of Economic Analysis’s 2021 Input-Output Accounts +obtained from the US Bureau of Economic Analysis's 2021 Input-Output Accounts Data. @@ -200,7 +200,6 @@ This can be graphically represented as follows. :tags: [hide-input] fig, ax = plt.subplots() -ax.grid() # Draw constraint lines ax.hlines(0, -1, 400) @@ -457,7 +456,6 @@ The dual problem can be graphically represented as follows. :tags: [hide-input] fig, ax = plt.subplots() -ax.grid() # Draw constraint lines ax.hlines(0, -1, 50) diff --git a/lectures/intro_supply_demand.md b/lectures/intro_supply_demand.md index 575a4ccc1..c82085a8f 100644 --- a/lectures/intro_supply_demand.md +++ b/lectures/intro_supply_demand.md @@ -62,7 +62,7 @@ from collections import namedtuple ## Consumer surplus -Before we look at the model of supply and demand, it will be helpful to have some background on (a) consumer and producer surpluses and (b) integration. +Before we look at the model of supply and demand, it will be helpful to have some background on consumer and producer surpluses and on integration. (If you are comfortable with both topics you can jump to the {ref}`next section `.) diff --git a/lectures/laffer_adaptive.md b/lectures/laffer_adaptive.md index 418dfc451..69bed3ee1 100644 --- a/lectures/laffer_adaptive.md +++ b/lectures/laffer_adaptive.md @@ -47,6 +47,7 @@ by dropping rational expectations and instead assuming that people form expecta ```{note} {cite}`sargent1989least` had studied another way of selecting stationary equilibrium that involved replacing rational expectations with a model of learning via least squares regression. + {cite}`marcet2003recurrent` and {cite}`sargent2009conquest` extended that work and applied it to study recurrent high-inflation episodes in Latin America. ``` @@ -251,7 +252,6 @@ def plot_laffer(model, πs): plt.xlabel('$\pi$') plt.ylabel('seigniorage') plt.legend() - plt.grid(True) plt.show() # Steady state Laffer curve @@ -427,17 +427,17 @@ draw_iterations(πs, model, line_params, π_bars, num_steps=80) The lecture claims that, under adaptive expectations, the "old time religion" holds: lowering the government deficit $g$ lowers the low-inflation steady state $\pi_l$. -(a) Compute the maximum seigniorage revenue $g_{\rm max}$ and the corresponding +a. Compute the maximum seigniorage revenue $g_{\rm max}$ and the corresponding $x_{\rm max}$ by finding the $x$ that maximises $\exp(-\alpha x) - \exp(-(1+\alpha)x)$ using `scipy.optimize.minimize_scalar`. -(b) For $g$ ranging from a small positive value to $0.999 \times g_{\rm max}$, +b. For $g$ ranging from a small positive value to $0.999 \times g_{\rm max}$, compute both $\pi_l(g)$ and $\pi_u(g)$ and plot them against $g$ on the same axes. -(c) Verify that the two roots merge as $g \to g_{\rm max}$ and that $\pi_l$ - falls as $g$ is reduced from the benchmark value $g = 0.35$ to $g/2$. - Relate this to the "old time religion" claim in the lecture. +c. Verify that the two roots merge as $g \to g_{\rm max}$ and that $\pi_l$ + falls as $g$ is reduced from the benchmark value $g = 0.35$ to $g/2$, then + relate this to the "old time religion" claim in the lecture. ``` ```{solution-start} la_ex1 @@ -447,7 +447,7 @@ lowering the government deficit $g$ lowers the low-inflation steady state $\pi_l ```{code-cell} ipython3 from scipy.optimize import minimize_scalar -# (a) Find g_max +# Part a: find g_max res = minimize_scalar(lambda x: -compute_seign(x, model.α), bounds=(0, 10), method='bounded') x_max = res.x @@ -457,7 +457,7 @@ print(f"g_max = {g_max:.4f}") ``` ```{code-cell} ipython3 -# (b) Trace π_l(g) and π_u(g) +# Part b: trace π_l(g) and π_u(g) g_grid = np.linspace(0.01, g_max * 0.999, 300) πl_list, πu_list = [], [] @@ -467,8 +467,8 @@ for g in g_grid: πu_list.append(solve_π_bar(mod_g, x0=4.0)) fig, ax = plt.subplots() -ax.plot(g_grid, πl_list, label=r'$\pi_l(g)$ — low-inflation steady state') -ax.plot(g_grid, πu_list, label=r'$\pi_u(g)$ — high-inflation steady state') +ax.plot(g_grid, πl_list, label=r'$\pi_l(g)$ - low-inflation steady state') +ax.plot(g_grid, πu_list, label=r'$\pi_u(g)$ - high-inflation steady state') ax.axvline(model.g, color='grey', linestyle='--', lw=1, label=f'benchmark $g = {model.g}$') ax.set_xlabel('government deficit $g$') @@ -480,7 +480,7 @@ plt.show() ``` ```{code-cell} ipython3 -# (c) Verify "old time religion" +# Part c: Verify "old time religion" π_l_bench = solve_π_bar(model, x0=0.3) π_l_half = solve_π_bar(create_model(g=model.g / 2), x0=0.3) print(f"π_l at g = {model.g:.2f}: {π_l_bench:.4f}") @@ -509,14 +509,14 @@ adjust almost instantly. Fix an initial $\pi_0$ halfway between $\pi_l$ and $\pi_u$, i.e., $\pi_0 = (\pi_l + \pi_u)/2$, and set $p_{-1} = m_0 + \alpha \pi_0$. -(a) Using `create_model` and `solve_laffer_adapt`, simulate 80 steps for each - $\delta \in \{0.3,\, 0.6,\, 0.9\}$ and plot the resulting $\pi_t$ paths on - a single panel. Add a horizontal dashed line at $\pi_l$ for reference. +a. Using `create_model` and `solve_laffer_adapt`, simulate 80 steps for each + $\delta \in \{0.3,\, 0.6,\, 0.9\}$, plot the resulting $\pi_t$ paths on a + single panel, and add a horizontal dashed line at $\pi_l$ for reference. -(b) For each $\delta$ value, report how many time steps it takes for $\pi_t$ +b. For each $\delta$ value, report how many time steps it takes for $\pi_t$ to come within $0.01$ of $\pi_l$. -(c) Explain intuitively why a larger $\delta$ leads to slower convergence. +c. Explain intuitively why a larger $\delta$ leads to slower convergence. ``` ```{solution-start} la_ex2 @@ -545,13 +545,12 @@ ax.set_xlabel('timestep') ax.set_ylabel(r'$\pi_t$') ax.set_title('Convergence to $\\pi_l$ for different adaptation speeds $\\delta$') ax.legend() -ax.grid(True, alpha=0.3) plt.tight_layout() plt.show() ``` ```{code-cell} ipython3 -# (b) Steps to come within 0.01 of π_l +# Part b: steps to come within 0.01 of π_l tol = 0.01 print(f"{'δ':>5} {'steps to |π_t - π_l| < 0.01':>30}") print('-' * 40) @@ -564,7 +563,7 @@ for δ in δ_values: print(f"{δ:>5} {str(steps):>30}") ``` -**(c)** When $\delta$ is large, each period's revision of $\pi_t^*$ is a small +**Part c.** When $\delta$ is large, each period's revision of $\pi_t^*$ is a small fraction $(1-\delta)$ of the forecast error, so expectations are sticky. This means the expectations signal that drives the economy toward $\pi_l$ arrives only weakly each period, so the real inflation rate $\pi_t$ creeps toward the steady state rather than jumping there quickly. diff --git a/lectures/lake_model.md b/lectures/lake_model.md index f70da94f4..a992abc92 100644 --- a/lectures/lake_model.md +++ b/lectures/lake_model.md @@ -128,8 +128,8 @@ class LakeModel: [ (1-d)*λ, (1-α)*(1-d)]]) - self.ū = (1 + g - (1 - d) * (1 - α)) / (1 + g - (1 - d) * (1 - α) + (1 - d) * λ) - self.ē = 1 - self.ū + self.u_bar = (1 + g - (1 - d) * (1 - α)) / (1 + g - (1 - d) * (1 - α) + (1 - d) * λ) + self.e_bar = 1 - self.u_bar def simulate_path(self, x0, T=1000): @@ -180,9 +180,6 @@ axes[1].set_title('Employment') axes[2].plot(x_path.sum(0), lw=2) axes[2].set_title('Labor force') -for ax in axes: - ax.grid() - plt.tight_layout() plt.show() ``` @@ -310,7 +307,7 @@ def plot_time_paths(lm, x0=None, T=1000, ax=None): if x0 is None: x0 = np.array([[5.0, 0.1]]) - ū, ē = lm.ū, lm.ē + u_bar, e_bar = lm.u_bar, lm.e_bar x0 = np.atleast_2d(x0) @@ -318,7 +315,7 @@ def plot_time_paths(lm, x0=None, T=1000, ax=None): fig, ax = plt.subplots(figsize=(10, 8)) # Plot line D s = 10 - ax.plot([0, s * ū], [0, s * ē], "k--", lw=1, label='set $D$') + ax.plot([0, s * u_bar], [0, s * e_bar], "k--", lw=1, label='set $D$') # Set the axes through the origin for spine in ["left", "bottom"]: @@ -351,9 +348,9 @@ def plot_time_paths(lm, x0=None, T=1000, ax=None): textcoords="offset points", arrowprops=dict(arrowstyle = "->")) - ax.plot([ū], [ē], "ko", ms=4, alpha=0.6) + ax.plot([u_bar], [e_bar], "ko", ms=4, alpha=0.6) ax.annotate(r'$\bar{x}$', - xy=(ū, ē), + xy=(u_bar, e_bar), xycoords="data", xytext=(20, -20), textcoords="offset points", @@ -472,9 +469,9 @@ rate_path = x_path / x_path.sum(0) fig, axes = plt.subplots(2, 1, figsize=(10, 8)) -# Plot steady ū and ē -axes[0].hlines(lm.ū, 0, T, 'r', '--', lw=2, label='ū') -axes[1].hlines(lm.ē, 0, T, 'r', '--', lw=2, label='ē') +# Plot steady-state rates +axes[0].hlines(lm.u_bar, 0, T, 'r', '--', lw=2, label='u_bar') +axes[1].hlines(lm.e_bar, 0, T, 'r', '--', lw=2, label='e_bar') titles = ['Unemployment rate', 'Employment rate'] locations = ['lower right', 'upper right'] @@ -483,7 +480,6 @@ locations = ['lower right', 'upper right'] for i, ax in enumerate(axes): ax.plot(rate_path[i, :], lw=2, alpha=0.6) ax.set_title(titles[i]) - ax.grid() ax.legend(loc=locations[i]) @@ -556,11 +552,11 @@ fig, ax = plt.subplots(figsize=(10, 8)) lm = LakeModel(α=0.01, λ=0.1, d=0.02, b=0.025) plot_time_paths(lm, ax=ax) s=10 -ax.plot([0, s * lm.ū], [0, s * lm.ē], "k--", lw=1, label='set $D$, α=0.01') +ax.plot([0, s * lm.u_bar], [0, s * lm.e_bar], "k--", lw=1, label='set $D$, α=0.01') lm = LakeModel(α=0.04, λ=0.1, d=0.02, b=0.025) plot_time_paths(lm, ax=ax) -ax.plot([0, s * lm.ū], [0, s * lm.ē], "r--", lw=1, label='set $D$, α=0.04') +ax.plot([0, s * lm.u_bar], [0, s * lm.e_bar], "r--", lw=1, label='set $D$, α=0.04') ax.legend(loc='best') plt.show() diff --git a/lectures/linear_equations.md b/lectures/linear_equations.md index fdae06538..ab5e20e2b 100644 --- a/lectures/linear_equations.md +++ b/lectures/linear_equations.md @@ -250,7 +250,6 @@ for spine in ['right', 'top']: ax.spines[spine].set_color('none') ax.set(xlim=(-2, 10), ylim=(-4, 4)) -# ax.grid() vecs = ((4, -2), (3, 3), (7, 1)) tags = ('(x1, x2)', '(y1, y2)', '(x1+x2, y1+y2)') colors = ('blue', 'green', 'red') diff --git a/lectures/long_run_growth.md b/lectures/long_run_growth.md index 19b3fa0b0..da137f764 100644 --- a/lectures/long_run_growth.md +++ b/lectures/long_run_growth.md @@ -178,7 +178,9 @@ gdp_pc[country].plot( ``` :::{note} -[International dollars](https://en.wikipedia.org/wiki/international_dollar) are a hypothetical unit of currency that has the same purchasing power parity that the U.S. Dollar has in the United States at a given point in time. They are also known as Geary–Khamis dollars (GK Dollars). +[International dollars](https://en.wikipedia.org/wiki/international_dollar) are a hypothetical unit of currency that has the same purchasing power parity that the U.S. Dollar has in the United States at a given point in time. + +They are also known as Geary-Khamis dollars (GK Dollars). ::: We can see that the data is incomplete for longer periods in the early 250 years of this millennium, so we could choose to interpolate to get a continuous line plot. @@ -302,7 +304,7 @@ events = [ 'Industrial Revolution\n(1760-1840)', 'grey', 1.1), Event((1929, 1939), ylim + ylim*0.04, - 'the Great Depression\n(1929–1939)', + 'the Great Depression\n(1929-1939)', 'grey', 1), Event((1978, 1979), ylim + ylim*0.13, 'Reform and Opening-up\n(1978-1979)', @@ -372,10 +374,10 @@ Event((1760, 1840), ylim + ylim*0.06, 'Industrial Revolution\n(1760-1840)', 'grey', 1), Event((1839, 1842), ylim + ylim*0.2, - 'First Opium War\n(1839–1842)', + 'First Opium War\n(1839-1842)', 'tab:red', 1.07), Event((1861, 1895), ylim + ylim*0.4, - 'Self-Strengthening Movement\n(1861–1895)', + 'Self-Strengthening Movement\n(1861-1895)', 'tab:blue', 1.14), Event((1939, 1945), ylim + ylim*0.06, 'WW 2\n(1939-1945)', @@ -446,7 +448,7 @@ events = [ 'WW 1\n(1914-1918)', 'tab:red', 1), Event((1929, 1939), ylim + ylim*0.6, - 'the Great Depression\n(1929–1939)', + 'the Great Depression\n(1929-1939)', 'grey', 1.08), Event((1939, 1945), ylim + ylim*1.1, 'WW 2\n(1939-1945)', diff --git a/lectures/markov_chains_I.md b/lectures/markov_chains_I.md index 631dd70fb..e691c6bd8 100644 --- a/lectures/markov_chains_I.md +++ b/lectures/markov_chains_I.md @@ -976,7 +976,7 @@ The red, yellow, and green dots represent different initial probability distribu The blue dot represents the unique stationary distribution. -Unlike Hamilton’s Markov chain, these initial distributions do not converge to the unique stationary distribution. +Unlike Hamilton's Markov chain, these initial distributions do not converge to the unique stationary distribution. Instead, they cycle periodically around the probability simplex, illustrating that asymptotic stability fails. diff --git a/lectures/money_inflation.md b/lectures/money_inflation.md index 75c179c62..7de54f547 100644 --- a/lectures/money_inflation.md +++ b/lectures/money_inflation.md @@ -392,7 +392,11 @@ Method 1 uses an indirect approach to computing an equilibrium by first computin ```{prf:remark} :label: initial_condition -Notice that method 1 starts by picking an **initial condition** $R_0$ from a set $[\frac{\gamma_2}{\gamma_1}, R_u]$. Equilibrium $\{p_t, m_t\}_{t=0}^\infty$ sequences are not unique. There is actually a continuum of equilibria indexed by a choice of $R_0$ from the set $[\frac{\gamma_2}{\gamma_1}, R_u]$. +Notice that method 1 starts by picking an **initial condition** $R_0$ from a set $[\frac{\gamma_2}{\gamma_1}, R_u]$. + +Equilibrium $\{p_t, m_t\}_{t=0}^\infty$ sequences are not unique. + +There is actually a continuum of equilibria indexed by a choice of $R_0$ from the set $[\frac{\gamma_2}{\gamma_1}, R_u]$. ``` ```{prf:remark} @@ -473,7 +477,10 @@ that serve to finance the government deficit of $g$ indicates the presence of a ```{note} Arthur Laffer's curve plots a hump shaped curve of revenue raised from a tax against the tax rate. -Its hump shape indicates that there are typically two tax rates that yield the same amount of revenue. This is due to two countervailing courses, one being that raising a tax rate typically decreases the **base** of the tax as people take decisions to reduce their exposure to the tax. + +Its hump shape indicates that there are typically two tax rates that yield the same amount of revenue. + +This is due to two countervailing courses, one being that raising a tax rate typically decreases the **base** of the tax as people take decisions to reduce their exposure to the tax. ``` ```{code-cell} ipython3 @@ -1000,24 +1007,23 @@ $$ is maximized at $\bar R_{\rm max} = \sqrt{\gamma_2/\gamma_1}$. -(a) Verify this analytically by differentiating $S(\bar R)$ with respect to +a. Verify this analytically by differentiating $S(\bar R)$ with respect to $\bar R$, setting the derivative to zero, and solving for $\bar R$. -(b) Using the default model `msm`, compute $\bar R_{\rm max}$ and the - corresponding maximum revenue $g_{\rm max} = S(\bar R_{\rm max})$. - Plot the seigniorage curve together with a horizontal line at $g_{\rm max}$. +b. Using the default model `msm`, compute $\bar R_{\rm max}$ and the + corresponding maximum revenue $g_{\rm max} = S(\bar R_{\rm max})$, then + plot the seigniorage curve together with a horizontal line at $g_{\rm max}$. -(c) What happens if the government tries to finance a deficit $g > g_{\rm max}$? - Evaluate the discriminant of the steady-state quadratic +c. Evaluate the discriminant of the steady-state quadratic {eq}`eq:steadyquadratic` for $g = g_{\rm max} + 1$ and explain - the economic interpretation. + what happens if the government tries to finance a deficit $g > g_{\rm max}$. ``` ```{solution-start} mi_ex1 :class: dropdown ``` -**(a)** Differentiating with respect to $\bar R$: +**Part a.** Differentiating with respect to $\bar R$: $$ S'(\bar R) = \frac{\gamma_2}{\bar R^2} - \gamma_1 = 0 @@ -1050,7 +1056,7 @@ plt.tight_layout() plt.show() ``` -**(c)** The steady-state quadratic is $-\gamma_1 \bar R^2 + (\gamma_1+\gamma_2-g)\bar R - \gamma_2 = 0$. +**Part c.** The steady-state quadratic is $-\gamma_1 \bar R^2 + (\gamma_1+\gamma_2-g)\bar R - \gamma_2 = 0$. Its discriminant is $(\gamma_1+\gamma_2-g)^2 - 4\gamma_1\gamma_2$. @@ -1082,17 +1088,17 @@ No stationary equilibrium exists. The two steady-state roots $R_l < R_u$ of the quadratic {eq}`eq:steadyquadratic` depend on the government deficit $g$. -(a) For $g$ ranging from a value near $0$ to just below $g_{\rm max}$, +a. For $g$ ranging from a value near $0$ to just below $g_{\rm max}$, compute both roots $R_l(g)$ and $R_u(g)$ and plot them against $g$ on the same graph. -(b) Verify the following boundary conditions analytically and numerically: +b. Verify the following boundary conditions analytically and numerically: * At $g = 0$: the two roots should be $R = 1$ and $R = \gamma_2/\gamma_1$. * As $g \to g_{\rm max}$: the two roots should merge at $\bar R_{\rm max} = \sqrt{\gamma_2/\gamma_1}$. -(c) Mark the benchmark deficit $g = 3$ on your graph and read off $R_u$ and - $R_l$. Do your graph values agree with `msm.R_u` and `msm.R_l`? +c. Mark the benchmark deficit $g = 3$ on your graph, read off $R_u$ and $R_l$, + and check whether your graph values agree with `msm.R_u` and `msm.R_l`. ``` ```{solution-start} mi_ex2 @@ -1112,8 +1118,8 @@ for g in g_grid: R_u_curve.append(roots[1]) fig, ax = plt.subplots() -ax.plot(g_grid, R_u_curve, label='$R_u(g)$ — low inflation steady state') -ax.plot(g_grid, R_l_curve, label='$R_l(g)$ — high inflation steady state') +ax.plot(g_grid, R_u_curve, label='$R_u(g)$ - low inflation steady state') +ax.plot(g_grid, R_l_curve, label='$R_l(g)$ - high inflation steady state') ax.axvline(msm.g, color='grey', linestyle='--', lw=1, label=f'benchmark $g = {msm.g}$') ax.set_xlabel('government deficit $g$') @@ -1125,10 +1131,10 @@ plt.show() # Boundary conditions print("Boundary checks:") -print(f" g → 0: R_u → {R_u_curve[0]:.4f} (expected 1.0)") -print(f" R_l → {R_l_curve[0]:.4f} (expected γ2/γ1 = {msm.γ2/msm.γ1:.4f})") -print(f" g → g_max: R_u → {R_u_curve[-1]:.4f}") -print(f" R_l → {R_l_curve[-1]:.4f}") +print(f" g -> 0: R_u -> {R_u_curve[0]:.4f} (expected 1.0)") +print(f" R_l -> {R_l_curve[0]:.4f} (expected γ2/γ1 = {msm.γ2/msm.γ1:.4f})") +print(f" g -> g_max: R_u -> {R_u_curve[-1]:.4f}") +print(f" R_l -> {R_l_curve[-1]:.4f}") print(f" R_max = {R_max:.4f} (roots should merge here)") print(f"\nAt benchmark g = {msm.g}:") print(f" R_u from curve = {R_u_curve[np.argmin(np.abs(g_grid - msm.g))]:.4f}, " @@ -1163,18 +1169,16 @@ $$ (where $Q_{ij}$ denotes the $(i,j)$ element of the eigenvector matrix $Q$) that places the economy on the low-inflation equilibrium path. -(a) Using `iterate_H`, simulate the path of $y_t = (m_t, p_t)$ starting from - $y_0 = (m_0,\, \bar p_0)$. Compute $R_t = p_t/p_{t+1}$ for $t = 0, \ldots, 10$ +a. Using `iterate_H`, simulate the path of $y_t = (m_t, p_t)$ starting from + $y_0 = (m_0,\, \bar p_0)$, compute $R_t = p_t/p_{t+1}$ for $t = 0, \ldots, 10$, and verify that it equals `msm.R_u` at every step. -(b) The formula $\bar p_0 = (Q_{21}/Q_{11})\, m_0$ says that the initial - price level is proportional to the money supply — a version of the - **quantity theory of money**. Compute $\bar p_0$ for $m_0 \in [50, 300]$ - and plot $\bar p_0$ against $m_0$. What is the slope? +b. Use the formula $\bar p_0 = (Q_{21}/Q_{11})\, m_0$ to interpret the initial + price level as proportional to the money supply, compute $\bar p_0$ for + $m_0 \in [50, 300]$, plot $\bar p_0$ against $m_0$, and report the slope. -(c) Method 1 gives a formula for $p_0$ directly from $R_0$ via - equation {eq}`eq:p0fromR0`. Set $R_0 = R_u$ in that formula and - confirm that you recover $\bar p_0$. +c. Set $R_0 = R_u$ in the Method 1 formula for $p_0$ from equation + {eq}`eq:p0fromR0` and confirm that you recover $\bar p_0$. ``` ```{solution-start} mi_ex3 @@ -1182,7 +1186,7 @@ that places the economy on the low-inflation equilibrium path. ``` ```{code-cell} ipython3 -# (a) Verify R_t = R_u along the magic-p0 path +# Part a: verify R_t = R_u along the magic-p0 path p0_bar = (Q[1, 0] / Q[0, 0]) * msm.M0 y0 = np.array([msm.M0, p0_bar]) num_steps = 12 @@ -1197,7 +1201,7 @@ print(f"msm.R_u = {msm.R_u:.6f}") ``` ```{code-cell} ipython3 -# (b) Plot p0_bar vs m0 +# Part b: plot p0_bar vs m0 m0_values = np.linspace(50, 300, 80) p0_bar_values = (Q[1, 0] / Q[0, 0]) * m0_values @@ -1206,23 +1210,22 @@ ax.plot(m0_values, p0_bar_values) ax.set_xlabel('$m_0$') ax.set_ylabel('$\\bar p_0$') ax.set_title('Quantity theory: $\\bar p_0$ proportional to $m_0$') -ax.grid(True, alpha=0.3) plt.tight_layout() plt.show() slope = Q[1, 0] / Q[0, 0] print(f"Slope = Q_21 / Q_11 = {slope:.6f}") -# (c) Compare with Method 1 formula eq:p0fromR0 +# Part c: compare with Method 1 formula eq:p0fromR0 p0_method1 = msm.M0 / (msm.γ1 - msm.g - msm.γ2 / msm.R_u) print(f"\nMethod 1 formula (R_0 = R_u): p0 = {p0_method1:.6f}") print(f"Eigendecomposition formula: p0 = {p0_bar:.6f}") ``` -Parts (a) and (c) confirm that both methods select exactly the same unique +Parts a and c confirm that both methods select exactly the same unique initial price level. -Part (b) shows the quantity-theory proportionality that doubling $m_0$ exactly doubles $\bar p_0$, with constant slope $Q_{21}/Q_{11}$. +Part b shows the quantity-theory proportionality that doubling $m_0$ exactly doubles $\bar p_0$, with constant slope $Q_{21}/Q_{11}$. This linearity is a direct consequence of the linearity of the model. diff --git a/lectures/money_inflation_nonlinear.md b/lectures/money_inflation_nonlinear.md index 9ae3974ce..d4fce4062 100644 --- a/lectures/money_inflation_nonlinear.md +++ b/lectures/money_inflation_nonlinear.md @@ -451,7 +451,7 @@ $$ L(x) = e^{-\alpha x} - e^{-(1+\alpha)x}. $$ -(a) Verify analytically that $L(x)$ is maximized at +a. Verify analytically that $L(x)$ is maximized at $$ x^* = \ln\!\left(\frac{1+\alpha}{\alpha}\right) @@ -459,21 +459,21 @@ $$ by differentiating, setting $L'(x) = 0$, and solving for $x$. -(b) Using the default model, compute $x^*$ from the analytic formula and - confirm it numerically with `scipy.optimize.minimize_scalar`. - Plot the Laffer curve with horizontal lines marking $g_{\rm max} = L(x^*)$ - and the benchmark deficit $g = 0.35$. +b. Using the default model, compute $x^*$ from the analytic formula, confirm it + numerically with `scipy.optimize.minimize_scalar`, and plot the Laffer curve + with horizontal lines marking $g_{\rm max} = L(x^*)$ and the benchmark + deficit $g = 0.35$. -(c) What happens if the government attempts to finance a deficit - $g > g_{\rm max}$? Evaluate $L(x) - g$ over a fine grid of $x$ values - for $g = g_{\rm max} + 0.01$ and explain the economic interpretation. +c. Evaluate $L(x) - g$ over a fine grid of $x$ values for + $g = g_{\rm max} + 0.01$ and explain what happens if the government attempts + to finance a deficit $g > g_{\rm max}$. ``` ```{solution-start} mni_ex1 :class: dropdown ``` -**(a)** Differentiating $L(x)$: +**Part a.** Differentiating $L(x)$: $$ L'(x) = -\alpha e^{-\alpha x} + (1+\alpha)\, e^{-(1+\alpha)x} = 0. @@ -520,7 +520,7 @@ plt.tight_layout() plt.show() ``` -**(c)** +**Part c.** ```{code-cell} ipython3 g_infeasible = g_max + 0.01 @@ -550,16 +550,15 @@ No stationary equilibrium exists. The lecture computes $\pi_l$ and $\pi_u$ for a fixed benchmark deficit $g = 0.35$. -(a) For $g$ ranging from $0.05$ to just below $g_{\rm max}$, compute both +a. For $g$ ranging from $0.05$ to just below $g_{\rm max}$, compute both $\pi_l(g)$ and $\pi_u(g)$ numerically and plot them on the same graph. -(b) Describe the limiting behavior: +b. Describe the limiting behavior: - As $g \to 0^+$, what do $\pi_l(g)$ and $\pi_u(g)$ approach? - As $g \to g_{\rm max}^-$, what do they approach? -(c) Mark the benchmark $g = 0.35$ on your graph and read off the two - values. Confirm they agree with `π_l` and `π_u` computed in the - lecture. +c. Mark the benchmark $g = 0.35$ on your graph, read off the two values, and + confirm they agree with `π_l` and `π_u` computed in the lecture. ``` ```{solution-start} mni_ex2 @@ -583,8 +582,8 @@ for g in g_grid: π_u_curve = np.array(π_u_curve) fig, ax = plt.subplots() -ax.plot(g_grid, π_l_curve, label=r'$\pi_l(g)$ — low-inflation steady state') -ax.plot(g_grid, π_u_curve, label=r'$\pi_u(g)$ — high-inflation steady state') +ax.plot(g_grid, π_l_curve, label=r'$\pi_l(g)$ - low-inflation steady state') +ax.plot(g_grid, π_u_curve, label=r'$\pi_u(g)$ - high-inflation steady state') ax.axvline(model.g, color='grey', linestyle='--', lw=1, label=f'benchmark $g={model.g}$') ax.set_xlabel('government deficit $g$') @@ -594,13 +593,13 @@ plt.tight_layout() plt.show() ``` -**(b)** +**Part b.** ```{code-cell} ipython3 -print(f"As g → 0: π_l → {π_l_curve[0]:.4f} (approaches 0)") -print(f" π_u → {π_u_curve[0]:.4f} (large; approaches ∞)") -print(f"As g → g_max: π_l → {π_l_curve[-1]:.4f}") -print(f" π_u → {π_u_curve[-1]:.4f}") +print(f"As g -> 0: π_l -> {π_l_curve[0]:.4f} (approaches 0)") +print(f" π_u -> {π_u_curve[0]:.4f} (large; approaches infinity)") +print(f"As g -> g_max: π_l -> {π_l_curve[-1]:.4f}") +print(f" π_u -> {π_u_curve[-1]:.4f}") print(f"x* = {x_star:.4f} (the two roots merge here)") ``` @@ -610,7 +609,7 @@ When $g \to 0^+$, the curve $L(x) = g$ has one root near $x = 0$ As $g$ rises toward $g_{\rm max}$ the two roots approach each other and merge at $x^* = \ln\bigl((1+\alpha)/\alpha\bigr)$. -**(c)** +**Part c.** ```{code-cell} ipython3 idx = np.argmin(np.abs(g_grid - model.g)) @@ -632,28 +631,30 @@ print(f" direct solve = ({π_l_bench:.4f}, {π_u_bench:.4f})") **Effect of the money-demand elasticity $\alpha$.** The parameter $\alpha$ governs how sensitive real money demand is to expected -inflation. A larger $\alpha$ means households reduce their real balances more +inflation. + +A larger $\alpha$ means households reduce their real balances more sharply as inflation rises. -(a) For $\alpha \in \{0.3,\; 0.5,\; 0.8\}$, compute +a. For $\alpha \in \{0.3,\; 0.5,\; 0.8\}$, compute $x^*(\alpha) = \ln\bigl((1+\alpha)/\alpha\bigr)$ and - $g_{\rm max}(\alpha) = \alpha^\alpha/(1+\alpha)^{1+\alpha}$. - Plot the three Laffer curves on the same axes. + $g_{\rm max}(\alpha) = \alpha^\alpha/(1+\alpha)^{1+\alpha}$, then plot the + three Laffer curves on the same axes. -(b) Keeping the deficit fixed at $g = 0.35$, check for each $\alpha$ - whether the deficit is feasible (i.e., $g \leq g_{\rm max}(\alpha)$). - For each feasible case, compute $(\pi_l,\, \pi_u)$. +b. Keeping the deficit fixed at $g = 0.35$, check for each $\alpha$ + whether the deficit is feasible (i.e., $g \leq g_{\rm max}(\alpha)$) and + compute $(\pi_l,\, \pi_u)$ for each feasible case. -(c) For every feasible $\alpha$, simulate 20 periods starting from the +c. For every feasible $\alpha$, simulate 20 periods starting from the midpoint $p_0 = \tfrac{1}{2}(p_{0,l} + p_{0,u})$ and plot $\pi_t$ on a - single graph. What do the paths have in common? + single graph to identify what the paths have in common. ``` ```{solution-start} mni_ex3 :class: dropdown ``` -**(a)** +**Part a.** ```{code-cell} ipython3 alphas = [0.3, 0.5, 0.8] @@ -680,7 +681,7 @@ plt.show() A larger $\alpha$ flattens and narrows the Laffer curve, reducing the maximum seigniorage the government can raise. -**(b)** +**Part b.** ```{code-cell} ipython3 g = 0.35 @@ -696,7 +697,7 @@ for α in alphas: pu = solve_π_bar(m_temp, x0=3.0) steady_states[α] = (pl, pu) print(f"α = {α}: feasible (g_max = {g_max_α:.4f})" - f" → π_l = {pl:.4f}, π_u = {pu:.4f}") + f" -> π_l = {pl:.4f}, π_u = {pu:.4f}") else: steady_states[α] = None print(f"α = {α}: infeasible (g_max = {g_max_α:.4f} < g = {g})") @@ -707,7 +708,7 @@ steady-state equilibrium exists. Higher money-demand sensitivity tightens the fiscal limit of the inflation tax. -**(c)** +**Part c.** ```{code-cell} ipython3 num_steps = 20 diff --git a/lectures/pv.md b/lectures/pv.md index c305acf65..02ca22076 100644 --- a/lectures/pv.md +++ b/lectures/pv.md @@ -147,9 +147,11 @@ recover the equations in [](eq:Euler_stack). ``` Multiplying row $t$ of the matrix (which has $1$ in column $t$ and $-\delta$ in -column $t+1$) against the price vector gives $p_t - \delta p_{t+1}$. The last -row has only a $1$ in column $T$, giving $p_T$. Setting these equal to the -right-hand side recovers exactly the equations in {eq}`eq:Euler_stack`. +column $t+1$) against the price vector gives $p_t - \delta p_{t+1}$. + +The last row has only a $1$ in column $T$, giving $p_T$. + +Setting these equal to the right-hand side recovers exactly the equations in {eq}`eq:Euler_stack`. We can verify the result numerically. @@ -602,10 +604,10 @@ Suppose dividends are constant: $d_t = d = 1$ for all $t = 0, \ldots, T$. Set the terminal price to the perpetuity value $p_{T+1}^* = d / (1-\delta)$. -(a) Compute the asset price sequence for $T = 100$ and $\delta = 0.99$. - Plot $p_t$ alongside the perpetuity value $d/(1-\delta)$ as a dashed line. +a. Compute the asset price sequence for $T = 100$ and $\delta = 0.99$ and plot + $p_t$ alongside the perpetuity value $d/(1-\delta)$ as a dashed line. -(b) Verify analytically (using formula {eq}`eq:ptpveq`) that +b. Verify analytically (using formula {eq}`eq:ptpveq`) that $p_t = d / (1-\delta)$ for all $t$. ``` @@ -643,7 +645,7 @@ plt.show() print(f'Max deviation from d/(1 - δ): {np.max(np.abs(p - p_star_perp)):.2e}') ``` -For part (b), substituting $d_s = d$ and $p_{T+1}^* = d/(1-\delta)$ into {eq}`eq:ptpveq` gives +For part b, substituting $d_s = d$ and $p_{T+1}^* = d/(1-\delta)$ into {eq}`eq:ptpveq` gives $$ p_t = d \frac{1 - \delta^{T+1-t}}{1-\delta} + \frac{d\delta^{T+1-t}}{1-\delta} diff --git a/lectures/tax_smooth.md b/lectures/tax_smooth.md index fb686d5e4..c24847cb3 100644 --- a/lectures/tax_smooth.md +++ b/lectures/tax_smooth.md @@ -666,11 +666,11 @@ plt.show() For the default expenditure sequence and $B_0 = 0$, suppose a one-time spending spike of size $W_0 = 1$ occurs at period $t^* = 20$. -(a) Compute the optimal constant tax rate $T_0$ for the baseline expenditure - sequence (without the spike) and for the sequence with the spike. Print the - difference $\Delta T_0$. +a. Compute the optimal constant tax rate $T_0$ for the baseline expenditure + sequence (without the spike) and for the sequence with the spike, then print + the difference $\Delta T_0$. -(b) The present value of the spike is $W_0 R^{-t^*}$. Show analytically that the +b. The present value of the spike is $W_0 R^{-t^*}$. Show analytically that the increase in the optimal flat tax equals the **annuity value** of that present value: @@ -704,7 +704,7 @@ delta_T0_numerical = T_shock[0] - T_base[0] annuity_factor = (1 - 1/R) / (1 - (1/R)**(S+1)) delta_T0_formula = annuity_factor * W0 * R**(-t_star) -print(f'Numerical ΔT₀: {delta_T0_numerical:.10f}') +print(f'Numerical ΔT0: {delta_T0_numerical:.10f}') print(f'Annuity-value formula: {delta_T0_formula:.10f}') print(f'Match: {np.isclose(delta_T0_numerical, delta_T0_formula)}') ``` @@ -725,11 +725,11 @@ growing expenditure paths $G_t = \lambda^t G_0$ (for the working years $t = 0, \ldots, 45$, then $G_t = 0$ thereafter), with $G_0 = 1$ and $\lambda \in \{0.95,\, 1.00,\, 1.05,\, 1.10\}$. -(a) On one set of axes, plot the four expenditure sequences. On a second set, - plot the corresponding debt paths $B_t$. +a. Plot the four expenditure sequences on one set of axes and the corresponding + debt paths $B_t$ on a second set. -(b) Which $\lambda$ requires the highest flat tax? Explain in terms of the - present-value formula for $h_0$. +b. Identify which $\lambda$ requires the highest flat tax and explain why in + terms of the present-value formula for $h_0$. ``` ```{solution-start} tax_ex2 @@ -751,7 +751,7 @@ for λ in λ_vals: T_seq, B_seq, _ = compute_optimal(tax_model, B0, G_seq) axes[0].plot(range(S+1), G_seq, label=f'λ = {λ}') axes[1].plot(range(S+2), B_seq, - label=f'λ = {λ}, T₀ = {T_seq[0]:.3f}') + label=f'λ = {λ}, T0 = {T_seq[0]:.3f}') for ax in axes: ax.legend(fontsize=8) @@ -764,7 +764,7 @@ axes[1].set_title('Debt paths') plt.tight_layout() plt.show() -print(f"{'λ':>6} | {'T₀':>10} | {'h₀':>12}") +print(f"{'λ':>6} | {'T0':>10} | {'h0':>12}") print('-' * 34) for λ in λ_vals: G_seq = np.concatenate( @@ -784,13 +784,13 @@ A higher $h_0$ translates directly into a higher required flat tax. :label: tax_ex3 Show numerically that the constant (optimal) tax path yields strictly lower cost -{eq}`cost` — equivalently, strictly higher welfare {eq}`welfare_tax` — than any +{eq}`cost`, equivalently, strictly higher welfare {eq}`welfare_tax`, than any non-constant budget-feasible tax path. -Use the default expenditure sequence and $B_0 = 2$. Evaluate welfare for the +Use the default expenditure sequence and $B_0 = 2$ to evaluate welfare for the optimal flat path and for four variations generated by `compute_variation` with -$(\xi_1, \phi) \in \{(0.2, 0.95),\, (0.2, 1.05),\, (-0.2, 0.90),\, (-0.2, 1.10)\}$. -Print a table showing each path's welfare and its gap relative to the optimum. +$(\xi_1, \phi) \in \{(0.2, 0.95),\, (0.2, 1.05),\, (-0.2, 0.90),\, (-0.2, 1.10)\}$, +then print a table showing each path's welfare and its gap relative to the optimum. ``` ```{solution-start} tax_ex3 @@ -809,7 +809,7 @@ w_opt = welfare(tax_model, T_seq) print(f'Optimal (flat) welfare: {w_opt:.6f}\n') params = [(0.2, 0.95), (0.2, 1.05), (-0.2, 0.90), (-0.2, 1.10)] -print(f'{"ξ₁":>6} | {"ϕ":>6} | {"welfare":>12} | {"gap":>14}') +print(f'{"ξ1":>6} | {"ϕ":>6} | {"welfare":>12} | {"gap":>14}') print('-' * 46) for ξ1, ϕ in params: Tvar = compute_variation(tax_model, ξ1=ξ1, ϕ=ϕ, @@ -862,7 +862,7 @@ plt.show() slope = (T0_vals[-1] - T0_vals[0]) / (B0_vals[-1] - B0_vals[0]) annuity = (1 - 1/R) / (1 - (1/R)**(S+1)) -print(f'Numerical slope of T₀ w.r.t. B₀: {slope:.8f}') +print(f'Numerical slope of T0 w.r.t. B0: {slope:.8f}') print(f'Annuity factor: {annuity:.8f}') print(f'Match: {np.isclose(slope, annuity)}') ``` diff --git a/lectures/time_series_with_matrices.md b/lectures/time_series_with_matrices.md index ab81f58b8..49077806e 100644 --- a/lectures/time_series_with_matrices.md +++ b/lectures/time_series_with_matrices.md @@ -26,8 +26,8 @@ kernelspec: This lecture uses matrices to solve some linear difference equations. -As a running example, we’ll study a **second-order linear difference -equation** that was the key technical tool in Paul Samuelson’s 1939 +As a running example, we'll study a **second-order linear difference +equation** that was the key technical tool in Paul Samuelson's 1939 article {cite}`Samuelson1939` that introduced the *multiplier-accelerator model*. This model became the workhorse that powered early econometric versions of @@ -87,7 +87,7 @@ either of two *initial conditions*, two *terminal conditions* or possibly one of each. ``` -Let’s write our equations as a stacked system +Let's write our equations as a stacked system $$ \underset{\equiv A}{\underbrace{\left[\begin{array}{cccccccc} @@ -134,8 +134,8 @@ $$ The vector $y$ is a complete time path $\{y_t\}_{t=1}^T$. -Let’s put Python to work on an example that captures the flavor of -Samuelson’s multiplier-accelerator model. +Let's put Python to work on an example that captures the flavor of +Samuelson's multiplier-accelerator model. We'll set parameters equal to the same values we used in {doc}`intermediate:samuelson`. @@ -169,17 +169,17 @@ b[0] = α_0 + α_1 * y_0 + α_2 * y_neg1 b[1] = α_0 + α_2 * y_0 ``` -Let’s look at the matrix $A$ and the vector $b$ for our +Let's look at the matrix $A$ and the vector $b$ for our example. ```{code-cell} ipython3 A, b ``` -Now let’s solve for the path of $y$. +Now let's solve for the path of $y$. If $y_t$ is GNP at time $t$, then we have a version of -Samuelson’s model of the dynamics for GNP. +Samuelson's model of the dynamics for GNP. To solve $y = A^{-1} b$ we can either invert $A$ directly, as in @@ -275,10 +275,10 @@ y_{t} = \alpha_{0} + \alpha_{1} y_{t-1} + \alpha_{2} y_{t-2} + u_t where $u_{t} \sim N\left(0, \sigma_{u}^{2}\right)$ and is {ref}`IID `, meaning independent and identically distributed. -We’ll stack these $T$ equations into a system cast in terms of +We'll stack these $T$ equations into a system cast in terms of matrix algebra. -Let’s define the random vector +Let's define the random vector $$ u=\left[\begin{array}{c} @@ -302,7 +302,7 @@ $$ y = A^{-1} \left(b + u\right) $$ (eq:eqma) -Let’s try it out in Python. +Let's try it out in Python. ```{code-cell} ipython3 rng = np.random.default_rng() @@ -581,10 +581,10 @@ Just as system {eq}`eq:eqma` constitutes a ## A forward looking model -Samuelson’s model is *backward looking* in the sense that we give it *initial conditions* and let it +Samuelson's model is *backward looking* in the sense that we give it *initial conditions* and let it run. -Let’s now turn to model that is *forward looking*. +Let's now turn to model that is *forward looking*. We apply similar linear algebra machinery to study a *perfect foresight* model widely used as a benchmark in macroeconomics and diff --git a/lectures/unpleasant.md b/lectures/unpleasant.md index 66653e9cd..6b970f841 100644 --- a/lectures/unpleasant.md +++ b/lectures/unpleasant.md @@ -305,8 +305,9 @@ where $\theta \in [0,1)$ is a relaxation parameter. We'll set parameters of the model so that the steady state after time $T$ is initially the same as in {doc}`money_inflation_nonlinear` -In particular, we set $\gamma_1=100, \gamma_2 =50, g=3.0$. We set $m_0 = 100$ in that lecture, -but now the counterpart will be $M_T$, which is endogenous. +In particular, we set $\gamma_1=100, \gamma_2 =50, g=3.0$. + +We set $m_0 = 100$ in that lecture, but now the counterpart will be $M_T$, which is endogenous. As for new parameters, we'll set $\tilde R = 1.01, \check B_{-1} = 0, \check m_0 = 105, T = 5$. @@ -514,8 +515,8 @@ plot_path([80, 100], msm) The lecture shows that a central bank open-market operation that reduces $m_0$ at $t = 0$ lowers the price level immediately but forces a higher -post-$T$ deficit $\bar g$ — and therefore a lower rate of return $R_u$ (higher -inflation) — forever after. +post-$T$ deficit $\bar g$ and therefore a lower rate of return $R_u$ (higher +inflation) forever after. The same mechanism operates as $T$ grows: holding $m_0 = 100$ fixed, a longer period of bond-financed deficits accumulates more interest-bearing debt @@ -523,14 +524,14 @@ $B_{T-1}$ that must eventually be serviced by printing money. Fix $m_0 = 100$ and vary $T \in \{1, 3, 5, 10, 20\}$. For each $T$: -(a) Use `simulate` to obtain the stationary post-$T$ rate of return +a. Use `simulate` to obtain the stationary post-$T$ rate of return $R_u$ (it equals `paths[3, T]`). -(b) Compute the post-$T$ government deficit +b. Compute the post-$T$ government deficit $\bar g = g + (\tilde R - 1) B_{T-1}$ directly from the model parameters and the fixed-point $p_0$. -(c) Plot $R_u$ and $\bar g$ against $T$ on side-by-side panels and explain +c. Plot $R_u$ and $\bar g$ against $T$ on side-by-side panels and explain why $R_u$ falls and $\bar g$ rises as $T$ increases. ``` @@ -549,7 +550,7 @@ for T_val in T_values: model_T = create_model(T=T_val) # equilibrium price level p0 = compute_fixed_point(m0, 1, model_T) - # open-market operation → bonds + # open-market operation creates bonds Bm1 = (1 / (p0 * model_T.R_tilde)) * (model_T.m0_check - m0) \ + model_T.Bm1_check BTm1 = (model_T.R_tilde ** T_val * Bm1 @@ -565,14 +566,12 @@ fig, axes = plt.subplots(1, 2, figsize=(10, 4)) axes[0].plot(T_values, R_u_list, marker='o') axes[0].set_xlabel('$T$') axes[0].set_ylabel('$R_u$ (post-$T$ rate of return)') -axes[0].set_title('Longer tight-money period → lower $R_u$') -axes[0].grid(True, alpha=0.3) +axes[0].set_title('Longer tight-money period lowers $R_u$') axes[1].plot(T_values, g_bar_list, marker='o', color='tab:orange') axes[1].set_xlabel('$T$') axes[1].set_ylabel(r'$\bar{g}$ (post-$T$ deficit)') -axes[1].set_title('Longer tight-money period → larger $\\bar{g}$') -axes[1].grid(True, alpha=0.3) +axes[1].set_title('Longer tight-money period raises $\\bar{g}$') plt.tight_layout() plt.show() @@ -608,14 +607,14 @@ With $m_0 = 100$ and the default parameters, find the **fiscal limit** $T^*$: the largest integer $T$ for which a feasible stationary equilibrium still exists after time $T$ (i.e., $\bar g \leq g_{\rm max}$). -(a) Compute $g_{\rm max} = (\gamma_1 + \gamma_2) - \gamma_2/\bar R_{\rm max} +a. Compute $g_{\rm max} = (\gamma_1 + \gamma_2) - \gamma_2/\bar R_{\rm max} - \gamma_1 \bar R_{\rm max}$ where $\bar R_{\rm max} = \sqrt{\gamma_2/\gamma_1}$. -(b) For $T = 1, 2, \ldots, 150$, compute $\bar g(T)$ as in {ref}`un_ex1`. +b. For $T = 1, 2, \ldots, 150$, compute $\bar g(T)$ as in {ref}`un_ex1`. Plot $\bar g(T)$ and $g_{\rm max}$ on the same axes and shade the infeasible region. -(c) Identify $T^*$, print $\bar g$ at $T^*$, and verify that no feasible real fixed point exists at $T^* + 1$. +c. Identify $T^*$, print $\bar g$ at $T^*$, and verify that no feasible real fixed point exists at $T^* + 1$. ``` ```{solution-start} un_ex2 @@ -625,13 +624,13 @@ still exists after time $T$ (i.e., $\bar g \leq g_{\rm max}$). ```{code-cell} ipython3 γ1, γ2 = msm.γ1, msm.γ2 -# (a) Laffer-curve peak +# Part a: Laffer-curve peak R_max = np.sqrt(γ2 / γ1) g_max = (γ1 + γ2) - γ2 / R_max - γ1 * R_max print(f"R_max = {R_max:.4f}") print(f"g_max = {g_max:.4f}") -# (b) g_bar for T = 1 ... 150 +# Part b: g_bar for T = 1 ... 150 m0 = 100 T_candidates = np.arange(1, 151) @@ -704,12 +703,12 @@ ax.legend() plt.tight_layout() plt.show() -# (c) Fiscal limit T* +# Part c: fiscal limit T* p0_next, g_bar_next, real_next = compute_fixed_point_and_g_bar( T_star + 1, m0, p0_guess=p0_guess) print(f"\nFiscal limit T* = {T_star}") -print(f" g_bar(T*) = {g_bar_arr[T_star - 1]:.4f} ≤ g_max = {g_max:.4f}") +print(f" g_bar(T*) = {g_bar_arr[T_star - 1]:.4f} <= g_max = {g_max:.4f}") print(f" Feasible real fixed point at T*+1 = {T_star + 1}: {real_next}") ``` From 41e91e4adc464222d5054c61107fa854e11f884c Mon Sep 17 00:00:00 2001 From: HumphreyYang Date: Sun, 24 May 2026 18:02:27 +1000 Subject: [PATCH 6/6] updates --- lectures/ar1_processes.md | 8 +++--- lectures/cagan_adaptive.md | 8 +++--- lectures/cagan_ree.md | 2 +- lectures/cobweb.md | 8 +++--- lectures/cons_smooth.md | 2 +- lectures/eigen_I.md | 6 ++--- lectures/eigen_II.md | 4 +-- lectures/input_output.md | 4 +-- lectures/intro_supply_demand.md | 11 ++++---- lectures/lake_model.md | 39 ++++++++++++++++++--------- lectures/linear_equations.md | 4 +-- lectures/lln_clt.md | 6 ++--- lectures/lp_intro.md | 12 ++++----- lectures/markov_chains_I.md | 6 ++--- lectures/money_inflation_nonlinear.md | 4 +-- lectures/networks.md | 2 +- lectures/schelling.md | 2 +- lectures/tax_smooth.md | 6 ++--- lectures/time_series_with_matrices.md | 2 +- lectures/unpleasant.md | 2 +- 20 files changed, 75 insertions(+), 63 deletions(-) diff --git a/lectures/ar1_processes.md b/lectures/ar1_processes.md index a6caeeff4..786e22107 100644 --- a/lectures/ar1_processes.md +++ b/lectures/ar1_processes.md @@ -356,9 +356,7 @@ In this equation, we can use observed data to evaluate the left hand side of {eq And we can use a theoretical AR(1) model to calculate the right hand side. -If $\frac{1}{m} \sum_{t = 1}^m X_t$ is not close to $\psi^*(x)$, even for many -observations, then our theory seems to be incorrect and we will need to revise -it. +If $\frac{1}{m} \sum_{t = 1}^m h(X_t)$ is not close to $\int h(x)\psi^*(x) dx$, even for many observations, then our theory seems to be incorrect and we will need to revise it. ## Exercises @@ -427,8 +425,8 @@ def true_moments_ar1(k): return 0 k_vals = np.arange(6) + 1 -sample_moments = np.empty_like(k_vals) -true_moments = np.empty_like(k_vals) +sample_moments = np.empty(len(k_vals), dtype=float) +true_moments = np.empty(len(k_vals), dtype=float) for k_idx, k in enumerate(k_vals): sample_moments[k_idx] = sample_moments_ar1(k) diff --git a/lectures/cagan_adaptive.md b/lectures/cagan_adaptive.md index b2b0efa36..d216a4869 100644 --- a/lectures/cagan_adaptive.md +++ b/lectures/cagan_adaptive.md @@ -505,11 +505,13 @@ for λ in λ_vals: print(f'{λ:>6.2f} | {ρ:>10.4f} | {str(abs(ρ) < 1):>8} | {peak:>20.4f}') ``` -All four values satisfy the stability condition $|\rho| < 1$ for the default $\alpha = 5$. +All four values satisfy the stability condition $|\rho| < 1$ for the default $\alpha = 5$ and have $\rho > 0$. -The case $\lambda = 0.86$ is closest to the stability boundary and therefore displays the largest oscillatory response. +The case $\lambda = 0.86$ has the largest initial overshoot among these four values and then converges the fastest. -As $\lambda$ moves closer to one, expectations become more inertial and the post-stabilization response decays more slowly but starts from a smaller jump. +As $\lambda$ moves closer to one, expectations become more inertial, so the post-stabilization response decays more slowly but starts from a smaller jump. + +For $\alpha = 5$, an oscillatory stable response would require $0.8 < \lambda < 5/6$. ```{solution-end} ``` diff --git a/lectures/cagan_ree.md b/lectures/cagan_ree.md index 602a44dfe..ea0b1ff16 100644 --- a/lectures/cagan_ree.md +++ b/lectures/cagan_ree.md @@ -580,7 +580,7 @@ The government prints money to finance expenditure with the "velocity dividend" The next code generates a multi-panel graph that includes outcomes of both experiments 1 and 2. -That allows us to assess how important it is to understand whether the sudden permanent drop in $\mu_t$ at $t=T_1$ is fully unanticipated, as in experiment 1, or completely +That allows us to assess how important it is to understand whether the sudden permanent drop in $\mu_t$ at $t=T_1$ is fully anticipated, as in experiment 1, or completely unanticipated, as in experiment 2. ```{code-cell} ipython3 diff --git a/lectures/cobweb.md b/lectures/cobweb.md index b74199676..d1c393fca 100644 --- a/lectures/cobweb.md +++ b/lectures/cobweb.md @@ -530,7 +530,7 @@ ts_plot_supply(m, 5, 15) Backward looking average expectations refers to the case where producers form expectations for the next period price as a linear combination of their last -guess and the second last guess. +observed price and the price observed one period before that. That is, @@ -587,9 +587,9 @@ def ts_plot_price_blae(model, p0, p1, alphas, ts_length=15): ```{code-cell} ipython3 m = Market() ts_plot_price_blae(m, - p0=5, - p1=6, - alphas=[0.1, 0.3, 0.5, 0.8], + p0=1, + p1=2.5, + alphas=[0.1, 0.3, 0.5, 0.8], ts_length=20) ``` diff --git a/lectures/cons_smooth.md b/lectures/cons_smooth.md index 67e15740f..4f74ed772 100644 --- a/lectures/cons_smooth.md +++ b/lectures/cons_smooth.md @@ -522,7 +522,7 @@ $$ which implies that $$ -\xi_1 \sum_{t=0}^T \phi_t R^{-t} - \xi_0 \sum_{t=0}^T R^{-t} = 0 +\xi_1 \sum_{t=0}^T \phi^t R^{-t} - \xi_0 \sum_{t=0}^T R^{-t} = 0 $$ which implies that diff --git a/lectures/eigen_I.md b/lectures/eigen_I.md index caf4a0409..46b93d508 100644 --- a/lectures/eigen_I.md +++ b/lectures/eigen_I.md @@ -1093,8 +1093,8 @@ Try to compute the trajectory of $v$ after being transformed by $A$ for $n=4$ it ```{code-cell} ipython3 A = np.array([[1, 2], [1, 1]]) -v = (0.4, -0.4) -n = 11 +v = (2, -2) +n = 4 # Compute eigenvectors and eigenvalues eigenvalues, eigenvectors = np.linalg.eig(A) @@ -1105,7 +1105,7 @@ print(f'eigenvectors:\n {eigenvectors}') plot_series(A, v, n) ``` -The result seems to converge to the eigenvector of $A$ with the largest eigenvalue. +The trajectory begins to turn toward the eigenvector of $A$ with the largest eigenvalue. Let's use a [vector field](https://en.wikipedia.org/wiki/Vector_field) to visualize the transformation brought by A. diff --git a/lectures/eigen_II.md b/lectures/eigen_II.md index 492bc75d9..c383d4fb8 100644 --- a/lectures/eigen_II.md +++ b/lectures/eigen_II.md @@ -117,7 +117,7 @@ Left eigenvectors will play important roles in what follows, including that of s A vector $w$ is called a left eigenvector of $A$ if $w$ is a right eigenvector of $A^\top$. -In other words, if $w$ is a left eigenvector of matrix $A$, then $A^\top w = \lambda w$, where $\lambda$ is the eigenvalue associated with the left eigenvector $v$. +In other words, if $w$ is a left eigenvector of matrix $A$, then $A^\top w = \lambda w$, where $\lambda$ is the eigenvalue associated with the left eigenvector $w$. This hints at how to compute left eigenvectors @@ -257,7 +257,7 @@ We can see that if a matrix is primitive, then it implies the matrix is irreduci Now let's step back to the primitive matrices part of the Perron-Frobenius theorem -```{prf:Theorem} Continous of Perron-Frobenius Theorem +```{prf:Theorem} Continuity of Perron-Frobenius Theorem :label: con-perron-frobenius If $A$ is primitive then, diff --git a/lectures/input_output.md b/lectures/input_output.md index f2626b45f..04959b5e7 100644 --- a/lectures/input_output.md +++ b/lectures/input_output.md @@ -560,13 +560,13 @@ Another way to rank sectors in input-output networks is via output multipliers. The **output multiplier** of sector $j$ denoted by $\mu_j$ is usually defined as the total sector-wide impact of a unit change of demand in sector $j$. -Earlier when disussing demand shocks we concluded that for $L = (l_{ij})$ the element +Earlier when discussing demand shocks we concluded that for $L = (l_{ij})$ the element $l_{ij}$ represents the impact on sector $i$ of a unit change in demand in sector $j$. Thus, $$ -\mu_j = \sum_{j=1}^n l_{ij} +\mu_j = \sum_{i=1}^n l_{ij} $$ This can be written as $\mu^\top = \mathbb{1}^\top L$ or diff --git a/lectures/intro_supply_demand.md b/lectures/intro_supply_demand.md index c82085a8f..446cb8bac 100644 --- a/lectures/intro_supply_demand.md +++ b/lectures/intro_supply_demand.md @@ -789,8 +789,7 @@ $$ Here $p$ is set to $i_s(q)$. -Social welfare is the sum of consumer and producer surplus under the -assumption that the price is the same for buyers and sellers: +Planner welfare is the area between inverse demand and inverse supply: $$ W(q) @@ -801,6 +800,8 @@ Solve the integrals and write a function to compute this quantity numerically at given $q$. Plot welfare as a function of $q$. + +At the competitive equilibrium, the common price lets this same area be interpreted as consumer surplus plus producer surplus. ``` @@ -883,8 +884,7 @@ print(f"{maximizing_q: .5f}") ````{exercise} :label: isd_ex4 -Now compute the equilibrium quantity by finding the price that equates supply -and demand. +Now compute the equilibrium quantity by finding the quantity that equates supply and demand. You can do this numerically by finding the root of the excess demand function @@ -904,8 +904,7 @@ Initialize `newton` with a starting guess somewhere close to 1.0. (Similar initial conditions will give the same result.) -You should find that the equilibrium price agrees with the welfare maximizing -price, in line with the first fundamental welfare theorem. +You should find that the equilibrium quantity agrees with the welfare maximizing quantity, in line with the first fundamental welfare theorem. ```` diff --git a/lectures/lake_model.md b/lectures/lake_model.md index a992abc92..7a02138b1 100644 --- a/lectures/lake_model.md +++ b/lectures/lake_model.md @@ -541,24 +541,37 @@ Eq. {eq}`steady_x` implies that the long-run unemployment rate will increase, an if $\alpha$ increases or $\lambda$ decreases. Suppose first that $\alpha=0.01, \lambda=0.1, d=0.02, b=0.025$. -Assume that $\alpha$ increases to $0.04$. -The below graph illustrates that the line $D$ shifts clockwise downward, which indicates that -the fraction of unemployment rises as the separation rate increases. +Assume that $\alpha$ increases to $0.04$. -```{code-cell} ipython3 -fig, ax = plt.subplots(figsize=(10, 8)) +Then compare this with a decrease in $\lambda$ from $0.1$ to $0.04$. -lm = LakeModel(α=0.01, λ=0.1, d=0.02, b=0.025) -plot_time_paths(lm, ax=ax) -s=10 -ax.plot([0, s * lm.u_bar], [0, s * lm.e_bar], "k--", lw=1, label='set $D$, α=0.01') +The graphs show that both changes rotate the line $D$ clockwise downward, which indicates that the long-run unemployment rate rises. -lm = LakeModel(α=0.04, λ=0.1, d=0.02, b=0.025) -plot_time_paths(lm, ax=ax) -ax.plot([0, s * lm.u_bar], [0, s * lm.e_bar], "r--", lw=1, label='set $D$, α=0.04') +```{code-cell} ipython3 +fig, axes = plt.subplots(1, 2, figsize=(12, 5)) +s = 10 + +def add_D_line(ax, lm, label, color): + ax.plot([0, s * lm.u_bar], [0, s * lm.e_bar], + color=color, linestyle='--', lw=2, label=label) + +lm_base = LakeModel(α=0.01, λ=0.1, d=0.02, b=0.025) +lm_high_α = LakeModel(α=0.04, λ=0.1, d=0.02, b=0.025) +plot_time_paths(lm_base, ax=axes[0]) +add_D_line(axes[0], lm_base, r'set $D$, $\alpha=0.01$', 'black') +plot_time_paths(lm_high_α, ax=axes[0]) +add_D_line(axes[0], lm_high_α, r'set $D$, $\alpha=0.04$', 'red') +axes[0].legend(loc='best') + +lm_low_λ = LakeModel(α=0.01, λ=0.04, d=0.02, b=0.025) +plot_time_paths(lm_base, ax=axes[1]) +add_D_line(axes[1], lm_base, r'set $D$, $\lambda=0.1$', 'black') +plot_time_paths(lm_low_λ, ax=axes[1]) +add_D_line(axes[1], lm_low_λ, r'set $D$, $\lambda=0.04$', 'red') +axes[1].legend(loc='best') -ax.legend(loc='best') +plt.tight_layout() plt.show() ``` diff --git a/lectures/linear_equations.md b/lectures/linear_equations.md index ab5e20e2b..c67437214 100644 --- a/lectures/linear_equations.md +++ b/lectures/linear_equations.md @@ -1049,7 +1049,7 @@ $$ where $C$, $D$ and $h$ are given by {eq}`two_eq_demand_mat` and {eq}`two_eq_supply_mat`. -This equation is analogous to {eq}`la_se_inv` with $A = (C-D)^{-1}$, $b = h$, and $x = p$. +This equation is analogous to {eq}`la_se_inv` with $A = C-D$, $b = h$, and $x = p$. We can now solve for equilibrium prices with NumPy's `linalg` submodule. @@ -1231,7 +1231,7 @@ p The solution is given by: $$ -p_0 = 4.6925, \; p_1 = 7.0625 \;\; \text{and} \;\; p_2 = 7.675 +p_0 = 4.9625, \; p_1 = 7.0625 \;\; \text{and} \;\; p_2 = 7.675 $$ ```{solution-end} diff --git a/lectures/lln_clt.md b/lectures/lln_clt.md index fa28d3445..af83388b2 100644 --- a/lectures/lln_clt.md +++ b/lectures/lln_clt.md @@ -474,7 +474,7 @@ $F(x) = 1 - e^{- \lambda x}$. # Set parameters n = 250 # Choice of n k = 1_000_000 # Number of draws of Y_n -distribution = st.expon(2) # Exponential distribution, λ = 1/2 +distribution = st.expon(scale=2) # Exponential distribution, λ = 1/2 μ, σ = distribution.mean(), distribution.std() # Draw underlying RVs. Each row contains a draw of X_1,..,X_n @@ -621,7 +621,7 @@ However, the next exercise teaches us that LLN type convergence of the sample mean to the population mean still occurs. 1. Prove that the sequence $X_1, X_2, \ldots$ is identically distributed. -2. Show that LLN convergence holds using simulations with $\alpha = 0.8$, $\beta = 0.2$. +2. Show that LLN convergence holds using simulations with $\alpha = 0.8$, $\beta = 0.2$, and $\sigma = 10$. ``` @@ -682,7 +682,7 @@ n = 100_000 fig, ax = plt.subplots(figsize=(10, 6)) x = np.ones(n) -x[0] = st.norm.rvs(α/(1-β), α**2/(1-β**2)) +x[0] = st.norm.rvs(loc=α/(1-β), scale=σ / np.sqrt(1-β**2)) ϵ = st.norm.rvs(size=n+1) means = np.ones(n) means[0] = x[0] diff --git a/lectures/lp_intro.md b/lectures/lp_intro.md index e7fc3bd6d..0b61a1e5d 100644 --- a/lectures/lp_intro.md +++ b/lectures/lp_intro.md @@ -326,9 +326,9 @@ if status == pywraplp.Solver.OPTIMAL: print('Objective value =', solver.Objective().Value()) x1_sol = round(x1.solution_value(), 3) x2_sol = round(x2.solution_value(), 3) - x3_sol = round(x1.solution_value(), 3) - x4_sol = round(x2.solution_value(), 3) - x5_sol = round(x1.solution_value(), 3) + x3_sol = round(x3.solution_value(), 3) + x4_sol = round(x4.solution_value(), 3) + x5_sol = round(x5.solution_value(), 3) print(f'(x1, x2, x3, x4, x5): ({x1_sol}, {x2_sol}, {x3_sol}, {x4_sol}, {x5_sol})') else: print('The problem does not have an optimal solution.') @@ -338,11 +338,11 @@ OR-Tools tells us that the best investment strategy is: 1. At the beginning of the first year, the mutual fund should buy $ \$24,927.755$ of the annuity. Its bank account balance should be $ \$75,072.245$. -2. At the beginning of the second year, the mutual fund should buy $ \$24,927.755$ of the corporate bond and keep invest in the annuity. Its bank balance should be $ \$24,927.755$. +2. At the beginning of the second year, the mutual fund should buy $ \$4,648.825$ of the corporate bond and borrow $ \$20,000$ from the bank. -3. At the beginning of the third year, the bank balance should be $ \$75,072.245 $. +3. At the beginning of the third year, the bank balance should be $ \$50,000$. -4. At the end of the third year, the mutual fund will get payouts from the annuity and corporate bond and repay its loan from the bank. At the end it will own $ \$141,018.24 $, so that it's total net rate of return over the three periods is $ 41.02\%$. +4. At the end of the third year, the mutual fund will get payouts from the annuity and corporate bond and repay its loan from the bank, leaving it with $ \$141,018.24$ and a total net rate of return over the three periods of $41.02\%$. diff --git a/lectures/markov_chains_I.md b/lectures/markov_chains_I.md index e691c6bd8..ab47822ab 100644 --- a/lectures/markov_chains_I.md +++ b/lectures/markov_chains_I.md @@ -1063,7 +1063,7 @@ $$ \sum_{j=0}^\infty \beta^j h(X_{t+j}) \mid X_t = x \right] - = x + \beta (Ph)(x) + \beta^2 (P^2 h)(x) + \cdots + = h(x) + \beta (Ph)(x) + \beta^2 (P^2 h)(x) + \cdots $$ By the {ref}`Neumann series lemma `, this sum can be calculated using @@ -1094,7 +1094,7 @@ where rows, from top to down, correspond to growth, stagnation, and collapse. In this exercise, 1. visualize the transition matrix and show this process is asymptotically stationary -1. calculate the stationary distribution using simulations +1. calculate the stationary distribution using matrix powers and QuantEcon package 1. visualize the dynamics of $(\psi_0 P^t)(i)$ where $t \in 0, ..., 25$ and compare the convergent path with the previous transition matrix Compare your solution to the paper. @@ -1171,7 +1171,7 @@ In this exercise, Solution 1: -Although $P$ is not every positive, $P^m$ when $m=3$ is everywhere positive. +Although $P$ is not everywhere positive, $P^m$ when $m=3$ is everywhere positive. ```{code-cell} ipython3 P = np.array([[0.86, 0.11, 0.03, 0.00, 0.00, 0.00], diff --git a/lectures/money_inflation_nonlinear.md b/lectures/money_inflation_nonlinear.md index d4fce4062..cc41f3ea1 100644 --- a/lectures/money_inflation_nonlinear.md +++ b/lectures/money_inflation_nonlinear.md @@ -210,7 +210,7 @@ $\overline p(m_0)$, which as initial conditions for $p_t$ at time $t$, imply tha The function $\underline p(m_0)$ will be associated with $\pi_l$ the lower steady-state inflation rate. -The function $\overline p(m_0)$ will be associated with $\pi_u$ the lower steady-state inflation rate. +The function $\overline p(m_0)$ will be associated with $\pi_u$ the higher steady-state inflation rate. @@ -434,7 +434,7 @@ We discovered that As in {doc}`money_inflation`, on grounds of plausibility, we again recommend selecting the unique equilibrium that converges to the lower stationary inflation tax rate. -As we shall see, we accepting this recommendation is a key ingredient of outcomes of the "unpleasant arithmetic" that we describe in {doc}`unpleasant`. +As we shall see, accepting this recommendation is a key ingredient of outcomes of the "unpleasant arithmetic" that we describe in {doc}`unpleasant`. In {doc}`laffer_adaptive`, we shall explore how {cite}`bruno1990seigniorage` and others justified our equilibrium selection in other ways. diff --git a/lectures/networks.md b/lectures/networks.md index e2072046e..d2bb45507 100644 --- a/lectures/networks.md +++ b/lectures/networks.md @@ -1022,7 +1022,7 @@ directed graph with adjacency matrix $A$ is defined as the vector $\kappa$ that solves $$ -\kappa_i = \beta \sum_{1 \leq j 1} a_{ij} \kappa_j + 1 +\kappa_i = \beta \sum_{j=0}^{n-1} a_{ij} \kappa_j + 1 \qquad \text{for all } i \in \{0, \ldots, n-1\}. $$ (katz_central) diff --git a/lectures/schelling.md b/lectures/schelling.md index 8032e1050..4c1ee939e 100644 --- a/lectures/schelling.md +++ b/lectures/schelling.md @@ -231,7 +231,7 @@ def plot_distribution(agents, cycle_num): "Plot the distribution of agents after cycle_num rounds of the loop." x_values_0, y_values_0 = [], [] x_values_1, y_values_1 = [], [] - # == Obtain locations of each type == # + # Obtain locations of each type for agent in agents: x, y = agent.location if agent.type == 0: diff --git a/lectures/tax_smooth.md b/lectures/tax_smooth.md index c24847cb3..0dd2a3038 100644 --- a/lectures/tax_smooth.md +++ b/lectures/tax_smooth.md @@ -403,9 +403,9 @@ np.ones(24), np.ones(20)]) plot_ts(tax_model, B0, G_seq_pos) ``` -#### Experiment 2: permanent expenditure shift +#### Experiment 2: temporary expenditure shift -Now we assume a permanent increase in government expenditures of $L$ in year 21 of the $G$-sequence. +Now we assume a temporary increase in government expenditures of $L$ beginning in year 21 of the $G$-sequence. Again we can study positive and negative cases @@ -521,7 +521,7 @@ $$ which implies that $$ -\xi_1 \sum_{t=0}^S \phi_t R^{-t} - \xi_0 \sum_{t=0}^S R^{-t} = 0 +\xi_1 \sum_{t=0}^S \phi^t R^{-t} - \xi_0 \sum_{t=0}^S R^{-t} = 0 $$ which implies that diff --git a/lectures/time_series_with_matrices.md b/lectures/time_series_with_matrices.md index 49077806e..e32f07429 100644 --- a/lectures/time_series_with_matrices.md +++ b/lectures/time_series_with_matrices.md @@ -487,7 +487,7 @@ plt.ylabel('y') plt.show() ``` -Visually, notice how the variance across realizations of $y_t$ decreases as $t$ increases. +Because the initial conditions are fixed and shocks accumulate over time, the population variance of $y_t$ increases toward its limiting value. Let's plot the population variance of $y_t$ against $t$. diff --git a/lectures/unpleasant.md b/lectures/unpleasant.md index 6b970f841..d911590b2 100644 --- a/lectures/unpleasant.md +++ b/lectures/unpleasant.md @@ -262,7 +262,7 @@ We define a mapping from $p_0$ to $\widehat p_0$ as follows. * Set $m_0$ and then compute $B_{-1}$ to satisfy the constraint on time $0$ **open market operations** $$ -B_{-1}- \check B_{-1} = \frac{\widetilde R}{p_0} \left( \check m_0 - m_0 \right) +B_{-1}- \check B_{-1} = \frac{1}{p_0\widetilde R} \left( \check m_0 - m_0 \right) $$ * Compute $B_{T-1}$ from