Mga Estratehiya
Backtesting ng port ng QuantRocket 'TrendDayStrategy': pagpapatuloy ng trend-day sa hapon gamit ang leveraged-ETF (long kung pataas nang >6% kumpara sa naunang close sa checkpoint sa hapon, short kung pababa nang >6%, flat sa pagsasara ng session) sa TQQQ/SQQQ/UVXY USEQ 1-HOUR
Resulta: Inabandona
TrendDayLeveragedEtfUseq
Buod ng Resulta
Inilipat ng TrendDayLeveragedEtfUseq ang afternoon trend-day continuation rule ng QuantRocket sa tatlong leveraged/volatility ETF sa USEQ hourly bar. Iniangkop ito sa checkpoint na 14:30 ET dahil walang 14:00 close sa Yahoo hourly grid. Nabigo ang dalawang iteration sa Layer 3 sandbox backtest dahil lumampas sa limitasyong 300s sa 833-araw na TQQQ window. Iniugnay ng developer ang timeout sa pagtuklas ng catalog file habang mabigat ang host I/O, hindi sa lohika ng strategy. Iniwan ang run sa verification loop nang hindi umabot sa backtest, optimization, analyst o risk review, kaya hindi nasukat ang edge nito.
Hypothesis
Tapat na port ng isinumiteng QuantRocket strategy ng user. Eksaktong pinanatili ang mga default na parameter (MIN_PCT_CHANGE = 0.06, nakapirming weight na 20%, cap na 1.0, same-day entry, exit na MOC). Iisang threshold lang ang puwedeng i-tune, sa makitid na saklaw sa paligid ng orihinal. Pinupunan ng USEQ venue at long-short na direksyon ang mga kulang na bucket (USEQ 5.7%, long-short 17%), at halos walang history sa corpus ang 3 ETF. Obserbasyon sa merkado ang trigger (isang 6% intraday na galaw), hindi petsa sa kalendaryo, kaya hindi naaangkop ang aralin L179. Dahil sa sapilitang pagsasara ng mga posisyon kapag nagre-rebalance ang leveraged-ETF, naiiba ito sa patay na crypto-perp momentum family. Pinalitan ng 1-HOUR ang 1-minute dahil lang humigit-kumulang 38 session ang USEQ 1-minute history.
verification_loop: sandbox_timeout: Nabigo ang verification (Layer 3 — sandbox backtest): lumampas ang smoke test sa 300s na wall-clock limit sa window na humigit-kumulang 20000 bar (833 araw ng TQQQ.USEQ-1-HOUR-LAST-EXTERNAL). Halos palaging nangangahulugan ito ng trabahong bawat bar na lumalaki ayon sa haba ng history — halimbawa, 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. Paunang ayusin ang mga sorted timestamp array na 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 bawat bar.
Implementasyon
Port ng TrendDayStrategy ng QuantRocket sa TQQQ/SQQQ/UVXY sa USEQ 1-HOUR bar. Sa bawat ETF, ihambing ang close ng 14:30 ET bar sa close ng naunang session. Mag-long kung tumaas ito nang higit sa 6%; mag-short kung bumaba nang higit sa 6%. 20% ng equity ang bawat posisyon (ibinababa kung lalampas sa 1.0 ang gross), ipinapasok sa market order sa close ng 14:30 bar at isinasara sa 16:00 bar. Hindi kailanman hinahawakan ang mga posisyon nang magdamag; walang stop.
Mga Resulta ng Beripikasyon
sandbox_timeout: Nabigo ang verification (Layer 3 — sandbox backtest): lumampas ang smoke test sa 300s na wall-clock limit sa window na humigit-kumulang 20000 bar (833 araw ng TQQQ.USEQ-1-HOUR-LAST-EXTERNAL). Halos palaging nangangahulugan ito ng trabahong bawat bar na lumalaki ayon sa haba ng history — halimbawa, 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. Paunang ayusin ang mga sorted timestamp array na 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 bawat bar.
Buod ng Resulta
Kung nagti-time out pa rin sa sandbox ang isang strategy na may O(1) na trabaho bawat bar, siyasatin ang imprastraktura (pagtuklas ng catalog, bigat ng host I/O) sa halip na muling isumite ang code nang walang tunay na pagbabago, dahil hindi maaayos ng mga pagbabago sa code lang ang sanhi sa host.
Iniwan ito matapos ang 2 iteration sa verification loop. Sa parehong pagkakataon, umabot sa 300s na wall-clock limit ang Layer 3 sandbox smoke test sa window na humigit-kumulang 20,000 bar, 833-araw na TQQQ.USEQ 1-hour (sandbox_timeout). Mga micro-optimization lang ang ginawa sa Iteration 2 dahil hinatulan ng developer na O(1) na ang gastos bawat bar at iniuugnay ang problema sa I/O load ng catalog/host.
Port ng TrendDayStrategy ng QuantRocket sa TQQQ/SQQQ/UVXY gamit ang USEQ 1-hour bars: sa checkpoint na 14:30 ET, mag-long kung tumaas ang ETF nang higit sa 6% mula sa close ng naunang session, o mag-short kung bumaba nang higit sa 6%; ilaan ang 20% ng equity sa bawat aktibong leg at lumabas sa close ng 16:00.
Walang backtest o optimization metric dahil hindi nakapasa sa verification ang strategy. Ang tanging numero ay ang hindi beripikadong gross pre-study figure ng hypothesis: TQQQ n=45, mean +0.31%; SQQQ n=44, mean +0.41%; UVXY n=94, mean +0.98%.
Pagsusuri
TrendDayStrategy
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.