VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 回測與檢驗

回測軟體比較:4 種工具類型、付費前要看的 6 項檢查

回測軟體分為四種類型:平台內建回測、Python 函式庫、雲端平台與策略生成軟體。前三種測試的是你自己寫的一個策略;第四種則替你搜尋大量候選策略。依序用六個重點評估:能否匯入自己的資料、成交與成本、策略檢驗、每次執行的候選策略數、匯出,最後才看價格。

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

目錄
  1. 挑選回測軟體時該看什麼?
  2. 回測工具有哪四種類型?
  3. 如何在資料、成交與成本、策略檢驗、速度、匯出與價格上做比較?
  4. 免費與內建的回測工具漏掉了什麼?
  5. 策略生成軟體何時有意義,何時是殺雞用牛刀?
  6. 哪種類型適合哪種交易人?
  7. 如何進行試用,才能讓比較公平?
  8. 常見問題
  9. 參考資料

挑選回測軟體時該看什麼?

比較回測軟體時,依序看六個重點:能否匯入你自己的資料、如何成交委託以及成本是否預設開啟、提供哪些策略檢驗、在你有限的時間內能測試多少候選策略、策略如何離開這個工具,最後才是價格。四種工具類型差異最大的是第四點。

回測是把固定的交易規則套用在歷史 K 棒上,並回報這些規則會做出的交易。軟體只決定這次回測有多誠實,以及你負擔得起跑多少次。選軟體就像買二手車:先檢查引擎、煞車,以及車庫放不放得下,再看價格標籤。不管選哪一套,都可以拿免費的回撤計算器核對它算出的數字。

  1. 匯入自己的資料。你必須能載入實際交易的 K 棒,包括夜盤與你自己的轉倉方式。只能用它提供的資料來測試的工具,會把你的研究鎖在那份資料上。
  2. 成交與成本。每次回測都應包含手續費與滑價,而且在某根 K 棒收盤時決定的委託,應在下一根 K 棒成交,而不是在同一個收盤價成交。
  3. 內建策略檢驗。推進分析是一種測試:先在一段資料上調整策略,再把選出的設定原封不動地套用到緊接著的下一段資料。如果工具做不到,你就得手動做,或乾脆不做。
  4. 每次執行的候選策略數。算一算在同一次工作中,工具能在相同設定下評估多少規則或參數的變化版本。這決定你是在精修一個想法,還是在尋找新的想法。
  5. 匯出。無法以原始碼形式離開工具的策略,只能手動重寫,而每次重寫都可能改動規則。
  6. 價格最後看。預設成本為零的免費工具,花費可能比任何訂閱都高,因為它會放行扣掉費用後虧損的策略。
回測軟體的六項檢查與套用順序:自有資料、成本與成交、檢驗、候選策略、匯出,最後才看價格 六項檢查,價格最後 依此順序套用 1 2 3 4 5 6 自有資料 成本與成交 檢驗 候選策略 匯出 價格 前五項決定結果。 所以:最後才比價格。
六項檢查及其套用順序。價格放在最後,因為前五項決定結果是否有意義。

回測工具有哪四種類型?

平台內建回測、Python 函式庫、雲端平台與策略生成軟體,解決的是不同的工作:前三種測試你已經寫好的一個策略,第四種則根據你設定的限制,替你搜尋大量候選規則。先弄清楚你的工作屬於哪一種,再去看功能清單,選擇範圍就會縮小。

  • 平台內建回測是圖表或交易平台內建的回測功能。你用平台自己的語言撰寫規則,在圖表的資料上執行,並在同一個程式中閱讀報表。對已經開著圖表的交易人來說,這是很自然的第一站。
  • Python 函式庫是一組程式碼函式,會把你的規則套用在你自己載入的資料檔上。策略、資料載入器、成本模型,通常連報表都要自己寫。一切都由你掌控,也一切都是你的工作。
  • 雲端平台是在瀏覽器中使用、在供應商伺服器上執行的回測服務。你撰寫或點選組合出一個策略,服務提供運算資源,通常也提供資料。不需要安裝任何東西,而你的策略與結果則存放在供應商的機器上。
  • 策略生成軟體會根據你設定的限制(例如允許的指標、參數範圍與出場類型)產生大量候選規則組合,並在相同的資料、成本與執行設定下評估全部候選策略。AlphaPrime(Valynox)就是這類策略生成軟體:它會生成、回測並檢驗候選策略,把它們存入策略資料庫,並將通過的策略以原始碼匯出。

差別在於誰來寫規則。前三種類型,被測試的每個策略都是你自己想出來的。使用生成軟體時,則由軟體在你的限制內提出規則,你的工作從撰寫規則轉為設定限制與判斷結果。

四種回測工具:使用平台測試器、Python 函式庫和雲端平台時由你撰寫一個策略;策略生成軟體則提出多個候選策略 誰來寫規則? 三種測你的;一種自己找 平台測試器 你寫一個 Python 函式庫 你寫一個 雲端平台 你寫一個 策略生成軟體 它提出多個
四種工具類型的比較:誰來寫規則、一次執行測試多少策略,以及運算在哪裡進行。

如何在資料、成交與成本、策略檢驗、速度、匯出與價格上做比較?

對每種類型用同樣的六個問題做成一份檢查清單,就會發現沒有哪一種類型在每一列都勝出,所以正確的選擇取決於哪些列對你的工作流程最重要。下表列出各類型的一般情況;個別產品可能不同,請在試用時確認每個欄位。

檢查項目平台內建回測Python 函式庫雲端平台策略生成軟體
接受自己的資料通常可以,透過平台的資料來源或匯入可以,任何你能讀入程式碼的檔案都行視產品而定;有些接受上傳,有些只提供自己的資料通常可以;AlphaPrime 使用客戶自己的歷史 K 棒資料執行
預設開啟下一根 K 棒成交與成本通常沒有;成本往往在你設定之前都是零視設定而定;成交邏輯由你自己寫視設定而定通常有;AlphaPrime 以費用、滑價與下一根 K 棒成交來評估每個候選策略
內建推進分析或樣本外(OOS)視產品而定;有些平台以附加元件提供視設定而定;迴圈由你自己寫視設定而定通常有;AlphaPrime 的策略檢驗包含推進分析
每次執行的候選策略數一個,或在最佳化工具中跑一組參數網格一個,或你自己寫的迴圈一個大量;速度取決於處理器或顯示卡
匯出到其他平台通常不行;策略停留在平台自己的語言中通常不行;你得手動翻譯視產品而定;常常綁定供應商自己的執行環境通常可以;AlphaPrime 可將原始碼匯出到 MultiCharts、TradingView、TradeStation 與 NinjaTrader
價格免費或隨平台附贈函式庫免費,但要花你的時間訂閱制付費,買斷或訂閱
六項檢查套用於四種工具類型:平台測試器、Python 函式庫、雲端平台與策略建構工具,每一種至少有一項檢查不是明確的「是」 沒有任何類型能全項勝出 是 視情況 否 1 2 3 4 5 6 平台 Python 雲端 建構工具 每種類型都有弱項。 所以:看重你需要的項目。
四種工具類型套用六項檢查的結果。沒有任何一欄在每一列都標示為「是」。

請逐列閱讀這張表,而不是逐欄。如果你只精修自己寫的一個策略,第四列就不重要,平台內建回測的得分會很好。如果你要在多個市場中尋找新規則,第四列與第五列才是關鍵,價格那一列則移到最後。尤其匯出這一項很容易被忽略:AlphaPrime 支援的平台列在平台匯出頁面,已經在使用某個平台的交易人應該先看這一列。

免費與內建的回測工具漏掉了什麼?

免費與內建的回測工具通常預設成本為零、只做一次樣本內(IS)回測,有些還允許委託在產生訊號的那根 K 棒上成交,所以在那裡通過的策略,仍需要加入成本、下一根 K 棒成交以及樣本外(OOS)檢驗,結果才有意義。這些都不難補上。問題在於預設報表看起來像是完成了,其實並沒有。

滑價是回測假設的價格與真實委託實際成交價格之間的差額。下一根 K 棒成交是指:在某根 K 棒收盤時決定的委託,最早只能在下一根 K 棒成交,因為收盤價要等這根 K 棒結束後才知道。在同一個收盤價成交的回測工具,用的是交易人根本來不及看到的價格;這是回測中前視偏誤最常見的形式。AlphaPrime 的回測一律在下一根 K 棒成交,手續費與滑價也是每次執行的設定,正好對應這一節說的兩項檢查。

第 1 根 K 棒收盤時決定的訊號,無法在同一個收盤價成交;真實的成交價是第 2 根 K 棒的開盤價 在下一根 K 棒成交 訊號於第 1 根 K 棒收盤時決定 第 1 根收盤 第 2 根開盤 收盤價要等到收盤才知道。 所以:在下一根 K 棒開盤成交。
在第 1 根 K 棒收盤時做出的決定,不可能在同一個收盤價成交。誠實的成交價是第 2 根 K 棒的開盤價。

假設範例

某微型指數期貨策略在三年內做了 500 筆交易。成本為零且同一根 K 棒成交時,報表顯示平均每筆損益為 $12,合計 $6,000。把成交改到下一根 K 棒的開盤價,平均每筆損益平均減少 $6。每一買一賣(來回)手續費 $2,加上每邊一個跳動點的滑價(每跳動點價值 $1),再扣掉 $4。平均每筆損益降到 $2,三年約 $1,000。策略並沒有失效,但原本看起來很充裕的優勢現在變得很薄,滑價只要稍微增加就會消失。

第三項缺漏是策略檢驗。對整段歷史跑一次,是樣本內(IS)測試:規則是在看著同一段歷史時選出來的。推進分析在每個調整步驟中保留較晚的資料,讓結果來自調整時沒看過的 K 棒。許多回測工具只能透過手動更改日期來做到這一點,對一個策略還行得通,對五十個策略就不切實際了。關於成本這一面,回測中的交易成本指南說明了如何把平均每筆損益與一買一賣(來回)的成本做比較。

策略生成軟體何時有意義,何時是殺雞用牛刀?

當你想在相同設定下測試數千甚至數百萬種規則變化時,策略生成軟體就有其價值,速度取決於處理器或顯示卡;如果只是精修一個手寫策略,平台內建回測或 Python 函式庫就夠了。關鍵在於你想評估多少候選策略,而不是你擁有什麼硬體。

可以把它想成找房子。看三間你已經找到的房子,走幾步路就好。要把一座城市裡的每間房子,依預算、大小與地點逐一比對,那是搜尋引擎的工作。每個候選策略就是一間房子,生成軟體的工作就是用同一把捲尺把它們全部走訪一遍。

  1. 一個手寫策略。你知道規則,想看看交易。平台內建回測或 Python 函式庫都做得很好,生成軟體不會為你增添需要的東西。
  2. 幾百種參數變化。相同的規則,搭配不同的回看期間與停損。平台的最佳化工具或 Python 迴圈就能處理,成本與下一根 K 棒成交只需對整組網格設定一次。
  3. 數百萬種規則組合。不同的指標、進場條件、出場類型與參數範圍,每一種都以相同的成本與執行規則評估。這正是策略生成軟體存在的目的。AlphaPrime 的策略生成會把一組允許的規則、參數範圍與搜尋限制轉成可測試的候選策略,並以費用、滑價與下一根 K 棒成交來評估每一個。

規模還會改變另一件事。測試大量候選策略,代表有大量機會碰上一個運氣好的,所以沒有內建策略檢驗的生成軟體,比沒有檢驗的回測工具更糟,因為它更快找出被灌水的結果。Bailey 等人指出,在許多次嘗試中表現最好的回測,其樣本外表現往往比樣本內結果所顯示的更差(Bailey, Borwein, López de Prado and Zhu, 2014)。對每個候選策略都執行推進分析與門檻檢查的生成軟體,能直接處理這個問題;只用淨損益排名的則不能。

候選策略的數量決定工具類型:單一策略用測試器,數百種變化用最佳化工具,數百萬種規則組合用策略生成軟體 有多少候選策略? 數量決定工具 一個 測試器 數百個 最佳化工具 數百萬個 生成軟體 看候選策略數量,不看硬體。 所以:數百萬就用生成軟體。
你想評估的候選策略數量,決定該用哪一種工具類型。生成軟體這一階,是給任何迴圈都無法在合理時間內跑完的搜尋用的。

關於第三階的規模,唯一值得引用的產品數字就是已公布的數據:AlphaPrime 在一張 RTX 3090 上於 18 h 23 min 內完成了 1,268,200,000 次策略評估,於 2026-10-05 在真實研究設定下量測(TY 37 分鐘 K 棒,2015-01-01 至 2026-09-25,每個候選策略 114,371 根 K 棒,每次評估都包含手續費與滑價)。實際速度取決於顯示卡、資料長度與研究設定,條件列在基準測試頁面。相同的功能在 CPU 上也能執行;顯示卡只改變執行所需的時間。

哪種類型適合哪種交易人?

依你的工作方式來選工具:只想驗證單一想法的主觀交易人、想要完全掌控的程式設計師、想用瀏覽器且不想安裝的交易人,以及每次都在尋找新規則的系統化交易人,各有自然適合的選擇。下表列出適合的類型,以及該類型中最需要嚴格檢查的一件事。

交易人類型自然適合的工具類型最需要檢查的事
交易前先驗證一個圖表想法平台內建回測成本與成交設定;兩者常常預設為樂觀的值
想要完全掌控的程式設計師Python 函式庫資料清理與執行程式碼;函式庫不會抓出你自己寫的同一根 K 棒成交
想用瀏覽器、不想安裝雲端平台資料所有權與匯出;你的策略與結果能否以檔案形式離開該服務
在多個市場中尋找新規則策略生成軟體策略檢驗設定與匯出;沒有樣本外(OOS)檢驗的搜尋,會產生被灌水的贏家
四種交易者類型,各有適合的工具與關鍵檢查:單一圖表想法用平台測試器,檢查成本與成交;完全掌控用 Python 函式庫,檢查自己的程式碼;免安裝用雲端平台,檢查資料與匯出;新規則用策略生成軟體,檢查策略檢驗 哪種工具適合你? 類型、工具、關鍵檢查 單一圖表想法 平台測試器 檢查:成本、成交 完全掌控 Python 函式庫 檢查:自寫程式 免安裝 雲端平台 檢查:資料、匯出 新規則 策略生成軟體 檢查:策略檢驗
每種交易人類型都有自然適合的工具類型,以及一項比其他項目更重要的檢查。

許多交易人最後會用兩種工具:用生成軟體或函式庫來尋找並檢驗規則,再用平台內建回測,在自己實際交易的圖表上確認匯出的程式碼。只有在第一個工具能匯出可讀的原始碼時,這種搭配才行得通,這也是為什麼匯出這一列在檢查清單中排在價格之前。

如何進行試用,才能讓比較公平?

用同一個市場、同樣的 K 棒、同樣的成本、同樣的執行規則與同樣的日期範圍來比較各工具,在每個工具中跑一個已知的策略,然後逐筆比對交易明細,而不是只看總損益。這樣找到的任何差異,就屬於工具本身,而不是設定造成的。

  1. 同一個市場與合約。挑一個期貨合約與一種轉倉方式,並在所有工具中沿用。如果每個工具用不同的轉倉規則建立連續月資料,在任何策略執行之前,K 棒就已經不一樣了。
  2. 同樣的 K 棒與日期範圍。從同一個來源匯出 K 棒,並把同一個檔案載入每個接受上傳的工具。固定起訖日期,並納入相同的交易時段,只有日盤或全時段。
  3. 同樣的手續費與滑價。在每個工具中設定相同的一買一賣(來回)手續費與相同的每邊滑價。如果某個工具無法設定其中一項,請記錄下來;那就是關於該工具的發現。
  4. 同樣的下一根 K 棒成交規則。在每個工具中都以收盤價決策,在下一根 K 棒的開盤價成交。如果某個工具預設在訊號那根 K 棒成交,請在執行前改掉。
  5. 在每個工具中跑一個已知的策略。使用一組你完全理解的簡單規則,例如搭配固定停損的均線交叉,這樣你就能逐筆手動檢查每一筆交易。
  6. 逐筆比對交易明細。對齊進場時間、進場價格、出場時間與出場價格。兩個錯誤互相抵銷時,總損益可能剛好一致;交易明細則不會。
以相同K 棒、成本、成交與日期公平比較:兩個工具的總損益相同,但A工具有交易之處B工具沒有,所以交易明細不一致 比對交易,而非總額 相同K 棒、成本、成交與日期 工具 A 工具 B 無 總額相同 總額相同,交易未必相同。 所以:逐筆對齊進場與出場。
公平的試用除了工具之外,其他條件全部相同,然後比較的是交易,而不是總數。

這項試用的良好結果,是兩份交易明細幾乎每一筆都一致,僅有的少數差異也能以已知原因解釋,例如交易時段開盤的跳空。不好的結果,是兩份明細的交易筆數不同,因為這代表各工具對訊號何時觸發的看法不一致,再怎麼比較損益也無法告訴你哪一個才對。

如果你使用 AlphaPrime,這意味著:像對任何其他工具一樣對它執行這六項檢查,載入你自己的 K 棒,確認費用、滑價與下一根 K 棒成交都設定成你實際交易的方式,並在依賴匯出的策略之前,把它的交易與你的平台內建回測做比對。

常見問題

期貨交易人最好的回測軟體是什麼?

沒有單一最好的回測軟體,因為四種工具類型做的是不同的工作。平台內建回測適合一個圖表想法,Python 函式庫適合想要掌控的程式設計師,雲端平台適合不想安裝任何東西的交易人,策略生成軟體則適合在大量規則變化中搜尋。依序套用同樣的六項檢查:資料、成交與成本、策略檢驗、每次執行的候選策略數、匯出與價格。

免費的回測軟體夠用嗎?

用來測試你自己寫的一個策略,通常夠用,前提是你改掉三個預設值:把手續費與滑價設為大於零、在下一根 K 棒成交委託,並保留一段規則從未接觸過的樣本外(OOS)期間。免費回測工具很少會禁止這些設定;只是一開始沒有啟用。免費工具的代價,就是你花時間補上它漏掉的東西。

回測交易策略需要 GPU 嗎?

不需要。單一策略或幾百種參數變化,在一般處理器上就能跑。當你要在相同設定下評估數百萬組候選規則時,顯示卡才重要,此時執行時間取決於顯示卡、資料長度與設定。AlphaPrime 的每項功能在 Classic 與 Reserve 中運作相同;只有每次執行的時間不同。

回測工具與策略生成軟體有什麼差別?

回測工具評估你寫好的規則並回報交易。策略生成軟體則在你設定的限制內產生候選規則,在相同的資料、成本與執行規則下評估全部候選策略,並檢驗結果。生成軟體讓你的工作從撰寫規則,轉為設定限制並判斷留下來的策略。

試用軟體時,為什麼要比較交易明細而不是總損益?

兩個工具的總損益可能一致,但交易卻不同,因為兩個錯誤可能互相抵銷。逐筆比對進場時間、進場價格、出場時間與出場價格,能精確顯示工具在哪裡出現分歧,通常是成交時點或交易時段的處理。這正是你決定要信任哪個工具所需要的資訊。

參考資料

  • 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.