策略拿真錢跑之前,先過這兩道關卡

2026.09.017 分
量化交易研究

很多人以為「寫出一個回測很香的策略」就成功了一半。其實那才是地獄的開始。

回測會賺,跟真錢會賺,中間隔著一整條河。這條河的名字叫「現實」:你以為買得到的成交量其實買不到、你以為獨立的策略其實一起虧、你以為穩定的績效其實只是偷看了未來。

這篇手記不給你一份清單,而是一個分類框架——兩道關卡。每一道下面我會標註:如果略過這一步,你會「怎麼死」。好記,才好學。

一句話總綱

研究階段先證明「這個策略不是資料錯覺」; 上線前再證明「這個組合真的買得到、風險集中度可控、出問題時停得下來」。

第一道關卡是對內誠實,第二道關卡是對市場誠實。下面分開講。


第一道關卡:研究階段 —— 證明「這不是資料錯覺」

核心問題只有一個:這個策略的績效,到底是真的有邊際,還是我們不小心偷看了未來、或只是在某個神奇參數點上湊巧爆好?

用一個比喻:你在顯微鏡下看到一隻從沒見過的蟲,第一件事不是寫論文,而是確認「鏡頭沒髒、樣本沒污染、不是你眼睛的錯覺」。下面每一條,都是在排除一種「錯覺」。

1. Lookahead(偷看未來)檢查

最便宜的錯誤,最致命。典型長這樣:

# ❌ 錯誤:用「收盤後才公布的月營收」決定「當天開盤」的買賣
signal      = revenue[month] > threshold   # 月營收當月收盤後才出
position[today_open] = signal               # 但你今天開盤就用了 → 偷看未來

修法很簡單:任何訊號都要往後平移一段「資訊可取得」的時間差(公布日、除權日、財報截止日的 lag)。養成開 LookaheadWarning 的習慣,讓工具幫你抓。

略過會怎麼死:回測年化 30%,上線第一天就發現訊號永遠慢市場一拍,等你能買時價格早就反映了。

2. 績效指標要用標準定義

CAGR、年化波動、Sharpe、Sortino、Calmar、MDD——這些是這行的「共同語言」。定義亂寫,你就沒法和自己過去的策略比、也沒法和別人比。最常見的低級錯誤:把 CAGR / 年化波動 當成 Sharpe 報出去(真正的 Sharpe 分母要用「超額報酬的標準差」)。

略過會怎麼死:三年後你想挑選最好的策略,才發現當初的「Sharpe」是各家各算,根本不能並排比較。

3. 一定要切 IS / OOS,最好用 walk-forward

在同一段歷史上既調參又驗證,等於考試前先看答案。至少切「訓練期 / 測試期」;更紮實的是 walk-forward(滾動或擴增窗口):用前面一段定參數,往後一段驗證,再往後滾。

略過會怎麼死:樣本內完美擬合,樣本外一敗塗地——你只是把雜訊記成了規律。

4. 核心參數要做敏感度分析

測試策略「本身的參數」(不是只測停損、停利、手續費)。如果績效只在某一個 magic number 上突然爆好、隔一個數值就崩,那不是策略,是巧合。

略過會怎麼死:你以為抓到聖杯,其實只是把回測曲線「對準」了一個點。

5. 不同市場 regime 分開看

多頭、空頭、盤整、高波動、低波動,績效要分開攤開看。只在多頭測試期爽到的策略,空頭來了會還債。

略過會怎麼死:牛市回測美如畫,一遇到 2020 那種急殺,你才發現策略在空頭是裸奔。

6. 交易成本敏感度

把手續費、交易稅、滑價假設調高之後,策略還活著嗎?很多高週轉策略,光把滑價從 0 調到 0.1%,績效就腰斬。

略過會怎麼死:回測沒扣費用賺 20%,實盤扣完變 -5%,你還以為是運氣差。

7. 容量初估

估一下每次換股金額占該股票成交量的比例。研究建立在「想買多少就買多少」的成交量上,等真錢進去,價格就被自己打上去了。

略過會怎麼死:小妖股策略回測神準,你放 10 億進去,成交價直接被你買到天上,alpha 當場蒸發。

8. 統計穩健性

結論不能只靠「這條曲線長得好看」。bootstrap 建議用 block bootstrap(保留時間相關性,而不是把每天打散重抽);白噪音 / Ljung-Box 這類檢定,條件和判斷邏輯要對得上,別出現「名稱說是檢定、實際卻放行了錯誤結論」的矛盾。

略過會怎麼死:把一段隨機漫步誤判成「顯著 alpha」,信心滿滿上線,結果只是運氣的樣本。


第二道關卡:上線前 —— 證明「真的買得到、風險不會集中、出事停得下來」

過了第一道關,只代表「這個零件能飛」。第二道關要證明「這架飛機能載人、而且能迫降」。

即便單一策略本身過了研究關,把它們組成投組、拿真錢跑,還有一整層現實問題。

1. 真正的 walk-forward 驗證

每個窗口都要重新定參數 / 重新建模,再往後測——不是把同一條回測切區間貼上「樣本外」標籤。

略過會怎麼死:你以為驗證過了,其實只是把同一條已知答案的曲線換了個段落展示。

2. 策略間相關性

多個策略的日報酬、月報酬、回撤期間,是不是常常一起虧?如果答案是「是」,你以為的「分散」,其實是同一個風險穿了不同馬甲。

略過會怎麼死:以為有五套策略護體,結果五套在同一天一起跳樓,分散變集中。

3. 持股重疊度

不同策略如果大量買同一批股票,風險其實集中在同一個來源。名義上有十個策略,實質上押注在同一籃子。

略過會怎麼死:表面多策略多樣化,實際一個產業利空就全軍覆沒。

4. 曝險檢查

beta、size、value、momentum、產業、市值區間、單一股票權重——都要有上限。投組不是策略的簡單加總,而是風險的加總。

略過會怎麼死:單股權重不知不覺堆到 40%,一檔停牌你就半身不遂。

5. 流動性 / 滑價模型

不能只把 fee 調高就當作「保守」。要依部位大小、成交量、週轉率估實際成交衝擊——大單吃薄盤的滑價,遠比固定費率恐怖。

略過會怎麼死:回測假設滑價 0.05%,實盤你一筆大單把盤吃穿,成交均價差了 1%。

6. 漲跌停 / 停牌 / 下市處理

再平衡日買不到、賣不掉、資料中斷時,程式怎麼辦?這不是邊緣案例,而是台股每週都在發生的事。

略過會怎麼死:停損訊號觸發,但標的跌停鎖死賣不掉,你被迫抱著繼續跌。

7. Paper trading(模擬跑)

正式上線前,至少跑一段時間,拿實際成交價、訊號、換股名單,去對照回測假設。很多「回測裡合理」的事,實盤會露出馬腳。

略過會怎麼死:一上線才發現訊號延遲、換股名單和回測差了三檔,你卻已經真金白銀在上面。

8. 實盤風控與監控

單日最大損失、單策略停用條件、下單失敗通知、資料延遲通知、異常停機機制——這些都要先寫好,不是出事再補。

略過會怎麼死:程式凌晨卡死、單子沒下出去也沒人知道,等你睡醒已經多賠了一夜。


收尾

這兩道關卡,說穿了就是兩句話的誠實:

  • 對內誠實:我沒偷看未來、沒過擬合、沒忽略成本。
  • 對市場誠實:我買得到、風險沒偷偷集中、出事我停得下來。

這些檢查清單看起來囉唆,但每一條都是別人(或我自己)燒過真錢才學到的。省略任何一條,都是在賭市場不會用那一條來教訓你——而市場,最喜歡教訓偷懶的人。

← 回到手記列表