Skip to content

Commit 8265aed

Browse files
Tom's March 20 edits of intro lectures
1 parent 0a43723 commit 8265aed

File tree

6 files changed

+49
-244
lines changed

6 files changed

+49
-244
lines changed

lectures/ak2.md

Lines changed: 3 additions & 235 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,13 @@ kernelspec:
1515

1616

1717

18-
## Introduction
18+
## Overview
1919

2020

21-
This lecture presents a life-cycle model consisting of overlapping generations of two-period lived people proposed by Peter Diamond
21+
This lecture presents a life-cycle model consisting of overlapping generations of two-period lived people proposed by
2222
{cite}`diamond1965national`.
2323

24-
We'll present the version that was analyzed in chapter 2 of Auerbach and
25-
Kotlikoff (1987) {cite}`auerbach1987dynamic`.
24+
We'll present the version that was analyzed in chapter 2 of {cite}`auerbach1987dynamic`.
2625

2726
Auerbach and Kotlikoff (1987) used their two period model as a warm-up for their analysis of overlapping generation models of long-lived people that is the main topic of their book.
2827

@@ -1171,234 +1170,3 @@ for i, name in enumerate(['τ', 'D', 'G']):
11711170
ax.legend()
11721171
ax.set_xlabel('t')
11731172
```
1174-
1175-
1176-
## NOTES TO ZEJIN FEB 26
1177-
1178-
Hi Zejin.
1179-
1180-
I recommend that we add a few simple experiments in which we do the following.
1181-
1182-
* take a simple baseline, perhaps on in which capital starts at or quickly converges to a steady state value.
1183-
1184-
* start from that steady-state value of capital and add a tax transfer scheme that mimics an unfunded social security system in which young people pay a lump sum tax and old people get a lump sum transfer, starting from the beginning (the initial old will love this!)
1185-
1186-
* study how this policy affects the steady state capital stock
1187-
1188-
* describe in words how this policy experiment compares to one in which at time 0 the government gives government debt to the initial old
1189-
1190-
* the last bullet point is vague and we'll have to tighten it up
1191-
1192-
1193-
## Working when old as well as when young
1194-
1195-
Now let's assume that each person supplies $1/2$ labor unit when both young and old.
1196-
1197-
The aggregate labor supply doesn't change.
1198-
1199-
The lifetime budget constraint becomes
1200-
1201-
$$
1202-
C_{yt}+\frac{C_{ot+1}}{1+r_{t+1}\left(1-\tau_{t+1}\right)}=\frac{1}{2}W_{t}\left(1-\tau_{t}\right)+\frac{1}{2}\frac{W_{t+1}\left(1-\tau_{t+1}\right)}{1+r_{t+1}\left(1-\tau_{t+1}\right)}
1203-
$$
1204-
1205-
```{code-cell} ipython3
1206-
@jit
1207-
def Cy_val2(Cy, W, W_next, r_next, τ, τ_next, β):
1208-
1209-
# Co given by the budget constraint
1210-
Co = (W / 2 * (1 - τ) - Cy) * (1 + r_next * (1 - τ_next)) + (W_next / 2) * (1 - τ_next)
1211-
1212-
return U(Cy, Co, β)
1213-
```
1214-
1215-
```{code-cell} ipython3
1216-
W, W_next, r_next, τ, τ_next = W_hat, W_hat, r_hat, τ_hat, τ_hat
1217-
1218-
# lifetime budget
1219-
C_ub = (W / 2) * (1 - τ) + (W_next / 2) * (1 - τ_next) / (1 + r_next * (1 - τ_next))
1220-
1221-
Cy_opt, U_opt, _ = brent_max(Cy_val2, # maximand
1222-
1e-3, # lower bound
1223-
C_ub-1e-3, # upper bound
1224-
args=(W, W_next, r_next, τ, τ_next, β))
1225-
1226-
Cy_opt
1227-
```
1228-
1229-
1230-
1231-
Does the optimal consumption for the young now depend on the future wage $W_{t+1}$?
1232-
1233-
```{code-cell} ipython3
1234-
W, W_next, r_next, τ, τ_next = W_hat, W_hat, r_hat, τ_hat, τ_hat
1235-
1236-
W_next = W_hat / 2
1237-
1238-
# what's the new lifetime income?
1239-
C_ub = (W / 2) * (1 - τ) + (W_next / 2) * (1 - τ_next) / (1 + r_next * (1 - τ_next))
1240-
1241-
Cy_opt, U_opt, _ = brent_max(Cy_val2, # maximand
1242-
1e-3, # lower bound
1243-
C_ub-1e-3, # upper bound
1244-
args=(W, W_next, r_next, τ, τ_next, β))
1245-
1246-
Cy_opt
1247-
```
1248-
1249-
1250-
1251-
Does it depend on the future interest rate $r_{t+1}$?
1252-
1253-
```{code-cell} ipython3
1254-
W, W_next, r_next, τ, τ_next = W_hat, W_hat, r_hat, τ_hat, τ_hat
1255-
1256-
r_next = r_hat / 2
1257-
1258-
# what's the new lifetime income?
1259-
C_ub = (W / 2) * (1 - τ) + (W_next / 2) * (1 - τ_next) / (1 + r_next * (1 - τ_next))
1260-
1261-
Cy_opt, U_opt, _ = brent_max(Cy_val2, # maximand
1262-
1e-3, # lower bound
1263-
C_ub-1e-3, # upper bound
1264-
args=(W, W_next, r_next, τ, τ_next, β))
1265-
1266-
Cy_opt
1267-
```
1268-
1269-
1270-
1271-
Does it depend on the future tax rate $\tau_{t+1}$?
1272-
1273-
```{code-cell} ipython3
1274-
W, W_next, r_next, τ, τ_next = W_hat, W_hat, r_hat, τ_hat, τ_hat
1275-
1276-
τ_next = τ_hat / 2
1277-
1278-
# what's the new lifetime income?
1279-
C_ub = (W / 2) * (1 - τ) + (W_next / 2) * (1 - τ_next) / (1 + r_next * (1 - τ_next))
1280-
1281-
Cy_opt, U_opt, _ = brent_max(Cy_val2, # maximand
1282-
1e-3, # lower bound
1283-
C_ub-1e-3, # upper bound
1284-
args=(W, W_next, r_next, τ, τ_next, β))
1285-
1286-
Cy_opt
1287-
```
1288-
1289-
```{code-cell} ipython3
1290-
T = 20
1291-
tax_cut = 1 / 3
1292-
1293-
K_hat, Y_hat, Cy_hat, Co_hat = init_ss[:4]
1294-
W_hat, r_hat = init_ss[4:6]
1295-
τ_hat, Ag_hat, G_hat = init_ss[6:9]
1296-
1297-
# initial guesses of prices
1298-
W_seq = np.ones(T+2) * W_hat
1299-
r_seq = np.ones(T+2) * r_hat
1300-
1301-
# initial guesses of policies
1302-
τ_seq = np.ones(T+2) * τ_hat
1303-
1304-
Ag_seq = np.zeros(T+1)
1305-
G_seq = np.ones(T+1) * G_hat
1306-
1307-
# containers
1308-
K_seq = np.empty(T+2)
1309-
Y_seq = np.empty(T+2)
1310-
C_seq = np.empty((T+1, 2))
1311-
1312-
# t=0, starting from steady state
1313-
K_seq[0], Y_seq[0] = K_hat, Y_hat
1314-
W_seq[0], r_seq[0] = W_hat, r_hat
1315-
1316-
# tax cut
1317-
τ_seq[0] = τ_hat * (1 - tax_cut)
1318-
Ag1 = Ag_hat * (1 + r_seq[0] * (1 - τ_seq[0])) + τ_seq[0] * Y_hat - G_hat
1319-
Ag_seq[1:] = Ag1
1320-
1321-
# immediate effect on consumption
1322-
# only know about Co,0 but not Cy,0
1323-
C_seq[0, 1] = (W_hat / 2) + K_seq[0] * (1 + r_hat * (1 - τ_hat))
1324-
1325-
# prepare to plot iterations until convergence
1326-
fig, axs = plt.subplots(1, 3, figsize=(14, 4))
1327-
1328-
# containers for checking convergence (Don't use np.copy)
1329-
W_seq_old = np.empty_like(W_seq)
1330-
r_seq_old = np.empty_like(r_seq)
1331-
τ_seq_old = np.empty_like(τ_seq)
1332-
1333-
max_iter = 500
1334-
i_iter = 0
1335-
tol = 1e-5 # tolerance for convergence
1336-
1337-
# start iteration
1338-
while True:
1339-
1340-
# plot current prices at ith iteration
1341-
for i, seq in enumerate([W_seq, r_seq, τ_seq]):
1342-
axs[i].plot(range(T+2), seq)
1343-
1344-
# store old prices from last iteration
1345-
W_seq_old[:] = W_seq
1346-
r_seq_old[:] = r_seq
1347-
τ_seq_old[:] = τ_seq
1348-
1349-
# start update quantities and prices
1350-
for t in range(T+1):
1351-
1352-
# note that r_seq[t+1] and τ_seq[t+1] are guesses!
1353-
W, W_next, r_next, τ, τ_next = W_seq[t], W_seq[t+1], r_seq[t+1], τ_seq[t], τ_seq[t+1]
1354-
1355-
C_ub = (W / 2) * (1 - τ) + (W_next / 2) * (1 - τ_next) / (1 + r_next * (1 - τ_next))
1356-
1357-
out = brent_max(Cy_val2, # maximand
1358-
1e-3, # lower bound
1359-
C_ub-1e-3, # upper bound
1360-
args=(W, W_next, r_next, τ, τ_next, β))
1361-
Cy = out[0]
1362-
1363-
# private saving, Ap[t+1]
1364-
Ap_next = W * (1 - τ) - Cy
1365-
1366-
# asset next period
1367-
K_next = Ap_next + Ag1
1368-
W_next, r_next, Y_next = K_to_W(K_next, α), K_to_r(K_next, α), K_to_Y(K_next, α)
1369-
1370-
K_seq[t+1] = K_next
1371-
W_seq[t+1] = W_next
1372-
r_seq[t+1] = r_next
1373-
τ_seq[t+1] = (G_hat - r_next * Ag1) / (Y_next - r_next * Ag1)
1374-
1375-
# record consumption
1376-
C_seq[t, 0] = Cy
1377-
if t < T:
1378-
C_seq[t+1, 1] = (W / 2 * (1 - τ) - Cy) * (1 + r_next * (1 - τ_next)) + W_next / 2
1379-
1380-
# one iteration finishes
1381-
i_iter += 1
1382-
1383-
# check convergence
1384-
if (np.max(np.abs(W_seq_old - W_seq)) < tol) & \
1385-
(np.max(np.abs(r_seq_old - r_seq)) < tol) & \
1386-
(np.max(np.abs(τ_seq_old - τ_seq)) < tol):
1387-
print(f"Converge using {i_iter} iterations")
1388-
break
1389-
1390-
if i_iter > max_iter:
1391-
print(f"Fail to converge using {i_iter} iterations")
1392-
break
1393-
1394-
axs[0].set_title('W')
1395-
axs[1].set_title('r')
1396-
axs[2].set_title('τ')
1397-
1398-
plt.show();
1399-
```
1400-
1401-
```{code-cell} ipython3
1402-
plt.plot(K_seq)
1403-
plt.title('K')
1404-
```

lectures/cagan_adaptive.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ $$
7979
$$ (eq:eqpipi)
8080
8181
We assume that the expected rate of inflation $\pi_t^*$ is governed
82-
by the Friedman-Cagan adaptive expectations scheme
82+
by the following adaptive expectations scheme proposed by {cite}`Friedman1956` and {citet}`Cagan`:
8383
8484
$$
8585
\pi_{t+1}^* = \lambda \pi_t^* + (1 -\lambda) \pi_t

lectures/french_rev.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ kernelspec:
1818
## Overview
1919

2020
This lecture describes some monetary and fiscal features of the French Revolution
21-
described by Sargent and Velde {cite}`sargent_velde1995`.
21+
described by {cite}`sargent_velde1995`.
2222

2323
We use matplotlib to replicate several of the graphs that they used to present salient patterns.
2424

lectures/laffer_adaptive.md

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,37 @@ kernelspec:
1313

1414
+++ {"user_expressions": []}
1515

16-
# Inflation Rate Laffer Curves with Adaptive Expectations
16+
# Laffer Curves with Adaptive Expectations
1717

1818
## Overview
1919

2020
This lecture studies stationary and dynamic **Laffer curves** in the inflation tax rate in a non-linear version of the model studied in this lecture {doc}`money_inflation`.
2121

22-
As in the lecture {doc}`money_inflation`, this lecture uses the log-linear version of the demand function for money that Cagan {cite}`Cagan` used in his classic paper in place of the linear demand function used in this lecture {doc}`money_inflation`.
22+
As in the lecture {doc}`money_inflation`, this lecture uses 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 this lecture {doc}`money_inflation`.
2323

2424
But now, instead of assuming ''rational expectations'' in the form of ''perfect foresight'',
25-
we'll adopt the ''adaptive expectations'' assumption used by Cagan {cite}`Cagan`.
25+
we'll adopt the ''adaptive expectations'' assumption used by {cite}`Cagan` and {cite}`Friedman1956`.
2626

2727

2828

29-
This means that instead of assuming that expected inflation $\pi_t^*$ is described by
29+
This means that instead of assuming that expected inflation $\pi_t^*$ is described by the "perfect foresight" or "rational expectations" hypothesis
3030

3131
$$
3232
\pi_t^* = p_{t+1} - p_t
3333
$$
3434

35-
as we assumed in lecture XXXX, we'll now assume that $\pi_t^*$ is determined by the adaptive expectations scheme described in equation {eq}`eq:adaptex` reported below.
35+
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.
36+
37+
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
38+
39+
40+
* replacing rational expectations with adaptive expectations leaves the two stationary inflation rates unchanged, but that $\ldots$
41+
* it reverse the pervese dynamics by making the **lower** stationary inflation rate the one to which the system typically converges
42+
* a more plausible comparative dynamic outcome emerges in which now inflation can be **reduced** by running **lower** government deficits
43+
44+
These more plausible comparative dynamics underly the "old time religion" that states that
45+
"inflation is always and everwhere caused by government deficits".
46+
3647

3748
## The Model
3849

lectures/money_inflation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ In this lecture we will encounter these concepts
5454

5555
The same qualitive outcomes prevail in this lecture {doc}`money_inflation_nonlinear` that studies a nonlinear version of the model in this lecture.
5656

57-
These outcomes will set the stage for the analysis of this lecture {doc}`laffer_adaptive` that studies a version of the present model that uses a version of "adaptive expectations" instead of rational expectations.
57+
These outcomes will set the stage for the analysis of this lecture {doc}`laffer_adaptive` that studies a nonlinear version of the present model that uses a version of "adaptive expectations" instead of rational expectations.
5858

5959
That lecture will show that
6060

lectures/money_inflation_nonlinear.md

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ kernelspec:
1919

2020
This lecture studies stationary and dynamic **Laffer curves** in the inflation tax rate in a non-linear version of the model studied in this lecture {doc}`money_inflation`.
2121

22-
This lecture uses the log-linear version of the demand function for money that Cagan {cite}`Cagan`
22+
This lecture uses the log-linear version of the demand function for money that {cite}`Cagan`
2323
used in his classic paper in place of the linear demand function used in this lecture {doc}`money_inflation`.
2424

2525
That change requires that we modify parts of our analysis.
@@ -29,6 +29,32 @@ In particular, our dynamic system is no longer linear in state variables.
2929
Nevertheless, the economic logic underlying an analysis based on what we called ''method 2'' remains unchanged.
3030

3131

32+
in this lecture we shall discover qualitatively similar outcomnes to those that we studied in the lecture {doc}`money_inflation`.
33+
34+
That lecture presented a linear version of the model in this lecture.
35+
36+
As in that lecture, we discussed these topics:
37+
38+
* an **inflation tax** that a government gathers by printing paper or electronic money
39+
* a dynamic **Laffer curve** in the inflation tax rate that has two stationary equilibria
40+
* perverse dynamics under rational expectations in which the system converges to the higher stationary inflation tax rate
41+
* a peculiar comparative stationary-state analysis connected with that stationary inflation rate that assert that inflation can be **reduced** by running **higher** government deficits
42+
43+
44+
45+
These outcomes will set the stage for the analysis of this lecture {doc}`laffer_adaptive` that studies a version of the present model that uses a version of "adaptive expectations" instead of rational expectations.
46+
47+
That lecture will show that
48+
49+
* replacing rational expectations with adaptive expectations leaves the two stationary inflation rates unchanged, but that $\ldots$
50+
* it reverse the pervese dynamics by making the **lower** stationary inflation rate the one to which the system typically converges
51+
* a more plausible comparative dynamic outcome emerges in which now inflation can be **reduced** by running **lower** government deficits
52+
53+
54+
GGHH
55+
56+
57+
3258

3359
## The Model
3460

0 commit comments

Comments
 (0)