# Okun's law in U.S. quarterly data, 1960Q1–2019Q4 (F2-conf-04) ## Question How big is the Okun coefficient β in the linear projection Δu_t = α + β g_t + e_t? Here u_t is the quarterly average of the monthly unemployment rate (pp) and g_t = 100·ln(GDPC1_t/GDPC1_{t−1}) is quarter-on-quarter real GDP growth in percent, not annualised. The disturbances may be serially correlated, so I report a standard error that stays valid in that case. I also test whether β is negative and significantly different from zero at the 5% level. ## Data and exclusions - `data/UNRATE.csv`: 945 monthly rows. `data/GDPC1.csv`: 319 quarterly rows (`n_input_rows`). Both SHA-256 checksums match `data/README.md` (see `out/state/data_audit.md`). - One data issue was found: UNRATE is empty for 2025-10. That month is outside the window, so it does not affect the analysis (`data_issues`). Every quarter from 1959Q4 to 2019Q4 has all 3 monthly observations. - Exclusions (`out/exclusions.csv`), counted in quarters starting from the 319 GDP quarters: - Step 1: keep the levels window 1959Q4–2019Q4. This removes 78 quarters and leaves 241. - Step 2: drop 1959Q4. It only supplies the lagged levels for the 1960Q1 differences, so 1 quarter is removed and 240 remain. - The regression sample therefore runs from `first_quarter` = 1960Q1 to `last_quarter` = 2019Q4, with `n_analysed` = 240. ## Method - **Estimation:** OLS of Δu_t on a constant and g_t (statsmodels). - **Baseline uncertainty:** the conventional iid/homoskedastic standard error (`se_iid`). - **Main uncertainty:** a Newey–West HAC standard error with Bartlett kernel (`se_hac`). - Bandwidth `hac_lags` = 4. This comes from the Newey–West (1994) rule of thumb floor(4·(T/100)^{2/9}) with T = 240, fixed before looking at results. - No small-sample degrees-of-freedom correction is applied, which is the classic Newey–West estimator. - **Confidence interval and test:** the 95% CI is β̂ ± 1.96·se_hac. `okun_negative_5pct` is true only if β̂ < 0 and the two-sided normal test using se_hac has p < 0.05. - **Reproducibility:** the procedure is deterministic, so no seed is needed (`random_seed` = null). Running `out/analysis.py` regenerates `results.json`, `exclusions.csv` and `figure1.png`. ## Results - β̂ = −0.2558 (`beta_hat`): each extra 1% of quarterly real GDP growth goes with an unemployment rate about 0.26 pp lower in that quarter. In annualised-growth units that is roughly −0.064. - α̂ = 0.1844 pp (`alpha_hat`) and R² = 0.408 (`r_squared`). - Together these imply that unemployment is stable when quarterly growth is about 0.72%, i.e. −α̂/β̂ computed from `alpha_hat` and `beta_hat`. - Mean growth over the sample is 0.754% per quarter (`mean_growth`). - The Okun coefficient is negative and statistically significant at the 5% level (`okun_negative_5pct` = true). - `out/figure1.png` shows the scatter of Δu_t against g_t with the fitted line. ## Uncertainty | | SE | 95% CI | |---|---|---| | iid baseline | 0.0200 (`se_iid`) | [−0.2949, −0.2166] (`baseline_ci_iid_low`, `baseline_ci_iid_high`) | | Newey–West, 4 lags | 0.0358 (`se_hac`) | [−0.3260, −0.1855] (`beta_ci_low`, `beta_ci_high`) | - The OLS residuals are positively autocorrelated, with lag-1 autocorrelation 0.39 (`residual_autocorr_lag1`). As a result the HAC SE is about 1.8 times the iid SE. - With the HAC SE, t = −7.14 (`t_hac`) and p ≈ 1e−12 (`p_value_hac`). - **Bandwidth sensitivity** (`se_hac_by_lags`): the HAC SE is 0.029 at 0 lags (heteroskedasticity-robust only), 0.032–0.037 for 1–12 lags, and 0.036 with the degrees-of-freedom correction (`se_hac_lag4_dfcorrected`). The significance conclusion does not change for any bandwidth tried. ## Limitations and open issues - **Data vintage:** the series are current-vintage, revised data, not real-time data, as the task allows. - **Interpretation:** β is a linear-projection coefficient, not a causal or structural parameter. - **Stability over time:** the relation may have shifted within 1960–2019. I did not test for this because the task does not ask for it. - **Asymptotic inference:** the inference relies on asymptotic normality. Bartlett-kernel HAC estimators with small bandwidths can understate uncertainty when persistence is strong. Here the result is far from the significance boundary, so this does not affect the conclusion. - **Completeness:** no part of the task was infeasible (`feasibility` = complete).