B-01 · Soliton — the design story
Why it’s built this way
The live page shows the record. This page is the reasoning behind it — every major decision in the rebuild, what forced it, and the actual numbers. It reads in order, because the design really was a sequence of arguments, and most of them were settled by a measurement rather than a preference. Where a claim has numbers behind it, they’re in the expandable blocks; every figure comes from a phase report in the engine repo.
1 · The predecessor, and the lesson
SOLITON exists because of an honest review of what came before it. MERIDIAN was a ~22,000-line options system: five specialist LLMs and a panel-of-judges deliberating over SEC filings, Form 4s, congressional trades, and news sentiment. It produced genuinely sophisticated reasoning and, in about two months of paper trading, exactly one trade (NVDA, May 6, medium confidence). Everything else was a HOLD — and reading the logs, most of those HOLDs weren’t discipline. They were cascading pipeline failures: one specialist returns a fallback, the fail-closed protocol vetoes the cycle, and the system spends $0.60–0.70 of LLM calls to decide nothing. It mostly vetoed itself.
The review’s conclusion: MERIDIAN was an analysis engine, not a trading system. Nowhere in 22K lines was there a falsifiable rule that said when to enter, what structure to trade, or why it should make money. Betting on narrative interpretation — the Iran-war/semiconductor framing — meant there was no edge to test, only vibes with infrastructure. That gap, not any single bug, is what the rebuild had to close. The console is preserved as an archive, because the lesson is worth keeping visible.
What was salvaged, what was dead weight
About a quarter of the repo survived the review: the broker client, the Black-Scholes and historical-volatility math, an LPPL bubble-model implementation (which became a seed of Track C), the logging schema, and the scheduler/notifier plumbing. The five-specialist pipeline, the geopolitical synthesizer, the reaction predictor, and most of the ten ingestion sources were dead weight — good engineering pointed at the wrong problem. The rebuild was greenfield with salvage imports; MERIDIAN was frozen on a legacy branch rather than fought with in place.
2 · What “professional” turned out to mean
The redesign started with a definition. A professional strategy is a falsifiable rule set with a known statistical edge, and it has five ingredients: a hypothesis for why money is made (ideally structural, not predictive); exact mechanical rules a computer can execute identically every time; a backtest over 5–10 years — including 2020 and 2022 — proving positive expectancy after commissions and slippage; a promotion ladder from backtest to paper to small real capital with pre-committed kill criteria; and ongoing measurement that live results stay consistent with the backtest. MERIDIAN had (attempted) the fifth ingredient’s infrastructure and none of the first four.
Which is why the first half of this build was an honesty machine, not a trader. Before any strategy question could be asked, the harness had to make two kinds of self-deception structurally hard: looking at the future, and moving the goalposts. The no-lookahead guarantee is architectural — strategies only ever see a view object whose every accessor is capped at “today”, and the test suite drives a deliberately cheating strategy through a real run to prove the fence holds. Pre-registration is procedural — every parameter grid, fold schedule, selection rule, and pass/fail gate is committed as executable code before the sweep runs, with the fail branches (what ships, what gets reported) decided in advance too. Post-hoc tuning is how retail quants fool themselves: run enough variations and something always “works”, and the only defense is deciding what counts as success before you look.
How the registration mechanics actually work
A registration is a module whose docstring and constants are the protocol: the grid, the in-sample/out-of-sample fold table (six folds, with 2020–21 and 2022–23 deliberately out-of-sample and a final untouched holdout), selection on pooled in-sample expectancy with a plateau requirement (a cell must be positive and most of its parameter-space neighbors positive — a guard against lone overfit peaks), and gates evaluated only on frozen parameters. Later registrations import the referee from the first one rather than copying it, so the rules can’t drift between phases. When a verdict lands, no gate is relaxed, no cell is added, and the report says exactly which stage failed.
3 · The data saga
Honest backtests of options strategies need historical option chains, and real chains are the expensive part. The build started at $0: synthetic chains — Black-Scholes prices over the VIX level — with the bias against real quotes measured rather than assumed. The first measurement, on the single legs the strategies would sell, looked reassuring: the flat surface underpriced them by about 11%, meaning synthetic backtests would understate the credit collected. Conservative. Safe to proceed.
Then the same measurement was done at the spread level — the structure actually traded — and the sign flipped. A credit spread is a short leg minus a long leg, and the flat surface distorts both: the measured net-credit overstatement ran from +3.5% in the 2020 crash to +96% in calm 2021, overstated in ten out of ten matched spreads, median +27%. Synthetic credits weren’t conservative at all — they were optimistic, and worst exactly when premium sellers trade least. That one measurement produced the credit-haircut band the first bake-off ran under, and later killed what briefly looked like a winner: the best synthetic cells flipped from failing to passing inside the haircut’s uncertainty band, which meant the instrument couldn’t resolve the question at all.
The escalation was itself pre-registered: if a verdict flips inside the band, buy real data. It flipped, so — after a genuinely exhaustive vendor hunt with a $100 cap — the real store turned out to cost $0.00: a free vendor archive of end-of-day SPY chains 2010–2023 and QQQ 2012–2023, 30.1 million rows with real bid/ask, gap-filled 2024→now from a second free tier, and cross-validated against two independent captures agreeing to about three cents of mid.
One more forced correction came late. The price cache was dividend-adjusted; real chain strikes are actual dollars — by 2010 the two differ ~25% (SPY 82.50 adjusted vs 109.58 actual on the same day). Delta-based strike selection had masked it for three phases; a later track’s ATM-by-price rule surfaced it immediately. The fix re-ran the whole closed phase on corrected data. The verdict didn’t change — but the numbers did, in both directions, and the correction revealed that the best-looking cells were exactly the ones with the worst crash tails. Every escalation in this section was forced by a measurement; none of it was in the original plan.
The bias measurement, by regime
Identical spread legs priced synthetically vs against real quotes (short strike chosen by the real deltas, ~30 days out), signed net-credit bias (synthetic − real) / real:
| date (regime) | VIX | bias |
|---|---|---|
| 2020-03-18 (crash) | 76 | +3.5%, +17% |
| 2021-06-15 (calm) | 17 | +42%, +91%, +96% |
| 2022-06-15 (bear) | 30 | +17%, +17%, +19% |
| 2025-01-15 (recent) | 19 | +35%, +44% |
Mean +38%, median +27%, understated in 0/10 cases. The mechanism: the VIX sits above true at-the-money implied vol (it embeds the skew premium), overpricing the short leg, while the missing smile underprices the far-out-of-the-money long leg — both effects inflate the modeled net credit, most in calm regimes.
4 · Three verdicts, all honest
The premium-selling family — the insurance-company trade, selling expensive index options and collecting the gap between implied and realized volatility — went through three pre-registered tests. All three returned no edge demonstrated, each for a different and more instructive reason. These negative results are the credibility spine of the whole project: they’re what the launch labels on the live page are made of.
Verdict one — the instrument can’t resolve it. The first bake-off ran 216 pre-registered parameter cells on synthetic chains: zero cells had positive pooled expectancy, in-sample or out. But the diagnostic sweep showed the best cells flipping from clear-fail to clear-pass inside the haircut band (flip point around 0.89 of modeled credit) — the synthetic-data uncertainty was bigger than the question. Per the pre-registered escalation rule, that fired the real-data purchase.
Verdict two — friction eats thin edges. The identical protocol re-run on real 2010–2023 chains with real bid/ask: zero of 216 again, same failure stage. The autopsy is the part worth keeping: at frictionless mid-price fills the best cell shows a hair-thin gross edge (+$11/trade, profit factor 1.06), and at any realistic slippage the edge is gone (−$29/trade at the registered fill assumption). The variance risk premium is real; at 30–45 days out and retail size, the market charges you the whole premium to collect it.
Verdict three — every champion dies at the same gate. One registered redesign was allowed, aimed directly at the edge-to-friction ratio: wider structures, longer tenor, extreme-IV entries, hold-to-expiry. For the first time, selection succeeded — 20 of 128 cells positive, plateau-supported champions in both regime arms. The champion (a QQQ iron condor, entered only above the 85th IV-rank percentile, held to expiration) passed the expectancy gate at +$313/trade out-of-sample, survived paying the full half-spread, cleared the trade-count floor — and failed exactly one gate: crash-stress liquidity, which re-prices every fill at 2.2× quoted widths through the 2020 and 2022 folds. PF 0.974 against a required 1.00, a margin of about $16/trade over 17 stressed trades. The pre-commitment did its job: a genuinely marginal result got reported as a fail instead of argued into a pass. After the units correction it wasn’t even marginal (stress PF 0.580) — and every alternative champion on the corrected data fails the same gate. The pattern is the finding: the profitable-looking cells are profitable because they carry crash tails, and the one gate that asks about crisis-grade liquidity is the one none of them clear.
The champion’s gate table, before and after the units correction
| gate | as computed | corrected | required | result |
|---|---|---|---|---|
| profit factor @ registered slippage | 1.82 | 1.56 | ≥ 1.15 | pass |
| expectancy @ registered slippage | +$313 | +$245 | > 0 | pass |
| profit factor paying full half-spread | 1.72 | 1.48 | ≥ 1.00 | pass |
| pooled out-of-sample trades | 87 | 87 | ≥ 80 | pass |
| crash stress (2.2× widths, 2020+2022 folds) | 0.974 | 0.580 | ≥ 1.00 | FAIL |
The corrected 2020 fold alone goes from −$1/trade to −$1,046/trade: the units bug had been compressing the rally levels the condor’s short call settled against. The correction roughly doubled the grid’s positive territory (put-spread hold cells had been suppressed by fabricated losses) — and every one of those newly-positive cells fails the same stress gate, several much harder.
5 · The tracks, and why each exists
Track A — the control. The failed champion launched anyway, wearing its verdict: evidence: negative — launched as public control. That isn’t stubbornness. The forward test extends exactly the regime where the cell’s profits lived (the recent, crash-free fold), a mechanical line is the reference the LLM accounts have to beat, and the pre-registered fail branch said in advance that the best cell ships as a labeled control. It trades rarely by construction — the 85th-percentile IV gate opened about six times a year historically — so “waiting for entry conditions” on the live page is the strategy working, not idling.
Track C — the criticality thesis. The personality piece: treat the index as the observable of a nonlinear dynamical system and classify its state instead of predicting its direction. It’s the same mathematics — critical slowing down, early-warning signals, fractal scaling — I’ve worked with on the neuroscience side, where the question is whether brains sit near criticality; here the question is whether markets lose resilience before they break. The honest part is which instruments survived validation. Rolling Hurst exponents hug 0.5 on daily index bars (the trending regimes the literature promises don’t show up at this timescale); permutation entropy is a near-null (18 years of daily returns are ordinally almost indistinguishable from noise); the early-warning battery pointed down at both testable market peaks — COVID was an exogenous shock, which is precisely what the theory says it cannot anticipate. What survived: the LPPLS bubble-signature indicator — rare, late, and real, firing hardest two weeks before the February 2018 “Volmageddon” break, its only strong signal in 18 years — and the boring stress dials. The deployed playbook uses what survived, and its backtest verdict is honest too: both risk gates passed out-of-sample (drawdowns cut to ~0.7× buy-and-hold, better risk-adjusted return, robust to doubled costs), but at ~1.2 regime round-trips a year it couldn’t reach the 30-round-trip statistical floor. It runs labeled unproven, and the years-long forward test is the only honest way to finish the sentence.
Track D — the instrumented gamble. A friend trades short-dated options on conviction; this track is that trade made falsifiable, split into three buckets by testability. Scheduled macro events (FOMC/CPI/NFP) are backtestable — the dates are public history — and the registered test produced the program’s only per-gates winner: buy an at-the-money SPY call two sessions before each jobs report, +$240/trade out-of-sample across 147 trades. The honest reading, from the report’s own decomposition: that’s the macro-announcement risk premium, not a mispricing — calls and puts mirror each other, placebo Fridays lose, the median trade loses $4 and the mean is carried by a handful of four-figure gap wins — and it’s regime-fragile, negative in both recent folds including the entire 2024–26 holdout. It runs paper-only, and no capital touches it without a second registration passing a recency gate. Earnings plays and unscheduled-headline plays can’t be backtested honestly at all, so they run forward-only with the record as the product. One clean negative fell out for free: no event class underprices the move — buying straddles into announcements loses everywhere, worst at CPI.
The headline — the Fable hypothesis. Everything above is a reference line for the actual experiment: can the most advanced available model trade short-term options well? Two paper accounts are run by Fable, the frontier Claude model. FA is an aggressive convexity punter: a $2,000 ring-fenced bankroll, short-dated long options off the macro calendar, hard caps of 10% per punt and two concurrent positions. FE is a thesis-driven AI-economy auditor: a $10,000 bankroll, a persistent thesis journal, web search as its eyes, long-only equities, 15% per name. Both are under a daily-trade mandate — at least one position action per session — which needs disclosing because it changes how you read the record: the mandate forces a record to exist instead of letting the model hide in stand-asides, every forced trade is flagged mandate_forced and separable in the stats, and if the forced ratio ever climbs toward 1.0, the mandate is the strategy and the log will say so. Safety halts always beat the mandate.
The containment is code, not prompt. The model never constructs an order: it returns strict JSON through a forced tool call, and the engine validates every coordinate against the day’s actual menu — listed strikes, listed expirations, bankroll, caps, holdings — then builds the order itself. Anything invalid is dropped and the reason published verbatim. Bankrolls, per-trade caps, concurrency limits, and daily/weekly loss stops are engine-side kill criteria, the same machinery the mechanical tracks use. On day one the caps got their first scalp: FA’s opening decision — a defensible short-dated QQQ put spread — was bounced by its own per-punt cap ($180 budgeted, ~$268 for one contract, $200 ceiling), logged as all_orders_invalid with the model’s full rationale preserved. The containment working on the first trade it saw is exactly the kind of evidence a prompt can’t provide.
How the roster got here (the decisions, in order)
The original design was an A/B experiment: a mechanical baseline and one LLM strategist choosing from the same playbook menu, measuring whether frontier judgment adds alpha over rules it may deviate from. Two days later the frame flipped: the LLM-trader question is the experiment, everything mechanical is a reference line. Two days after that, the menu-picker account (“Fable-conservative”) was cut for cost and simplicity — Track A already serves as the same-menu mechanical control — and the roster settled at FA + FE. Each amendment is dated in the decision brief, and the prompts the accounts run on are registered immutable: any change is a new version, a changelog entry, and a note on the live page, because it’s a new experiment arm.
6 · What would change our minds
Success was defined before launch, and so was failure. The Fable accounts succeed if they beat their controls — SPY buy-and-hold and the mechanical Track A — over 100+ logged trades with every cap respected throughout. Not “up in week one”; a lucky month proves nothing and the record is built to say so. Real money has its own pre-committed ladder: nothing trades a real dollar until a track has 100+ logged paper trades, a record that beats its controls, and — for the mechanical strategies — a passed registration of its own. Then it starts at about $2K, defined-risk structures only, with kill criteria committed in advance. The kill criteria are code: a track that trips one halts itself and says so publicly, and re-arming is a deliberate human act.
Two registrations are already queued, one per open question. S4 asks the only question the premium-selling verdicts left open: can a crisis-liquidity defense — an entry-day fill-quality gate, a stress-conditional width or size rule — pass the one gate every champion failed, on the corrected data, with the old champion as its registered control? D2 is the prerequisite for any capital on the NFP-call result: a recency gate and a drift-control arm, because a 2016–2021 phenomenon that lost money for the last four and a half years should have to prove it still exists. Both get the full discipline: prompt, registration commit, sweep, report — in that order.
The disclosure extends to infrastructure. When the Fable calls got a second transport — the same registered prompts, byte-identical down to their checksums, billed through a subscription CLI instead of the metered API — the change went into the changelog, a methodology note on the live page, and a per-decision llm_backend field in the public export, so anyone can see which transport served which decision. The model itself will sunset mid-July; the successor is a documented config flip, disclosed the same way, not a silent swap. If even the plumbing changes are logged, a quiet strategy change has nowhere to hide — which is the point.
7 · Colophon
The build itself ran on the same discipline as the strategies. Each phase was a written prompt executed by a frontier-model coding session in its own git worktree; registrations were committed before results existed; sessions commit but never push — a human reviews and merges; and every phase ends in a report, which is where every number on this page comes from. The negative verdicts survived because the process made them cheaper to publish than to hide. That was the design.