Fair Value Fast: Residual Mean Reversion


Abstract


Fair Value Fast (FV-Fast) trades the residual of a multi-driver OLS regression on USD-pair returns at a 30-minute bar with 1-minute intra-bar stops. When a pair's return deviates from what its discovered driver basket predicts, the system enters in the direction of reversion and exits when the deviation closes, the ATR stop fires, or a hold-time cap is reached. The current production version was revalidated under v3 doctrine in May 2026 and armed live on 2026-05-15 as the first Tier-1 strategy under the project's per-system attribution execution architecture. Walk-forward Sharpe across three expanding folds is +7.94 annualised, all four deflation gates pass (DSR / PBO / Monte Carlo / holdout replication), and all 13 in-universe pairs are profitable individually.


Mechanism


Each USD-pair has a basket of discovered drivers — other FX pairs and macro instruments (equity indices, dollar index, metals, energy) — selected on a rolling basis from a candidate universe by stability-weighted correlation. A rolling OLS regression over the past N bars produces an expected return at every new bar; the residual is the unexplained portion of the move. That residual is standardised to a z-score against its own recent distribution.


The trading rule is:



Driver discovery is run on a rolling, lookahead-free schedule. Driver lists shift slowly; the regression refits every bar but the basket only rotates when a candidate's stability deteriorates. Cross rates exclude their constituent legs from the candidate set to avoid mechanical correlation.


What changed in v3


The pre-v3 version of FV-Fast (described in earlier internal docs as "FV" with 16 pairs on hourly data) carried two weaknesses that v3 corrects:


1. Hourly bars miss the reversion window. Reversion in the residual frequently completes inside an hour, so an hourly close-only system either gave back the move or held through wide ATR stops it could have skipped. v3 trades the 30-minute bar but reads 1-minute price data inside each bar for stop placement — capturing the intra-bar tail without rebuilding the signal stack at 1-minute frequency.

2. Regime conditioning was not load-bearing. The pre-v3 paper attributed a Sharpe lift to per-pair vol-regime gating; under the v3 deflation gauntlet that lift failed PBO (probability of backtest overfitting). Regime gating is no longer used; the strategy trades pooled across regimes. The post-cancellation Sharpe is higher than the pre-cancellation regime-gated Sharpe.


A third change is data-cleanliness rather than strategy: 4,310 polluted USDCNH minute bars (audited 2026-05-03) were removed from the substrate, and USDCNH is excluded from the trading universe pending re-instrumentation. The 13 remaining pairs all pass the per-pair walk-forward profitability check.


Validation


Validated on the post-cutover frozen substrate (469 parquet files, 18 instruments, byte-perfect across machines). Eight deflation gates applied; the four most material are reported here.


GateThresholdFV-Fast 30m v3
Walk-forward Sharpe (3 folds, annualised)All folds > +1.0+7.10 / +8.30 / +8.63 (avg +7.94)
Deflated Sharpe RatioDSR > 0.951.000
Probability of Backtest OverfittingPBO < 0.200.072
Monte Carlo permutation (1,000 iters)p < 0.05p < 0.0001
Holdout replication (final year)Holdout SR > 0.6 × WF SR+10.20 (>1.0 × WF)

Per-trade economics on the holdout: +2.19 bp gross per trade, 55.4% win rate. All 13 traded pairs profitable, with the strongest per-pair Sharpe on EM (USDPLN, USDZAR, USDSEK, USDNOK) — consistent with the project's belief that residual mean reversion on USD-pairs is amplified in EM by sharper dealer-inventory unwinds.


Universe


Thirteen USD pairs traded:


EURUSD, GBPUSD, USDJPY, AUDUSD, USDCAD, USDCHF, NZDUSD, USDMXN, USDZAR, USDPLN, USDSEK, USDNOK, plus the EUR cross rates EURJPY, EURCHF, EURPLN where cross-rate construction provides genuine diversification rather than recombined USD legs.


USDCNH is excluded — its minute substrate was contaminated by a price-feed anomaly (~4,310 bars off by 10×) which inflates apparent backtest performance and was caught in the 2026-05-03 substrate audit.


Execution


FV-Fast trades through the central order router using per-system attribution. Every order placed by FV-Fast carries orderRef='fv_fast:{signal_id}'. The reconciler reads the per-permId order registry as the source of truth for what FV-Fast owns, never IB's per-pair net position. Under the old per-pair-netting architecture, FV-Fast's positions could be inadvertently flattened by reconciler logic intended for a different strategy on the same pair. The per-system attribution architecture, shipped 2026-05-15 alongside the arm, makes that class of incident impossible by construction.


Position sizing is margin-based: total capital is split into a fixed number of slots, each slot's margin is converted to notional using the pair's IB margin requirement, and notional sizes are larger for low-margin majors and smaller for higher-margin EM. Hard portfolio cap on concurrent positions; one position per target pair.


Live status



What FV-Fast is not


It is not a momentum strategy, a carry strategy, a news-reaction strategy, or a regime classifier. It does not condition on macro releases, central-bank calendar, or sentiment. It trades a single signal — the standardised residual of a rolling OLS regression — and exits on that signal's reversion. Complexity beyond what the residual itself carries is explicitly avoided; that complexity was the source of the pre-v3 PBO failure.


Relationship to other systems


FV-Fast pairs with two other Tier-1 candidates under the project's three-tier architecture: Elasticity-Reversal (residual of an FX-vs-equity-driver regression at a different cadence) and Range Trading (Donchian-style fade). All three trade their own signals through the same execution router; portfolio overlay (HRP-rolling or, eventually, a retrained meta-labeler) decides relative sizing. As of 2026-05-15, FV-Fast is the only one of the three on live capital; ER 1h and RT 1h continue in paper shadow pending the FV-Fast 24-hour clean window and their own gate criteria.


EricL Analytics — updated May 2026