Lumaktaw papunta sa nilalaman
Lahat ng estratehiya

Mga Estratehiya

Turn-of-the-Month Seasonal Long Overlay sa SPY + QQQ (USEQ, Daily Bars, Long Lang sa Bawat ETF sa [-1,+3] Month-End Window Lamang Kapag Lampas sa 200-Day Trend, Kung Hindi ay T-Bill, Walang Komisyon, 3-Parameter)

Resulta: Inabandona

TurnOfMonthSeasonalOverlaySpyQqqUseq

Buod ng Resulta

Tapat na ipinatupad ng strategy na ito ang isang mahusay na dokumentadong anomalya sa kalendaryo — pagmamay-ari ng SPY at QQQ sa paligid lamang ng hangganan ng buwan at kapag lampas sa sarili nilang pangmatagalang trend — at sapat na maayos ang itsura ng backtest nito sa 33 taon ng datos (PF 1.43, 60% win rate, edge kada trade na lampas sa USEQ fee floor) kaya inaprubahan ito ng analyst para sa optimization. Doon ito bumagsak: mula 0.87, bumagsak sa 0.019 ang in-sample Sharpe sa out-of-sample, umabot sa 0.77 ang PBO, at ipinakita ng deflated Sharpe na 0.020 na hindi maihihiwalay sa ingay ang resulta sa 225 trial. Sabay-sabay na bumagsak ang tatlong mahihigpit na gate na hindi maaaring isantabi kaya iniwan ito ng analyst matapos ang iisang iteration. Kabilang ito sa tuloy-tuloy na pamilya ng mga iniwang turn-of-month variant, na nagpapatunay na masyadong mahina ang epekto para maging pangkalahatang magagamit na live overlay.

Hypothesis

Eksaktong ipinapatupad ang hypothesis: SPY.USEQ + QQQ.USEQ sa daily USEQ bars, pagmamay-ari lamang sa loob ng [-1,+3] month-end window at habang lampas sa sariling 200-day trend ang bawat ETF; kung hindi, cash/T-bill ang hawak, gamit ang eksaktong tatlong libreng parameter (trend_sma_days, entry_days_before_end, exit_trading_day) at structural notional cap. Nakaangkla ang window sa CALENDAR TIME na hinango mula sa bar.ts_event (civil-date arithmetic + bilang ng mga session na naobserbahan na sa kasalukuyang buwan……Magpakita ng higit paMagpakita ng mas kaunti

Eksaktong ipinapatupad ang hypothesis: SPY.USEQ + QQQ.USEQ sa daily USEQ bars, pagmamay-ari lamang sa loob ng [-1,+3] month-end window at habang lampas sa sariling 200-day trend ang bawat ETF; kung hindi, cash/T-bill ang hawak, gamit ang eksaktong tatlong libreng parameter (trend_sma_days, entry_days_before_end, exit_trading_day) at structural notional cap. Nakaangkla ang window sa CALENDAR TIME na hinango mula sa bar.ts_event (civil-date arithmetic + bilang ng mga session na naobserbahan na sa kasalukuyang buwan sa kalendaryo), hindi kailanman sa bar counter, kaya pareho ang iskedyul sa mga restart, backtest at paper replay; isinusumite ang entry isang session bago magbukas ang window dahil sa susunod na session open napupunan ang market order na inilagay sa pagsasara ng bar, kaya eksaktong mula sa open ng araw -1 hanggang sa open ng araw +4 ang aktuwal na panahon ng paghawak. Ang venue ay USEQ ayon sa hypothesis (equity, walang komisyon); long-only at walang leverage ang portfolio kaya nananatiling 1.0 ang leverage at walang leverage term sa sizing. 200 session ang trend history (min_bars_required=202, pasok sa 500-bar buffer); iisang seasonal condition ang entry gate (hindi bihirang kombinasyon) kaya nagaganap ito nang ~12 beses bawat taon kada leg — humigit-kumulang 68 window / 130+ round trip sa loob ng ~2400-day sandbox window — at may sapat na agwat ang inaasahang galaw ng index kada window (~0.3-0.5%) sa USEQ spread+impact cost (~0.02-0.05% round trip). Isang paalalang itinatala at ipinatutupad ayon sa kahilingan: hindi isinasaalang-alang sa sandbox ang mga holiday ng merkado sa US; walang exchange calendar na maaaring i-import, kaya ang tanging paraan ng pagkabigo ay kung tumapat ang Memorial Day sa huling weekday ng buwan, na maglilipat sa iisang entry nang isang session ilang beses kada dekada.

Overfit at walang edge sa out-of-sample: walk-forward OOS Sharpe 0.019 (< 0.5 validity floor) kumpara sa IS 0.87, per-window OOS 0.235/-0.017/-0.162, PBO 0.77 (> 0.5), at bumagsak sa deflated Sharpe: DSR=0.020, expected-max=0.47 sa 225 trial (43 effective) — hindi maihihiwalay ang napiling Sharpe sa ingay ng best-of-N, hindi ito pumapasa sa programme FDR (4 sa 272), is_significant=false. Bumagsak ang tatlong HARD gate (OOS<0.5, is_overfitted, PBO>0.5) kaya imposibleng i-promote. Lampas sa USEQ fee floor ang edge sa bawat trade at nominal na positibo ang holdout Sharpe (0.36), pero masyadong manipis ang turn-of-month effect para maging pangkalahatang magagamit na tradeable overlay — inangkop ng strategy ang ingay sa in-sample. Kaayon ito ng tuloy-tuloy na pagkabigo ng pamilya (iniwan ang turn-of-month seasonality sa QQQ, BTC, BNB at mga kalapit na USEQ trend variant); paulit-ulit na nag-o-overfit ang paglalapat muli ng parehong mekanismo sa panibagong target, kaya walang maisasalbang ibang anyo.

Implementasyon

Turn-of-the-month seasonal long overlay sa SPY + QQQ (USEQ, 1-DAY session bars, long-only, walang leverage, walang komisyon). Sa bawat pagsasara ng session, kinukuha ng strategy ang civil date ng bar mula sa timestamp nito (purong integer civil-date arithmetic, walang counter na batay sa proseso) at kinakalkula (a) kung ilang weekday ang natitira sa buwan pagkaraan ng araw na ito at (b) kung pang-ilang session na ito sa kasalukuyang buwan. Naglalagay ito ng puhunan sa pagsasara ng session na……Magpakita ng higit paMagpakita ng mas kaunti

Turn-of-the-month seasonal long overlay sa SPY + QQQ (USEQ, 1-DAY session bars, long-only, walang leverage, walang komisyon). Sa bawat pagsasara ng session, kinukuha ng strategy ang civil date ng bar mula sa timestamp nito (purong integer civil-date arithmetic, walang counter na batay sa proseso) at kinakalkula (a) kung ilang weekday ang natitira sa buwan pagkaraan ng araw na ito at (b) kung pang-ilang session na ito sa kasalukuyang buwan. Naglalagay ito ng puhunan sa pagsasara ng session na `entry_days_before_end` (default 1) weekday bago ang huling weekday ng buwan — kaya sa susunod na open, hawak nito ang trading day na -1 — pinananatili ang posisyon sa paglipat ng buwan at isinasara ito sa pagsasara ng ika-`exit_trading_day` session (default 3) ng bagong buwan, upang makuha ang [-1,+3] open-to-open block. Halos 80% ng kalendaryo ay cash ang hawak nang walang posisyon (hindi ipinagpapalit ang 'T-bill' leg). Bawat ETF ay hiwalay na half-sleeve na pantay ang timbang, at nakadepende ito sa sarili nitong pangmatagalang OWN trend: bibili lang ng leg kapag lampas sa sarili nitong `trend_sma_days` (default 200) SMA ang pagsasara nito; kung hindi, cash ang hawak sa bahaging iyon, kaya hindi binibili ang mga month-end sa bear market (2008, 2022). Buong share ang sizing (USEQ size precision 0) sa 95%/2 ng equity ng account kada leg, na kinakalkula mula sa get_account_equity() sa bawat entry; manu-manong pinamamahalaan ang dalawang leg sa pamamagitan ng _submit_entry_instrument/_submit_exit_position na may gate na 'walang nakabinbin saanman', at hindi aktibo ang mga base hook (should_enter/should_exit) para hindi magsumite ang base ng magkakalabang SPY order.

Mga Resulta ng Beripikasyon

Opsyonal na kunin ang anchor ng huling weekday mula sa naobserbahang session bars (gaya ng ginagawa na ng _session_index) sa halip na simpleng bilang ng weekday, para isaalang-alang ng timing ng entry ang mga holiday gaya ng exit. Hindi ito kailangan.

Nakaangkla ang timing ng entry sa pagkukuwenta ng weekday sa kalendaryo (_weekdays_left) na NOT nagsasaalang-alang sa mga holiday sa merkado ng US, samantalang nakaangkla ang exit sa aktuwal na bilang ng session-bar (_session_index) kaya matatag ito kahit may holiday. Maililipat nang isang session ang iisang entry kapag tumapat ang holiday sa month-end sa isa sa huling dalawang weekday (hal., Memorial Day). Tahasang idinodokumento ito ng developer at hindi nito kailanman binabago ang direksiyon ng trade; umiiral ang src/data/market_calendar.py (XNYS) at makapagpapahusay ito sa entry, pero katanggap-tanggap ang kasalukuyang pagtatantiya at hindi nito naaapektuhan ang nasusukat.

Walang kailangang baguhin kung tinatawag ng base template ang subclass override para sa warm-up gating (ginagawa nito). Iniwan bilang impormasyon.

Ino-override ng min_bars_required(self) ang isang framework method (babala sa static-analysis na base_shadow). Sadyang ganito rito — ibinabalik nito ang trend_sma_days + 2 para kontrolin ang warm-up — at tama ang asal nito, pero tiyaking iginagalang ng base ang override sa halip na gamitin ang sarili nitong implementasyon.

Borderline ang resulta ng sandbox smoke test: Sharpe 0.107 (CI [-0.68, 0.94] ay sumasaklaw sa zero), avg_trade_return_pct 0.1535% (bahagyang lampas sa ~0.02-0.05% USEQ spread/impact floor), PF 1.15, win_rate 0.60. Hindi maganda ang paghahati ayon sa regime — nakapokus ang kita sa 'normal' na vol tercile (+10.44%) samantalang parehong lugi ang 'calm' (-0.57%) at 'stressed' (-4.35%), at impact_cost_pct ang 16.4% ng gross na may katamtamang kapasidad na $3.7M. Totoo at mahusay na dokumentado ang anomalya sa kalendaryo at tapat ang implementasyon kaya nararapat itong dumaan sa buong backtest — pero dapat tiyakin muna ng analyst na nananatili ang edge kada window matapos isama ang spread+impact sa buong kasaysayan at hindi lang ito umiiral sa iisang vol regime bago mag-optimize.

Pagsusuri ng Backtest

Sharpe
0.19
Kabuuang Return
104.42%
Max Drawdown
12.25%
Kabuuang Trade
500
Win Rate
60.2%
Profit Factor
1.43

Tapat na implementasyon ng isang mahusay na dokumentadong anomalya sa kalendaryo (turn-of-month) sa buong kasaysayang sample na 33 taon (1993-2026), 500 long trade / 0 short / ~28.5% exposure — eksaktong tugma ang mga trade sa hypothesis (long-only na seasonal overlay, cash ang hawak sa ibang panahon).

Komportableng nalalampasan ng edge ang mga gastos na USEQ: avg_trade_return_pct 0.338% (>> 0.05% abandon floor at >0.10% preference; pumapasa sa L75), profit_factor 1.43, win_rate 0.60, 7.9% lamang ng gross ang impact, kapasidad na ~$15.9M.

Napatunayan sa buong kasaysayan ang pangunahing ikinababahala ng QA, ang NOT: positibo ang regime_performance sa ALL sa tatlong vol tercile (kalmado +5.1%, normal +37.3%, matindi +35.4%, only_one_regime=false) — bunga ng pinutol na sandbox ang mga lugi sa kalmado/matinding kondisyon.

Mababa ang max_drawdown 12.2%, sapat ang bilang ng trade para sa pag-fit ng parameter.

Mababa ang headline Sharpe (0.194, sumasaklaw sa zero ang CI [-0.12, 0.53]) — pero overlay ito na halos cash lang (28% ang panahong nasa merkado) at sinukat sa buong mtm equity curve kaya pinahihina ito ng walang galaw na cash; sa yugto ng promotion, ihambing ang risk-adjusted na kalidad sa exposure, hindi rito.

CAGR lamang 2.64% — overlay ito ayon sa disenyo; walang gamit ang kapital nang ~72% ng panahon, kaya may puwang para ipagsama o palakihin ito, hindi ito depekto.

May ilang luging taon (2008 -6.7%, 2022 -8.3%, 2016 -4.1%) pero positibo ang anomaly sa nakararaming taon sa kalendaryo.

Pagsusuri

Tapat at mababa ang turnover na implementasyon ng isang mahusay na dokumentadong anomalya sa kalendaryo (turn-of-month) sa buong kasaysayang sample na 33 taon; tugma ang mga trade sa hypothesis (500 long / 0 short, ~28% exposure, mga entry sa seasonal window na lampas sa sariling 200d trend).

Lampas sa USEQ fee floor ang edge sa bawat trade (avg_trade_return_pct 0.21% na na-optimize, floor 0.05%); walang sensitivity cliff; mababa ang drawdown (6.1%); positibo sa teknikal na aspeto ang holdout Sharpe (0.36).

Patag at makinis ang sensitivity surface sa trend_sma_days at exit_trading_day — walang marupok na parameter.

Tiyak na overfit ang walk-forward: IS Sharpe 0.87 kumpara sa OOS 0.019, at OOS sa bawat window ay 0.235 / -0.017 / -0.162 — hindi nananatili ang edge sa out-of-sample.

PBO 0.77 (> 0.5) — mas malamang na overfit ang pagpili ng parameter.

Bumagsak ang Deflated Sharpe 0.020 at PSR/is_significant=false; hindi pumasa sa programme-level FDR (nananatili ang 4 sa 272; candidate p=0.98). Hindi maihihiwalay ang na-optimize na Sharpe sa ingay ng best-of-N sa 225 trial (43 effective).

OOS Sharpe 0.019 << 0.5 validity floor — tatlong HARD, mga kabiguang hindi maaaring isantabi.

Hindi natupad ang mga paunang itinakdang prediksyon sa mahahalagang sukatan: OOS Sharpe 0.019 kumpara sa ipinahayag na 0.9, PF 1.39 kumpara sa 1.5, avg_trade_return 0.21% kumpara sa 0.30%.

Matindi ang negatibo ng dating resulta ng pamilya: paulit-ulit nang iniwan ang turn-of-month seasonality sa mga kalapit na target (QQQ TOM fee_edge, BTC TOM fee_edge, BNB TOM iba pa, nag-overfit ang QQQ vol-managed trend). Totoo ang anomaly sa kasaysayan pero masyadong manipis para malampasan ang mga gastos/deflation sa isang tradeable overlay.

Pinananatili ng Benjamini-Hochberg sa q=0.10 sa 272 programme candidate ang 4. Hindi maihihiwalay sa sariling ingay ng programme ang candidate na hindi pumasa rito, gaano man kaganda ang mga indibidwal nitong estadistika.

Buod ng Resulta

Totoo sa kasaysayan ang turn-of-month anomaly pero masyadong manipis para malampasan ang mga gastos at deflation dahil sa multiple-testing bilang tradeable overlay; ang muling paglalapat ng parehong seasonality sa panibagong target (matapos ang mga kabiguan sa QQQ, BTC, BNB) ay nauuwi pa rin sa overfit sa halip na makabuo ng pangkalahatang magagamit na edge.

Iniwan ito ng analyst matapos ang optimization: bumagsak ang tatlong HARD validity gate (OOS Sharpe 0.019 < 0.5 floor, is_overfitted true, PBO 0.77 > 0.5); hindi maihiwalay ang deflated Sharpe sa ingay ng best-of-N sa 225 trial, at hindi ito pumasa sa programme-level FDR, kaya imposibleng i-promote.

Long-only na turn-of-month seasonal overlay na nagmamay-ari ng SPY at QQQ (USEQ, daily bars) sa [-1,+3] month-end window lamang at kapag lampas sa sariling ~200-day trend ang bawat ETF; cash ang hawak sa ibang panahon.

Sa buong 1993-2026 sample, gumawa ito ng 500 long trade na may 0.60 win rate, profit factor na 1.43, average na kita kada trade na 0.34% (0.21% na na-optimize), CAGR 2.64% at maximum na drawdown na 12.2%, pero 0.194 lamang ang headline Sharpe (CI na sumasaklaw sa zero). Ibinunyag ng optimization ang tiyak na overfit: walk-forward IS Sharpe 0.87 kumpara sa OOS 0.019 (per-window 0.235/-0.017/-0.162), PBO 0.77, at deflated Sharpe na 0.020.

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.