Skip to content
Open
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
3 changes: 2 additions & 1 deletion connect/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -396,8 +396,9 @@ <h2>Run the shared CLI.</h2>
<div><span class="dial-name">UK forecast</span><div class="copyblock"><code>pe-macro forecast</code><button data-copy>copy</button></div></div>
<div><span class="dial-name">US HANK shock</span><div class="copyblock"><code>pe-macro hank-shock --kind monetary --size -0.0025</code><button data-copy>copy</button></div></div>
<div><span class="dial-name">Household calculation</span><div class="copyblock"><code>pe-macro household --country us --people '[{"age":35,"employment_income":50000}]'</code><button data-copy>copy</button></div></div>
<div><span class="dial-name">Score a UK reform</span><div class="copyblock"><code>pe-macro score --country uk --reform '{"gov.hmrc.income_tax.rates.uk[0].rate":0.21}' --model obr</code><button data-copy>copy</button></div></div>
</div>
<p class="chooser-note"><a href="https://github.com/PolicyEngine/macro/tree/main/integration">View every CLI command →</a></p>
<p class="chooser-note"><a href="https://github.com/PolicyEngine/macro/tree/main/integration">View every CLI command →</a> · How the micro-to-macro scoring pipeline works: <a href="/score">score a reform</a>.</p>
</div>
</section>
<section id="code" class="band">
Expand Down
5 changes: 4 additions & 1 deletion economy/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,10 @@ <h2>Activity, prices, work, the public finances, and market rates.</h2>
</table>
</div>
</details></div>


<p class="chooser-note">These figures are the backdrop every model runs
against — the baseline a <a href="/score">scored reform</a> perturbs and
the outturns the <a href="/forecasts">forecast record</a> is judged on.</p>
</div>
</section>
</main>
Expand Down
6 changes: 5 additions & 1 deletion frb-us/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,11 @@ <h2>US monetary and fiscal shocks, quarter by quarter.</h2>
<strong>It cannot</strong> score a PolicyEngine reform — see the <a href="/frb-us/validation#caveats">known limits</a>.
It cannot do forward guidance or anything needing model-consistent
expectations. It cannot tell you who wins and loses — that is
<a href="/pe">PolicyEngine</a>. And it says nothing about the UK.
<a href="/pe">PolicyEngine</a>, whose costing-to-macro bridge exists
for the UK models (<a href="/score">score a reform</a>) but not yet
for FRB/US: <code>score_reform</code> refuses
<code>model="frbus"</code> rather than return a plausible-but-wrong
number. And it says nothing about the UK.
</div>
</div>
</section>
Expand Down
6 changes: 6 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,12 @@ <h3>Test a policy or shock</h3>
<p>Choose among six open household and macro models, then inspect each model’s assumptions, evidence, and limits.</p>
<span class="strategy-paper-link mono">choose a macro model →</span>
</a>
<a class="strategy-card" href="/score">
<header><span class="card-id mono">Score a reform</span><span class="tag-row"><span class="tag tag-country">UK</span></span></header>
<h3>Score a tax or benefit change</h3>
<p>The microsimulation computes the direct cost and who pays; the OBR emulator returns the economy-wide feedback — one reform, scored end to end.</p>
<span class="strategy-paper-link mono">score a reform →</span>
</a>
<a class="strategy-card" href="/forecasts">
<header><span class="card-id mono">Forecast record</span><span class="tag-row"><span class="tag tag-country">UK</span></span></header>
<h3>Check forecasts against what happened</h3>
Expand Down
9 changes: 9 additions & 0 deletions models/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,15 @@ <h1 class="reveal page-title" style="--d:1">Choose the model that fits the quest
<summary><span>What would a reform cost — and what would it do to the economy?</span><strong>score a reform</strong></summary>
<div class="qa-body">
<p>The scoring pipeline chains two members: PolicyEngine's microsimulation produces the static costing from the actual tax-benefit rules, then the OBR emulator feeds it through the macro model for the second-round effects — the OBR's own "static costing in, second-round effects out" workflow.</p>
<div class="pipeline" role="img" aria-label="Pipeline: a reform goes to the PolicyEngine microsimulation for the static costing, which feeds the OBR emulator for macro feedback.">
<span class="pl-node"><strong>Reform</strong></span>
<span class="pl-arrow" aria-hidden="true">&rarr;</span>
<a class="pl-node" href="/pe"><strong>pe-microsim</strong></a>
<span class="pl-arrow" aria-hidden="true">&rarr;</span>
<a class="pl-node" href="/obr"><strong>obr-macro</strong></a>
<span class="pl-arrow" aria-hidden="true">&rarr;</span>
<span class="pl-node"><strong>Scored result</strong></span>
</div>
<div class="qa-facts">
<div class="qa-fact"><span class="icon">&rarr;</span><span>Worked example: 1p on the basic rate — £6.46bn (2026) &rarr; £7.38bn (2030), GDP &minus;0.02% on impact building to &minus;0.06%</span></div>
<div class="qa-fact"><span class="icon">&rarr;</span><span>Static costing sits within HMRC's published ready-reckoner range</span></div>
Expand Down
12 changes: 12 additions & 0 deletions olg/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,18 @@ <h2>Households age, the economy clears.</h2>
"where does the economy end up, and why?" — with the behavioural
mechanism visible rather than estimated.
</p>
<p>
It is coupled to the <a href="/pe">PolicyEngine microsimulation</a>
in both directions: its tax functions are estimated from effective
and marginal rates the microsimulation computes on Enhanced FRS
microdata, and a reform is the same flat parameter dict the
microsimulation uses — so the model scores statute, not a stylised
stand-in. Going the other way, <code>score_reform</code> with
<code>model="og+microsim"</code> feeds the long-run wage and
labour-supply changes back into a second microsimulation run for a
dynamic, household-resolution score. The end-to-end workflow is on
the <a href="/score">score a reform</a> page.
</p>
<p>
The rest of this page walks through a worked
<a href="#showcase">showcase</a> reform with charts; the
Expand Down
8 changes: 6 additions & 2 deletions pe/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -96,14 +96,18 @@ <h2>Statute as code, at household resolution.</h2>
version-pinned release bundles for reproducibility.
</p>
<p>
It feeds two macro engines: the <a href="/olg">OLG model</a>
It is the hub of the suite: every scoring path starts here. It feeds
two macro engines — the <a href="/olg">OLG model</a>
consumes its effective and marginal rates to build tax functions;
the <a href="/obr">OBR emulator</a> takes its static costing as the
direct effect and returns the second-round one. See also the
direct effect and returns the second-round one — and the OLG model
feeds back, scaling a second microsimulation run with its long-run
wage and labour-supply changes for a dynamic score. See also the
<a href="/pe/code">code</a>, the
<a href="/pe/methodology">methodology</a>, and
<a href="/pe/validation">how far to trust it</a>.
</p>
<p class="chooser-note"><a href="/score">Score a reform end to end &rarr;</a></p>
</div>
</section>

Expand Down
11 changes: 10 additions & 1 deletion score/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,20 @@ <h2>Two steps: direct effect, then macro feedback.</h2>
two together so a statutory reform can be scored end to end.
</p>
</div>
<div class="pipeline" role="img" aria-label="Pipeline: a reform dict goes to the PolicyEngine microsimulation for the static costing, whose output feeds the OBR emulator for macro feedback, producing one scored result.">
<span class="pl-node"><strong>Reform</strong><span class="mono">{parameter: value}</span></span>
<span class="pl-arrow" aria-hidden="true">&rarr;</span>
<a class="pl-node" href="/pe"><strong>pe-microsim</strong><span class="mono">static costing &amp; who pays</span></a>
<span class="pl-arrow" aria-hidden="true">&rarr;</span>
<a class="pl-node" href="/obr"><strong>obr-macro</strong><span class="mono">second-round feedback</span></a>
<span class="pl-arrow" aria-hidden="true">&rarr;</span>
<span class="pl-node"><strong>Scored result</strong><span class="mono">one score block</span></span>
</div>
<div class="question-list">
<a href="/pe"><span>Step 1 — the direct effect. PolicyEngine applies the reform to statute and survey microdata: who pays, who receives, and the static budgetary cost.</span><strong>pe-microsim</strong></a>
<a href="/obr"><span>Step 2 — the second round. The OBR emulator propagates the costing through household income and consumption to GDP, quarter by quarter.</span><strong>obr-macro</strong></a>
</div>
<p class="chooser-note">Long-run incentive effects are a different question — that is the <a href="/olg">OLG model</a>. For choosing between models, see the <a href="/models">catalog and comparison</a>.</p>
<p class="chooser-note">Long-run incentive effects are a different question — that is the <a href="/olg">OLG model</a>, which also loops back: <code>og+microsim</code> feeds its long-run wage and labour-supply changes into a second microsimulation run for a dynamic score. For choosing between models, see the <a href="/models">catalog and comparison</a>.</p>
</section>

<section id="example" class="band band-result">
Expand Down
21 changes: 21 additions & 0 deletions style.css
Original file line number Diff line number Diff line change
Expand Up @@ -1186,6 +1186,27 @@ h2 {
.chooser-note { margin-top: var(--s-5); color: var(--paper-dim); font-size: var(--fs-body-sm); }
.chooser-note a { color: var(--brand-strong); }

/* Micro→macro pipeline strip: the scoring flow at a glance. */
.pipeline {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--s-2) var(--s-3);
margin-block: var(--s-4);
}
.pipeline .pl-node {
border: 1px solid var(--line, currentColor);
border-radius: 6px;
padding: 6px 12px;
font-size: var(--fs-body-sm);
line-height: 1.35;
}
.pipeline .pl-node strong { display: block; font-family: inherit; }
.pipeline .pl-node .mono { display: block; color: var(--paper-dim); }
.pipeline .pl-arrow { color: var(--brand); }
.pipeline a.pl-node { text-decoration: none; color: inherit; }
.pipeline a.pl-node:hover { border-color: var(--brand); }

@media (max-width: 620px) {
.nav {
min-height: 112px;
Expand Down
6 changes: 4 additions & 2 deletions svar/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -182,8 +182,10 @@ <h2>What's happening now, and why.</h2>
into identified structural innovations is conceptually dubious, not
merely unbuilt. For reform scoring use the
<a href="/obr">OBR emulator</a> (short-run, fiscal) or the
<a href="/olg">OLG model</a> (long-run, structural); this model tells
you what you are scoring <em>against</em>.
<a href="/olg">OLG model</a> (long-run, structural) — both fed by the
<a href="/pe">PolicyEngine microsimulation</a>'s static costing, as
the <a href="/score">score a reform</a> workflow shows; this model
tells you what you are scoring <em>against</em>.
</div>
</div>
</section>
Expand Down
10 changes: 7 additions & 3 deletions us-hank/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,13 @@ <h2>Stylized US shocks, with the household distribution attached.</h2>
<div class="callout">
<strong>It cannot</strong> forecast — responses are deviations around
a calibrated steady state, not a projection of the US economy. It
cannot score a PolicyEngine reform: <code>score_reform</code> refuses
<code>model="hank"</code> outright — three stylized instruments and
an endogenous labor tax mean no mapping from statute exists.
cannot score a <a href="/pe">PolicyEngine</a> reform:
<code>score_reform</code> refuses <code>model="hank"</code> outright —
three stylized instruments and an endogenous labor tax mean no
mapping from statute exists. For statutory reforms scored end to end,
use the <a href="/score">micro-to-macro workflow</a>; for who wins
and loses from a reform at household resolution, the
<a href="/pe">microsimulation</a> answers directly.
Responses are <strong>first-order</strong> — linear in the shock,
with no state dependence — and the distributional cuts are
first-order approximations from steady-state policies, not full
Expand Down