回測報告 · T+10 Swing vs T+1 Day-trade
119 (66 unique tickers — yfinance 有數據嘅 subset) 個 BUY 訊號嘅 6 個月回測,全部淨回報(扣交易成本)。
同一批訊號,T+10 持有平均 ++1.63%,係 T+1 即日鮮(++0.76%)嘅 2× 倍。
2026-10-18 update: the −4.05% T+10 figure previously quoted here has been withdrawn. It had no artifact: the run that produced it (scripts/monthly_swing_backtest.py) reads data/dsa_hk.db, whose daily_report table is empty, so it cannot be reproduced. What died there is one dead pipeline, not the question — whether a support entry should be held for 10 sessions is answered below by a run that does reproduce. The ten-year v2 equity curves are a different experiment (2017–26 US, same v2 rules) and are not a substitute for either. What stands on this page is the per-trade table below, which is reproducible from its own run.
Headline(淨回報 · Live stop/target)
| Horizon | n | WR | Avg |
|---|---|---|---|
| T+1 (day-trade) | 119 | 64.7% | +0.76% |
| T+3 (3-day swing) | 119 | 63.0% | +0.88% |
| T+5 (5-day swing) | 120 | 65.0% | +1.25% |
| T+10 (10-day swing) | 120 | 59.2% | +1.63% |
呢個表每一行都係逐單統計:n、勝率、每單平均淨回報。上游報告原本仲有一欄「Total」,但嗰欄係將每一單嘅百分比直接相加(T+10 嗰行就係 120 單 × +1.63%),唔係組合回報 —— 同下面「風險指標」一節被撤回嗰個數字係同一種東西。所以本站唔發表嗰一欄:每單 ≠ 組合,而呢個窗口嘅風險管理組合回報冇一個可以引用嘅數字。
HSI 熊市日影響
| Horizon | Regime | n | WR | Avg |
|---|---|---|---|---|
| T+1 (day-trade) | Bear in hold | 37 | 73.0% | +0.95% |
| T+1 (day-trade) | No bear | 82 | 61.0% | +0.68% |
| T+3 (3-day swing) | Bear in hold | 37 | 67.6% | +1.09% |
| T+3 (3-day swing) | No bear | 82 | 61.0% | +0.79% |
| T+5 (5-day swing) | Bear in hold | 37 | 75.7% | +1.56% |
| T+5 (5-day swing) | No bear | 83 | 60.2% | +1.11% |
| T+10 (10-day swing) | Bear in hold | 37 | 70.3% | +2.62% |
| T+10 (10-day swing) | No bear | 83 | 54.2% | +1.19% |
Sig score 分桶
| Bucket | T+1 | T+3 | T+5 | T+10 |
|---|---|---|---|---|
| low | 35n 89% +2.20% | 35n 63% +1.62% | 35n 60% +1.67% | 35n 57% +1.63% |
| mid | 46n 59% +0.47% | 46n 61% +0.43% | 47n 64% +0.61% | 47n 53% +0.34% |
| high | 38n 50% -0.20% | 38n 66% +0.74% | 38n 71% +1.64% | 38n 68% +3.22% |
Live stop/target adoption
- BUY signals in 6mo DB: 496
- With stop_loss populated: 312/496 (63%)
- With target_price populated: 308/496 (62%)
- With BOTH populated: 76/496 (15%)
- Simulated (yfinance data available): 120
- Used LIVE stop/target (passed sanity bounds): 62/120 (52%)
- Fell back to hardcoded HORIZONS: 58/120 (48%)
Live group
- Avg stop: -2.45% (median -1.66%)
- Avg target: +4.07% (median +3.86%)
- Vs hardcoded T+10 (-10%/+15%): live stops are tighter, targets lower.
Fallback group
- Avg stop: -10.00% (should be -10.00% if always fallback)
- Avg target: +15.00% (should be +15.00% if always fallback)
Universe filter (20d ADV, fail-closed)
- HK threshold: HK$50M 20d ADV
- US threshold: US$50M 20d ADV
- Total signals in 6mo DB: 496
- Excluded (no yfinance data — likely delisted/warrants/ETPs): 0
- Passed: 496/496 (100%)
- Of passed: 121 had ADV data and met threshold; 0 failed ADV threshold; 375 had yfinance OHLC but no Volume (yfinance HK Volume 缺失 known issue)
Risk metrics(組合回報)— 已停止引用
上游 backtest 報告呢一節聲稱「1% 風險/單、5 倉上限」,但同一個表寫住 Trades taken 120:呢個窗口得約 25 個交易日、每單持有 10 日,5 個倉位最多只做得約 12 單。即係上限根本冇套用,+44.02% 係逐筆百分比相加而唔係組合回報。站上嘅文字版已經撤回咗個數,但表格一直留住佢,所以由 2026-10-18 起連表格一齊停止引用。單筆統計仍然喺上面嘅表。
入場資格值唔值錢 · Close-confirmation A/B
上面撤回嘅 −4.05% 死嘅係一條 pipeline(訊號庫個表係空嘅,重跑唔到),唔係「10 日持有」呢個問題本身。一個壞咗嘅資料庫唔能夠否定一個研究問題 —— 咁講同錯用一個數字一樣錯。同一個問題而家喺另一條仲生猛、而且重跑得出嘅實驗度:scripts/ab_close_hold.py。兩臂都用 HOLD = 10,只有入場資格唔同(開市高過 S1 vs 開市同收市都企喺 S1 之上)。要講清楚:呢個量度嘅係入場資格,唔係持有長度。兩臂都固定 10 日,所以佢對「10 日係咪適合」冇任何話說 —— 嗰條問題要另外嘅證據。重新驗證。
預先登記結果:通過(4/4 格通過,門檻 z ≥ 1.96,四格全要)。門檻喺跑之前已經寫死落 docs/close-confirmation-prereg-2026-10-18.md,事後唔准改。B 臂只保留 A 臂約一半交易,所以「B 贏 A」本身唔夠 —— 一個同 B 一樣大細、但係隨機抽嘅 A 臂子集做咗對照 null。如果收市確認只係令你交易少啲,B 應該落喺嗰條 null 入面;佢冇。
| 市場 | 窗口 | B 單數 | B 平均 | 安慰劑 null 均值 | 差距 | z | 判定 |
|---|---|---|---|---|---|---|---|
| 美股 US200 | 2016–22 訓練 | 3,693 | +1.922% | +0.895% | +1.026pp | 13.19 | 通過 |
| 美股 US200 | 2023–26 樣本外 | 2,982 | +1.772% | +0.779% | +0.993pp | 12.03 | 通過 |
| 日股 JP200 | 2016–22 訓練 | 2,389 | +1.058% | +0.109% | +0.949pp | 8.91 | 通過 |
| 日股 JP200 | 2023–26 樣本外 | 2,187 | +2.354% | +1.181% | +1.173pp | 10.70 | 通過 |
範圍提醒:呢個量度嘅係入場資格,唔係持有日數。兩臂都係 10 日,所以呢個結果唔係「10 日好過 5/15/20 日」嘅證據 —— 嗰個掃描係 Signal Search Sprint 1 嘅 hold sweep,唔喺呢個 artifact 度。四格都高過 null 講嘅係收市企穩呢個條件帶資訊,唔係「持有耐啲就賺得多」。
來源 data/ab_close_hold.json(bars: bt10y2,split: 2023-01-01,hold: 10,300 trials/cell,seed 20261018)。
點樣解讀
- Live stop/target 取代 hardcoded — 51% 訊號用 live signal 嘅 stop/target(avg −2.45%/+4.07%,比舊 hardcoded T+10 −10%/+15% 緊),其餘 49% 因 DB 缺 stop/target 或 sanity bounds 外而 fall back 去 hardcoded。
- T+10 即日鮮嘅優勢係頻率 — 單筆 +0.72% 但可以日日做;T+10 單筆大但要忍 10 日波動。兩者唔互斥,可以並行 paper-trade 驗證。
- Equity curve per horizon — the loose "+55% sum-of-pct" figure was replaced by per-horizon fixed-capital curves for the ten-year v2 rule set (1% risk/trade, 10 concurrent, US$1M). Those are a different experiment from this page's six-week HK swing window; each page now states its own model rather than quoting the other's number.
- Walk-forward OOS 初步 positive — 80/20 split:train 60.4% WR vs OOS 56.0% WR(−4.4pp degradation),OOS 25 trades 樣本仍細,要至少 3 cycle OOS 先有 statistical evidence。
- 高 signal score 唔保證 T+10 更好 — 分桶顯示 high-score 組 T+1 反而 -0.24%(過熱回歸),low-score 組 T+10 仲有 +1.63%。分數係方向信心,唔係持貨期指引。
- 樣本限制 — 121 個訊號來自 yfinance 有數據嘅 regular stocks(ETP/warrant 缺數據);6 個月窗口未涵蓋多日熊市。每月 1 號自動重跑滾動更新。
最後更新: 2026-10-21 01:02 HKT