本站嘅失敗測試記錄 · 全部數字由 report JSON 讀出

試過,唔 work

呢頁講緊一件幾個網站唔會講嘅事:本站認真測過嘅策略,大部分輸咗。呢啲唔係「測試唔夠多」嘅托辭 —— 每一項都跑過 placebo (把規則隨機打亂、或者隨機揀同等數量嘅股票),同自己嘅 null 比。輸,就係輸。

點解要公開?因為 per-trade 數字好睇,組合層面數字唔好睇,而公眾通常只睇到前者。多重測試文獻講得好清楚:試過幾多個設定,in-sample 出現靚 Sharpe 嘅機會就幾大,但樣本外期望值係零。誠信係資產 —— 一個肯講自己失敗過嘅站,你反而可以相信佢話成功嗰啲。

結論先講

v2 嘅真錢部署計劃已停。網站繼續運作,公開嘅數字以本頁同 方法論 為準。

Sprint 2 — v2 拆成三條軸,每條軸各自輸

做法叫 crossed randomization:保留 v2 嘅其他部分,只把其中一樣隨機化,再同原版比。如果隨機化之後表現一樣或者更好,即係嗰部分冇做過任何事。三條軸喺同一個窗口各自比對,結果全部係 real 輸。

軸real gapnull 平均null sdnetznull 分位n判定
C — 入場時機 (entry timing)-3.8612.803.580-16.66-4.650.0%300FAIL
A — 選股 (stock selection)-3.866.102.625-9.95-3.790.0%300FAIL
B — 大市閘 (regime gate)-3.863.562.485-7.42-2.980.0%300FAIL

窗口 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 zworst 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|closehold0.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。

臂regimereal gapnull 平均netznull 分位過關
Ama200-1.796.56-8.35-3.910.0%否
Bnone+13.6614.37-0.71-0.6526.3%否

Direction A — 就算完美成交都贏唔到

最後一輪:v2 嘅 screen(20 日低位 S1 觸及 + 收市企穩 + ATR 上限 + 箱體上限 + 200 天線閘)同兩個對照臂跑同一個引擎、同一批 session、同一個成本模型。對照臂隨機揀同等數量嘅股票。門檻係 +1.00 pp 而且兩段窗口都要過。

兩個 fill lag 都試:同一日成交,同埋延遲一日成交 —— 一個 screen 根本唔可能成交嘅價,唔算數。

fill臂gap 2016–20gap 2021–26null z 2016–20null z 2021–26判定
fill lag 0arm1_v2_screen+2.98-5.121.18-1.66SELECTION_DEAD
fill lag 0arm1_nogate+1.77-4.580.84-1.40SELECTION_DEAD
fill lag 1arm1_v2_screen+2.32-5.130.89-1.63SELECTION_DEAD
fill lag 1arm1_nogate+2.11-5.400.88-1.70SELECTION_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
baselinereference1.0318.25-23.971.00否否是
C1_risk1pctC1_sizing1.0318.25-23.971.00否否是
C1_equalC1_sizing1.0318.25-23.970.69否是否
C1_kellyC1_sizing1.0117.16-23.950.11否否否
C1_volscaledC1_sizing1.0618.80-23.970.24否是否
C2_max10C2_concentration1.0318.25-23.971.00否否是
C2_max5C2_concentration0.756.39-15.690.04否否否
C2_max20C2_concentration1.0016.12-22.040.28否否否
C2_unlimitedC2_concentration0.888.91-23.370.12否否否
C3_t10C3_holding1.0318.25-23.971.00否否是
C3_t5C3_holding0.537.00-30.690.06否否否
C3_t20C3_holding1.038.94-12.770.04否否否
C3_trailingC3_holding0.774.22-8.750.02否否否
C4_cap60C4_allocation1.0318.25-23.971.00否否是
C4_uncappedC4_allocation1.0229.89-37.240.02否否否
C4_riskparityC4_allocation1.0026.76-37.240.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 邏輯(隨機揀入場日)之下係通過嘅。

市場窗口nB 平均 %null 平均 %差距 ppz判定
us200train3,6931.920.90+1.0313.19通過
us200test2,9821.770.78+0.9912.03通過
jp200train2,3891.060.11+0.958.91通過
jp200test2,1872.351.18+1.1710.70通過

逐單表現(樣本外 2023–26)

市場n勝率每單平均淨 %利潤因子
美股 US2002,98260.3%1.772%2.05
日股 JP2002,18765.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 條 FAILreports/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 benchmark2 條臂0 條過關reports/signal_search_s3_us.json
Direction A — fill-matched 選股(臂 × fill lag)4 條臂4 條 SELECTION_DEADreports/edge_alpha_a_us.json, reports/edge_alpha_a_us_lag1.json
Direction C — 組合構造 OFAT16 個 cell5 個 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-matchedreports/signal_search_s3_us.json
Direction A fill lag 0reports/edge_alpha_a_us.json
Direction A fill lag 1reports/edge_alpha_a_us_lag1.json
Direction C 組合構造reports/edge_alpha_c_us.json
收市確認 A/Bdata/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