Skip to content

View original

EthOptionsImpliedSkewExtremeFadeLS

Hypotheses

ETH Options-Implied Skew Extreme Fade, Long-Short

Hypotheses

Iteration 3 addresses the Layer-3 'no trades' report at its actual cause and loosens every threshold that could plausibly suppress entries: entry_z 1.3->1.0, exit_z 0.4->0.3, min_obs 20->12 (signal live from ~day 2 of surface history instead of ~day 3), z_window 48->40, max_supp_lag_hours 12->36 (the real snapshot cadence is median 2.1h with a 45h maximum gap), plus mark_iv normalisation that accepts percent OR fractional quoting. Nothing that already passed Layers 1-2 was touched (imports, class structure, continuous z-score signal, leverage-consuming sizing all unchanged). I verified the mechanism against the live repo rather than guessing: running THIS module's parser over data/supplementary/deribit/book_summary_ETH_history.parquet (156,170 rows / 189 snapshots) produces 189 skew observations, 170 rolling z-scores, and |z|>=1.0 on ~50% of them -- the entry logic fires constantly on the real feed. The sandbox never sees that feed: PipelineProcessor.SUPP_KEYS carries only deribit_dvol and deribit_funding for Deribit, so supp_keys_referenced() never requests deribit_book_summary and Layer 3 substitutes _gen_synthetic_deribit_greeks(), a single {'instrument_name': 'BTC-PERP'} row every 120 bars with no strike, no expiry and no underlying_price. A per-strike risk reversal cannot be built from it, so the (correct) no-data guard returns 0.0 on every one of the 19,939 evaluated bars and no entry can fire -- which is exactly the diagnostic. Manufacturing a signal from those synthetic rows would be the banned synthetic/price-proxy fallback, so I did not.

Hypotheses

verification_loop: Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: ETHUSDT.BINANCE-1-HOUR-LAST-EXTERNAL, Bars processed: 19958 Diagnostics: should_enter() returned a side 0 times over 19939 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.

Implementation

Fades extremes in the ETH Deribit ~30-DTE risk reversal (IV of the 10% OTM put minus the 10% OTM call, normalised by ATM IV) on the ETHUSDT.BINANCE perp. calculate_signal() returns the rolling z-score of that normalised skew every bar, computed point-in-time from the most recent option-surface snapshot at or before the bar. z >= entry_z (puts panic-bid = fear) goes LONG, z <= -entry_z (calls euphoria-bid) goes SHORT; exits on skew reversion past exit_z, a flip to the opposite extreme, or max_hold_bars. Every entry is a venue bracket (3% stop / 6% take-profit) so risk fires intra-bar; sizing is equity-relative and explicitly consumes config.leverage (2x). When the option surface is missing or stale beyond max_supp_lag_hours the signal is 0.0 and the strategy stays flat -- there is no price-only fallback.

Verification Results

Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: ETHUSDT.BINANCE-1-HOUR-LAST-EXTERNAL, Bars processed: 19958 Diagnostics: should_enter() returned a side 0 times over 19939 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.

Outcome Summary

EthOptionsImpliedSkewExtremeFadeLS-39d02d9f22

Outcome Summary

EthOptionsImpliedSkewExtremeFadeLS aimed to fade extremes in the Deribit ETH options risk-reversal skew, trading the liquid ETHUSDT perp long on fear spikes and short on euphoria, with venue-managed brackets for risk. Over three iterations the author verified the mechanism was sound on the real 189-snapshot option-surface history but diagnosed that the Layer-3 sandbox cannot inject the deribit_book_summary feed, so the correct no-data guard returned 0.0 and the entry never fired. The final sandbox run processed 19,958 bars and produced zero trades, and the strategy was abandoned in the verification loop. Because no backtest, optimization, or analyst review was ever reached, no performance metrics exist and the failure was one of data plumbing rather than trading logic.

Outcome Summary

A strategy whose edge depends on a supplementary feed the Layer-3 sandbox cannot inject (deribit_book_summary is absent from PipelineProcessor.SUPP_KEYS) can never fire an entry there, so the data-plumbing gap must be closed before the mechanism can be evaluated.

Outcome Summary

It was abandoned in the verification loop after 3 iterations when the Layer-3 sandbox backtest produced no trades; the entry condition never triggered because the required deribit_book_summary option-surface feed is not in the sandbox's SUPP_KEYS, so the strategy's no-data guard correctly held it flat.

Outcome Summary

Fade extremes in the Deribit ETH options-implied risk-reversal skew z-score by going long the ETHUSDT.BINANCE perp when normalised skew spikes high (fear) and short when it drops low (euphoria), flattening as skew reverts to its mean.

Outcome Summary

No performance metrics exist: the strategy never reached a full backtest, optimization, or analyst review. In the Layer-3 sandbox it processed 19,958 bars (19,939 evaluated) on ETHUSDT.BINANCE-1-HOUR-LAST-EXTERNAL and produced zero trades because should_enter() never returned a side.

Iteration History

Verification failed (leverage_set_but_unused): config sets leverage=2.0 but the strategy never references leverage in sizing. Size positions on it — notional = equity * fraction * leverage / price (read self.config.leverage) — or set leverage=1.0. As written the leverage is inert and the backtest is identical to 1x.
Strategy report

Backtest and paper results are hypothetical. Trading involves risk of loss.