Blog
Research notes. Newest first.
- 31 May 2026
Does the Edge Persist? A Decade of Refits
The test we'd been putting off: stop hand-picking crisis windows and run the strategy straight through a decade, refitting annually. Over 2015–2026 it returns +898% against passive's +334% at a Sharpe of +1.88 — but the edge is fading, first-half Sharpe +2.29 to second-half +1.41. Most of the week went on trying to fix the fade and failing: a better state-count search, cross-fit pooling, and trust-gated sizing all leave it intact, which is how we learned it's the feature weakening, not the fit. A calibration check is the consolation — bigger bets really are right more often.
- 24 May 2026
The Recovery That Never Cleared
The model passes its five-window gauntlet except one — a 2026 geopolitical window where it loses money — so the week is spent taking that single loss apart. It learned a different, twitchier regime structure on the window and shorted into a milder shock; but the real damage was the recovery, which came with no all-clear. We test and reject the easy explanations (a direction-sensitive hybrid; 'not enough crises yet') and land on a narrower diagnosis: the model's one feature sits on the most-degraded part of the volatility surface, while shorter-dated alternatives stayed era-stable.
- 17 May 2026
The Fancy Model Lost
A working log of the week's tests. We tried a switching dynamical system (couldn't run the version we wanted; the version we could run lost), swapped in Student-t emissions (kept — the model learned which regimes have heavy tails), built a noise-aware trust metric, found a strictly better state count by brute force than by the greedy search, and caught a same-day look-ahead bug that turned the previous week's headline result into a loss. Then sizing: raw per-regime Kelly wants 10–30× leverage; a fixed fraction of it beat hard-clipping, and a cleverer quality-weighted version did nothing.
- 10 May 2026
Explaining the Past Is Not Predicting the Future
A working log of a week that was meant to make the model predict and mostly produced things that didn't. Two Transformer approaches died (forecasting features the market has already priced; a contrastive regime-recogniser whose stress windows landed closer to average than calm). One question — are we scoring the forecast or the post-mortem? — reorganised everything and exposed a one-bar bug. The honest economic test killed the forecast layer outright, sizing turned out to move leverage not edge, a 6.5-hour look-ahead bug had been faking a champion signal, and the feature underneath it all flips sign after 2020.
- 3 May 2026
No Arbitrary Rules
Last week's strip-back used an admittedly arbitrary choice, so this week starts by making 'no arbitrary choices' an actual rule, then lets measurement rather than argument settle the architecture. A principled heavy-tailed emission fix helped but was dropped once we noticed we were optimising the wrong number. A fast replay harness and an honest shock-detection metric then settled it: the elaborate inherited model lost to a plain input-output HMM, a split-merge variant won the bake-off, and — awkwardly — every model collapses to two regimes, because returns alone don't support more.
- 26 April 2026
Stripping Back a Bayesian Regime Model
We take delivery of the inherited 'finished' model — a sticky HDP-HMM with a Transformer and multivariate Gaussian emissions — and spend the week establishing that it doesn't work and why. Ten ranked failure hypotheses; the sampler is frozen (85 moves in 150,000), the cause is emission dimensionality (the assigned state is ~20,000× more likely than the next), and a diagonal-covariance control rules out covariance shape. Most of the suspected flaws turn out to be one mistake — features doing double duty. We fork a stripped version and the sampler starts to move.
- 19 April 2026
Volatility Regimes and Hidden Markov Models
A working log of the week. The strategy reads a market regime off the volatility term structure and sizes to it; this week was spent making the regime read honest. We moved it off a hindsight labelling (Viterbi) onto a causal forward filter — which alone cut the per-regime Kelly leverage from tens of times to a few — widened the emissions from return-size to market conditions (and got a messy first run), and built a sticky nonparametric HMM that infers its own number of regimes. It runs; whether it works is next week's question.
- 31 December 2025
Eight Regimes: A Rule-Based Volatility Strategy
A rule-based, mostly-long SPY strategy that sorts the market into eight regimes from the VIX term structure, its slope, and a consumer-sentiment slope, then sizes each regime with per-regime Kelly weighted by an age-dependent Markov model. With a gated Kalman filter, a golden-path take-profit, DFA-Hurst regime character — and its open problems.
- 21 November 2025
Update on ZQ and SR1 mispricing
An update on the ZQZ5 / SR1Z5 mispricing flagged earlier: the spread has narrowed as the thesis implied (+2.26% on an illustrative $5k) as SOFR detaches higher from the Fed target while EFFR stays put — consistent with SOFR volatility being underpriced relative to the managed EFFR.
- 7 November 2025
Potential EFFR / SOFR mispricing
Pricing the December ZQ and SR1 contracts against Polymarket-implied Fed odds. Stripped of the policy bet, the market implies EFFR moving more than SOFR — backwards, since EFFR is a managed rate and SOFR a market rate. A long ZQZ5 / short SR1Z5 structure to isolate it, with scenario P&L.
