Calculation appendix — frozen September 30, 2026 research snapshot
This appendix documents calculations, not investment recommendations. The public article rounds more heavily than this audit file. Stored decimal precision enables replication; it does not imply equally precise measurements or forecasts.
1. Reproduction
Use Python 3.9 or later. Install the versions in requirements.txt, then run python calculate.py and python render_assets.py in the downloaded research directory. Calculations run offline from frozen inputs. No keys, accounts or proprietary software are needed. The data directory contains inputs and generated tables. Download requirements.txt, calculate.py and render_assets.py alongside that directory. Review-only page builders are not part of the public package. Rendering uses original vector illustrations and Matplotlib charts.
2. Period conventions and raw endpoints
Gold and equity reference period: 1959-12-31 to 2026-08-31, 24,350 days / 365.2425 = 66.668035620170 years. The 1959 equity return is excluded: the starting cumulative level is AFTER that return. This is an end-1959 reference, not a claim to cover every day of calendar 1959.
Gold at the start is the source's 1959 ANNUAL AVERAGE ($35.10 per troy ounce), assigned to the reference date as a proxy. It is not a December 31 close. Early annual chart observations through 1969 are also annual averages; later source observations are year-end prices. All M2 endpoints are monthly seasonally adjusted averages, not point-in-time balances. In the gold and equity comparison, December 1959 and August 2026 M2 are mapped to the corresponding month-ends.
Latest Bitcoin spot: Coinbase BTC-USD spot endpoint retrieved 2026-09-30T21:26:20.683104Z, HTTP Date 2026-09-30 21:26:20 GMT, USD 83,677.005. A quote is a time-specific provider observation, not a consolidated closing price. Price and forward-return elapsed times use the calendar date September 30, ignoring intraday fractions; this is an explicit whole-day convention.
Bitcoin inception reference: New Liberty Standard published quotation, 2009-10-05, USD 1 / 1,309.03 BTC = USD 0.000763924432595128 per BTC. Documentation: https://bitcoin.zorinaq.com/price/ links the original archived quotation pages. The source quotation is independently documented; no claim is made of large-volume executable liquidity at that price.
The first monthly M2 observation is January 1959. The full-span benchmark uses (2026−1959)×12+(8−1) = 811 monthly intervals, or 67.583333333333 years. This differs from the end-1959 asset sample. Latest release: September 22, 2026; latest observation: August 2026.
| Series / units | Starting value | Ending value | Interval |
|---|---|---|---|
| Full-history M2 / USD bn | 286.6 | 23,342.8 | 1959-01 to 2026-08 |
| Matched long-window M2 / USD bn | 297.8 | 23,342.8 | 1959-12 to 2026-08 |
| Bitcoin lifetime M2 / USD bn | 8,489.2 | 23,342.8 | 2009-10 to 2026-08; carried forward for September variant |
| Gold / USD per troy oz | 35.10 | 4,563 (rounded source quote) | 1959 average proxy to 2026-08-31 |
| S&P cumulative annual-reinvestment wealth / base $100 in 1928 | 1608.951637194828 | 1309003.753480200190 | 1959-12-31 to 2026-08-31 |
| S&P TR distributed index / index points | 15,220.4501953125 | 17,219.939453125 | 2025-12-31 to 2026-08-31 |
| Bitcoin daily provider price / USD | 0.08584 | 78,533.8892895967 | 2010-07-18 to 2026-08-31 |
| Common-window Bitcoin price / USD | 0.3 | 78,533.8892895967 | 2010-12-31 to 2026-08-31 |
| Common-window gold / USD per troy oz | 1,405.5 | 4,563 | 2010-12-31 to 2026-08-31 |
| Common-window M2 / USD bn | 8,822.0 | 23,342.8 | 2010-12 to 2026-08 |
3. Source construction and verification
- M2: https://fred.stlouisfed.org/graph/fredgraph.csv?id=M2SL. Raw downloaded series is data/m2.csv. Its latest value was cross-checked against the Federal Reserve H.6 Table 1 at https://www.federalreserve.gov/releases/h6/current/default.htm. Dataset vintage retrieved September 30; older observations can be revised.
- Annual equity returns and gold: https://www.stern.nyu.edu/~adamodar/pc/datasets/histretSP.xls. The original workbook is linked at its source; it is not redistributed here. The calculation script reads its lossless extracted year/return/gold columns in data/nyu-annual.csv; data/nyu-equity-raw.csv supports independent price-plus-dividend verification. The workbook date is January 1, 2026. Use sheets “Returns by year”, “S&P 500 & Raw Data”, “Gold Prices”, and “Explanations and FAQ”. The web page's old title says 1928–2024, but the workbook contains 2025. Analysis uses the workbook's rows, not the stale title. Equity annual return is (ending index − starting index + annual dividends)/starting index, compounded with annual reinvestment. This is not exact within-year dividend reinvestment.
- Equity 2026 extension: Yahoo's distribution of ^SP500TR, retrieved from https://query2.finance.yahoo.com/v8/finance/chart/%5ESP500TR?range=1y&interval=1d. Index name returned “S&P 500 (TR)”. Frozen daily levels: data/sptr.csv. Ratio is 1.1313686015955224. Independent Boston Partners August review reports 13.12% vs 13.13686016% from this ratio; this is a near cross-check, not exact agreement. Using 13.12% changes the long-window CAGR by about 0.00025 percentage point. No assertion that the difference is exclusively rounding. https://www.bostonpartners.com/insights/crosscurrents/
- Gold terminal value: World Gold Council, “Gold Market Commentary: Paved with good interventions”, September 9, 2026, Table 1, https://www.gold.org/goldhub/research/gold-market-commentary-august-2026. August 31 price USD 4,563/troy oz, rounded to whole dollars. The long endpoint ratio is taken directly, not by combining incompatible 2025/2026 gold returns. Source conventions can differ between market fixings, spot observations and futures.
- Bitcoin daily price: Coin Metrics archive https://raw.githubusercontent.com/coinmetrics/data/master/csv/btc.csv. Positive, nonmissing PriceUSD begins 2010-07-18 and the retrieved archive ends 2026-05-23. Live Community API supplements it: https://community-api.coinmetrics.io/v4/timeseries/asset-metrics?assets=btc&metrics=PriceUSD&frequency=1d&start_time=2026-05-01&end_time=2026-10-01&page_size=10000 . Retrieved API contains May 1–September 29, 2026. Concatenate by provider date, let current API replace overlapping archive dates, drop missing/nonpositive prices, and sort. The resulting frozen input data/btc-price.csv has 5,918 consecutive daily observations. Retain provider dates as labeled; do not assume equality with another venue's daily close.
- Latest Bitcoin spot: https://api.coinbase.com/v2/prices/BTC-USD/spot, frozen in data/btc-spot.json. No spot observation is added to the daily OLS fit; the timed quote is solely the current-market starting value.
- CPI definition: https://www.bls.gov/cpi/overview.htm. Historical official gold parity and regime: https://www.federalreservehistory.org/essays/gold-convertibility-ends.
Third-party raw inputs are retained for review and reproducibility. Rehosting a vendor dataset is separate from publishing the original analysis and charts; check provider redistribution terms before publicly distributing whole source workbooks. All chart designs and conceptual illustrations are original. No third-party stock imagery is used.
4. Exact return formulas
For an n-year interval:
asset_factor = A1 / A0
m2_factor = M1 / M0
nominal_CAGR = asset_factor**(1/n) - 1
M2_CAGR = m2_factor**(1/n) - 1
M2_relative_wealth = asset_factor / m2_factor
adjusted_CAGR = M2_relative_wealth**(1/n) - 1
= (1 + nominal_CAGR)/(1 + M2_CAGR) - 1
= (nominal_CAGR - M2_CAGR)/(1 + M2_CAGR)
This identity requires the same n for both annualizations. The code asserts agreement of both adjusted-return methods. Subtraction is an approximation, not this exact identity.
| Asset / window | Years | Nominal CAGR | M2 CAGR | Adjusted CAGR | Relative wealth multiple |
|---|---|---|---|---|---|
| Gold | 66.668035620170 | 7.57429267% | 6.76105097% | 0.76174007% | 1.6584985520 |
| S&P 500 total return | 66.668035620170 | 10.57452237% | 6.76105097% | 3.57196877% | 10.3793377938 |
| Bitcoin inception quote | 16.985975071357 | 197.37572773% | 6.13575156% | 180.18431430% | 39,835,433.1143795699 |
| Bitcoin inception aligned endpoint | 16.903837861147 | 197.83490972% | 6.16646666% | 180.53576529% | 37,386,991.7309757844 |
| Bitcoin daily-series start | 16.120796457148 | 134.31149904% | 6.35750289% | 120.30556629% | 338,722.2969708494 |
Full-history M2 CAGR: 6.72701887%; wealth factor 81.44731332868108.
The current-price inception variant uses October 2009 M2 as a proxy for October 5 and holds August 2026 M2 unchanged through September 30. September M2 is NOT OBSERVED. This meets identical annualization intervals, but not identical observed daily endpoints. The August-aligned variant is supplied separately; even it uses monthly M2 averages rather than daily readings. Do not silently relabel either as exact contemporaneous daily money stocks.
Illustration: (1.07/1.067)−1 = 0.281162136832% annually. At 30 years, 1.07^30 = 7.612255042662; 1.067^30 = 6.997333651676; ratio = 1.087879386863.
5. Common-start chart
Every asset is rebased to 1 on 2010-12-31. Each annual observation is divided by its same-month M2 multiple. Final endpoint is 2026-08-31. Lines connect annual observations; they do not recreate daily paths. Data: data/annual-asset-levels.csv. The chart uses a single logarithmic vertical scale. It is M2-relative wealth, not consumer purchasing power.
| Asset | Nominal CAGR | M2 CAGR | Adjusted CAGR | Relative terminal value |
|---|---|---|---|---|
| Gold | 7.80640436% | 6.40797843% | 1.31421154% | 1.2269693759 |
| S&P 500 total return | 14.20273056% | 6.40797843% | 7.32534556% | 3.0268541257 |
| Bitcoin | 121.73471942% | 6.40797843% | 108.38166714% | 98,934.9994163542 |
6. OLS derivation
No previously published power-law coefficients were adopted. Define t as elapsed integer calendar days since 2009-01-03. This origin is a model convention, not a fitted parameter or economic law. Use all positive observed Coin Metrics PriceUSD values 2010-07-18–2026-09-29; no smoothing, outlier exclusion or 2009 synthetic quote. Each day has unit weight.
x_i = log10(t_i)
y_i = log10(USD_price_i)
b = sum((x_i-x_bar)*(y_i-y_bar)) / sum((x_i-x_bar)**2)
a = y_bar - b*x_bar
trend_price(t) = 10**a * t**b
| Quantity | Value |
|---|---|
| N | 5918 |
| x mean | 3.47784825304364 |
| y mean | 3.26933103273220 |
| Sxx | 423.00327743501663 |
| Sxy | 2387.04489755350733 |
| a | -16.35647417906915 |
| b | 5.64308842245369 |
| 2026-09-30 elapsed days | 6479 |
| Current central trend / USD | 141971.893509164918 |
| Actual quote / USD | 83677.005000000005 |
| Actual/trend − 1 | -41.06086569% |
| In-sample R², log prices | 0.961652020574 |
| Log10 residual SD, n−2 denominator | 0.301326208809 |
| Lag-1 log residual correlation | 0.997757995688 |
OLS estimates conditional mean log price under its specification. Exponentiating is not automatically a price median. The article's “median” interpretation imposes a zero-median log-error distribution, for example a symmetric log error centered at zero. No arithmetic-mean price correction is applied. No predictive confidence interval, normal-error inference or probability of convergence is claimed. Persistent residuals and extrapolation risk make an IID-OLS confidence band misleading here.
For fixed coefficients P(t)=C t^b, P(t1)/P(t0)=(t1/t0)^b, and d ln P/dt=b/t. That is a declining proportional growth rate. There is no fixed exponential forward CAGR.
7. Forward scenarios
Current date t0=2026-09-30. Targets are December 31 of 2030, 2035, 2040 and 2050. n=(target−current date).days/365.2425. Future annual M2 growth g=0.06727018865218026, the January 1959–August 2026 benchmark. No future gold/equity projections are made.
market_nominal = (trend_price(target)/current_spot)**(1/n)-1
trend_nominal = (trend_price(target)/trend_price(current_date))**(1/n)-1
market_adjusted = (1+market_nominal)/(1+g)-1
trend_adjusted = (1+trend_nominal)/(1+g)-1
Market-to-future-trend returns combine growth along the fitted path with convergence from the present price gap. Trend-to-trend isolates the fitted curve. Neither is a guaranteed realized return. Full precision CSV: data/forward-calculations.csv.
| Target | n years | t days | Model USD | M2 multiple | Market nominal | Market adjusted | Trend nominal | Trend adjusted |
|---|---|---|---|---|---|---|---|---|
| 2030-12-31 | 4.2519695819 | 8032 | 477299.77869412 | 1.3189301568 | 50.60642132% | 41.11367760% | 32.99823170% | 24.61533463% |
| 2035-12-31 | 9.2513877766 | 9858 | 1516453.98926442 | 1.8263215423 | 36.77405267% | 28.15316508% | 29.17730594% | 21.03524236% |
| 2040-12-31 | 14.2535438784 | 11685 | 3958351.33944376 | 2.5293568069 | 31.07147745% | 22.81002397% | 26.29907897% | 18.33843043% |
| 2050-12-31 | 24.2523802679 | 15337 | 18366614.50577960 | 4.8497682385 | 24.89471139% | 17.02258034% | 22.20165608% | 14.49926868% |
8. Sensitivity and validation limits
Same origin and equal daily weights; re-estimate a and b for each start. These are alternative fitted scenarios, not probability bounds.
| Fit start | N | Intercept | Slope | Current trend USD | 2050 model USD |
|---|---|---|---|---|---|
| 2010-07-18 | 5918 | -16.356474179 | 5.643088422 | 141971.89 | 18366614.51 |
| 2011-01-01 | 5751 | -15.840159046 | 5.499021839 | 131645.67 | 15042461.94 |
| 2013-01-01 | 5020 | -14.925151799 | 5.247748866 | 119312.21 | 10978998.61 |
| 2015-01-01 | 4290 | -17.220201705 | 5.873004624 | 146151.17 | 23050010.12 |
A fit using data only through 2019-12-31 projects a central price of $176,091.22 at the current date, versus the captured $83,677.01 quote. This single held-out endpoint is a diagnostic, not a complete backtest or validation exercise.
Money-growth sensitivity, holding the main OLS fit fixed:
| Target | M2 assumption | Trend adjusted | Market adjusted |
|---|---|---|---|
| 2030-12-31 | 5% | 26.66498257% | 43.43468697% |
| 2030-12-31 | 8% | 23.14651083% | 39.45039011% |
| 2050-12-31 | 5% | 16.38252960% | 18.94734418% |
| 2050-12-31 | 8% | 13.14968156% | 15.64325129% |
Alternative gold/equity start-date calculations are supplied in data/start-date-sensitivity.csv. Those starts deliberately expose endpoint sensitivity; they are not an optimization exercise.
Coin Metrics daily Bitcoin price maximum observed drawdown is -92.75% in the fitted sample. Independent audit identifies the relevant peak on 2011-06-08 and trough on 2011-11-18. This is price performance, not an M2-adjusted risk statistic.
9. Frozen-input checksums
SHA-256 hashes detect later input changes; rerunning from changed inputs constitutes a new analysis vintage.
| Input | SHA-256 |
|---|---|
| m2.csv | 63b673baffae16f7683963ddde0664012a7ac93ab775a82d3c98a0311e103e5a |
| btc-price.csv | 586471f91f742e68998a93a94fdc25da7b271589d5f79bb2e275cb08bb023cc6 |
| btc-spot.json | 408a7d7742b3be0322eb59af2a11142cc54ef715bceb81f2791efbb85fb1bd61 |
| histretSP.xls | 28b8110916a15a4dcc11c87c6422510704608ddedcdfa67a1298abdc22e49c69 |
| sptr.csv | 49b6c7e04feec4260afd99d9789edec2218242eee17b31755091bc91a705b37f |
| nyu-annual.csv | 3523ea8366625e6a086c0e77198d76d1681a607d15d6ade238922c896485587c |
| nyu-equity-raw.csv | 1965b8f10f3f372a61ed09d0fa69d84a235589b1eb5d06f9d7d581714479828a |