# Okun's law in U.S. quarterly data, 1960Q1–2019Q4 ## Question Estimate β in Δu_t = α + β g_t + e_t, where u_t is the quarterly mean of monthly UNRATE (pp), Δu_t = u_t − u_{t−1}, and g_t = 100·ln(GDPC1_t/GDPC1_{t−1}) (percent, quarter-on-quarter, not annualised), over the 240 quarters 1960Q1–2019Q4. Uncertainty must hold up when the errors are serially correlated. ## Data and exclusions - `data/UNRATE.csv` (945 monthly rows) and `data/GDPC1.csv` (319 quarterly rows), current FRED vintage, used as given. - I computed quarterly unemployment as the mean of the three monthly values in each quarter. The code checks that every quarter from 1959Q4 to 2019Q4 has all three months and a GDP value. Only the 1959Q4 levels from outside the window are used, as the base for the 1960Q1 differences. - Data issue: UNRATE has one empty value, at 2025-10. That is outside the window, so it was dropped and does not affect the analysis. No duplicate dates. - Sample: 1960Q1–2019Q4, n = 240. No other exclusions. ## Method - OLS of Δu_t on a constant and g_t. - Naïve standard error: the conventional OLS standard error, which assumes independent, equal-variance (homoskedastic) errors. - Robust standard error: Newey–West HAC, which allows for both autocorrelation and unequal error variance. It uses Bartlett-kernel weights with **4 lags**, set by the Newey–West (1994) rule of thumb floor(4·(T/100)^{2/9}) with T = 240. I fixed this rule before seeing the results. It fits the data: the OLS residuals have autocorrelations of 0.39, 0.29, 0.14 and 0.07 at lags 1–4, so the dependence has mostly died out by lag 4. No small-sample degrees-of-freedom correction is applied. With the n/(n−k) correction the SE is 0.0360 instead of 0.0358. - 95% CI = β̂ ± 1.96·SE_HAC, using normal (asymptotic) critical values. The test is two-sided at the 5% level. ## Results | quantity | value | |---|---| | β̂ (Okun coefficient) | −0.2558 | | α̂ | 0.1844 | | R² | 0.408 | | SE (iid) | 0.0200 | | SE (HAC, 4 lags) | 0.0358 | | 95% HAC CI | [−0.326, −0.186] | | HAC t-stat / p-value | −7.14 / 9.5e−13 | | mean g_t | 0.754 % per quarter | A 1-percentage-point higher quarterly real GDP growth (not annualised) goes with a 0.256 pp fall in the unemployment rate that quarter. The implied growth rate that keeps unemployment unchanged is −α̂/β̂ ≈ 0.72 % per quarter, close to the sample mean growth of 0.75 %. Over this sample, β is **negative and significantly different from zero at the 5% level** (`okun_negative_5pct = true`). Figure: `out/figure1.png`. ## Uncertainty The HAC SE is about 1.8 times the naïve iid SE (0.0358 vs 0.0200), so the iid SE overstates precision. Part of the gap is heteroskedasticity: the heteroskedasticity-robust SE with 0 lags is 0.0288. The rest is the positive residual autocorrelation. The HAC SE barely changes with the choice of bandwidth: | lags | 0 | 1 | 2 | 4 | 6 | 8 | 12 | 16 | |---|---|---|---|---|---|---|---|---| | SE | 0.0288 | 0.0324 | 0.0342 | 0.0358 | 0.0369 | 0.0371 | 0.0364 | 0.0341 | So the conclusion holds for any bandwidth from 0 to 16 lags: the largest SE (0.0371) still gives |t| > 6. ## Limitations and open issues - The data are the current vintage, not real-time. GDP revisions may differ from the values originally published. - β is a linear-projection coefficient, not a causal effect. Unemployment's response to growth is spread over several quarters (consistent with the residual autocorrelation), and this contemporaneous regression does not model those dynamics. - The relationship may not be stable over time (e.g., across decades or recessions). I did not test for this. The 2020 COVID observations are excluded by design. - The HAC inference is asymptotic: it uses normal critical values and its HAC confidence intervals can undercover somewhat in finite samples. Given t ≈ −7, this does not affect the conclusion.