class: center, middle, inverse, title-slide .title[ # An Open Policy Analysis of “California Billionaires: Wealth, Taxes, and Wealth Tax Revenue Estimates” ] .subtitle[ ## A reproduction of the paper by Jasper Boll, Emmanuel Saez and Gabriel Zucman (BSZ, NBER, August 2026) ] --- name: study-brief # The study in brief Boll, Saez and Zucman (NBER WP 35218, May 2026, revised August 2026) document the wealth of California's billionaires, the taxes they pay, and what a one-time tax on them would raise. - **Wealth.** California billionaires held **$2.3 trillion** by mid-2026, as much as all the income on all Californians' tax returns. Up 144% from 2023 to 2025, driven by the AI boom. Since 1982 the real wealth of the top 0.001% has multiplied by 25; average real family income has doubled. - **Taxes.** They pay about **0.2% of their wealth** a year in California income tax ($3.2 billion a year over 2023 to 2025; the 2019 to 2025 average the estimate uses is $3.06 billion, Table 2), 2.4% of the state's income tax revenue over 2023 to 2025. - **The top four.** SEC filings for Page, Brin, Zuckerberg and Huang (Ellison through 2020) show nearly $1 trillion in business wealth, about 40% of the total, taxed at 0.04% of wealth a year. - **The proposal.** A one-off 5% tax, payable over five years, is small next to recent wealth gains and large next to taxes now paid. The authors estimate **about $100 billion** (Table 5 prints $104 billion; the workbook gives $103.8 billion), with minor effects on income tax. .small[The figures above are the paper's own, from its abstract, Table 2 and Table 5. Every number from the Deck Map onward is recomputed by the reproduction pipeline. NBER is the National Bureau of Economic Research, which circulates working papers.] --- name: opa-frame class: center, middle, opa-slide # What is an Open Policy Analysis? .opa-intro[ A policy analysis is **open** when a reader can see the one estimate it recommends, follow every step from the inputs to that estimate, and rerun it. The [Open Policy Analysis](https://doi.org/10.1093/scipol/scaa067) framework asks for three layers. ] <img src="../assets/opa/opa-details.png" class="opa-mark" alt=""> .opa-legend[ **1. Open Output**: [the explorer](../explorer/), one preferred estimate, the assumptions as dials<br> **2. Open Analysis**: [the report](../repro.html) and **this deck**, the chain from the Forbes list to the revenue, step by step, with the guesswork marked<br> **3. Open Materials**: [the repository](https://github.com/fhoces/opa-prop40/tree/main/bsz-analysis), the pipeline, its tests and every exported CSV ] .highlight-box[ These slides are the **second layer**. They do not add new estimates; they make the authors' own computation legible. ] .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-slide .highlight-box { max-width: 34em; margin: 1em auto 0; text-align: left; } .opa-mark { position: absolute; top: 26px; right: 34px; height: 190px; width: auto; opacity: 0.218; z-index: -1; pointer-events: none; } .steps table { width: 100%; font-size: 80%; border-collapse: collapse; } .steps td, .steps th { padding: 5px 8px; border-bottom: 1px solid #e2e7ec; text-align: left; } .steps td.num { text-align: right; font-family: monospace; } .guess { font-weight: 600; font-style: italic; } </style> .site-nav[ BSZ 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/bsz-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></tr> <tr><td style="padding:6px;"><b><a href="#part-policy">1. What is being estimated</a></b></td><td style="padding:6px;">The tax, and the two documents that make BSZ's case</td></tr> <tr><td style="padding:6px;"><b><a href="#part-steps">2. Five steps to $104 billion</a></b></td><td style="padding:6px;">The base scenario, built one line at a time</td></tr> <tr><td style="padding:6px;"><b><a href="#part-rows">3. Alternative scenarios</a></b></td><td style="padding:6px;">Three more scenarios, the bottom line, and how far each guess moves it</td></tr> <tr><td style="padding:6px;"><b><a href="#part-repro">4. What reproduces</a></b></td><td style="padding:6px;">Tests, the notes kept, and what is not checked</td></tr> <tr><td style="padding:6px;"><b><a href="#backup">Backup</a></b></td><td style="padding:6px;">How the Pareto extrapolation finds the missing billionaires</td></tr> </table> .blue-box[ Every number from here on comes from the R pipeline that reproduces the authors' August 2026 workbook cell by cell. The deck reads that pipeline's exported CSVs; nothing is retyped. ] --- name: part-policy class: center, middle, inverse # Part 1: What is being estimated --- # The tax, in one line .pull-left[ **Proposition 40** (the Billionaire Tax Act): - a **one-time** 5% tax on net worth - on California residents on **1 January 2026** - payable at once or in **five yearly installments** - wealth valued on 31 December 2026 Directly held real estate is excluded; business real estate is not. ] .pull-right[ **Two documents make BSZ's case** 1. Boll, Saez and Zucman (**BSZ**), NBER WP 35218, August 2026, with a public Excel workbook. Base scenario: **$104 billion as printed** ($103.8 billion reproduced). 2. Galle, Gamage, Saez and Shanske (**GGSS**), expert report, 20 July 2026: **$100 billion**. .highlight-box[ GGSS p.4: "a scoring of $104 billion that we round to $100 billion for simplicity." **The two are one computation.** ] ] --- name: part-steps class: center, middle, inverse # Part 2: Five steps to $104 billion --- # Steps 1 and 2: Taxable base and evasion **Step 1.** Forbes' real-time list on 1 July 2026: `\(n_0\)` = 250 California billionaires holding `\(W_0\)` = $2,307 billion. **Data**, read off Forbes that day. **Step 2.** Some wealth escapes: under-valued, hidden, or moved out in time. The authors assume a share `\(\alpha\)` = 10% of all of it together: `$$W^{\text{tax}} = (1-\alpha)\,W_0 = 0.9 \times 2,307 = 2,076.3$$` .highlight-box[ The 10% is <span class="guess">guesswork</span>. GGSS argue it is small: most of the wealth is listed stock, easy to value, and 250 taxpayers can each be audited. Nobody has measured it, because the tax has never existed. ] .small[Details: [report, step 2](../repro.html#step-2-avoidance-and-evasion).] --- # Step 3: the revenue `$$T = \tau \, W^{\text{tax}} = 0.05 \times 2,076.3 = 103.8$$` That is Table 5's row 1: **$103.8 billion reproduced (printed $104 billion), once**, payable in five yearly installments of about $20.8 billion. <img src="data:image/png;base64,#slides_files/figure-html/fig-waterfall-1.png" style="display: block; margin: auto;" /> --- name: step-4 # Step 4: selling assets to pay raises income tax Some billionaires will sell stock to pay the tax. The authors assume a share `\(s\)` = 1/3 of the tax is paid by selling. Not all of a sale is income. Only the **gain** is taxed: the sale price minus what the stock originally cost (its **basis**). The authors put the gain at `\(g\)` = 80% of each dollar sold, so the basis is the other 20%. Example: selling $100 of stock bought for $20 gives an $80 taxable gain. That gain is taxed at the top California rate on gains, `\(t_{cg}\)` = 13.3%: `$$E = s \cdot g \cdot t_{cg} \cdot T = \tfrac13 \times 0.8 \times 0.133 \times 103.8 = 3.68$$` .small[*E* is extra income tax, collected **once**, while the wealth tax is being paid.] --- name: step-5-who # Step 5, part 1: who leaves Step 2 took a share `\(\alpha\)` = 10% of the wealth out of the wealth tax. In dollars: 10% of $2,307 billion is **$230.70 billion**. That 10% mixes two behaviours. The authors split it in half, `\(m\)` = 50%: | Part of the escaped wealth | Share of all wealth | Wealth, $B | Still a CA resident? | |---|---:|---:|---| | Under-valued or hidden | `\(\alpha (1-m)\)` = 5% | 115.35 | yes | | Owner **moves out** of California | `\(\alpha \, m\)` = 5% | 115.35 | **no** | .highlight-box[ Step 2 already removed **both** rows from the **wealth tax**. Step 5 asks about a different tax, the **income tax**. Only the second row matters for it: people who still live in California keep paying California income tax; people who moved out stop. ] --- name: step-5-loss # Step 5, part 2: the income tax leavers take Today California billionaires pay `\(C\)` = $3.06 billion a year in California income tax. That is about $1.33 of income tax for every $1,000 of wealth they hold. The movers from the previous slide hold $115.35 billion. The authors assume they pay income tax at that same rate, so their income tax is the same 5% share: | | Wealth, $B | Income tax, $B a year | |---|---:|---:| | All California billionaires | 2,307 | 3.061 | | The movers (5% of the wealth, `\(\alpha \, m\)`) | 115.35 | 0.153 | Once they leave, California loses that income tax every year: `$$L = -\alpha \, m \, C = -0.10 \times 0.5 \times 3.06 = -0.153 \text{ per year}$$` .highlight-box[ The minus sign means revenue lost. `\(L\)` is **per year**, and Table 5 does not say for how many years. BSZ argue the losses should be temporary and give 5 years as an example (PDF p.27). The [JR analysis](../../../rjkdc-analysis/site/) (Jaros and Rauh, September 2026; first version by Rauh, Jaros, Kearney, Doran and Cosso) counts them forever, assuming leavers do not come back (chapter PDF p.32). ] --- name: part-rows class: center, middle, inverse # Part 3: Alternative scenarios --- name: row-2 # Missing billionaires scenario, part 1: Forbes misses small fortunes .pull-left[ <img src="data:image/png;base64,#slides_files/figure-html/pareto-fig-forbes-1.png" style="display: block; margin: auto;" /> ] .pull-right[ <img src="data:image/png;base64,#slides_files/figure-html/pareto-fig-typical-1.png" style="display: block; margin: auto;" /> ] Bars are shares of the 617 billionaires a Pareto tail puts above $1 billion. **Right:** in wealth and tax data, top fortunes usually follow a Pareto tail, where each step down holds many more people. **Left:** Forbes lists only part of each band below $4.5 billion. The pale violet is what it misses (34% of all billionaires in the lowest band alone). Fitted to the list above $4.5 billion, that shape implies **617** billionaires above $1 billion, not 249. .small[Method: Pareto extrapolation (BSZ pp.24 to 25, Appendix Figure A4). How it works, in the backup: [how BSZ detect the gap](#pareto-detail) · [from the gap to 617](#pareto-extrapolation).] --- name: row-2-revenue # Missing billionaires scenario, part 2: the revenue Filling the gap adds 368 people but only $615 billion: **148% more people, 28.2% more wealth**. The added fortunes are small, about $1.7 billion each. The scenario applies those percentages to the 1 July list: 250 become 620 billionaires, and the added wealth is 28.2% of $2,307 billion = **$650.35 billion**. | | $ billion | |---|---:| | Base scenario revenue (Steps 1 to 3) | 103.81 | | + 5% of the added wealth, after a higher 20% avoidance: 0.05 × 0.8 × 650.35 | + 26.01 | | − phase-in: the rate rises from 0 to 5% between $1.0 and $1.1 billion; 12.1% of the added wealth is in that band | − 1.97 | | **= Missing billionaires scenario** | **127.85** | .small[The ratio b is **research** (estimated from the list). The 20% avoidance for these less visible fortunes is <span class="guess">guesswork</span>. [Report: the missing billionaires scenario](../repro.html#row-2-adding-the-billionaires-forbes-misses).] --- # Leavers scenario: who may have left .pull-left[ <table> <thead> <tr> <th style="text-align:left;"> Person </th> <th style="text-align:left;"> Left </th> <th style="text-align:right;"> Wealth $B </th> <th style="text-align:right;"> Inc. tax lost $B/yr </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Page </td> <td style="text-align:left;"> before 1 Jan </td> <td style="text-align:right;"> 294.6 </td> <td style="text-align:right;"> 0.103 </td> </tr> <tr> <td style="text-align:left;"> Thiel </td> <td style="text-align:left;"> before 1 Jan </td> <td style="text-align:right;"> 27.3 </td> <td style="text-align:right;"> 0.055 </td> </tr> <tr> <td style="text-align:left;"> Hankey </td> <td style="text-align:left;"> before 1 Jan </td> <td style="text-align:right;"> 8.2 </td> <td style="text-align:right;"> 0.016 </td> </tr> <tr> <td style="text-align:left;"> Kalanick </td> <td style="text-align:left;"> before 1 Jan </td> <td style="text-align:right;"> 3.6 </td> <td style="text-align:right;"> 0.007 </td> </tr> <tr> <td style="text-align:left;"> Brin </td> <td style="text-align:left;"> later </td> <td style="text-align:right;"> 271.7 </td> <td style="text-align:right;"> 0.078 </td> </tr> <tr> <td style="text-align:left;"> Zuckerberg </td> <td style="text-align:left;"> later </td> <td style="text-align:right;"> 210.3 </td> <td style="text-align:right;"> 0.100 </td> </tr> <tr> <td style="text-align:left;"> Fang </td> <td style="text-align:left;"> later </td> <td style="text-align:right;"> 1.5 </td> <td style="text-align:right;"> 0.003 </td> </tr> </tbody> </table> ] .pull-right[ Assume four (Page, Thiel, Hankey, Kalanick) left **before** 1 January, which BSZ call aggressive, and escape the tax; three more leave later. Revenue falls to **$88.8 billion**; the yearly income tax loss rises to **$0.52 billion**. The **missing + leavers** scenario applies this and the missing billionaires scenario together. .highlight-box[ Why so little income tax? SEC filings show the top three pay very little state income tax relative to their wealth: they rarely sell. Whether any of them has **legally** left is a <span class="guess">legal judgment</span>, not data. ] ] --- name: bottom-line # What the tax collects, and what it costs <table> <thead> <tr> <th style="text-align:left;"> Scenario </th> <th style="text-align:right;"> Wealth tax collected<br>(once) </th> <th style="text-align:right;"> Extra income tax<br>from selling assets<br>(once) </th> <th style="text-align:right;"> Income tax lost<br>(present value, 5 years) </th> <th style="text-align:right;"> <b>Total</b> </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> <b>Base</b> </td> <td style="text-align:right;"> <b>$103.8B</b> </td> <td style="text-align:right;"> <b>+$3.68B</b> </td> <td style="text-align:right;"> <b>−$0.70B</b> </td> <td style="text-align:right;"> <span style="display:inline-block; border:1.2px solid #111111; padding:1px 6px; font-weight:700;">$106.8B<br><span style="font-size:70%; color:#111111;">MAIN ESTIMATE<sup>1</sup></span></span> </td> </tr> <tr> <td style="text-align:left;"> Missing billionaires </td> <td style="text-align:right;"> $127.9B </td> <td style="text-align:right;"> +$4.53B </td> <td style="text-align:right;"> −$0.90B </td> <td style="text-align:right;"> $131.5B </td> </tr> <tr> <td style="text-align:left;"> Leavers </td> <td style="text-align:right;"> $88.8B </td> <td style="text-align:right;"> +$3.15B </td> <td style="text-align:right;"> −$2.36B </td> <td style="text-align:right;"> $89.6B </td> </tr> <tr> <td style="text-align:left;"> Missing + leavers </td> <td style="text-align:right;"> $114.8B </td> <td style="text-align:right;"> +$4.07B </td> <td style="text-align:right;"> −$2.56B </td> <td style="text-align:right;"> $116.3B </td> </tr> </tbody> </table> .highlight-box[ The income tax loss recurs every year the leavers stay away, so it is a **present value** over a horizon of 5 years (BSZ's example) at **3% a year**, the middle of the [JR analysis](../../../rjkdc-analysis/site/)'s 1.5% to 4.5% range (BSZ give no rate). Change any assumption and watch the main estimate move: **[the explorer](../explorer/)**. ] .small[<sup>1</sup> Not the authors' choice: BSZ's headline is the wealth tax alone, about $100 billion (Table 5 prints $104 billion; reproduced as $103.8 billion). This OPA uses the total as its main estimate because it compares more directly with the [JR analysis](../../../rjkdc-analysis/site/)'s net present value; the [comparison overview](../../../index.html) puts both on one definition.] --- name: part-guess # How far does each guess move the main estimate? <img src="data:image/png;base64,#slides_files/figure-html/tornado-1.png" style="display: block; margin: auto;" /> .small[The vertical line: the main estimate, $106.8 billion (wealth tax + extra income tax − income tax lost). Of the five guesses, 4 move it on their own: avoidance and evasion, share that is leaving, share paid by selling and aggressive leavers. Counting the missing billionaires is research, and only raises it. Every input and its origin: [report](../repro.html#every-input-by-origin). Try any combination of the guesses in **[the explorer](../explorer/)**.] --- name: part-repro class: center, middle, inverse # Part 4: What reproduces --- name: repro-checks # Checked, reproduced, and not checked .pull-left[ **Checked.** 794 test expectations pass, 0 fail (August workbook, run 2026-10-16). They compare every formula cell the pipeline re-derives against the workbook's own cached value, check the Python twin and the SQL queries against R, and pin the explorer to Table 5. **Reproduces.** The code reproduces the paper's published results. Seven notes are kept for transparency ([materials page](../materials.html#what-the-checks-found)); none is a failure to reproduce. Three of them: - Appendix Table A1 annualizes 1982 to 2026 over 43 years, where the workbook's own Table 1 uses 44 - the missing + leavers scenario skips a deduction the missing billionaires scenario applies - two printed Table 5 cells are one unit lower in the last digit than the workbook's rounded value ] .pull-right[ **Not checked.** - the tax statistics and the authors' hand-filled ownership shares, taken as the workbook records them. The Forbes lists, SEC Form 4 filings and venture capital panels are rebuilt from the authors' raw data in [SQL](https://github.com/fhoces/opa-prop40/tree/main/bsz-analysis/sql) - GGSS has no workbook; its $100 billion is BSZ's base scenario, rounded .blue-box[ The reproduction shows the arithmetic from the authors' inputs to their tables is what the paper says. It cannot show the inputs are right, and it cannot settle the guesses. ] .small[[Materials page](../materials.html) · [report, what reproduces](../repro.html#what-reproduces)] ] --- name: backup class: center, middle, inverse # Backup slides --- name: pareto-detail # Backup: the Pareto test, in numbers Forbes may miss smaller fortunes. BSZ test this with one ratio, **b** = the average fortune above a cutoff ÷ the cutoff. For a Pareto distribution, the usual shape of top wealth, **b** is the same at every cutoff. The Forbes list the workbook used (15 April 2026): <table style="font-size:80%"> <thead> <tr> <th style="text-align:left;"> Cutoff </th> <th style="text-align:right;"> People above it </th> <th style="text-align:right;"> Their wealth, $B </th> <th style="text-align:right;"> Average fortune </th> <th style="text-align:right;"> b </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> $10B </td> <td style="text-align:right;"> 33 </td> <td style="text-align:right;"> 1,469 </td> <td style="text-align:right;"> $44.52B </td> <td style="text-align:right;"> 4.45 </td> </tr> <tr> <td style="text-align:left;"> $4.5B </td> <td style="text-align:right;"> 89 </td> <td style="text-align:right;"> 1,827 </td> <td style="text-align:right;"> $20.53B </td> <td style="text-align:right;"> 4.56 </td> </tr> <tr> <td style="text-align:left;"> $3B </td> <td style="text-align:right;"> 125 </td> <td style="text-align:right;"> 1,957 </td> <td style="text-align:right;"> $15.65B </td> <td style="text-align:right;"> 5.22 </td> </tr> <tr> <td style="text-align:left;"> $2B </td> <td style="text-align:right;"> 172 </td> <td style="text-align:right;"> 2,068 </td> <td style="text-align:right;"> $12.02B </td> <td style="text-align:right;"> 6.01 </td> </tr> <tr> <td style="text-align:left;"> $1B </td> <td style="text-align:right;"> 249 </td> <td style="text-align:right;"> 2,182 </td> <td style="text-align:right;"> $8.76B </td> <td style="text-align:right;"> 8.76 </td> </tr> </tbody> </table> .highlight-box[ Above $4.5 billion, b stays near 4.48. Below it, b climbs to 8.8: too few people for the wealth above them, the sign of missing small fortunes. If b stayed at 4.48 all the way down, there would be **617** billionaires above $1 billion, not 249. ] .small[[← Back to the missing billionaires scenario](#row-2)] --- name: pareto-extrapolation # Backup: from b to 617 billionaires In a Pareto tail, the number of people above a cutoff `\(w\)` falls like `\(w^{-a}\)`. The exponent `\(a\)` and the ratio b describe the same shape: `\(b = a/(a-1)\)`, so `$$a = \frac{b}{b-1} = \frac{4.48}{3.48} = 1.29$$` BSZ hold b at its value above $4.5 billion and extend the rule down from the 89 billionaires above $4.5 billion: `$$N(w) = 89 \times \left(\frac{4.5}{w}\right)^{1.29}, \qquad N(1) = 617$$` <table style="font-size:85%"> <thead> <tr> <th style="text-align:left;"> Cutoff </th> <th style="text-align:right;"> Forbes lists </th> <th style="text-align:right;"> Pareto tail implies </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> $4.5B </td> <td style="text-align:right;"> 89 </td> <td style="text-align:right;"> 89 </td> </tr> <tr> <td style="text-align:left;"> $2B </td> <td style="text-align:right;"> 172 </td> <td style="text-align:right;"> 253 </td> </tr> <tr> <td style="text-align:left;"> $1B </td> <td style="text-align:right;"> 249 </td> <td style="text-align:right;"> 617 </td> </tr> </tbody> </table> .small[The same rule gives the added people's wealth: $615 billion (BSZ p.25). [← Back to the scenario](#row-2)]