Mga Estratehiya
A-H Dual-Listing Dislocation Harvest: Bilhin ang mas murang listing ng SAME kumpanya sa HKEQ at CNEQ (10 beripikadong A/H twin pair, daily bars, z-score ng log(A/H) kumpara sa sarili nitong norm na 120-session, single-leg long, 3-parameter)
Resulta: Inabandona
AhDualListingDislocationHarvest
Buod ng Resulta
Ang AhDualListingDislocationHarvest ang unang hypothesis sa HKEQ. Sinubukan nitong kumita mula sa paglihis ng ratio ng presyo ng A/H sa pamamagitan ng paghawak sa mas murang listing sa 10 pares ng kambal bilang iisang long leg. Sa loob ng 5 iteration, nakakuha ito ng pumasa na walk-forward (OOS 0.835, PBO 0.43) at holdout (Sharpe na 0.975) na mga resulta, at iminungkahi ng analyst na isulong ito. Nakakita ang Risk Officer ng tatlong kritikal na problema: gross ang bawat numero dahil walang siningil na HKEQ/CNEQ commission, halos walang edge sa huling pagsusulit na hindi ginalaw (Sharpe na 0.0014, average na trade na -0.083% sa 98 trade), at nilabag ng stop na 20% ang limitasyon sa risk na 5%. Iniwan ang strategy, kasama ang tala na hindi na dapat imungkahi muli ang long-only na anyong walang hedge.
Hypothesis
Implementasyon
Single-leg, long-only na A/H twin relative value sa HKEQ at CNEQ. Para sa 10 kumpanyang Chinese na dual-listed, kinukuwenta nito ang z-score ng log(H/A) kumpara sa sarili nitong norm na 120-session at binibili ang listing na mura (H kapag z <= -entry_z, A kapag z >= +entry_z). Signal lang ang twin. Lumalabas ang bawat leg kapag nag-converge sa loob ng exit_z, tumama sa stop na 5% batay sa bar low, o umabot sa maximum hold. Nililimitahan ang gross exposure sa bawat venue sa max_gross_frac ng equity ng venue. Bago sa bersyong ito: kailangan ding umabot sa (|z| - exit_z) * std(log ratio) >= min_convergence_pct (3%) ang inaasahang convergence sa entry, kaya nilalayon ng bawat trade ang galaw na higit na malaki sa statutory round trip (HKEQ ~0.22%, CNEQ ~0.10%).
Pagbabago sa code: nagdagdag ako ng isang fee-edge gate (min_convergence_pct) sa loob ng _wants_entry. Itinataas nito ang target na galaw kada trade sa halip na magdagdag ng walang-kaugnayang kondisyon na AND (L131). Tinutugunan na ng stop na 5%, gross cap kada venue, at leverage na 1 sa previous_code ang mga natuklasan tungkol sa stop na 20% at kawalan ng gross cap; mukhang tumutukoy ang mga ito sa mas lumang build. Depekto sa plumbing ng BacktestRunner._apply_fees para sa HKEQ/CNEQ ang natuklasan tungkol sa zero commission. Walang strategy code na makaaayos nito, kaya kailangang ayusin ito ng operator bago magkaroon ng saysay ang anumang numero mula sa run na ito.
Mga Resulta ng Beripikasyon
Operator: limitahan ang maagang pagbalik ng Equity sa _apply_fees sa mga venue na 0 (USEQ) ang naka-configure na maker at taker, o buuin muli ang Equity instruments gamit ang maker_fee/taker_fee mula sa venue_config.fees_for(). Patakbuhin muli bago pagkatiwalaan ng analyst ang anumang bilang kada trade. Hindi ito maaayos ng developer sa strategy code.
ENGINE DEFECT, hindi strategy code: sa src/backtesting/runner.py, ibinabalik ng _apply_fees (~linya 2239) nang walang pagbabago ang bawat NautilusTrader Equity instrument ('if isinstance(instrument, _Equity): return instrument'). Isinulat ang sangay na iyon para sa zero-fee na USEQ, pero Equity din ang pagkakabasa sa HKEQ at CNEQ. Kaya hindi kailanman nailalapat ang mga gastos na itinakda ng batas sa venue_configs.py (HKEQ maker/taker na 0.11% kada side, CNEQ stamp duty atbp.). Kinukumpirma ito ng sandbox gamit ang total_commission = 0.0 sa 1136 fill. Kaya gross bago ang fee ang lahat ng numero ng backtest at optimization para sa run na ito.
I-pin ang mga parameter ng risk at plumbing (max_stale_days, max_gross_frac, position_frac, leg_stop_loss_pct) sa labas ng _param_bounds at i-optimize lamang ang lookback, entry_z at exit_z, gaya ng paunang itinakda.
Sinasabi ng pamagat ng hypothesis na '3-parameter'. Naglalantad ang code ng 9 na naiaayos na parameter (lookback, entry_z, exit_z, max_hold_days, position_frac, leg_stop_loss_pct, max_gross_frac, max_stale_days, min_convergence_pct). Tugma pa rin ang pangunahing estruktura: z ng log(H/A) kumpara sa sarili nitong norm na 120-session, bilhin ang murang leg, at lumabas kapag nag-converge. Karamihan sa mga dagdag na parameter ay naglilimita sa risk. Gayunman, pinalalaki ng pag-optimize sa lahat ng 9 ang bilang ng pagsubok, at ito ang sisingilin kay DSR/PBO.
Opsyonal: kunin ang norm mula lamang sa mga naunang observation sa lookback. Higpitan ang pagiging sariwa ng datos para sa mga entry (halimbawa, 3 araw) para hindi gumawa ng desisyon sa gitna ng mahahabang pagsasara para sa Golden Week o Lunar New Year.
Kasama sa mean at std ng z-score ang kasalukuyang obserbasyon, kaya kasama ang ratio ngayong araw sa sarili nitong norm. Bahagya nitong pinapahina ang |z|. Hindi ito look-ahead. Hiwalay dito, nilalaktawan sa kasaysayan ang lumang A leg (holiday sa mainland habang nagte-trade ang HK) (max_stale_days = 10), pero maaari pa rin itong magbunga ng z sa _pair_z sa loob ng parehong 10-day tolerance, kaya maaaring pagpasyahan ang H entry batay sa A close na ilang session na ang tanda.
Hindi kailangang baguhin ang strategy. Tandaan ang halo ng currency: pinagsasama ang PnL ng HKD at CNY na para bang magkapantay ang mga unit; aggregation ito sa antas ng engine.
Mga kakaibang sandbox metric: avg_holding_bars ay 0.0 samantalang avg_holding_period ay 19d, at exposure_pct ay 492%, na kabuuan sa 20 instrument. Artifact ng metric ang mga ito para sa multi-leg session book at hindi nagmula sa strategy. Nagkakatugma ang ledger sa USD: 568 x $34.48 = ~$19.6k, na ~9.8% ng pinagsamang panimulang balanse na 200k local unit ng HKEQ+CNEQ. Tugma rin ito sa ~2-5% notional bawat leg. Binibilang ng total_trades (568) ang mga round trip = 1136 fill / 2, kaya naitala ang bawat leg.
Ipinapakita ng sandbox ang 0.92% kada trade sa 568 trade, pero total_commission ay 0.0. Ayon sa developer, walang galaw ang naka-lock na window mula 2024-07 hanggang 2026-09 (Sharpe na 0.0014, gross na average na trade na -0.083% sa 98 trade). Negatibo ito kapag ibinawas ang tunay na gastos (HKEQ ~0.22% round trip, CNEQ ~0.10-0.15%). Sumasaklaw sa 0 ang Sharpe ng sandbox na CI (-0.10 hanggang 1.48), at nalugi ito sa rate-shock window ng 2022. Sa setup na CASH lamang at iisang leg, taglay ng hawak na leg ang buong China/HK equity beta. Baka beta lamang sa listing na mas bumagsak ang tinatawag na convergence na “edge.” Tungkol sa kakayahang kumita ang rekomendasyon ng developer na iwan ito, kaya itinala ito rito at hindi bilang pagkabigo. Sa pagsusuri ng backtest, tingnan ang resulta matapos ibawas ang fee (kailangang mailapat muna ang fee; tingnan ang mga babala) at ang mga return ayon sa direksiyon ng H-share index.
Pagsusuri ng Backtest
- Sharpe
- 0.74
- Kabuuang Return
- 9.79%
- Max Drawdown
- 4.69%
- Kabuuang Trade
- 568
- Win Rate
- 45.6%
- Profit Factor
- 1.31
Tugma ang mga trade sa mekanismo: lahat ng 568 ay LONG at nahahati sa dalawang venue. Humigit-kumulang 19 araw ang average na tagal ng paghawak, at walang posisyong nag-round-trip sa loob ng isang session, kaya nasusunod ang CNEQ T+1.
0.92% ang gross na edge kada trade sa PF 1.31 sa 568 trade.
Maliit ang drawdown: max na 4.7%.
Gross ang ledger, hindi net. 0.0 ang total_commission, 0.0 ang commission_pct_of_gross, at nagpapakita ng commission na 0.0 ang bawat trade sa detail file. Nangyayari ito sa HKEQ (humigit-kumulang 0.22% round trip, stamp duty sa magkabilang panig) at CNEQ (humigit-kumulang 0.10-0.15%), kung saan totoo ang mga gastos na itinakda ng batas. Bago ibawas ang fee ang iniulat na PF, Sharpe at avg_trade. Ito rin ang depektong binanggit ng Risk Officer nang tanggihan ang run na ito.
Nabasa na minsan ang naka-lock na out-of-sample window (2024-07-20 hanggang 2026-09-25) at walang nakitang edge: Sharpe na 0.0014 at average trade na -0.083% GROSS sa 98 trade. Pagkatapos ng aktuwal na gastos, humigit-kumulang -0.25% iyon bawat trade. Nagtatapos na ngayon sa 2024-07-19 ang backtest na ito, kaya ang pag-optimize rito ay makakaangkop lamang sa panahong pre-exam, at nagamit na ang exam window. Hindi bagong test ang muling pag-optimize.
Kahit gross, hindi makabuluhan ang resulta. 0.74 ang Sharpe at -0.10 hanggang 1.48 ang CI (sumasaklaw sa 0), 0.83 ang PSR, at tumagal nang 685 araw ang pinakamahabang drawdown.
Marupok sa regime ang edge. Ang 2023 ay -1.75%, ang rate shock na 2022 ay -3.5%, at negatibo ang Sharpe ng normal-vol tercile.
Napatunayan ang alalahanin ni QA tungkol sa edge. Taglay ng hawak na leg ang buong China/HK beta (iisang long leg, walang hedge), at walang ipinakita ang forward window na gross edge.
Maliit ang sizing: 2.1% ng equity ang average position, at nagbalik ang buong backtest ng kabuuang +9.8% sa loob ng 6.5 taon.
Pagsusuri
Pasado ang bawat HARD pamantayan sa validity: hindi overfit ang CPCV walk-forward (IS 1.42 kumpara sa OOS 0.835, ratio na 1.7 laban sa threshold na 3.0), PBO ay 0.43 (hindi hihigit sa 0.5), at OOS ay 0.835 (hindi bababa sa 0.5). Pumasa ang holdout sa Sharpe na 0.975 sa 60 hindi pa nakikitang trade sa loob ng 558 araw (2024-02-13 hanggang 2025-08-24), ratio na 1.17 na may z_vs_oos +0.14. Umabot ang holdout sa ABOVE OOS sa halip na humina mula rito.
Naging mabisa ang feedback sa iteration 1. Hindi na nakatali ang entry_z sa hangganang hindi maaaring i-trade. Nasa loob ng [1.0, 2.5] ang napiling halaga ng 1.79, at makinis na patag na bahagi ang heatmap na 5x5 entry_z/exit_z (Sharpe na 0.58 hanggang 0.92) na walang matatarik na pagbabago sa 8 parameter. 3 parameter lamang ang malaya.
Malaki ang kita kada trade kumpara sa mga gastos. Ang avg_trade_return_pct ay 1.30% na in-optimize at 1.25% sa buong history, laban sa minimum na 0.30% HKEQ (0.60% sa 2x) at minimum na 0.15% CNEQ. Ang PF ay 1.55, ang max drawdown ay 6.3% laban sa paunang itinakdang 22%, ang Calmar ay 0.74, at 7% ng gross ang impact.
Tumutugma ang mga trade sa mekanismo. Lahat ng 365 trade ay LONG sa mas murang listing at nakakalat sa lahat ng 20 leg. Humigit-kumulang 24 araw ang average hold, kaya walang CNEQ trade na nagro-round-trip sa loob ng isang session at nasusunod ang tuntunin ng T+1.
Hindi ito beta. Sa humigit-kumulang 26% gross exposure sa China financials at energy names, na bumagsak nang husto noong 2021-2024, malulugi sana ang beta book. Sa halip, kumita ang strategy sa 7 sa 9 taon sa kalendaryo sa buong kasaysayan (8 sa 9 kung isasama ang 2023, na +1.6%), at kumita ito sa stressed-vol tercile (Sharpe na 4.7).
Natugunan ang 5 sa 6 paunang itinakdang prediksyon. Ang hindi natugunan ay min_oos_sharpe: 0.835 kumpara sa idineklarang 0.9, muntik nang maabot.
COST-MODEL DEFECT, na dapat ayusin bago palakihin ang paper allocation: total_commission ay 0.0 sa lahat ng 730 fill, at ipinapakita ng bawat trade record ang commission na 0.0. Idinedeklara ng venue_configs.py ang mga statutory cost sa bawat side para sa HKEQ (stamp duty na 0.10% sa bawat side kasama ang exchange fee) at para sa CNEQ (stamp duty na 0.05% sa sell-side kasama ang mga fee). Hindi siningil ang mga gastos na iyon. Hindi ko pa nasuri kung saan nawala ang paglalapat ng mga fee, kaya hindi pa beripikado ang mekanismo. Sa sarili kong magaspang na pagtataya, sa humigit-kumulang 0.25% round trip sa HK leg at humigit-kumulang 0.10% sa CN leg, bumababa nang humigit-kumulang 13% ang average na PnL kada trade. Nagbibigay iyon ng netong avg_trade na humigit-kumulang 1.1%, na lampas pa rin sa floor nang 3.7x, PF na humigit-kumulang 1.45, full-period Sharpe na humigit-kumulang 0.95, at holdout Sharpe na humigit-kumulang 0.85. Nananatili ang edge matapos isama ang mga gastos, pero lumalapit ito sa linya ng Sharpe na 1.0 / PF 1.5. Ito ang pangunahing dahilan ng incubation.
Ang DSR ay 0.948, bahagyang kulang sa 0.95, at pumalya ang FDR test (p=0.052 kumpara sa threshold na BH ng 0.0002; 6 lang sa 313 kandidato ang pumasa rito). Pareho silang soft failures.
Nabasa na ang holdout nang 2 beses sa mga optimization cycle, kaya hindi ito malinis na one-shot test. Mahina pero positibo ang hindi isinamang OOS vault (mula 2025-08-25, ayon sa ulat na may buong kasaysayan): humigit-kumulang +2.3% noong Set-Dis 2025, -0.4% noong 2026 YTD, at negatibo ang rolling Sharpe noong kalagitnaan ng -2026.
Nagbibigay ang base config sa buong history ng Sharpe na 0.88 at PF 1.47, at mas mababa sa advisory na 1.5 ang in-sample Sharpe na 1.11 matapos ang optimization. Matagal bago makabawi mula sa drawdown: humigit-kumulang 605 araw ang max_drawdown_duration.
0.91 ang payoff ratio, kaya nakasalalay ang strategy sa 63% win rate nito, na karaniwan sa mga convergence trade. Null ang beta at alpha dahil walang benchmark regression na kinuwenta para sa multi-venue basket na ito.
p=0.052
BH q=0.10 cutoff 0.0002
7/9 buong kasaysayan
gross of statutory costs (commission=0 defect); tantiya ng net ~1.1%
Kasaysayan ng Iterasyon
sandbox_timeout: Nabigo ang verification (Layer 3 — sandbox backtest): lumampas ang smoke test sa 300s na wall-clock limit sa ~20000-bar na window (2400 araw ng 2318.HKEQ-1-DAY-LAST-EXTERNAL). Halos palaging nangangahulugan ito ng gawaing kada bar na lumalaki kasabay ng kasaysayan — 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 kalkulahin sa __init__ ang mga nakaayos na timestamp array na ONCE at gumamit ng bisect, o mag-cache ng mga lookup na nakatali sa timestamp, upang maging O(log n) sa halip na O(n) ang gastos kada bar.
Buod ng Resulta
Kumpirmahing talagang sinisingil ang mga fee sa mga bagong venue (commission > 0) bago pagkatiwalaan ang anumang metric, at subukan ang A/H convergence sa anyong may hedge lamang (short H leg o hedge na index-future), dahil dala ng iisang long leg na walang hedge ang buong equity beta at hindi nito maihihiwalay ang spread edge.
Inirekomenda ng analyst ang promotion, pero tinanggihan ito ng Risk Officer dahil sa risk score na 8 > 7 at tatlong kritikal na isyu: walang galaw ang final exam, hindi nailapat ang HKEQ/CNEQ statutory fee, at lumampas sa limit na 5% ang stop ng 20% leg at nalampasan ito ng gap sa daily bars. Tumanggi rin ang Risk Officer sa mga waiver para sa DSR (0.9477 < 0.95), significance at programme FDR (p=0.052 laban sa cutoff na 0.0002). Pagkatapos, inabandona ang run bilang fee-accounting artifact na napatunayang mali ang premise sa out-of-sample.
Sa 10 kumpanyang Tsino na dual-listed sa A/H (H-share sa HKEQ, A-share sa CNEQ), binili lamang nito ang listing na mura kumpara sa katambal nito, batay sa z-score ng log(H/A) kumpara sa sarili nitong norm sa loob ng 120 session, at naghawak ito ng isang long leg na walang hedge dahil cash account ang dalawang venue.
Nagbalik ang paunang backtest (2018-01 hanggang 2024-07) ng +9.8% sa 568 long trade, na may Sharpe na 0.74 (CI -0.10 hanggang 1.48), PF 1.31, average trade na 0.92% at maximum drawdown na 4.7%. Umabot sa Sharpe na 1.11 ang na-optimize na bersyon, PF 1.55, average trade na 1.30% sa 365 trade, WF OOS Sharpe na 0.835 at holdout Sharpe na 0.975 sa 60 trade. Gross of fees ang lahat ng ito dahil total_commission ay 0.0, at nagpakita ang naka-lock na final-exam window (2024-07 hanggang 2026-09, 98 trade) ng Sharpe na 0.0014 at average trade na -0.083%.
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.