19.2× vs 2.7× Income after 100 years of growth at 3% and at 1% a year
One line of algebra, \(y_t = y_0(1+\bar{g})^t\), gives both numbers. This deck builds the small toolkit behind every model in the book, one method at a time.
Each tool: intuition → formula → worked example, step by step → graph → your turn → where the book uses it.
When does income growing at 2% a year double? Solve \((1+0.02)^t = 2\).
years = np.arange(0, 51) # 1. NumPy: compute and look
income = 1.02 ** years
print("Income is at least twice its start value in year", years[income >= 2][0])
g, t = sp.symbols("g t") # 2. SymPy: solve with letters
doubling_time = sp.solve(sp.Eq((1 + g) ** t, 2), t)[0] # log(2)/log(g + 1)
print(f"Exact doubling time at 2 percent: {float(doubling_time.subs(g, 0.02)):.2f} years")
t_double = optimize.brentq(lambda t: 1.02 ** t - 2, 1, 100) # 3. SciPy: a root finder
print(f"brentq finds {t_double:.2f} years")NumPy computes many numbers, SymPy does the algebra with letters, SciPy searches when there is no formula.
Act I
| Mark | Meaning | Example in the book |
|---|---|---|
| a bar: \(\bar{s}\) | a parameter: the model takes it as given | investment rate \(\bar{s}\) (Ch. 5) |
| subscript \(t\): \(K_t\) | the value in period \(t\) (a year) | capital \(K_t\) |
| \(\Delta x_{t+1} \equiv x_{t+1} - x_t\) | the change from one period to the next | \(\Delta K_{t+1}\) (Ch. 5) |
| \(g_x\) | the growth rate of \(x\) | \(g_Y\) (Ch. 6) |
| a star: \(k^*\) | a steady state or equilibrium value | \(k^*\) (Ch. 5) |
| a tilde: \(\widetilde{Y}_t\) | short-run output: the % gap from potential | Ch. 9 |
| \(\equiv\) | “is defined as” | \(\widetilde{Y}_t \equiv (Y_t - \bar{Y}_t)/\bar{Y}_t\) |
| \(\pi\) | the inflation rate (not 3.14159…) | Ch. 8 |
| \(\sum_{t=0}^{T}\) | the sum over periods 0 to \(T\) | present values (Ch. 7) |
Know the marks and an equation reads like a sentence.
\[\widetilde{Y}_t = \bar{a} - \bar{b}\,(R_t - \bar{r})\]
Read it aloud: output is the demand shock, minus \(\bar{b}\) times the interest-rate gap.
Ch. 11 (the IS curve), Ch. 12–13 (the short-run model)
Step 1. Set output to potential, \(\widetilde{Y}_t = 0\): \[0 = \bar{a} - \bar{b}\,(R - \bar{r})\]
Step 2. Move the interest-rate term to the left: \[\bar{b}\,(R - \bar{r}) = \bar{a}\]
Step 3. Divide by \(\bar{b}\) and add \(\bar{r}\): \[R = \bar{r} + \frac{\bar{a}}{\bar{b}}\]
Step 4. Numbers: \(\bar{a} = 1\), \(\bar{b} = 0.5\), \(\bar{r} = 2\): \[R = 2 + \frac{1}{0.5} = \color{#e67e22}{\mathbf{4\%}}\]
On the IS curve, where is output at potential, and is output above or below potential when the real rate is 6%?
With \(\bar{a} = 1\), \(\bar{b} = 0.5\) and \(\bar{r} = 2\): predict output at \(R = 2\), at \(R = 4\) and at \(R = 6\).
Model figure: the IS curve \(\widetilde{Y}_t = \bar{a} - \bar{b}(R_t - \bar{r})\) with \(\bar{a} = 1\), \(\bar{b} = 0.5\), \(\bar{r} = 2\); illustration of equation (11.14) in Jones (2024), Macroeconomics, 6th ed.
The answer: \(\widetilde{Y} = 1\) at \(R = 2\), \(0\) at \(R = 4\), and \(-1\) at \(R = 6\). Each point of \(R\) costs \(\bar{b} = 0.5\) points of output.
Spending reacts twice as strongly to the interest rate: \(\bar{b} = 1\). Which real interest rate now closes the gap?
\(R = \bar{r} + \bar{a}/\bar{b} = 2 + 1/1 = 3\%\). A more rate-sensitive economy needs a smaller rate rise.
\[\text{percent change} = 100 \times \frac{x_1 - x_0}{x_0}\]
Unemployment rises from 4% to 5%:
\[\text{change in points: } 5 - 4 = \color{#e67e22}{\mathbf{1}\textbf{ percentage point}}\]
\[\text{percent change: } 100 \times \frac{5 - 4}{4} = \color{#e67e22}{\mathbf{25}\textbf{ percent}}\]
Ch. 2 (GDP growth), Ch. 7 (unemployment), Ch. 8 (inflation)
Unemployment went from 4% to 5%, so it rose by 1 percent.
It rose by 1 percentage point. In percent, it rose by 25 percent: a quarter more people are out of work, relative to the labor force.
Inflation rises from 2% to 3%. By how many percentage points, and by how many percent? The debt ratio rises from 100% to 110% of GDP: same two questions.
Inflation: \(3 - 2 = 1\) point, and \(100 \times 1/2 = 50\) percent. Debt: \(110 - 100 = 10\) points, and \(100 \times 10/100 = 10\) percent.
When the base is 100, points and percent coincide; when the base is small, they are far apart.
\[\text{rebased index}_t = 100 \times \frac{x_t}{x_{\text{base}}}\]
What would 100 dollars of 1913 buy in 2025? The CPI was 9.60 in 1913 and 321.94 in 2025 (base 1982–84 = 100).
\[\text{price ratio} = \frac{321.94}{9.60} = 33.5 \qquad 100 \times 33.5 = \color{#e67e22}{\mathbf{\$3{,}354}} \text{ of 2025}\]
\[\text{1913 with 2025} = 100: \quad 100 \times \frac{9.60}{321.94} = 3.0\]
Ch. 2 (real GDP), Ch. 8 (inflation and the CPI)
Rebasing is a division by one number; inflation is .pct_change(), the percent change from the year before.
Has the U.S. price level ever fallen? When did prices rise fastest?
Predict the year of the highest and of the lowest yearly CPI inflation since 1914, and roughly how high and how low.
Data: MeasuringWorth, Officer and Williamson, The Annual Consumer Price Index for the United States, 1774–Present. Chart inspired by Fig. 8.1 in Jones (2024), Macroeconomics, 6th ed.
Inflation is a growth rate: the percent change of a price index.
\[\text{deflator}_t = 100 \times \frac{\text{nominal GDP}_t}{\text{real GDP}_t}\]
| Year | Nominal GDP (billion $) | Real GDP (billion 2017 $) | Deflator (2017 = 100) |
|---|---|---|---|
| 1929 | 104.6 | 1,191.1 | 8.8 |
| 1970 | 1,073.3 | 5,316.4 | 20.2 |
| 2017 | 19,612.1 | 19,612.1 | 100.0 |
| 2025 | 30,861.3 | 23,943.3 | 128.9 |
Real GDP removes price changes; the deflator is what is left.
Ch. 2 (real and nominal GDP), Ch. 8 (inflation)
\[\text{annual rate} = (1+m)^{12} - 1\]
Prices rise 0.3% in one month, \(m = 0.003\):
\[1.003^{12} = 1.0366 \quad \Rightarrow \quad \color{#e67e22}{\mathbf{3.66\%}} \text{ a year, a bit more than } 12 \times 0.3 = 3.6\]
A quarterly change uses the 4th power: 0.5% a quarter is \(1.005^4 - 1 = 2.02\%\) a year.
Ch. 8 and 12 (monthly inflation), Ch. 9 (quarterly GDP growth)
(a) The CPI was 82.38 in 1980 and 321.94 in 2025. What do 100 dollars of 1980 buy in 2025? (b) The deflator was 104.0 in 2019 and 128.9 in 2025: by how many percent did it rise? (c) Annualize 0.2% a month and 1% a quarter.
(a) \(100 \times 321.94/82.38 = \$391\). (b) \(100 \times (128.9/104.0 - 1) = 24.0\%\). (c) \(1.002^{12} - 1 = 2.43\%\) a year; \(1.01^4 - 1 = 4.06\%\) a year.
| Tool | Formula | Python | Used in |
|---|---|---|---|
| Percent change | \(100\,(x_1 - x_0)/x_0\) | 100 * s.pct_change() |
Ch. 2, 7, 8 |
| Percentage points | \(x_1 - x_0\) (for rates already in %) | s.diff() |
Ch. 7, 8, 18 |
| Rebase an index | \(100\,x_t/x_{\text{base}}\) | 100 * s / s_base |
Ch. 2, 8 |
| Deflator | \(100 \times\) nominal / real | 100 * gdp / real_gdp |
Ch. 2, 8 |
| Real value | nominal / (price index / 100) | nominal / (cpi / 100) |
Ch. 2, 8 |
| Annualize | \((1+m)^{12} - 1\), \((1+q)^4 - 1\) | (1 + m) ** 12 - 1 |
Ch. 8, 9, 12 |
| Solve for a variable | isolate it, step by step | sp.solve(eq, R) |
every chapter |
Act II
| Rule | Example in the book |
|---|---|
| \(x^a \cdot x^b = x^{a+b}\) | \(K^{1/3}K^{2/3} = K\) |
| \((x^a)^b = x^{ab}\) | \((k^{1/3})^{3/2} = k^{1/2}\) |
| \(x^{-a} = 1/x^a\) | \(K^{-2/3} = 1/K^{2/3}\) |
| \(x^{1/n} = \sqrt[n]{x}\) | \(k^{1/3}\) is the cube root of \(k\) |
| \((xy)^a = x^a y^a\) | \((AK)^{1/3} = A^{1/3}K^{1/3}\) |
An exponent counts how many times a number multiplies itself: \(x^3 = x \cdot x \cdot x\).
Ch. 4 (production function), Ch. 5 (Solow), Ch. 6 (Romer)
Start from \(y_0\) and grow at the constant rate \(\bar{g}\): \[y_1 = y_0\,(1+\bar{g})\]
\[y_2 = y_1\,(1+\bar{g}) = y_0\,(1+\bar{g})^2\]
\[y_t = y_0\,(1+\bar{g})^t\]
Income grows by the same percent each year, so it grows by more and more dollars.
Ch. 3 (growth facts), Ch. 5 (Solow), Ch. 6 (Romer)
Raise \((1+\bar{g})\) to the power 100:
\[1.01^{100} = 2.7 \qquad 1.02^{100} = 7.2 \qquad 1.03^{100} = \color{#e67e22}{\mathbf{19.2}}\]
In continuous time growth is written \(y_t = y_0 e^{gt}\), with \(e \approx 2.718\). For small rates the two are close:
\[(1.02)^{100} = 7.24 \qquad \text{vs.} \qquad e^{0.02 \times 100} = 7.39\]
Tripling the growth rate multiplies the century’s gain by seven.
Economy A grows at 1% a year and economy B at 3%. They start equal. After 100 years, how many times richer is B than A?
Write down a number. Then predict: if B grew at 4% instead, roughly how many times its starting income would it reach?
Model figure: two incomes \(y_t = (1+\bar{g})^t\) with \(y_0 = 1\); illustration of the constant-growth rule, equation (3.7) in Jones (2024), Macroeconomics, 6th ed.
Small differences in growth rates become large differences in income.
Step 1. Income doubles when \((1+g)^t = 2\). Take logs of both sides: \[t\,\ln(1+g) = \ln 2\]
Step 2. Solve for \(t\), then use \(\ln(1+g) \approx g\) for a small \(g\): \[t = \frac{\ln 2}{\ln(1+g)} \approx \frac{0.693}{g} = \frac{69.3}{100\,g}\]
Step 3. Write \(G = 100\,g\), the growth rate in percent, and round 69.3 to 70: \[t \approx \frac{70}{G} \qquad G = 2: \quad t \approx \frac{70}{2} = \color{#e67e22}{\mathbf{35}} \text{ years (exact: 35.0)}\]
Ch. 3 (growth over the long run)
| Growth rate (%) | 0.5 | 1 | 2 | 3 | 5 | 7 | 10 | 20 |
|---|---|---|---|---|---|---|---|---|
| Exact doubling time (years) | 139.0 | 69.7 | 35.0 | 23.4 | 14.2 | 10.2 | 7.3 | 3.8 |
| Rule of 70 | 140.0 | 70.0 | 35.0 | 23.3 | 14.0 | 10.0 | 7.0 | 3.5 |
Between 1% and 5% the rule is off by a few tenths of a year; at 20% it is off by about four months.
(a) Income grows 3.5% a year. When does it double? Use the rule, then the exact formula. (b) At 2% a year, how many years does it take for income to rise tenfold?
(a) Rule: \(70/3.5 = 20\) years; exact: \(\ln 2/\ln 1.035 = 20.1\) years. (b) \(1.02^t = 10 \Rightarrow t = \ln 10/\ln 1.02 = 116.3\) years, a bit more than a century.
\[x = e^{z} \iff \ln x = z \qquad\qquad \ln e^{z} = z \qquad e^{\ln x} = x\]
| Rule | In words | Used for |
|---|---|---|
| \(\ln(xy) = \ln x + \ln y\) | the log of a product is the sum of the logs | GDP growth = GDP per person + population growth |
| \(\ln(x/y) = \ln x - \ln y\) | the log of a ratio is the difference | growth of a ratio such as \(Y/L\) |
| \(\ln(x^a) = a \ln x\) | an exponent comes down as a factor | growth of \(K^{1/3}\) |
| \(\ln 1 = 0\) |
Logs turn multiplication into addition and powers into multiplication.
x, y, a = sp.symbols("x y a", positive=True) # logs need positive symbols
print(sp.expand_log(sp.log(x * y)))
print(sp.expand_log(sp.log(x / y)))
print(sp.expand_log(sp.log(x ** a)))
print(np.log(3 * 5), np.log(3) + np.log(5)) # the same number
print(np.log10(1000), np.exp(np.log(42))) # 3, and 42 back againSymPy writes the natural log as log; np.log is \(\ln\) and np.log10 the base-10 log.
Expand \(\ln\!\left(\bar{A}\,K^{1/3}L^{2/3}\right)\) with the three rules. Then simplify \(\bar{A}K^{1/3}L^{2/3}\) when \(K = L\), and compute \(8^{2/3}\).
\(\ln \bar{A} + \tfrac{1}{3}\ln K + \tfrac{2}{3}\ln L\) (product rule, then power rule). With \(K = L\): \(\bar{A}L^{1/3 + 2/3} = \bar{A}L\). And \(8^{2/3} = (8^{1/3})^2 = 2^2 = 4\).
Step 1. Take logs of \(y_t = y_0(1+\bar{g})^t\) with the product and power rules: \[\ln y_t = \ln y_0 + t\,\ln(1+\bar{g})\]
Step 2. That is a straight line in \(t\): intercept \(\ln y_0\), slope \(\ln(1+\bar{g}) \approx \bar{g}\).
Step 3. A ratio scale spaces the axis by logs: 5,000 → 10,000 is as far as 40,000 → 80,000 (both double).
The slope of a line on a ratio scale is the growth rate.
Ch. 3 (GDP per person over 150 years), Ch. 5, 6, 8
Does U.S. income look as if growth has sped up in recent decades? Predict what changes when you switch between a linear and a ratio scale.
On the linear scale, will the line look straight or curved? On the ratio scale? Which scale makes the Great Depression look bigger?
Data: BEA, Real GDP (GDPCA), population (B230RC0A052NBEA) and GDP deflator (A191RD3A086NBEA), via FRED; before 1929, the Maddison Project Database 2023 (Bolt and van Zanden 2024). Chart inspired by Figs. 3.2 and 3.5 in Jones (2024), Macroeconomics, 6th ed.
To compare growth over time, use a ratio scale.
The line gets steeper after 1950, so U.S. growth has sped up.
On a linear scale, constant growth already curves upward, because each year adds a fixed percent of a bigger number. Only the slope on a ratio scale measures the growth rate.
U.S. GDP per person grew at 1.88% a year from 1870 to 2025. Was growth faster or slower over 1950–2025? Use \(\bar{g} = (y_T/y_0)^{1/T} - 1\) with \(T = 75\).
With the data in the appendix’s file, \((y_{2025}/y_{1950})^{1/75} - 1 = 1.97\%\) a year: a little faster than the 1.88% of the whole period.
| Tool | Formula | Python | Used in |
|---|---|---|---|
| Exponent rules | \(x^a x^b = x^{a+b}\), \((x^a)^b = x^{ab}\), \(x^{-a} = 1/x^a\) | x ** a |
Ch. 4, 5, 6 |
| Constant growth | \(y_t = y_0(1+\bar{g})^t\) | y0 * (1 + g) ** t |
Ch. 3, 5, 6 |
| Continuous growth | \(y_t = y_0 e^{gt}\) | y0 * np.exp(g * t) |
Ch. 15+ |
| Doubling time | \(\ln 2/\ln(1+g) \approx 70/G\) | np.log(2) / np.log(1 + g) |
Ch. 3 |
| Log rules | \(\ln(xy) = \ln x + \ln y\), \(\ln x^a = a \ln x\) | sp.expand_log(...), np.log |
Ch. 3, 4, 5 |
| Ratio scale | \(\ln y_t = \ln y_0 + t\ln(1+\bar{g})\) | px.line(..., log_y=True) |
Ch. 3, 5, 6, 8 |
| Average growth | \(\bar{g} = (y_T/y_0)^{1/T} - 1\) | (yT / y0) ** (1 / T) - 1 |
Ch. 3, 5 |
Act III
| Measure | Formula | In pandas | U.S. GDP per person, 1870–2025 |
|---|---|---|---|
| Year to year | \(g_t = (y_t - y_{t-1})/y_{t-1}\) | 100 * y.pct_change() |
mean 1.99% |
| Log difference | \(\ln y_t - \ln y_{t-1}\) | 100 * np.log(y).diff() |
mean 1.86 log points |
| Average annual growth | \(\bar{g} = (y_T/y_0)^{1/T} - 1\) | (yT / y0) ** (1 / T) - 1 |
1.88% |
Worked example: income goes from 100 to 121 in two years. \(\bar{g} = (121/100)^{1/2} - 1 = 1.1 - 1 = 10\%\) a year.
To get from \(y_0\) to \(y_T\), use the average annual growth rate.
Ch. 3 (equation 3.9), Ch. 5
Prices fall 50% one year and rise 50% the next. The average change is zero, so they are back where they started.
\(0.5 \times 1.5 = 0.75\): they end 25% lower. Ups and downs do not cancel in percent, which is why the simple mean (1.99%) is above the true average growth (1.88%).
Income rises 10% one year and falls 10% the next. Where does it end, relative to the start? What is the average annual growth rate?
\(1.1 \times 0.9 = 0.99\): income ends 1% lower. Average annual growth: \(0.99^{1/2} - 1 = -0.50\%\) a year, although the mean of \(+10\) and \(-10\) is zero.
\[\text{product: } z = x \cdot y \;\Rightarrow\; g_z \approx g_x + g_y\]
\[\text{ratio: } z = x/y \;\Rightarrow\; g_z \approx g_x - g_y\]
\[\text{power: } z = x^a \;\Rightarrow\; g_z \approx a \cdot g_x\]
These three rules turn every growth question in the book into addition and multiplication.
Ch. 3 (rules), Ch. 4 and 6 (growth accounting), Ch. 8 (quantity theory)
Step 1. Over one year, each factor grows by its own rate: \[1 + g_z = (1+g_x)(1+g_y)\]
Step 2. Multiply out: \[1 + g_z = 1 + g_x + g_y + g_x g_y\]
Step 3. With 2% and 3%, the cross term is \(0.02 \times 0.03 = 0.0006\), so drop it: \[g_z = 0.0506 \text{ exactly} \qquad \approx \; g_x + g_y = 0.05\]
In continuous time the rules are exact (Act V).
Step 1. Product rule: add the growth rates of the three factors: \[g_Y = g_A + g_{K^{1/3}} + g_{L^{2/3}}\]
Step 2. Power rule: each growth rate times its exponent: \[g_Y = g_A + \tfrac{1}{3}\,g_K + \tfrac{2}{3}\,g_L\]
Step 3. Numbers: \(g_A = 1\), \(g_K = 3\), \(g_L = 1\) (percent): \[g_Y = 1 + 1 + 0.67 = \color{#e67e22}{\mathbf{2.67\%}} \qquad g_{Y/L} = g_Y - g_L = 1.67\%\]
Ch. 6 (equation 6.14, growth accounting)
Step 1. The quantity equation (money × velocity = prices × real output): \[M V = P Y\]
Step 2. Product rule on both sides: \[g_M + g_V = g_P + g_Y\]
Step 3. Velocity constant (\(g_V = 0\)), and inflation is \(\pi = g_P\): \[\pi = g_M - g_Y = 7 - 3 = \color{#e67e22}{\mathbf{4\%}}\]
Ch. 8 (equations 8.1, 8.3 and 8.4)
(a) Capital per person \(k\) grows at 6% a year. How fast does \(y = k^{1/3}\) grow? (b) In 2025, U.S. real GDP grew 2.34% and the population 0.54%. Approximately how fast did real GDP per person grow?
(a) Power rule: \(\tfrac{1}{3} \times 6 = 2\%\). (b) Ratio rule: \(2.34 - 0.54 = 1.80\%\); the exact figure in the data is 1.79%.
Nominal GDP = real GDP × the price level, so nominal growth ≈ real growth + inflation. In which years would the rule be farthest off?
Predict: in a normal year, how big is the gap between the two sides? And in which decade would it be largest, and why?
Data: BEA, Gross Domestic Product (GDPA) and Real Gross Domestic Product (GDPCA), via FRED. Chart inspired by the growth rules and Fig. 3.9 in Jones (2024), Macroeconomics, 6th ed.
For normal growth and inflation rates, the growth rules are all you need.
Debt grows 6% a year and GDP 4%, so the debt-to-GDP ratio grows by 6/4 = 1.5% a year.
The ratio rule says \(g_{B/Y} \approx g_B - g_Y = 6 - 4 = 2\%\) a year. Growth rates of a ratio subtract; they are never divided.
\[f(x) \approx f(x_0) + f'(x_0)\,(x - x_0)\]
Apply it to \(f(x) = \ln(1+x)\) at \(x_0 = 0\): \(f(0) = 0\) and \(f'(0) = 1/(1+0) = 1\), so
\[\ln(1+x) \approx x\]
More terms (SymPy’s series): \(\ln(1+x) = x - \dfrac{x^2}{2} + \dfrac{x^3}{3} - \dots\) At \(x = 0.02\) the second term is only 0.0002.
Ch. 3, 9 (log approximations), Ch. 5 (linearizing near the steady state)
Step 1. SymPy’s series of the exact doubling time in \(g\): \[\frac{\ln 2}{\ln(1+g)} = \frac{\ln 2}{g} + \frac{\ln 2}{2} - \frac{g \ln 2}{12} + \dots\]
Step 2. Write the growth rate in percent, \(G = 100\,g\): \[\frac{69.3}{G} + 0.35 + \dots\]
Step 3. At \(G = 2\): \(34.66 + 0.35 = 35.0 = 70/2\).
70 is \(100 \ln 2 \approx 69.3\), rounded up to absorb the second term at normal growth rates.
For small \(x\), \(\ln(1+x)\) and \(x\) are almost equal. For which \(x\) does the gap become large?
Predict the error as a share of \(x\) at \(x = 0.05\), at \(x = 0.25\) and at \(x = 1\). Is \(\ln(1+x)\) above or below \(x\)?
Model figure: the curve \(\ln(1+x)\), the line \(x\) and the error at the chosen \(x\); illustration of the approximation \(\ln(1+x) \approx x\) used throughout Jones (2024), Macroeconomics, 6th ed.
| \(x\) | 0.01 | 0.02 | 0.05 | 0.10 | 0.25 | 0.50 | 1.00 |
|---|---|---|---|---|---|---|---|
| \(\ln(1+x)\) | 0.0100 | 0.0198 | 0.0488 | 0.0953 | 0.2231 | 0.4055 | 0.6931 |
| error as % of \(x\) | 0.5 | 1.0 | 2.4 | 4.7 | 10.7 | 18.9 | 30.7 |
Income rises from 100 to 103: \(100 \times (\ln 103 - \ln 100) = 2.96\) log points, close to 3 percent.
Log points ≈ percent for changes of a few percent, and only then.
\[1 + i = (1+R)(1+\pi) \;\Rightarrow\; R = \frac{1+i}{1+\pi} - 1 \;\approx\; i - \pi\]
| Country, year | nominal rate \(i\) | inflation \(\pi\) | approximation \(i - \pi\) | exact real rate |
|---|---|---|---|---|
| United States, 2023 | 5.1 | 4.1 | 0.9 | 0.9 |
| United States, 2024 | 5.0 | 3.0 | 2.0 | 2.0 |
| Argentina, 2023 | 95.8 | 133.5 | −37.7 | −16.1 |
| Argentina, 2024 | 55.7 | 219.9 | −164.2 | −51.3 |
A real rate below −100% is impossible: lenders would lose more than everything.
Ch. 8 (equation 8.6), Ch. 12
\[\widetilde{Y}_t = \frac{Y_t - \bar{Y}_t}{\bar{Y}_t} \;\approx\; \ln Y_t - \ln \bar{Y}_t\]
| Year | 1933 | 1982 | 2009 | 2020 | 2025 |
|---|---|---|---|---|---|
| gap in percent | −23.25 | −6.23 | −4.66 | −3.28 | 1.40 |
| gap in log points | −26.47 | −6.43 | −4.77 | −3.33 | 1.39 |
In normal recessions the two agree to a few tenths; in the Great Depression they differ by 3 points.
Ch. 9 (equation 9.2), Ch. 13, 15
A log difference and a percent change are two names for the same number.
Only for changes of a few percent (100 → 103: 2.96 vs 3). For big ones they part: the 1933 gap is −23.25% but −26.47 log points, and in Argentina \(i - \pi\) gives −164% while the exact real rate is −51%.
(a) \(i = 5\%\), \(\pi = 3\%\): compute the real rate both ways. (b) Money grows 100% a year, velocity is constant and output grows 2%. Exactly, \((1+g_M) = (1+\pi)(1+g_Y)\). Compute inflation exactly and with \(\pi \approx g_M - g_Y\).
(a) Exact: \(1.05/1.03 - 1 = 1.94\%\); approximate: \(5 - 3 = 2\%\). (b) Exact: \(1 + \pi = 2/1.02\), so \(\pi = 96.1\%\); approximate: \(100 - 2 = 98\%\).
| Tool | Formula | Python | Used in |
|---|---|---|---|
| Average growth | \(\bar{g} = (y_T/y_0)^{1/T} - 1\) | (yT / y0) ** (1 / T) - 1 |
Ch. 3, 5 |
| Log growth | \(100\,\Delta \ln y_t\) (log points) | 100 * np.log(y).diff() |
Ch. 3, 9 |
| Product rule | \(g_{xy} \approx g_x + g_y\) | g_x + g_y |
Ch. 3, 6, 8 |
| Ratio rule | \(g_{x/y} \approx g_x - g_y\) | g_x - g_y |
Ch. 3, 8, 18 |
| Power rule | \(g_{x^a} \approx a\,g_x\) | a * g_x |
Ch. 3, 4, 6 |
| Growth accounting | \(g_Y = g_A + \tfrac13 g_K + \tfrac23 g_L\) | g_A + g_K / 3 + 2 * g_L / 3 |
Ch. 6 |
| Quantity theory | \(\pi \approx g_M - g_Y\) | g_M - g_Y |
Ch. 8 |
| Taylor (1st order) | \(f(x) \approx f(x_0) + f'(x_0)(x - x_0)\) | sp.series(f, x, x0, 2) |
Ch. 5, 9 |
| Log approximation | \(\ln(1+x) \approx x\) | sp.series(sp.log(1 + x), x, 0, 3) |
Ch. 3, 9 |
| Fisher equation | \(R = (1+i)/(1+\pi) - 1 \approx i - \pi\) | (1 + i) / (1 + pi) - 1 |
Ch. 8, 12 |
Act IV
\[f'(x) = \frac{df}{dx} = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}\]
| Function | Derivative | Example in the book |
|---|---|---|
| \(x^n\) | \(n\,x^{n-1}\) | \(\frac{d}{dk}k^{1/3} = \tfrac{1}{3}k^{-2/3}\) |
| \(\ln x\) | \(1/x\) | \(\frac{d}{dc}\ln c = 1/c\), marginal utility (Ch. 16) |
| \(e^{ax}\) | \(a\,e^{ax}\) | continuous growth |
| \(c \cdot f(x)\) | \(c \cdot f'(x)\) | constants stay |
| \(f(g(x))\) | \(f'(g(x))\,g'(x)\) | the chain rule |
Economists say marginal: the marginal product of capital is the extra output from one more unit of capital.
Step 1. Power rule: bring the exponent down, reduce it by one: \[\frac{dy}{dk} = \tfrac{1}{3}\,k^{1/3 - 1} = \tfrac{1}{3}\,k^{-2/3}\]
Step 2. At \(k = 1\): \(1^{-2/3} = 1\): \[\tfrac{1}{3} \times 1 = 0.333\]
Step 3. At \(k = 8\): \(8^{2/3} = (8^{1/3})^2 = 4\), so \(8^{-2/3} = 1/4\): \[\tfrac{1}{3} \times \tfrac{1}{4} = \tfrac{1}{12} = \color{#e67e22}{\mathbf{0.083}}\]
Ch. 4 (marginal products), Ch. 5 (Solow: output per person \(y = k^{1/3}\))
\[Y = \bar{A}\,K^{1/3}L^{2/3}\]
\[MPK = \frac{\partial Y}{\partial K} = \tfrac{1}{3}\bar{A}K^{-2/3}L^{2/3} = \tfrac{1}{3}\,\frac{Y}{K} \qquad MPL = \frac{\partial Y}{\partial L} = \tfrac{2}{3}\,\frac{Y}{L}\]
Differentiate again in \(K\): the slope of the slope. \[\frac{\partial^2 Y}{\partial K^2} = -\tfrac{2}{9}\,\bar{A}\,K^{-5/3}L^{2/3} < 0\]
A negative second derivative means diminishing returns: each extra machine adds less.
Ch. 4 (equations 4.3, 4.4), Ch. 5
When a function has no formula, \([f(x+h) - f(x)]/h\) with a small \(h\) gives its slope.
Draw the tangent to \(y = k^{1/3}\) at \(k = 1\) and at \(k = 8\). Which tangent is steeper, and by how many times?
Use the worked example. Predict: the ratio of the two slopes, and where on the curve a tangent would be almost flat.
Model figure: \(y = k^{1/3}\) and its tangents at \(k = 1\) and \(k = 8\); illustration of the production function (5.6) and its marginal product, as in Chapters 4 and 5 of Jones (2024), Macroeconomics, 6th ed.
Diminishing returns are a falling derivative.
(a) Find the slope of \(y = k^{1/3}\) at \(k = 27\), exactly and with \(h = 0.1\). (b) Find the marginal utility \(u'(c)\) of \(u(c) = \ln c\) and of \(u(c) = c^{1/2}\). Do both fall as \(c\) rises?
(a) \(27^{2/3} = 9\), so \(\tfrac{1}{3} \times \tfrac{1}{9} = 0.0370\); with \(h = 0.1\): 0.03699. (b) \(u' = 1/c\) and \(u' = \tfrac{1}{2}c^{-1/2}\); both fall: \(u'' = -1/c^2 < 0\) and \(u'' = -\tfrac{1}{4}c^{-3/2} < 0\).
\[\text{elasticity of } Y \text{ with respect to } K = \frac{\partial Y}{\partial K}\cdot\frac{K}{Y} = \frac{\%\,\Delta Y}{\%\,\Delta K}\]
Step 1. Put in \(MPK = \tfrac{1}{3}\,Y/K\):
\[\tfrac{1}{3}\,\frac{Y}{K}\cdot\frac{K}{Y} = \color{#e67e22}{\mathbf{\tfrac{1}{3}}} \qquad \text{and likewise for labor: } \tfrac{2}{3}\,\frac{Y}{L}\cdot\frac{L}{Y} = \tfrac{2}{3}\]
A 1% rise in capital raises output by 1/3 of a percent, whatever the levels.
Ch. 4 (production), Ch. 6 (growth accounting), Ch. 16 (consumption)
Step 1. Scale both inputs by \(\lambda\): \[F(\lambda K, \lambda L) = \bar{A}(\lambda K)^{1/3}(\lambda L)^{2/3} = \lambda^{1/3 + 2/3}\,\bar{A}K^{1/3}L^{2/3} = \lambda\,Y\]
Step 2. Pay each input its marginal product and add up (Euler’s theorem): \[K \cdot MPK + L \cdot MPL = \tfrac{1}{3}Y + \tfrac{2}{3}Y = Y\]
Step 3. With \(r = MPK\) and \(w = MPL\): capital’s share \(rK/Y = 1/3\), labor’s share \(wL/Y = 2/3\).
Payments to capital and labor exhaust output exactly: nothing is left over as profit.
Ch. 4 (equations 4.5, 4.6)
(a) \(Y = K^{0.3}L^{0.7}\). What is the elasticity of output with respect to capital? Labor’s share? What happens to \(Y\) if both inputs double? (b) \(Y = K^{0.5}L^{0.7}\): what happens to \(Y\) when both inputs double?
(a) 0.3; labor’s share 0.7; output doubles (0.3 + 0.7 = 1). (b) \(2^{0.5 + 0.7} = 2^{1.2} = 2.30\): output more than doubles, increasing returns to scale.
In \(Y = \bar{A}K^{1/3}L^{2/3}\), the marginal product of capital is 1/3.
1/3 is the elasticity (and capital’s share). The marginal product is \(MPK = \tfrac{1}{3}\,Y/K\): it falls as capital rises, from 0.333 at \(k = 1\) to 0.083 at \(k = 8\).
\[\text{first-order condition: } f'(x^*) = 0 \qquad\qquad \text{second-order condition: } f''(x^*) < 0\]
Ch. 4 (firms hire), Ch. 16 (households consume), Ch. 17 (firms invest)
\(\bar{A} = 1\), \(\bar{K} = 8\), so \(\bar{K}^{1/3} = 2\). Profit is \(\Pi(L) = 2L^{2/3} - wL\).
Step 1. First-order condition, \(MPL = w\): \[\Pi^{\,\prime}(L) = \tfrac{4}{3}\,L^{-1/3} - w = 0\]
Step 2. Solve for \(L\): \(L^{1/3} = \dfrac{4}{3w}\), so \[L^* = \frac{64}{27\,w^3}\]
Step 3. At \(w = 2/3\): \(27 \times (2/3)^3 = 8\), so \[L^* = 64/8 = \color{#e67e22}{\mathbf{8}} \text{ workers}\]
L, w = sp.symbols("L w", positive=True)
profit = 8 ** sp.Rational(1, 3) * L ** sp.Rational(2, 3) - w * L # A = 1, K = 8
L_star = sp.solve(sp.Eq(sp.diff(profit, L), 0), L)[0] # 64/(27*w**3)
print("Workers hired when w = 2/3:", L_star.subs(w, sp.Rational(2, 3)))
print("Second derivative at that point:", sp.diff(profit, L, 2).subs({w: sp.Rational(2, 3), L: 8}))
best_L = optimize.minimize_scalar(lambda L: -(8 ** (1 / 3) * L ** (2 / 3) - (2 / 3) * L),
bounds=(0.1, 50), method="bounded") # SciPy minimizes
print(f"minimize_scalar: L* = {best_L.x:.4f}, profit = {-best_L.fun:.4f}")SciPy’s optimizers minimize, so maximize profit by minimizing minus the profit.
The wage doubles, from \(w = 2/3\) to \(w = 4/3\). How many workers does the firm hire now? By what factor did hiring fall?
\(L^* = 64/(27 \times (4/3)^3) = 64/64 = 1\) worker. Hiring falls 8-fold: \(L^*\) moves with \(1/w^3\), and \(2^3 = 8\).
\[\max_{c_{\text{today}},\,c_{\text{future}}} \; U = \ln c_{\text{today}} + \beta \ln c_{\text{future}}\]
\[\text{subject to} \quad c_{\text{today}} + \frac{c_{\text{future}}}{1+R} = \bar{X}\]
Ch. 16 (equation 16.5, the two-period model)
Step 1. Solve the constraint for future consumption: \[c_{\text{future}} = (1+R)\,(\bar{X} - c_{\text{today}})\]
Step 2. Utility now has one choice variable: \[U = \ln c_{\text{today}} + \beta \ln\!\left[(1+R)(\bar{X} - c_{\text{today}})\right]\]
Step 3. First-order condition (chain rule on the second term): \[\frac{1}{c_{\text{today}}} - \frac{\beta}{\bar{X} - c_{\text{today}}} = 0 \;\Rightarrow\; c_{\text{today}} = \frac{\bar{X}}{1+\beta}\]
With \(\beta = 1\): consume half of lifetime wealth today, \(\bar{X}/2\) (equation 16.9).
Step 1. Add the constraint, times a multiplier \(\mu\): \[\mathbf{L} = \ln c_{\text{today}} + \beta \ln c_{\text{future}} + \mu\left[\bar{X} - c_{\text{today}} - \frac{c_{\text{future}}}{1+R}\right]\]
Step 2. Set each derivative to zero: \[\frac{1}{c_{\text{today}}} = \mu \qquad\qquad \frac{\beta}{c_{\text{future}}} = \frac{\mu}{1+R}\]
Step 3. Divide the two conditions to remove \(\mu\): \[\frac{c_{\text{future}}}{c_{\text{today}}} = \beta\,(1+R)\]
Patience (\(\beta\)) and a high interest rate (\(R\)) tilt consumption toward the future.
Ch. 16 (equation 16.8, the Euler equation)
Lifetime wealth \(\bar{X} = 100\), patience \(\beta = 0.96\), interest rate \(R = 5\%\). Does the household consume more or less than half of its wealth today?
Predict \(c_{\text{today}}\) with the formula \(\bar{X}/(1+\beta)\), and the shape of lifetime utility along the budget line.
Model figure: lifetime utility \(\ln c_{\text{today}} + \beta \ln[(1+R)(\bar{X} - c_{\text{today}})]\) with \(\bar{X} = 100\), \(\beta = 0.96\), \(R = 5\%\); illustration of the household’s problem, equation (16.5) in Jones (2024), Macroeconomics, 6th ed.
With \(\beta = 1\) and \(R = 5\%\), find \(c_{\text{today}}\) and \(c_{\text{future}}\).
\(c_{\text{today}} = 100/2 = 50\) and \(c_{\text{future}} = 1.05 \times 50 = 52.5\): consumption rises over time by the interest rate.
Wherever the derivative is zero, the function is at its maximum.
A zero slope also marks a minimum or a flat point. Check the second derivative: for the firm, \(\Pi^{\,\prime\prime}(8) = -1/36 < 0\), a maximum. And compare with the corners when the choice is bounded.
| Tool | Formula | Python | Used in |
|---|---|---|---|
| Power rule | \(\frac{d}{dx}x^n = n\,x^{n-1}\) | sp.diff(x ** n, x) |
Ch. 4, 5 |
| Log and chain rules | \(\frac{d}{dx}\ln x = 1/x\); \((f(g))' = f'(g)\,g'\) | sp.diff(sp.log(c), c) |
Ch. 16 |
| Partial derivative | \(MPK = \partial Y/\partial K = \tfrac{1}{3}Y/K\) | sp.diff(Y, K) |
Ch. 4 |
| Diminishing returns | \(\partial^2 Y/\partial K^2 < 0\) | sp.diff(Y, K, 2) |
Ch. 4, 5 |
| Numerical derivative | \([f(x+h) - f(x)]/h\) | np.gradient(y, x) |
any |
| Elasticity | \((\partial Y/\partial K)(K/Y)\) | sp.simplify(sp.diff(Y, K) * K / Y) |
Ch. 4, 6 |
| Constant returns | \(F(\lambda K, \lambda L) = \lambda F(K, L)\) | Y.subs({K: lam*K, L: lam*L}) |
Ch. 4, 6 |
| Optimum | \(f'(x^*) = 0\), \(f''(x^*) < 0\) | sp.solve(sp.diff(f, x), x) |
Ch. 4, 16, 17 |
| Numerical optimum | minimize \(-f\) | optimize.minimize_scalar(...) |
any |
| Euler equation | \(c_{\text{future}}/c_{\text{today}} = \beta(1+R)\) | Lagrangian with sp.solve |
Ch. 16 |
Act V
\[\begin{aligned} \text{IS:}\quad & \widetilde{Y}_t = \bar{a} - \bar{b}\,(R_t - \bar{r}) \\ \text{MP rule:}\quad & R_t - \bar{r} = \bar{m}\,(\pi_t - \bar{\pi}) \\ \text{AS:}\quad & \pi_t = \pi_{t-1} + \bar{\nu}\,\widetilde{Y}_t + \bar{o} \end{aligned}\]
Move the unknowns \(\widetilde{Y}_t, R_t, \pi_t\) to the left and everything else to the right: the matrix form \(Mz = c\).
\[\begin{pmatrix}1 & \bar{b} & 0\\ 0 & 1 & -\bar{m}\\ -\bar{\nu} & 0 & 1\end{pmatrix} \begin{pmatrix}\widetilde{Y}_t\\ R_t\\ \pi_t\end{pmatrix} = \begin{pmatrix}\bar{a}+\bar{b}\bar{r}\\ \bar{r}-\bar{m}\bar{\pi}\\ \pi_{t-1}+\bar{o}\end{pmatrix}\]
Ch. 11 (IS), Ch. 12 (Phillips curve), Ch. 13 (the policy rule and AS/AD)
A negative demand shock \(\bar{a} = -2\); \(\bar{b} = \bar{m} = \bar{\nu} = 0.5\); \(\bar{r} = \bar{\pi} = 2\); last year’s inflation 2; no price shock.
a_, b_, m_, nu_, r_, pibar_, pi_last, o_ = -2, 0.5, 0.5, 0.5, 2, 2, 2, 0
M = np.array([[1, b_, 0],
[0, 1, -m_],
[-nu_, 0, 1]])
c = np.array([a_ + b_ * r_, r_ - m_ * pibar_, pi_last + o_])
Y_short, R_short, pi_short = np.linalg.solve(M, c)
print(f"Output gap {Y_short:.3f}%, real rate {R_short:.3f}%, inflation {pi_short:.3f}%")The shock opens a gap of −1.8%, inflation falls below target, and the central bank cuts the real rate below \(\bar{r}\).
\[\widetilde{Y}_t = \frac{\bar{a} - \bar{b}\bar{m}\,(\pi_{t-1} - \bar{\pi}) - \bar{b}\bar{m}\,\bar{o}}{1 + \bar{b}\bar{m}\bar{\nu}}\]
sp.solve([IS, MP, AS], [Y, R, pi]) returns this formula.
Solve the short-run system with no demand shock (\(\bar{a} = 0\)) and a price shock \(\bar{o} = 1\); the other numbers as before. What happens to output, the real rate and inflation?
Output \(-0.25/1.125 = -0.222\%\), real rate \(2.444\%\), inflation \(2.889\%\): stagflation. Inflation rises above target, the central bank raises the real rate, and output falls.
Capital stops changing when investment equals depreciation, with \(\bar{s} = 0.4\), \(\bar{d} = 0.1\), \(\bar{A} = 1\): \[0.4\,k^{1/3} = 0.1\,k\]
Step 1. Divide both sides by \(0.1\,k^{1/3}\) (for \(k > 0\)): \[4 = k^{2/3}\]
Step 2. Raise both sides to the power \(3/2\): \[k^* = 4^{3/2} = (\sqrt{4})^3 = \color{#e67e22}{\mathbf{8}} \qquad \text{in general } k^* = \left(\frac{\bar{s}\bar{A}}{\bar{d}}\right)^{3/2}\]
Ch. 5 (equation 5.8)
brentq always finds a root inside an interval where the function changes sign.fsolve needs only a starting guess and also solves systems, but a poor guess can land on the other root, \(k = 0\).Plot investment \(\bar{s}y = 0.4\,k^{1/3}\) and depreciation \(\bar{d}k = 0.1\,k\). Where do they cross, and which is larger to the left of the crossing?
Predict: if capital starts below the crossing, does it rise or fall? And above it?
Model figure: \(\bar{s}\bar{A}k^{1/3}\) and \(\bar{d}k\) with \(\bar{s} = 0.4\), \(\bar{d} = 0.1\), \(\bar{A} = 1\). Adapted from Fig. 5.1 in Jones (2024), Macroeconomics, 6th ed.
Lower the investment rate to \(\bar{s} = 0.3\), with \(\bar{d} = 0.1\) and \(\bar{A} = 1\). What is the new steady state?
\(k^* = (0.3/0.1)^{3/2} = 3^{3/2} = 5.2\): a lower investment rate means a lower steady state.
\[x_{t+1} = a\,x_t + b\]
Step 1. The steady state repeats itself: \(x^* = a\,x^* + b\), so \[x^* = \frac{b}{1-a} \qquad (a \neq 1)\]
Step 2. Subtract the two equations: the gap to the steady state is multiplied by \(a\) each period: \[x_{t+1} - x^* = a\,(x_t - x^*) \;\Rightarrow\; x_t = x^* + a^t\,(x_0 - x^*)\]
Ch. 5 (capital), Ch. 7 (unemployment), Ch. 12–13 (inflation), Ch. 18 (public debt)
| Value of \(a\) | What the gap \(a^t(x_0 - x^*)\) does | Path |
|---|---|---|
| \(0 < a < 1\) | shrinks, keeping its sign | smooth approach |
| \(a = 0\) | vanishes after one period | jumps to \(x^*\) |
| \(-1 < a < 0\) | shrinks, switching sign each period | zigzag approach |
| \(\lvert a \rvert > 1\) | grows without limit | explodes |
\[\text{half-life} = \frac{\ln 0.5}{\ln \lvert a \rvert} \qquad a = 0.8: \;\; \frac{\ln 0.5}{\ln 0.8} = 3.1 \text{ periods}\]
The closer \(\lvert a \rvert\) is to 1, the slower the approach.
def simulate_linear(a, b, x0, periods):
path = [x0]
for period in range(periods):
path.append(a * path[-1] + b) # x_{t+1} = a x_t + b
return np.array(path)
path = simulate_linear(0.8, 1.0, 0.0, 10)
formula = 5 + 0.8 ** np.arange(0, 11) * (0.0 - 5) # x* + a^t (x0 - x*), x* = 1/(1 - 0.8) = 5
print(path.round(3))
print("Largest difference from the formula:", np.abs(path - formula).max())The loop and the formula agree to 15 decimals; the loop also works when the equation is nonlinear.
Three paths start at \(x_0 = 0\) and head for \(x^* = 1\), with \(a = 0.9\), \(a = 0.5\) and \(a = -0.5\). Which is slowest? Which zigzags?
Predict the half-life for each value of \(a\), and what happens with \(a = 0\).
Model figure: \(x_{t+1} = a\,x_t + b\) from \(x_0 = 0\), with \(b = 1 - a\) so that \(x^* = 1\); illustration of a first-order linear difference equation, the form of equations (5.7), (12.5) and (18.2) in Jones (2024), Macroeconomics, 6th ed.
Persistence \(a\) close to 1 means slow adjustment; this is what separates the short run from the long run.
\(x_{t+1} = 0.9\,x_t + 2\), starting from \(x_0 = 0\). Find the steady state, the half-life, and \(x_{10}\). What happens if \(a = 1.1\) instead?
\(x^* = 2/(1 - 0.9) = 20\); half-life \(\ln 0.5/\ln 0.9 = 6.6\) periods; \(x_{10} = 20 + 0.9^{10}(0 - 20) = 13.0\). With \(a = 1.1\), \(\lvert a \rvert > 1\): the path explodes.
Each month a share \(\bar{s}\) of workers lose their job and a share \(\bar{f}\) of the unemployed find one: \[u_{t+1} = u_t + \bar{s}(1 - u_t) - \bar{f}u_t = (1 - \bar{s} - \bar{f})\,u_t + \bar{s}\]
Our linear form with \(a = 1 - \bar{s} - \bar{f}\) and \(b = \bar{s}\). With \(\bar{s} = 0.01\) and \(\bar{f} = 0.20\): \[u^* = \frac{\bar{s}}{\bar{s} + \bar{f}} = \frac{0.01}{0.21} = \color{#e67e22}{\mathbf{4.76\%}} \qquad \text{half-life} = \frac{\ln 0.5}{\ln 0.79} = 2.9 \text{ months}\]
From 10%: 8.90, 8.03, 7.34, … 5.07% after 12 months.
Ch. 7 (the bathtub model, equation 7.4)
Capital follows \(k_{t+1} = k_t + \bar{s}k_t^{1/3} - \bar{d}k_t\): nonlinear. Near \(k^*\) it behaves like a linear equation whose \(a\) is the slope at \(k^*\): \[a = \frac{\partial k_{t+1}}{\partial k_t}\Big|_{k^*} = 1 + \tfrac{1}{3}\bar{s}\,k^{*-2/3} - \bar{d}\]
At the steady state \(\bar{s}k^{*-2/3} = \bar{d}\) (from \(\bar{s}k^{*1/3} = \bar{d}k^*\)), so \[a = 1 - \tfrac{2}{3}\bar{d} = 1 - \tfrac{2}{3}(0.1) = 0.933 \qquad \text{half-life} = \frac{\ln 0.5}{\ln 0.933} = \color{#e67e22}{\mathbf{10.0}} \text{ years}\]
A simulation from \(k_0 = 4\) closes half the gap to \(k^* = 8\) after 11 years (\(k = 6.00\)).
Ch. 5 (Solow dynamics, equation 5.7)
Combine the Phillips curve and the AD curve (with \(\bar{a} = 0\)): \[\pi_t = \pi_{t-1} + \bar{\nu}\widetilde{Y}_t \qquad \widetilde{Y}_t = -\bar{b}\bar{m}\,(\pi_t - \bar{\pi})\]
Substitute and solve for \(\pi_t\): \[\pi_t = a\,\pi_{t-1} + (1 - a)\,\bar{\pi} \qquad a = \frac{1}{1 + \bar{\nu}\bar{b}\bar{m}}\]
With \(\bar{\nu} = \bar{b} = \bar{m} = 0.5\): \(a = 1/1.125 = 0.889\). From 6%: 5.56, 5.16, 4.81, … 3.23% after 10 years, toward \(\bar{\pi} = 2\).
Ch. 12 (equation 12.5), Ch. 13 (equation 13.3)
Step 1. The budget constraint: debt grows with interest \(i\) and the primary deficit \(D_t\): \[B_{t+1} = (1+i)\,B_t + D_t\]
Step 2. Divide by next year’s GDP, \(Y_{t+1} = (1+g)\,Y_t\), with \(b_t = B_t/Y_t\) and \(d = D_t/Y_t\): \[b_{t+1} = \frac{1+i}{1+g}\,b_t + \frac{d}{1+g}\]
Step 3. Linear with \(a = (1+i)/(1+g)\): stable if \(g > i\). The steady state solves \(b(1+g) = (1+i)b + d\): \[b^* = \frac{d}{g - i}\]
Ch. 18 (the government budget constraint, equation 18.2)
U.S. federal debt held by the public was 99.5% of GDP in 2025. With \(i = 3.5\%\), \(g = 4\%\) and a primary deficit of 2.5% of GDP, where is the ratio in 2055?
Predict the 2055 ratio and the steady state \(b^* = d/(g - i)\). Then: what primary balance keeps the ratio at 99.5%?
Data: U.S. Office of Management and Budget, Historical Tables, Table 7.1. Simulation: the budget constraint, equation (18.2) in Jones (2024), with illustrative \(i\), \(g\) and \(d\); the historical line is inspired by Fig. 18.2 in Jones (2024), Macroeconomics, 6th ed.
The answer to the second question: set \(b^* = 99.5\) and solve, \(d = b^*(g - i) = 99.5 \times 0.005 = 0.50\%\) of GDP: a small primary deficit holds the ratio steady.
If taxes cover all spending except interest (\(d = 0\)), the debt-to-GDP ratio stays where it is.
With \(d = 0\) the ratio is multiplied by \((1+i)/(1+g)\) every year: it falls when \(g > i\) (99.5% → 86% by 2055) and grows without limit when \(i > g\).
\[\dot{x} \equiv \frac{dx}{dt} \qquad\qquad g_x = \frac{\dot{x}}{x} = \frac{d \ln x}{dt}\]
The growth rate is the time derivative of the log (chain rule: \(d\ln x/dx = 1/x\)). Then, with no term dropped:
\[\frac{d\ln(xy)}{dt} = \frac{\dot{x}}{x} + \frac{\dot{y}}{y} \qquad \frac{d\ln(x/y)}{dt} = \frac{\dot{x}}{x} - \frac{\dot{y}}{y} \qquad \frac{d\ln x^a}{dt} = a\,\frac{\dot{x}}{x}\]
The cross term \(g_x g_y\) of Act III disappears when time is continuous.
Ch. 15 (DSGE models) and more advanced books
Constant growth: SymPy’s dsolve solves \(\dot{y} = g\,y\) with \(y(0) = y_0\): \[\dot{y} = g\,y \;\Rightarrow\; y(t) = y_0\,e^{gt}\]
The Solow model in continuous time has no simple formula; solve it numerically: \[\dot{k} = \bar{s}\bar{A}\,k^{1/3} - \bar{d}\,k\]
Capital starts at \(k_0 = 1\) and heads for \(k^* = 8\). One version adds a year of net investment at a time; the other updates it at every instant. Which is ahead after 20 years?
Predict the gap between the two paths in year 20, and whether they reach the same steady state.
Model figure: \(k_{t+1} = k_t + 0.4\,k_t^{1/3} - 0.1\,k_t\) and \(\dot{k} = 0.4\,k^{1/3} - 0.1\,k\) from \(k_0 = 1\); illustration of the capital accumulation equation (5.7) in Jones (2024), Macroeconomics, 6th ed., and of its continuous-time version
Solve the continuous-time model with \(\bar{s} = 0.3\). What is the new steady state, and where is \(k\) after 20 years?
\(k^* = (0.3/0.1)^{3/2} = 5.2\); with solve_ivp from \(k_0 = 1\), \(k(20) = 3.89\), still 1.3 below its steady state.
| Tool | Formula | Python | Used in |
|---|---|---|---|
| Linear system | \(Mz = c\) | np.linalg.solve(M, c), sp.solve([...]) |
Ch. 11–13 |
| Root of an equation | \(f(x) = 0\) | optimize.brentq(f, lo, hi), fsolve |
Ch. 5, 7 |
| Solow steady state | \(k^* = (\bar{s}\bar{A}/\bar{d})^{3/2}\) | sp.solve(eq, k) |
Ch. 5 |
| Difference equation | \(x_{t+1} = ax_t + b\), \(x^* = b/(1-a)\) | a for loop; sp.rsolve |
Ch. 5, 7, 12, 13, 18 |
| Solution and stability | \(x_t = x^* + a^t(x_0 - x^*)\), stable if \(\lvert a\rvert < 1\) | simulate_linear(a, b, x0, T) |
Ch. 5, 7, 13 |
| Half-life | \(\ln 0.5/\ln\lvert a\rvert\) | math.log(0.5) / math.log(abs(a)) |
Ch. 5, 7 |
| Natural rate | \(u^* = \bar{s}/(\bar{s} + \bar{f})\) | s / (s + f) |
Ch. 7 |
| Debt dynamics | \(b_{t+1} = \frac{1+i}{1+g}b_t + \frac{d}{1+g}\), \(b^* = \frac{d}{g-i}\) | simulate_linear(...) |
Ch. 18 |
| Continuous growth | \(\dot{x}/x = d\ln x/dt\) | sp.diff(sp.log(x(t)), t) |
Ch. 15+ |
| Differential equation | \(\dot{k} = f(k)\) | integrate.solve_ivp(f, (0, T), [k0]) |
Ch. 15+ |
Act VI
A dollar saved today at the interest rate \(R\) grows to \((1+R)^T\) dollars in \(T\) years. Run it backwards:
\[\text{present discounted value: } \; pdv = \frac{X}{(1+R)^T}\]
Worked example: 100 dollars paid in 10 years, at 4%: \[pdv = \frac{100}{1.04^{10}} = \frac{100}{1.48} = \color{#e67e22}{\mathbf{67.6}}\]
Discounting is compounding in reverse.
Ch. 7 (equation 7.6, human capital), Ch. 16 (consumption), Ch. 17 (investment), Ch. 18 (debt)
Step 1. Write the sum and multiply it by \(a\): \[S = 1 + a + a^2 + \dots + a^n \qquad aS = a + a^2 + \dots + a^{n+1}\]
Step 2. Subtract: everything cancels except the first and the last term: \[S - aS = 1 - a^{n+1} \;\Rightarrow\; S = \frac{1 - a^{n+1}}{1 - a} \quad (a \neq 1)\]
Step 3. With \(a = 1/(1+R) < 1\) and \(n \to \infty\), \(a^{n+1} \to 0\): a perpetuity of 1 from today on is worth \[\frac{1}{1 - \frac{1}{1+R}} = \frac{1+R}{R}\]
Ch. 7 (equations 7.10–7.14)
45 years of 100,000 dollars a year, the first payment today, discounted at \(R = 3\%\): \[pdv = \sum_{j=0}^{44} \frac{100{,}000}{1.03^{\,j}} = 100{,}000 \times \frac{1 - (1/1.03)^{45}}{1 - 1/1.03}\]
R_value, years_working, wage = 0.03, 45, 100_000
by_formula = wage * (1 - (1 / (1 + R_value)) ** years_working) / (1 - 1 / (1 + R_value))
by_sum = np.sum(wage / (1 + R_value) ** np.arange(0, years_working)) # years 0-44
print(f"Formula: {by_formula:,.0f} dollars; sum of 45 discounted payments: {by_sum:,.0f} dollars")Ch. 7 (equations 7.15 and 7.16, human capital)
Twenty yearly payments of 100, the first one today. What are they worth today at \(R = 0\), at \(R = 5\%\) and at \(R = 15\%\)?
Predict the three values. Which payments lose the most value as \(R\) rises: the early ones or the late ones?
Model figure: present values \(100/(1+R)^j\) of 20 yearly payments of 100, \(j = 0, \dots, 19\); illustration of the present discounted value of a stream of payments, equations (7.10)–(7.14) in Jones (2024), Macroeconomics, 6th ed.
Distant payments lose the most value when the interest rate rises.
\[P = \frac{100}{(1+i)^{10}}\]
| \(i\) | 2% | 4% | 6% |
|---|---|---|---|
| price | 82.0 | 67.6 | 55.8 |
When interest rates rise, the prices of existing bonds fall.
\[P = \frac{D}{R - g} \quad \Leftrightarrow \quad \frac{D}{P} = R - g\]
A growing perpetuity, first dividend a year from now. If firms paid out all earnings, the earnings yield \(E/P\) would equal \(R - g\).
Ch. 12, 14 (bond prices and rate hikes), Ch. 17 (equations 17.16 and 17.17, stock prices)
Are U.S. stocks cheap or expensive today? The earnings yield \(E/P\), the inverse of the price-earnings ratio, measures it. Is it above or below its long-run average?
Predict: when in the last 140 years were stocks cheapest (a high earnings yield), and where is the yield now?
Data: Robert Shiller, Online Data (ie_data.xls), cyclically adjusted price-earnings ratio of the S&P composite. Chart inspired by Fig. 17.3 in Jones (2024), Macroeconomics, 6th ed.
The yield moves inversely with stock prices: a price boom is a falling earnings yield.
A project costs 100 today and pays 12 a year for 10 years: \[NPV(R) = -100 + \sum_{j=1}^{10} \frac{12}{(1+R)^{j}} \qquad \text{internal rate of return: } NPV(IRR) = 0\]
Do the project if \(R\) < IRR: higher interest rates make fewer projects worthwhile.
Ch. 17 (investment)
(a) Price of a bond paying 100 in 10 years at \(i = 3\%\)? (b) Value the working life again when wages grow 1% a year: the payment in year \(j\) is \(100{,}000 \times 1.01^j\). (c) A stock pays a dividend of 2 next year, growing 4% a year; \(R = 6\%\). Its price?
(a) \(100/1.03^{10} = 74.4\). (b) About 3.02 million, up from 2.53: wage growth works like a lower interest rate, roughly \(R - g\). (c) \(P = 2/(0.06 - 0.04) = 100\).
| U.S. real GDP growth, 1930–2025 | |
|---|---|
| years | 96 |
| mean | 3.28% |
| median | 3.04% |
| standard deviation | 4.74 |
| min, max | −12.90%, 18.89% |
\[s^2 = \frac{1}{n-1}\sum_{t=1}^{n} (x_t - \bar{x})^2\]
The standard deviation \(s\), the square root of \(s^2\), is the typical distance from the mean: the volatility.
Volatility fell from 2.78 points in 1950–1984 to 1.66 in 1985–2025: the Great Moderation.
Ch. 9 (fluctuations), Ch. 13 (the Great Moderation)
\[\text{corr}(x, y) = \frac{\text{cov}(x, y)}{s_x\,s_y} \in [-1, 1] \qquad \text{least-squares slope} = \frac{\text{cov}(x, y)}{s_x^2}\]
The Phillips curve \(\Delta\pi_t = \bar{\nu}\,\widetilde{Y}_t\) predicts that inflation rises when output is above potential. Test it on U.S. data, 1950–2025:
gap_inflation = potential[["year", "gap_percent"]].merge(cpi[["year", "inflation"]], on="year")
gap_inflation["change_in_inflation"] = gap_inflation["inflation"].diff()
gap_inflation = gap_inflation[gap_inflation["year"] >= 1950]
correlation = gap_inflation["gap_percent"].corr(gap_inflation["change_in_inflation"])
slope, intercept = np.polyfit(gap_inflation["gap_percent"], gap_inflation["change_in_inflation"], 1)
print(f"Correlation: {correlation:.2f}; fitted slope ν = {slope:.2f}")Each point is a year. On the horizontal axis, the output gap; on the vertical axis, the change in inflation. Do the points line up?
Predict the sign of the fitted line, and whether the points will sit close to it or be widely spread.
Data: BEA, Real GDP (GDPCA) and CBO, Real Potential GDP (GDPPOT), via FRED; MeasuringWorth, The Annual Consumer Price Index for the United States. Chart inspired by Fig. 9.6 in Jones (2024), Macroeconomics, 6th ed.; our own chart, built from updated data.
With \(\bar{\nu} = 0.34\), by how much does inflation change in a year when output is 2% above potential? And 4% below?
\(0.34 \times 2 = +0.68\) points; \(0.34 \times (-4) = -1.36\) points.
The correlation is 0.37, so inflation rises 0.37 points for each point of output gap.
The slope (0.34) says how much \(y\) moves with \(x\); the correlation (0.37) says how tightly the points cluster around the line. Measure inflation in tenths of a point and the slope becomes 3.4; the correlation stays 0.37.
Method 1. A straight line through the logs, by least squares: \[\ln y_t = \alpha + \beta\,t \qquad \text{U.S. GDP per person, 1870–2025: } \beta = \color{#e67e22}{\mathbf{1.95}} \text{ log points a year}\]
Method 2. The Hodrick–Prescott filter: a smooth trend \(\tau_t\) that trades off fit against smoothness: \[\min_{\tau} \sum_t (\ln y_t - \tau_t)^2 + \lambda \sum_t (\Delta\tau_{t+1} - \Delta\tau_t)^2 \qquad \Delta\tau_t \equiv \tau_t - \tau_{t-1}\]
With \(\lambda = 100\) (annual data), the HP gap \(100(\ln y_t - \tau_t)\) has a correlation of 0.80 with the CBO output gap, 1950–2025.
Ch. 9 (trend and fluctuations), Ch. 15
The CBO estimates potential output from a production function; the HP filter is purely statistical. Do the two output gaps agree on the timing of booms and recessions? On their size?
Predict: which gap will show the deeper slump after 2008, and why?
Data: BEA, Real GDP (GDPCA) and CBO, Real Potential GDP (GDPPOT), via FRED. Chart inspired by Fig. 9.3 in Jones (2024), Macroeconomics, 6th ed.
Recompute the HP gap with \(\lambda = 10\) and with \(\lambda = 6{,}400\). How does its volatility (standard deviation) change?
Standard deviation of the gap: 1.43 points with \(\lambda = 10\), 1.95 with \(\lambda = 100\), 2.97 with \(\lambda = 6{,}400\) (CBO gap: 2.21). A smoother trend leaves more of the movement to the cycle.
| Tool | Formula | Python | Used in |
|---|---|---|---|
| Present value | \(X/(1+R)^T\) | X / (1 + R) ** T |
Ch. 7, 16, 17, 18 |
| Geometric sum | \(\sum_{j=0}^{n}a^j = \frac{1 - a^{n+1}}{1-a}\) | sp.summation(a**j, (j, 0, n)) |
Ch. 7 |
| Perpetuity (from today) | \((1+R)/R\) | (1 + R) / R |
Ch. 7, 17 |
| Bond price | \(100/(1+i)^{T}\) | 100 / (1 + i) ** T |
Ch. 12, 14 |
| Growing perpetuity | \(P = D/(R - g)\) | D / (R - g) |
Ch. 17 |
| NPV and IRR | \(NPV(R) = -C + \sum_j X_j/(1+R)^j\); \(NPV(IRR) = 0\) | optimize.brentq(npv, lo, hi) |
Ch. 17 |
| Mean, volatility | \(\bar{x}\), \(s\) | s.describe(), s.std() |
Ch. 9, 13 |
| Correlation, slope | \(\text{cov}/(s_x s_y)\), \(\text{cov}/s_x^2\) | s.corr(t), np.polyfit(x, y, 1) |
Ch. 9, 12 |
| Log-linear trend | \(\ln y_t = \alpha + \beta t\) | np.polyfit(t, np.log(y), 1) |
Ch. 3, 9 |
| HP filter | smooth trend, \(\lambda = 100\) (annual) | hpfilter(np.log(y), lamb=100) |
Ch. 9 |
Back to the chapters: every equation you meet uses one of these six acts
GDPCA, B230RC0A052NBEA, A191RD3A086NBEA via FRED; before 1929 the Maddison Project Database 2023 (Bolt and van Zanden 2024). Chart inspired by Figs. 3.2 and 3.5 in Jones (2024).GDPA and GDPCA via FRED. Chart inspired by the growth rules and Fig. 3.9 in Jones (2024).GDPCA, CBO GDPPOT via FRED; MeasuringWorth CPI. Chart inspired by Fig. 9.6 in Jones (2024).GDPCA, CBO GDPPOT via FRED. Chart inspired by Fig. 9.3 in Jones (2024).data/appC/ (BEA and CBO via FRED, MeasuringWorth, OMB, an interest-rate panel from the OECD, FRED (TB3MS), the World Bank and the Global Inflation Database; see the data notes).