Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ python3 -m http.server 8000 # then open http://localhost:8000/
| `forecasts/` | the forecast track record, plus the data store (`#data`) and the release notes index (`#notes`) |
| `forecasts/us/` | why there is no US track record yet |
| `papers/<slug>/` | the four working-paper pages: `obr-macro`, `boe-svar`, `frb-us`, `psl-og` (`papers/us-hank/` holds figures only, and `papers/*.pdf` are served directly) |
| `reports/` | replication reports — `define-uk-replication/` and `us-hank-open-source.html` |
| `reports/` | replication reports — `define-uk-replication/` and `us-hank-open-source/` |
| `notes/releases/` | index of the generated per-vintage release notes, plus `notes/<date>-<slug>/` note pages |
| `connect/` | connect it or code it — MCP / CLI setup and the Python API |
| `contact/` | who to contact |
Expand Down
2 changes: 1 addition & 1 deletion define/code/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ <h1 class="reveal page-title" style="--d:1;">
<a class="model-tabs-link" href="/define/methodology">Methodology</a>
<a class="model-tabs-link" href="/define/validation">Validation</a>
<a class="model-tabs-link" href="/define/code" aria-current="page">Code</a>
<a class="model-tabs-link" href="/reports/define-uk-replication">Paper</a>
<a class="model-tabs-link" href="/papers/define-uk">Paper</a>
</div>
</nav>

Expand Down
13 changes: 7 additions & 6 deletions define/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ <h2>Connected to the microsimulation — experimentally, deltas in, incidence ou
<a class="model-tabs-link" href="/define/methodology">Methodology</a>
<a class="model-tabs-link" href="/define/validation">Validation</a>
<a class="model-tabs-link" href="/define/code">Code</a>
<a class="model-tabs-link" href="/reports/define-uk-replication">Paper</a>
<a class="model-tabs-link" href="/papers/define-uk">Paper</a>
</div>
</nav>

Expand Down Expand Up @@ -135,7 +135,7 @@ <h2>Validated to the ceiling the publications allow. Deltas only.</h2>
</div>
<p>
Two things do not pass. The baseline emissions path runs below the
published table — &minus;3.4% in 2025, widening to &minus;23% by 2040
published table — &minus;3.5% in 2025, widening to &minus;23.3% by 2040
— pinned at the observed ratios and raised with the authors. And the
baseline sits far from official outturns: 2025 growth 4.66% against an
ONS 1.31%, 2024 emissions 401.5 MtCO2e against a DESNZ 371 — a gap
Expand All @@ -146,10 +146,11 @@ <h2>Validated to the ceiling the publications allow. Deltas only.</h2>
<summary>Two more things to know before quoting a number</summary>
<p>
<strong>The multiplier runs high.</strong> Our cumulative
green-public-investment multiplier is 1.78, against IMF
green-spending estimates of 1.1&ndash;1.5 and an OBR capital
multiplier of &asymp;1.0 — the demand-led closure, labelled wherever
a delta is served. The upstream table's own multiplier columns are
green-public-investment multiplier is 1.78. It is not comparable to the
short-horizon published multipliers it used to sit beside: ours is
cumulative to 2040, its denominator is endogenous and biases the
ratio up, and a demand-led closure implies above 1 anyway. Labelled
wherever a delta is served. The upstream table's own multiplier columns are
unusable, and never quoted.
</p>
<p>
Expand Down
14 changes: 7 additions & 7 deletions define/methodology/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ <h1 class="reveal page-title" style="--d:1;">
<a class="model-tabs-link" href="/define/methodology" aria-current="page">Methodology</a>
<a class="model-tabs-link" href="/define/validation">Validation</a>
<a class="model-tabs-link" href="/define/code">Code</a>
<a class="model-tabs-link" href="/reports/define-uk-replication">Paper</a>
<a class="model-tabs-link" href="/papers/define-uk">Paper</a>
</div>
</nav>

Expand Down Expand Up @@ -232,7 +232,7 @@ <h4>What version 1.1 added</h4>
<text x="404" y="83" font-family="Roboto, sans-serif" font-size="11" fill="var(--accent)" font-weight="700" text-anchor="start">DEFINE-UK 1.78 (our computation)</text>
<rect x="40" y="100" width="220" height="24" rx="4" fill="var(--accent)" opacity="0.55"/>
<rect x="260" y="100" width="80" height="24" rx="4" fill="var(--accent)" opacity="0.25"/>
<text x="348" y="117" font-family="Roboto, sans-serif" font-size="11" fill="var(--text-mid)" text-anchor="start">IMF green spending 1.1&ndash;1.5</text>
<text x="348" y="117" font-family="Roboto, sans-serif" font-size="11" fill="var(--text-mid)" text-anchor="start">short-horizon published multipliers (not comparable)</text>
<rect x="40" y="134" width="200" height="24" rx="4" fill="var(--text-light)" opacity="0.5"/>
<text x="248" y="151" font-family="Roboto, sans-serif" font-size="11" fill="var(--text-mid)" text-anchor="start">OBR capital spending &asymp; 1.0</text>
<line x1="40" y1="176" x2="540" y2="176" stroke="var(--text-light)" stroke-width="1.5" marker-end="url(#arr-d4)"/>
Expand All @@ -243,12 +243,12 @@ <h4>What version 1.1 added</h4>
<h4>The closure</h4>
<p>DEFINE-UK is closed demand-led: output adjusts to aggregate demand rather than being pinned to a supply-side potential path. That is the standard post-Keynesian SFC closure, and it has a direct, observable consequence — fiscal expansions are not crowded out by an assumed return to potential, so fiscal multipliers come out larger than in supply-constrained models like the <a href="/obr">OBR emulator</a>.</p>
<h4>Measured, not asserted</h4>
<p>We measure this rather than assert it: our own computation of the model's cumulative green-public-investment multiplier is <strong>1.78</strong>, against IMF green-spending estimates of 1.1&ndash;1.5 and an OBR capital-spending impact multiplier of &asymp;1.0. Above the official range, but explicably so given the closure — and every surface that quotes a DEFINE-UK delta carries the demand-led caveat. The full comparison is on the <a href="/define/validation">validation page</a>.</p>
<p>We measure this rather than assert it: our own computation of the model's cumulative green-public-investment multiplier is <strong>1.78</strong>. It is not comparable to the short-horizon published multipliers it used to be set against: ours is cumulative to 2040, its denominator is endogenous and biases the ratio up, and a demand-led closure implies above 1 anyway. Every surface that quotes a DEFINE-UK delta carries the caveat. The full comparison is on the <a href="/define/validation">validation page</a>.</p>
<div class="meth-inline">
<div class="meth-sec-title">closure and multipliers</div>
<div class="meth-eq"><div class="meth-eq-label">closure</div><div class="meth-eq-body">demand-led: \(Y\) adjusts to aggregate demand, not a potential path</div></div>
<div class="meth-eq"><div class="meth-eq-label">our computation</div><div class="meth-eq-body">cumulative green-public-investment multiplier <strong>1.78</strong></div></div>
<div class="meth-eq"><div class="meth-eq-label">comparators</div><div class="meth-eq-body">IMF green spending 1.1&ndash;1.5 · OBR capital-spending impact &asymp; 1.0</div></div>
<div class="meth-eq"><div class="meth-eq-label">comparators</div><div class="meth-eq-body">not comparable to short-horizon published multipliers: ours is cumulative to 2040, its denominator is endogenous and biases the ratio up, and a demand-led closure implies above 1 anyway</div></div>
</div>
</div>

Expand Down Expand Up @@ -308,7 +308,7 @@ <h4>Verifying the switches</h4>
<text x="150" y="132" text-anchor="middle" font-family="Roboto, sans-serif" font-size="10" fill="var(--text-light)">numerical oracle only</text>
<rect x="15" y="145" width="550" height="60" rx="10" fill="var(--accent-light)" stroke="var(--accent)" stroke-width="1.5" stroke-dasharray="5 3"/>
<text x="290" y="167" text-anchor="middle" font-family="Roboto, sans-serif" font-size="12" fill="var(--accent)" font-weight="700">clean-room Python reimplementation: the manual is the specification</text>
<text x="290" y="186" text-anchor="middle" font-family="Roboto, sans-serif" font-size="10" fill="var(--text-mid)">upstream source never read to write equations &middot; 5 milestones &middot; milestone 1 passed with 27 identity tests</text>
<text x="290" y="186" text-anchor="middle" font-family="Roboto, sans-serif" font-size="10" fill="var(--text-mid)">upstream source never read to write equations &middot; 5 milestones &middot; milestone 1 passed with 44 identity tests of 62 collected</text>
</svg>
<figcaption class="expand-hint mono">click to expand</figcaption>
</figure>
Expand All @@ -317,7 +317,7 @@ <h4>The constraint</h4>
<h4>Deltas only, local only</h4>
<p><code>pe-macro define-scenarios</code> and <code>pe-macro define-scenario</code> return annualised scenario-minus-baseline delta paths only, framed with mandatory caveats — never levels, because the baseline's calibration gap to ONS/DESNZ/OBR actuals is computed and material. The hosted MCP tools return run instructions instead of results, because the unlicensed upstream is never hosted. <code>score_reform</code> will not accept this model.</p>
<h4>The clean-room path to hosting</h4>
<p>The path to hosting is a <a href="https://github.com/PolicyEngine/define-uk-model/blob/main/REIMPLEMENTATION.md">clean-room Python reimplementation</a> of the published Model Manual — the same adapted-model approach as the OBR emulator. The protocol: the manual is the specification, and the upstream run is a numerical oracle only — its outputs are compared against ours, but its source code is never read to write equations, and every equation must carry a reference to the manual section and equation number it implements. Five milestones run from the accounting core to the full policy scenarios; milestone 1 — the §2.2 transactions and balance-sheet matrices on the §5 initial values — passed with 27 identity tests, including one documented inconsistency in the manual itself (Table 6 omits a dividend term of Eq. 383 from the interbank-lending row, which the tests pin exactly rather than paper over).</p>
<p>The path to hosting is a <a href="https://github.com/PolicyEngine/define-uk-model/blob/main/REIMPLEMENTATION.md">clean-room Python reimplementation</a> of the published Model Manual — the same adapted-model approach as the OBR emulator. The protocol: the manual is the specification, and the upstream run is a numerical oracle only — its outputs are compared against ours, but its source code is never read to write equations, and every equation must carry a reference to the manual section and equation number it implements. Five milestones run from the accounting core to the full policy scenarios; milestone 1 — the §2.2 transactions and balance-sheet matrices on the §5 initial values — passed with 44 identity tests of 62 collected, including one documented inconsistency in the manual itself (Table 6 omits a dividend term of Eq. 383 from the interbank-lending row, which the tests pin exactly rather than paper over).</p>
<div class="meth-inline">
<div class="meth-sec-title">adapter architecture</div>
<div class="meth-eq"><div class="meth-eq-label">pinned commit</div><div class="meth-eq-body">runtime fetch at <code>846081a</code>; executed unmodified, in R; nothing vendored or hosted</div></div>
Expand Down Expand Up @@ -357,7 +357,7 @@ <h4>The clean-room path to hosting</h4>
<div class="meth-sec-title">closure and multipliers</div>
<div class="meth-eq"><div class="meth-eq-label">closure</div><div class="meth-eq-body">demand-led: \(Y\) adjusts to aggregate demand, not a potential path</div></div>
<div class="meth-eq"><div class="meth-eq-label">our computation</div><div class="meth-eq-body">cumulative green-public-investment multiplier <strong>1.78</strong></div></div>
<div class="meth-eq"><div class="meth-eq-label">comparators</div><div class="meth-eq-body">IMF green spending 1.1&ndash;1.5 · OBR capital-spending impact &asymp; 1.0</div></div>
<div class="meth-eq"><div class="meth-eq-label">comparators</div><div class="meth-eq-body">not comparable to short-horizon published multipliers: ours is cumulative to 2040, its denominator is endogenous and biases the ratio up, and a demand-led closure implies above 1 anyway</div></div>
</div>
<div class="meth-panel" data-step="4" hidden>
<div class="meth-panel-head"><span class="meth-panel-title">Scenarios as policy switches</span><span class="meth-panel-badge mono">Step 5</span></div>
Expand Down
Loading