# Merton v1 audit — October 6, 2026

Audited before v2 implementation, at commit `2e7321e`. Production model code is
`src/lib/merton/{solver,returns,covariance,model,contract}.js`; configuration is
`config/merton-{model,observations,risk-seed}.json`. This is a record of v1, not
the proposed v2 specification.

## Objective, constraints and solver

For risky weights w, annual diffusion covariance Σ, risky arithmetic drifts μ,
cash drift r and risk aversion γ, maximize

    wᵀ(μ − r1) − (γ/2) wᵀΣw.

The omitted constant r does not affect the optimum. The default γ is 3.
Constraints: 0 ≤ wᵢ ≤ 1, Σwᵢ ≤ 1, no borrowing or short positions. Minimum
cash defaults to zero; cash is 1 − Σwᵢ. Cash has zero modeled volatility and
covariance. The six risky assets, in order, are SPY, IEF, VTIP, GLDM, PDBC,
FBTC; cash is SPAXX. All assets currently have 100% caps.

The solver enumerates 3⁶ lower/free/upper active sets, both with and without a
binding risky budget. It solves the free linear systems and accepts only
feasible KKT solutions (residual ≤ 1e-8), choosing the highest objective.
Cholesky rejects nonfinite, asymmetric or non-positive-definite covariance.
Independent SciPy SLSQP fixtures cover 42 numerical cases. This numerical
verification says nothing about the quality of expected-return forecasts.

## Return inputs and units

All seven outputs are labeled annual nominal arithmetic *diffusion drift*, net
of fund fees and before investor tax. They are not effective one-year simple
arithmetic returns. The current initial source set implies approximately:

| Asset | v1 input | Construction | Actual forecast horizon |
|---|---:|---|---|
| SPY | 6.09% | dividend yield + ln(1.05) + ln(18/current FY1 P/E)/10 − fee + variance/2 | 10-year valuation normalization |
| IEF | 5.12% | 5.27% portfolio YTM − 0.15% fee | Current yield on rolling intermediate Treasury ETF |
| VTIP | 4.65% | 2.29% inflation-excluding net SEC yield + 2.36% five-year breakeven | Current short-TIPS carry plus 5-year inflation compensation |
| GLDM | 7.00% | selected net arithmetic drift | Unspecified long-term scenario |
| PDBC | 4.66% | 2.66% net SEC income + 2% selected futures premium | Current collateral income plus unspecified futures scenario |
| FBTC | 20.00% | selected net arithmetic drift | Unspecified long-term scenario |
| SPAXX | 3.49% | current net seven-day annualized yield | Near-term yield, incorrectly stationary for a strategic interpretation |

SPY's 5% growth is geometric per-share earnings growth, inclusive of buybacks;
its log transformation and variance correction are deliberate. Dividend and fee
flows use a first-order log approximation. IEF, VTIP, PDBC and cash use simple
annual yields as first-order drift approximations, not exact conversions.

**Confirmed mismatch with the owner's intended assumptions:** gold's 7% and
BTC's 20% were passed directly as μ. The code explicitly disclaims that BTC's
20% is CAGR. Thus this is a specification/interpretation error, not a hidden
conversion inside the solver. Under its diffusion convention, the v1 implied
geometric rates are exp(0.20 − 0.60²/2) − 1 = 2.02% for BTC and approximately
exp(0.07 − 0.195238²/2) − 1 = 5.23% for gold.

For a geometric growth assumption g consistent with expected log growth, the
correction is μ = ln(1+g) + Σᵢᵢ/2. At the current volatilities this gives 36.23%
for BTC and 8.67% for gold. Effective expected one-year simple returns are
exp(μ)−1, about 43.67% and 9.06%, respectively; **those simple returns must not
be substituted for μ in the existing continuous-time objective**.

## Risk inputs

Annualized covariance uses adjusted daily log returns × 252, aligned on common
dates before differencing. The preserved seed ends October 5, 2026:

- Actual ETF period: January 11, 2024 onward, 684 common returns.
- Proxy period: October 5, 2016 onward, 2,512 common returns.
- Blend: 50% actual ETF covariance, 50% proxy covariance.
- Proxy extensions: GLD for GLDM; BTC-USD for FBTC.
- Shrink correlation off-diagonals by 20% toward the identity.
- Marginal volatility floors: 18%, 7%, 3%, 18%, 18%, 60%.
- Resulting volatilities: 18%, 7%, 3%, 19.52%, 18%, 60%.

Variance is not pooled across assets. Bitcoin's large variance therefore does
not directly inflate every asset's variance. Weekend BTC moves are accumulated
into the next common session; spot UTC and ETF market-close timing still differ.
Risk evidence rebuilds monthly and expires after 45 days. BTC otherwise has no
special optimizer rule, cap, 200WMA adjustment or tactical signal.

## Material issues for research

1. Correct the intended geometric gold/BTC inputs while retaining the actual
   diffusion objective and covariance units.
2. Standardize strategic horizons; today's cash yield is not a ten-year forecast.
3. VTIP's small 3% volatility magnifies even modest assumed excess returns. Its
   short maturity, five-year inflation proxy and reinvestment need scrutiny.
4. Numerical precision in μ is not forecast certainty. There are currently no
   parameter distributions, robust objective or allocation uncertainty bands.
5. Historical weekly allocations are verified publications, not reconstructed
   forecasts or backtests. Preserve them without rewriting v1 history as v2.
6. Agora validates only merton-1.x and interprets overrides as arithmetic drift.
   A v2 contract and CAGR controls need an explicit consumer migration.

## Mathematical reference

[Stanford's Merton portfolio derivation](https://web.stanford.edu/class/cme241/lecture_slides/MertonPortfolio.pdf)
uses a diffusion expected return and instantaneous variance. The full v2 report
will distinguish expected log growth, expected finite-horizon CAGR and expected
simple return, and assess the alternative square-root formula in its own units.
