The budget chain has a specific name at each link: appropriation → apportionment → allotment → fund distribution → obligation → outlay. Almost all the public argument happens at the top — who gets what. The interesting mechanics are in the bottom half, where the money actually moves and where the levers people keep talking about do their work.
So I built the flow simulator: a static page that follows real appropriations — budget authority → obligations → outlays, by fiscal period — for three agencies (VA, US Treasury, USDA) across FY2022–FY2026, and lets you pull the levers. All numbers are real (USAspending + Treasury Fiscal Data, CC0), frozen into JSON at build time; the page makes no API calls and has no build step.
The levers
Four of them, applied by a scenario engine in a fixed order — lapse/front-loading → sequester → continuing-resolution haircut → rescission — with a plain-English readout of what each one did to the curve.
The fixed order is a design decision, not a detail. Scenarios compose, and if the order is implicit, two people can run “the same” scenario and get two different curves with no way to see why. Documented order means the scenario is a recipe you can read and argue with:
- Funding lapse / outlay lag — obligations keep forming, cash doesn’t leave the door. The modeled outlay line lags the obligation line by an adjustable number of periods.
- Sequester — a percentage haircut applied to the obligation path.
- Continuing resolution — the haircut at CR scale: money moves, but at a capped pace, and the curve flattens exactly where the CR would.
- Rescission — the appropriation itself shrinks; budget authority drops, and everything downstream is capped at the new lower line.
You can watch, for example, what a mid-year CR does to an agency that front-loads: the obligation curve kinks at the CR period, the pacing percentage falls, and the unliquidated balance at year-end moves with it. That’s the whole “what does a CR actually do” question, as a picture you can steer instead of a paragraph about it.
What’s real and what’s modeled
The data only reports what happened, so two lines on the chart are modeled — and both are documented in code with self-tests:
| Line | Model |
|---|---|
| BAU continuation | actuals through the last reported period, then the observed average period-to-period pace continued, capped at budget authority |
| Modeled outlay | actual outlay pace with an adjustable lag |
One data wrinkle worth knowing: the source API does not report P1 (October) — period series start at P2. The module treats the series as contiguous from P2 and says so on the page, instead of pretending October exists.
For the in-progress fiscal year (FY2026 at the freeze, P2–P10 reported), the simulator projects the curve to year-end with two methods on identical footing and shows which one its backtest picked — that’s the next post, because the backtest is where the honest part lives.
Inside the VA
One panel goes one level deeper: the ten largest federal accounts (TAS codes) for FY2024, so the agency curve has a decomposition behind it — which accounts drive the obligation path, not just that it moves.
Work the levers here, then read the forecast post for how the year-end projection is actually earned.
— Joanna