本站嘅失敗測試記錄 · 全部數字由 report JSON 讀出
試過,唔 work
呢頁講緊一件幾個網站唔會講嘅事:本站認真測過嘅策略,大部分輸咗。呢啲唔係「測試唔夠多」嘅托辭 —— 每一項都跑過 placebo (把規則隨機打亂、或者隨機揀同等數量嘅股票),同自己嘅 null 比。輸,就係輸。
點解要公開?因為 per-trade 數字好睇,組合層面數字唔好睇,而公眾通常只睇到前者。多重測試文獻講得好清楚:試過幾多個設定,in-sample 出現靚 Sharpe 嘅機會就幾大,但樣本外期望值係零。誠信係資產 —— 一個肯講自己失敗過嘅站,你反而可以相信佢話成功嗰啲。
結論先講
- 揀股冇 edge。就算完美成交(fill-matched),v2 嘅選股喺 4 條臂、2 個 fill lag 全部
SELECTION_DEAD—— 即係輸畀隨機揀同等數量嘅股票。 - 入場時機、大市閘、選股三條軸全部輸畀自己嘅 null:z = -4.65、-3.79、-2.98,全部喺 null 嘅 0.0% 分位。
- 11 個變體,0 個過關。其中 10 個顯著差過隨機(最差 z = -5.05)。
- 組合砌法冇得救。16 個 cell(sizing / concentration / holding / allocation)冇一個過 BH q=0.10 而自己著數。
v2 嘅真錢部署計劃已停。網站繼續運作,公開嘅數字以本頁同 方法論 為準。
Sprint 2 — v2 拆成三條軸,每條軸各自輸
做法叫 crossed randomization:保留 v2 嘅其他部分,只把其中一樣隨機化,再同原版比。如果隨機化之後表現一樣或者更好,即係嗰部分冇做過任何事。三條軸喺同一個窗口各自比對,結果全部係 real 輸。
| 軸 | real gap | null 平均 | null sd | net | z | null 分位 | n | 判定 |
|---|---|---|---|---|---|---|---|---|
| C — 入場時機 (entry timing) | -3.86 | 12.80 | 3.580 | -16.66 | -4.65 | 0.0% | 300 | FAIL |
| A — 選股 (stock selection) | -3.86 | 6.10 | 2.625 | -9.95 | -3.79 | 0.0% | 300 | FAIL |
| B — 大市閘 (regime gate) | -3.86 | 3.56 | 2.485 | -7.42 | -2.98 | 0.0% | 300 | FAIL |
窗口 2021-2026,300 trials,seed 20261019。null 分位 0.0% 意思係:隨機版本喺 300 次隨機抽樣入面每一次都贏。docs/sprint-2-crossed-randomization-prereg-2026-10-19.md
Sprint 1 — 11 個變體,0 個過關
原本用咗一個固定門檻(the +2pp fixed bar, which sits BELOW its own placebo null),結果有兩個變體「過關」。但把同一批變體擺喺自己嘅 placebo null 前面,門檻本身低過 null —— 嗰個測試根本測唔到嘢。改用 placebo-adjusted 門檻、300 trials 重跑之後,0 個過關。
| 變體 | 設定 | worst z | worst net (pp) | 過關 |
|---|---|---|---|---|
| 基準(現行 v2 規則) | base | -4.65 | -16.66 | 否 |
| S1 10 日低位 · 止損 3×ATR · 持有 10 日 · 200 天線閘 · 收市確認 | s1_10|stop_3x|hold_10|ma200|closehold | -2.05 | -8.79 | 否 |
| S1 30 日低位 · 止損 3×ATR · 持有 10 日 · 200 天線閘 · 收市確認 | s1_30|stop_3x|hold_10|ma200|closehold | -4.39 | -14.94 | 否 |
| S1 20 日低位 · 止損 3×ATR · 持有 10 日 · 200 天線閘 · 唔確認收市 | s1_20|stop_3x|hold_10|ma200|noclosehold | -2.84 | -8.31 | 否 |
| S1 20 日低位 · 止損 2×ATR · 持有 10 日 · 200 天線閘 · 收市確認 | s1_20|stop_2x|hold_10|ma200|closehold | -4.50 | -18.85 | 否 |
| S1 20 日低位 · 止損 4×ATR · 持有 10 日 · 200 天線閘 · 收市確認 | s1_20|stop_4x|hold_10|ma200|closehold | -3.71 | -11.43 | 否 |
| S1 20 日低位 · 止損 3×ATR · 持有 5 日 · 200 天線閘 · 收市確認 | s1_20|stop_3x|hold_5|ma200|closehold | -5.05 | -16.99 | 否 |
| S1 20 日低位 · 止損 3×ATR · 持有 15 日 · 200 天線閘 · 收市確認 | s1_20|stop_3x|hold_15|ma200|closehold | -3.40 | -12.67 | 否 |
| S1 20 日低位 · 止損 3×ATR · 持有 20 日 · 200 天線閘 · 收市確認 | s1_20|stop_3x|hold_20|ma200|closehold | -2.28 | -8.35 | 否 |
| S1 20 日低位 · 止損 3×ATR · 持有 10 日 · 50/200 天線交叉 · 收市確認 | s1_20|stop_3x|hold_10|cross50_200|closehold | -4.79 | -16.56 | 否 |
| S1 20 日低位 · 止損 3×ATR · 持有 10 日 · 冇大市閘 · 收市確認 | s1_20|stop_3x|hold_10|none|closehold | 0.45 | +1.62 | 否 |
等權基準 24.63%/年,179 隻可載入美股。最好嗰個都只有 z = 0.45 —— 差唔多等於隨機。worst z 係兩段窗口入面較差嗰段。spec
Sprint 3 — 對住 deployment-matched benchmark 再試
前兩輪之後再收窄一次:benchmark 唔再隨機抽,而係同 screen 用同一個交易日曆、同一個曝險。no arm clears the deployment-matched bar。
| 臂 | regime | real gap | null 平均 | net | z | null 分位 | 過關 |
|---|---|---|---|---|---|---|---|
| A | ma200 | -1.79 | 6.56 | -8.35 | -3.91 | 0.0% | 否 |
| B | none | +13.66 | 14.37 | -0.71 | -0.65 | 26.3% | 否 |
Direction A — 就算完美成交都贏唔到
最後一輪:v2 嘅 screen(20 日低位 S1 觸及 + 收市企穩 + ATR 上限 + 箱體上限 + 200 天線閘)同兩個對照臂跑同一個引擎、同一批 session、同一個成本模型。對照臂隨機揀同等數量嘅股票。門檻係 +1.00 pp 而且兩段窗口都要過。
兩個 fill lag 都試:同一日成交,同埋延遲一日成交 —— 一個 screen 根本唔可能成交嘅價,唔算數。
| fill | 臂 | gap 2016–20 | gap 2021–26 | null z 2016–20 | null z 2021–26 | 判定 |
|---|---|---|---|---|---|---|
| fill lag 0 | arm1_v2_screen | +2.98 | -5.12 | 1.18 | -1.66 | SELECTION_DEAD |
| fill lag 0 | arm1_nogate | +1.77 | -4.58 | 0.84 | -1.40 | SELECTION_DEAD |
| fill lag 1 | arm1_v2_screen | +2.32 | -5.13 | 0.89 | -1.63 | SELECTION_DEAD |
| fill lag 1 | arm1_nogate | +2.11 | -5.40 | 0.88 | -1.70 | SELECTION_DEAD |
曝險完全對齊(screen 臂同 universe 臂差 +0.01 pp),所以差距唔係「揀股揀到啲高曝險股」咁簡單 —— 係真係冇揀到好啲嘅嘢。179 隻、2,534 個 session,2016-09-01 至 2026-10-01,300 trials,seed 20261019。
補充:screen 有意見嗰啲日,仲係冇贏
POST-HOC DIAGNOSTIC — not part of the pre-registered decision rule, it has no threshold of its own, and it does not change the verdict
完整測試(問題、設計、預先登記門檻、八個 cell、事後診斷、決定)喺 Direction A 測試記錄 嗰頁。
問題係:screen 開口嗰啲 session(1,393 / 2,534 個,55.0%,平均每日 3.8 隻),揀出嚟嗰批係咪好過隨機揀同等數量?答案一樣係唔係。gap +2.66(2016–20)/ -4.83(2021–26)。
Direction C — 組合砌法都救唔到
既然揀股冇 edge,至少可以試下砌組合:改 sizing、concentration、holding、allocation。16 個 cell,每個對 baseline 做 pooled OOS 逐月 Sharpe 檢定,再加 Benjamini-Hochberg 假發現率校正(q = 0.1)。baseline:Sharpe 1.03、年化 18.25%、最大回撤 -23.97%、曝險 53.89%、122 個月。
| cell | 維度 | Sharpe | 年化 % | 最大回撤 % | BH q | 顯著 | 自己著數 | void |
|---|---|---|---|---|---|---|---|---|
| baseline | reference | 1.03 | 18.25 | -23.97 | 1.00 | 否 | 否 | 是 |
| C1_risk1pct | C1_sizing | 1.03 | 18.25 | -23.97 | 1.00 | 否 | 否 | 是 |
| C1_equal | C1_sizing | 1.03 | 18.25 | -23.97 | 0.69 | 否 | 是 | 否 |
| C1_kelly | C1_sizing | 1.01 | 17.16 | -23.95 | 0.11 | 否 | 否 | 否 |
| C1_volscaled | C1_sizing | 1.06 | 18.80 | -23.97 | 0.24 | 否 | 是 | 否 |
| C2_max10 | C2_concentration | 1.03 | 18.25 | -23.97 | 1.00 | 否 | 否 | 是 |
| C2_max5 | C2_concentration | 0.75 | 6.39 | -15.69 | 0.04 | 否 | 否 | 否 |
| C2_max20 | C2_concentration | 1.00 | 16.12 | -22.04 | 0.28 | 否 | 否 | 否 |
| C2_unlimited | C2_concentration | 0.88 | 8.91 | -23.37 | 0.12 | 否 | 否 | 否 |
| C3_t10 | C3_holding | 1.03 | 18.25 | -23.97 | 1.00 | 否 | 否 | 是 |
| C3_t5 | C3_holding | 0.53 | 7.00 | -30.69 | 0.06 | 否 | 否 | 否 |
| C3_t20 | C3_holding | 1.03 | 8.94 | -12.77 | 0.04 | 否 | 否 | 否 |
| C3_trailing | C3_holding | 0.77 | 4.22 | -8.75 | 0.02 | 否 | 否 | 否 |
| C4_cap60 | C4_allocation | 1.03 | 18.25 | -23.97 | 1.00 | 否 | 否 | 是 |
| C4_uncapped | C4_allocation | 1.02 | 29.89 | -37.24 | 0.02 | 否 | 否 | 否 |
| C4_riskparity | C4_allocation | 1.00 | 26.76 | -37.24 | 0.04 | 否 | 否 | 否 |
5 個 cell 係 void(配置同 baseline 一樣,差異序列冇變異,檢定冇資訊量),唔帶判定。0 個 cell 顯著;但「顯著」同「自己著數」係兩件事 —— 果 0 個顯著 cell 全部夏普比 baseline 差。最接近嘅係 C1_volscaled(Sharpe 1.06 vs 1.03),但 q = 0.24,高過 0.1。
邊部分仲企得穩
上面全部係組合層面嘅失敗。有一件事唔係失敗,唔好混淆:訊號本身(逐單)有 edge,用訊號砌組合就冇。呢兩件事係分開測嘅。
收市確認(入場資格)
跌到 20 日低位 S1 之後,收市企穩 S1 先算成交呢個條件,同一個 placebo 邏輯(隨機揀入場日)之下係通過嘅。
| 市場 | 窗口 | n | B 平均 % | null 平均 % | 差距 pp | z | 判定 |
|---|---|---|---|---|---|---|---|
| us200 | train | 3,693 | 1.92 | 0.90 | +1.03 | 13.19 | 通過 |
| us200 | test | 2,982 | 1.77 | 0.78 | +0.99 | 12.03 | 通過 |
| jp200 | train | 2,389 | 1.06 | 0.11 | +0.95 | 8.91 | 通過 |
| jp200 | test | 2,187 | 2.35 | 1.18 | +1.17 | 10.70 | 通過 |
逐單表現(樣本外 2023–26)
| 市場 | n | 勝率 | 每單平均淨 % | 利潤因子 |
|---|---|---|---|---|
| 美股 US200 | 2,982 | 60.3% | 1.772% | 2.05 |
| 日股 JP200 | 2,187 | 65.5% | 2.354% | 2.69 |
呢啲係逐單統計,唔係組合回報,亦唔等於跑贏大市 —— 同一批股票純粹等權持有,2016–26 係贏嘅(見方法論頁)。收市確認 A/B:4/4 格通過,300 trials,seed 20261018。來源 data/ab_close_hold.json。
試驗台賬
歷來一共測試過 58 個設定。每行嘅數都係由 report 檔數返出嚟,唔係人手填,來源檔名就喺最後一欄。
| 測試 | 數量 | 結果 | 來源檔 |
|---|---|---|---|
| Sprint 1 — 11 個變體 × 成本情境 | 33 個設定 | placebo 重跑 300 trials 後,0 個過到門檻 | reports/signal_search_s1_summary.json |
| Sprint 2 — crossed randomization 三軸 | 3 條軸 | 3 條 FAIL | reports/signal_search_s2_us_axis_a.json, reports/signal_search_s2_us_axis_b.json, reports/signal_search_s1_us_placebo.json |
| Sprint 3 — deployment-matched benchmark | 2 條臂 | 0 條過關 | reports/signal_search_s3_us.json |
| Direction A — fill-matched 選股(臂 × fill lag) | 4 條臂 | 4 條 SELECTION_DEAD | reports/edge_alpha_a_us.json, reports/edge_alpha_a_us_lag1.json |
| Direction C — 組合構造 OFAT | 16 個 cell | 5 個 void、0 個顯著 | reports/edge_alpha_c_us.json |
Sprint 1 嘅 placebo 重跑唔另計:佢係同一批 11 個變體換把尺再評一次,冇畀數據多一次「撞運」嘅機會。
之後點樣做
Holdout 紀律
2016–20 同 2021–26 係固定切法,唔會因為結果靚就改。 任何新 claim 必須兩個分段同號先可以發佈 —— 單邊靚唔算數。上面每一個 FAIL,都係因為兩段之間隔籬變咗號(或者其中一段直接輸)。
Placebo 規則
日後任何策略數字上站之前,必須並排一個 null / placebo 對照,而且 null 要用同一個引擎、同一個 universe、同一個成本模型跑,只把受測嗰部分隨機化。計分方法見收市確認 A/B:把訊號移到隨機交易日,睇差距仲喺唔喺 null 上面。
冇 placebo 嘅數字,唔上站。呢個係本頁存在嘅原因。
每個數字嘅來源
| 數字 | 來源檔 |
|---|---|
| Sprint 1 變體清單、placebo 門檻 | reports/signal_search_s1_us_placebo.json |
| Sprint 1 變體 × 成本情境格數 | reports/signal_search_s1_summary.json |
| Sprint 2 軸 A(選股) | reports/signal_search_s2_us_axis_a.json |
| Sprint 2 軸 B(大市閘) | reports/signal_search_s2_us_axis_b.json |
| Sprint 2 軸 C(入場時機) | reports/signal_search_s1_us_placebo.json(base 變體) |
| Sprint 3 deployment-matched | reports/signal_search_s3_us.json |
| Direction A fill lag 0 | reports/edge_alpha_a_us.json |
| Direction A fill lag 1 | reports/edge_alpha_a_us_lag1.json |
| Direction C 組合構造 | reports/edge_alpha_c_us.json |
| 收市確認 A/B | data/ab_close_hold.json |
| 逐單樣本外統計 | public/v2-signals.json |
| 規則定義 | docs/edge-to-alpha-prereg-spec-2026-10-19.md |
本頁由 scripts/build_honest_results_page.py 生成,數字由 scripts/honest_results.py 從上面嘅檔案讀出 —— 生成器內冇任何手打數字,來源檔唔在就停止 build。
最後更新: 2026-10-20 HKT