什麼是量化交易?定義、工作流程與第一個策略
量化交易是依據寫下來的規則做交易決策,規則經過歷史資料測試,只有在測試支持時才保留。這個方法是一套工作流程(假設、資料、回測、檢驗、實單執行),散戶只要有乾淨的資料、回測軟體、檢驗方法和交易平台,就能獨自照著做。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
什麼是量化交易?
量化交易是依據寫下來的規則做交易決策,規則經過歷史資料測試,只有在測試支持時才保留。交易什麼由資料決定,而不是由交易者當天的感覺決定。它是一種工作方式,不是某一種策略:假設、資料、回測、檢驗,然後實單執行。
中文的「量化交易」指的就是這個意思:把交易「量化」,每個決策都可以計算、可以檢查。量化交易者看待交易想法,就像科學家看待一個命題。把想法寫成可以被證明是錯的形式,用資料測試,資料不支持就放棄。順勢規則、均值回歸規則和突破規則都可以是量化的,讓它們成為量化的是測試。
實務上,量化交易者不會問「我相信這個型態嗎?」,而是問「這個型態在過去十年出現了幾次、之後發生了什麼、交易它要付出多少成本?」一個人、一台電腦就能回答這個問題,步驟如下。
量化交易與程式交易、主觀交易有什麼不同?
三者的差別在於誰做決定、以什麼為依據:主觀交易靠判斷,程式交易把任何規則的執行自動化,量化交易則要求規則本身是經由量測選出來的。實務上三者會重疊,但回答的是不同的問題。
主觀交易是由人讀盤,憑經驗與判斷決定每一筆交易。程式交易(algorithmic trading)是由電腦程式依照規則下單,不論規則來自哪裡。交易者可以為一條從未測試過的規則寫程式,那是程式交易,但不是量化交易。反過來也成立:交易者可以用資料仔細研究一條規則,然後手動下單,那是量化研究加手動執行。
| 主觀交易 | 程式交易 | 量化交易 | |
|---|---|---|---|
| 誰選擇規則 | 交易者,逐筆決定 | 交易者,一次決定,來源不限 | 歷史資料上的測試 |
| 規則的依據 | 經驗與情境 | 作者當時的信念 | 扣除成本後的量測結果 |
| 誰下單 | 交易者 | 程式 | 通常是程式 |
| 常見失敗 | 決策隨心情改變 | 未經測試的規則跑得快,虧得也快 | 規則只擬合了過去,無法重現 |
多數散戶量化交易者最後落在最後一欄,由程式下單,因為經過十年 K 棒測試的規則,由機器來執行最能確保完全照做。本文談的是研究面:最後一欄的規則是怎麼選出來的。
量化工作流程從想法到實單交易是什麼樣子?
每個量化流程都依固定順序走同樣五步:形成假設、準備資料、含成本回測、用測試沒用過的資料檢驗,然後執行並監控。順序很重要,因為檢驗失敗會讓工作回到假設,而跳過這個回頭的動作,正是多數散戶嘗試出錯的地方。
- 假設。假設是一句白話,說明你預期會發生什麼、為什麼,寫成資料可以證明它錯的形式。
- 資料。你要交易的那個市場、解析度和交易時段的歷史 K 棒,不缺交易時段、使用單一時區,並妥善處理合約轉倉。
- 回測。回測是把規則在歷史 K 棒上跑一遍,回報規則會做的每一筆交易。回測包含手續費、滑價(規則假設的價格與真實委託成交價格之間的差距)以及下一根 K 棒執行,也就是委託在訊號 K 棒的下一根成交,絕不在訊號 K 棒自己的收盤成交。
- 檢驗。檢驗是在搜尋從未見過的資料上測試規則,做法是保留較晚的一段期間,或使用推進分析,後者在整段歷史上重複「調整後再測試」的循環。
- 執行與監控。完全依照測試過的規則交易,並把實單的交易筆數、成交與回撤與回測比較。
決定這個流程是否有效的關鍵,是檢驗失敗時你怎麼做。
散戶該從量化交易者的一天學到什麼?
最值得認真學的習慣是書面紀錄:每個假設在測試前寫下,每個結果在測試後寫下,包括你放棄的變體。量化機構如何把一天的工作分給研究員、資料工程師、風控和交易員,以及其中哪些角色在家裡可以由軟體和檢查表取代,請見量化交易機構做什麼、散戶可以學什麼。
手動測試變體,意味著一次只做一次回測,而你試過多少種很容易忘記;在跑下一個之前,先把每個變體和它的結果寫下來。
這份紀錄讓你能回答最後一節的問題:這個之前我試了多少種才有一個有效?十個變體和一萬個變體是不同的情況,只有紀錄能告訴你自己屬於哪一種。
散戶可以建立並測試什麼樣的第一個策略?
好的第一個策略有一個清楚的假設、兩三個參數、明確的交易時段和一個停損,例如指數期貨上的時段區間突破。簡單的規則容易誠實地測試,它的失敗比複雜規則的成功更有啟發。
一句話的假設:「當指數期貨突破早盤區間時,傾向朝該方向持續到交易時段收盤。」這句話可以變成由四個部分組成的規則:
- 區間。記錄你交易的交易時段前 N 分鐘的最高價和最低價。N 是第一個參數;15、30 和 60 分鐘是常見的起始值。
- 進場。區間期間結束後,如果有一根 K 棒收在區間高點之上,就在下一根 K 棒開盤買進。如果有一根 K 棒收在區間低點之下,就在下一根 K 棒開盤放空。每天最多做一次多單進場和一次空單進場;最大進場次數是第二個參數。
- 停損。停損放在區間的另一側。第三個選用參數是最小區間大小,這樣停損只有幾個跳動點遠的極窄區間就會被略過。
- 時間出場。在交易時段結束時平掉所有部位。沒有隔夜曝險,所以測試不受週末跳空或轉倉日影響。
假設性範例
一檔指數期貨,每點價值為每口 $50(虛構數值)。交易時段前 30 分鐘形成高點 5,020、低點 5,000,區間 20 點。一根 K 棒收在 5,022,所以規則在下一根 K 棒開盤 5,023 買進。停損在 5,000,所以風險是 23 點,也就是每口 $1,150(未計成本)。手續費加上雙邊各一個跳動點的滑價,合計每一買一賣(來回)1.5 點。因此每筆交易一開始就落後 1.5 點,整個測試中平均每筆損益必須明顯大於 1.5 點,這條規則在扣除成本後才有價值。這一天交易時段收在 5,035,時間出場在那裡賣出:毛利 12 點,扣除成本後 10.5 點。在價格回到區間內的那天,停損會虧 23 點再加上成本。
為什麼選這條規則,而不是均線交叉或 RSI 水準?因為它的進場、停損和出場都由當天自己的價格決定,所以要調的數字很少;也因為時間出場排除了一整類資料問題。測試完成後,交易明細會直接告訴你假設在哪些天成立、哪些天不成立。詳細的規則與設定請見開盤區間突破策略與如何回測的指南。
開始需要哪些工具和資料?
散戶量化的配置需要四樣東西:你交易的市場的乾淨歷史 K 棒資料、能模擬手續費、滑價和下一根 K 棒執行的回測軟體、像推進分析這樣的檢驗方法,以及執行匯出規則的交易平台。每一塊依固定順序把結果交給下一塊。
| 區塊 | 必須做到什麼 | 往上之前要檢查 |
|---|---|---|
| 歷史 K 棒資料 | 涵蓋你要交易的市場、解析度和交易時段,以連續月(把一個期貨合約接到下一個合約的序列,讓你能跨年測試)的形式提供 | 沒有缺漏的交易時段、單一時區、轉倉日已處理、沒有市場從未成交過的價格尖峰 |
| 回測軟體 | 逐根 K 棒套用規則,含手續費、滑價和下一根 K 棒執行;以相同設定測試許多變體 | 第一次執行前先設好成本;交易明細可以打開並逐筆閱讀 |
| 檢驗 | 保留未見過的資料、執行推進分析、保留每一個結果的紀錄 | 樣本內與樣本外結果分開呈現;被放棄的變體仍有紀錄 |
| 交易平台 | 從匯出的原始碼執行與測試完全相同的規則 | 實單交易與測試的邏輯一致:相同的交易時段、相同的停損、相同的時間出場 |
在搜尋這一步,能依你的參數範圍和限制條件生成並測試規則變體的軟體,可以取代手寫變體;AlphaPrime(Valynox)用策略生成做到這一點,它依你設定的規則與指標、參數範圍、進場與出場條件和搜尋限制來運作。對最後一個區塊來說,研究軟體應該把策略匯出成你交易平台的原始碼;AlphaPrime 可把策略原始碼匯出到 MultiCharts(PowerLanguage)、TradingView(Pine Script v6)、TradeStation(EasyLanguage)、NinjaTrader(NinjaScript)、MetaTrader 4(MQL4)和 MetaTrader 5(MQL5),完整清單在平台匯出頁面。資料是初學者最常略過的區塊,也是之後最難補救的,所以從那裡開始。
怎麼知道第一個結果不是運氣?
回測結果要通過搜尋從未用過的資料,並且考慮你試了多少個變體之後,才算是證據。比較樣本內與樣本外的表現,兩者差距大時,就是該回到假設的訊號。樣本外和推進分析的檢查在 AlphaPrime 策略檢驗裡用你自己訂的門檻來跑,樣本內外差距太大的變體,都用同一條標準判斷。
樣本內資料是你用來選擇規則及其參數的那段歷史。樣本外資料是你保留下來、在規則固定之後只看一次的那一段。想像一個學生事先看過考題:高分並不能說明什麼。樣本外期間就是學生沒見過的考試。只擬合了過去的規則,會呈現陡峭的樣本內權益曲線,以及平坦或下滑的樣本外曲線。那個差距就是讓工作回到假設的原因。
假設性範例
區間突破在八年資料上測試:六年樣本內、兩年樣本外。樣本內做了 600 筆交易,扣除成本後平均每筆損益為 +6 點。樣本外做了 200 筆交易,平均每筆損益為 +5 點。每年的交易筆數相近,平均每筆損益也相近,所以行為得以延續。第二個變體加上調整過的最小區間過濾條件,樣本內顯示 +11 點,但樣本外只有 +0.5 點,低於 1.5 點的成本。第二個變體擬合了過去;它要回到假設階段,而不是回去繼續調整。
第二項檢查是你試過的變體數量。Bailey 等人(2014)指出,當在同一份資料上測試足夠多的參數組合時,其中一些光憑機率就會呈現優異的樣本內紀錄,而樣本內最佳的結果預期在樣本外會表現較差。Harvey 與 Liu(2015)主張,回測必須跨過的門檻,應該隨著為找到它而測試的策略數量上升。你在前面章節的書面紀錄,讓這項計數得以進行。實際步驟請見策略生成中的過度最佳化。
如果你使用 AlphaPrime,這代表什麼:本文的工作流程就是 AlphaPrime 所圍繞的順序。AlphaPrime 以手續費、滑價和下一根 K 棒執行評估每個生成的候選策略,依你設定的門檻執行推進分析和其他檢驗,並把每個結果保留在策略資料庫,所以不需要額外力氣,就有一份試過什麼的書面紀錄。
常見問題
量化交易和程式交易一樣嗎?
不一樣。程式交易(algorithmic trading)是指由程式依照規則下單,不論規則的來源。量化交易是指規則本身是經由在歷史資料上測試而選出來的。多數量化交易者也會把執行自動化,所以兩者在實務上有重疊,但一條從未測試過的自動化規則不是量化。
做量化交易需要會寫程式嗎?
你需要能精確說明一條規則並讀懂交易明細,但不必親手寫程式。策略研究軟體可以依你設定的範圍生成並測試規則變體,並把結果匯出成交易平台的原始碼。當你想測試軟體沒有提供的東西時,程式能力就有幫助。
什麼是量化交易策略?
量化交易策略是一條完整定義的規則:它讀取什麼資料、何時進場、停損在哪裡、何時出場,以及交易它的成本是多少,每個部分都因為歷史資料上的測試支持而被選出。以時段區間突破、停損放在區間另一側、在交易時段收盤出場,就是一個例子。策略類型(順勢、突破、均值回歸)不會讓它成為量化;測試才會。
量化交易者一整天都在做什麼?
一天大部分的時間花在檢查資料、執行並檢視規則變體的測試,以及寫下試過什麼和為什麼。盯著即時價格只佔一小部分。在機構裡,這些工作分給研究員、資料工程師、運算人員、風控和交易員;散戶則靠軟體和檢查表獨自完成同樣的工作。
散戶可以獨自做量化交易嗎?
可以,需要四個構成區塊:你交易的市場的乾淨歷史 K 棒資料、含成本與下一根 K 棒執行的回測軟體、像推進分析這樣的檢驗方法,以及執行測試過規則的交易平台。從有兩三個參數和時間出場的簡單策略開始,並為你測試的每個變體保留書面紀錄。
參考文獻
- 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.

