class: center, middle, inverse, title-slide .title[ # An Open Policy Analysis of “California Billionaires: Wealth, Taxes, and Wealth Tax Revenue Estimates” ] .subtitle[ ## by Jasper Boll, Emmanuel Saez and Gabriel Zucman (BSZ) ] --- 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. 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 { background: #fff3e0; border-left: 4px solid #e65100; padding: 0.5em 1em; margin: 0.5em 0; } .blue-box { background: #e3f2fd; border-left: 4px solid #1565c0; padding: 0.5em 1em; margin: 0.5em 0; } a.reflink { color: #3b4a5a; text-decoration: none; border-bottom: 1px dotted #9aa6b2; } a.reflink:hover { color: #1a237e; border-bottom-color: #1a237e; } .site-nav { font-size: 11px; color: #5b6873; margin: 0 0 14px; } .site-nav a { color: #1a237e; 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: #1a237e; } .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: #1a237e; } .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 { color: #e65100; font-weight: 600; } </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 style="background:#e8eaf6;"><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, mismatches found, 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** - paid 1% a year over **five years** - 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: **$103.8 billion.** 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 the whole headline: **$103.8 billion, once**, paid 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 they take with them 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 about 5; the [JR report](../../../rjkdc-analysis/site/) (Rauh, Jaros, Kearney, Doran and Cosso) counts it forever. That horizon is the biggest dispute between the two. ] --- 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 red is what it misses (34% of all billionaires in the lowest band alone). Fitted to the Forbes 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 the four who left **before** 1 January escape the tax, and 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; background:#fff3e0; border:2px solid #e65100; padding:1px 6px; font-weight:700;">$106.8B<br><span style="font-size:70%; color:#e65100;">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 BSZ's horizon of about 5 years at **3% a year**, the middle of the [JR report](../../../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[Orange 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: [the explorer](../explorer/).** --- name: part-repro class: center, middle, inverse # Part 4: What reproduces --- name: repro-checks # Checked, found, and not checked .pull-left[ **Checked.** 721 test expectations pass, 0 fail (August workbook, run 2026-10-14). 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. **Found.** - a block of 4 rows pasted twice in the workbook's billionaire list (244 counted, 240 real) - the missing + leavers scenario skips a deduction the missing billionaires scenario applies - two printed Table 5 cells round differently from the workbook ] .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)]