Mga bigong breakout sa range sa Hyperliquid XLM–ALGO — algorithmic trading
Resulta: Inabandona
HlXlmAlgoFailedRangeBreak
Buod ng Resulta
Sinubukan ng HlXlmAlgoFailedRangeBreak kung bumabalik patungo sa loob ng range ang mga bigong range breakout sa Hyperliquid XLM at ALGO perpetual na 4 oras ang pagitan ng mga bar. Sa 3 iteration, hindi kailanman nakapasa sa beripikasyon ang code. Pangunahing binago sa huling iteration ang pagsubaybay sa range para pabilisin ito matapos mag-timeout ang sandbox. Pagkatapos, natukoy sa pagsusuri ng Layer 4 QA ang dalawang kritikal na depekto sa lohika: binale-wala ng kumpirmasyon ang kabilang hangganan ng range, at tinanggap nito ang mga reclaim sa labas ng palugit ng failure. Binanggit din ng QA na 31 lang ang average ng mga trade sa sandbox, sa net na 0.0435%. Iniwan ang pagpapatakbo dahil sa depekto sa code bago ang pagsusuri ng backtest, optimization, pagsusuri ng analyst o pagsusuri ng panganib.
Subukan ang magkahiwalay na long at short trade sa mga failed breakout sa XLM at ALGO perpetual gamit ang 4-HOUR OHLCV. Maaaring maipit ang mga sumali sa breakout kapag nagsara agad pabalik sa dating range ang nakumpletong breakout, at maaari silang mag-unwind patungo sa loob ng range. Nagbibigay ang HyperliquidCollector ng perpetual OHLCV para sa dalawang eksaktong instrumento. Ipinapakita ng mga filename sa katalogo ang magkakapatong na saklaw mula 2024-06-21 hanggang 2026-10-02; beripikahin ang aktuwal na timestamp, puwang at duplicate bago magsimula. Ipatupad bilang subclass ng FactoryStrategy na may bounded rolling buffer at execution pagkatapos ng kumpirmadong pagsasara. Hindi kailangan ng signal mula sa kalendaryo, funding, balita o tick.
Nasa 7.2% ang Hyperliquid kumpara sa target nitong 20%, ang pinakamalaking kakulangan sa venue. Tinutugunan din ng eksperimentong ito sa dalawang instrumento at dalawang direksyon ang sobrang konsentrasyon sa iisang simbolo at long-only. Hindi alam ang konsentrasyon sa corpus, kaya hindi pa nabeberipika ang pagiging bago nito sa antas ng instrumento. Ang mekanismo ay bigong price discovery sa hangganan ng maraming araw, hindi pagbalik ng pair spread, capitulation sa iisang oras o momentum na may dagdag na kondisyon. Hindi pinatutunayan ng mga ibinigay na recipe ng indicator ang angkop na structural edge at hindi ginamit ang mga ito. Hindi itinuturing na katibayan ng kakayahang kumita ang mga halimbawa sa paper-stage na may negatibong Sharpe.
verification_loop: Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=code_defect]: - [edge_concern] Nag-average ng 0.0435% net return ang mga isinara sa 31 ng sandbox, na may malaking modeled impact. Suriin ang execution cost sa buong kasaysayan; hindi batayan ng hatol na ito ang mga resulta ng smoke test. - [critical] Ang naberipika lang sa kumpirmasyon ay ang nalampasang hangganan. Pagkatapos ng pataas na breakout, nagti-trigger pa rin ng short ang pagsasara sa ibaba ng buong orihinal na range;……Magpakita ng higit paMagpakita ng mas kaunti
verification_loop: Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=code_defect]:
- [edge_concern] Nag-average ng 0.0435% net return ang mga isinara sa 31 ng sandbox, na may malaking modeled impact. Suriin ang execution cost sa buong kasaysayan; hindi batayan ng hatol na ito ang mga resulta ng smoke test.
- [critical] Ang naberipika lang sa kumpirmasyon ay ang nalampasang hangganan. Pagkatapos ng pataas na breakout, nagti-trigger pa rin ng short ang pagsasara sa ibaba ng buong orihinal na range; pagkatapos ng pababang breakout, nagti-trigger naman ng long ang pagsasara sa itaas ng buong range. Wala sa mga ito ang kumpirmasyon ng hypothesis na pagsasara pabalik sa loob ng naunang range. (line 117) — ayusin: Atasan ang kumpirmadong pagsasara na pumasok sa loob ng dalawang nakaimbak na hangganan ng range, kasama ang directional reclaim buffer. Kanselahin o tahasang pawalang-bisa ang mga setup na tumawid sa kabilang hangganan.
- [critical] Sinusuri ang kumpirmasyon bago ang pag-expire. Kapag fail_window_bars=3, nagti-trigger ng entry ang reclaim sa kasunod na bar na 4 dahil tumatakbo lang ang pagsusuri sa age > fail_window_bars kapag nabigo ang kumpirmasyon. Kaya tinatanggap ng parehong direksyon ang mga failure sa labas ng itinakdang window. (line 117) — ayusin: I-expire ang mga nakabinbing setup bago suriin ang kumpirmasyon kapag lumampas ang age sa fail_window_bars, o atasan ang bawat kondisyon ng kumpirmasyon na age <= fail_window_bars.
- [warning] Naghihintay ang base class ng 64 pangunahing bar bago tawagin ang calculate_signal(), at pagkatapos nito ay nangangailangan ang _step ng 64 pang update. Agad na nag-a-update ang ALGO sa pamamagitan ng on_extra_bar(). Nagdudulot ito ng magkaibang aktuwal na warmup period at halos hindi napasimula ang mga indicator ng XLM pagkatapos ng replay na 64 bar. (line 68) — ayusin: Ihanda nang pare-pareho ang dalawang leg mula sa kanilang mga historikal na bar at pag-ibahin ang mga kinakailangan ng framework sa pag-buffer at ang unti-unting kahandaan ng indicator.
- [warning] Sa pagsasara lang ng bawat apat na oras sinusuri ang mga stop at target. Hindi nagdudulot ng exit ang mga paglabag sa pagitan ng mga bar, kaya hindi nagtatakda ng pinakamataas na aktuwal na lugi ang sizing batay sa distansya ng stop. (line 163) — ayusin: Idokumento ang mga ito bilang exit na batay sa pagsasara, o magsumite ng mga protective stop order kung nilalayong magtakda ng limitasyon sa panganib sa pagitan ng mga bar.
Implementasyon
Nagne-trade ng magkahiwalay na long at short sa mga bigong range break sa XLM at ALGO Hyperliquid perpetual pagkatapos ng kumpirmadong pagsasara pagkalipas ng 4 oras. Pinananatili ang stop at target sa entry-ATR, limitasyon sa tagal ng hawak, cooldown at sizing kaugnay ng kapital.
Binabago lamang ng iteration 3 ang pagkalkula ng rolling-extrema: pinananatili ng bounded monotonic queue ang range ng naunang bar habang ibinababa ang gastos sa update mula O(lookback) tungo sa amortized O(1). Pinananatili ang mga import, lohika ng signal, execution hook, instrumento, timeframe at pahintulot sa mga parameter ng pananaliksik. Bounded na ang mga dating buffer, kaya hindi nito natutukoy ang sanhi ng timeout o ginagarantiyang malulutas ito; kung maulit ang timeout, kailangan ng engineering profiling sa loading, engine execution at pag-uulat. Walang isinagawang beripikasyon o pagbasa sa katalogo, kabilang ang pagbasa sa naka-lock na panahon ng final exam. Hindi naisulat ang hiniling na outbox file dahil read-only ang filesystem access na pinapahintulutan ng session na ito; ibinabalik dito ang buong JSON na nakatali sa gawain.
Mga Resulta ng Beripikasyon
Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=code_defect]: - [edge_concern] Nag-average ng 0.0435% net return ang mga isinara sa 31 ng sandbox, na may malaking modeled impact. Suriin ang execution cost sa buong kasaysayan; hindi batayan ng hatol na ito ang mga resulta ng smoke test. - [critical] Ang naberipika lang sa kumpirmasyon ay ang nalampasang hangganan. Pagkatapos ng pataas na breakout, nagti-trigger pa rin ng short ang pagsasara sa ibaba ng buong orihinal na range; pagkatapos ng pababang……Magpakita ng higit paMagpakita ng mas kaunti
Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=code_defect]:
- [edge_concern] Nag-average ng 0.0435% net return ang mga isinara sa 31 ng sandbox, na may malaking modeled impact. Suriin ang execution cost sa buong kasaysayan; hindi batayan ng hatol na ito ang mga resulta ng smoke test.
- [critical] Ang naberipika lang sa kumpirmasyon ay ang nalampasang hangganan. Pagkatapos ng pataas na breakout, nagti-trigger pa rin ng short ang pagsasara sa ibaba ng buong orihinal na range; pagkatapos ng pababang breakout, nagti-trigger naman ng long ang pagsasara sa itaas ng buong range. Wala sa mga ito ang kumpirmasyon ng hypothesis na pagsasara pabalik sa loob ng naunang range. (line 117) — ayusin: Atasan ang kumpirmadong pagsasara na pumasok sa loob ng dalawang nakaimbak na hangganan ng range, kasama ang directional reclaim buffer. Kanselahin o tahasang pawalang-bisa ang mga setup na tumawid sa kabilang hangganan.
- [critical] Sinusuri ang kumpirmasyon bago ang pag-expire. Kapag fail_window_bars=3, nagti-trigger ng entry ang reclaim sa kasunod na bar na 4 dahil tumatakbo lang ang pagsusuri sa age > fail_window_bars kapag nabigo ang kumpirmasyon. Kaya tinatanggap ng parehong direksyon ang mga failure sa labas ng itinakdang window. (line 117) — ayusin: I-expire ang mga nakabinbing setup bago suriin ang kumpirmasyon kapag lumampas ang age sa fail_window_bars, o atasan ang bawat kondisyon ng kumpirmasyon na age <= fail_window_bars.
- [warning] Naghihintay ang base class ng 64 pangunahing bar bago tawagin ang calculate_signal(), at pagkatapos nito ay nangangailangan ang _step ng 64 pang update. Agad na nag-a-update ang ALGO sa pamamagitan ng on_extra_bar(). Nagdudulot ito ng magkaibang aktuwal na warmup period at halos hindi napasimula ang mga indicator ng XLM pagkatapos ng replay na 64 bar. (line 68) — ayusin: Ihanda nang pare-pareho ang dalawang leg mula sa kanilang mga historikal na bar at pag-ibahin ang mga kinakailangan ng framework sa pag-buffer at ang unti-unting kahandaan ng indicator.
- [warning] Sa pagsasara lang ng bawat apat na oras sinusuri ang mga stop at target. Hindi nagdudulot ng exit ang mga paglabag sa pagitan ng mga bar, kaya hindi nagtatakda ng pinakamataas na aktuwal na lugi ang sizing batay sa distansya ng stop. (line 163) — ayusin: Idokumento ang mga ito bilang exit na batay sa pagsasara, o magsumite ng mga protective stop order kung nilalayong magtakda ng limitasyon sa panganib sa pagitan ng mga bar.
Kasaysayan ng Iterasyon
Nabigo ang beripikasyon (Layer 1.5 — pagkakatugma ng hypothesis at config) [class=hypothesis_mismatch]:
- Itinatakda ng optimization_plan ang leverage sa 2.0
sandbox_timeout: Nabigo ang beripikasyon (Layer 3 — sandbox backtest): lumampas ang smoke test sa limitasyong 300s ng oras ng pagpapatakbo sa humigit-kumulang 20000-bar na saklaw (2400 araw ng XLMUSD.HYPERLIQUID-4-HOUR-LAST-EXTERNAL). Halos palaging nangangahulugan ito ng gawaing kada bar na lumalaki kasabay ng kasaysayan — halimbawa, muling pag-scan sa buong serye ng funding/supplementary, o muling paggawa ng listahan at pagtawag sa min()/sorted() sa loob ng calculate_signal()/on_bar() sa bawat bar. Paunang kalkulahin ang mga nakaayos na array ng timestamp na ONCE sa __init__ at gumamit ng bisect, o mag-cache ng mga lookup gamit ang timestamp bilang susi, para O(log n) sa halip na O(n) ang gastos kada bar.
Buod ng Resulta
Dapat i-expire ng lohika ng failed breakout ang nakabinbing setup bago suriin ang kumpirmasyon, at dapat hingin na nasa loob ng dalawang nakaimbak na hangganan ng range ang kumpirmadong pagsasara. Dapat ihanda ang mga indicator ng bawat leg sa magkaparehong paraan para eksaktong maipatupad ang hypothesis.
Matapos ang 3 iteration, iniwan ang pagpapatakbo sa verification loop nang uriin ito bilang depekto sa code sa pagsusuri ng Layer 4 QA. Nag-ulat ang QA ng dalawang kritikal na bug: sinuri lang ng kumpirmasyon ng entry ang nalampasang hangganan, kaya nagti-trigger pa rin ng trade ang pagsasara lampas sa kabilang panig ng range; at sinuri ang kumpirmasyon bago mag-expire ang fail window, kaya tinanggap ang mga reclaim na lampas sa itinakdang window. Nagbabala rin ang QA tungkol sa magkaibang warmup ng dalawang leg at sa mga stop at target na sinusuri lang sa pagsasara ng bar.
Mag-trade ng magkakahiwalay na long at short reversal sa mga bigong breakout sa Hyperliquid XLM at ALGO perpetual gamit ang mga bar na 4 oras. Ang ideya: kapag mabilis na nagsara pabalik sa dating range ang breakout, maiipit ang mga trader na sumali rito at itutulak ng pag-unwind nila ang presyo pabalik sa gitna ng range.
Walang ginawang buong backtest o optimization. Ang mga numero lang ay mula sa smoke test ng verification sandbox: nag-average ng 0.0435% net return ang 31 isinara, na may malaking modeled impact. Malayo ito sa 0.15% na minimum na kakayahang mabuhay kada trade, bagaman sinabi ng QA na hindi nagpasya sa hatol nito ang mga numerong ito mula sa smoke test.
Dahilan ng Pag-abandona
verification_loop: Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=code_defect]: - [edge_concern] Nag-average ng 0.0435% net return ang mga isinara sa 31 ng sandbox, na may malaking modeled impact. Suriin ang execution cost sa buong kasaysayan; hindi batayan ng hatol na ito ang mga resulta ng smoke test. - [critical] Ang naberipika lang sa kumpirmasyon ay ang nalampasang hangganan. Pagkatapos ng pataas na breakout, nagti-trigger pa rin ng short ang pagsasara sa ibaba ng buong orihinal na range;……Magpakita ng higit paMagpakita ng mas kaunti
verification_loop: Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=code_defect]:
- [edge_concern] Nag-average ng 0.0435% net return ang mga isinara sa 31 ng sandbox, na may malaking modeled impact. Suriin ang execution cost sa buong kasaysayan; hindi batayan ng hatol na ito ang mga resulta ng smoke test.
- [critical] Ang naberipika lang sa kumpirmasyon ay ang nalampasang hangganan. Pagkatapos ng pataas na breakout, nagti-trigger pa rin ng short ang pagsasara sa ibaba ng buong orihinal na range; pagkatapos ng pababang breakout, nagti-trigger naman ng long ang pagsasara sa itaas ng buong range. Wala sa mga ito ang kumpirmasyon ng hypothesis na pagsasara pabalik sa loob ng naunang range. (line 117) — ayusin: Atasan ang kumpirmadong pagsasara na pumasok sa loob ng dalawang nakaimbak na hangganan ng range, kasama ang directional reclaim buffer. Kanselahin o tahasang pawalang-bisa ang mga setup na tumawid sa kabilang hangganan.
- [critical] Sinusuri ang kumpirmasyon bago ang pag-expire. Kapag fail_window_bars=3, nagti-trigger ng entry ang reclaim sa kasunod na bar na 4 dahil tumatakbo lang ang pagsusuri sa age > fail_window_bars kapag nabigo ang kumpirmasyon. Kaya tinatanggap ng parehong direksyon ang mga failure sa labas ng itinakdang window. (line 117) — ayusin: I-expire ang mga nakabinbing setup bago suriin ang kumpirmasyon kapag lumampas ang age sa fail_window_bars, o atasan ang bawat kondisyon ng kumpirmasyon na age <= fail_window_bars.
- [warning] Naghihintay ang base class ng 64 pangunahing bar bago tawagin ang calculate_signal(), at pagkatapos nito ay nangangailangan ang _step ng 64 pang update. Agad na nag-a-update ang ALGO sa pamamagitan ng on_extra_bar(). Nagdudulot ito ng magkaibang aktuwal na warmup period at halos hindi napasimula ang mga indicator ng XLM pagkatapos ng replay na 64 bar. (line 68) — ayusin: Ihanda nang pare-pareho ang dalawang leg mula sa kanilang mga historikal na bar at pag-ibahin ang mga kinakailangan ng framework sa pag-buffer at ang unti-unting kahandaan ng indicator.
- [warning] Sa pagsasara lang ng bawat apat na oras sinusuri ang mga stop at target. Hindi nagdudulot ng exit ang mga paglabag sa pagitan ng mga bar, kaya hindi nagtatakda ng pinakamataas na aktuwal na lugi ang sizing batay sa distansya ng stop. (line 163) — ayusin: Idokumento ang mga ito bilang exit na batay sa pagsasara, o magsumite ng mga protective stop order kung nilalayong magtakda ng limitasyon sa panganib sa pagitan ng mga bar.
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.