A century at 3% instead of 1% leaves a country seven times richer

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.

Six questions, six families of tools

  • I. Reading and measuring change: how do we read an equation and measure a change?
  • II. Compound growth and logs: how does growth compound?
  • III. Growth rules and approximations: when is “≈” good enough?
  • IV. Derivatives and optimization: how do firms and households choose?
  • V. Equations and dynamics: how do we solve a model and follow it over time?
  • VI. Valuing the future and reading data: what is the future worth today?

Each tool: intuition → formula → worked example, step by step → graph → your turn → where the book uses it.

Reading and measuring change

Act I

A few marks tell you what kind of thing each symbol is

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.

An equation is a sentence: output falls when the interest rate is high

\[\widetilde{Y}_t = \bar{a} - \bar{b}\,(R_t - \bar{r})\]

  • \(\widetilde{Y}_t\): short-run output, the outcome (percent above or below potential).
  • \(R_t - \bar{r}\): how far the real interest rate is above its long-run value \(\bar{r}\).
  • \(\bar{b}\): how strongly spending reacts to that gap; \(\bar{a}\): a demand shock.

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)

Worked example: which interest rate closes the output gap?

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\%}}\]

Reading the IS curve off a graph

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\).

Each point on the IS curve pairs a real rate with an output gap

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.

A higher rate moves the economy down and to the left of the IS curve

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.

A percent change is not a change in percentage points

\[\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 rose 1 percent” is the wrong way to say it

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.

Points or percent? Practice both

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.

An index sets a base year to 100; rebasing just divides

\[\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)

pandas rebases a whole price series in one line

cpi = pd.read_csv(DATA_URL + "us_cpi.csv")
cpi_2025 = cpi.loc[cpi["year"] == 2025, "cpi"].iloc[0]
cpi["cpi_2025"] = 100 * cpi["cpi"] / cpi_2025         # rebase: now 2025 = 100
cpi["inflation"] = 100 * cpi["cpi"].pct_change()      # percent change from the year before
cpi.tail(3)
     year     cpi    cpi_2025  inflation
249  2023  304.70   94.644965   4.113989
250  2024  313.69   97.437411   2.950443
251  2025  321.94  100.000000   2.629985

Rebasing is a division by one number; inflation is .pct_change(), the percent change from the year before.

A century of inflation

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.

U.S. prices have both soared and fallen since 1914

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.

The peak came in 1917 and the deepest deflation in 1921

  • Highest inflation: 20.5% in 1917; lowest: −10.7% in 1921, right after the World War I boom.
  • Deflation again in the early 1930s; bursts of inflation in 1947, around 1980 and in 2022 (8.0%).
  • Inflation is the percent change of the index, so it does not depend on the base year.

Inflation is a growth rate: the percent change of a price index.

Nominal GDP divided by real GDP gives the price level

\[\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)

Annualizing: a monthly change compounds over 12 months

\[\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)

Practice: real values and annual rates

(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.

Act I formula sheet: reading and measuring change

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

Compound growth and logs

Act II

Five exponent rules do most of the work in growth models

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)

Exponential growth: the same percent each year, more dollars each year

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)

Worked example: a century of growth at 1%, 2% and 3%

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.

Two economies, two growth rates

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?

The faster economy pulls away more every year

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.

Two points of growth make a sevenfold gap in a century

  • The answer: B ends at 19.2 times its start, A at 2.7: B is about 7 times richer, not 3.
  • At 4% a year, B reaches 50.5 times its start: one more point of growth multiplies the century’s gain by 2.6.
  • With 1% growth, income less than triples in a century.

Small differences in growth rates become large differences in income.

The Rule of 70: doubling time ≈ 70 divided by the growth rate in percent

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)

The Rule of 70 is excellent for the growth rates of GDP per person

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.

Practice: doubling and multiplying

(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.

A logarithm undoes an exponent

\[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.

Python checks the log rules with letters and with numbers

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 again
log(x) + log(y)
log(x) - log(y)
a*log(x)
2.70805020110221 2.70805020110221
3.0 42.00000000000001

SymPy writes the natural log as log; np.log is \(\ln\) and np.log10 the base-10 log.

Practice: expand a 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\).

On a ratio scale, constant growth is a straight line

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

150 years of U.S. income on two scales

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?

U.S. income grew at a nearly constant rate for 150 years

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.

The ratio scale shows steady growth of 1.9% a year

  • On the ratio scale the line is nearly straight: growth averaged 1.9% a year from 1870 to 2025.
  • On the linear scale the same steady growth bends upward, because each year adds more dollars.
  • The ratio scale shows the Great Depression as the deepest dip; on the linear scale 2008–09 looks as large, though it was much milder in percent.

To compare growth over time, use a ratio scale.

A curve that gets steeper on a linear chart does not mean faster growth

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.

Practice: average growth since 1950

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.

Act II formula sheet: compound growth and logs

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

Growth rules and approximations

Act III

Three ways to measure growth give three slightly different numbers

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

The mean of yearly growth rates overstates growth

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%).

Practice: a good year and a bad year

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.

Three growth rules: products add, ratios subtract, powers multiply

\[\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)

Why “approximately”: the product rule drops a tiny cross term

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).

Worked example: the growth of \(Y = A K^{1/3} L^{2/3}\)

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)

Worked example: the quantity theory in growth rates

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)

Practice: the power and ratio rules

(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%.

Testing the product rule on U.S. data

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?

Nominal growth ≈ real growth + inflation, almost every year

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.

The rule fails only when growth and inflation are both large

  • The largest gap: 1.51 points in 1932, when output and prices both collapsed.
  • In 2025: nominal growth 5.04%, real growth + inflation 4.98%, a gap of a few hundredths of a point.
  • The dropped term is \(g_{\text{real}} \times \pi\): small when both rates are a few percent.

For normal growth and inflation rates, the growth rules are all you need.

The growth of a ratio is a difference, not a ratio

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.

Near any point, a smooth curve looks like a straight line

\[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)

Where the 70 comes from

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.

How good is \(\ln(1+x) \approx x\)?

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\)?

The log approximation is close for small \(x\) and drifts for large \(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.

Up to \(x = 0.10\) the error is under 5% of \(x\); at \(x = 1\) it is 31%

\(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.

The Fisher equation \(R \approx i - \pi\) breaks down at high inflation

\[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

The output gap in percent is close to a log difference

\[\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

Log points and percent are the same only for small changes

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%.

Practice: exact or approximate?

(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\%\).

Act III formula sheet: growth rules and approximations

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

Derivatives and optimization

Act IV

A derivative is a slope: the change in \(f\) per unit change in \(x\)

\[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.

Worked example: the slope of \(y = k^{1/3}\) at \(k = 1\) and \(k = 8\)

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}\))

Partial derivatives give the marginal products of \(K\) and \(L\)

\[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

A numerical derivative: shrink the step \(h\) until the slope settles

def y_per_person(k):
    return k ** (1 / 3)                     # y = k^(1/3), equation (5.6) with A = 1

k0 = 8.0
for h in [1, 0.1, 0.01, 0.001]:
    print(f"h = {h:<6}: slope = {(y_per_person(k0 + h) - y_per_person(k0)) / h:.5f}")
print(f"exact      : slope = {(1 / 3) * k0 ** (-2 / 3):.5f}")
h = 1     : slope = 0.08008
h = 0.1   : slope = 0.08299
h = 0.01  : slope = 0.08330
h = 0.001 : slope = 0.08333
exact      : slope = 0.08333

When a function has no formula, \([f(x+h) - f(x)]/h\) with a small \(h\) gives its slope.

Tangents to the production function

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.

The marginal product falls as capital rises

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.

The slope at \(k = 8\) is a quarter of the slope at \(k = 1\)

  • The answer: 0.333 at \(k = 1\) and 0.083 at \(k = 8\), so the tangent at \(k = 8\) is 4 times flatter (\(8^{2/3} = 4\)).
  • Output doubles from 1 to 2 while capital rises eightfold: diminishing returns.
  • Far to the right the tangent is almost flat: extra capital adds almost nothing.

Diminishing returns are a falling derivative.

Practice: slopes and marginal utility

(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\).

Each exponent of a Cobb-Douglas function is an elasticity

\[\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)

Constant returns: double both inputs, and output doubles

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)

Practice: elasticities and returns to scale

(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.

The exponent 1/3 is not the marginal product of capital

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\).

At the top of a hill, the slope is zero

\[\text{first-order condition: } f'(x^*) = 0 \qquad\qquad \text{second-order condition: } f''(x^*) < 0\]

  • Left of the peak the slope is positive; right of it, negative; at the peak, zero.
  • The second-order condition checks it is a maximum: the slope falls as you pass through \(x^*\).
  • Recipe: differentiate, set to zero, solve for \(x^*\), check the sign of \(f''\).

Ch. 4 (firms hire), Ch. 16 (households consume), Ch. 17 (firms invest)

Worked example: a firm hires until the marginal product equals the wage

\(\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}\]

SymPy and SciPy agree: hire 8 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}")
Workers hired when w = 2/3: 8
Second derivative at that point: -1/36
minimize_scalar: L* = 8.0000, profit = 2.6667

SciPy’s optimizers minimize, so maximize profit by minimizing minus the profit.

Practice: a higher wage

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\).

A household chooses consumption today and tomorrow

\[\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}\]

  • \(\beta\): patience; a smaller \(\beta\) means the future counts for less.
  • \(\bar{X}\): lifetime wealth, in today’s dollars.
  • Future consumption costs \(1/(1+R)\) today: saving one dollar returns \(1+R\).

Ch. 16 (equation 16.5, the two-period model)

Method 1: substitute the budget constraint into utility

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).

Method 2: the Lagrangian gives the Euler equation

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)

The household’s best choice

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.

Lifetime utility peaks where its slope is zero

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.

The household consumes a little more than half today

  • The answer: \(c_{\text{today}} = 100/1.96 =\) 51.0, a bit more than half, because \(\beta = 0.96 < 1\).
  • The Euler equation: \(c_{\text{future}}/c_{\text{today}} = 0.96 \times 1.05 = 1.008\).

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.

A zero derivative can also be a minimum

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.

Act IV formula sheet: derivatives and optimization

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

Equations and dynamics

Act V

The short-run model is three linear equations in three unknowns

\[\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)

NumPy solves the system in one line

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}%")
Output gap -1.778%, real rate 1.556%, inflation 1.111%

The shock opens a gap of −1.8%, inflation falls below target, and the central bank cuts the real rate below \(\bar{r}\).

With letters, the solution shows how the policy rule softens a shock

\[\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}}\]

  • A negative demand shock \(\bar{a}\), inflation inherited above target, or a price shock \(\bar{o}\) lower output.
  • The factor \(1/(1 + \bar{b}\bar{m}\bar{\nu})\) shrinks every shock: here \(1/1.125\), so \(\bar{a} = -2\) gives \(-1.778\).
  • Letters show which parameters matter; numbers come last.

sp.solve([IS, MP, AS], [Y, R, pi]) returns this formula.

Practice: a price shock instead of a demand shock

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.

Worked example: the Solow steady state by hand

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)

When there is no formula, a root finder searches for the zero

def net_investment(k):
    return 0.4 * k ** (1 / 3) - 0.1 * k              # s A k^(1/3) - d k

print("brentq:", optimize.brentq(net_investment, 1, 100))   # needs a sign change in [1, 100]
print("fsolve:", optimize.fsolve(net_investment, 5)[0])     # needs a starting guess
brentq: 8.0
fsolve: 7.999999999999998
  • 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\).

Investment and depreciation

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?

The steady state is where investment meets depreciation

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.

Left of \(k^*\) capital grows; right of it capital shrinks

  • The answer: the curves cross at \(k^* = 8\), where investment = depreciation = 0.8.
  • Below \(k^*\) investment exceeds depreciation, so \(k\) rises; above \(k^*\) it falls. Either way, \(k\) moves toward 8.

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.

A difference equation says how today’s value depends on yesterday’s

\[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)

Stability depends on \(a\): the gap shrinks only if \(\lvert a \rvert < 1\)

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.

A loop simulates any difference equation

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())
[0.    1.    1.8   2.44  2.952 3.362 3.689 3.951 4.161 4.329 4.463]
Largest difference from the formula: 1.7763568394002505e-15

The loop and the formula agree to 15 decimals; the loop also works when the equation is nonlinear.

Stability and speed

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\).

The value of \(a\) sets both the speed and the shape of the path

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.

Half-lives from the slider: 6.6, 3.1, 1.0 and 0.6 periods

  • The answer: \(a = 0.9\) is slowest, half-life 6.6; \(a = 0.8\): 3.1; \(a = 0.5\): 1.0; \(a = 0.3\): 0.6.
  • \(a = -0.5\) and \(a = -0.8\) zigzag around \(x^*\), with half-lives of 1.0 and 3.1: the size of \(a\) sets the speed, its sign the shape.
  • \(a = 0\): \(x\) reaches \(x^*\) after one period.

Persistence \(a\) close to 1 means slow adjustment; this is what separates the short run from the long run.

Practice: steady state and half-life

\(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.

Example: unemployment converges to its natural rate within months

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)

Example: the Solow model closes half its gap in about a decade

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)

Example: disinflation is a difference equation in inflation

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)

The debt ratio is a difference equation too

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)

Simulating U.S. public debt

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%?

A deficit of 2.5% of GDP takes U.S. debt to 153% by 2055

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.

With \(g\) only half a point above \(i\), the steady state is 500% of GDP

  • The answer: 153% in 2055, still far from the steady state \(2.5/0.005 =\) 500%: the ratio keeps rising for decades.
  • A balanced primary budget (\(d = 0\)) brings the ratio down to 86% by 2055; a surplus of 2% to 32%.

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.

A balanced primary budget does not freeze the debt ratio

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\).

In continuous time, the growth rules are exact

\[\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

Discrete or continuous time?

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.

Both versions of the Solow model reach \(k^* = 8\)

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

The two paths differ by 0.05 after 20 years

  • The answer: in year 20, 5.80 (discrete) versus 5.75 (continuous). The discrete path runs slightly ahead; both reach 8.
  • Discrete and continuous time give the same economics; the choice is one of convenience.

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.

Act V formula sheet: equations and dynamics

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+

Valuing the future and reading data

Act VI

A dollar in the future is worth less than a dollar today

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)

A stream of equal payments is a geometric series with a closed form

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)

Worked example: a working life is worth 2.53 million dollars

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")
Formula: 2,525,427 dollars;  sum of 45 discounted payments: 2,525,427 dollars

Ch. 7 (equations 7.15 and 7.16, human capital)

The present value of a stream

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?

Higher interest rates shrink distant payments the most

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.

At 15%, twenty payments of 100 are worth only 720 today

  • The answer: 2,000 at \(R = 0\), 1,309 at 5%, 720 at 15%.
  • The payment in year 0 is always worth 100; the one in year 19 is worth \(100/1.15^{19} \approx 7\) at 15%.
  • So the value of long-lived assets (houses, firms, bonds, human capital) is very sensitive to interest rates.

Distant payments lose the most value when the interest rate rises.

Bonds and stocks are present values too

A bond paying 100 in 10 years

\[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.

A stock whose dividend grows at \(g\)

\[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)

The earnings yield of U.S. stocks

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?

Stocks are expensive: the earnings yield is far below its average

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.

A low earnings yield means a low expected return or fast expected growth

  • Now: 2.5% (October 2026), versus 6.7% on average since 1881.
  • High yields (cheap stocks): around 1920, in 1932 and in the early 1980s. Low yields: around 2000, in 2021 and now.
  • By \(E/P = R - g\): investors either accept a low return \(R\) or expect fast earnings growth \(g\).

The yield moves inversely with stock prices: a price boom is a falling earnings yield.

An investment pays off if its return beats the interest rate

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\]

def npv(rate):
    return -100 + np.sum(12 / (1 + rate) ** np.arange(1, 11))

print(f"NPV at 3%: {npv(0.03):.2f};  NPV at 5%: {npv(0.05):.2f}")
print(f"Internal rate of return: {100 * optimize.brentq(npv, 0.0001, 0.5):.2f}%")
NPV at 3%: 2.36;  NPV at 5%: -7.34
Internal rate of return: 3.46%

Do the project if \(R\) < IRR: higher interest rates make fewer projects worthwhile.

Ch. 17 (investment)

Practice: bonds, wages and stocks

(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\).

Three numbers summarize a series: its mean, median and volatility

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)

Correlation measures how tightly two series move together

\[\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}")
Correlation: 0.37;  fitted slope ν = 0.34

The Phillips curve in the data

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.

Inflation tends to rise when output is above potential

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.

The slope is positive but the points are widely spread

  • The answer: a positive slope, 0.34, and a correlation of 0.37, positive but far from 1.
  • Other forces move inflation too: oil prices and expectations (Chapters 12 and 13).

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.

A correlation is not a slope

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.

Two ways to split GDP into a trend and a cycle

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

Two estimates of the output gap

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?

The two gaps move together but differ in size

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.

Every estimate of potential output is a model, not a fact

  • The answer: same timing (correlation 0.80), but the HP trend follows the data more closely, so its gaps are smaller and it sees less of a slump after 2008.

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.

Act VI formula sheet: valuing the future and reading data

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

What to take away from the math review

  • Measure change carefully: percent vs. points, index numbers, real vs. nominal, annual rates.
  • Growth compounds: \(y_t = y_0(1+\bar{g})^t\), the Rule of 70, logs and the ratio scale.
  • Growth rules turn products, ratios and powers into sums; approximations work for small rates and fail at extremes.
  • Derivatives give marginal products and elasticities; optima have a zero slope.
  • Equations and difference equations give equilibria and paths; stability needs \(\lvert a \rvert < 1\).
  • Present value turns future payments into one number today; statistics test the models.

A handful of tools carries every model in the book: most describe growth and change, and their simple approximations hold for small rates but break at extremes

Back to the chapters: every equation you meet uses one of these six acts

Sources: the live figures

  • IS curve. Illustration of the IS curve, equation (11.14) in Jones (2024).
  • U.S. inflation since 1914. 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).
  • Two growth rates. Illustration of the constant-growth rule, equation (3.7) in Jones (2024).
  • U.S. GDP per person on a ratio scale. Data: BEA 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).
  • The product rule in U.S. data. Data: BEA GDPA and GDPCA via FRED. Chart inspired by the growth rules and Fig. 3.9 in Jones (2024).
  • \(\ln(1+x) \approx x\). Illustration of the approximation used throughout Jones (2024).
  • Tangents to \(y = k^{1/3}\). Illustration of the production function (5.6) and its marginal product, Chapters 4 and 5 of Jones (2024).
  • The household’s choice. Illustration of the household’s problem, equation (16.5) in Jones (2024).
  • Solow steady state. Adapted from Fig. 5.1 in Jones (2024).
  • Stability and speed. Illustration of a first-order linear difference equation, the form of equations (5.7), (12.5) and (18.2) in Jones (2024).
  • U.S. public debt. Data: U.S. Office of Management and Budget, Historical Tables, Table 7.1. Simulation of equation (18.2); historical line inspired by Fig. 18.2 in Jones (2024).
  • Discrete and continuous Solow. Illustration of equation (5.7) in Jones (2024) and its continuous-time version.
  • Present value of a stream. Illustration of equations (7.10)–(7.14) in Jones (2024).
  • Earnings yield. Data: Robert Shiller, Online Data (CAPE of the S&P composite). Chart inspired by Fig. 17.3 in Jones (2024).
  • Phillips curve scatter. Data: BEA GDPCA, CBO GDPPOT via FRED; MeasuringWorth CPI. Chart inspired by Fig. 9.6 in Jones (2024).
  • Two output gaps. Data: BEA GDPCA, CBO GDPPOT via FRED. Chart inspired by Fig. 9.3 in Jones (2024).

Sources: data, textbook and further reading