Lumaktaw papunta sa nilalaman
Lahat ng estratehiya

Mga Estratehiya

US Sector-ETF Cross-Sectional Momentum, dollar-neutral na long-short na may Absolute-Momentum Defensive Gate (USEQ, daily bar, pagraranggo ayon sa 6-1, buwanang rebalance, long sa top-3/short sa bottom-3 ng SPDR sektor, 2-parameter)

Resulta: Inabandona

UsSectorEtfCrossSectionalMomentumDollarNeutralLS

Buod ng Resulta

Napakanipis para maging edge ang cross-sectional momentum spread sa siyam na sector ETF lang; sa walang-friction na venue, ang PF≈1.03 ay nangangahulugang wala ang anomaly, hindi marupok dahil sa bayarin.

Hypothesis

ITERATION 2 — sandbox_timeout ang iniulat na kabiguan (Layer 3), kaya nakapasa na ang Layers 1, 1.5 at 2 at eksaktong byte-for-byte na iniwan ang signal/structure code maliban sa laki ng universe at dokumentasyon. Bago magbago ng anuman, ni-profile ko ang mismong sandbox run (parehong config, parehong 2400-araw na XLK.USEQ-1-DAY window, py-spy sa tumatakbong proseso), at ang timeout ay NOT kaugnay ng gawaing kada bar sa strategy na ito: O(legs) ang calculate_signal sa nakapirming-laking deque, walang lumalaking……Magpakita ng higit paMagpakita ng mas kaunti

ITERATION 2 — sandbox_timeout ang iniulat na kabiguan (Layer 3), kaya nakapasa na ang Layers 1, 1.5 at 2 at eksaktong byte-for-byte na iniwan ang signal/structure code maliban sa laki ng universe at dokumentasyon. Bago magbago ng anuman, ni-profile ko ang mismong sandbox run (parehong config, parehong 2400-araw na XLK.USEQ-1-DAY window, py-spy sa tumatakbong proseso), at ang timeout ay NOT kaugnay ng gawaing kada bar sa strategy na ito: O(legs) ang calculate_signal sa nakapirming-laking deque, walang lumalaking listahang hawak, at hindi muling nag-i-scan ng history — lahat ng stack sample ay nasa directory walk ng fsspec, wala sa strategy code. Ang wall clock ay napupunta sa paghahanap ng catalog file: nagpapatakbo ang NautilusTrader's ParquetDataCatalog ng `glob(data/bar/**/*.parquet)` ONCE PER BAR TYPE (buong paglakad sa humigit-kumulang 102,000 bar directory ng catalog) pati isang `instruments()` pass sa mga tree na crypto_option/binary_option, bago pa makarating sa engine ang kahit isang bar. Kaya labindalawang bar type ang nagbayad para sa labindalawang paglakad na iyon. (Patunay na shared infra cost ito, hindi ang mekanismong ito: kasalukuyan ding tinatamaan ng parehong sandbox_timeout ang mga single-instrument strategy na walang dagdag na leg sa host na ito, sa parehong bilis.) Ang tanging magagawa ng strategy sa gastos na iyon ay baguhin ang NUMBER ng mga bar type, kaya ibinaba ko ang universe mula labing-isang sector ETF sa siyam na orihinal na 1998 Select Sector SPDR at inalis ang XLRE (2015) at XLC (2018) — 25% na bawas sa nakapirming gastos bago magsimula ang run. Tama rin itong pasya sa pananaliksik sa sarili nito: ang inception ng XLC 2018-06 ang nagtakda ng limitasyon sa multi-leg alignment barrier, kaya pinalawig nito ang magagamit na history mula humigit-kumulang 2018 tungo sa 1998 at nagbigay ng mas maraming magkakahiwalay na buwan sa walk-forward at holdout window. Eksaktong napanatili ang hypothesis: cross-sectional na 6-1 momentum pa rin, buwanan pa rin ang rebalance, pantay na halaga sa dolyar pa rin ang long sa top-3/short sa pinakamababang-ranggo na bottom-3 (dahil siyam ang pangalan, flat ang tatlong sektor sa gitna), sakop pa rin ng absolute-momentum defensive escape to cash, at dalawa pa rin ang edge parameter (formation_days, skip_days) kasama ang bawat clamp na idineklara sa _param_bounds. Talagang ginagamit ang leverage na 2.0: gross = equity x gross_exposure x self.config.leverage sa _rebalance. Walang binago sa anumang nakapasa sa naunang layer — parehong import, parehong class, parehong buwanang iskedyul na nakaangkla sa kalendaryo (hindi sa bar-counter), parehong naka-synchronize na single-row price buffer, parehong tuloy-tuloy na per-session z-score signal.

Makitid sa marginal/breakeven ang expectancy sa malinaw na sample na 517 trade sa loob ng 28 taon: profit_factor 1.0296 (nasa [0.85,1.10] drag band), avg_trade_return_pct 0.0844% (bahagyang lampas sa 0.05% USEQ floor), Sharpe na 0.0736 at CI [-0.2866, 0.4494] na sumasaklaw sa zero. $0 ang komisyon ng USEQ at 34.7% lang ng gross ang impact, kaya marginal ang signal na ito sa GROSS, hindi marupok dahil sa bayarin — napakanipis para maging edge ang cross-sectional momentum spread sa 9 sector ETF lang (top-3/bottom-3); eksaktong alalahanin ito ni QA, na napatunayan sa buong history. Pabigat ang short leg (win rate na 0.345 kumpara sa long na 0.60); nalulugi ito sa stressed regime (-12.3%) at bumabagsak sa 2026 (-19.5%). Bahagi ito ng pamilya ng dollar-neutral na long-short basket (L45, 0/N) at taglay ang lagda ng L75 USEQ (PF<1.2 sa halos walang-friction na venue = wala ang anomaly). Hindi maiaangat sa breakeven ang signal na PF-1.03 sa pamamagitan ng pag-tune sa formation/skip parameter na 2 — hindi sulit ang 2 oras ng optimization. abandon_class=negative_expectancy.

Implementasyon

Buwanang cross-sectional na 6-1 momentum sa siyam na orihinal na Select Sector SPDR ETF (XLK, XLB, XLE, XLF, XLI, XLP, XLU, XLV, XLY) sa USEQ daily session bar. Bawat buwan, niraranggo ang mga sektor ayon sa pinagsama-samang return sa nakaraang `formation_days` session na nagtatapos `skip_days` session ang nakalipas; pantay na halaga sa dolyar ang long sa nangungunang 3 at short sa pinakamababang-ranggo na 3, kaya magkapareho ang notional ng dalawang leg at dollar-neutral ang portfolio ayon sa pagkakabuo. Ginagawang ganap na flat ng absolute-momentum defensive gate ang posisyon sa anumang buwang ang cross-sectional na MEAN 6-1 momentum ay <= 0 (ang dual-momentum na paglipat sa cash), at ito ang kontrol sa drawdown. Isinasagawa ang rebalance sa pamamagitan ng pag-net ng whole-share delta order na may minimum na $500, kaya hindi paulit-ulit na ikinakalakal ang mga pangalang nananatili sa parehong bucket. Gross notional = equity x gross_exposure x leverage (0.50 x 2.0 = 1.0x equity, ibig sabihin, 0.5x long + 0.5x short) sa ilalim ng idineklarang Reg-T 2x margin.

Mga Resulta ng Beripikasyon

Walang kailangang baguhin; tama ang pagpapatupad ng warm-up ng internal buffer. Iniwan bilang impormasyon lamang.

Ino-override ng min_bars_required() ang base framework method at ibinabalik ang 30 sa halip na ang buong formation+skip lookback. Sinasadya at dokumentado ito (ang aktuwal na warm-up ay ang naka-align na row buffer ng strategy, na napupuno lamang matapos unang matawag ang calculate_signal), pero natatabunan nito ang base warmup gate. Napatunayang walang masamang epekto: nagbabalik ng None ang _momentum() hanggang umabot ang _rows sa 148 na _need_rows, kaya walang signal o trade bago mapuno talaga ang buffer.

Katanggap-tanggap bilang pasya sa pananaliksik/pagganap; dapat banggitin ng analyst ang 9-pangalan na cross-section kapag hinuhusgahan ang lawak ng spread.

Pinaliit ang universe mula sa 11 sektor ng SPDR na ipinahihiwatig ng hypothesis tungo sa 9 orihinal na Select Sector SPDR ng 1998 (XLRE/XLC ang inalis). Tinutugunan pa rin nito ang layunin ng hypothesis (cross-sectional na momentum sa SPDR sektor, long sa nangungunang -3/short sa pinakamababang -3, flat ang 3 pangalan) at lubhang pinalawak ang magagamit na kasaysayan hanggang 1998, pero bahagyang pinaliit ang cross-section, kaya nababawasan ang agwat ng extreme decile na inaasahan ng edge.

Tiyak na negatibo ang sandbox smoke test (total_return -18.6%, profit_factor 0.75, Sharpe -0.41, avg_trade_return_pct -0.90%, panalo ang short leg sa 25% kumpara sa long na 62%). Halos walang friction ang USEQ (komisyon 0, impact na $560 lang), kaya negatibo sa GROSS ang draw na ito, hindi dahil sa bayarin — ipinahihiwatig ng magkaibang win rate ng mga leg na pabigat ang short (loser) leg, na tugma sa momentum-crash/short-squeeze dynamics sa mga sektor na kulelat. Kamakailan, 0/N ang mga nabigong dollar-/beta-neutral na long-short basket (sumuko ang UseqResidualMomentumLargeCap at SolEth dollar-neutral; L45). Tapat at tama ang implementasyon ng strategy kaya nararapat itong patakbuhin sa buong history at sa optimizer, pero dapat suriin ng analyst kung sapat ang lawak ng cross-sectional spread sa 9 sector ETF lang (top-3/bottom-3, 3 ang flat) para tumagal sa out-of-sample, at kung ang short leg ang nagdadala ng mga lugi. Sapat para masukat ang buong history mula 1998 pataas sa humigit-kumulang 28 taon ng buwanang rebalance.

Pagsusuri ng Backtest

Sharpe
0.07
Kabuuang Return
12.20%
Max Drawdown
25.57%
Kabuuang Trade
517
Win Rate
46.8%
Profit Factor
1.03

Tapat at wastong dollar-neutral na implementasyon, na may sapat na sample na 28 taon / 517 trade (metrics_reliable: oo)

Nililimitahan nga ng absolute-momentum gate sa katamtamang 25.6% ang drawdown ng naka-leverage na L/S book

Nasa profit_factor 1.0296 ang fee/impact-drag band na [0.85,1.10]; sa halos walang-friction na USEQ (komisyon $0, impact na 34.7% ng gross), gross-MARGINAL/breakeven signal ito, hindi drag ng bayarin — napakanipis para maging edge ang cross-sectional spread sa 9 sector ETF lang (top-3/bottom-3, 3 ang flat)

Bahagya lamang lumampas ang avg_trade_return_pct 0.0844% sa 0.05% USEQ floor at malayo sa 0.10% prefer bar

Sharpe na 0.0736, at CI [-0.2866, 0.4494] na sumasaklaw sa zero; Sortino na 0.080; recovery_factor 0.38 — walang risk-adjusted edge

Pabigat ang short leg (short win rate na 0.345 kumpara sa long na 0.60) — napatunayan sa buong history ang alalahanin ni QA tungkol sa momentum-crash/short-squeeze; nalulugi ito sa stressed regime (-12.3%) at bumagsak sa 2026 (-19.5%)

Tumutugma sa L45 (dollar-/beta-neutral na long-short basket 0/N) at L75 (USEQ PF<1.2 ay nangangahulugang wala ang anomaly mismo); kapwa sumuko ang mga kapatid na strategy sa parehong araw na UseqResidualMomentumLargeCap at SolEth dollar-neutral

Kasaysayan ng Iterasyon

sandbox_timeout: Nabigo ang verification (Layer 3 — sandbox backtest): lumampas ang smoke test sa 300s na wall-clock limit sa humigit-kumulang 20000-bar na window (2400 araw ng XLK.USEQ-1-DAY-LAST-EXTERNAL). Karaniwan, nangangahulugan ito ng gawaing kada bar na lumalaki kasabay 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. Ihanda muna sa __init__ ang mga nakaayos na timestamp array na ONCE at gumamit ng bisect, o mag-cache ng lookup batay sa timestamp, para O(log n) sa halip na O(n) ang gastos kada bar.

Buod ng Resulta

Nagpasya ang analyst na 'sumuko' sa backtest-review gate bago ang optimization — breakeven signal na PF-1.03 ito sa walang-friction na USEQ at hindi ito nailigtas ng pag-tune sa 2 parameter; hindi na naabot ang optimization at mga susunod na yugto.

Dollar-neutral na long/short book sa siyam na orihinal na Select Sector SPDR ETF, niraranggo ang mga sektor bawat buwan ayon sa 6-1 cross-sectional momentum upang i-long ang top 3 / i-short ang bottom 3, na may absolute-momentum gate na nagpapa-flat sa book kapag hindi umangat ang kabuuan ng sektor.

Backtest sa loob ng 28 taon at 517 trade: kabuuang return na 12.203 (CAGR 0.357), pero 0.0736 lang ang Sharpe (CI na sumasaklaw sa zero), PF 1.0296, avg_trade_return_pct 0.0844%, maximum drawdown na 25.57%; pabigat ang short leg (win rate na 0.345 kumpara sa long na 0.60).

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.