Mga Estratehiya
Binance Options ETH Weekly Bull Put Spread sa Mataas na IV (Carry na Short Volatility na may Limitadong Panganib)
Resulta: Inabandona
DeribitEthWeeklyBullPutSpreadShortVolCarry
Maayos ang pagkakabuo, tunay na may limitadong panganib (nililimitahan ng long wing ang tail), mababa ang fee, at sapat ang bilang ng trade (106 legs / 53 spreads)
Hypothesis
Implementasyon
Lingguhang defined-risk BULL PUT SPREAD sa ETH options ng Deribit: sa bawat lingguhang expiry, ibenta ang put na ~4% OTM at bilhin ang put na ~8% OTM (pareho ang expiry) kapalit ng netong credit. Kumikita sa pagbaba ng theta at mean reversion ng IV habang nananatili ang ETH sa ibabaw ng short strike; nililimitahan nang tiyak ng long-put wing ang pinakamalaking lugi. Nakabatay ito sa RollingOptionsStrategy framework, na kumukuha ng makasaysayang lingguhang ETH chain at iskedyul ng roll; itinatakda ng subclass na ito ang panig ng bawat leg batay sa strike (short ang put na may mas mataas na strike, long ang mas mababa), itinatakda ang dami ng kontrata para ang takdang pinakamalaking lugi ay ~2% ng equity, at sabay na pumapasok sa dalawang leg kapag may live na hourly bar na ang bawat isa. Nilalaktawan lang ng magaang filter ng trend na 7 araw (degrade-open) ang mga kumpirmadong matinding downtrend.
Ipinatutupad nito ang carry ng short-vol na may limitadong panganib ayon sa hypothesis: bull put spread na may dalawang put at iisang expiry, na kumokolekta ng net credit; nililimitahan ng long wing ang tail (hindi maaaring lumampas sa width - credit ang lugi sa isang trade). Pagwawasto sa iteration 5: inalis ang ipinagbabawal na 'smoke path' sa underlying (pinalalawak na ngayon ng Layer-3 sandbox ang rolling chain, kaya may laman na ang mga period at pinatay ang smoke path, na nag-iwan ng zero trade) at inilapit ang long-put wing mula ~10% OTM sa liquid weekly band ng Deribit (-8%) para may hourly bar ang dalawang leg at gumana ang atomic period-ready gate, alinsunod sa napatunayang pattern ng pumasa na EthDeribitWeeklyDefinedRiskShortPutSpreadVrp strategy. Pinalitan ang venue ng DERIBIT dahil Deribit BTC/ETH lang ang sinusuportahan ng rolling-chain expander at hindi maipapahayag bilang nakapirming Binance contract ang weekly-rolling spread; sa Deribit din nagdadala ang ETH ayon sa mga tuntunin ng venue.
Mga Resulta ng Beripikasyon
CLEAN RESTART 2026-09-04 — inalis ang kasaysayan ng mga verdict at tala ng pagkatuto ng run na ito, at sinimulan itong muli mula sa beripikasyon. Pipeline ang dahilan ng dating pag-abandona, hindi ang market: mali ang pagkakatali ng Layer-2 harness sa mga @staticmethod helper (naayos na), naglabas ang QA ng mga pinal na verdict sa performance batay sa hindi na-optimize na smoke test (inalis na — correctness na lang ang hinahatulan ngayon ng QA), at sanhi ng kakulangan ng backtest slot ang mga timeout sa sandbox (naayos na). Hindi nagbago ang hypothesis at strategy code. Suriin ang code batay sa merito nito; sa kabuuang backtest at optimizer pagpapasyahan ang performance sa huli.
Pagsusuri ng Backtest
- Sharpe
- 2.17
- Kabuuang Return
- 9.82%
- Max Drawdown
- 9.87%
- Kabuuang Trade
- 106
- Win Rate
- 49.1%
- Profit Factor
- 1.23
Maayos ang pagkakabuo, tunay na may limitadong panganib (nililimitahan ng long wing ang tail), mababa ang fee, at sapat ang bilang ng trade (106 legs / 53 spreads)
Pirma ng defined-risk Deribit options: positibong Sharpe 2.17 / PF 1.23 pero NEGATIVE avg_trade_return_pct -2.29% bawat defined-risk wing notional — likas ito sa credit spread at hindi pumapasa sa minimum na viability
Iisa ang regime sa ~1-taong history ng option (legs 2025-09 → 2026-09, effective_daily_obs 53); walang datos sa iba't ibang regime ang walk-forward/holdout; bahagyang positibo lang ang sharpe_ci_low 0.06
Kulang ang sample ng mabigat na left tail ng short-vol: return_skew -1.94, kurtosis 7.1, largest_loss -$8,840 kumpara sa avg_win $1,028
Walang bisa ang palagay sa venue: BINANCE_OPTIONS (0% quota) ang target ng hypothesis pero pinalitan ito ng DERIBIT, kaya nadoble ang dati nang ETH weekly put-spread family
Kasaysayan ng Iterasyon
Bumagsak ang beripikasyon (Layer 1 — static analysis): - Hindi naipatupad ang kinakailangang method: should_enter (line None) - Hindi naipatupad ang kinakailangang method: calculate_signal (line None) - Hindi naipatupad ang kinakailangang method: should_exit (line None) - Hindi naipatupad ang kinakailangang method: position_size (line None)
Bumagsak ang beripikasyon (Layer 2 — synthetic scenarios): Mga ginamit na parameter: ['leg_sides', 'risk_frac', 'min_notional', 'rolling_options', 'roll_buffer_hours'] Tiyaking itinatalaga ng __init__ ang lahat ng attribute mula sa self.parameters.get(). - steady_uptrend: TypeError: super(type, obj): obj must be an instance or subtype of type (timestamp ng bar: 1735690740000) - steady_downtrend: TypeError: super(type, obj): obj must be an instance or subtype of type (timestamp ng bar: 1735690740000) - flat_ranging: TypeError: super(type, obj): obj must be an instance or subtype of type (timestamp ng bar: 1735690740000) - volatility_spike: TypeError: super(type, obj): obj must be an instance or subtype of type (timestamp ng bar: 1735690740000) - zero_volume: TypeError: super(type, obj): obj must be an instance or subtype of type (timestamp ng bar: 1735690740000) - price_gap: TypeError: super(type, obj): obj must be an instance or subtype of type (timestamp ng bar: 1735690740000)
Bumagsak ang beripikasyon (Layer 3 — sandbox backtest): Walang nagawang trade Ginamit na uri ng bar: ETH-PERPETUAL.DERIBIT-1-HOUR-LAST-EXTERNAL, Mga naprosesong bar: 63501 Diagnostics: nagbalik ng side ang should_enter() nang 0 beses sa 0 nasuring bar -> hindi kailanman na-trigger ang iyong ENTRY CONDITION. Luwagan ang lohika / threshold ng entry. Tiyaking nakakagawa ng trade ang iyong strategy gamit ang ibinigay na datos at parameter.
Bumagsak ang beripikasyon (Layer 3 — sandbox backtest): lumampas ang smoke test sa 300s na limitasyon sa oras. Halos palaging nangangahulugan ito ng trabahong ginagawa sa bawat bar na lumalaki kasabay ng history — hal., muling pag-scan sa buong funding/supplementary series, o muling pagbuo ng listahan at pagtawag sa min()/sorted() sa loob ng calculate_signal()/on_bar() sa bawat bar. Ihanda muna ang mga nakaayos na timestamp array ONCE sa __init__ at gamitin ang bisect, o i-cache ang mga lookup ayon sa timestamp, para O(log n) sa halip na O(n) ang gastos sa bawat bar.
Dahilan ng Pag-abandona
Ang Stratmill ay isang tool para sa pananaliksik at paper trading, hindi payo sa pananalapi o isang broker. Ang mga resulta ng backtest at paper trading ay hypothetical. May panganib ng pagkalugi ang pangangalakal.