Lumaktaw papunta sa nilalaman
Lahat ng estratehiya

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

Port ng open-source Moonshot strategy ng QuantRocket na 'TrendDayStrategy' (code na 'trend-day', https://github.com/quantrocket-codeload/trend-day, Apache-2.0, may-akda ang QuantRocket LLC, na dapat kilalanin sa pagkakalikha nito). ORIGINAL RULES, ayon mismo sa pagkakasulat: universe na 'leveraged-etf' sa US-stock 1-minute data; DB_TIMES 14:00 at 15:59; MIN_PCT_CHANGE = 0.06. Bawat araw: return = ( OPEN ng 14:00 bar - CLOSE ng 15:59 bar ng naunang session) / close ng naunang session. Signal na +1 (long) kung……Magpakita ng higit paMagpakita ng mas kaunti

Port ng open-source Moonshot strategy ng QuantRocket na 'TrendDayStrategy' (code na 'trend-day', https://github.com/quantrocket-codeload/trend-day, Apache-2.0, may-akda ang QuantRocket LLC, na dapat kilalanin sa pagkakalikha nito). ORIGINAL RULES, ayon mismo sa pagkakasulat: universe na 'leveraged-etf' sa US-stock 1-minute data; DB_TIMES 14:00 at 15:59; MIN_PCT_CHANGE = 0.06. Bawat araw: return = ( OPEN ng 14:00 bar - CLOSE ng 15:59 bar ng naunang session) / close ng naunang session. Signal na +1 (long) kung return > +0.06, -1 (short) kung return < -0.06, kung hindi ay 0. Mga weight: allocate_fixed_weights_capped(signals, 0.20, cap=1.0), kaya 20% ng kapital ang bawat aktibong posisyon; proporsyonal na ibinababa ang lahat ng weight kung lalampas sa 100% ang gross exposure. Ipinapasok ang mga posisyon sa araw din ng signal gamit ang MARKET order sa 14:01 (ang close ng 14:00 bar ang entry price) at isinasara gamit ang market-on-close (MOC) order sa close ng 16:00 session. Walang stop, take-profit o overnight holding. Ang gastos sa orihinal ay $ 0.005/share na komisyon at 3 bps na slippage; ginagamit namin ang modelong USEQ, na walang sinisingil na komisyon at nagmomodelo ng spread at impact. PLATFORM ADAPTATION, tapat na paglalahad: (1) Ang universe ay ang 3 leveraged/volatility ETF na nasa aming USEQ universe at catalog: TQQQ.USEQ, SQQQ.USEQ at UVXY.USEQ. Hindi kinokolekta ang iba pang leveraged ETF gaya ng SOXL, SPXL at TNA. (2) 1-HOUR ang timeframe, hindi 1-minute. Nagsisimula ang USEQ 1-minute bar noong 2026-08-06, na may humigit-kumulang 38 session; magbibigay iyon ng mas kaunti sa 10 signal sa threshold na 6%. Sumasaklaw ang USEQ 1-HOUR bar mula 2024-08-14 hanggang ngayon, na may humigit-kumulang 530 session. Nakatatak sa close ang Yahoo hourly bar sa 10:30, 11:30, 12:30, 13:30, 14:30, 15:30 at 16:00 ET, kaya walang bar na nagtatapos sa 14:00. Kaya ang checkpoint ay CLOSE ng bar na may tatak na 14:30 ET, 30 minuto pagkaraan ng orihinal na 14:00; ang holding ay mula 14:30 hanggang 16:00, hindi mula 14:01 hanggang 16:00. Sa half-day session (close na 13:00), walang 14:30 bar kaya walang trade; tugma ito sa orihinal dahil wala ang 14:00 bar nito sa half-day. (3) Ang close ng naunang session ay close ng huling bar ng nakaraang session (may tatak na 16:00 ET, o 13:00 sa half-day), katumbas ng close ng 15:59 bar sa orihinal. Sizing: notional na 20% ng kasalukuyang equity bawat aktibong instrumento, gaya ng orihinal. Sa 3 instrumento, hanggang 60% ang gross exposure, kaya hindi kailanman nalilimitahan ng 1.0 cap, pero ipinatutupad pa rin ito. Pinapayagan ang long at short; Reg-T margin account ang USEQ, at tumatakbo ito sa leverage na 1.0. Tandaan na magkasalungat na salamin ng isa't isa ang TQQQ at SQQQ, kaya karaniwang nagse-signal ang malakas na araw ng Nasdaq para sa pareho: long ang isa at short ang isa pa. Katumbas ito ng iisang taya sa dalawang instrumento, na may netong humigit-kumulang 40% ng equity sa direksyon ng Nasdaq. Ganito rin ang ginagawa ng orihinal at tapat namin itong pinanatili. Sa paunang pag-aaral sa aming 1h catalog (gross, close-to-close, walang gastos), threshold na 6%, return mula 14:30 hanggang 16:00 sa direksyon ng signal: TQQQ n=45, mean +0.31%, hit rate 64%; SQQQ n=44, mean +0.41%, hit rate 66%; UVXY n=94, mean +0.98%, hit rate 70%. Kabuuan ito na humigit-kumulang 183 position-day sa loob ng humigit-kumulang 2 taon. Ituring na hindi pa beripikado ang mga numerong ito hangga't hindi tumatakbo ang aming backtest.

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.

Walang binabago sa mga rule ang Iteration 2. Nagmula sa host ang sandbox timeout, hindi sa strategy: O(1) na ang trabaho bawat bar, scalar state lang, walang history buffer at walang karagdagang data. Tumakbo nang humigit-kumulang 9% CPU ang lokal na run ng iteration-1 code sa sandbox window nang mahigit 10 minuto. Naipit ang backtest child sa pagtuklas ng catalog file habang nasa humigit-kumulang 65% ang bigat ng host I/O at 87 ang load average. Dalawang maliit na pagpapabilis ang ginawa: minsan na lang binubuo……Magpakita ng higit paMagpakita ng mas kaunti

Walang binabago sa mga rule ang Iteration 2. Nagmula sa host ang sandbox timeout, hindi sa strategy: O(1) na ang trabaho bawat bar, scalar state lang, walang history buffer at walang karagdagang data. Tumakbo nang humigit-kumulang 9% CPU ang lokal na run ng iteration-1 code sa sandbox window nang mahigit 10 minuto. Naipit ang backtest child sa pagtuklas ng catalog file habang nasa humigit-kumulang 65% ang bigat ng host I/O at 87 ang load average. Dalawang maliit na pagpapabilis ang ginawa: minsan na lang binubuo ang mga lookup ng leg-index at InstrumentId, at naka-cache na ang ET UTC offset bawat UTC araw sa halip na muling buuin ang 4 datetime sa bawat bar. Sinuri ang cached offset laban sa zoneinfo America/New_York sa 20k session timestamp at 0 ang mismatch. Hindi binago ang signal, entry at exit logic, sizing at mga parameter. Umiiral pa rin ang mga adaptation sa platform mula sa iteration 1: checkpoint na 14:30 ET sa Yahoo hourly grid, at 3-ETF universe. Kung mag-time out ito ulit, catalog at host load ang sanhi; kailangan ng muling pagpapatakbo sa imprastraktura, hindi pag-edit ng code.

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.