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

程式交易是什麼?成本、流程與為什麼多數規則會虧損

程式交易是把每一次進出場都寫成明確的規則,交給電腦執行的交易方式。它的價值只有一件事:用很低的成本淘汰爛規則。在一項實測中,一條簡單的突破規則跑 17 個期貨市場,扣掉成本後只有 5 個市場是正的。

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

目錄
  1. 什麼是程式交易?
  2. 程式交易怎麼運作?
  3. 程式交易有哪些類型?
  4. 什麼是自動交易?
  5. 程式交易會賺錢嗎?
  6. 程式交易要花多少錢?
  7. 不寫程式也能做程式交易嗎?
  8. 交易機器人真的有用嗎?
  9. 程式交易比手動交易更好嗎?
  10. 常見問題
  11. 參考文獻

什麼是程式交易?

程式交易是把每一次進出場都寫成明確的規則,交給電腦執行的交易方式。它的價值只有一件事:用很低的成本淘汰爛規則。在一項實測中,一條簡單的突破規則跑 17 個期貨市場,扣掉成本後只有 5 個市場是正的,所以你測的東西,大部分都要有丟掉的準備。

Algo trading 和 algorithmic trading 是同一件事,只是一個名字比較短;台灣通常叫程式交易。三個名字講的都是同一種做法:規則寫好一次,之後每一根 K 棒都用同樣的方式套用,不靠當天的主觀看法。

交易規則就像一份食譜。同樣的食材、同樣的步驟,不管誰下廚,端出來都是同一道菜。「盤看起來很強就買」不是食譜,因為兩個人會有兩種解讀。「收盤價高於過去 20 根 K 棒的最高價,下一根 K 棒開盤買進」才是食譜,因為任何人或任何電腦在同一個時間點,都會做一樣的動作。

便宜的地方在於「賠」這件事。同一條規則,放在實單帳戶要賠真錢,放在回測裡只花電腦時間。回測是把規則跑過歷史價格的模擬,記錄它會做出的每一筆交易,連每筆的手續費和滑價都算進去。電腦出現之前,交易者要真的下單賠了錢,才知道一條規則不行;現在只要跑過數年的歷史 K 棒,就能換下一個想法。多數想法在這一步就被丟掉,這正是這個方法的重點:爛規則在碰到帳戶之前就被清掉了。

有兩個詞常被混在一起。程式交易是規則做決定;自動交易是電腦送單。「自動交易」那一節會拆開講;簡單說,規則才是重點,自動化只是拿掉延遲和猶豫。

這篇用期貨舉例,因為換月、交易時段和每口成本,最容易把資料和成本的問題看清楚。同樣的步驟也能用在股票和其他市場,只是資料細節不同。

程式交易怎麼運作?

每一條規則都走同樣的六個步驟,從一句話的想法,一路到小量實單和檢討,而且每一步都可能把想法打回起點。不管程式是你自己寫,還是軟體幫你寫,步驟都一樣。第一次接觸的話,可以先看程式交易新手指南走過完整流程,再回來看每一步背後的理由。

交易演算法的六個步驟:想法、明確規則、含成本回測、以未見過的資料檢驗、小量交易、檢討,並以虛線箭頭從檢討回到想法 從想法到實單交易 六個步驟,也能回頭 想法 明確規則 回測 檢驗 小量交易 檢討 每一步都可能退回。 所以:在動用真錢前,及早淘汰。
一條交易規則走過的流程。每一步都可能把想法打回起點。
  1. 用一句話寫下想法。例如:「盤整一段時間之後,突破區間的走勢通常會延續。」這句話要講清楚你預期什麼型態、為什麼。沒有理由的想法,等它失效時更難判斷。
  2. 把想法寫成明確的規則。定義進場、出場、停損、部位大小和交易時段。把所有要靠主觀判斷的字眼拿掉,例如「強勢」或「明顯」。兩個人看同一條規則,會在同一根 K 棒下一樣的單,這條規則才算明確。
  3. 含成本回測。先處理資料。K 棒是固定週期(例如 5 分鐘或一天)的一筆開高低收價格,通常還帶成交量。選好市場、K 棒週期和歷史長度。檢查換月怎麼接(換月是從快到期的期貨契約轉到下一個契約月份)、K 棒包含哪些交易時段,以及時區和交易時段對不對得上。回測資料品質:缺漏、壞價、時區與換月一文逐項講這些檢查。接著從第一次回測就把手續費、交易所費用和滑價放進去,所有委託都用下一根 K 棒的開盤價成交。規則在某根 K 棒收盤時才做決定,就不可能在同一個收盤價成交,因為收盤價要等這根 K 棒走完才知道。
  4. 檢驗。用建立規則時沒用過的資料測試,並測試每個參數的鄰近設定。推進分析(walk-forward analysis)的做法是:在一段歷史上調整規則,參數不動,直接拿到緊接著的下一段測試,再往前推、重複,這樣接起來的測試區間全部是沒看過的資料。推進分析與區間選擇一文有細節。
  5. 小量交易。規則要先寫成平台的語言。AlphaPrime(Valynox)可將策略原始碼匯出至 MultiCharts(PowerLanguage)、TradingView(Pine Script v6)、TradeStation(EasyLanguage)、NinjaTrader(NinjaScript)、MetaTrader 4(MQL4)與 MetaTrader 5(MQL5);各平台的細節請見支援的平台匯出清單。先用模擬帳戶(多數平台都有),或只做一口。
  6. 檢討。拿每一筆實單成交價和回測假設的價格比。如果實單成交一直比較差,就把回測的滑價調高,再跑一次。

淘汰最多想法的是第 4 步,因為這是規則第一次碰到沒有參與設計的價格。下面的範例就是常見的情況。

假設範例

一位交易者用八年的 60 分鐘期貨 K 棒測試一個突破想法。規則:收盤價高於前 20 根 K 棒的最高價,下一根 K 棒開盤買進;收盤價跌破前 10 根 K 棒的最低價,下一根 K 棒開盤出場;空方規則相反;交易一口。規則用前六年建立,結果是 180 筆交易,扣成本前平均每筆損益 90 美元。來回成本(手續費、交易所費用和滑價)25 美元,扣完平均每筆損益 65 美元。建立時沒用到的最後兩年,同樣的規則做出 60 筆交易,扣成本後平均每筆損益 20 美元。這個落差告訴交易者,前面的成績有一部分是對過去資料的擬合。只有當 20 美元仍明顯大於成本的不確定性時,這個想法才留下來。

假設的突破策略範例:扣除成本後,樣本內第 1 至 6 年的平均每筆損益為 65 美元,但未用於建立規則的樣本外第 7 至 8 年僅 20 美元 未見過的年度:真實優勢 扣除成本後平均每筆損益(假設) 樣本內 第 1–6 年 $65 樣本外 第 7–8 年 $20 未用於建立規則 優勢從 $65 降到 $20。 所以:要用未見過的年度來判斷。
假設範例:沒用過的年份,結果才算數,而且通常比較低。

這種落差不是方法出問題,是方法在發揮作用。建立規則的那幾年一定會讓規則看起來比較漂亮,因為參數就是看著這段資料挑出來的。沒用過的年份,才顯示拿掉這項優勢後還剩多少。只看第一個數字的交易者,交易的是被美化過的版本。

程式交易有哪些類型?

跑在幾分鐘到幾小時 K 棒上的趨勢追蹤、均值回歸和突破規則,是一般期貨交易者做得來的類型;價差交易、造市和執行演算法需要的速度或資金,散戶帳戶通常沒有。這些類型的差別在於想抓什麼,以及動作要多快。

下面的範例會用到兩個指標。移動平均是最近 N 根 K 棒的平均收盤價,每根 K 棒都重算,移動平均頁面有各種變化。RSI(相對強弱指標)是介於 0 到 100 的指標,顯示近期 K 棒價格上漲或下跌的強度;RSI 頁面有公式和常用的水準。

類型作法規則構想範例所需速度
趨勢追蹤價格上漲後買進,走勢持續就續抱。價格下跌後放空。價格在移動平均之上時抱多單。低:數分鐘、數小時或數日
均值回歸賭偏離平均太遠的價格會回到平均附近。RSI 很低時買進,回到中間值時出場。低到中
突破價格脫離近期區間時進場。收盤價高於過去 20 根 K 棒的最高價時買進。低到中
價差或統計套利兩個相關市場的價差異常擴大時進場。兩個契約月份的價差到極端時,買一個、賣另一個。中到高
造市同時掛買價和賣價,目標是賺中間的價差。買賣兩邊都維持報價,隨委託進來調整。很高:毫秒或更短
執行演算法把一筆大單拆成很多小單,降低對價格的衝擊。它們不決定方向。VWAP(成交量加權平均價)或 TWAP(時間加權平均價)委託。中
六種演算法家族依所需速度區分:趨勢追蹤、均值回歸與突破策略在數分鐘以上的 K 棒上運作,適合散戶帳戶;做市、價差交易與執行演算法則需要速度或大量資金 慢速規則適合散戶 依所需速度分的六種演算法家族 數分鐘以上 快速或大量 趨勢追蹤 均值回歸 突破 造市 價差交易 執行演算法 K 棒規則不需搶快。 所以:以數分鐘以上的 K 棒建構。
依所需速度排列的演算法類型。三種較慢的類型在一般平台就能跑;快的類型需要架在交易所附近的基礎設施。

速度是分界線。造市和高頻交易靠的是以毫秒幾分之一計算的連線,還有架在交易所旁邊的伺服器。散戶從家裡透過券商閘道連線,速度差很多,靠搶快的規則,這場比賽一定輸。高頻交易與散戶程式交易的比較一文說明這條線在哪裡,以及為什麼它對 K 棒規則不重要。

趨勢追蹤、均值回歸和突破策略只要用幾分鐘以上的 K 棒,就不需要那種速度。訊號在 60 分鐘 K 棒收盤時成形、下一根 K 棒開盤成交,委託是兩毫秒還是兩秒到,根本沒差。這正是個人期貨交易者有空間的地方,期貨程式交易策略指南裡的五種規則類型都屬於這種慢的。把趨勢追蹤、均值回歸或突破的想法寫成指標、參數範圍和進出場條件,它就成了一個搜尋空間,AlphaPrime 的策略生成可以在裡面產生可測試的規則變體,不必只靠一條手寫規則。

執行演算法則是另一回事。它們不決定要不要買,只決定別人已經決定要買的量怎麼買。只做一口或幾口的散戶期貨交易者很少用到,因為小額市價單對價格的影響小到不值得拆單。

什麼是自動交易?

自動交易是由電腦把委託送到券商,不用人按按鈕;程式交易則是由規則做決定,這是兩個獨立的開關。你可以只開其中一個,「自動交易」的混淆多半來自把兩者當成同一件事。

二乘二格線:規則或判斷決定,人或電腦下單,共四種組合:依規則手動下單、全自動演算法、主觀交易、判斷加自動停損停利單 誰決定,誰下單? 人工下單 電腦下單 規則 決定 判斷 決定 手動 日K可用 全自動 免手動點擊 主觀交易 純手動 輔助下單 自動停損停利
「誰做決定」和「誰下單」是兩個獨立的問題。程式交易看的是列,自動化看的是欄。

實務上四種組合都有:

  • 主觀判斷,人工下單:一般的主觀交易。
  • 規則決定,人工下單:交易者照書面系統操作,每一筆都手動下單。這算程式交易,但不是自動交易。日線規則做得到;5 分鐘 K 棒就不行了,人跟不上。
  • 主觀判斷,電腦下單:用自動化工具輔助的點擊下單,例如進場一成交就自動掛出停損和停利的括號單。決定還是人做的。
  • 規則決定,電腦下單:全自動的程式交易。平台讀每根新 K 棒、判斷規則,自己送單。

自動化改變的是執行,不是規則的好壞。兩項研究從相反的方向說明這件事。Hendershott、Jones 與 Menkveld(2011)研究紐約證券交易所的演算法委託流量,發現演算法交易越多,買賣價差越窄,大型股尤其明顯;電腦改善的是委託怎麼撮合,不是委託押的方向。美國商品期貨交易委員會(CFTC)與證券交易委員會(SEC)針對 2010 年 5 月 6 日的聯合報告,描述一筆 E-mini S&P 500 期貨的大額賣單交給自動執行演算法,設定為跟著成交量的一定比例賣出,不管價格和時間,而當時市場已經很緊繃。演算法完全照指令做。有問題的是指令,不是自動化。

對散戶來說,教訓很實際。自動化值得用,是因為它消除訊號和委託之間的延遲,而且連續第十筆虧損也不會猶豫。但它也多了幾件事要做:每個交易日確認平台部位和券商部位一致,知道怎麼手動把所有部位平掉,也知道資料斷線時平台會怎麼做。這些事不會讓虧損的規則變賺,也不會讓賺錢的規則變賠,只是讓實際執行和回測假設保持一致。

程式交易會賺錢嗎?

回測不能跟你承諾賺錢,也沒有人能,下面的實測說明了原因:一條突破規則搭配一組固定參數,17 個期貨市場有 12 個虧損、5 個賺錢,只有 1 個市場的獲利因子達到 1.3,所以老實的答案要看規則、市場和成本。獲利因子是所有獲利交易的總和除以所有虧損交易的總和;1.0 是損益兩平,低於 1.0 代表虧損超過獲利。

這條規則就是本文前面提到的簡單突破,外加移動平均出場:收盤價向上穿越前 20 根 K 棒的最高價時做多,收盤價向下穿越 50 根簡單移動平均時出場,60 分鐘 K 棒、一口、只做多,各市場用各自的手續費和滑價,回測期間 2018 年 9 月至 2026 年 10 月。

資料來源:AlphaPrime 代管回測(ap_backtest 連接器),執行日期 2026-10-31

市場淨損益獲利因子交易筆數
GC$230,1861.421678
NQ$137,1451.135709
SI$97,8641.115695
YM$47,1081.118705
ES$17,4011.030697
ZS−$27,8150.845517
CL−$28,3600.936725
6J−$33,1600.758627
6E−$36,9700.772667
NG−$50,6920.870692
6B−$51,9670.623703
ZC−$52,1440.537501
ZW−$56,4230.666533
RTY−$59,7800.849730
ZN−$80,2050.464668
HG−$83,3960.802718
ZB−$156,4900.508657

扣除成本後,17 個市場中有 5 個的結果為正;只有 1 個市場的獲利因子達到 1.3。

同一條規則、同一組參數套用在每個市場,期間 2018 年 9 月至 2026 年 10 月,每個市場一口。
同一條規則、同一組參數套用在每個市場,期間 2018 年 9 月至 2026 年 10 月,每個市場一口。 17 個期貨商品・60 分鐘・2018-09-02 至 2026-10-14・AlphaPrime 回測

看這張表要看獲利因子,不要看美元那一欄。每個市場的點值不同,黃金(GC)的一美元和美國公債(ZB)的一美元,背後的價格變動幅度不一樣;正負號和獲利因子可以跨市場比,美元總額不行。結果為正的五個市場是黃金(GC)、那斯達克 100(NQ)、白銀(SI)、道瓊(YM)和標普 500(ES)。只有 GC 的 1.421 超過 1.3。ES 的 1.030 非常接近損益兩平,滑價估高一點就會掉到零以下。虧損的十二個市場,包含清單裡每一檔債券、貨幣和穀物契約。

這項實測能說明的是:一條簡單、只有一組參數的規則不是到處通用;同一段程式在某個市場看起來不錯,到多數其他市場就虧損;成本決定了接近損益兩平的那一個,也就是 ES;而每個市場有 501 到 730 筆交易,差異不是少數幾筆造成的。它不能說明的部分更重要。這是對整段期間跑一次的回測,所以連那五個賺錢的市場都還沒通過任何樣本外檢驗,參數也還沒和鄰近設定比過。它只做多,所以對空方什麼都沒說。它不是說那十二個虧損市場不能交易,而是說這條規則、這組參數,在那些市場做不起來。它對這 17 個市場明年會怎樣,也什麼都沒說。

所以跑每一條規則,都是為了淘汰它,不是為了證明它對。只在一個市場測一條規則、看到賺錢就上線的交易者,學到的很少。把同一條規則跑過很多市場,只留扣掉成本後還活著的,再用樣本外年份檢驗,並依最大回撤決定部位,這樣的交易者就算最後答案是「不是這條規則」,也學到很多。決定散戶帳戶結果的完整數字,從平均每筆損益到帳戶規模,都在程式交易能不能賺錢一文逐步算過。

程式交易要花多少錢?

成本包括交易平台、歷史資料、持續開機的電腦或伺服器、每次進出場的券商手續費和交易所費用,以及滑價。其中每筆交易的成本比固定成本更有決定性,因為每一筆都要扣。固定成本不管你有沒有交易,每個月都要付;每筆成本則隨規則的交易次數增加。

成本何時支付決定金額的因素
交易平台每月,或一次買斷授權平台本身;部分券商開戶就附
歷史 K 棒資料每月,或每個市場一次市場、K 棒週期與歷史長度
電腦或伺服器每月在家裡還是資料中心跑,以及每天要開機幾小時
手續費與交易所費用每次進場與每次出場,按口計算券商、交易所與契約;微型契約的費用和點值都較小
滑價每次進場與每次出場市場流動性、委託類型,以及規則交易的時段
固定成本(平台、資料、伺服器)每月支付,而每筆成本(手續費、規費、滑價)每筆交易都要支付,因此會隨交易次數重複計算 每筆成本會倍增 每月固定 vs 每筆交易都要付 每月 每筆 × 交易筆數 平台 資料 伺服器 手續費 規費 滑價 每筆成本隨交易筆數增加。 因此:第一次回測前就要納入成本。
固定成本每個月付一次。每筆成本在每次進出場時付,所以會隨交易次數增加。

固定成本看得到,因為會收到帳單。每筆成本容易漏掉,因為它藏在每一筆成交裡。滑價是回測假設的價格和實際成交價的差距;市價單和停損單通常比觸發價成交得更差,開盤和消息面前後尤其明顯。在前面的假設範例中,25 美元的來回成本,在行情還沒開始對交易者不利之前,就從 90 美元的毛平均每筆損益裡拿走 25 美元。交易次數是三倍的規則,這 25 美元也要付三倍,毛利要賺到三倍才能打平。

這就是為什麼交易次數多、每筆賺得少的策略,一加成本就最先出局:每筆獲利最薄,每筆成本卻一樣。最簡單的檢驗,是比較毛平均每筆損益和來回成本;回測中的交易成本與平均每筆損益檢驗一文逐步示範這個比較,並說明多少安全邊際才夠。

實務上有三點:

  1. 從券商費率表查每筆成本,以每口、單邊計算,再加上交易所和結算費用。費率會變,要看最新的費率表,不要看舊對帳單。
  2. 有實單成交紀錄,就用它估滑價。沒有實單紀錄的話,流動性好的期貨用市價單或停損單,先抓單邊至少一跳;冷門契約或波動大的時段要抓更多。
  3. 第一次回測前就把兩者放進去。不計成本就排序規則,排在前面的會是加了成本最先被淘汰的那些,花在這些入選者身上的時間就白費了。

成本要在第一次測試前設好,不是事後才加。每筆成本從每一筆交易裡扣,決定哪些規則活下來的力道,遠大於每月的平台費。

有一項成本常被忘記:檢討的時間。自動化規則還是要每天看部位、委託和成交,每週拿實單結果和回測比。這不是金錢成本,但沒時間的交易者,應該挑 K 棒較慢、交易次數較少的規則。

不寫程式也能做程式交易嗎?

第一項技能不是寫程式,而是把規則寫到電腦不會誤讀;Python、平台語言、免寫程式的生成軟體,選的是由誰來寫程式,不是規則會不會成立。三條路的終點都一樣:一條用平台看得懂的語言寫成的規則,在下一根 K 棒成交,每筆交易都付成本。

三條進入交易平台的路徑:Python 與平台程式由你自己撰寫,測試變體較慢;無程式碼工具會自動產生程式,測試較快;三者在實單交易前都需要相同的檢驗 同樣的檢驗,任一路徑 三條進入平台的路徑 路徑 撰寫程式 速度 Python 你 慢 平台語言 你 慢 免寫程式工具 軟體 快 同樣的檢驗,無論誰來寫。 所以:審查程式,核對成本。
把規則放進平台的三種方式。寫程式的人不同,交易前要做的檢查都一樣。
  1. 自己用 Python。回測引擎、資料載入器和規則都自己寫,實單交易還要用平台語言再寫一次。一切都由你掌控,也都要你自己檢查,從 K 棒順序到成交價。用 Python 做程式交易一文列出要安裝什麼、難在哪裡,難處通常是成本模型和換月處理,不是規則本身。
  2. 自己用平台語言。用平台自己的語言把規則寫一次,例如 MultiCharts 的 PowerLanguage 或 TradingView 的 Pine Script,回測和交易都由平台負責。引擎是現成的;規則還是要自己寫、自己除錯。
  3. 免寫程式的生成軟體加上匯出。用指標、參數範圍和條件描述規則,軟體連同成本測試許多變體,再替你留下的版本產生平台程式碼。免寫程式的程式交易頁面展示從第一次搜尋到匯出檔案的過程;AlphaPrime 可以用六個平台的語言寫出選定的策略,同一條規則就能載入你已經在用的平台。

三條路都不變的,是交易前要檢查的事:

  • 你讀到的規則,就是程式跑的規則。打開匯出或自己寫的程式碼,用手追一筆交易。規則寫「下一根 K 棒開盤」,程式就必須在下一根 K 棒開盤成交。
  • 同一份程式在平台上回測,交易明細要相近。換月、交易時段或成本設定有差,會在這裡以少了或多了交易的形式跑出來。
  • 平台裡的成本要和研究時一致。研究時用來回 25 美元通過的規則,到平台上用 0 美元跑,實單看起來會比實際好。

三條路真正的差別,是同一個晚上能測多少變體。手寫並跑一條規則要花一個晚上。像上面實測那樣把同一條規則跑 17 個市場,或跑數百組鄰近參數,是生成軟體在你睡覺時就能做完的事。這種速度很有用,也很危險:測的變體越多,最好的那一個越可能只是運氣最好。下一節就是講怎麼分辨。

交易機器人真的有用嗎?

機器人只會忠實照規則做,所以問題在規則是可用還是僥倖,要靠樣本外資料、鄰近參數、加倍滑價,以及找到這條規則前試過多少變體來回答。交易機器人就是名字比較親切的自動化程式;本文談規則的內容全部適用,「機器人」這個詞本身不會帶來任何優勢。

過度擬合是規則貼合了過去價格裡的隨機雜訊,而不是會重複出現的規律。過度擬合的規則在建立它的資料上看起來非常漂亮,換到其他資料就普通,甚至更差。樣本內資料是用來建立和調整規則的那段歷史;樣本外資料是保留下來、只用一次做檢驗的那段。下面四項檢查,各抓一種規則靠僥倖的情況。

  1. 只用一次的樣本外資料。如果樣本外年份的平均每筆損益,還保有樣本內平均每筆損益的合理比例,像前面範例從 65 美元到 20 美元,規則就算過了第一關。如果掉到零或以下,樣本內的成績大多是擬合出來的。
  2. 鄰近參數。20 根 K 棒的突破有效,但 18 和 22 根都失效,結果就是賭在一個幸運的數字上。可用的規則站在高原上,周圍的參數結果都差不多。
  3. 加倍滑價。用兩倍滑價重跑一次回測。規則因此轉負,代表它靠的是便宜的成交,而實際市場未必給得起。
  4. 試過的變體數量。一百個變體裡最好的那個,光靠機率就該看起來不錯。Harvey 與 Liu(2015)主張,回測結果應該依找到它之前試過多少策略來打折;搜尋得越多,勝出者要跨的門檻就越高。
結果對突破長度的示意圖:可用的規則在 16 至 24 根 K 棒之間結果相近,僥倖的規則只在 20 根 K 棒時達到高點,其鄰近值接近零 高原還是尖峰? 示意圖:依突破長度的結果 可用 僥倖 16 20 24 16 20 24 僥倖的規則只靠一個數字。 所以:檢驗它周圍的參數。
可用的規則站在鄰近參數的高原上。僥倖的規則是某一個數值上的尖峰。

軟體測的變體越多,第四項檢查越重要。AlphaPrime 的公開基準測試在一張 RTX 3090 上,約 18 小時跑完約 12 億次策略評估,每次評估都含手續費和滑價(測量日期 2026-10-05)。實際速度取決於顯示卡、資料長度和研究設定。這麼大的搜尋一定會跑出一個看起來很驚人的頂尖結果,交易者要把它當成檢驗的起點,不是終點。AlphaPrime 的策略檢驗會對每個候選策略跑基礎、標準或完整檢驗,搭配推進分析和自訂門檻;候選策略只要有一項沒過,後面的檢查就停止,所以不管搜尋十個還是一千萬個變體,標準都一樣。

通過全部四項檢查的規則,也只換到一次小量實單,僅此而已。三個習慣能讓這次實單更有參考價值:

  • 依測試中的最大回撤決定部位,然後假設實單的回撤會更大。回撤是帳戶權益從高點跌到之後最低點的幅度。部位大小計算器把帳戶風險和停損距離換算成口數,讓最初的實單靠設計保持小量,不是靠運氣。
  • 事先寫下回撤多大或連虧幾個月就要停手檢討。實單前寫下的數字是規則;連虧時才決定的數字是情緒。
  • 每週比對實單成交和回測成交。機器人好不好,就看兩者對得有多準。

程式交易比手動交易更好嗎?

程式交易贏在一致性、測試和紀錄,在預測市場上並沒有比較強。把電腦看成照規則做事的執行者,而不是優勢的來源,常見的迷思就站不住腳。下表列出兩種做法各自的優勢,以及兩者面對同一個市場的地方。

程式交易手動交易
執行的一致性每個訊號都照同樣方式做,連續第十筆虧損也一樣取決於交易者當天的狀態
用歷史資料測試的能力任何規則都能在動用真錢前,先跑過數年的 K 棒主觀判斷無法回測,只能從現在開始往後記錄
每筆交易的紀錄自動記錄:每一筆成交的時間、價格、理由和成本只有交易者寫交易日誌才有
市場風險不變:規則會賠多少,市場說了算不變
每天盯盤檢查的需求還是要:部位、委託、成交、資料來源、換月本來就要
演算法交易與手動交易比較:演算法在一致性、回測與交易紀錄上較具優勢,市場風險與每日監控需求兩者相同 流程較佳,風險相同 演算法 手動 一致性 回測 交易紀錄 市場風險 監控 相同 相同 演算法測試較佳;風險相等。 因此:仍需每日檢查。
和手動交易相比,電腦執行規則多了什麼,又有什麼不會改變。

有三個迷思,來自只讀前三列、忘了後兩列:

  • 「演算法能消除風險。」它消除的是猶豫和不一致。虧損和回撤照樣會依規則發生,上面的實測就是以完全一致的執行,在 17 個市場裡虧了 12 個。
  • 「指標越多,演算法越聰明。」每多一條規則或一個參數,就多一分擬合雜訊的空間,高原檢查也更難做。參數越少,越好檢驗,通過了也越值得相信。
  • 「開始跑之後就不用管。」連線會斷、契約會換月、市場會變。自動化省掉的是按按鈕,不是檢查。

程式交易給散戶的,是手動交易給不了的三樣東西。第一,每筆交易都有明確理由,而且是交易前就寫好的。第二,有一段已知的回撤和連續虧損紀錄,是用含成本的歷史資料量出來的,實單虧了一週可以拿來比,不用憑感覺。第三,冷靜時就訂好的停手條件。手動交易者只能靠紀律做到這三點;程式交易則是設計上就有。

先把便宜的測試用起來。拿一條你正在做或相信的規則,寫到兩個人會在同一根 K 棒下一樣的單,再用每個市場各自的手續費和滑價,跑過你手上有資料的每個市場。扣掉成本後不是正的市場就淘汰,只把留下來的送去做樣本外檢驗。如果一個都沒留下,這條規則花掉的是電腦時間,不是你的錢。

常見問題

程式交易和自動交易是同一件事嗎?

不完全一樣。程式交易是明確的規則決定交易;自動交易是電腦送出委託。多數程式交易者會把下單自動化,但在日線上你也可以照規則手動下單;自動化系統好不好,取決於它跑的規則。

新手不寫程式也能做程式交易嗎?

可以,因為第一項技能是把規則寫到電腦不會誤讀,不是寫程式。軟體可以把規則生成平台程式碼,並含成本測試許多變體。交易前,你還是要看過匯出的程式碼、用手追一筆交易,並確認平台上的成本和研究時一致。

回測需要多少歷史資料?

要足以產生很多筆交易,並涵蓋不同行情,例如趨勢、盤整、平靜和劇烈波動的時期。許多交易者的目標是數年資料、一百筆以上的交易。留一段歷史做樣本外測試,而且只用一次。

為什麼同一條規則在某個期貨市場賺錢,在另一個市場卻虧損?

每個市場的趨勢特性、流動性、跳動點和成本都不同,固定參數(例如 20 根 K 棒的突破)只適合其中一部分。在本文的實測中,一條規則在 17 個市場中有 5 個扣除成本後為正。這告訴你要逐一市場測試規則,只留下通過成本和樣本外檢驗的市場。

程式交易對股票也適用嗎?

同樣的流程也適用於股票、期貨與其他市場。細節會不同:股票的資料中包含除權息等公司行為,期貨則有換月與每口費用。在第一次測試前,請先為你實際交易的市場設定資料與成本。

參考文獻

  • Hendershott, T., Jones, C. M., & Menkveld, A. J. (2011). Does Algorithmic Trading Improve Liquidity? The Journal of Finance, 66(1), 1–33.
  • Staffs of the CFTC and SEC (2010). Findings Regarding the Market Events of May 6, 2010. Report to the Joint Advisory Committee on Emerging Regulatory Issues, September 30, 2010.
  • Harvey, C. R., & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management, 42(1), 13–28.