Lumaktaw papunta sa nilalaman
Lahat ng estratehiya

Mga Estratehiya

Dislokasyon sa DOGE Bybit–OKX Perpetual

Resulta: Inabandona

DogeBybitOkxOuDislocation

Buod ng Resulta

Sinubukan ng DogeBybitOkxOuDislocation ang mekanismong Ornstein–Uhlenbeck pairs na gaya ng QuantConnect sa mga perpetual ng DOGE na naka-quote sa Bybit at OKX. Pagkaraan ng 5 iteration, malinis at ganap na nakaayon ang datos at accounting; pero sa halos limang taon, 15 pares lang ang naganap, 0.23 ang Sharpe na ang confidence interval ay sumasaklaw sa sero, at 0.0277% ang karaniwang return bawat trade. Halos naubos ng impact at komisyon ang gross profit. Itinigil ito ng analyst sa pagsusuri ng backtest dahil hindi kayang tumbasan ng ganitong kaliit na spread ang gastos sa trade sa anumang tuning ng parameter, kaya hindi na tumuloy sa optimization, analysis at risk review.

Hypothesis

Subukan ang mekanismo ng QuantConnect na Ornstein–Uhlenbeck pairs sa iisang asset sa dalawang venue. Iangkop araw-araw ang log price spread gamit ang naka-sync na 1-oras na bar mula sa nagdaang 30 araw. Panatilihing magkapantay ang dami ng hedge na DOGE at gumamit lang ng mga nakumpletong bar.

fee_edge / negative_expectancy (unang nasukat na ulat). Sa loob ng 1905 araw, 0.0277% ang avg_trade_return_pct bawat leg. 0.15% ang hangganan ng futures sa iisang leg, at humigit-kumulang 0.63% ang hangganang nakaayon sa laki ng leg (L127) para sa pares ng Bybit+OKX na may apat na fill. Kinakain ng impact ang 79% ng gross, 1.027 ang PF, at 0.23 ang Sharpe na may CI na sumasaklaw sa 0 (PSR 0.52); -0.015 ang signal na IC (tinanggihan). 15 lang na pagpasok ng pares ang naganap, kumpara sa humigit-kumulang 100 na……Magpakita ng higit paMagpakita ng mas kaunti

fee_edge / negative_expectancy (unang nasukat na ulat). Sa loob ng 1905 araw, 0.0277% ang avg_trade_return_pct bawat leg. 0.15% ang hangganan ng futures sa iisang leg, at humigit-kumulang 0.63% ang hangganang nakaayon sa laki ng leg (L127) para sa pares ng Bybit+OKX na may apat na fill. Kinakain ng impact ang 79% ng gross, 1.027 ang PF, at 0.23 ang Sharpe na may CI na sumasaklaw sa 0 (PSR 0.52); -0.015 ang signal na IC (tinanggihan). 15 lang na pagpasok ng pares ang naganap, kumpara sa humigit-kumulang 100 na kailangan para sa makabuluhang optimization o holdout (L178). Hindi mapapataas ng pag-optimize sa entry_z, exit_z o min_edge ang spread ng iisang asset sa dalawang venue kung karaniwang mas maliit ang dislokasyon nito kaysa apat na taker fill kasama ang impact. Inaalis ng pagtataas sa min_edge ang iilang natitirang trade, at nagdaragdag naman ng mga trade na negatibo matapos ang fee kapag ibinaba ito. Napatunayan sa buong history ang alalahanin ni QA sa edge: mas kaunti sa 30 pares at malayong mas mababa sa gastos ang netong edge bawat pares. Sulit lang itong imungkahi muli kung maker/passive ang execution sa dalawang venue, at kailangan nitong paunang magtakda ng netong hindi bababa sa 0.6% bawat pares pagkatapos ng impact.

Implementasyon

Cross-venue OU pairs trade ng iisang asset: log(DOGE pagsasara ng Bybit / DOGE pagsasara ng OKX) sa mga nakumpleto at nakaayon sa timestamp na 1H bars. Isang beses bawat UTC araw, inaangkop ang modelong AR(1)/OU gamit ang mga synchronized spread sa nagdaang 30 araw (mean, stationary sigma). z-score ng kasalukuyang spread ang signal. Kapag lampas sa +entry_z (at >= min_edge_bps ang layo sa mean), ibinebenta nito nang short ang Bybit at binibili ang OKX sa magkapantay na daming DOGE; kabaligtaran naman kapag mas mababa sa -entry_z. Lumalabas kapag bumalik ang z sa loob ng exit_z, tumama sa adverse stop na stop_z, o naging invalid ang modelo. Itinatakda sa leg_fraction ng equity ang laki ng bawat leg, nang walang leverage.

Target ng iteration 5 ang timeout ng Layer-3 at wala itong binabago sa mga tuntunin ng trading. Nag-profile ako nang lokal sa previous_code gamit ang BacktestRunner sa loob lang ng 120 araw ng DOGEUSDT.BYBIT/OKX 1H. Umabot sa kabuuang 390s. Mga 380s rito ay mula sa ParquetDataCatalog.query -> get_file_list_from_data_cls -> fsspec glob/walk. Umikot ang paghahanap sa ~372k direktoryo dahil nasa catalog na ang ~133k direktoryo ng bar at ~97k direktoryo ng option. Hindi lumitaw sa nangungunang -30 pinagsama-samang……Magpakita ng higit paMagpakita ng mas kaunti

Target ng iteration 5 ang timeout ng Layer-3 at wala itong binabago sa mga tuntunin ng trading. Nag-profile ako nang lokal sa previous_code gamit ang BacktestRunner sa loob lang ng 120 araw ng DOGEUSDT.BYBIT/OKX 1H. Umabot sa kabuuang 390s. Mga 380s rito ay mula sa ParquetDataCatalog.query -> get_file_list_from_data_cls -> fsspec glob/walk. Umikot ang paghahanap sa ~372k direktoryo dahil nasa catalog na ang ~133k direktoryo ng bar at ~97k direktoryo ng option. Hindi lumitaw sa nangungunang -30 pinagsama-samang entry ang sariling code ng strategy sa bawat bar. Kaya ang paghahanap ng catalog file, na lumalaki kasabay ng laki ng catalog, ang sanhi ng timeout at hindi ang strategy (aral L155(b)/(c): plumbing). Malamang mauulit ito hangga't hindi naaayos sa platform ang query path ng catalog, halimbawa gamit ang direktang listahan ng file path. Inaalis ng iisang pagbabago sa code ang natitirang gawaing proporsyonal sa history ng strategy. Dati, muling bumubuo ang araw-araw na fit ng diksyunaryo ng timestamp na OKX at ini-scan ang parehong buffer ng bar. Binabasa na nito ngayon ang limitadong deque(maxlen=lookback*24+24) ng mga pares na (ts, log spread), na idinadagdag nang isang beses sa bawat nakaayong bar. Hindi nagbago ang fit: parehong window, parehong tuntunin sa pagtutugma (mga pares lang na magkapareho ang ts ang ginagamit), parehong pagtatantiya ng AR(1). O(1) ang gastos sa bawat bar at O(720) ang araw-araw na fit. Binubuo muli ang deque habang nagwa-warmup dahil tumatakbo ang calculate_signal sa mga warmup bar.

Mga Resulta ng Beripikasyon

Pag-isipang itaas ang min_edge_bps sa saklaw ng optimizer (halimbawa, 35-80), o gumamit ng passive limit order sa pagpasok, para malinaw na mas malaki ang nakuhang convergence kaysa 21 bp kasama ang impact.

Alanganin ang kakayahang kumita matapos ang fee. Kailangan sa pagpasok na |spread - mean na OU| >= 35 bp at z >= 2. Humigit-kumulang 21 bp ng notional ng isang leg ang gastos ng dalawang round trip sa taker fee, bukod pa sa minodelong impact na malaki sa smoke test. Kapag sinukat sa kabuuang notional ng dalawang leg, malayong bababa sa hangganan ng analyst na 0.15% bawat trade ang netong return bawat trade kahit lubusang mag-converge ang spread. Pasado ito sa pagsusuri 8 dahil mas mataas ang 0.35% sa 0.15%, pero malapit ito sa hangganan.

Isama sa PnL ang funding ng Bybit at OKX kapag mayroon na nito, o itala kung ilang pares ang hawak sa oras ng funding.

Hindi minomodelo ang pagkakaiba ng funding sa dalawang venue: iniulat ng backtest na funding_folded=false at funding_events_available=0. Mga 2 oras lang ang karaniwang tagal ng hawak, kaya maliit ang epekto; pero kung hawak ang pares sa oras ng funding na 8 oras, babayaran o tatanggapin ang diperensya ng rate ng dalawang venue.

Hindi kailangan ng pagbabago sa estratehiya. Dapat ipaubaya sa engineering ang landas ng query sa katalogo (glob/walk sa humigit-kumulang 372k na direktoryo).

Runtime: tumagal ng 275 s ang sandbox laban sa limitasyong 300 s, at tinatayang 630 s ang buong history. O(1) ang sariling trabaho ng strategy sa bawat bar: isang deque append na nililimitahan ng maxlen=744. O(720) naman ang araw-araw na fit na AR(1). Ayon sa profiling ng developer, ParquetDataCatalog file discovery ang kumokonsumo ng oras, kaya problema ito ng platform, hindi ng strategy. Tandaan: humigit-kumulang 46k bars bawat leg ang 1H bars sa 2 instrumento sa loob ng mga 1904 araw.

Kunin ang _entry_direction mula sa panig ng bukas na posisyon sa Bybit sa loob ng should_exit, sa halip na mula sa estado ng instance.

Pinalitan ang _submit_entry para sabay nitong buksan ang dalawang leg. Tinatawag nito ang super()._submit_entry at pagkatapos ay _submit_entry_instrument para sa OKX gamit ang parehong dami at kabaligtarang panig. Habang binubuo ang pares, hinaharang ng _opening_pair ang muling pagpasok sa reconciliation, at kinakansela ang mga naulila o hindi magkatugmang leg. Mukhang tama ito. Gayunman, nasa memorya ang _entry_direction at hindi ito ibinabalik pagkatapos ng restart; kaya hindi gagana ang mean-cross at stop test ng should_exit (direksyon 0) para sa pares na minana matapos ang restart. Nakadepende na lang ang paglabas sa modelo o sa mga pagsusuri ng OKX-leg.

Manipis ang edge kumpara sa gastos ng apat na leg ng trading. Nagkakahalaga ng humigit-kumulang 0.21% ng notional ng isang leg ang round trip sa dalawang leg dahil sa taker fee (Bybit 0.055% x2 kasama ang OKX 0.05% x2). Kaya, humigit-kumulang 10 bp na lang ang neto bawat pares bago ang impact mula sa 35 bp na min_edge entry filter at paglabas sa 0.25 sigma. Sa smoke test, 64% ng gross ang kinain ng impact, dagdag na 22% ang komisyon, at 0.034% lang ang karaniwan bawat posisyon ng leg sa 4 saradong posisyon (2 pares) sa loob ng 834 araw. Masyadong maliit ang sample na iyon para makapagpasya. Dapat iulat ng buong backtest ang netong return bawat pares pagkatapos ng impact. Dapat din nitong iulat ang diperensya ng funding sa pagitan ng Bybit at OKX DOGE perps, na hindi minomodelo rito (funding_folded=false, 0 pangyayari). Kung mas kaunti rin sa humigit-kumulang 30 pares ang mabuo sa 1904-araw na kasaysayan, hindi maaasahan ang resulta.

Pagsusuri ng Backtest

Sharpe
0.23
Kabuuang Return
0.10%
Max Drawdown
1.99%
Kabuuang Trade
30
Win Rate
43.3%
Profit Factor
1.03

Malinis ang datos at accounting: nakaayon ang dalawang leg at walang nawawalang bar, totoo ang accounting_valid, end_unrealized ang 0%, at walang liquidation.

Maliit ang drawdown (1.99%), at balanseng long/short ang mga trade, na akma sa disenyo ng market-neutral spread.

Mas mababa sa gastos ang edge bawat trade. avg_trade_return_pct ang 0.0277% bawat posisyon ng leg. 0.15% ang hangganan para sa futures ng iisang leg sa Bybit/OKX. Sa tuntuning nakaayon sa laki ng leg ng L127, humigit-kumulang 3 x 0.21% = 0.63% ang hangganan dahil apat na taker fill ang bayad ng bawat pares. Humigit-kumulang 5-20x na mas mababa sa hangganan ang edge.

Umaabot sa 79.5% ng gross ang tinatayang epekto (ang malambot na hangganan ay 50%), at dagdag na 10.9% ang komisyon. Ang netong PF ay 1.027, bahagya lang na mas mataas sa 1.

Masyadong maliit ang sample. 15 lang na pagpasok ng pares (30 saradong posisyon ng leg) ang naganap sa loob ng 1905 araw, kumpara sa humigit-kumulang 100 na kailangan (L178). Makakakita ang holdout ng humigit-kumulang 3 pares, mas kaunti sa 10 na kailangan nito.

Walang kabuluhang estadistikal. 0.23 ang Sharpe, na may 95% CI na -0.55 hanggang 1.25; PSR ang 0.52 at 0.0096 ang Calmar. IC ang signal-research -0.015 (rejected_no_information), na may netong forecast edge na -0.04%.

Humigit-kumulang 0.1% ang panahong nasa market, at 1560 araw ang tagal ng maximum drawdown, kaya hindi aabot ang calendar Sharpe sa 1.0 (L165). Walang trade sa 2023, na nagpapakitang bihirang lumampas sa 35 bp ang dislokasyon ng cross-venue DOGE spread.

Pagsusuri

Pamantayan sa backtest: - hindi maaasahan ang mga sukatan: Hindi magkakaugnay: salungat ang tanda ng Sharpe na -0.05 sa total_return 0.10% — kinukuwenta ang Sharpe mula sa seryeng mtm_equity_curve, samantalang mula sa equity curve ang return. Gamitin ang equity curve sa paghusga.

Kasaysayan ng Iterasyon

Bigo ang beripikasyon (Layer 4 — pagsusuri sa QA) [class=code_defect]: - [edge_concern] Halos walang puwang ang minimum na convergence na 25 bp sa modelo kapag ibinawas ang humigit-kumulang 21 bp para sa apat na taker fee, bago pa isama ang slippage at funding. Hindi mapatutunayan ng sandbox na may edge ang apat na trade. - [critical] Isinusumite ng should_enter() ang order na OKX bago suriin at isumite ng base class ang order sa Bybit. Kung tanggihan o maantala ang order sa Bybit, maaaring mag-fill nang mag-isa ang OKX. (linya 113) — ayusin: Subaybayan nang pares ang dalawang order at fill; agad isara ang alinmang leg kapag pumalya ang katapat nito. - [critical] Tinatawag lang ng base class ang should_exit() kapag bukas ang posisyon sa Bybit. Kaya walang daan palabas ang posisyong OKX-lang at maaari itong manatiling walang hedge nang walang katapusan. (linya 116) — ayusin: Suriin ang posisyon sa dalawang venue sa bawat naprosesong bar at isara ang anumang leg na walang katapat.

Bigo ang beripikasyon (Layer 4 — pagsusuri sa QA) [class=code_defect]: - [edge_concern] Hindi mapatutunayan ng sandbox na may kita mula sa apat na trade; minarkahang hindi maaasahan ang mga sukatan ng equity. - [critical] Maaaring hindi mapansin ng exit na batay sa ganap na z-score ang pagtawid sa mean na OU. Mananatiling bukas ang pares na pumasok sa positibong z kung tumalon ang spread sa negatibong z lampas sa exit band, kaya bukas pa rin ang orihinal na trade matapos matawid ang target nitong mean reversion. (linya 215) — ayusin: Itala ang direksyon ng pagpasok at lumabas kapag tumawid ang spread sa threshold sa panig ng mean para sa direksyong iyon. Panatilihing hiwalay ang stop para sa salungat na galaw.

sandbox_timeout: Bigo ang beripikasyon (Layer 3 — sandbox backtest): lumampas ang smoke test sa limitasyong 300s ng wall-clock sa ~20000-bar na saklaw (833 araw ng DOGEUSDT.BYBIT-1-HOUR-LAST-EXTERNAL). Halos palaging nangangahulugan ito ng trabahong inuulit sa bawat bar at lumalaki kasabay ng history — halimbawa, muling pag-scan sa buong serye ng funding/karagdagang datos, o muling pagbuo ng listahan at pagtawag sa min()/sorted() sa loob ng calculate_signal()/on_bar() sa bawat bar. Paunang ayusin ang mga timestamp array ONCE sa pagkakasunod-sunod sa __init__ at gumamit ng bisect, o mag-cache ng lookup batay sa timestamp, para maging O(log n) sa halip na O(n) ang gastos sa bawat bar.

Buod ng Resulta

Karaniwang mas maliit ang agwat ng iisang asset sa dalawang venue kaysa sa gastos ng apat na taker fill kasama ang impact. Makatuwiran lang itong imungkahi muli kung maker/passive ang execution sa parehong venue at paunang itinakda ang netong edge na hindi bababa sa 0.6% bawat pares pagkatapos ng impact.

Itinigil ito ng analyst sa pagsusuri ng backtest, bago ang optimization, dahil sa fee_edge / negative_expectancy. Malayong mas mababa sa hangganan para sa iisang leg na 0.15% at humigit-kumulang 0.63% na hangganan para sa pares na may apat na taker fill ang edge na 0.0277% bawat leg. Masyadong maliit ang sample (15 pares kumpara sa humigit-kumulang 100 na kailangan), at tinanggihan ang signal na IC ng -0.015 dahil wala itong dalang impormasyon.

Nag-trade ito ng mean reversion sa log price spread ng DOGE perpetual sa Bybit at OKX. Araw-araw nitong muling iniangkop ang modelong Ornstein-Uhlenbeck gamit ang naka-sync na 1-oras na bar mula sa nakaraang 30 araw, saka nag-trade ng magkakapantay ang daming pares na may hedge kapag lumampas sa 2.0 ang z-score ng spread.

Sa loob ng 1905 araw, 15 pares lang ang binuksan (30 saradong posisyon ng leg), at halos flat ang kabuuang resulta. 0.23 ang Sharpe (95% CI -0.55 hanggang 1.25), 1.027 ang profit factor at 1.99% ang maximum drawdown. 0.0277% ng notional ang return ng karaniwang trade, at 79.5% ng gross profit ang tinangay ng tinatayang impact.

Pagsusuri

Pinakamainam na Pairs Trading

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.