如何開發交易策略:從假設到檢驗的 6 個步驟
依固定順序開發交易策略:寫出假設、轉成電腦能執行的規則、累積足夠的已完成交易、計入成本回測、用沒看過的資料檢驗,再依看結果之前寫下的門檻判定。失敗的想法回到第一步,而不是微調。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
如何開發一個可以客觀檢驗的交易策略?
開發可檢驗的交易策略,依固定順序走六個步驟。寫出假設,轉成精確規則,累積足夠的已完成交易,計入實際成本回測,用搜尋從未見過的資料檢驗固定下來的規則,再依看結果之前寫好的門檻判定通過或失敗。
假設是一句話,說明市場做什麼、為什麼,例如「強勢收盤後,隔天延續的情形多於反轉」。順序之所以重要,是因為每一步都在保護下一步。跳步是多數交易人得到無法信任的結果的原因。程式交易是什麼、多數規則為何虧損,見程式交易的定義與成本;從資料到實單交易的完整研究流程,見一步步建立量化交易流程。
如何把市場想法變成精確規則?
規則要能檢驗,必須讓電腦不經人為判斷就能執行,所以每個進場、出場與設定,都要變成數字,或在每根 K 棒上不是真就是假的條件。「買強勢」是想法。「收盤高於 20 根 K 棒前的收盤時,下一根開盤買進」才是規則,而且它用的正是最簡單形式的動量指標 Momentum(MTM)。出場也照同樣方式寫,而且要寫想法出錯時的出場,不只寫奏效時的出場。
- 把進場寫成兩個數字的比較,這兩個數字都由 K 棒資料提供。
- 出場也寫成比較,並決定它在同一根 K 棒觸發,還是下一根。
- 每個設定都給一個你可接受的範圍,不要只給單一值。回看 15 至 30 根 K 棒是假設;剛好 23 根 K 棒,則是等著發生的巧合。
開發策略需要多少資料?
足夠的資料用已完成的交易筆數衡量,而且要跨越不只一種市場環境,不是用年數衡量。六年的日 K 棒,對每隔幾個月交易一次的規則約有 30 筆交易,對每週交易數次的規則則有數百筆。前一種樣本是提示;後一種才能判斷。原因在於:由 30 筆交易算出的平均,只要其中兩三筆改變就會大幅移動,而要讓這個平均穩定兩倍,需要四倍的交易筆數。
年份要和筆數一起檢查。若所有交易都來自一段長期上漲,一條大部分時間做多的規則會因為錯誤的原因通過。在信任任何結果前,先確認歷史中有趨勢段、盤整段和急跌段。
如何用實際成本回測?
手續費、滑價與下一根 K 棒成交,從第一次回測就要放進去,因為交易頻繁的規則在扣成本前最好看,扣成本後最難看。滑價是回測假設的價格與你實際會拿到的價格之間的差距。下一根 K 棒成交的意思是,在一根 K 棒收盤時做的決定,在下一根 K 棒成交,因為已經出現的價格無法再交易。要看的數字是扣成本後的平均每筆損益,與一次進場加一次出場的來回成本相比;免費的勝率計算機可由勝率、平均獲利與平均虧損算出這個數字。
假設性範例
一條規則的未扣成本平均每筆損益為 $14。手續費每個來回 $4,滑價每邊一個跳動點、合計 $6,所以來回成本是 $10,扣成本後的平均每筆損益是 $4。滑價加倍,扣成本後的平均每筆損益就變成 −$2。這條規則依賴便宜的成交,所以退回假設步驟。
如何做樣本外驗證並避免過度最佳化?
在許多候選策略中選出的最佳結果會因選擇而被高估,所以要把規則固定下來,拿搜尋從未見過的資料來跑,並依事先寫好的下滑上限來判斷。過度最佳化是把規則調得太貼近某一段歷史,以致它描述的是那一段的雜訊,而不是可重複的規律。Bailey、Borwein、López de Prado 與 Zhu(2014)指出,你嘗試的變體越多,勝出者的回測就越高估後續表現。歷史該怎麼切、樣本外要多少才夠,見樣本內與樣本外:資料怎麼切分。
下方方塊展示選擇在實務上的樣子。AlphaPrime(Valynox)的這次測試用 NQ 日 K 棒,區間 2019-01-02 至 2025-06-30,多空皆做,一口,每筆交易計入手續費與滑價。它只用一條 Momentum 規則作為唯一的進場與出場,是替代你所測想法的代用品,不是本文的主題。結果是搜尋從大約一千個嘗試中唯一留下的候選策略,依報酬相對回撤的比例挑出。事後才挑出留下的那一個,會讓它的表現顯得比實際好看:這是許多嘗試中最佳者的樣子,不是這條規則賺到的,也不是讀者可以期待的。
來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。NQ 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $10。
| 項目 | 結果 |
|---|---|
| 淨利(已平倉) | $249,575 |
| 最大回撤 | $93,215 |
| 交易筆數 | 60 |
| 勝率 | 60% |
| 獲利因子 | 1.828 |
| 平均每筆 | $4,159.58 |
| 在場時間 | 92.48% |
方塊中有兩行,是第三步與第五步在意的。六十筆交易是單薄的樣本,所以只要幾筆交易改變,平均每筆損益就可能大幅變動。而在一段多半上漲的期間,對指數期貨有 92.48% 的在場時間,表示結果有一部分來自市場,不是規則。只有圖中樣本外分界之後的那一段,能說明占多少。

如何判斷策略是否可用?
策略可用,是指它扣成本後的平均每筆損益、相對帳戶的回撤,以及樣本外表現,各自都通過你在檢驗前寫下的門檻;其中任何一項不過,就不可用。Harvey 和 Liu(2015)從研究角度提出同一點:結果必須依背後的檢驗次數打折,而門檻先於檢驗存在時,這件事最容易做。在上面 AlphaPrime 的測試中,回撤逾淨利的三分之一,小帳戶的交易人在看到曲線前就會把它寫成失敗。AlphaPrime 的策略檢驗保存的正是這種事先寫好的門檻:門檻在搜尋執行前就輸入,沒通過早期檢查的候選策略,不會走到後面的檢查。
| 檢查項目 | 可用 | 不可用 |
|---|---|---|
| 扣成本後平均每筆損益與來回成本相比 | 成本的數倍 | 接近或低於成本 |
| 最大回撤與帳戶規模相比 | 遠低於你能承受的緩衝 | 接近帳戶規模 |
| 樣本外占樣本內平均每筆損益的比例 | 高於你寫下的下滑上限 | 正負號反轉 |
| 計入的交易筆數 | 數百筆 | 低於約 30 筆 |
| 獲利在各季的分布 | 多數季度為正 | 結果全靠一個季度 |
策略通過這張表之後的檢查,包括它在不同市況下的表現,見演算法交易策略持續有效的五項檢驗。若你正在挑選執行這套流程的軟體,成本輸入與樣本外支援等重要設定,列在演算法交易軟體真正重要的功能。下一步:挑一個你憑感覺在做的想法,把它的假設與五項門檻寫在一頁上,之後才打開回測軟體。
常見問題
如何從零開始開發交易策略?
先寫一句話,說明市場做什麼、為什麼。把它轉成電腦可以在每根 K 棒上檢查的進場與出場條件,跨不同市況累積足夠的已完成交易,並從第一次回測就計入手續費、滑價與下一根 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.
- Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2017). The Probability of Backtest Overfitting. Journal of Computational Finance, 20(4), 39–69.
- Harvey, C. R., & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management, 42(1), 13–28.

