Lumaktaw papunta sa nilalaman
Lahat ng estratehiya

Mga Estratehiya

Asymmetric na Trend Filter sa Pagkansela ng Order sa ETH Binance Perpetual

Resulta: Inabandona

EthBinanceOrderCancellationTrendFilter

Buod ng Resulta

Idinagdag ng strategy na ito ang asymmetric na pagpigil sa muling pagpasok pagkatapos ng exit sa breakout na 4H ETH na may bracket order sa Binance USD-M. Nagpakita ang unang backtest ng edge na sapat para sa fee ngunit mahina (Sharpe 0.35, 180 trade, 0.54% karaniwang trade), kaya ipinasa ito ng pagsusuri sa backtest sa optimization. Pinahusay ng optimization ang mga in-sample na bilang, ngunit OOS ang average na walk-forward na Sharpe na 0.32 na may PBO 0.73; matapos ang 3 iteration, iniwan ito ng analyst dahil sa overfit kahit 1.41 ang holdout Sharpe. Ipinakita ng sensitivity analysis na halos walang epekto ang cooldown, rearm at exit parameter, kaya hindi talaga nasubukan ang hypothesis tungkol sa pagpigil.

Hypothesis

Isang single-leg na Binance USD-M strategy ito na sumusubok sa pahayag ng artikulo na maaaring mabawasan ng pagpigil sa muling pagpasok sa panig na laban sa direksiyon ang paulit-ulit na stop-out fee. Gumagamit ito ng kalat-kalat na 4-oras na breakout, walang averaging down, at nananatiling flat sa labas ng mga napatunayang breakout state.

Code ng kabiguan: overfit, mula sa unang sinukat na ulat (Sharpe 0.35, CI [-0.47, 1.13], 180 trade). Matapos ang optimization, nabigo ito sa tatlong mahihigpit na minimum na hindi maaaring ipagwalang-bahala: overfit sa walk-forward (IS 0.73 kumpara sa OOS 0.32), OOS Sharpe 0.316 na mas mababa sa minimum na 0.5, at PBO 0.73. Ang DSR ay 0.885 kumpara sa inaasahang maximum na 0.17 sa 112 trial (10 epektibo), at hindi pumasa ang kandidato sa FDR ng programa. Patag ang trial surface (Sharpe 0.12-0.60) at nanalo sa……Magpakita ng higit paMagpakita ng mas kaunti

Code ng kabiguan: overfit, mula sa unang sinukat na ulat (Sharpe 0.35, CI [-0.47, 1.13], 180 trade). Matapos ang optimization, nabigo ito sa tatlong mahihigpit na minimum na hindi maaaring ipagwalang-bahala: overfit sa walk-forward (IS 0.73 kumpara sa OOS 0.32), OOS Sharpe 0.316 na mas mababa sa minimum na 0.5, at PBO 0.73. Ang DSR ay 0.885 kumpara sa inaasahang maximum na 0.17 sa 112 trial (10 epektibo), at hindi pumasa ang kandidato sa FDR ng programa. Patag ang trial surface (Sharpe 0.12-0.60) at nanalo sa in-sample ang napiling config sa 16% lang ng mga split. Hindi fee_edge: karaniwang trade na 0.93% kumpara sa minimum na 0.15%, PF 1.60. Hindi beta: correlation na 0.02, drawdown na 7.2%. Positibo ang holdout Sharpe na 1.41 sa 45 trade, ngunit hindi nito nababawi ang average na 0.32 OOS sa 252 split. Hindi talaga nasubok ang mekanismo ng pagpigil: walang ipinakitang sensitivity ang cooldown, exit_threshold, max_hold at risk_pct, at humigit-kumulang rearm_threshold ang 0.02, dahil nangingibabaw ang bracket exit at ang limitasyon sa notional na 30%. Ang nasukat ay pangkalahatang Donchian breakout na 4H ETH, isang pamilyang bumagsak na sa overfit. Para masubukan ang ideya, kailangan ng pananaliksik ng magkaparis na cooldown A/B sa mas mataas na dalas na signal kung saan talagang nagkakabisa ang pagpigil sa muling pagpasok.

Implementasyon

ETH USD-M perpetual sa Binance, 4H bars. Donchian breakout na 30 bar ang signal, sinusukat sa yunit na ATR, kasama ang trend tilt na EMA. Pumapasok ito sa long o short kapag nagsara ang presyo lagpas sa channel at lampas sa ±0.8 ang signal. Inilalagay sa venue-managed bracket ang bawat entry: stop-loss na 1.8% STOP_MARKET at take-profit na 4.5% LIMIT. Kabilang sa iba pang exit ang time stop na 42 bar (7 araw) at paglabas kapag bumaligtad ang signal. Pagkatapos ng anumang exit, kabilang ang mga stop-out, may cooldown na 2 bar. Nananatiling naka-block ang muling pagpasok sa parehong panig hanggang tumawid pabalik ang signal sa rearm threshold; ito ang asymmetric na filter sa pagkansela ng order.

Inaayos ang kritikal na natuklasang QA. Idineklara ang stop_loss_pct at take_profit_pct, ngunit hindi kailanman ipinatupad. Mga intra-bar na bracket leg na ang mga ito ngayon (use_bracket_orders=true), kaya nagaganap na ang stop-out na tinutukoy ng hypothesis. 0.018 x 0.30 x ng equity ang panganib sa bawat trade sa stop, humigit-kumulang 0.54% ng equity: nagbibigay ang risk_pct/stop ng 0.667x, at umiiral ang limitasyon na 0.30x. Itinatala na ngayon ang entry kapag naipatupad ang entry order. Kung wala ito, hindi kailanman magsisimula ng cooldown o haharang sa panig ang bracket stop na napunan bago magsara ang susunod na bar. Nagmumula na ngayon ang mga EMA sa warm-up history, na tumutugon sa babalang QA. Hindi nagbago ang iba pang lohika ng signal, entry at sizing. Para sa analyst: para subukan ang pahayag na nakatutulong ang pagpigil, ihambing sa cooldown_bars=0 na may napakalaking rearm_threshold, upang laging naka-rearm ang filter.

Mga Resulta ng Beripikasyon

Bilang opsyon, itakda na lang ang _position_was_open sa on_position_opened / on_order_filled, o alisin ang marka kapag ipinakita ng entry diagnostics na hindi naisagawa ang order.

Binabago ng _mark_entry() ang state sa loob ng should_enter(), bago tumakbo ang position_size() at ang mga pagsusuri sa minimum na notional o maling bracket. Kung hindi naisagawa kalaunan ang entry (size na 0, notional na mas mababa sa $5, tinanggihan ang bracket), mababasa pa rin sa susunod na flat bar na “naisara ang posisyon.” Magsisimula nito ang cooldown at haharangin ang panig kahit walang naganap na trade. Sa kasalukuyang risk sizing na 0.30 x equity, hindi ito maaaring mangyari sa aktuwal na paggamit.

Walang kailangang baguhin. Kung nais ng analyst ng purong stop-out filter, ipatupad ang _blocked_side kapag realized PnL < 0.

Nalalapat ang cooldown at pagharang sa panig pagkatapos ng paglabas sa EVERY, kabilang ang mga take-profit fill at time stop, hindi lang mga stop-out. Ganito ang nakasaad sa paglalarawan (“pagkatapos ng anumang exit, kasama ang mga stop-out”), at makatwirang pagbasa ito sa hypothesis. Tandaan na pinipigilan din nito ang muling pagpasok para magpatuloy sa parehong panig matapos ang panalong TP.

PF ang 1.34 ng sandbox sa 180 trade, at sumasaklaw sa 0 ang Sharpe na CI (-0.25 hanggang 1.28). 7% lang ang exposure, at pinakamahina ang tercile na may matinding volatility (Sharpe 0.21). Ang tunay na pahayag ng hypothesis ay nakatutulong ang pagpigil sa muling pagpasok, kaya dapat patakbuhin ng analyst ang ablation na iminumungkahi ng developer (cooldown_bars=0 na may napakalaking rearm_threshold). Kung wala ito, ipinakikita lang ng positibong resulta na gumagana ang Donchian breakout; hindi nito ipinakikitang may dagdag na halaga ang filter.

Pagsusuri ng Backtest

Sharpe
0.35
Kabuuang Return
23.73%
Max Drawdown
6.08%
Kabuuang Trade
180
Win Rate
37.2%
Profit Factor
1.32

180 trade sa loob ng 6.3 taon sa 4H bars, lampas sa minimum na 100 trade para sa intraday bars. Tinatayang 30 o higit pang trade ang holdout.

Ang avg_trade_return_pct ay 0.54% kumpara sa minimum na 0.15% para sa BINANCE USD-M, na 3.6 ulit ng minimum. 5.5% ng kabuuang tubo ang komisyon, at 6.6% ang market impact.

Sinusunod ng mga trade ang nakasaad na mekanismo. Ang karaniwang panalo ay 2.2 na beses ng mga pagkalugi, itinakda ang bracket stop at take-profit gaya ng naka-code, at halos palaging walang posisyon ang libro (7% exposure). Ang 0.37 na win rate na may PF 1.32 ay hindi ang pinabulaanang padron mula sa nakaraang aral, na nangangailangan ng PF na mas mababa sa 1.2.

Ang resulta ay hindi exposure sa merkado. Ang beta ay 0.0025, ang correlation sa benchmark ay 0.04, at ang max drawdown ay 6.1% kumpara sa humigit-kumulang 80% sa paghawak ng ETH. Ang end_unrealized_pct ay 0.

Positibo ang lahat ng tatlong volatility regime: Sharpe na 0.35 sa kalmado, 0.53 sa normal, 0.22 sa mabigat na kondisyon.

Ang Sharpe ay 0.35, mula -0.47 hanggang 1.13 ang confidence interval nito kaya kabilang dito ang zero, at ang PSR ay 0.65. Ayon sa isang nakaraang aral, mahirap makamit ng librong walang posisyon nang halos 93% ng oras ang Sharpe na 1.0.

May hinihinalang artifact sa pagmamarka ng pang-araw-araw na return; nakita ko ang sintomas ngunit hindi ko napatunayan ang sanhi. May magkakasunod na araw kung minsan na sinusundan ng katugmang pakinabang ang lugi kahit walang bukas na posisyon. Halimbawa ang 2024-03-08/09 (-1.98/+2.02) at 2024-03-31/04-01 (-1.98/+2.02), at walang bukas na trade sa mga petsang iyon sa listahan ng trade. Ipinakikita ng huling bar ang -2.58% habang flat. Pinapalaki ng mga pag-ugoy na ito ang volatility, kaya malamang na mas mababa sa tunay ang Sharpe na sinukat batay sa mark-to-market curve.

Tama ang alalahanin ng QA. Sa ngayon, ipinakikita lang ng resulta na may maliit na edge ang breakout na may bracket order. Hindi nito ipinakikitang may dagdag na halaga ang pagpigil sa muling pagpasok, gayong iyon ang tunay na pahayag ng hypothesis.

24.5% ang itaas na dulo ng confidence interval ng pinakamataas na drawdown, at 10 trade ang pinakamahabang sunod-sunod na talo.

Pagsusuri

Pinananatili ng Benjamini-Hochberg sa q=0.10 sa 343 kandidato ng programa ang 8. Hindi maihihiwalay sa sariling ingay ng programa ang kandidatong hindi pumasa rito, gaano man kaganda ang indibidwal nitong estadistika.

Kasaysayan ng Iterasyon

Bumagsak ang verification (Layer 4 — pagsusuri ng QA) [class=code_defect]: - [edge_concern] Positibo ang performance sa sandbox, ngunit kasama sa confidence interval ng Sharpe ang sero; suriin ang performance matapos ayusin ang depekto sa state. - [critical] Pagkasara ng posisyon, itinatakda ang _blocked_side sa dating direksiyon at nagiging true kalaunan ang _rearm_ready kapag naabot ang reset threshold. Gayunman, hindi kailanman inaalis ang _blocked_side. Dahil dito, tuluyang tinatanggihan ng should_enter() ang bawat susunod na entry sa direksiyong iyon, kaya hindi pagpigil hanggang sa muling pag-arm ang ginagawa ng strategy; isinasara nito ang direksiyong iyon sa natitirang bahagi ng run. (line 145) — ayusin: Kapag natugunan ang reset condition, alisin ang _blocked_side habang itinatakda ang _rearm_ready=True, o alisin ang kalabisan nang paghahambing sa blocked-side kapag naka-rearm na. Magdagdag ng regression test para sa close → reset → breakout sa parehong direksiyon.

Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=code_defect]: - [edge_concern] Sa sandbox, PF 1.18 sa 150 trade, Sharpe CI -0.34 hanggang 1.20 (sumasaklaw sa 0). Nalulugi ang kalmadong tercile ng volatility (-5.6%), halos lahat ng kita ay mula sa normal na tercile (+45%), at tumagal nang 1062 araw ang max drawdown. Tugma ang ledger: ang notional na 1.02% x 150 x ~30% ay humigit-kumulang 46%, kumpara sa kabuuang return na 39%. Malaki ang lamang ng economics kada trade sa minimum na 0.15%, kaya hindi ito……Magpakita ng higit paMagpakita ng mas kaunti

Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=code_defect]: - [edge_concern] Sa sandbox, PF 1.18 sa 150 trade, Sharpe CI -0.34 hanggang 1.20 (sumasaklaw sa 0). Nalulugi ang kalmadong tercile ng volatility (-5.6%), halos lahat ng kita ay mula sa normal na tercile (+45%), at tumagal nang 1062 araw ang max drawdown. Tugma ang ledger: ang notional na 1.02% x 150 x ~30% ay humigit-kumulang 46%, kumpara sa kabuuang return na 39%. Malaki ang lamang ng economics kada trade sa minimum na 0.15%, kaya hindi ito problema sa fee. Sa buong backtest, tingnan kung may naidaragdag ang pagpigil sa muling pagpasok: ihambing sa kaparehong breakout na may cooldown_bars=0 at laging naka-on ang muling pag-arm. Partikular na sinasabi ng hypothesis na binabawasan ng pagpigil ang paulit-ulit na stop-out fee. - [kritikal] Idineklara ang stop_loss_pct (0.018) at take_profit_pct (0.045), pero walang exit na nagpapatupad sa mga ito. should_exit lang ang nagsusuri sa max_hold_bars at sa pagbaligtad ng signal (±exit_threshold). Hindi nakatakda ang use_bracket_orders, kaya hindi rin naglalagay ng bracket ang batayang template (base_template._use_bracket_orders ay nangangailangan ng tahasang flag). Ginagamit lang ang stop_loss_pct bilang denominator sa position_size: risk_notional = equity*risk_pct/stop_loss_pct. Kaya ipinapalagay ng pagtakda ng laki na may 1.8% stop na wala naman, at kathang-isip ang nakasaad na panganib na 1.2% ng equity kada trade. Ipinakikita ito ng sandbox: pinakamalaking pagkalugi -$8,116, humigit-kumulang 8% ng equity sa leg na may ~30% notional, katumbas ng ~27% na galaw laban sa posisyon nang walang stop. Tungkol ang hypothesis sa pagbawas ng paulit-ulit na stop-out fee, kaya kailangang umiiral ang mismong mekanismo ng stop-out. Ia-optimize rin ng optimizer ang stop_loss_pct/take_profit_pct na para bang mga exit level ang mga ito, gayong binabago lang nila ang laki (TP ay walang ginagawa). Sinasabi ng paliwanag ng developer na pinanatili ang exit logic, pero hindi kailanman ipinatupad ang mga exit na ito. (linya 147) — ayusin: Itakda ang parameters.use_bracket_orders=true upang maipatupad ang 1.8% STOP_MARKET at 4.5% LIMIT TP sa loob ng bar (mas mainam sa mga 4H bar), at panatilihin ang mga signal at time-stop exit sa should_exit. O magdagdag ng tahasang pagsusuri sa should_exit gamit ang self.get_position_pnl_pct(position, price): <= -stop_loss_pct at >= take_profit_pct. Sa gayon, ang panganib kada trade = stop x notional = 0.018 x 0.30 x equity ≈ 0.54% ng equity. Kung pipiliin mong huwag gumamit ng mga stop, alisin ang stop_loss_pct/take_profit_pct at itakda ang laki nang direkta bilang nakapirming bahagi ng notional, para hindi mag-optimize ang optimizer ng mga parameter na walang epekto. - [babala] Sadyang pinatungan ang min_bars_required (nakapirming babala). Nagsisimula lang ang calculate_signal pagkatapos ng warm-up na iyon, kaya mula sa unang close na sinuri kinukuha ang panimulang halaga ng mga EMA. Kailangan ng EMA(36) ng humigit-kumulang 100 pang bar para mag-converge, kaya nagiging bias ang trend term sa umpisa. Maliit ang epekto sa ~14k 4H bar. (linya 42) — ayusin: Maaari mong itaas ang min_bars_required sa humigit-kumulang 3x slow_ema_period, o kunin ang panimulang halaga ng mga EMA mula sa self._bars sa unang tawag. - [babala] Naipagpapaliban nang isang bar ang pagtukoy sa exit: itinatakda ang cooldown at _blocked_side sa unang bar matapos makitang walang posisyon. Tumataas nang isa kada bar ang _bars_in_position habang bukas ang posisyon (walang dobleng pagtaas), at tama ang pag-trigger ng time stop sa 42 bar (7 araw). Kapag LONG ang naka-block na side at <= -entry_threshold ang signal, natutupad sa parehong bar ang kondisyon ng pag-reset (signal <= rearm_threshold), kaya pinipigilan lang ang muling pagpasok sa kaparehong side. Tugma ito sa layuning maging asimetriko. Walang depekto. (linya 88) — ayusin: Walang kailangang ayusin. - [babala] Pagsusuri ng laki: laging mas mataas ang risk_notional = equity x 0.012/0.018 ≈ 0.667 x equity kaysa sa max_notional = 0.30 x equity x 1.0, kaya epektibong nakapirmi sa 30% ng equity ang laki. Walang dynamic scalar at iisa ang leg na may 1x leverage, kaya 0.30 x equity ang pinakamasamang gross, na pasok sa cap ng venue. Sa notional na humigit-kumulang $30k sa ETH, madaling lalampas ang order sa minimum na $5. (linya 166) — ayusin: Magiging makabuluhan ang paraang risk_pct/stop_loss_pct kapag naipatupad na ang mga stop. Kumpirmahin ang nilalayong cap pagkatapos ng pag-aayos na iyon.

Buod ng Resulta

Halos walang epekto sa resulta ang mga parameter ng pagpigil sa muling pagpasok dahil nangingibabaw ang mga bracket exit at ang limitasyon sa notional na 30%. Para masubukan ang ideyang ito, kailangan ng magkaparis na cooldown A/B sa mas mataas na dalas na signal kung saan talagang nagkakabisa ang pagpigil, hindi ng isa na namang pangkalahatang Donchian breakout na 4H.

Iniwan ito ng analyst dahil sa overfitting. Nabigo ito sa tatlong mahihigpit na minimum na hindi maaaring ipagwalang-bahala: overfit sa walk-forward, OOS Sharpe 0.316 na mas mababa sa minimum na 0.5, at PBO 0.73 na mas mataas sa 0.5. Hindi rin ito pumasa sa pagsusuring FDR sa antas ng programa, at patag ang trial surface; nanalo ang napiling config sa in-sample sa 16% lang ng mga split.

Kalat-kalat na 4-oras na ETHUSDT Binance perpetual breakout strategy ito na may bracket na stop/take-profit order. Layunin nitong subukan kung mapuputol ng pagharang sa muling pagpasok sa panig na katitigil lang dahil sa stop-out ang paulit-ulit na stop-out fee.

Nagkaroon ng 23.7% ang unang backtest sa humigit-kumulang 6.3 taon sa 180 trade, na may Sharpe na 0.35 (CI -0.47 hanggang 1.13), profit factor na 1.32, karaniwang trade na 0.54% at pinakamataas na drawdown na 6.1%. Umabot ang na-optimize na config sa Sharpe na 0.65, return na 58.3% sa 198 trade at karaniwang trade na 0.93%. Gayunman, OOS lang ang average na walk-forward Sharpe na 0.32, kumpara sa 0.73 sa in-sample, at naging 0.73 ang PBO. Ang holdout Sharpe ay 1.41 sa 45 trade.

Pagsusuri

Kung makokontrol ng stop-loss ang panganib… kung gayon, Gul'dan, ano ang kapalit?

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.