Okun's law in the United States, 1960Q1–2019Q4 (task F6-conf-03)
Question
How strongly does the quarterly change in the US unemployment rate (Δu_t, pp) respond to quarterly real GDP growth (g_t = 100·Δln GDPC1, % not annualised), in Δu_t = α + β·g_t + ε_t over 1960Q1–2019Q4, and is (α, β) stable between 1960Q1–1983Q4 and 1984Q1–2019Q4? β is a reduced-form association (an "Okun coefficient"), not a structural causal effect.
Data and exclusions
data/GDPC1.csv(319 rows) anddata/UNRATE.csv(945 rows) (n_input_rows); SHA-256 of both matchdata/README.md(seeout/state/data_audit.md).- Quarterly u_t = mean of the three monthly UNRATE values; a quarter is formed only when all three months are present. The only missing monthly value (2025-10) lies outside the window and has no effect (
data_issues). - Both series run to 2026; everything after 2019Q4 is cut before any computation. The window 1959Q4–2019Q4 holds 241 consecutive complete quarters (
n_window_quarters). Dropping 1959Q4, which is used only as the lagged level, leaves 240 analysed quarters (n_analysed) fromsample_start= 1960-01-01 tosample_end= 2019-10-01.out/exclusions.csvrecords this step (241 − 1 = 240). Subperiods: 96 quarters (n_sub1) and 144 quarters (n_sub2). - The GDP data are the 2026 FRED vintage (chained 2017 dollars), not real-time data (
data_issues).
Method
- Baseline: predict Δu by its sample mean; the RMSE is
baseline_metric. - Main model: full-sample OLS of Δu_t on a constant and g_t. The in-sample residual RMSE is
model_metric. - Standard errors: Newey–West HAC with a Bartlett kernel. The lag length is set by the Newey–West (1994) rule floor(4·(T/100)^{2/9}), which gives 4 quarters for T = 240 (
hac_lags). No small-sample df correction is applied. The 95% CI is β ± 1.96·SE (normal approximation). - Stability: separate OLS fits on each subperiod (
beta_sub1,beta_sub2). Classical Chow F = [(SSR_pooled − SSR_1 − SSR_2)/2] / [(SSR_1 + SSR_2)/(n − 4)], with df (2, 236) (chow_df). Supplementary check: a HAC Wald test in a fully interacted model with a 1984Q1 dummy (hac_wald_joint_p,hac_wald_slope_diff_p,hac_wald_intercept_diff_p). - Deliverables:
out/table1.csv(full sample and both subperiods; the subperiod slope SEs are HAC with NW-rule lags,hac_lags_sub1,hac_lags_sub2) andout/figure1.png, both written byout/analysis.py. No randomness is used (random_seed= null).
Results
- Full sample: β = −0.256 (
effect_estimate) and α = 0.184 pp (intercept). Each extra 1% of quarterly real GDP growth goes with about a 0.26 pp smaller rise in the unemployment rate in the same quarter. The growth rate at which unemployment is flat is about 0.98% per quarter before 1984 (okun_growth_sub1) and 0.55% after (okun_growth_sub2). - Fit: residual RMSE is 0.250 pp (
model_metric) against 0.325 pp for the mean-only baseline (baseline_metric); R² = 0.41 (r_squared). - Subperiod slopes are almost the same: −0.259 for 1960–1983 (
beta_sub1) and −0.273 for 1984–2019 (beta_sub2). Intercepts are 0.254 (intercept_sub1) and 0.152 (intercept_sub2). - Chow test: F = 6.09 (
chow_f_stat), p = 0.0026 (chow_p_value), which rejects joint equality of (α, β) at 5%. The task's coding rule therefore givesstability_conclusion= "unstable". The rejection concerns the (α, β) pair jointly. The slope point estimates hardly differ, and the HAC test of the slope difference alone gives p = 0.85 (hac_wald_slope_diff_p). What shifted is mainly the fitted line's level, i.e. the growth rate consistent with stable unemployment. However, the HAC test of the intercept alone is also not significant (p = 0.25,hac_wald_intercept_diff_p). The joint HAC test still rejects (p = 0.0042,hac_wald_joint_p) because the intercept and slope estimates are strongly correlated. conclusion= "negative_effect": the 95% CI lies entirely below zero.
Uncertainty
- HAC SE of β = 0.0358 (
effect_se, 4 lags). 95% CI: [−0.326, −0.186] (effect_ci_low,effect_ci_high). - The classical OLS SE is 0.0200 (
ols_classical_se), so allowing for heteroskedasticity and autocorrelation makes the SE about 1.8 times larger. - Sensitivity to the lag length (
hac_se_by_lag): 0.029 (0 lags), 0.034 (2), 0.036 (4), 0.037 (8), 0.036 (12). The sign conclusion holds for every lag length. - Subperiod HAC SEs: 0.039 (
beta_sub1_hac_se) and 0.068 (beta_sub2_hac_se).
Limitations and open issues
- The classical Chow test's assumptions are probably violated. It assumes homoskedastic, serially uncorrelated errors with equal variance in both subperiods. Three things point the other way: HAC SEs are clearly larger than classical ones, residual variance probably differs between the two periods (Great Moderation), and there are visible large-residual quarters (e.g. 1980, 2008–09). The F-test's size may therefore be off. The HAC Wald test also rejects jointly (
hac_wald_joint_p), which supports the rejection. But I did not test variance equality and did not run a Chow test with unequal variances. - The "unstable" verdict depends on the break date. The split at 1984Q1 is imposed. I did not search over break dates (no Quandt–Andrews or Bai–Perron test). The instability is in the intercept/slope pair, not in the slope point estimate, so it should not be read as "Okun's coefficient changed".
- Specification threats. The model is static and contemporaneous, with no lags of g or Δu. Okun dynamics, a trend-growth slowdown (which shows up as an intercept shift), and possible nonlinearity or asymmetry between recessions and expansions were not modelled. Measurement error in quarterly GDP growth would bias β towards zero. Simultaneity means β is not causal.
- Data vintage. The 2026 vintage GDPC1 includes benchmark revisions. Real-time estimates would differ, and I did not check how sensitive the results are to vintage.
- Inference choices. The lag rule is ad hoc, but results barely change with lag length. The CI uses a normal rather than t approximation (negligible difference at n = 240). With only 96 and 144 quarters, the subperiod HAC SEs are less reliable.
- What would invalidate the result: errors in quarterly aggregation (checked by independent recomputation, see
out/state/checks.md), any leakage of post-2019 data (excluded by construction and assertions), or a different definition of g (e.g. annualised, which would scale β by 1/4).