<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>The Public Ledger</title><link>https://blog.jbledger.com/</link><description>Recent content on The Public Ledger</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 12 Sep 2026 17:00:00 +0000</lastBuildDate><atom:link href="https://blog.jbledger.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Teaching the Federal Budget in 48 Steps</title><link>https://blog.jbledger.com/posts/teaching-the-federal-budget-in-48-steps/</link><pubDate>Sat, 12 Sep 2026 17:00:00 +0000</pubDate><guid>https://blog.jbledger.com/posts/teaching-the-federal-budget-in-48-steps/</guid><description>Eleven modules, 48 narrated steps, one data spine: the training program that ties the whole portfolio together — what each module teaches, how every number is frozen and self-tested, and how to work through it.</description></item><item><title>The Same Data, Three Tools: Power BI, dbt, and DuckDB</title><link>https://blog.jbledger.com/posts/the-same-data-three-tools-power-bi-dbt-and-duckdb/</link><pubDate>Sat, 12 Sep 2026 16:00:00 +0000</pubDate><guid>https://blog.jbledger.com/posts/the-same-data-three-tools-power-bi-dbt-and-duckdb/</guid><description>One frozen snapshot of federal budget data through three modern stacks: a diffable Power BI model in TMDL, a dbt + DuckDB warehouse with 82 tests — and the five things the tests caught in real data.</description></item><item><title>A Copilot That Says No</title><link>https://blog.jbledger.com/posts/a-copilot-that-says-no/</link><pubDate>Sat, 12 Sep 2026 15:00:00 +0000</pubDate><guid>https://blog.jbledger.com/posts/a-copilot-that-says-no/</guid><description>A natural-language-to-SQL copilot with no LLM in it: a deterministic router, 40 pre-approved SELECTs, results frozen at build time, and a refusal taxonomy — out-of-scope, untracked-agency, injection, and more, each with a named reason.</description></item><item><title>Did CBO's Baseline Age Well?</title><link>https://blog.jbledger.com/posts/did-cbos-baseline-age-well/</link><pubDate>Sat, 12 Sep 2026 14:00:00 +0000</pubDate><guid>https://blog.jbledger.com/posts/did-cbos-baseline-age-well/</guid><description>Three published vintages of CBO&amp;rsquo;s 10-Year Budget Projections checked against the actuals CBO later reported: receipts +$197bn above baseline, the deficit $162bn smaller — if you know which rows are forecasts and which are restatements.</description></item><item><title>An Honest Backtest: Projecting a Fiscal Year-End Two Ways</title><link>https://blog.jbledger.com/posts/an-honest-backtest-projecting-a-fiscal-year-end-two-ways/</link><pubDate>Sat, 12 Sep 2026 12:30:00 +0000</pubDate><guid>https://blog.jbledger.com/posts/an-honest-backtest-projecting-a-fiscal-year-end-two-ways/</guid><description>Linear continuation vs. damped Holt-Winters, walked forward over 36 held-out periods. The winner&amp;rsquo;s margin is thin enough that a library convention flips it — so the page shows both methods and says so out loud.</description></item><item><title>What a Sequester, a CR, and a Lapse Do to the Money</title><link>https://blog.jbledger.com/posts/what-a-sequester-a-cr-and-a-lapse-do-to-the-money/</link><pubDate>Sat, 12 Sep 2026 11:00:00 +0000</pubDate><guid>https://blog.jbledger.com/posts/what-a-sequester-a-cr-and-a-lapse-do-to-the-money/</guid><description>The flow simulator follows a real appropriation — budget authority to obligations to outlays, month by month — and lets you pull the levers. Real data, frozen, with a scenario engine that applies each lever in a fixed, documented order.</description></item><item><title>Six Macros for the Monthly Close</title><link>https://blog.jbledger.com/posts/six-macros-for-the-monthly-close/</link><pubDate>Sat, 12 Sep 2026 09:30:00 +0000</pubDate><guid>https://blog.jbledger.com/posts/six-macros-for-the-monthly-close/</guid><description>A budget workbench in Excel: four template workbooks, six VBA macros for reconciliation, variance, and the close checklist — plus Python twins of the two computational macros so every number reproduces headlessly.</description></item><item><title>Putting the Federal Budget in a Database</title><link>https://blog.jbledger.com/posts/putting-the-federal-budget-in-a-database/</link><pubDate>Sat, 12 Sep 2026 08:00:00 +0000</pubDate><guid>https://blog.jbledger.com/posts/putting-the-federal-budget-in-a-database/</guid><description>USAspending, Treasury, and FRED — no API keys, one SQLite file, 46,042 rows, and an audit trail for every call. The spine the rest of my portfolio runs on, and the three things the public data got wrong along the way.</description></item><item><title>Why This Blog Exists</title><link>https://blog.jbledger.com/posts/welcome/</link><pubDate>Fri, 11 Sep 2026 00:00:00 +0000</pubDate><guid>https://blog.jbledger.com/posts/welcome/</guid><description>I&amp;rsquo;m a federal budget analyst. This is where I explain how federal money actually moves — from public sources only, every figure cited — and where I document building that analysis with the modern data stack.</description></item></channel></rss>