From cea9a21f6b731908077b51722d400487d6a6b379 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Tue, 28 Jul 2026 10:29:34 +0200 Subject: [PATCH 1/2] Publish near-term unemployment outlook from the Okun satellite - Archive round 2026-07-28/okun-unemployment.json: 4-quarter unemployment path derived from the archived 2026-07-21 boe-svar GDP round through the validated Okun mapping (boe-var-model#8), capped at the horizon the rolling-origin validation supports, caveats embedded in the artifact - outturns.json gains the MGSX source so future releases score the round - Homepage at-a-glance: unemployment cell now shows the 2026Q2 satellite forecast instead of 'not forecast by the suite yet' - /validation/: unemployment-satellite paragraph with the honest skill summary and a link to the full validation artifact Co-Authored-By: Claude Fable 5 --- forecasts/index.html | 14 +++- forecasts/outturns.json | 8 ++- .../rounds/2026-07-28/okun-unemployment.json | 72 +++++++++++++++++++ forecasts/scorecard.json | 16 ++++- index.html | 2 +- validation/index.html | 18 +++++ 6 files changed, 124 insertions(+), 6 deletions(-) create mode 100644 forecasts/rounds/2026-07-28/okun-unemployment.json diff --git a/forecasts/index.html b/forecasts/index.html index e0a5bb3..aaaf6f4 100644 --- a/forecasts/index.html +++ b/forecasts/index.html @@ -76,12 +76,12 @@

One round in, one result.

-
1Archived round
+
2Archived rounds
1Scored period
0.12ppLatest absolute error

- 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 → +

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.

Real GDP growth, y/y0.9% 2026Q11.1% 2026Q2 · 68% range 0.6%–1.7% CPI inflation, y/y2.8% 2026Q22.7% 2026Q3 · 68% range 1.9%–3.5% - Unemployment rate5.0% 2026Q1not forecast by the suite yet + Unemployment rate5.0% 2026Q15.0% 2026Q2 · 68% range 4.9%–5.0% · Okun satellite diff --git a/validation/index.html b/validation/index.html index 8311f4e..9f4d1b0 100644 --- a/validation/index.html +++ b/validation/index.html @@ -638,6 +638,24 @@

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

boe-svar: out-of-sample forecast fan from the frozen 2024Q2 edge vs ONS outturns From 54ee52e3bd2076a5eee6ba2313e3efe81538d602 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Tue, 28 Jul 2026 10:59:35 +0200 Subject: [PATCH 2/2] Regenerate economy page after the unemployment round Co-Authored-By: Claude Fable 5 --- economy/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/economy/index.html b/economy/index.html index f94cd6c..aea9245 100644 --- a/economy/index.html +++ b/economy/index.html @@ -127,7 +127,7 @@

What has happened, and what the model sees next.

REAL-TIME FORECAST RECORD

1 scored

-

1 archived round

+

2 archived rounds

Observation
current scorecard
Vintage
generated scorecard