自動化量化交易系統:從策略假設到回測驗證的建構框架

三年前,我第一次把一套策略從回測搬到實盤。

三年前,我第一次把一套策略從回測搬到實盤。

回測曲線漂亮到不真實:年化 60%,Sharpe 3.2,最大回撤只有 8%。我當時煩惱的是要投多少錢進去,而不是這條曲線是不是假的。

上線第一個月,實際 Sharpe 掉到 0.4。三個月後,那套策略的績效跟隨機進場已經沒有統計上的差別。程式沒有 bug,下單延遲也正常,訊號該觸發的時候都有觸發。壞掉的是最底層那件事:那條回測曲線,一開始就是過擬合出來的產物。

這是大多數人建量化交易系統時走的第一段冤枉路。他們把「系統」理解成「把訊號接上 API 自動下單」,於是花最多時間在執行層,最少時間在驗證層。真正決定你會不會賠錢的,順序剛好相反。

這篇文章拆解一套完整的量化交易系統實際上有哪五層結構、每一層在防什麼風險,以及為什麼量化回測的目的不是證明策略會賺,而是盡力把它殺掉。看完你會有一套可以套用的建構順序,而不是又一份「跟著做就能賺」的承諾。


量化交易系統(Quantitative Trading System)是指一套把「市場假設」轉換成「可重複執行、可驗證、可監控的交易流程」的完整結構。它不等於自動下單機器人。自動下單只是其中一層。系統真正的價值,在於它強迫你把每一個交易決策的邏輯寫成明確、可證偽的規則,讓 edge 能夠在投入真金之前被檢驗,也能在失效之後被偵測。


一套量化交易系統,實際上是五層結構

多數人講「量化系統」時,腦中只有中間那一層:策略邏輯。但一套能實際運作、而且不會在某個週三早上悄悄爆掉的系統,是五層疊起來的。

  • 數據層:行情、資金費率、未平倉量、鏈上數據的取得與清洗。垃圾進,垃圾出,這一層的錯誤會污染上面全部。
  • 訊號層:把原始數據轉換成有意義的特徵,例如波動率狀態、資金費率背離、Gamma 環境。
  • 策略層:定義進出場規則、部位大小、風險上限。這是假設所在的地方。
  • 執行層:把訊號透過 API 送出、處理滑價、拆單、重試。自動化交易指的主要是這一層。
  • 監控層:即時追蹤策略是否還在它被驗證過的行為範圍內,一旦偏離就示警或停機。

大部分散戶的程式交易專案死在兩個地方。一是把 90% 的時間花在執行層,追求下單快 50 毫秒,卻用一條過擬合的策略在跑。二是完全沒有監控層,策略衰減了好幾週才從對帳單上發現。

從結構來看,執行速度只有在你確定 edge 真實存在時才值得優化。順序錯了,再快也只是更有效率地虧損。

如果你手上已經有一堆數據、監控腳本或 API 串接,卻不確定怎麼把它們組成一套能驗證的流程,這正是付費實驗室裡最常被討論的問題。

策略邏輯:先有可證偽的假設,再有程式碼

好策略的起點不是程式碼,是一句能被證明為錯的假設。

「當永續合約資金費率連續三個資金週期為負、同時交易所 BTC 存量在下降時,未來 72 小時做多的期望值為正。」這是一個可證偽的假設。它有明確的觸發條件、明確的方向、明確的時間框架。你可以拿歷史數據去驗證它是真是假。

「市場情緒偏空,準備反彈」不是假設,是心情。它沒有觸發條件,事後怎麼解釋都對,這種東西寫不進系統,也驗證不了。

這個區別為什麼重要?因為只有可證偽的假設,回測才有意義。如果你的規則模糊到可以事後調整,那你做的就不是回測,是在對歷史數據做曲線擬合。你以為在驗證策略,其實在為過去的雜訊寫一份完美的解釋。

寫規則時的紀律是:進場、出場、部位大小、停損,四件事全部要能用數字或明確邏輯定義,不能有任何一步需要「當下看盤感覺」。只要有一步靠盤感,整套系統就無法回測,也無法歸因。策略賺了你不知道為什麼賺,賠了也不知道為什麼賠。

回測不是用來證明策略會賺,是用來殺掉它

這是整套系統裡最反直覺、也最重要的一段。

大多數人做交易策略回測的心態是「證明我的想法會賺」。於是他們不斷調參數,直到曲線變漂亮,然後把這條漂亮曲線當成未來的預期。這個過程有個名字,叫過擬合(overfitting):你不是在找 edge,是在記憶歷史數據裡的雜訊。

正確的心態是相反的。回測的職責是盡一切努力去證明這套策略沒有 edge。只有在你用盡各種方式都殺不死它之後,剩下的那點東西,才有可能是真的。

要真的殺策略,有幾道關卡:

樣本內與樣本外分離。 用一段歷史數據找參數(樣本內),然後在另一段它從沒見過的數據上測試(樣本外測試)。如果績效在樣本外崩掉,代表你找到的不是規律,是巧合。

Walk-forward 分析 比單次樣本外更嚴格的做法是 walk-forward analysis:滾動地用前段數據優化、後段數據驗證,一段一段往前推。它模擬的是你在真實時間裡「只能看過去、不能看未來」的處境。很多在單次回測裡 Sharpe 3 的策略,一過 walk-forward 就打回原形。

多重測試的懲罰。 這是最多人忽略的一關。如果你試了 200 組參數,然後挑出表現最好的那一組,光靠運氣就會有幾組看起來很強。López de Prado 提出的 Deflated Sharpe Ratio 就是在處理這件事:你試越多組合,就該對挑出來的最佳 Sharpe 打越大的折扣。沒有這一步,你回報的績效幾乎必然是高估的。

我自己那套 Sharpe 3.2 的策略,問題就出在這裡。我在一個參數網格上掃了上百組,挑了最好看的一組,卻沒有對「我掃了上百組」這件事付出任何統計代價。實盤等於是替我做了那個我沒做的樣本外測試,結果很誠實。

想更完整地把一套宣稱的 edge 在投錢前先證偽,可以參考維基對 backtesting 偏誤的整理,以及 Sharpe ratio 本身在多重測試下為什麼會被高估

從回測到實盤,中間有一段大多數人低估的距離

假設你的策略真的過了上面所有關卡。恭喜,你還沒賺到錢,因為回測世界和實盤世界之間有一道摩擦帶。

回測預設你能用你看到的價格成交。實盤不是。中間卡著滑價、手續費、盤口深度、資金費率、下單延遲。這些成本單獨看都不大,疊在一起足以吃掉一整條薄薄的 edge。

我有一套高頻一點的網格策略,回測年化 40%。上實盤前我做了一件事:把手續費調成實際的 taker 費率、把每筆成交假設為在盤口滑一到兩檔、再把持倉的資金費率成本算進去。同一套邏輯,年化剩 6%。這 6% 才是真的,那 40% 是回測沒有付過摩擦成本的幻覺。

所以從回測到實盤,中間必須有一個「悲觀成本」版本的回測:手續費用最貴的算、滑價用最差的假設、資金費率用歷史高位估。如果策略在悲觀假設下還活著,它才有資格上線。在樂觀假設下活著的策略,實盤會替你補上那堂課,而且學費很貴。

這一關和策略衰減不同,這是結構性的成本,不會因為市場好轉而消失。低估它,是把一套只在 Excel 裡賺錢的系統推上真金的最快方式。

監控與失效條件:策略會死,問題是你多久發現

沒有策略永遠有效。市場結構會變、參與者會變、你當初賴以獲利的無效率會被別人套利掉。真正的問題從來不是「策略會不會失效」,而是「失效之後你多久才發現」。

這就是監控層的工作。上線前,你要先寫下這套策略的失效條件:在什麼情況下,你會判定它已經不再有 edge,而不是暫時的正常回撤?

實務上可以盯這幾件事:

  • 實盤績效 vs 回測分佈:如果最近的實盤回撤已經超出回測歷史上出現過的最壞區間,那不是運氣差,是行為偏離了。
  • 成交品質:滑價、成交率是否惡化,代表市場微結構可能變了。
  • 相關性漂移:策略依賴的變數關係(例如資金費率和價格的關係)是否還成立。

寫好失效條件最大的好處,是它把「要不要停損整套策略」這個充滿情緒的決定,提前變成一條冷靜的規則。你不會在虧損當下天人交戰、拗單、加碼攤平,因為那條線在你還理性的時候就畫好了。這和單筆交易設停損是同一個道理,只是層級拉高到策略本身。

想長期追蹤這類結構性變化、而不是每天被價格噪音干擾,可以訂閱電子報,我會定期拆解流動性與市場微結構的變動。

該用什麼視角搭這套系統

工具會換,框架不會。與其問「用 Python 還是用什麼平台」,不如先確認你的系統在每一層有沒有回答對問題。

  • 數據層:來源是否乾淨、時間戳是否對齊、有沒有前視偏誤(用到當下還拿不到的數據)。
  • 訊號層:特徵是否有經濟意義,還是純粹在資料裡挖巧合。
  • 策略層:假設是否可證偽、規則是否完全機械化。
  • 回測:有沒有做樣本外、walk-forward、多重測試懲罰、悲觀成本。
  • 監控:失效條件是否事前寫死。

這五個問題,任何一層答不出來,那一層就是你系統裡最可能爆掉的地方。這個檢查順序,比任何一種程式語言或回測框架都重要。想理解我為什麼用偏機構的視角看待這整套流程,可以參考這個頻道的定位

結論

建一套自動化量化交易系統,真正的工作量不在自動下單,在讓 edge 在投錢之前先被誠實地檢驗。

把這篇濃縮成幾個可執行的重點:

  • 系統是五層結構,執行速度只有在 edge 為真時才值得優化,順序不能顛倒。
  • 策略的起點是可證偽的假設,不是程式碼;靠盤感的規則無法回測也無法歸因。
  • 回測的職責是殺策略,不是證明策略;沒做樣本外、walk-forward、多重測試懲罰的漂亮曲線,預設就是過擬合。
  • 上線前跑一次悲觀成本版本的回測,把摩擦成本算足。
  • 事前寫死失效條件,讓停用策略變成規則,而不是情緒。

這不是一套讓你明天就賺錢的公式,是一套讓你少賠、少自欺的紀律。市場不會因為你的回測好看就付錢給你,它只會為真實存在的 edge 付錢。你的系統能做的,是幫你分辨這兩者。

如果你想把這套驗證紀律用在自己的策略上,或想看更多市場微結構與資金結構的拆解,歡迎加入付費實驗室一起把假設拆到見骨。

個人頭像照片
AD.Trader Lab

AD.Trader Lab 創辦人 | 量化交易員 專注於在充滿雜訊的市場中,尋找數學上的必然性。AD.Trader Lab 實驗室主理人,帶你用數據看透漲跌背後的真相。