REAL-TIME FORECAST RECORD
1 scored
-1 archived round
+2 archived rounds
- Observation
- current scorecard
- Vintage
- generated scorecard
- Data edge
- 2026Q1
- Periods
- 4
- Scored
- 0
One round in, one result.
- Next due: 2026Q2 (UK real GDP, y/y), which lands when the ONS publishes it. + Next due: 2026Q2 (UK real GDP, y/y, unemployment), which lands when the ONS publishes it.
@@ -153,6 +153,16 @@
What was claimed, and when.
Download artifact ·2026-07-21/boe-svar.json →
Open on GitHub with commit history →
+ -
+
2026-07-28/okun-unemployment.json →
+ Open on GitHub with commit history →
+ diff --git a/forecasts/outturns.json b/forecasts/outturns.json index d5f4f80..ec68681 100644 --- a/forecasts/outturns.json +++ b/forecasts/outturns.json @@ -23,6 +23,12 @@ "publisher": "ONS", "dataset": "D7G7 (CPI 12-month rate), quarterly average", "typical_release_lag": "~3 weeks after month end" + }, + "unemployment": { + "series": "UK unemployment rate (aged 16+, SA), level", + "publisher": "ONS", + "dataset": "MGSX, quarterly", + "typical_release_lag": "~7 weeks after quarter end (LFS)" } }, "observations": [ @@ -35,4 +41,4 @@ "release_updated": "2026-07-21T23:00:00.000Z" } ] -} +} \ No newline at end of file diff --git a/forecasts/rounds/2026-07-28/okun-unemployment.json b/forecasts/rounds/2026-07-28/okun-unemployment.json new file mode 100644 index 0000000..b12a162 --- /dev/null +++ b/forecasts/rounds/2026-07-28/okun-unemployment.json @@ -0,0 +1,72 @@ +{ + "schema_version": 1, + "round_id": "2026-07-28", + "archived_utc": "2026-07-28T08:27:48Z", + "model": { + "name": "okun-unemployment", + "description": "Okun's-law satellite: deterministic mapping of the boe-svar UK GDP growth forecast to the ONS unemployment rate (MGSX). Fit du_t = alpha + beta*g_t + gamma*du_{t-1} by OLS on 1992Q1-2025Q1 with 2020Q1-2021Q2 dummied out (furlough decoupled unemployment from GDP): alpha=0.0611, beta=-0.0474, gamma=0.1871, sigma=0.172pp, n=123, R2=0.368.", + "source_pipeline": "PolicyEngine/boe-var-model src/boe_var/okun.py at main (PR #8, merge 302f7ec)", + "generated": "2026-07-28" + }, + "information_set": { + "data_edge": "2026Q1", + "forecast_start": "2026Q2", + "first_period": "2026Q2", + "last_period": "2027Q1", + "gdp_input": "archived round forecasts/rounds/2026-07-21/boe-svar.json (data edge 2026Q1)", + "unemployment_input": "ONS MGSX through 2026Q1 (u=5.0, du=-0.2), vintage 2026-07-26" + }, + "units": "percent, unemployment rate level", + "variables": [ + "unemployment" + ], + "caveats": [ + "Horizon capped at 4 quarters: the rolling-origin validation (boe-var-model results/okun_validation.json) shows the end-to-end SVAR->Okun forecast beats a random walk at horizons 1-4 ex-COVID (RMSE ratios 0.82-0.99) and is clearly worse beyond 4 quarters.", + "The improvement over no-change is not statistically significant at 73 overlapping origins (Diebold-Mariano p >= 0.14).", + "Bands carry GDP-forecast uncertainty only, mapped through the deterministic Okun equation; Okun residual uncertainty (sigma 0.17pp per quarter) is NOT sampled, so the stated bands understate total uncertainty." + ], + "benchmarks": { + "random_walk": null, + "drift": null, + "ar1": null, + "official": null + }, + "forecast": { + "2026Q2": { + "unemployment": { + "median": 4.9714, + "lo68": 4.9447, + "hi68": 4.9976, + "lo90": 4.9304, + "hi90": 5.0146 + } + }, + "2026Q3": { + "unemployment": { + "median": 4.9626, + "lo68": 4.8897, + "hi68": 5.0333, + "lo90": 4.8507, + "hi90": 5.0828 + } + }, + "2026Q4": { + "unemployment": { + "median": 4.9405, + "lo68": 4.8137, + "hi68": 5.0744, + "lo90": 4.7354, + "hi90": 5.1609 + } + }, + "2027Q1": { + "unemployment": { + "median": 4.9332, + "lo68": 4.7351, + "hi68": 5.1395, + "lo90": 4.611, + "hi90": 5.2693 + } + } + } +} \ No newline at end of file diff --git a/forecasts/scorecard.json b/forecasts/scorecard.json index 9e29954..b67efc4 100644 --- a/forecasts/scorecard.json +++ b/forecasts/scorecard.json @@ -1,12 +1,13 @@ { "_comment": "Generated by forecasts/score.py \u2014 do not edit by hand.", - "rounds": 1, + "rounds": 2, "periods_scored": 1, "next_period_to_score": "2026Q2", "pending_detail": { "period": "2026Q2", "variables": [ - "gdp" + "gdp", + "unemployment" ] }, "status": "1 forecast period(s) scored", @@ -41,6 +42,17 @@ "coverage_90": 1.0 } } + }, + { + "round_id": "2026-07-28", + "model": "okun-unemployment", + "data_edge": "2026Q1", + "archived_utc": "2026-07-28T08:27:48Z", + "path": "forecasts/rounds/2026-07-28/okun-unemployment.json", + "periods_forecast": 4, + "periods_scored": 0, + "entries": [], + "by_variable": {} } ] } diff --git a/index.html b/index.html index 8257aed..efe11ce 100644 --- a/index.html +++ b/index.html @@ -100,7 +100,7 @@
Latest outturns beside the model's near-term view.
Against a Bank of England paper, and against outturns.
inflation, and the single frozen-edge result must not be read as broad GDP forecast superiority. ++ Unemployment satellite. The unemployment rate is not + one of the eight VAR variables; the published unemployment outlook is + an Okun's-law satellite — a small regression of the quarterly change + in the ONS unemployment rate on year-on-year GDP growth (fit + 1992Q1–2025Q1 with the furlough quarters 2020Q1–2021Q2 + dummied out, since they decouple unemployment from GDP and attenuate + the coefficient about threefold). In a 73-origin rolling test fed by + the VAR's own GDP forecasts, it beats a no-change benchmark at + horizons 1–4 excluding furlough targets (relative RMSE + 0.82–0.99) and is clearly worse beyond four quarters, so the + published path is capped at four quarters. The improvement is not + statistically significant at 73 overlapping origins, and the bands + carry GDP-forecast uncertainty only. Specification, code, and the + full skill table: + okun_validation.json + in the model repository. +