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

什麼是量化交易?定義、工作流程與第一個策略

量化交易是依據寫下來的規則做交易決策,規則經過歷史資料測試,只有在測試支持時才保留。這個方法是一套工作流程(假設、資料、回測、檢驗、實單執行),散戶只要有乾淨的資料、回測軟體、檢驗方法和交易平台,就能獨自照著做。

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

目錄
  1. 什麼是量化交易?
  2. 量化交易與程式交易、主觀交易有什麼不同?
  3. 量化工作流程從想法到實單交易是什麼樣子?
  4. 散戶該從量化交易者的一天學到什麼?
  5. 散戶可以建立並測試什麼樣的第一個策略?
  6. 開始需要哪些工具和資料?
  7. 怎麼知道第一個結果不是運氣?
  8. 常見問題
  9. 參考文獻

什麼是量化交易?

量化交易是依據寫下來的規則做交易決策,規則經過歷史資料測試,只有在測試支持時才保留。交易什麼由資料決定,而不是由交易者當天的感覺決定。它是一種工作方式,不是某一種策略:假設、資料、回測、檢驗,然後實單執行。

中文的「量化交易」指的就是這個意思:把交易「量化」,每個決策都可以計算、可以檢查。量化交易者看待交易想法,就像科學家看待一個命題。把想法寫成可以被證明是錯的形式,用資料測試,資料不支持就放棄。順勢規則、均值回歸規則和突破規則都可以是量化的,讓它們成為量化的是測試。

實務上,量化交易者不會問「我相信這個型態嗎?」,而是問「這個型態在過去十年出現了幾次、之後發生了什麼、交易它要付出多少成本?」一個人、一台電腦就能回答這個問題,步驟如下。

量化交易與程式交易、主觀交易有什麼不同?

三者的差別在於誰做決定、以什麼為依據:主觀交易靠判斷,程式交易把任何規則的執行自動化,量化交易則要求規則本身是經由量測選出來的。實務上三者會重疊,但回答的是不同的問題。

主觀交易是由人讀盤,憑經驗與判斷決定每一筆交易。程式交易(algorithmic trading)是由電腦程式依照規則下單,不論規則來自哪裡。交易者可以為一條從未測試過的規則寫程式,那是程式交易,但不是量化交易。反過來也成立:交易者可以用資料仔細研究一條規則,然後手動下單,那是量化研究加手動執行。

二乘二的格狀圖。列表示規則的來源:主觀判斷或數據檢驗。欄表示由誰下單:交易者或程式。主觀交易與僅程式化交易使用未經檢驗的規則。量化交易可以手動下單,而由程式下單的量化交易是最常見的情況。 量化代表經檢驗的規則 規則來源與下單者 交易者下單 程式下單 主觀判斷 數據檢驗 主觀交易 交易者決定 僅程式化 未檢驗規則 量化 手動下單 量化 最常見
兩個獨立的問題:誰選擇規則,誰下單。多數人實踐的量化交易落在右下格,但「量化」這個詞描述的是研究,不是自動化。
主觀交易程式交易量化交易
誰選擇規則交易者,逐筆決定交易者,一次決定,來源不限歷史資料上的測試
規則的依據經驗與情境作者當時的信念扣除成本後的量測結果
誰下單交易者程式通常是程式
常見失敗決策隨心情改變未經測試的規則跑得快,虧得也快規則只擬合了過去,無法重現

多數散戶量化交易者最後落在最後一欄,由程式下單,因為經過十年 K 棒測試的規則,由機器來執行最能確保完全照做。本文談的是研究面:最後一欄的規則是怎麼選出來的。

量化工作流程從想法到實單交易是什麼樣子?

每個量化流程都依固定順序走同樣五步:形成假設、準備資料、含成本回測、用測試沒用過的資料檢驗,然後執行並監控。順序很重要,因為檢驗失敗會讓工作回到假設,而跳過這個回頭的動作,正是多數散戶嘗試出錯的地方。

  1. 假設。假設是一句白話,說明你預期會發生什麼、為什麼,寫成資料可以證明它錯的形式。
  2. 資料。你要交易的那個市場、解析度和交易時段的歷史 K 棒,不缺交易時段、使用單一時區,並妥善處理合約轉倉。
  3. 回測。回測是把規則在歷史 K 棒上跑一遍,回報規則會做的每一筆交易。回測包含手續費、滑價(規則假設的價格與真實委託成交價格之間的差距)以及下一根 K 棒執行,也就是委託在訊號 K 棒的下一根成交,絕不在訊號 K 棒自己的收盤成交。
  4. 檢驗。檢驗是在搜尋從未見過的資料上測試規則,做法是保留較晚的一段期間,或使用推進分析,後者在整段歷史上重複「調整後再測試」的循環。
  5. 執行與監控。完全依照測試過的規則交易,並把實單的交易筆數、成交與回撤與回測比較。

決定這個流程是否有效的關鍵,是檢驗失敗時你怎麼做。

量化流程:假設、資料、回測、檢驗,然後執行。若檢驗通過,規則就進入實單執行;若未通過,則回到假設,而不是回頭調整回測。 五個步驟,只有一條回頭路 從想法到實單交易 假設 資料 回測 檢驗 執行 通過 未通過 檢驗未通過,就從步驟 1 重來。 所以:別調到通過為止。
五個步驟單向進行。檢驗失敗時,工作回到假設。若回到回測去調整參數,直到檢驗通過,檢驗就變成了另一次回測。

散戶該從量化交易者的一天學到什麼?

最值得認真學的習慣是書面紀錄:每個假設在測試前寫下,每個結果在測試後寫下,包括你放棄的變體。量化機構如何把一天的工作分給研究員、資料工程師、風控和交易員,以及其中哪些角色在家裡可以由軟體和檢查表取代,請見量化交易機構做什麼、散戶可以學什麼。

手動測試變體,意味著一次只做一次回測,而你試過多少種很容易忘記;在跑下一個之前,先把每個變體和它的結果寫下來。

這份紀錄讓你能回答最後一節的問題:這個之前我試了多少種才有一個有效?十個變體和一萬個變體是不同的情況,只有紀錄能告訴你自己屬於哪一種。

散戶可以建立並測試什麼樣的第一個策略?

好的第一個策略有一個清楚的假設、兩三個參數、明確的交易時段和一個停損,例如指數期貨上的時段區間突破。簡單的規則容易誠實地測試,它的失敗比複雜規則的成功更有啟發。

一句話的假設:「當指數期貨突破早盤區間時,傾向朝該方向持續到交易時段收盤。」這句話可以變成由四個部分組成的規則:

  1. 區間。記錄你交易的交易時段前 N 分鐘的最高價和最低價。N 是第一個參數;15、30 和 60 分鐘是常見的起始值。
  2. 進場。區間期間結束後,如果有一根 K 棒收在區間高點之上,就在下一根 K 棒開盤買進。如果有一根 K 棒收在區間低點之下,就在下一根 K 棒開盤放空。每天最多做一次多單進場和一次空單進場;最大進場次數是第二個參數。
  3. 停損。停損放在區間的另一側。第三個選用參數是最小區間大小,這樣停損只有幾個跳動點遠的極窄區間就會被略過。
  4. 時間出場。在交易時段結束時平掉所有部位。沒有隔夜曝險,所以測試不受週末跳空或轉倉日影響。
區間突破規則的一個交易時段:標出時段初期的區間,價格收盤突破區間,下一根 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 棒資料涵蓋你要交易的市場、解析度和交易時段,以連續月(把一個期貨合約接到下一個合約的序列,讓你能跨年測試)的形式提供沒有缺漏的交易時段、單一時區、轉倉日已處理、沒有市場從未成交過的價格尖峰
回測軟體逐根 K 棒套用規則,含手續費、滑價和下一根 K 棒執行;以相同設定測試許多變體第一次執行前先設好成本;交易明細可以打開並逐筆閱讀
檢驗保留未見過的資料、執行推進分析、保留每一個結果的紀錄樣本內與樣本外結果分開呈現;被放棄的變體仍有紀錄
交易平台從匯出的原始碼執行與測試完全相同的規則實單交易與測試的邏輯一致:相同的交易時段、相同的停損、相同的時間出場

在搜尋這一步,能依你的參數範圍和限制條件生成並測試規則變體的軟體,可以取代手寫變體;AlphaPrime(Valynox)用策略生成做到這一點,它依你設定的規則與指標、參數範圍、進場與出場條件和搜尋限制來運作。對最後一個區塊來說,研究軟體應該把策略匯出成你交易平台的原始碼;AlphaPrime 可把策略原始碼匯出到 MultiCharts(PowerLanguage)、TradingView(Pine Script v6)、TradeStation(EasyLanguage)、NinjaTrader(NinjaScript)、MetaTrader 4(MQL4)和 MetaTrader 5(MQL5),完整清單在平台匯出頁面。資料是初學者最常略過的區塊,也是之後最難補救的,所以從那裡開始。

怎麼知道第一個結果不是運氣?

回測結果要通過搜尋從未用過的資料,並且考慮你試了多少個變體之後,才算是證據。比較樣本內與樣本外的表現,兩者差距大時,就是該回到假設的訊號。樣本外和推進分析的檢查在 AlphaPrime 策略檢驗裡用你自己訂的門檻來跑,樣本內外差距太大的變體,都用同一條標準判斷。

樣本內資料是你用來選擇規則及其參數的那段歷史。樣本外資料是你保留下來、在規則固定之後只看一次的那一段。想像一個學生事先看過考題:高分並不能說明什麼。樣本外期間就是學生沒見過的考試。只擬合了過去的規則,會呈現陡峭的樣本內權益曲線,以及平坦或下滑的樣本外曲線。那個差距就是讓工作回到假設的原因。

兩條示意用的權益曲線,以樣本內與樣本外期間分段。曲線 A 在分界前後以相同速度上升並維持住。曲線 B 在樣本內急遽上升,到了樣本外則走平並下滑,因此是對過去過度配適。 分界後曲線還一樣嗎? 僅為示意,非實際結果 A:維持住 B:過度配適 IS OOS IS OOS B 配適了過去;A 撐住了。 所以:出現落差就回到步驟 1。
示意曲線,不是實際結果。曲線 A 在切分前後表現一致,保留下來繼續測試。曲線 B 擬合了樣本內期間;那個差距讓工作回到假設。

假設性範例

區間突破在八年資料上測試:六年樣本內、兩年樣本外。樣本內做了 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.