Strategies
ETH Variance-Risk-Premium Regime Long on the Binance USD-M Perp: Hold ETHUSDT.BINANCE While Deribit ETH DVOL Minus 7-Day Realized Vol Is in the Top 30% of Its Trailing 90 Days, Exit When It Falls Below the Median, One Decision per Day at 00:00 UTC, Flat ~60% of the Time (1H bars + deribit_dvol, long-only, 2 thresholds)
Outcome: Abandoned
EthDvolVrpRegimeLong
Outcome Summary
EthDvolVrpRegimeLong re-routed a never-measured ETH variance-risk-premium regime long from Deribit's perp to the Binance USD-M perp. It went long when implied minus realized vol ranked in the top 30% of its trailing 90 days. The point-in-time backtest gave 64 trades at Sharpe 0.22 and PF 1.15, far below the pre-study's Sharpe 0.78, but it cleared the cost floor and passed backtest review to optimization. Optimization showed no out-of-sample edge (OOS Sharpe -0.009, PBO 0.63, holdout Sharpe -0.74 on 3 trades), so after 2 iterations the analyst abandoned it as overfit, and it flagged a possible engine marking artifact for separate review.
Hypothesis
This iteration fixes QA's critical finding. deribit_dvol rows are stamped at the candle's open but hold the candle's close value, so the value stamped T is only known at T+1h. The strategy now reads supp_as_of('deribit_dvol', ts - 1h), the last candle completed at the bar close. That removes the 1-hour look-ahead from every VRP value, percentile rank and decision. It also addresses QA's missing-data warning: a day with no DVOL or RV is no longer used up, and the decision retries on the next bar of the same day. Signal, thresholds and sizing are unchanged. The root cause is in load_deribit_dvol, which should stamp rows at ts_open + resolution. If the loader is fixed, this -1h shift must be removed or the read becomes an extra hour stale. The shift is conservative, but it is still wrong once the loader changes. Funding is not modeled in the sandbox, so the analyst should subtract long-perp funding over the days in the market. The pre-study Sharpe of 0.78 used the same peeking DVOL read and must be re-measured.
Implementation
Long-only regime strategy on the ETHUSDT.BINANCE perp. Once per UTC day it computes VRP = Deribit ETH DVOL minus annualized 168h realized vol, using the last completed hourly DVOL candle. It goes long when VRP's percentile against the prior 90 daily values is at least 0.70 and exits when it drops below 0.50. A -12% catastrophe stop on hourly closes exits early and blocks re-entry until the percentile falls below 0.50 again. Position size is 0.7x equity notional.
Verification Results
Leave the code as it is. When the loader is fixed, remove the -_HOUR_NS offset in the same change. Better still, have the loader own the stamping so strategies never shift the timestamp themselves.
The -1h shift in the DVOL read is correct today. I checked it: dvol_ETH.parquet has 48,363 contiguous hourly rows (every diff is 3,600,000 ms). load_deribit_dvol stamps each row at the candle's open ms but stores the candle's close, and supp_as_of(ts - 1h) returns the last fully completed candle at the bar close. The shift depends on the loader, though. If load_deribit_dvol is changed to stamp rows at open + 1h, this read becomes 1h stale without anyone noticing.
Keep the stop and sizing as registered. The analyst should compare max DD with the hypothesis's stated 41.9% at 1x.
Per-trade risk (L148). The stop is -12% of a 0.7x-notional position, checked on hourly closes, so the nominal worst loss is about 8.4% of equity per trade, and more if price gaps through the stop. The largest sandbox loss was -$14.7k, about 15% of starting capital. This is above the 1-2% guideline, but the design is not a compounding blowup: it has a flat state, one position, a fixed 0.7 fraction x leverage 1.0 with no dynamic scalar, and worst-case gross of 0.7x equity. The hypothesis also pre-registers exactly this sizing and stop.
No change needed. Just be aware of it when reading the holdout trade count.
min_bars_required is 170, but a first decision also needs 168 hourly returns and then 90 daily VRP values before p is valid. The effective warm-up is therefore about 97 days after the data starts. That is harmless, because the decision stays gated on _p_valid, but it shortens the usable sample for a strategy that already has few trades. DVOL starts on 2021-03-24, so the first possible decision is around late June 2021, which matches the pre-study's start of 2021-06.
The sandbox covers 834 days: 25 long trades, PF 1.20, Sharpe 0.31 with a CI of -1.04 to 1.52, and beta 0.23. That is well below the pre-study's PF 2.0 and Sharpe 0.78. The pre-study read DVOL one hour ahead (the open-stamped row), so its numbers are not a valid baseline. Funding is not folded into the result (funding_folded=false), so long-perp funding over the ~40% of time in market has to be subtracted; in 2021 and 2024 bull phases that can reach several % a year. The calm-vol tercile loses 16%. About 60 lifetime trades is the binding constraint, so the analyst should check the holdout trade count against the ≥10 floor before optimizing.
Backtest Review
- Sharpe
- 0.22
- Total return
- 29.49%
- Max drawdown
- 39.22%
- Trades
- 64
- Win rate
- 51.6%
- Profit factor
- 1.15
The trades implement the mechanism as stated: 64 long-only trades (the pre-study predicted 65), 37.5% in market (predicted about 40%), average hold 11 days (predicted median 8), no shorts. The point-in-time DVOL read (supp_as_of(ts-1h)) is correct.
Per-trade economics clear costs by a wide margin: avg_trade_return_pct 1.31% against the 0.15% USD-M floor (8.7x). Commission is 2.5% of gross and impact 8.4%. Funding is folded in (funding_folded=true).
The numeric review guard is met: 64 trades (>= 30), PF 1.15 (>= 1.05), Sharpe +0.22, DD 39.2% (< 60%), metrics_reliable=true, end_unrealized only 0.05%.
The edge is weak and not statistically distinguishable from zero. Sharpe is 0.22 with a CI of -0.51 to 0.93, PSR 0.63 and PF 1.15. Alpha is -2.9%/yr and the information ratio is -0.89 against ETH buy-and-hold. The pre-study reported Sharpe 0.78 and PF 2.0; QA traced the gap to a one-hour DVOL lookahead in the pre-study. This point-in-time run is the honest baseline.
QA's edge concern is largely borne out. Full history gives Sharpe 0.22 and PF 1.15, close to the sandbox's 0.31 and 1.20. Annual returns are 2021 -3.8%, 2022 -17.4%, 2023 +39.6%, 2024 +11.8%, 2025 +6.3%, 2026 -13.8%: 3 of 6 years positive, below the 60% validity floor. 2023 carries most of the profit.
The sample is thin. DVOL starts in 2021-03, which leaves about 64 lifetime trades. That is below L178's roughly 100-trade advisory bar, and the holdout (last 20%) will hold only about 12-13 trades against the 10-trade floor.
Beta check (L170): beta is 0.14 and max DD is 39% at about 0.7x notional with 37.5% exposure. That is well below ETH buy-and-hold's roughly 80% drawdown over the span, so the result is not pure beta. But the strategy loses money in stressed regimes (luna -19.5%, rate shock -19.6%) and the drawdown lasted 602 days.
Unverified: recurring paired MTM days of about -12% / +13% while in position (2025-04-14/15, 2025-10-15/16, 2026-01-15/16, 2026-04-17/18, 2026-07-18/19), plus a -12.3% final bar on 2026-08-17. These match the paired-swing symptom seen in other runs. They roughly cancel in return but inflate volatility and depress Sharpe. The mechanism has not been independently verified, and the engine's marking should be reviewed.
Analysis
Per-trade economics are far above the cost floor. The base run makes avg_trade 1.31% against the USD-M floor of 0.15%, about 9x, and the optimized run makes 4.92%. Fees are not the problem (commission is 2.5% of gross).
The code implements the premise. Every trade is long-only, exposure is 37.5% (close to the ~40% the pre-study predicted) and the DVOL read is point-in-time.
It is not a beta clone. Max drawdown is 39% at 0.7x and 37.5% exposure, against roughly 80% for ETH buy-and-hold over the same period. Beta is 0.14, but alpha is about 0 (-0.03) and IR is -0.89.
The pre-registered rule did not reproduce the pre-study. The pre-study claimed Sharpe 0.78, PF 2.0, avg +2.74% and max DD 41.9% on 65 trades. The engine gives Sharpe 0.22, PF 1.15, avg 1.31%, PSR 0.63 and a Sharpe CI of -0.51 to 0.93 on 64 trades. The yearly pattern also differs: the pre-study had 2021 at +0.69, the engine has 2021 at -3.8% and 2022 at -17.4%.
CPCV finds no edge. The in-sample winner's OOS Sharpe averages -0.009 across 252 splits against an IS average of 0.75, with PBO 0.63 and is_overfitted=true. The chosen parameters were the IS winner in only 20% of splits.
The optimizer escaped to a degenerate corner. entry_pct went to 0.997 (enter only when today's VRP is the 90-day maximum), exit_pct to 0.44 and rv_hours to 237. That leaves 15 trades, 12% exposure, and 2021 carries 131% of the profit. The claimed plateau across 0.6-0.8 and 0.4-0.55 is not there: sensitivity flags 6 of 7 parameters as cliffs around a base Sharpe of about -0.09, and the heatmap is noisy between -0.02 and 0.45.
The holdout failed. It covers 2025-04-19 to 2026-08-16, 484 days, and produced Sharpe -0.74 on only 3 trades. Both the sign and the sample-size part of the hard gate fail.
Deflation fails. DSR is 0.38, and expected-max Sharpe is 0.35 over 17 effective trials. The strategy does not survive programme FDR (p=0.62).
Pre-registered predictions met: 1 of 5. min_trades was 15 against 50, OOS Sharpe -0.009 against 0.55, max DD 30.4% against 30%, and PF 1.36 against 1.5. Only the avg-trade prediction was met.
Possible engine artifact, not verified: both curves show repeated paired -X%/+X% day swings on days the book appears flat. In the optimized run this is -4.41/+4.61 on 2021-12-06/07, 2022-03-08/09 and 2022-06-08/09, and -4.27/+4.46 in 2022-12, 2023-03, 2023-06 and 2023-09. The final bar shows -12.3% in the base run and -8.2% in the optimized run on 2026-08-17 with end_unrealized about 0.05%. These can inflate DD and distort Sharpe and should go to engine review. They do not change the verdict, because the OOS and holdout failures come from trade-level results.
Benjamini-Hochberg at q=0.10 over 341 programme candidates keeps 8. A candidate that does not survive here is not distinguishable from the programme's own noise, however good its individual statistics look.
Iteration History
Outcome Summary
The pre-study harness overstated Sharpe by about 3.5x on the same rule (QA traced it to a one-hour DVOL lookahead), so pre-study results should be checked against the point-in-time engine, and DVOL/VRP regime gates on BTC/ETH perps should not be proposed again (this is the 4th DVOL-signal failure).
The analyst abandoned it as overfit after it failed four hard gates: CPCV OOS Sharpe -0.009 against an IS Sharpe of 0.75 (is_overfitted=true), PBO 0.63, a holdout Sharpe of -0.74 on 3 trades, and an optimizer result that relied on a degenerate 15-trade corner. It also had DSR 0.38, did not survive programme FDR, and met only 1 of 5 pre-registered predictions. Fees were not the problem.
Hold ETHUSDT.BINANCE long (0.7x equity, long-only) when the Deribit ETH DVOL minus 168h realized-vol spread ranks in the top 30% of its trailing 90 daily values, exit when it falls below the median, deciding once per day at 00:00 UTC.
The pre-registered rule made 64 trades with Sharpe 0.22 (CI -0.51 to 0.93), PF 1.15, avg trade 1.31% of notional, total return 29.5% and max drawdown 39.2%, against a pre-study claim of Sharpe 0.78 and PF 2.0. Optimization moved to entry_pct 0.997 with only 15 trades (Sharpe 0.24, avg trade 4.92%), while walk-forward OOS Sharpe averaged -0.009, PBO was 0.63, and the holdout returned Sharpe -0.74 on 3 trades.
Backtest and paper results are hypothetical. Trading involves risk of loss.