5-alpha forward test report
Generated 2026-09-11T09:15:19+00:00 UTC · IS = Tardis backfill, OOS = live merged (post 2026-05-09).
1. Data inventory
| item | value |
| IS rows (asset-hour) | 11,621 |
| IS date range | 2026-01-08 23:00:00 → 2026-05-09 23:00:00 |
| IS assets | BTC, ETH, SOL, XRP |
| OOS rows (asset-hour) | 12,308 |
| OOS date range | 2026-05-06 05:00:00+00:00 → 2026-09-11 09:00:00+00:00 |
| OOS assets | BTC, ETH, SOL, XRP |
| forward cutoff (UTC) | 2026-05-09T23:59:59Z |
| z-score window (hours) | 168 |
| notional per position | $1000 |
| horizon | 1 hour log-return |
| α-signs (flipped) | put_call_ratio, options_skew_30d, gex_negative |
2. α-sign convention
| alpha | sign | convention |
| volume_surprise | +1 | as-is |
| put_call_ratio | -1 | flipped |
| options_skew_30d | -1 | flipped |
| options_25delta_skew_30d | +1 | as-is |
| gex_negative | -1 | flipped |
Signs were chosen from the Tardis IS window (negative-Sharpe alphas flipped),
then validated on the live OOS window — see §6 / §7 for per-window statistics.
3. Alpha coverage
4. Per-alpha equity curves (full window)
5. Forward window zoom (post 2026-05-09)
6. Per-alpha raw signal time series
7. Per-asset raw signal time series
Same raw signals as §6, split by underlying. Each small panel has its own y-axis, so this view separates real signal magnitude from overlay/axis compression.
8. Per-alpha statistics
volume_surprise
| window | hours | cum P&L | ann P&L |
Sharpe | Sortino | Calmar | peak DD | turnover |
| all | 5757 | +256.33 | +390.03 | +0.610 | +0.722 | +0.463 | -841.91 | 582.0 |
| IS | 2704 | +114.12 | +369.70 | +0.587 | +0.638 | +1.142 | -323.78 | 253.0 |
| OOS | 3053 | +142.21 | +408.04 | +0.630 | +0.809 | +0.731 | -558.16 | 326.8 |
put_call_ratio
| window | hours | cum P&L | ann P&L |
Sharpe | Sortino | Calmar | peak DD | turnover |
| all | 5803 | -1618.28 | -2442.90 | -4.720 | -4.623 | -1.429 | -1709.45 | 1113.4 |
| IS | 2727 | +16.34 | +52.50 | +0.104 | +0.114 | +0.158 | -332.28 | 432.8 |
| OOS | 3076 | -1634.62 | -4655.17 | -8.832 | -8.025 | -2.723 | -1709.45 | 679.5 |
options_skew_30d
| window | hours | cum P&L | ann P&L |
Sharpe | Sortino | Calmar | peak DD | turnover |
| all | 5807 | +1228.33 | +1852.97 | +5.198 | +6.526 | +13.828 | -134.01 | 545.0 |
| IS | 2731 | +618.98 | +1985.46 | +4.857 | +5.833 | +14.816 | -134.01 | 239.2 |
| OOS | 3076 | +609.35 | +1735.35 | +5.736 | +7.864 | +22.177 | -78.25 | 304.3 |
options_25delta_skew_30d
| window | hours | cum P&L | ann P&L |
Sharpe | Sortino | Calmar | peak DD | turnover |
| all | 5807 | +855.69 | +1290.83 | +3.950 | +5.086 | +6.806 | -189.66 | 1385.5 |
| IS | 2731 | +370.02 | +1186.88 | +3.242 | +3.966 | +6.258 | -189.66 | 600.4 |
| OOS | 3076 | +485.67 | +1383.13 | +4.812 | +6.840 | +20.524 | -67.39 | 784.3 |
gex_negative
| window | hours | cum P&L | ann P&L |
Sharpe | Sortino | Calmar | peak DD | turnover |
| all | 5807 | +3271.98 | +4935.86 | +9.711 | +15.468 | +25.568 | -193.05 | 1570.6 |
| IS | 2731 | +943.68 | +3026.97 | +6.910 | +10.101 | +15.680 | -193.05 | 656.5 |
| OOS | 3076 | +2328.30 | +6630.66 | +11.783 | +19.740 | +94.933 | -69.85 | 912.5 |
9. Combined portfolio statistics
Combined (equal-weighted across 5 alphas)
| window | hours | cum P&L | ann P&L |
Sharpe | Sortino | Calmar | peak DD | turnover |
| all | 5890 | +821.66 | +1222.02 | +4.769 | +5.983 | +7.632 | -160.12 | 892.8 |
| IS | 2814 | +358.36 | +1115.58 | +3.872 | +4.675 | +6.967 | -160.12 | 514.6 |
| OOS | 3076 | +463.29 | +1319.40 | +5.913 | +7.973 | +20.341 | -64.86 | 376.6 |
Combined (Sharpe-weighted, trailing 720h)
| window | hours | cum P&L | ann P&L |
Sharpe | Sortino | Calmar | peak DD | turnover |
| all | 5890 | +2021.57 | +3006.62 | +8.323 | +11.540 | +32.151 | -93.51 | 958.0 |
| IS | 2814 | +516.77 | +1608.72 | +5.345 | +6.203 | +17.203 | -93.51 | 410.2 |
| OOS | 3076 | +1504.80 | +4285.45 | +10.498 | +16.384 | +65.584 | -65.34 | 547.0 |
Sharpe-weighted portfolio composition
Most recent weight snapshot
As of 2026-09-11 09:00:00 UTC (most recent hour with a full trailing window).
| alpha | trailing Sharpe (lag 1h) | weight |
| volume_surprise | +0.083 | 29.9% |
| put_call_ratio | -0.126 | 0.0% |
| options_skew_30d | -0.002 | 0.0% |
| options_25delta_skew_30d | +0.049 | 17.5% |
| gex_negative | +0.146 | 52.6% |
10. Forward window hourly tail
| snapshot_hour | pnl | equity | drawdown |
|---|
| 2026-09-09 17:00:00 | +0.0943 | +824.0711 | -26.5521 |
| 2026-09-09 18:00:00 | -0.0463 | +824.0248 | -26.5984 |
| 2026-09-09 19:00:00 | -0.2327 | +823.7920 | -26.8311 |
| 2026-09-09 20:00:00 | -0.0617 | +823.7303 | -26.8928 |
| 2026-09-09 21:00:00 | +0.6354 | +824.3658 | -26.2574 |
| 2026-09-09 22:00:00 | -0.7461 | +823.6196 | -27.0036 |
| 2026-09-09 23:00:00 | -0.3002 | +823.3195 | -27.3037 |
| 2026-09-10 00:00:00 | +0.0176 | +823.3370 | -27.2862 |
| 2026-09-10 01:00:00 | -0.0475 | +823.2895 | -27.3336 |
| 2026-09-10 02:00:00 | +0.5211 | +823.8107 | -26.8125 |
| 2026-09-10 03:00:00 | +0.1620 | +823.9727 | -26.6505 |
| 2026-09-10 04:00:00 | +0.2082 | +824.1809 | -26.4423 |
| 2026-09-10 05:00:00 | -0.0006 | +824.1803 | -26.4429 |
| 2026-09-10 06:00:00 | -0.4028 | +823.7774 | -26.8458 |
| 2026-09-10 07:00:00 | -0.1424 | +823.6350 | -26.9881 |
| 2026-09-10 08:00:00 | +0.1190 | +823.7540 | -26.8692 |
| 2026-09-10 09:00:00 | -0.5438 | +823.2102 | -27.4129 |
| 2026-09-10 10:00:00 | -0.3613 | +822.8490 | -27.7742 |
| 2026-09-10 11:00:00 | -1.0697 | +821.7793 | -28.8439 |
| 2026-09-10 12:00:00 | -3.4977 | +818.2816 | -32.3416 |
| 2026-09-10 13:00:00 | +1.5987 | +819.8803 | -30.7429 |
| 2026-09-10 14:00:00 | +0.3076 | +820.1878 | -30.4353 |
| 2026-09-10 15:00:00 | +0.4372 | +820.6250 | -29.9981 |
| 2026-09-10 16:00:00 | +1.2811 | +821.9061 | -28.7171 |
| 2026-09-10 17:00:00 | -0.1516 | +821.7545 | -28.8687 |
| 2026-09-10 18:00:00 | +0.1655 | +821.9200 | -28.7032 |
| 2026-09-10 19:00:00 | +0.0300 | +821.9500 | -28.6732 |
| 2026-09-10 20:00:00 | -0.3665 | +821.5835 | -29.0397 |
| 2026-09-10 21:00:00 | -0.3600 | +821.2235 | -29.3997 |
| 2026-09-10 22:00:00 | -1.2369 | +819.9866 | -30.6366 |
| 2026-09-10 23:00:00 | +0.8893 | +820.8759 | -29.7473 |
| 2026-09-11 00:00:00 | +0.3003 | +821.1762 | -29.4470 |
| 2026-09-11 01:00:00 | -0.2941 | +820.8821 | -29.7411 |
| 2026-09-11 02:00:00 | -0.3445 | +820.5375 | -30.0857 |
| 2026-09-11 03:00:00 | +0.5857 | +821.1232 | -29.5000 |
| 2026-09-11 04:00:00 | +0.1725 | +821.2957 | -29.3275 |
| 2026-09-11 05:00:00 | +0.0818 | +821.3774 | -29.2457 |
| 2026-09-11 06:00:00 | +0.0676 | +821.4451 | -29.1781 |
| 2026-09-11 07:00:00 | +0.1562 | +821.6013 | -29.0219 |
| 2026-09-11 08:00:00 | +0.0538 | +821.6551 | -28.9681 |
11. Caveats / known limitations
- α-signs are selected from the Tardis IS Sharpe (negative Sharpe → flip). The OOS window is then used to validate that the chosen sign holds out-of-sample. This is mild IS selection — the bias is bounded because only the sign (one bit per alpha), not magnitude or thresholding, is fitted to IS.
- α1 (volume_surprise) is now defined consistently as 24h premium-volume surprise: Tardis IS trades are rolled into trailing 24h premium USD notional, while live OOS venue-native 24h fields are normalized before aggregation (notably Bybit underlying notional → premium). This avoids both the old OOS-only
vol(t) - vol(t-24h) artifact and venue-unit std jumps in ETH/XRP. α2 uses the same normalized 24h call/put premium volumes. - Deribit's REST endpoint
get_book_summary_by_currency does not ship delta/gamma, so the live AWS scraper writes null there. Greeks are filled in downstream via Black-Scholes-Merton (r = q = 0) from (mark_iv, strike, ttm, underlying_px), so α4 / α5 see Deribit on OOS just as the Tardis IS data does. Cross-check vs Tardis-reported Greeks: max delta error 6e-5, gamma matches to ~rounding precision. - Tardis ships
mark_iv as percent for Deribit (e.g. 42.84) and as fraction for Binance / OKX / Bybit. The Tardis features module now divides Deribit by 100 before the α3 / α4 aggregation to match the live scraper's normalization — without this, the IS frame would carry a venue-mixed unit and OOS the wrong scale, producing a phantom z-score jump at the IS/OOS boundary that previously inflated α3's OOS Sharpe to ~8. - GCS-side merged parquets are synced locally but excluded from alpha computation — they are independent scrapes of the same market state as AWS (row counts within ±0.001%, snapshot_ts offset by <1s), so including both doubles polars working set without adding signal. The GCS mirror is retained for redundancy/failover only.
- Per the article spec, α3 / α4 (skew alphas) are BTC/ETH-only. SOL & XRP appear only in α1 / α2 / α5.
- Equity uses fixed $1000 notional per (unit position × hour); no compounding, no transaction cost. Turnover column is the absolute Δposition sum over the window.
- 168-hour z-score warm-up means OOS observations within the first 84h of the IS series are dropped before equity accumulates — this is unavoidable absent a pre-existing prior history.
- Sharpe-weighted portfolio uses a trailing 720h (30d) Sharpe per alpha, lagged 1h (no look-ahead), with weights = max(0, Sharpe) normalized to sum=1. Negative-Sharpe alphas receive zero weight in real-time — this is a stricter filter than the static sign-flip in §2. min_samples = 168h before any weight is emitted.