class: center, middle, inverse, title-slide .title[ # Prop 40, the comparison: why the two estimates differ ] .subtitle[ ## Teaching deck: the BSZ analysis (Boll, Saez and Zucman, August 2026) and the JR analysis (Jaros and Rauh, NBER, September 2026) on one common output ] --- name: opa-frame class: center, middle, opa-slide # An Open Comparison .opa-intro[ Two analyses of California's Billionaire Tax Act reach opposite signs. This deck puts both on one common output and walks from one to the other, one disputed input at a time, 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 two main estimates with one slider per disputed input<br> **Open Analysis**: [the report](../repro.html), and this deck<br> **Open Materials**: [the repository](https://github.com/fhoces/opa-prop40/tree/main/comparison) and [the materials page](../materials.html), the code, 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%; } .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; } .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-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%; margin-top: 0.5em; } 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; } table.dt tr.tot td { font-weight: 600; border-top: 2px solid #5b6873; } table.dt th { background: #e8eaf6; } .og { font-size: 80%; padding: 1px 6px; border-radius: 2px; border: 1px solid #d98a5b; color: #b4541f; white-space: nowrap; } .og.data { border-color: #6b9bd6; color: #1f5fae; } .og.scenario { border-color: #8a8f96; color: #4a5058; } .footnote { font-size: 60%; color: #5b6873; bottom: 3.6em; left: 3.4em; padding-right: 6em; } .pseudo-eq { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: center; gap: 6px 8px; margin: 0.8em 0 0.6em; } .pseudo-eq .term { display: inline-flex; flex-direction: column; align-items: center; min-width: 4.5em; max-width: 7.2em; text-align: center; border: 1px solid #c5cae9; border-radius: 6px; padding: 4px 6px; background: #fafbff; } .pseudo-eq .term b { font-size: 120%; font-weight: 600; } .pseudo-eq .term small { font-size: 62%; color: #5b6873; line-height: 1.3; } .pseudo-eq .op { font-size: 130%; color: #5b6873; padding-top: 8px; } .claims { font-size: 85%; } .claims td, .claims th { vertical-align: top; text-align: left !important; } table.dt td.l, table.dt th.l { text-align: left; } .nb { white-space: nowrap; } </style> .site-nav[ Part of the comparison of the two analyses of California Proposition 40: [Overview](../../../index.html) · Open Output: [Explorer](../explorer/) · Open Analysis: [Report](../repro.html) and Slides (here) · [Open Materials](https://github.com/fhoces/opa-prop40/tree/main/comparison) ] # 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><th style="padding:6px;">Starts at</th></tr> <tr><td style="padding:6px;"><b>1. Two estimates</b></td><td style="padding:6px;">The two main estimates, and why they cannot be read against each other as printed</td><td style="text-align:center;"><a href="#estimates">go</a></td></tr> <tr><td style="padding:6px;"><b>2. One function</b></td><td style="padding:6px;">The common output, and one estimating function built up one term at a time</td><td style="text-align:center;"><a href="#term-wealth">go</a></td></tr> <tr><td style="padding:6px;"><b>3. The bridge</b></td><td style="padding:6px;">Switching one input at a time, Shapley values, and the waterfall</td><td style="text-align:center;"><a href="#shapley-toy">go</a></td></tr> <tr><td style="padding:6px;"><b>4. The main differences</b></td><td style="padding:6px;">Litigation, the horizon and the share of income tax lost, then the smaller steps</td><td style="text-align:center;"><a href="#pseudo-eq">go</a></td></tr> <tr><td style="padding:6px;"><b>5. Checks</b></td><td style="padding:6px;">The one published comparison (Hoopes 2026), what reproduces, where to go next</td><td style="text-align:center;"><a href="#hoopes">go</a></td></tr> </table> .blue-box[ Every number in this deck is computed when the deck is rendered, from the files the comparison's code writes (`comparison/export/r/`) and the two analyses' own exported inputs and outputs. Nothing is retyped except the authors' printed values. ] --- name: estimates # Two analyses, two main estimates .pull-left[ **The BSZ analysis** (Boll, Saez and Zucman, NBER Working Paper 35218, August 2026) .big[<span class="nb">$106.8B</span>] Net total over 5 years, in today's dollars. It is the wealth tax collected (<span class="nb">$103.8B</span>; the paper prints <span class="nb">$104B</span>, Table 5 row 1), plus the income tax from assets sold to pay it, minus the income tax lost to those who leave.<sup>1</sup> ] .pull-right[ **The JR analysis** (Jaros and Rauh, NBER chapter c15504, September 2026) .big[<span class="nb">−$38.9B</span>] Mean net present value. It is the wealth tax minus the income tax lost for ever, averaged over the authors' Monte Carlo (a simulation that draws the uncertain inputs at random many times and averages the results). ] .blue-box[ **Net present value**: all gains minus all losses, with each future dollar converted to its value today (discounted). One analysis says the state gains about <span class="nb">$107B</span>. The other says it loses about <span class="nb">$39B</span>. ] .footnote[<sup>1</sup> BSZ's own headline is the wealth tax alone. The net total is this OPA's choice, so both main estimates answer the same question. The BSZ overview discounts at 3%; this deck averages over a rate range ([the common output](#common-output)); both give <span class="nb">$106.8B</span>.] --- name: common-output # Why the printed numbers are not comparable The BSZ paper asks **how much the tax collects**. The JR paper asks **whether the state is better off**, once income tax lost to departures is subtracted. So the comparison defines two common outputs and estimates both analyses on each: .highlight-box[ **(a) gross revenue** = the one-time wealth tax collected<br> **(b) net fiscal effect** = (a) + extra income tax from assets sold to pay the tax − income tax lost to departures, counted for H years and discounted ] <table class="dt"><tr><th>Analysis</th><th>(a) gross revenue</th><th>(b) net fiscal effect</th><th>What the authors print</th></tr><tr><td>BSZ analysis</td><td><span class="nb">$103.8B</span></td><td><b><span class="nb">$106.8B</span></b></td><td><span class="nb">$104B</span> revenue (Table 5 row 1); no net figure</td></tr><tr><td>JR analysis</td><td><span class="nb">$36.0B</span></td><td><b><span class="nb">−$39.0B</span></b></td><td>mean NPV <span class="nb">−$38.9B</span>; revenue "approximately <span class="nb">$30B</span>"</td></tr></table> .small[ The horizon H is itself disputed: 5 years for the BSZ analysis, for ever for the JR analysis. Discounting uses the JR analysis's rate, drawn between 1.5% and 4.5%; the BSZ analysis takes no position on the rate. Output (b) is the one both main estimates answer, so the rest of the deck uses it. For the JR analysis both outputs are exact averages of the authors' Monte Carlo, so (b) is <span class="nb">−$39.0B</span> against the <span class="nb">−$38.9B</span> of their one seeded run. ] --- name: term-wealth # One function, term 1: the wealth tax collected .highlight-box[ **Wealth tax collected** = 5% × the base × (1 − share already departed) × (1 − avoidance allowance) × chance the tax survives litigation ] <table class="dt"><tr><th>Step</th><th>BSZ factor</th><th>BSZ running total</th><th>JR factor</th><th>JR running total</th></tr><tr><td> Wealth on the list</td><td><span class="nb">$2,307B</span></td><td><span class="nb">$2,307B</span></td><td><span class="nb">$2,027B</span></td><td><span class="nb">$2,027B</span> </td></tr><tr><td> × tax rate</td><td>5%</td><td><span class="nb">$115.4B</span></td><td>5%</td><td><span class="nb">$101.4B</span> </td></tr><tr><td> × (1 − real-estate deduction)</td><td>100%</td><td><span class="nb">$115.4B</span></td><td>99.5%</td><td><span class="nb">$100.9B</span> </td></tr><tr><td> × (1 − share already departed)</td><td>100%</td><td><span class="nb">$115.4B</span></td><td>71.4%</td><td><span class="nb">$72.0B</span> </td></tr><tr><td> × (1 − avoidance allowance)</td><td>90%</td><td><span class="nb">$103.8B</span></td><td>100%</td><td><span class="nb">$72.0B</span> </td></tr><tr><td> × chance it survives litigation, <i>q</i></td><td>100%</td><td><span class="nb">$103.8B</span></td><td>50%</td><td><span class="nb">$36.0B</span> </td></tr><tr class="tot"><td>= (a) wealth tax collected</td><td></td><td><span class="nb">$103.8B</span></td><td></td><td><span class="nb">$36.0B</span></td></tr></table> .small[ The BSZ base is California's billionaires on 1 July 2026, non-US citizens included. The JR base is the 2025 Forbes list grown 7% to 31 December 2026, net of real estate, after seven confirmed departures. The **litigation weight *q*** is the chance the Act survives a court challenge; the revenue is multiplied by it. ] --- name: term-loss # One function, term 2: the income tax lost .highlight-box[ **Income tax lost** = share lost × yearly income tax × years counted, discounted ] <table class="dt"><tr><th>Step</th><th>BSZ analysis</th><th>JR analysis</th></tr><tr><td>Share of billionaire income tax lost</td><td>5%</td><td>45%</td></tr><tr><td>× billionaires' yearly California income tax</td><td><span class="nb">$3.06B</span></td><td><span class="nb">$4.55B</span></td></tr><tr><td>= yearly loss</td><td><span class="nb">$0.15B</span></td><td><span class="nb">$2.05B</span></td></tr><tr><td>× value today of 1 dollar a year, 5 years for BSZ, for ever for JR</td><td>4.58</td><td>36.62</td></tr><tr class="tot"><td>= income tax lost, in today's dollars</td><td><span class="nb">$0.70B</span></td><td><span class="nb">$74.98B</span></td></tr></table> .small[ - **Share lost**: the share of billionaires' yearly California income tax that leaves with those who move. BSZ: 50% of their 10% avoidance allowance is people moving, so 5% of the income tax leaves. JR: a flat 45%, the middle of a random draw between 30% and 60%. - **Value today of 1 dollar a year**: a dollar a year for 5 years is worth 4.58 dollars today. A **perpetuity**, a dollar every year for ever, is worth 1/r at rate r: 36.62 dollars, averaged over the 1.5% to 4.5% rates. ] --- name: two-ends # The two ends on output (b) .highlight-box[ **Net fiscal effect (b)** = wealth tax collected + income tax from assets sold to pay − income tax lost ] <table class="dt"><tr><th></th><th>BSZ analysis</th><th>JR analysis</th></tr><tr><td>Wealth tax collected, (a)</td><td><span class="nb">$103.82B</span></td><td><span class="nb">$36.00B</span></td></tr><tr><td>+ income tax from assets sold to pay the tax</td><td><span class="nb">$3.68B</span></td><td><span class="nb">$0.00B</span></td></tr><tr><td>− income tax lost, in today's dollars</td><td><span class="nb">$0.70B</span></td><td><span class="nb">$74.98B</span></td></tr><tr class="tot"><td>= (b) net fiscal effect</td><td><span class="nb">$106.80B</span></td><td><span class="nb">−$38.98B</span></td></tr></table> .small[ - **Assets sold to pay.** BSZ assume 1/3 of the tax is paid by selling assets, 80% of each sale is a taxable gain, and California taxes gains at 13.3%. The JR analysis does not model it. - **The JR end** is <span class="nb">−$38.98B</span>, the exact average of the authors' Monte Carlo, computed by formula. The authors print <span class="nb">−$38.9B</span> from one run of the random draws started from a fixed seed, which the JR reproduction gives as <span class="nb">−$38.89B</span>. ] .blue-box[ The same function returns both ends exactly. The gap to explain is <span class="nb">$106.80B</span> − (<span class="nb">−$38.98B</span>) = **<span class="nb">$145.78B</span>**. ] --- name: shapley-toy # The bridge: switch one input at a time A toy. Revenue = $100.0B × (1 − share departed) × *q*. One analysis has nobody departed and *q* = 1: $100.0B. The other has 30% departed and *q* = 0.5: $35.0B. The gap is −$65.0B. How much of it is each input? <table class="dt"><tr><th>Order of the switches</th><th>Departures step</th><th>Litigation step</th><th>Sum</th></tr><tr><td>Departures first, then litigation</td><td>−$30.0B</td><td>−$35.0B</td><td>−$65.0B</td></tr><tr><td>Litigation first, then departures</td><td>−$15.0B</td><td>−$50.0B</td><td>−$65.0B</td></tr><tr class="tot"><td>Average over the two orders</td><td>−$22.5B</td><td>−$42.5B</td><td>−$65.0B</td></tr></table> .small[ The inputs multiply, so each step's size depends on what was switched before it. Litigation halves $100.0B if it goes first, but only $70.0B if it goes second. ] .blue-box[ The **Shapley value** of an input is its step averaged over every order of the switches. The averages always add up to the whole gap. The real bridge has 10 inputs, so 3,628,800 orders; the code computes the average exactly by running the function at all 1,024 mixes of BSZ and JR values. ] --- name: waterfall # The bridge on output (b): 10 Shapley steps <img src="data:image/png;base64,#slides_files/figure-html/waterfall-1.png" style="display: block; margin: auto;" /> .small[ Each bar switches one input from the BSZ value to the JR value, at its Shapley value. Every step but one lowers the estimate. Dropping the BSZ 10% avoidance allowance raises it, because the JR analysis applies none. ] --- name: pseudo-eq # What separates the two numbers <div class="pseudo-eq"><span class="term"><b>$106.8B</b><small>BSZ estimate</small></span><span class="op">−</span><span class="term"><b>$45.0B</b><small>Chance the tax survives litigation</small></span><span class="op">−</span><span class="term"><b>$33.6B</b><small>How long the income tax loss lasts</small></span><span class="op">−</span><span class="term"><b>$33.5B</b><small>Share of billionaire income tax lost</small></span><span class="op">−</span><span class="term"><b>$33.8B</b><small>the 7 other inputs together</small></span><span class="op">≈</span><span class="term"><b>−$39.0B</b><small>JR estimate</small></span></div> .small[ Start from the BSZ estimate and take away what each disagreement costs. Each term is one input's Shapley value on (b), read from the BSZ end to the JR end. The terms add up exactly; "about equal" is only rounding. The JR estimate here is the exact average, <span class="nb">−$38.98B</span>; the printed seeded run is <span class="nb">−$38.9B</span>. ] The next three slides take one of the three largest terms each. Each says what both analyses assume, why, and what kind of claim it is: .small[ - **data**: settled by observable facts (lists, filings, tax statistics) - **research**: a parameter taken from published studies - **guesswork**: asserted without data or a study behind it, legal judgements included - **scenario**: a choice of which world to estimate, which neither data nor studies settle ] --- name: diff-litigation # Difference 1: will the tax survive in court? <table class="dt claims"><tr><th style="width:50%">The BSZ analysis</th><th>The JR analysis</th></tr><tr><td><b><i>q</i> = 100%.</b> The Act as written, collected in full. Neither BSZ nor the expert report it builds on (GGSS: Galle, Gamage, Saez and Shanske) discounts the revenue for litigation risk (BSZ Table 5; GGSS p.4).</td><td><b><i>q</i> = 50%.</b> The chance the Act survives a court challenge, set at the "more likely than not" threshold of an accounting rule (ASC 740-10; NBER README, chapter Sec. 4.3). The Monte Carlo draws the revenue anywhere between zero (struck down) and the <span class="nb">$72B</span> ceiling; its average is half the ceiling.</td></tr></table> .pull-left[ **Kind of claim:** <span class="og guesswork">guesswork</span>, a legal judgement. No data or study gives the chance a court upholds this Act. **Why it is large:** *q* multiplies the whole revenue, so halving it halves what the other inputs leave. ] .pull-right[ .highlight-box[ **Dollars moved, on (b):** <span class="nb">−$45.0B</span> (Shapley), the largest step. On (a), the revenue alone: <span class="nb">−$44.2B</span>. ] .small[The lost income tax is not scaled by *q*: people who left do not come back if the Act is struck down.] ] --- name: diff-horizon # Difference 2: for how long is the income tax lost? <table class="dt claims"><tr><th style="width:50%">The BSZ analysis</th><th>The JR analysis</th></tr><tr><td><b>5 years.</b> The losses are "annual temporary" and last about the five payment years ("If they last say only 5 years", BSZ PDF p.27). A one-time tax should cause a temporary response (BSZ p.22).</td><td><b>Perpetuity.</b> A billionaire who leaves stops paying California income tax for ever, so the lost stream is valued as a perpetuity, 1/r (chapter Sec. 5.4, eq. 18-19).</td></tr></table> <table class="dt"><tr><th>Income tax lost, in today's dollars</th><th>5 years</th><th>For ever</th><th>Moving to for ever</th></tr><tr><td>BSZ yearly loss, <span class="nb">$0.15B</span></td><td><span class="nb">$0.7B</span></td><td><span class="nb">$5.6B</span></td><td><span class="nb">−$4.9B</span></td></tr><tr><td>JR yearly loss, <span class="nb">$2.05B</span></td><td><span class="nb">$9.4B</span></td><td><span class="nb">$75.0B</span></td><td><span class="nb">−$65.6B</span></td></tr></table> .pull-left[ **Kind of claim:** <span class="og scenario">scenario</span>. Neither data nor studies settle how long a departure lasts. ] .pull-right[ .highlight-box[ **Dollars moved, on (b):** <span class="nb">−$33.6B</span> (Shapley). The perpetuity multiplies whatever yearly loss the other inputs imply. So the step lies between the two rows of the table. ] ] --- name: diff-share # Difference 3: how much of the income tax leaves? <table class="dt claims"><tr><th style="width:50%">The BSZ analysis</th><th>The JR analysis</th></tr><tr><td><b>The loss follows the people who leave.</b> What is lost is the leavers' own income tax, from SEC filings for the largest fortunes and a wealth-proportional rate for the rest (BSZ PDF p.26, Table 4): <span class="nb">$0.36B</span> a year in its aggressive scenario. With no departures at the BSZ end, only the movers count: 50% of the 10% allowance, so 5%.</td><td><b>A flat 45%.</b> The middle of a random draw between 30% and 60%, independent of how much revenue is collected (NPV_dist_v8.R; chapter Sec. 5.4). It does not depend on who leaves.</td></tr></table> .pull-left[ **Kind of claim:** <span class="og data">data</span> against <span class="og guesswork">guesswork</span>. The BSZ ratio rests on tax filings. The JR range is asserted. **Share lost** is the share of billionaires' yearly California income tax that leaves the state with those who move. ] .pull-right[ .highlight-box[ **Dollars moved, on (b):** <span class="nb">−$33.5B</span> (Shapley). ] .small[In one fixed order (the order of [Hoopes 2026](#hoopes)) this step comes before the horizon, while the loss still lasts 5 years, and moves only <span class="nb">−$5.0B</span>.] ] --- name: smaller # The smaller steps <table class="dt"><tr><th>Input</th><th>BSZ value</th><th>JR value</th><th class="l">Kind of claim</th><th>Shapley on (b)</th></tr><tr><td>Billionaires already departed</td><td>none</td><td>the JR seven: $614B on the BSZ list, $578B on the JR list</td><td class="l">guesswork on data</td><td>−$23.7B</td></tr><tr><td>Avoidance and evasion allowance</td><td>10.0%</td><td>0.0%</td><td class="l">guesswork</td><td>+$11.5B</td></tr><tr><td>Billionaires' annual CA income tax</td><td>$3.06B/yr</td><td>$4.55B/yr</td><td class="l">research vs guesswork</td><td>−$9.3B</td></tr><tr><td>Non-US-citizen residents</td><td>$150B</td><td>$0B</td><td class="l">data</td><td>−$5.4B</td></tr><tr><td>Forbes source: which list and valuation date</td><td>Forbes 2026, $2,157B</td><td>Forbes 2025 grown 7%, $2,027.4B</td><td class="l">data</td><td>−$4.1B</td></tr><tr><td>Extra income tax from selling assets to pay</td><td>1/3</td><td>0%</td><td class="l">guesswork</td><td>−$2.4B</td></tr><tr><td>Real-estate deduction</td><td>0.0%</td><td>0.5%</td><td class="l">data</td><td>−$0.4B</td></tr><tr class="tot"><td>The 7 together</td><td></td><td></td><td></td><td>−$33.8B</td></tr></table> .small[ - **Billionaires already departed** is close to the three above. The JR analysis removes seven confirmed departures, 28.6% of its base; the BSZ analysis taxes everyone resident on 1 January 2026. "Guesswork on data" means a legal judgement about residency applied to who announced a move. - **Yearly income tax**: BSZ take the 2019 to 2025 average from tax statistics and published research. JR take the middle of a range whose floor is the authors' judgement. - **Avoidance and evasion allowance** is the one step that raises the estimate. The JR analysis applies no allowance beyond departures, so dropping the BSZ 10% adds revenue. ] --- name: hoopes # The one published comparison: Hoopes (2026) .small[ Jeffrey Hoopes, "Galle v Rauh" (SSRN 6428578), compares **earlier versions**: the February 2026 GGSS expert report, on which the BSZ analysis builds, and the March 2026 version by Rauh, Jaros, Kearney, Doran and Cosso. His Figure 2 is a waterfall that prints no values, so his column is read off the chart. Ours follows his order and ends at the September 2026 version. ] <table class="dt"><tr><th>Hoopes Figure 2 bar</th><th>Hoopes (read off the chart)</th><th>Ours, his order</th></tr><tr><td>Galle estimate</td><td>$100.0B</td><td>$100.0B</td></tr><tr><td>(no bar: GGSS's own rounding of their estimate)</td><td>none</td><td>+$3.8B</td></tr><tr><td>Residency correction</td><td>−$12.6B</td><td>−$12.6B</td></tr><tr><td>Confirmed departures</td><td>−$17.0B</td><td>−$26.0B</td></tr><tr><td>Additional movers</td><td>−$12.5B</td><td>none</td></tr><tr><td>Additional behavioral response</td><td>−$9.2B</td><td>−$29.0B</td></tr><tr><td>Real estate exclusion</td><td>−$1.1B</td><td>−$0.2B</td></tr><tr><td>Income tax loss</td><td>−$71.5B</td><td>−$75.0B</td></tr><tr class="tot"><td>Where the waterfall ends</td><td>−$23.8B</td><td>−$39.0B</td></tr></table> .small[ The residency bars agree. The income tax bars differ by <span class="nb">$3.5B</span>. The departures and behaviour bars differ because the versions differ: September counts seven departures on a grown base and adds the litigation weight; March used an elasticity response and ten "expanded" departures, which September does not. ] --- name: next # What reproduces, and where to go next .pull-left[ **What reproduces** .small[ - At the BSZ inputs the function returns Table 5 row 1, <span class="nb">$103.815B</span> (printed <span class="nb">$104B</span>). - At the JR inputs it returns the exact average of the authors' Monte Carlo, <span class="nb">−$38.980B</span> (printed <span class="nb">−$38.9B</span> from one seeded run). - The Shapley steps add up to the gap, and a test checks them against a brute-force average over orders. - A Python twin writes the same tables. The largest difference from R is 5.0e-13; the tests require 1e-9. - **Not reproduced here:** the comparison takes each analysis's exported inputs and outputs as given. Each analysis's own reproduction is on its overview page. ] ] .pull-right[ **Where to go next** .small[ - [The explorer](../explorer/): move each disputed input from one analysis's value to the other's - [The report](../repro.html): every step in a table, with the R and Python code in folds - [The materials page](../materials.html) and [the repository](https://github.com/fhoces/opa-prop40/tree/main/comparison) - [The comparison overview](../../../index.html) - [The BSZ analysis](../../../bsz-analysis/site/) and [the JR analysis](../../../rjkdc-analysis/site/), each with its own deck ] ] .blue-box[ The bridge shows where the <span class="nb">$146B</span> gap comes from. It cannot say which value of each input is right. ]