Mga Estratehiya
Tapat na port ng Jesse KDJstrategy na may nakapirming default — LTC Spot Daily
Resulta: Inabandona
JesseKdjLtcSpotDaily
Buod ng Resulta
Isinalin ng run na ito ang KDJstrategy ni Jesse sa spot ng LTC gamit ang daily bars at pinanatili ang mga default na parameter ng source. Kinailangan ng 3 iteration para ayusin ang mga isyu sa configuration at contingency ng order; pagkatapos nito, maayos nang tumakbo ang port. Nalugi ang backtest sa buong kasaysayan ng 39.1% sa humigit-kumulang 6 taon sa 336 trade; nalugi ito sa anim sa pitong taon, sa lahat ng tatlong volatility regime, at bago pa man ang mga komisyon. Iniwan ito ng analyst sa pagsusuri ng backtest dahil negatibo ang expectancy, na nagpatibay sa naunang pangamba ni QA tungkol sa edge. Hindi na umabot sa optimization, pagsusuri sa panganib at pag-promote.
Hypothesis
Nangunguna ang tahasang kahilingang maging tapat sa source kaysa magpakilala ng bagong mekanismo o magpalit ng direksyon. Angkop ang spot dahil long-only ang code at nililimitahan ng sizing helper ni Jesse ang notional sa kapital. Nariyan sa lokal na direktoryo ang eksaktong LTC daily catalog directory. Mas mababa ang BINANCE_SPOT sa target nitong 15% sa 11%; gayunman, dinaragdagan ng panukalang ito ang mga labis nang kinakatawang bucket na single-symbol, long-only at daily dahil mababago ng pagbabago sa mga dimensyong iyon ang ibinigay na strategy. Walang laman ang corpus_concentration, kaya hindi matitiyak ang kamakailang bahagi ng pananaliksik ni LTC. Eksperimento ito sa reproduksiyon, at walang pahayag na nagbibigay ang KDJ ng napatunayang structural edge.
Implementasyon
Port ng KDJstrategy ni Jesse papunta sa spot ng LTCUSDT gamit ang daily bars. Gumagamit ang stochastic ng 9 bars; ang K ay 3-bar na SMA nito, ang D ay 3-bar na SMA ng K, at J = 3K - 2D, lahat sa isang 240-candle na hindi sunod-sunod na slice. Nagla-long ito kapag J > (K at D), gamit ang semantics ng Python `and`. Lumalabas ito kapag kumikita ang posisyon at mas mataas ang dating J kaysa sa kasalukuyang J, o kapag J < (K at D). Market BUY ang entry, na may 2xATR(14) stop-loss na nakalagay sa venue bilang child order na OTO. Sumusunod ang laki kay risk_to_qty ni Jesse sa 5% na panganib, hanggang 100% ng kapital.
Ang Iteration 3 ay nag-aayos lamang ng crash sa Layer-3. Tinatanggihan ng NautilusTrader ang order na OUO kapag walang laman ang linked_order_ids nito. Walang take-profit order ang source na pag-uugnayan ng stop, kaya nagli-link na ngayon ang stop sa sarili nito. Hindi gagana ang pag-link nito sa entry: napunan na ang entry bago isumite ang stop, at tinatanggihan ng matching engine ang order na OUO kapag sarado na ang naka-link na order. Nilalaktawan ng bawat landas ng pagkansela at pag-update ng OUO ang mga saradong link, kaya walang epekto ang sariling link. Nananatiling contingent ang stop, kaya itinuturing pa rin itong proteksiyon ng base class at patuloy nitong tinatawag ang should_exit. Nagpatakbo ako ng lokal na backtest sa LTC daily mula 2019-01 hanggang 2024-07. Tumakbo ito nang walang error at nagsara ng 273 trade, na may average trade na -0.27%, Sharpe na -0.24 at max drawdown na 43.6%. Port ito para sa reproduksiyon: mahina ang mga resulta, pero trabaho ng analyst ang humatol sa mga ito. Hindi binago ang signal, sizing at mga parameter.
Mga Resulta ng Beripikasyon
Kung lumitaw ang mga pagtanggi sa buong backtest diagnostics, magdagdag lang ng buffer kapag umiiral ang cap (halimbawa, max_notional_fraction 0.995), o i-round pababa ang quantity ayon sa precision ng laki ng instrumento. Itala ito bilang paglihis sa engineering, hindi pagbabago sa tuntunin.
Sumusunod ang sizing sa risk_to_qty ni Jesse: 5% ng kapital na hinati sa distansya ng 2xATR stop, saka minumultiplika sa presyo at nililimitahan sa 100% ng kapital. Ang sizing_fee_rate ay 0 at ang sizing_precision ay 8; mas magaspang naman ang precision ng spot quantity ng LTC, at maaaring i-round pataas ng make_qty ang quantity. Kapag mas mababa sa humigit-kumulang 2.5% ng presyo ang ATR, umiiral ang cap, na nangyayari sa mga kalmadong regime. Maaaring lumampas sa available na cash ang market BUY na 100% ng equity kasama ang bayaring 0.1% sa account na CASH, kaya maaari itong tanggihan. Tahimik nitong aalisin ang mga entry, at sa mga kalmadong regime lamang. Hindi nito binabago ang nakapirming semantics ng source, at 335 trade ang nalikha ng sandbox, kaya hindi ito sagabal.
Walang kailangang pagbabago. Panatilihing nakaayon ang override sa mga guard ng base template.
Ino-override ng _submit_entry ang base method para makapagsumite ito ng market entry na OTO na may reduce-only na stop-market na anak, na tumutulad sa self.stop_loss ni Jesse. Ikinumpara ko ito sa base_template._submit_entry: pinananatili nito ang mga guard para sa warmup, pag-freeze ng seed, pause, pagiging handa ng market at inflight, at itinatala ang inflight entry. Pinapalitan ang guard ng base laban sa short sa spot ng tahasang pagsusuri na BUY lamang, na katumbas nito rito. Nagli-link ang stop sa sarili nito bilang OUO para tanggapin ito ng NautilusTrader. Kakaiba ito pero walang pinsala: wala itong kapatid na order, at maayos na isinara ng sandbox ang bawat posisyon (open_positions 0). Hindi maaabot ng anumang pagbabago sa hinaharap sa mga base guard ang override na ito.
Sinaklaw ng sandbox ang 2161 araw na may 335 saradong long trade. Ang avg_trade_return_pct ay -0.253% kumpara sa +0.25% BINANCE_SPOT na floor, na may PF 0.865, Sharpe na -0.28 (CI -1.11 hanggang 0.47), max drawdown na 44% at pagkalugi sa lahat ng tatlong volatility regime. Tugma rito ang sariling 2019-2024 run ng developer: -0.27% bawat trade sa 273 trade. 9.25% ng gross ang mga komisyon, kaya halos flat ang gross edge, at walang parameter na puwedeng i-tune sa nakapirming plano. Nagpapaputok ang entry tuwing J > D, na totoo sa halos kalahati ng lahat ng araw. Dahil dito, nagiging maingay na gate ng oscillator-momentum ito na may karaniwang hawak na humigit-kumulang 2.8 araw at nagbabayad ng 0.20% na gastos sa spot round-trip sa bawat pagkakataon. Asahang pagtitibayin ito ng backtest sa buong kasaysayan: no_edge. Tungkol sa kakayahang kumita ang pangambang ito, hindi sa kawastuhan, kaya hindi ito hadlang.
Pagsusuri ng Backtest
- Sharpe
- -0.30
- Kabuuang Return
- -39.11%
- Max Drawdown
- 44.10%
- Kabuuang Trade
- 336
- Win Rate
- 46.7%
- Profit Factor
- 0.86
Tapat ang port at maayos itong tumatakbo: 336 long-only na trade sa loob ng 2173 araw, walang nawalang entry, wasto ang accounting, walang exposure na hindi pa naisasakatuparan sa dulo at maaasahan ang sample.
Tugma ang pattern ng mga trade sa lohika ng source: pumapasok kapag J > D, nasa merkado nang humigit-kumulang 44% ng oras, may hawak nang mga 2.8 araw at walang short.
Ang avg_trade_return_pct ay -0.281% kumpara sa +0.25% BINANCE_SPOT na floor.
Ang PF ay 0.856, Sharpe -0.30 (CI -1.09 hanggang 0.50), kabuuang return -39.1%, at max drawdown 44.1% kumpara sa paunang itinakdang 30%; tumagal nang 1005 araw ang pinakamahabang drawdown.
Nalugi sa anim sa pitong taon; 2020 lang ang kumita. Nalugi sa lahat ng tatlong volatility regime at sa lima sa anim na stress window.
Humigit-kumulang -$10.6k ang gross PnL bago ang mga komisyon at impact, kaya nalulugi ang strategy kahit bago pa ang mga gastos.
Walang impormasyong dala ang forecast: IC 0.011, t = 0.5.
Ang alpha ay -11.5% bawat taon, information ratio na -0.62 at beta na 0.12, kaya mas mahina ang performance nito kaysa buy-and-hold ng LTC.
Walang parameter na puwedeng i-tune sa plano, kaya walang mababago ang optimization.
Kasaysayan ng Iterasyon
Bigo ang beripikasyon (Layer 1.5 — pagkakatugma ng hypothesis/config) [class=hypothesis_mismatch]: - Itinatakda ng optimization_plan ang leverage sa 1.0
Bigo ang beripikasyon (Layer 3 — sandbox backtest): `linked_order_ids` ay `None` o walang laman noong `contingency_type` OUO Uri ng bar na ginamit: LTCUSDT.BINANCE_SPOT-1-DAY-LAST-EXTERNAL, Mga bar na naproseso: 0 Tiyaking nakakagawa ng mga trade ang iyong strategy gamit ang ibinigay na data at mga parameter.
Buod ng Resulta
Walang predictive na impormasyon sa LTC daily bars ang gate ng oscillator na J > D na totoo sa halos kalahati ng mga araw at may hawak na humigit-kumulang 2.8 araw. Hindi rin nito matatakpan ang 0.20% na gastos sa spot round-trip, kaya hindi dapat asahang magkakaroon ng edge ang port na may nakapirming default.
Nagbalik ng 'abandon' ang gate sa pagsusuri ng backtest dahil negatibo ang expectancy (walang edge): average na return ng trade na -0.281% kumpara sa +0.25% BINANCE_SPOT na floor, pagkalugi bago ang bayarin at drawdown na lampas sa paunang itinakdang 30%. Walang parameter na puwedeng i-tune ang plano, kaya hindi mababago ng optimization ang resulta; hindi na rin umabot sa optimization at mga sumunod na yugto.
Tapat na port na may nakapirming default ng KDJstrategy ng komunidad ni Jesse na lisensyado sa MIT (SMA-based na KDJ 9/3/3 na may J=3K-2D, stop na ATR(14)) papunta sa daily bars ng LTCUSDT.BINANCE_SPOT, long-only at walang leverage.
Mula 2018-08-11 hanggang 2024-07-22, gumawa ito ng 336 long trade na may kabuuang return na -39.1%, Sharpe na -0.30 (CI -1.09 hanggang 0.50), profit factor na 0.856, max drawdown na 44.1% at avg_trade_return_pct -0.281%. Negatibo rin ang gross PnL bago ang mga gastos (humigit-kumulang -$10.6k), at ang signal na IC ay 0.011 (t=0.5).
Pagsusuri
KDJstrategy
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.