用演算法交易前的 6 項檢查:真金白銀上場前要過的關卡
以真金白銀跑演算法交易前,依固定順序通過六項檢查:資金要能撐住回測的最大回撤且還有餘裕、規則要能用白話說清楚、回測要計入實際成本、樣本外與推進分析要站得住、部位大小與模擬交易期間要事先定好,並寫下停用規則。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
用演算法交易前,要先檢查什麼?
以真金白銀用演算法交易前,要依固定順序通過六項檢查:資金要能撐住回測的最大回撤且還有餘裕、規則要能用白話說清楚、回測要計入實際成本、樣本外與推進分析要站得住、部位大小與保證金和模擬交易期間要事先定好,最後要寫下停用規則。
演算法交易是由一套寫好的規則決定每一次進場與出場,再由程式送出委託。程式消除了猶豫,但也消除了人類察覺異常的那一拍停頓。這六項檢查就是把那一拍停頓放回第一筆委託之前,那時候它不花任何成本。如果你對這個概念還不熟,什麼是演算法交易,以及為什麼多數規則會虧損一文介紹了本文假設你已知道的背景。
- 資金對上回撤。帳戶的保證金之外,還要有一筆大於回測最大回撤的緩衝。
- 規則可讀。每一條進場與出場規則,你都能不看程式碼直接念出來。
- 回測含成本。每一筆交易都計入手續費、滑價,並以下一根 K 棒成交。
- 樣本外與推進分析。凍結後的規則,在它從未見過的資料上仍然成立。
- 部位大小、保證金與模擬交易。口數由每筆固定風險決定(免費的部位大小計算機可代為計算),保證金要能撐過最糟的一天,模擬交易則依固定筆數進行。
- 停用規則。三項觸發條件,附門檻,並在第一筆實單交易前寫下。
順序很重要。未通過某一項檢查的策略,不會進入下一項;你要嘛修正,要嘛放棄。若成本從未納入模型,就去檢查某個策略的部位大小,那是白費工夫,因為成本可能已把優勢完全吃掉。
用演算法交易需要多少資金?
所需資金是保證金加上一筆緩衝,而這筆緩衝至少要能涵蓋最大的回測回撤,並且還有餘裕,因為實單的第一次回撤常常比回測來得大。光有保證金,只能讓部位在平靜的一天維持開倉。它幫不了每個策略遲早都會遇到的連續虧損。
回撤是從權益高點下跌到其後低點的幅度,是在權益回復之前所量得的。把它想成開車旅行:保證金是發動引擎的油,回撤緩衝是開到下一個加油站的油。帳戶只放發動引擎的油,遇到第一座坡就會熄火。本文唯一的公式如下:
所需資金 = 保證金 + 1.5 × 回測最大回撤 + 一年的成本
其中 保證金 是交易所與券商對每口合約要求的保證金;回測最大回撤 是同樣口數、已計入成本的回測中,最大的高點到低點跌幅;一年的成本 是回測在一年內產生的交易筆數所對應的手續費與滑價。係數 1.5 是實務上的安全邊際,不是定律。Bailey、Borwein、López de Prado 與 Zhu(2014)說明了為何需要保留一些餘地:從許多次嘗試中挑出最好的策略,會帶有選擇性的偏誤,因此它的回測回撤會低估新資料上會出現的回撤。保證金要求會改變,填入數字前請查閱交易所的合約頁面與券商目前的保證金表。
假設性範例
一口合約的保證金:20,000 美元。同一口數、計入成本後的回測最大回撤:40,000 美元,因此緩衝為 1.5 × 40,000 = 60,000 美元。回測一年約做 30 筆交易,每筆約 30 美元,一年成本約 1,000 美元。所需資金約為 81,000 美元。光是保證金只佔其中四分之一。一位以 25,000 美元開戶的交易者,並不是資金「稍微不足」,而是這個帳戶連一次普通的回撤都撐不過去。
不同類型的規則會產生不同形狀的回撤:趨勢策略通常以許多小幅虧損慢慢累積,均值回歸策略則是少數幾次大幅虧損。在設定緩衝大小之前,期貨演算法交易策略類型,以及各類型如何回測的概覽會告訴你該預期哪一種形狀。
用演算法交易需要會寫程式嗎?
不需要自己寫程式也能用演算法交易,但你必須能用白話讀懂每一條進場與出場規則,因為一條你說不清楚的規則,就是你無法判斷、也無法停用的規則。寫程式的問題在於投入的工夫,讀懂規則的問題則關係到安全,而且不論走哪條路都一樣。
| 問題 | 自己寫程式 | 生成並匯出規則 |
|---|---|---|
| 所需技能 | 平台語言與除錯 | 讀懂規則與報表 |
| 做出第一條可測試規則的時間 | 數天到數週 | 數小時 |
| 誰檢查邏輯 | 你,逐行檢查 | 你,在匯出的原始碼中逐條檢查規則 |
| 上線前仍必須讀懂的內容 | 每一條進場與出場規則,用白話讀懂 | 每一條進場與出場規則,用白話讀懂 |
一個實用的測試方法:把策略用一頁文字寫下來,寫成「當條件 A 連續兩根 K 棒成立時,於下一根 K 棒開盤做多;條件 B 成立或收盤時出場」這類句子。如果缺了任何一句,代表回測裡藏著一條你不知道的規則。三十天內做出第一個演算法交易策略的路線,從第一週就開始培養這個習慣。如果你選擇不寫程式的路線,AlphaPrime(Valynox)會把策略寫成原始碼,匯出到支援的匯出平台頁面所列的交易平台,所以你讀到的規則,就是平台實際執行的規則。
回測有沒有計入實際成本與下一根 K 棒成交?
只有當每一筆交易都計入手續費、滑價,並以下一根 K 棒成交,而且平均每筆損益是每筆成本的許多倍時,回測結果才能作為上線的依據。滑價是回測假設的成交價,與實際委託最後成交價之間的差距。下一根 K 棒成交是指:某條規則在某根 K 棒收盤時做出決定,但要到下一根 K 棒開盤才會成交,因為收盤價要等該根 K 棒結束才會知道。
下面的回測結果,示範了一份計入成本的報表長什麼樣子。它測試的是一個替代規則,而不是完整策略:以 ADX 作為唯一的進場與出場條件,ADX 是衡量價格趨勢強度、但不指出方向的指標;沒有停損、沒有停利,也沒有任何過濾條件。市場為 NQ(E-mini 那斯達克 100)期貨,日線 K 棒,期間 2019-01-02 至 2025-06-30,做多與做空,一口合約,每筆交易計入 20 美元手續費與 10 美元滑價。
來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。NQ 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $10。
| 項目 | 結果 |
|---|---|
| 淨利(已平倉) | $102,875 |
| 最大回撤 | $80,685 |
| 交易筆數 | 43 |
| 勝率 | 58.14% |
| 獲利因子 | 1.436 |
| 平均每筆 | $2,392.44 |
| 在場時間 | 41.52% |

這份報表有兩件事對上線決策很重要。第一,這是搜尋從 1,024 次嘗試中,依報酬對回撤挑出的那一個候選策略。事後挑出最好的一個,會讓數字看起來更漂亮:在一千個變體中,有些會因為碰巧而在這段歷史上表現良好,因此這些數字只描述過去資料上被留下的那個候選策略,對這條規則或讀者未來會賺多少,並沒有說明。第二,成本檢查很容易通過:平均每筆損益 2,392.44 美元,約為該次回測每筆 30 美元收費的八十倍,因此滑價就算加倍,結果也幾乎不會改變。弱點在別處。最大回撤 80,685 美元,約為淨損益 102,875 美元的五分之四;六年半只有 43 筆交易,樣本很薄。依照上一節的資金規則,這條規則一口合約就需要相當於 1.5 倍該回撤的緩衝,加上保證金,這正是上線這條規則的真實成本。
對於每筆交易獲利空間很小的日內規則,成本門檻和平均每筆損益門檻會很接近,多數實單嘗試就是在這裡結束的。優勢與成本之間的算術,在決定散戶演算法交易是否划算的數字一文中有詳細說明。
策略有通過樣本外與推進分析的檢驗嗎?
策略只有在規則於調校後凍結,並且在從未見過的資料上、跨越數個推進分析區段都站得住腳,而且判斷門檻是你在測試前就寫好的,才能上線。樣本外資料,是歷史中被保留在調校之外、僅用來對已完成規則做一次評分的那一段。推進分析則是:在一段區間上調整參數,接著原封不動地套用到其後的區間,然後向前推進、反覆進行,直到所有測試區段串接成一個完整結果。
這兩種測試用同一批資料回答不同的問題。單次切分回答的是「用 2019 到 2023 年調出來的規則,到了 2024 與 2025 年還有效嗎?」;推進分析則回答「每當市場往前移動,這套調校方法還持續有效嗎?」。一條規則若通過前者卻在後者失敗,通常是依賴某一次運氣好、剛好挑中的參數。
- 先寫下門檻:例如,樣本外的平均每筆損益至少為樣本內數字的一半,且四個推進區間中,至少三個在計入成本後為正。
- 調校結束時凍結規則。之後任何修改,都視為新的候選策略。
- 先跑單次切分,再跑推進分析,成本與下一根 K 棒成交的設定,與原始回測相同。
- 依門檻決定通過或不通過,不要以權益曲線看起來如何來決定。Pardo(2008)描述了推進分析的程序,以及以事前訂定的規則來判斷結果的理由。
Harvey 與 Liu(2015)指出了一個在測試大量候選策略時很關鍵的問題:在同一段歷史上比較的變體越多,倖存者必須跨過的門檻就越高。當門檻在搜尋開始前就已輸入,例如AlphaPrime 策略檢驗中逐階段的通過或不通過,那些在單次切分中被淘汰的候選策略,就不會進入推進分析階段,被淘汰的策略也不會接觸到後面的資料。視窗長度與如何解讀串接後的曲線,則在推進分析,以及你真的可以交易的那一個回測數字中說明。
如何設定部位大小、檢查保證金並進行模擬交易?
以每筆固定比例的帳戶風險來決定每次的口數,確認日內與隔夜保證金在最糟的一天仍能配得上帳戶,並以完成的交易筆數(而非週數)來安排模擬交易。這三項設定都應在紙上決定,之後就不要再動;模擬期間若變更設定,模擬期就要重新計算。
部位大小由兩個數字決定:你願意在一筆交易中損失的金額,通常是帳戶的百分之一到百分之二;以及一口合約在停損被觸發時的虧損金額。把前者除以後者,再無條件捨去成整數口數。對於沒有停損的規則,例如上面的替代規則回測,就以回測中最大的一筆虧損交易作為每口合約的虧損金額。前面提到的工具可以為任何合約完成這個除法。
保證金是交易所與券商為未平倉部位所持有的押金;日內保證金通常低於隔夜保證金,若部位要留到收盤後,就必須符合較高的隔夜保證金。以完整口數,在回測中最糟的一天檢查隔夜保證金是否符合帳戶狀況,也就是在最大回撤的谷底,而不是在開戶的初始餘額。如果當時的帳戶餘額無法支應每一口合約的隔夜保證金,就減少口數,直到足夠為止。
模擬交易是以即時報價運行策略、但不投入真錢,用來比較它的即時行為與回測是否一致。它的任務是收集成交的樣本,因此要以交易筆數來計算。約 30 筆完成的交易,是能讓平均成交差異具有意義的最小樣本;確切數字由你決定,但必須先寫下來。
假設性範例
目標:30 筆模擬交易。一個日線策略每年約交易 7 次,要達到目標需要四年以上,實際上不可行,因此它的交易者會檢查前 10 筆的成交品質,並更依賴推進分析的結果。一個每天交易兩次的日內策略,約十五個交易日,也就是大約三週,就能累積到 30 筆。
模擬期間,每筆交易記錄三個數字:回測邏輯產生的訊號價格、模擬的成交價格,以及兩者之間的時間差。前兩者之間的差距就是你實測的滑價,它會餵給下面的第二項停用規則。
什麼時候該停用演算法?
在第一筆實單交易前,寫下停用規則:一個與回測掛鉤的回撤上限、一個實單與回測成交之間差距的門檻,以及一份技術故障清單,讓決策由規則來做,而不是由情緒來決定。在連續虧損的一週裡才決定停或不停的交易者,要嘛停得太早,停在正常的雜訊之後;要嘛停得太晚,等到帳戶已經受損。事先寫好規則,兩種錯誤都能避免。
| 觸發條件 | 事先寫下的門檻 | 行動 |
|---|---|---|
| 回撤 | 實單回撤達到同口數回測最大回撤的 1.5 倍 | 停止,然後檢討 |
| 成交差距 | 最近 20 筆實單的平均滑價,高於回測假設的滑價 | 停止,然後檢討 |
| 故障 | 部位開倉期間,出現任何漏單、資料中斷或平台斷線 | 停止,然後檢討 |
回撤觸發條件使用與資金規則相同的 1.5 係數,因此帳戶的大小足以撐過停用點。成交差距觸發條件,會在市場或券商的委託路由出現變化、並反映到權益曲線之前就先抓到;平均每筆損益接近每筆成本的策略,最先需要這項觸發條件。故障觸發條件之所以存在,是因為一支漏掉某張平倉委託的程式,會持有一個規則本應已平倉的部位,而這種情況沒有任何回測能涵蓋。「檢討」的意思是:在規則仍然凍結的前提下,把第五節的檢驗重新跑一次,而這次的歷史資料已包含實單期間。若重跑通過,同一策略可以用相同門檻重新啟動;若未通過,實單期間就已發揮它的作用。
一個具體的下一步:拿出你打算交易之策略的計入成本回測報表,寫下同口數的最大回撤,乘以 1.5,再加上保證金與一年的成本,然後把總額與你的帳戶比較。這一個數字就能決定第一項檢查,若未通過,其餘五項就可以先擱置。
常見問題
用演算法交易,最少需要多少錢?
要足以支應你口數所需的保證金,外加至少 1.5 倍、計入成本之回測中最大回撤的緩衝,再加上一年的手續費與滑價。只有保證金,在平靜的一天也能維持開倉;緩衝才是撐過每個策略都會遇到之連續虧損的關鍵。只準備保證金,是實單嘗試在前幾個月就告終的最常見原因。
用演算法交易,需要懂程式設計嗎?
不需要。策略可以生成並匯出為原始碼,無須親手撰寫。但閱讀這一關不能跳過:上線前,你必須能用白話句子說出每一條進場與出場規則。一條你說不清楚的規則,在它表現怪異時你就無法判斷,也無從決定停用。
演算法交易能賺錢嗎?
一套規則是否划算,取決於計入成本後的三個數字:平均每筆損益與每筆成本的比較、最大回撤與資金的比較,以及規則在未經調校的資料上表現如何。回測只說明這些數字在過去價格上的表現,並非預測。一旦計入實際的手續費與滑價,多數規則都會在第一個數字上失敗,這就是成本檢查要排在部位大小之前的原因。
上線演算法交易前,應該檢查什麼?
依序六項:資金對上回測回撤、規則能用白話讀懂、回測計入手續費與滑價並以下一根 K 棒成交、樣本外與推進分析依事前寫下的門檻通過、最糟一天的部位大小與保證金,加上以交易筆數計算的模擬期間,以及寫下的停用規則。未通過一項的策略,要先修正或放棄,才能進入下一項。
上線前應該模擬交易多久?
以完成的交易筆數計算,而不是週數。約 30 筆交易是能說明平均成交差異的最小樣本;日內策略幾週就能累積到,日線策略可能要數年,因此慢速策略更要依賴推進分析的結果,並在最初幾筆交易時檢查成交品質。每筆交易都要記錄訊號價格、成交價格與延遲時間,而且在開始前就先定好筆數。
參考文獻
- Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
- Harvey, C. R., & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management, 42(1), 13–28.
- Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies (2nd ed.). John Wiley & Sons.

