Skip to content
Draft
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: 2 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,8 @@ <h2>It already matches the data it aims to replace.</h2>
<a href="/papers/l0">Read the L0 calibration paper</a>
&nbsp;·&nbsp;
<a href="/papers/dynamics">Read the dynamics design paper</a>
&nbsp;&middot;&nbsp;
<a href="/papers/vat-threshold">Read the UK VAT threshold paper</a>
</p>
</section>

Expand Down
93 changes: 93 additions & 0 deletions papers/vat-threshold/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>UK VAT threshold paper — populace</title>
<meta name="description" content="A web version and PDF of PolicyEngine's firm-level microsimulation of the UK VAT registration threshold, built on synthetic firm data." />
<meta property="og:title" content="An open firm-level microsimulation of the UK VAT registration threshold" />
<meta property="og:description" content="A PolicyEngine paper costing level, shape, and rate VAT-threshold reforms on calibrated synthetic firm microdata." />
<meta property="og:type" content="article" />
<link rel="icon" type="image/svg+xml" href="/assets/policyengine-mark.svg" />
<meta name="theme-color" content="#FFFFFF" />

<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@policyengine/ui-kit@0.12.1/src/theme/tokens.css" />
<link rel="stylesheet" href="/style.css" />
<link rel="stylesheet" href="/papers/vat-threshold/paper-page.css" />
</head>
<body>
<div class="grain" aria-hidden="true"></div>

<header class="nav">
<a class="brand" href="/">
<span class="brand-dot" aria-hidden="true"></span>populace
</a>
<nav class="nav-links">
<a href="/#idea">the idea</a>
<a href="/#stack">the stack</a>
<a href="/#result">evidence</a>
<a href="/calibration">calibration</a>
<a href="https://firm-microsim-paper.vercel.app">web paper</a>
<a class="nav-gh" href="https://github.com/PolicyEngine/firm-microsim-paper" aria-label="GitHub"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5"/></svg></a>
</nav>
</header>

<main class="paper-main">
<section class="paper-hero">
<p class="eyebrow reveal" style="--d:0">research paper</p>
<h1 class="paper-title reveal" style="--d:1">
An open firm-level microsimulation of the UK VAT registration threshold
</h1>
<p class="paper-lede reveal" style="--d:2">
The paper builds an open synthetic firm population for the UK VAT
registration threshold, prices level, shape, and rate reforms on it, and
shows which near-threshold conclusions calibrated synthetic data can and
cannot support.
</p>
<div class="hero-cta reveal" style="--d:3">
<a class="btn btn-primary" href="#web">Read online</a>
<a class="btn btn-ghost" href="/papers/vat-threshold/vat-threshold.pdf">Download PDF</a>
<a class="btn btn-ghost" href="https://github.com/PolicyEngine/firm-microsim-paper">Reproduction code</a>
</div>
<dl class="paper-facts reveal" style="--d:4">
<div>
<dt class="mono">anchor result</dt>
<dd>On a common £184.8bn 2023–24 base: raising the threshold to £100,000 costs £753m, a graduated taper £520m, and 10%/15% reduced-rate bands £484m/£242m.</dd>
</div>
<div>
<dt class="mono">method</dt>
<dd>Synthetic firm records calibrated to ONS, HMRC, and OBR aggregates, with the near-threshold density pinned side-consistently to the OBR's £1,000-band data; a region-confined behavioural layer nests the static costing exactly.</dd>
</div>
<div>
<dt class="mono">transparency</dt>
<dd>Sub-band structure is target-inherited, provably: placebo regeneration returns zero excess mass, and an uncalibrated band edge alone lands within 10% of the administrative bunching estimate.</dd>
</div>
</dl>
</section>

<section id="web" class="paper-viewer" aria-labelledby="web-paper-title">
<div class="paper-viewer-head">
<div>
<span class="kicker mono">paper</span>
<h2 id="web-paper-title">Web paper</h2>
</div>
<a class="btn btn-ghost" href="https://firm-microsim-paper.vercel.app">Open full page</a>
</div>
<iframe class="paper-frame" src="https://firm-microsim-paper.vercel.app" title="An open firm-level microsimulation of the UK VAT registration threshold"></iframe>
</section>
</main>

<footer class="foot">
<div class="foot-row">
<a class="brand" href="/"><span class="brand-dot" aria-hidden="true"></span>populace</a>
<a class="foot-pe" href="https://policyengine.org" aria-label="PolicyEngine"><img src="/assets/policyengine.svg" alt="PolicyEngine" /></a>
</div>
<p class="mono foot-fine">
A weighted synthetic population for public policy. Open source · MIT · a PolicyEngine project.
</p>
</footer>
</body>
</html>
119 changes: 119 additions & 0 deletions papers/vat-threshold/paper-page.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
.paper-main {
padding: 132px clamp(20px, 5vw, 56px) 64px;
}

.paper-hero {
max-width: var(--max);
margin: 0 auto;
}

.paper-title {
max-width: 12ch;
}

.paper-title sub {
font-size: 0.48em;
vertical-align: -0.18em;
}

.paper-lede {
max-width: 48ch;
color: var(--paper);
font-size: clamp(1.05rem, 2vw, 1.28rem);
line-height: 1.55;
margin-bottom: 34px;
}

.paper-facts {
display: grid;
gap: 0;
grid-template-columns: 1fr;
margin-top: 36px;
border: 1px solid var(--line);
border-radius: 3px;
overflow: hidden;
}

@media (min-width: 860px) {
.paper-facts {
grid-template-columns: repeat(3, 1fr);
}
}

.paper-facts div {
padding: 22px 20px;
border-bottom: 1px solid var(--line-soft);
}

@media (min-width: 860px) {
.paper-facts div {
border-bottom: 0;
border-right: 1px solid var(--line-soft);
}

.paper-facts div:last-child {
border-right: 0;
}
}

.paper-facts dt {
color: var(--amber);
font-size: 12px;
letter-spacing: 0.08em;
margin-bottom: 10px;
text-transform: uppercase;
}

.paper-facts dd {
color: var(--paper-dim);
font-size: 15px;
line-height: 1.5;
}

.paper-viewer {
max-width: min(1500px, calc(100vw - clamp(20px, 5vw, 56px) * 2));
margin: clamp(58px, 8vw, 96px) auto 0;
border-top: 1px solid var(--line-soft);
padding-top: 34px;
}

.paper-viewer-head {
display: flex;
align-items: end;
justify-content: space-between;
gap: 24px;
margin-bottom: 22px;
}

.paper-viewer-head h2 {
margin: 0;
max-width: none;
font-size: clamp(1.45rem, 2.2vw, 2rem);
}

.paper-frame {
width: 100%;
min-height: 82vh;
border: 1px solid var(--line);
border-radius: 3px;
background: var(--background);
}

@media (max-width: 720px) {
.paper-main {
padding-top: 104px;
}

.paper-viewer {
max-width: calc(100vw - 24px);
}

.paper-viewer-head {
align-items: start;
flex-direction: column;
}

.paper-frame {
min-height: 76vh;
}
}
Binary file added papers/vat-threshold/vat-threshold.pdf
Binary file not shown.