VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 策略生成

如何開發交易策略:從假設到檢驗的 6 個步驟

依固定順序開發交易策略:寫出假設、轉成電腦能執行的規則、累積足夠的已完成交易、計入成本回測、用沒看過的資料檢驗,再依看結果之前寫下的門檻判定。失敗的想法回到第一步,而不是微調。

作者 · 發佈 · 更新於 · 編輯原則

目錄
  1. 如何開發一個可以客觀檢驗的交易策略?
  2. 如何把市場想法變成精確規則?
  3. 開發策略需要多少資料?
  4. 如何用實際成本回測?
  5. 如何做樣本外驗證並避免過度最佳化?
  6. 如何判斷策略是否可用?
  7. 常見問題
  8. 參考文獻

如何開發一個可以客觀檢驗的交易策略?

開發可檢驗的交易策略,依固定順序走六個步驟。寫出假設,轉成精確規則,累積足夠的已完成交易,計入實際成本回測,用搜尋從未見過的資料檢驗固定下來的規則,再依看結果之前寫好的門檻判定通過或失敗。

假設是一句話,說明市場做什麼、為什麼,例如「強勢收盤後,隔天延續的情形多於反轉」。順序之所以重要,是因為每一步都在保護下一步。跳步是多數交易人得到無法信任的結果的原因。程式交易是什麼、多數規則為何虧損,見程式交易的定義與成本;從資料到實單交易的完整研究流程,見一步步建立量化交易流程。

六個策略步驟朝同一方向進行:假設、規則、交易、成本、樣本外檢驗與判定。任何一關失敗,就回到假設,當作新想法,而不是修補。 失敗?回到第一步 六步驟,單一方向 假設 規則 交易 成本 樣本外檢驗 判定 失敗→新想法,不是微調 檢驗失敗,就換新想法。 所以:別去修補失敗的那一步。
六個步驟只朝一個方向走。任何一關失敗,都讓想法回到起點,當作新的假設,而不是回頭小改上一步。

如何把市場想法變成精確規則?

規則要能檢驗,必須讓電腦不經人為判斷就能執行,所以每個進場、出場與設定,都要變成數字,或在每根 K 棒上不是真就是假的條件。「買強勢」是想法。「收盤高於 20 根 K 棒前的收盤時,下一根開盤買進」才是規則,而且它用的正是最簡單形式的動量指標 Momentum(MTM)。出場也照同樣方式寫,而且要寫想法出錯時的出場,不只寫奏效時的出場。

  1. 把進場寫成兩個數字的比較,這兩個數字都由 K 棒資料提供。
  2. 出場也寫成比較,並決定它在同一根 K 棒觸發,還是下一根。
  3. 每個設定都給一個你可接受的範圍,不要只給單一值。回看 15 至 30 根 K 棒是假設;剛好 23 根 K 棒,則是等著發生的巧合。
三個含糊的想法改寫成精確規則:買強勢變成收盤高於 20 根 K 棒前的收盤,弱勢出場變成收盤低於 20 根 K 棒前的收盤,避開平靜的日子變成區間低於 1% 就跳過 每個想法都化成數字 程式在每根 K 棒上檢查 想法 精確規則 買強勢 弱勢出場 避開平靜日 收盤 > 20 根 K 棒前 收盤 < 20 根 K 棒前 區間 < 1% 則跳過 規則不需要人為判斷。 所以:進出場都寫成數字。
左邊每個含糊的說法,右邊都有一個精確的對應,程式可在每根 K 棒上評估。

開發策略需要多少資料?

足夠的資料用已完成的交易筆數衡量,而且要跨越不只一種市場環境,不是用年數衡量。六年的日 K 棒,對每隔幾個月交易一次的規則約有 30 筆交易,對每週交易數次的規則則有數百筆。前一種樣本是提示;後一種才能判斷。原因在於:由 30 筆交易算出的平均,只要其中兩三筆改變就會大幅移動,而要讓這個平均穩定兩倍,需要四倍的交易筆數。

年份要和筆數一起檢查。若所有交易都來自一段長期上漲,一條大部分時間做多的規則會因為錯誤的原因通過。在信任任何結果前,先確認歷史中有趨勢段、盤整段和急跌段。

同樣六年的日 K 棒畫兩次:每隔幾個月交易一次的規則約有 30 筆交易,只是提示;每週交易數次的規則有數百筆交易,足以判斷平均每筆損益 看筆數,不看年數 同樣六年,兩條範例規則 每隔幾個月 ≈30:提示 每週數次 300+:判斷 同樣六年日 K 棒 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% 的在場時間,表示結果有一部分來自市場,不是規則。只有圖中樣本外分界之後的那一段,能說明占多少。

沿著權益曲線與回撤區帶,看過樣本外分界。要判斷的是分界線之後的斜率與回撤深度;分界線之前的部分,曾用來挑選候選策略。
沿著權益曲線與回撤區帶,看過樣本外分界。要判斷的是分界線之後的斜率與回撤深度;分界線之前的部分,曾用來挑選候選策略。 NQ · 日 K 棒 · 2019-01-02 至 2025-06-30 · CPU 引擎回測

如何判斷策略是否可用?

策略可用,是指它扣成本後的平均每筆損益、相對帳戶的回撤,以及樣本外表現,各自都通過你在檢驗前寫下的門檻;其中任何一項不過,就不可用。Harvey 和 Liu(2015)從研究角度提出同一點:結果必須依背後的檢驗次數打折,而門檻先於檢驗存在時,這件事最容易做。在上面 AlphaPrime 的測試中,回撤逾淨利的三分之一,小帳戶的交易人在看到曲線前就會把它寫成失敗。AlphaPrime 的策略檢驗保存的正是這種事先寫好的門檻:門檻在搜尋執行前就輸入,沒通過早期檢查的候選策略,不會走到後面的檢查。

檢查項目可用不可用
扣成本後平均每筆損益與來回成本相比成本的數倍接近或低於成本
最大回撤與帳戶規模相比遠低於你能承受的緩衝接近帳戶規模
樣本外占樣本內平均每筆損益的比例高於你寫下的下滑上限正負號反轉
計入的交易筆數數百筆低於約 30 筆
獲利在各季的分布多數季度為正結果全靠一個季度
檢驗前寫下的五項檢查表:優勢與成本、回撤、樣本外、交易筆數與季度,每項都有可用與不可用的樣子;有一列沒過,策略就不可用 先寫下門檻 有一列沒過就不可用 檢查項目 可用 不可用 優勢對成本 回撤 樣本外 交易筆數 季度 數倍成本 遠在其內 高於上限 數百筆 多數為正 近於成本 近於帳戶 正負反轉 低於 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.