class: center, middle, inverse, title-slide .title[ # The Net Present Value of the California Billionaire Tax Act ] .subtitle[ ## Teaching deck: JR’s fiscal estimate of California Proposition 40 (Jaros and Rauh, NBER, September 2026; first version by Rauh, Jaros, Kearney, Doran and Cosso)
This OPA site:
AI generated, partially reviewed
] --- name: opa-frame class: center, middle, opa-slide # An Open Reproduction .opa-intro[ The estimate of California's Billionaire Tax Act by Jaros and Rauh (NBER, September 2026), revising the first version by Rauh, Jaros, Kearney, Doran and Cosso, rebuilt from the authors' own code and data and taught step by step, following the [Open Policy Analysis](https://doi.org/10.1093/scipol/scaa067) framework. ] <img src="../assets/opa/opa-details.png" class="opa-mark" alt=""> .opa-legend[ **Open Output**: [the explorer](../explorer/), the mean NPV for every combination of seven dials (the authors' five inputs and two settings this OPA adds)<br> **Open Analysis**: [the report](../repro.html), and this deck<br> **Open Materials**: [the repository](https://github.com/fhoces/opa-prop40/tree/main/rjkdc-analysis), the pipeline, its tests and every exported CSV ] .credit[OPA done by [Fernando Hoces de la Guardia](https://fhoces.github.io), using [agentic coding tools](../index.html#how-ai-was-used)] --- <style type="text/css"> .remark-code, .remark-inline-code { font-size: 80%; } .remark-slide-content { padding: 1em 2em; } .small { font-size: 80%; } .tiny { font-size: 65%; } .small table { font-size: 70%; } .tiny table { font-size: 62%; width: 100%; } .highlight-box { border-left: 1px solid #666666; padding: 0.5em 1em; margin: 0.5em 0; } .blue-box { border-left: 1px solid #666666; padding: 0.5em 1em; margin: 0.5em 0; } a.reflink { color: #3b4a5a; text-decoration: none; border-bottom: 1px dotted #9aa6b2; } a.reflink:hover { color: #1d4e89; border-bottom-color: #1d4e89; } .site-nav { font-size: 11px; color: #5b6873; margin: 0 0 14px; } .site-nav a { color: #1d4e89; text-decoration: none; } .site-nav a:hover { text-decoration: underline; } .remark-slide-content.opa-slide { position: relative; z-index: 0; overflow: hidden; } /* Author credit, pinned near the slide's lower-left corner, above the fixed "Overview" link that the header script places in that corner. */ .opa-slide .credit { position: absolute; left: 2em; bottom: 48px; font-size: 65%; color: #5b6873; } .opa-slide .credit a { color: #1d4e89; } .opa-intro { font-size: 92%; max-width: 30em; margin: 0 auto 1.1em; } .opa-legend { font-size: 85%; line-height: 1.75; max-width: 34em; margin: 0 auto; text-align: left; } .opa-intro a, .opa-legend a { color: #1d4e89; } .opa-mark { position: absolute; top: 26px; right: 34px; height: 190px; width: auto; opacity: 0.218; z-index: -1; pointer-events: none; } .two { display: flex; gap: 2em; } .two > div { flex: 1; } .big { font-size: 180%; font-weight: 600; margin: 0.1em 0; } table.dt { border-collapse: collapse; width: 100%; font-size: 80%; } table.dt td, table.dt th { padding: 4px 8px; border-bottom: 1px solid #e2e7ec; text-align: right; } table.dt td:first-child, table.dt th:first-child { text-align: left; } .og { font-size: 70%; padding: 1px 6px; border: 1px dashed #444444; color: #444444; } .og.data { border-style: solid; } .footnote { font-size: 60%; color: #5b6873; bottom: 3.6em; left: 3.4em; padding-right: 6em; } .badge-line { font-size: 60%; font-weight: 400; } .badge-line .ai-badge { font-size: 0.85em; } </style> .site-nav[ JR analysis of California Proposition 40: [Open Output (the explorer)](../explorer/) · Open Analysis: [Report](../repro.html) and Slides (here) · [Open Materials](https://github.com/fhoces/opa-prop40/tree/main/rjkdc-analysis) · [Overview](../index.html) ] # Deck Map <table style="width:100%; font-size:85%; border-collapse:collapse;"> <tr><th style="text-align:left; padding:6px;">Part</th><th style="text-align:left; padding:6px;">What it covers</th><th style="padding:6px;">Starts at</th></tr> <tr><td style="padding:6px;"><b>1. The claim</b></td><td style="padding:6px;">What is being estimated, the one equation, the headline number</td><td style="text-align:center;"><a href="#part-claim">go</a></td></tr> <tr><td style="padding:6px;"><b>2. The revenue</b></td><td style="padding:6px;">From $94B before anyone leaves to "about $30B" (Sec 4)</td><td style="text-align:center;"><a href="#part-revenue">go</a></td></tr> <tr><td style="padding:6px;"><b>3. The income tax</b></td><td style="padding:6px;">How much billionaires pay each year, and why it is a range (Sec 5.1)</td><td style="text-align:center;"><a href="#part-income">go</a></td></tr> <tr><td style="padding:6px;"><b>4. For ever</b></td><td style="padding:6px;">The perpetuity and the break-even share (Secs 5.2 and 5.3)</td><td style="text-align:center;"><a href="#part-forever">go</a></td></tr> <tr><td style="padding:6px;"><b>5. The headline</b></td><td style="padding:6px;">The Monte Carlo, and its exact expectation (Sec 5.4)</td><td style="text-align:center;"><a href="#part-mc">go</a></td></tr> <tr><td style="padding:6px;"><b>6. What to argue about</b></td><td style="padding:6px;">Inputs by origin, and the reproduction notes</td><td style="text-align:center;"><a href="#part-argue">go</a></td></tr> </table> .blue-box[ Every number in this deck comes from the project's `{targets}` pipeline, which reproduces the authors' own workbook, person-level file and R scripts (github.com/bjaros20/wealth_tax, commit `25e84dd`). `{targets}` is an R package that runs the pipeline's steps in order and records which outputs are current. The deck reads that pipeline's store; nothing here is retyped except the paper's printed values. ] --- name: part-claim class: center, middle, inverse # Part 1: The claim --- # What is being estimated **Proposition 40** taxes, once, 5% of the net worth of billionaires who lived in California on 1 January 2026 (payable over five years). The [BSZ analysis](../../../bsz-analysis/site/) estimates it at about $100 billion. The JR analysis asks a different question: **is the state better off, counting what it loses?** `$$NPV = WT - f \cdot \frac{C}{r - g}$$` .pull-left[ - `\(WT\)`: wealth tax collected, **once** - `\(C\)`: income tax the billionaires pay, **per year** - `\(f\)`: share of that income tax that leaves the state - `\(r - g\)`: the interest rate minus the lost tax's yearly growth (a real rate); `\(C/(r-g)\)` is a growing stream of `\(C\)` **for ever**, valued today ] .pull-right[ .highlight-box[ The whole argument is a race between a one-time sum and a perpetuity. At `\(r - g\)` = 1.5%, losing one dollar a year for ever, growing at `\(g\)`, costs as much as losing 67 dollars today. ] ] --- name: headline # The headline **NBER chapter c15504** (Tax Policy and the Economy, vol. 41), 22 September 2026: Jaros and Rauh, litigation-weighted (the first version, March 2026, was by Rauh, Jaros, Kearney, Doran and Cosso) .big[−$38.9B] mean NPV; 85.2% of outcomes negative (the share of draws below zero, which moves with the ranges drawn, so not a probability; PDF p.35, Figure 3 note; 85% in the text, p.1)<sup>1</sup><br> revenue "approximately 30 billion" ($28.4B to $35.6B) Reproduced: −38.89 (the authors' seeded run, replayed draw for draw) and −38.98 (the exact expectation of the same draws). .blue-box[ This is the **main estimate** of this Open Policy Analysis. The rest of the deck builds it: the revenue (Part 2), the income tax (Part 3), the perpetuity (Part 4) and the Monte Carlo that averages them (Part 5). ] .footnote[<sup>1</sup> The authors' first version (Rauh, Jaros, Kearney, Doran and Cosso, Hoover Institution, SSRN 6340778, March 2026) printed −$24.7B with 71% negative. The pipeline reproduces it too; see the appendix of [the report](../repro.html#appendix-first-version).] --- name: part-revenue class: center, middle, inverse # Part 2: The revenue --- name: revenue # From $94 billion to about $30 billion (Sec 4) <img src="data:image/png;base64,#slides_files/figure-html/revchain-1.png" style="display: block; margin: auto;" /> .small[ Each step sums 5% of each stayer's net worth, minus their home. The first four bars come out of the authors' workbook and person-level file. The last multiplies by `\(q\)` = 0.50, the chance the Act survives in court, borrowed from an accounting rule (ASC 740-10): a judgement, not an estimate. Printed: $29.6 billion, range $28.4 to $35.6 billion (PDF p.23). ] --- # The semi-elasticity: a 5-point tax, how much base leaves? `$$\varepsilon = \frac{\%\Delta\,\text{base}}{\Delta\,\text{rate (points)}}$$` .pull-left[ - **Observed, 7 departures:** the grown base falls 28.6%, so `\(\varepsilon\)` = 5.72 (printed 5.73, PDF p.22, from the ceiling rounded to 72), a floor - **Swiss literature** (Brülhart et al. 2022): 0.24 × 43 = 10.32; in log form, 41.1% of the base leaves (PDF p.24) ] .pull-right[ .highlight-box[ Two things to argue with: the Swiss estimate comes from a **recurring** tax, applied here to a **one-time** one (the authors argue taxpayers treat it as the start of a recurring one); and this check does not enter the Monte Carlo, which draws revenue from 0 to 72. ] ] --- name: part-income class: center, middle, inverse # Part 3: The income tax --- name: income-tax-c # How much do billionaires pay each year? (Sec 5.1) .pull-left[ **Upper bound.** Fit a Pareto tail to the Franchise Tax Board's (FTB, the state tax agency) filer counts above 1M to 10M dollars of income: `\(\hat\alpha\)` = 1.44. If the 212 billionaires *are* the 212 highest earners, they pay **$5.76 billion** a year. **But** wealth is not income: many billionaires realise little in a given year. So place them at random among the top `\(K\)` filers (Table 9). ] .pull-right[ <img src="data:image/png;base64,#slides_files/figure-html/table8-1.png" style="display: block; margin: auto;" /> ] .highlight-box[ The authors call `\(K \approx 500\)` "a reasonable lower bound": $3.31B. So `\(C \in [3.3, 5.8]\)`: a range between a model's upper bound and a **judgement** about the floor. ] --- name: part-forever class: center, middle, inverse # Part 4: For ever --- name: perpetuity # The perpetuity multiplier (Sec 5.2) <img src="data:image/png;base64,#slides_files/figure-html/mult-1.png" style="display: block; margin: auto;" /> .small[ The paper values a growing loss, so the rate is `\(r - g\)`, anchored at 1.5% (the S&P 500 dividend yield). The Monte Carlo draws `\(r - g\)` from 1.5% to 4.5%; one sentence after it writes `\(C/r\)` ([note 3](../materials.html#reproduction-notes)). The authors count the loss **for ever** because the Act permanently lifts the cap on taxing intangible property (PDF p.32). The [BSZ analysis](../../../bsz-analysis/site/) (Boll, Saez and Zucman) objects that it lasts only a few years (five is its example). ] --- name: break-even # The break-even departure share (Sec 5.3) `$$NPV = 0 \quad\Longleftrightarrow\quad x^* = \frac{WT \cdot (r - g)}{C}$$` If less than `\(x^*\)` of the income tax base leaves, the tax pays for itself. Table 10, at the paper's central revenue, $36 billion (= 0.5 × 72), and `\(C\)` = $4.55 billion: <table class="dt"><tr><th></th><th>1.5%</th><th>3.0%</th><th>4.5%</th></tr><tr><td>x*</td><td>11.9%</td><td>23.7%</td><td>35.6%</td></tr></table> .highlight-box[ The draw's central departure share is 0.45, above `\(x^*\)` at every rate. That is why the mean NPV comes out negative. Every cell matches the printed Table 10 (PDF p.34). ] --- name: part-mc class: center, middle, inverse # Part 5: The headline --- name: monte-carlo # The Monte Carlo behind −38.9 (Sec 5.4) .pull-left[ Draw 100,000 times, independently: - revenue `\(WT \sim U[0, 72]\)` - income tax `\(C \sim U[3.3, 5.8]\)` - rate `\((r - g) \sim U[0.015, 0.045]\)` - departure share `\(f \sim U[0.3, 0.6]\)` .small[ Revenue is drawn **from zero**: mean 36 = 0.5 × 72. The code never multiplies by `\(q\)`; this zero is its only trace of `\(q\)`, and the chapter also grounds it in unreported departures (fn.32; [note 5](../materials.html#reproduction-notes)). A uniform draw from 0 has the same **mean** as a coin flip on 72, not the same distribution. Lost income tax is **not** scaled by `\(q\)`: leavers do not come back if the Act is struck down. ] ] .pull-right[ <img src="data:image/png;base64,#slides_files/figure-html/hist-1.png" style="display: block; margin: auto;" /> ] .blue-box[ The draws are independent, so the mean has a closed form: −38.98. The printed −38.9 is the authors' seeded run (−38.89), not that expectation. The explorer shows the exact expectation for every setting. ] --- name: part-argue class: center, middle, inverse # Part 6: What to argue about --- name: seven-inputs # The seven inputs that move the answer <table class="dt"><tr><th>Input</th><th>Values in the explorer</th><th>Origin</th></tr><tr><td>Lowest revenue the draw can pick ($B)</td><td>0; 35; 45.59</td><td><span class='og guesswork'>guesswork</span></td></tr><tr><td>Highest revenue the draw can pick ($B)</td><td>55.10; 67.51; 72</td><td><span class='og data'>data</span></td></tr><tr><td>Extra litigation weight on the revenue</td><td>1 (none extra); 0.75; 0.50</td><td><span class='og guesswork'>guesswork</span></td></tr><tr><td>Billionaires' yearly California income tax ($B)</td><td>3.3 to 5.8; 3.3 only; 5.8 only</td><td><span class='og guesswork'>guesswork</span></td></tr><tr><td>Discount rate net of growth</td><td>1.5% to 4.5%; 1.5% only; 4.5% only</td><td><span class='og guesswork'>guesswork</span></td></tr><tr><td>Share of the income tax base that leaves</td><td>tied to revenue; 0.30 to 0.60; 0.283 fixed</td><td><span class='og guesswork'>guesswork</span></td></tr><tr><td>Further growth of the lost income tax</td><td>0; 0.5%; 1.0%</td><td><span class='og guesswork'>guesswork</span></td></tr></table> .highlight-box[ 4 of the authors' 5 inputs are guesswork; the litigation weight and further growth rows are this OPA's settings. The data (Forbes, FTB, the Pareto fit) set the scale; the sign is decided by the guesses. [Try them in the explorer](../explorer/). ] --- name: reproduction-notes # Reproduction notes: text, README and code .small[ The code reproduces the chapter's published results. These notes record where the text, the README and the code describe a step differently: - **Note 3** (documentation). The sentence after eq. 19 writes C/r where the draw is (r - g) - **Note 4** (rounded or typed input). NBER ceiling: one quantity at three roundings (72 in the script, 72.06 in the README and eq. 4, 72.05 in `final.csv`) - **Note 5** (documentation). The litigation weight `q = 0.50` is carried by the revenue draw, not by a multiplier in the code - **Note 6** (rounded or typed input). Baseline revenue: the paper types 94.20 and builds on it; the workbook's own sum is 94.30 - **Note 10** (documentation). The top 212's share of bracket tax is printed as 39.0% and as 38.8% for one formula ] .blue-box[ None is a failure to reproduce a printed result. This OPA reproduces the code as shipped and records each note rather than fixing it. Full text on the [materials page](../materials.html#reproduction-notes); every one is pinned by a test.<sup>1</sup> ] .footnote[<sup>1</sup> Five more concern only the authors' first version (March 2026): notes 1, 2, 7, 8, 9.]