diff --git a/app/src/Router.tsx b/app/src/Router.tsx
index 11ffd2bc..377f9e7b 100644
--- a/app/src/Router.tsx
+++ b/app/src/Router.tsx
@@ -1,6 +1,7 @@
import { createBrowserRouter, Navigate, RouterProvider } from 'react-router-dom';
import Layout from './components/Layout';
import HomePage from './pages/Home.page';
+import MicrosimPage from './pages/Microsim.page';
import PoliciesPage from './pages/Policies.page';
import PopulationsPage from './pages/Populations.page';
import ReportOutputPage from './pages/ReportOutput.page';
@@ -75,6 +76,10 @@ const router = createBrowserRouter(
path: 'account',
element:
Account settings page
,
},
+ {
+ path: 'microsim',
+ element: ,
+ },
],
},
],
diff --git a/app/src/images/posts/how-machine-learning-tools-make-policyengine-more-accurate.png b/app/src/images/posts/how-machine-learning-tools-make-policyengine-more-accurate.png
new file mode 100644
index 00000000..ed9eb621
Binary files /dev/null and b/app/src/images/posts/how-machine-learning-tools-make-policyengine-more-accurate.png differ
diff --git a/app/src/pages/Microsim.page.tsx b/app/src/pages/Microsim.page.tsx
new file mode 100644
index 00000000..081da6f7
--- /dev/null
+++ b/app/src/pages/Microsim.page.tsx
@@ -0,0 +1,206 @@
+import { useNavigate, useParams } from 'react-router-dom';
+import { Box, Container, List, Text, Title } from '@mantine/core';
+import CalloutWithImage from '@/components/shared/static/CalloutWithImage';
+import { CardsWithHeader } from '@/components/shared/static/CardsWithHeader';
+import PageHeader from '@/components/shared/static/PageHeader';
+import { TitleCardWithHeader } from '@/components/shared/static/TextCardWithHeader';
+import TwoColumnView from '@/components/TwoColumnView';
+import heroImage from '@/images/posts/how-machine-learning-tools-make-policyengine-more-accurate.png';
+
+export default function MicrosimPage() {
+ const navigate = useNavigate();
+ const { countryId } = useParams<{ countryId: string }>();
+ return (
+
+
+
+
+ countryId && navigate(`/${countryId}/policies`)}
+ imageSrc={heroImage}
+ imageAlt="Diagram showing PolicyEngine microsimulation"
+ />
+
+
+
+
+
+ Microsimulation is a computational technique used to estimate the effects of
+ policy changes on individuals, households, or other microeconomic units. Unlike
+ macroeconomic models that focus on aggregate variables, microsimulation models:
+
+
+
+
+ Apply tax and benefit rules to representative samples of the population
+
+
+ Calculate outcomes for each household based on their unique characteristics
+
+ Aggregate results to estimate population-wide impacts
+
+ Allow for detailed distributional analysis by income, demographic groups, and
+ more
+
+
+
+
+ PolicyEngine’s microsimulation models implement tax and benefit systems as code,
+ allowing users to modify parameters and see how changes affect different
+ households and the overall population.
+
+ >
+ ),
+ },
+ ]}
+ />
+
+
+
+
+
+ Open-Source Foundation
+
+
+ PolicyEngine builds on OpenFisca, an open-source microsimulation framework developed
+ by the French government. Our models implement tax and benefit rules as code,
+ creating a computational representation of current policy and allowing for
+ modifications to explore reform impacts.
+
+
+
+ Data-Driven Approach
+
+
+ Our models use nationally representative household surveys enhanced with
+ administrative data to create accurate population samples:
+
+
+
+ UK: Family Resources Survey with custom survey weights
+
+
+ US: Enhanced Current Population Survey with synthetic tax records
+
+
+
+
+ Machine Learning Enhancement
+
+
+ We apply machine learning techniques to optimize our population samples:
+
+
+
+ Gradient descent algorithms to calibrate survey weights to match administrative
+ totals
+
+
+ Quantile regression forests to synthesize missing tax information for US data
+
+ Statistical validation against administrative benchmarks
+
+ >
+ }
+ rightColumn={
+
+ }
+ />
+
+
+
+
+
+ PolicyEngine continuously validates our models against administrative data to
+ ensure accuracy:
+
+
+
+
+ Aggregate tax and benefit totals compared to government budget figures
+
+
+ Distributional impacts validated against administrative statistics
+
+
+ Tax and benefit calculators tested against official examples
+
+
+ Ongoing calibration to match the latest data from government sources
+
+
+
+
+ Our UK model has achieved up to 80% lower aggregate error rates compared to
+ standard survey-based approaches, and our US Enhanced CPS represents a
+ significant improvement over public microdata for tax modeling.
+
+ >
+ ),
+ },
+ ]}
+ />
+
+
+
+ navigate('/coming-soon'),
+ background: 'gray',
+ },
+ {
+ title: 'UK Model Validation',
+ description:
+ 'Detailed information about the UK tax and benefit model, including data sources, calibration methodology, and validation results.',
+ footerText: 'UK Model Validation →',
+ onClick: () => navigate('/coming-soon'),
+ background: 'gray',
+ },
+ {
+ title: 'GitHub Repositories',
+ description:
+ 'Access our open-source code repositories for all PolicyEngine models, including tax-benefit rules, data processing pipelines, and web interface.',
+ footerText: 'PolicyEngine on GitHub →',
+ onClick: () => window.open('https://github.com/PolicyEngine', '_blank'),
+ background: 'gray',
+ },
+ ]}
+ />
+
+
+ );
+}