Lumaktaw papunta sa nilalaman
Lahat ng estratehiya

Mga Estratehiya

A-Share Backtesting: Weekday Timing na Nakabatay sa Regime, Entry Malapit sa Pagsasara, Long-Only Basket ng CSI-300 Heavyweight (CNEQ 1-HOUR, Fill sa Susunod na Open)

Resulta: Pagbeberipika

CneqWeekdayRegimeTimingBasket

A-Share Backtesting: Weekday Timing na Nakabatay sa Regime, Entry Malapit sa Pagsasara, Long-Only Basket ng CSI-300 Heavyweight (CNEQ 1-HOUR, Fill sa Susunod na Open)

Hypothesis

Hinango ito ng Research Lead mula sa ulat ng Haitong Securities na 周内效应与日内效应相结合的股指期货CTA策略 (2020-08-16, kopya ng BigQuant wiki mula kay 宽邦; source_ref: mga abstract section na 'A股存在周内效应', '周内效应择时策略' at '周内效应与日内效应相结合'). Nagte-trade ang source ng CFFEX index futures (IF/IC/IH), na hindi kayang i-backtest ng platform na ito (CFFEX ay labas sa supported_venues). Katangian mismo ng A-share market ang epektong inilalarawan nito, kaya sa A-share cash market na hawak namin isinagawa ang test: venue na CNEQ, isang……Magpakita ng higit paMagpakita ng mas kaunti

Hinango ito ng Research Lead mula sa ulat ng Haitong Securities na 周内效应与日内效应相结合的股指期货CTA策略 (2020-08-16, kopya ng BigQuant wiki mula kay 宽邦; source_ref: mga abstract section na 'A股存在周内效应', '周内效应择时策略' at '周内效应与日内效应相结合'). Nagte-trade ang source ng CFFEX index futures (IF/IC/IH), na hindi kayang i-backtest ng platform na ito (CFFEX ay labas sa supported_venues). Katangian mismo ng A-share market ang epektong inilalarawan nito, kaya sa A-share cash market na hawak namin isinagawa ang test: venue na CNEQ, isang pantay-timbang na basket ng 30 CSI-300 heavyweight na kumakatawan sa IF underlying (CSI 300). Ayon sa source: (1) ang estado ng merkado ay ang presyong malapit sa pagsasara ng index kaugnay ng antas nito dalawang araw na mas maaga; (2) sa pataas na merkado, malaki ang positibong return tuwing Lunes at Biyernes habang nahuhuli ang Martes/Miyerkules; sa pababang merkado, malaki ang negatibong return tuwing Lunes at Huwebes, at mas nakakapanatili ang Martes/Miyerkules; (3) nagpapasya ang composite malapit sa pagsasara (14:59; ayon sa source, kaunti lang ang nababago sa resulta ng 14:45/14:50) at sa 10:00, na sinasamantala ang karaniwang pagtaas ng index futures overnight at sa unang kalahating oras. Mga pinili ng Research Lead: hindi maaaring mag-short ng A-shares at long-only na CASH venue ang CNEQ, kaya ang LONG arm lamang ng weekday rules ng source ang tine-trade: nagiging flat ang short arms (Lunes/Huwebes sa pababang estado). EXECUTION: ang decision bar ay ang huling buong hourly bar bago ang closing bar (ang 1-HOUR bar na nagsasara sa 14:30 CST, 30 minuto bago magsara ang session). Alinsunod sa tuntunin ng platform na next_open_fill para sa mga session venue, napupunan ang mga order sa NEXT bar sa OPEN (≈14:30), hindi sa pagsasara ng decision bar. Pinapalitan nito ang oras ng decision na 14:59 ng source ng fill na 14:30; iniulat mismo ng source na kaunti lang ang mawawala kung mas maaga ang decision. Walang order na umaasa sa fill sa mismong pagsasara. Lumalabas ang opsyonal na overnight leg sa unang bar ng susunod na session (closing 10:30) at napupunan sa open ng kasunod na bar (≈10:30, kumpara sa 10:00 ng source). Kaya NOT ang nasubok na edge bilang return na overnight lamang: humigit-kumulang isang buong session ang hawak sa weekday positions (14:30 hanggang 14:30). Proxy index: I_t = mean na pantay ang timbang ng presyo ng bawat pangalan sa basket na hinati sa presyo nito sa unang magkakatugmang bar. Nakatakda ang uniberso sa mga 30 pangalang nakalista sa ibaba. Walang point-in-time na membership ng CSI-300 ang CNEQ, kaya mga pinuno ngayon ang nasa basket (may survivorship caveat; nakalista ang lahat ng 30 sa buong kasaysayan mula 2024-08 hanggang ngayon, 1-HOUR). Benchmark: buy-and-hold ng parehong basket. Favicon ng website ang kalakip na larawan (201_favicon.x-ic) at wala itong ebidensiya ng chart o trade. Nangangailangan ang three-factor overnight model ng source (closing premium, order-book imbalance, basis change) ng futures basis at order-book data na wala kami para sa CFFEX, kaya hindi ito NOT naipapatupad. Hindi beripikado ang bawat return na inaangkin ng source.

Implementasyon

Long-only na basket na pantay ang timbang, binubuo ng 30 CSI-300 heavyweight sa CNEQ 1-HOUR bar. Ang estado ng merkado ay pantay-timbang na price index (mean ng presyo ng bawat pangalan na hinati sa presyo nito sa unang magkakatugmang bar), na inihahambing sa decision bar (ang hourly bar na nagsasara nang 30 minuto bago magsara ang session, 14:30 CST) sa halaga nito noong state_lookback_sessions session ang nakaraan. Kung higit sa state_threshold_pct ang return ng estado (pataas), hahawakan ang basket hanggang sa……Magpakita ng higit paMagpakita ng mas kaunti

Long-only na basket na pantay ang timbang, binubuo ng 30 CSI-300 heavyweight sa CNEQ 1-HOUR bar. Ang estado ng merkado ay pantay-timbang na price index (mean ng presyo ng bawat pangalan na hinati sa presyo nito sa unang magkakatugmang bar), na inihahambing sa decision bar (ang hourly bar na nagsasara nang 30 minuto bago magsara ang session, 14:30 CST) sa halaga nito noong state_lookback_sessions session ang nakaraan. Kung higit sa state_threshold_pct ang return ng estado (pataas), hahawakan ang basket hanggang sa susunod na araw ng trading kapag Lunes o Biyernes iyon. Kung hindi (pababa), hahawakan ang basket kapag Martes o Miyerkules ang susunod na araw (down_state_days='tue_wed'), o mananatiling flat ang strategy ('none'). Flat ang short arms ng source (Lunes/Huwebes sa pababang estado). Flat ang strategy kapag mahigit holiday_gap_days araw sa kalendaryo bago ang susunod na araw ng trading. Alinsunod ang mga order sa tuntunin ng platform na next_open_fill: sa open ng susunod na bar pinupunan ang mga ito (mga 14:30), kaya humigit-kumulang isang session ang hawak sa weekday (14:30 hanggang 14:30). Pinananatili ang magkakasunod na araw na hawak nang walang churn. Kapag naka-on ang opsyonal na overnight leg (overnight_leg='on'), binibili at ibinebenta ang basket sa unang bar ng susunod na session sa mga decision bar kung kailan flat ang weekday rule (decision sa 10:30 bar, fill sa open ng kasunod na bar). Bawat leg ay may gross_exposure/basket_size ng mark-to-market NAV sa buong shares (0.95x gross, cash lamang, walang leverage).

Ang previous_code at feedback sa iteration-3 QA ay para sa mas lumang hypothesis tungkol sa closing pressure overnight ng USEQ. Humiling ang QA ng binagong hypothesis para sa susunod na open, at mayroon na nito ang brief: ang basket na may timing ayon sa araw ng linggo na CNEQ. Hindi maipapatupad ng lumang code ang bagong hypothesis, kaya sariwang implementasyon ito ng kasalukuyang paglalarawan, kung saan lahat ng fill ay sa open ng susunod na bar gaya ng tinutukoy ng hypothesis at walang palagay na sa parehong……Magpakita ng higit paMagpakita ng mas kaunti

Ang previous_code at feedback sa iteration-3 QA ay para sa mas lumang hypothesis tungkol sa closing pressure overnight ng USEQ. Humiling ang QA ng binagong hypothesis para sa susunod na open, at mayroon na nito ang brief: ang basket na may timing ayon sa araw ng linggo na CNEQ. Hindi maipapatupad ng lumang code ang bagong hypothesis, kaya sariwang implementasyon ito ng kasalukuyang paglalarawan, kung saan lahat ng fill ay sa open ng susunod na bar gaya ng tinutukoy ng hypothesis at walang palagay na sa parehong close. Kaya papalitan ang config ng basket na CNEQ. Nasa parameters ang mga nakapirming halaga ng plano (basket_size 30, gross_exposure 0.95, holiday_gap_days 3, morning_exit_bar_index 1, decision_minutes_before_close 30) at ang mga baseline tunable ng plano, at kinopya nang verbatim ang _optimization_plan. Sinasabi ng hypothesis na 30 pangalan ngunit 20 lang ang nakalista. Kasama ang lahat ng 20 nakalistang pangalan, at kinumpleto ang basket sa nakapirming basket_size na 30 sa pamamagitan ng 10 pang mabibigat sa CSI-300: 601939, 601857, 600028, 000001, 601628, 601668, 600050, 300760, 002475, 600031. Sinuri na bawat isa ay may kumpletong kasaysayan ng 1-HOUR mula 2024-08-26 at kaparehong mga decision bar na may tatak na 514 14:30 gaya ng mga idineklarang pangalan. (Hindi isinama ang 601088: mas kaunti ang mga bar na 14:30.) Ang decision bar ay ang bar na may minutes_to_session_close sa loob ng 15 ng 30, batay sa kalendaryo ng platform sa halip na hard-coded na oras. Makakaalis lang ang overnight leg sa session pagkatapos ng pagpasok nito, alinsunod sa T+1 ng A-share. Ginagamit lang ang mga presyo ng dagdag na leg kapag hindi mas huli ang bar nito kaysa sa pangunahing bar. Mga scalar o diksyunaryong may string key at scalar lang ang lahat ng persistent state. Risk control, ruta (b): mga exit batay sa signal/kalendaryo, na may hanggang 0.95x gross cash exposure at humigit-kumulang 3.2% ng NAV bawat pangalan. Alalahanin: maaaring mahirapang lampasan ng mga hawak na tumatagal ng humigit-kumulang isang session at may edge na nakadepende sa araw ng linggo ang ~0.10% CNEQ na round trip, pati ang pamantayang 0.25% para sa average trade.

Mga Resulta ng Beripikasyon

Bumagsak ang beripikasyon (Layer 4 — pagsusuri ng QA) [klase=hypothesis_mismatch]: - [edge_concern] Sinusukat ng positibong sandbox ang intraday exposure sa susunod na session, hindi ang tinukoy na overnight return. Hindi nito mapapatunayan ang overnight na mekanismo. - [kritikal] Nangangailangan ang hypothesis ng pagbili sa naobserbahang pagsasara ng session at pagsalo sa overnight gap. Parehong nagpapadala ng market order ang entry dito para sa dagdag na leg at ang pangunahing landas na……Magpakita ng higit paMagpakita ng mas kaunti

Bumagsak ang beripikasyon (Layer 4 — pagsusuri ng QA) [klase=hypothesis_mismatch]: - [edge_concern] Sinusukat ng positibong sandbox ang intraday exposure sa susunod na session, hindi ang tinukoy na overnight return. Hindi nito mapapatunayan ang overnight na mekanismo. - [kritikal] Nangangailangan ang hypothesis ng pagbili sa naobserbahang pagsasara ng session at pagsalo sa overnight gap. Parehong nagpapadala ng market order ang entry dito para sa dagdag na leg at ang pangunahing landas na should_enter/position_size pagkatapos lamang maproseso ang closing bar. Kapag naka-off ang USEQ at false ang lahat ng flag para sa subscription ng event feed, isinasagawa ng src/backtesting/next_open.py ang order sa susunod na bukas: napupunan ang mga entry sa bukas ng susunod na session, kaya hindi kasama ang overnight gap. Napupunan din sa bukas ng kasunod na bar ang desisyon sa exit pagkatapos ng unang oras. Nagbubunga ito ng humigit-kumulang isang oras na intraday exposure sa halip na nilalayong overnight holding period. Kinikilala ng naka-arkibong paglalarawan at rekomendasyon ng developer ang hindi pagtutugma ngunit hindi nila pinapahintulutang baguhin ang hypothesis. (linya 162) — ayusin: Panatilihing naka-block ang implementasyong ito sa ilalim ng kasalukuyang hypothesis. Ipagpatuloy lamang kapag sinusuportahan na ng platform ang kinakailangang execution sa mismong pagsasara, o kapag may hayagang binagong hypothesis para sa susunod na bukas na sinusuportahan ng pag-aaral sa naiibang return interval na iyon. Hindi naaayos ng pagtimpla ng parameter ang hindi pagtutugma sa execution.

Kasaysayan ng Iterasyon

Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=hypothesis_mismatch]: - [critical] Nangangailangan ang palagay ng pagbili sa pagsasara ng sesyon at paghawak sa magdamag hanggang magsara ang unang hourly bar ng susunod na sesyon. Nagsusumite ng karaniwang market order ang dalawang landas ng entry matapos maobserbahan ang session-close bar. Sa ilalim ng src/backtesting/next_open.py at execution_capabilities ng brief, naisasagawa ang mga order na USEQ sa pagbubukas ng 09:30 ng susunod na sesyon.……Magpakita ng higit paMagpakita ng mas kaunti

Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=hypothesis_mismatch]: - [critical] Nangangailangan ang palagay ng pagbili sa pagsasara ng sesyon at paghawak sa magdamag hanggang magsara ang unang hourly bar ng susunod na sesyon. Nagsusumite ng karaniwang market order ang dalawang landas ng entry matapos maobserbahan ang session-close bar. Sa ilalim ng src/backtesting/next_open.py at execution_capabilities ng brief, naisasagawa ang mga order na USEQ sa pagbubukas ng 09:30 ng susunod na sesyon. Pagkatapos, naisasagawa sa pagbubukas ng kasunod na bar ang mga pasya sa paglabas sa 10:30. Dahil dito, humigit-kumulang isang oras sa loob ng araw ang itinatagal ng paghawak ng estratehiya at hindi kasama ang agwat sa magdamag na sinusukat ng palagay at paunang pag-aaral nito. Pinatutunayan ng iniulat na isang oras na panahon ng paghawak sa sandbox ang hindi pagtutugmang ito. Gayundin ang depekto sa pangunahing landas ng entry. (linya 168) — ayusin: Panatilihing naka-block ang palagay na ito hanggang masuportahan ng platform ang kinakailangang pagsasagawa ng entry sa mismong pagsasara. Bilang kahalili, kumuha ng hayagang binagong palagay na tumutukoy sa entry sa pagbubukas ng susunod na sesyon at pagsasagawa ng exit sa susunod na pagbubukas, kasama ang mga prediksyon at paunang pag-aaral na sumusukat sa ibang pagitan ng paghawak na iyon. Hindi maaayos ng mga pagbabago sa dokumentasyon lamang ang kasalukuyang hindi pagtutugma.

Panatilihing naka-block ang hypothesis na ito hanggang masuportahan ng platform ang kinakailangang entry sa mismong pagsasara. Bilang alternatibo, kumuha ng hayagang binagong hypothesis na tumutukoy sa entry sa bukas ng susunod na session at exit sa susunod na bukas, kasama ang mga prediksyon at pag-aaral bago magsimula na sumusukat sa naiibang holding interval na iyon. Hindi maaayos ng mga pagbabago sa dokumentasyon lamang ang kasalukuyang hindi pagtutugma.

Nangangailangan ang palagay ng pagbili sa pagsasara ng sesyon at paghawak sa magdamag hanggang magsara ang unang hourly bar ng susunod na sesyon. Nagsusumite ng karaniwang market order ang dalawang landas ng entry matapos maobserbahan ang session-close bar. Sa ilalim ng src/backtesting/next_open.py at execution_capabilities ng brief, naisasagawa ang mga order na USEQ sa pagbubukas ng 09:30 ng susunod na sesyon. Pagkatapos, naisasagawa sa pagbubukas ng kasunod na bar ang mga pasya sa paglabas sa 10:30. Dahil dito, humigit-kumulang isang oras sa loob ng araw ang itinatagal ng paghawak ng estratehiya at hindi kasama ang agwat sa magdamag na sinusukat ng palagay at paunang pag-aaral nito. Pinatutunayan ng iniulat na isang oras na panahon ng paghawak sa sandbox ang hindi pagtutugmang ito. Gayundin ang depekto sa pangunahing landas ng entry.

Bumagsak ang beripikasyon (Layer 4 — pagsusuri ng QA) [klase=hypothesis_mismatch]: - [edge_concern] Sinusukat ng positibong sandbox ang humigit-kumulang isang oras na intraday exposure pagkatapos ng entry sa bukas ng susunod na session. Hindi nito pinapatunayan ang tinukoy na overnight reversal mula pagsasara hanggang kinaumagahan. - [kritikal] Nangangailangan ang hypothesis ng pagbili sa naobserbahang pagsasara ng session upang makuha ang overnight gap. Parehong nagpapadala ng market order ang landas na……Magpakita ng higit paMagpakita ng mas kaunti

Bumagsak ang beripikasyon (Layer 4 — pagsusuri ng QA) [klase=hypothesis_mismatch]: - [edge_concern] Sinusukat ng positibong sandbox ang humigit-kumulang isang oras na intraday exposure pagkatapos ng entry sa bukas ng susunod na session. Hindi nito pinapatunayan ang tinukoy na overnight reversal mula pagsasara hanggang kinaumagahan. - [kritikal] Nangangailangan ang hypothesis ng pagbili sa naobserbahang pagsasara ng session upang makuha ang overnight gap. Parehong nagpapadala ng market order ang landas na _submit_entry_instrument para sa dagdag na leg at ang pangunahing landas na should_enter/base-entry pagkatapos ng closing bar. Kapag naka-disable ang USEQ at lahat ng subscription sa event feed, pinupunan ng src/backtesting/next_open.py ang mga order na ito sa bukas ng susunod na session. Dahil dito, hindi nasasalo ng estratehiya ang buong overnight gap at humahawak ito nang humigit-kumulang isang oras sa intraday. Kinikilala ng naka-arkibong docstring at rekomendasyon ng developer ang hindi pagkakatugmang ito ngunit hindi nila pinapahintulutang baguhin ang hypothesis. (linya 162) — ayusin: Panatilihing naka-block ang implementasyong ito hanggang masuportahan ng platform ang kinakailangang execution sa mismong pagsasara, o kumuha ng hayagang binagong hypothesis at sumusuportang pag-aaral para sa entry sa bukas ng susunod na session. Hindi maaayos ng mga pagbabago sa dokumentasyon o pagtimpla ng mga numero ang kasalukuyang hindi pagtutugma. - [babala] Tinutukoy ng _is_close_bar ang pagsasara ng session gamit ang minute-of-hour == 0 sa halip na kalendaryo ng platform. Nakikilala nito ang regular at pinaikling pagsasara sa tinukoy na kumpletong hourly grid, ngunit nakadepende ang pagkakakilanlan at pag-reset ng session sa di-sinasadyang padron ng timestamp na iyon. (linya 60) — ayusin: Ihambing ang bar.ts_init sa self.session_close_ns(ts_ns=bar.ts_init), at gamitin ang src.strategies.helpers.sessions para sa pag-reset ng session ng bawat leg batay sa kalendaryo.

Panatilihing naka-block ang implementasyong ito hanggang suportahan ng platform ang kinakailangang same-close execution, o kumuha ng tahasang binagong hypothesis at pansuportang pag-aaral para sa entry sa pagbubukas ng susunod na sesyon. Hindi maaayos ng mga pagbabago sa dokumentasyon o muling pag-aangkop ng mga numero ang kasalukuyang hindi pagtutugma.

Nangangailangan ang palagay ng pagbili sa naobserbahang pagsasara ng sesyon upang makuha ang agwat sa magdamag. Nagsusumite ng mga market order matapos ang closing bar ang dagdag na landas na _submit_entry_instrument at ang pangunahing landas na should_enter/base-entry. Kapag hindi aktibo ang USEQ at naka-disable ang lahat ng event-feed subscription, isinasagawa ng src/backtesting/next_open.py ang mga order na ito sa pagbubukas ng susunod na sesyon. Dahil dito, napapalampas ng estratehiya ang buong agwat sa magdamag at tumatagal nang humigit-kumulang isang oras ang paghawak nito sa loob ng araw. Kinikilala ng docstring sa archive at rekomendasyon ng developer ang hindi pagkakatugmang ito, ngunit hindi nila pinahihintulutang baguhin ang palagay.

Ihambing ang bar.ts_init sa self.session_close_ns(ts_ns=bar.ts_init), at gamitin ang src.strategies.helpers.sessions para sa pag-reset ng session ng bawat leg batay sa kalendaryo.

Tinutukoy ng _is_close_bar ang pagsasara ng session gamit ang minute-of-hour == 0 sa halip na kalendaryo ng platform. Nakikilala nito ang regular at pinaikling pagsasara sa tinukoy na kumpletong hourly grid, ngunit nakadepende ang pagkakakilanlan at pag-reset ng session sa di-sinasadyang padron ng timestamp na iyon.

Panatilihing naka-block ang implementasyong ito sa ilalim ng kasalukuyang hypothesis. Ipagpatuloy lamang kapag sinusuportahan na ng platform ang kinakailangang execution sa mismong pagsasara, o kapag may hayagang binagong hypothesis para sa susunod na bukas na sinusuportahan ng pag-aaral sa naiibang return interval na iyon. Hindi naaayos ng pagtimpla ng parameter ang hindi pagtutugma sa execution.

Nangangailangan ang hypothesis ng pagbili sa naobserbahang pagsasara ng session at pagsalo sa overnight gap. Parehong nagpapadala ng market order ang entry dito para sa dagdag na leg at ang pangunahing landas na should_enter/position_size pagkatapos lamang maproseso ang closing bar. Kapag naka-off ang USEQ at false ang lahat ng flag para sa subscription ng event feed, isinasagawa ng src/backtesting/next_open.py ang order sa susunod na bukas: napupunan ang mga entry sa bukas ng susunod na session, kaya hindi kasama ang overnight gap. Napupunan din sa bukas ng kasunod na bar ang desisyon sa exit pagkatapos ng unang oras. Nagbubunga ito ng humigit-kumulang isang oras na intraday exposure sa halip na nilalayong overnight holding period. Kinikilala ng naka-arkibong paglalarawan at rekomendasyon ng developer ang hindi pagtutugma ngunit hindi nila pinapahintulutang baguhin ang hypothesis.

Pagsusuri

周内效应与日内效应相结合的股指期货CTA策略-海通证券-20200816 - BigQuant量化交易

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.