返回最新文章 Blog
【C-08】零編程框架 lo2cin4bt 完整回測流程教學—量化課程文章(七)

【C-08】零編程框架 lo2cin4bt 完整回測流程教學—量化課程文章(七)

更新 2026.04.1235 分鐘閱讀

文章分類

會員量化課程

文章標籤

lo2cin4bt回測
目錄

◉ TL;DR

量化交易就是用數據做你的「交易導航」。

它幫你擺脫情緒猜測,用數字驗證市場規律。

量化交易框架 lo2cin4bt 簡化數據處理與回測流程,讓不懂編程的你也能在半天內嘗試量化交易。

而且 lo2cin4bt 從數據獲取到績效可視化一應俱全,並支援美股與加密貨幣市場。

本文將會完整展示回測流程。

你準備好脫離韭菜了嗎?

◉ 如何下載 lo2cin4bt?

前往代碼倉庫 GitHub ,點選右上角的「Code」按鈕,選擇「Download ZIP」下載專案檔案至主機。

目前使用的框架為 2025 年 12 月 21 日的版本。

解壓縮下載的 ZIP 檔案 lo2cin4bt-main ,並將檔案移動至您指定資料夾,最好放在容量大一點的磁碟。

接著,對於所有不想編程的新手來說,可以安裝 Cursor 或 Antigravity 等免費 AI 編程軟體,之後一切與編程與代碼相關的問題都會由它代勞。

( 留意 Antigravity 需要 VPN )

如果運行回測中途遇到任何問題,也可以詢問 AI 意見。

安裝完成後,打開 Cursor 並點擊左上角的 “ File ” → “ Open folder ”,打開剛才的 lo2cin4bt-main ,然後確認。

你應該能看到左側會有整個專案的所有檔案。

接著在右側問 AI :「幫我建立虛擬環境、下載所需程式庫並運行 lo2cin4bt 」。

它會一步步幫你設置環境,安裝所需的程式庫,接著你便可以開始運行。

◉ 找到適合的數據

量化交易需要 2 種數據:

  1. 資產的歷史價格:
    比如比特幣過去的價格走勢。
    lo2cin4bt 提供了幣安( Binance )與 Coinbase 的 免費 API,可以直接使用他們的各種加密貨幣歷史價格。
  2. 預測因子:
    比如某個數據能提示價格會漲或跌。
    預測因子的獲取渠道則可以參考 btcboxer.com ,此網站綜合了不少數據商連結

新手建議從加密貨幣開始,因為不少數據都是免費公開下載。

取得數據後,需對數據進行初步清理,例如確保數據沒有遺漏值,或格式與要求一致。

清理後,將數據存入 lo2cin4bt/records/dataloader/import 資料夾。

目前 lo2cin4bt 支援 CSV 、 XLSX 和 JSON 格式,數據格式如下:

Time ( DD/MM/YYYY ) | 預測因子 1 | 預測因子 2 …

您可參考 import 資料夾中的 predictor_example 範例檔案。

◉ 開始數據載入

主選單

點擊並打開左側的 main.py 檔案,並按右上角的三角形符號以啟動回測。 ( 參照上圖 )

進入主選單後,可先選擇選項 2 「回測交易」,跳過複雜的統計分析,直接進入數據載入與回測階段。

選擇價格數據來源

回測的第一步是選擇用哪項資產的歷史價格。

目前框架提供以下選項:

  1. 讀取本機數據
  2. 透過 Yahoo Finance API 獲取美股數據
  3. 透過幣安 API 獲取數據
  4. 透過 Coinbase API 獲取數據

本次我們輸入 3 ,選擇幣安 API。

新手建議:

輸入「 3 」後,如果你是第一次用,可一直留空按 Enter 鍵,系統會自動幫你選擇比特幣( BTCUSDT 交易對)和 2020 年 1 月 1 日到現在的每天價格。

完成後,系統還會計算 BTCUSDT 的每日收益率及對數收益率,以供系統本身使用。

輸入預測因子

接下來要告訴系統,我們將用使用甚麼數據來猜價格走勢。

系統會自動檢查 lo2cin4bt/records/dataloader/import 資料夾裡的檔案,列出所有能用的數據文件。

如果輸入數字「 0 」 則會使用原資產的價格數據,也就是常見的「用價格數據本身來進行預測」的策略 。

本次我們選擇附贈文件 predictor_example.xlsx,然後繼續留空 Enter 。

系統將顯示預測數據的基本資訊,包括缺失值比例、數據行數及整合後的數據表格。

如有問題 ( 如有缺失 ),先自行清理原始數據。

導出合併後數據

你可以把系統合併好的價格 + 預測因子數據庫以 Excel / CSV / JSON 格式導出,並手動檢查確保數據沒問題。

選擇差分預測因子

數據整理好後,接下來可以選擇是否加工數據,將其「差分」,讓它更適合預測。

「差分」也就是 rate of change ,是看每兩個數據點之間的變化。

系統目前提供兩種加工方式:

  • 減數差分:今天的分數減昨天的分數,得到變化量
  • 除數差分:算今天比昨天漲了或跌了百分之幾 ( 如有零值將會只運行減數差分 )

當你認為原始數據之間的變化率,比原始數據本身更具預測價值的時候,便可以計算差分。

例如檢測某數據單日升 10% 的時候,是否代表之後會漲。

如果你對差分值沒有需求,這一步做不做都不會影響後面操作。

◉ 進入回測分析部份

選擇要用於回測的預測因子

接著是重頭戲,建立策略並用數據測試你的交易想法!

系統現在會列出剛選中的檔案裡的所有欄位。

輸入想驗證的數據所在欄,如本次會使用「X」,然後 Enter 。

選擇回測開倉及平倉指標

這一步是回測的核心,你需要建立策略,並輸入對應的開倉和平倉指標。

比如,策略一是輸入「 MA1 」作為買入信號,再用「 MA4 」當賣出信號;

策略二是輸入「 BOLL1 」作為買入信號,再用「BOLL4 」當賣出信號。

然後我們就建立了兩個策略:

「X 升穿前幾天的平均值時買比特幣,並在 X 跌破平均值時賣出」和

「X 升穿前幾天的保力加通道頂部時買比特幣,並在 X 跌破保力加通道底部時賣出」

無論是開倉還是平倉條件,你都可以輸入多個指標,讓交易信號變得更嚴格。

例如可以同時輸入 「MA1」和「MA9」作為開倉信號,那就需要同時滿足兩者時才開倉。

當你已經建立好所有想測試的策略後,便可以按指示輸入 “n” 或 “none” 結束建立策略。

新手建議:

  • 在開倉和平倉條件同時輸入「 defaultall 」,便可以用預設策略。

輸入指標參數

完成建立策略後,便開始為各策略輸入各指標參數。

比如, MA1 的「過去幾天」可以設成 5 天、 10 天,或更多。

你可以輸入單個數字(像 10 ),或用「開始:結束:間隔」格式(像 5:20:5 ),之後系統便會測試同一指標但不同參數的表現。

我亦為大家設好預設值,只需留空 Enter 便可。

新手建議:

  • 留空按 Enter 用預設值。

輸入回測環境參數

這一步是設定模擬交易的環境。

你需要告訴系統:

  1. 手續費:交易所的「過路費」,留空輸入的話預設為 0.1% 。
  2. 滑點:買賣時價格可能有點偏差,預設 0.05% 。
  3. 交易延遲:信號出來後要等多久才買賣,預設為 1 天,盡量避開未來函數的問題。
  4. 交易價格:用開盤價還是收盤價,預設為開盤價,結合交易延遲,那就是當信號發生時,在翌日的開市價交易。

未來函數是指程式碼使用了未來的數據來進行當前的決策。
簡單來說,就是你的交易系統「偷看」了未來的價格或資訊,來決定現在要不要買賣。
例如某數據在收盤後才公佈,但你卻設了無延遲交易,那系統就會用了未來才公佈的數據,但用了收盤價交易。
這種情況在真實交易中是不可能發生的,因為沒有人能預知未來,而採用了未來函數的回測表現往往超級漂亮。
為了避免此問題,我們會將交易延遲至翌日開市,甚至翌日的收市價。

新手建議:

  • 留空 Enter 用預設值。

開始回測

一切設定好後,系統會告訴你總共要試多少個策略,再按 Enter ,系統就會開始跑回測。

系統會自動檢查你的硬件設備,並且安排效率最高的回測方法。

除非是超大量的回測 (如幾萬個策略 ),否則需時應該不會超過 10 分鐘。

以我已用了快十年的電腦為例,跑三年數據,13000 個策略,不到 5 分鐘可以出結果。

導出回測結果

回測完成後,系統會顯示回測結果統計,包括成功、失敗或無交易的回測情況(無交易通常是參數設得太嚴格)。

然後,系統會再以表格形式,列出每個策略的回測 ID 及參數。

你可輸入「 m/n 」翻頁,或輸入數字跳至指定頁面。

確認無誤後,輸入「 q 」進入操作選單。

常用選項包括:

  • 選項 3 :將所有策略結果導出為獨立 CSV 檔案,方便檢查回測有沒有問題。
  • 選項 5 :進入策略績效計算階段。

新手建議:

  • 輸入” 5 ” 進入下一步。

◉ 計算績效

選擇要分析的 Parquet 檔案

現在我們要計算策略表現得怎麼樣。

剛才的所有回測結果,都以一個 Parquet 文件(一個像壓縮了的 Excel 文件,專門儲存大數據 )的形式存放在 lo2cin4bt/records/backtester 資料夾 ,檔案名包含回測日期與唯一識別碼。

系統會列出所有該資料夾的 Parquet 文件,輸入編號並選擇想分析的回測結果檔案。

設定分析參數

這一步是給回測成績定個標準。

你需要輸入:

  • 年化單位:加密貨幣用 365 (每天交易),股票用 252 (交易日)
  • 無風險利率:建議採用預設 4%

這些數字會影響策略成績,比如「夏普比率」的計算方法。

新手建議:

  • 留空 Enter 用預設值。

計算績效指標

系統將自動計算績效指標,並將結果存放在 lo2cin4bt/records/metricstracker 資料夾內,這裡也需要等待一段時間。

完成後進入可視化階段。

◉ 進入可視化部份

選擇要載入的檔案

輸入編號並選擇先前生成的 Parquet 檔案。

之後系統會要求你選擇 WFA 檔案,這是進階內容,後續再提到,這裡先選擇 0 跳過。

系統將自動運行可視化,分析策略好壞。

資金曲線介面

點擊系統給的連結,瀏覽器便會打開一個圖表平台。

最先的畫面是所有策略的資金曲線。

如果試的策略多達幾千個,你可能需要等待數分鐘,才能把曲線圖完全繪製,而且幾千條也很難看得清楚。

所以目前的資金曲線首先會以 TOP 20 Sharpe 顯示。

你亦可以在左側控制板,選擇只顯示哪些入場或出場條件的策略,或者選擇 All Results 顯示所有。

而在圖中點擊任何一條曲線,便能看到該單一策略的詳細成績,如下圖。

參數高原介面

在頂部點擊「參數高原」,便可以顯示各策略的表現二維圖。

在下拉欄選擇檔案與策略後,便可以觀察同一策略、不同參數下的夏普比率( Sharpe )、索丁諾比率( Sortino )、卡瑪比率( Calmar )及最大回撤( MDD )等指標的表現。

由於為二維顯示,只能展示兩個參數的交叉變化。

若策略包含多個參數,可在參數控制面板鎖定部分參數並指定數值。

例如,選擇 HL 策略(連續 N 日突破 M 日前高點買入,連續 N 日跌破 M 日前低點平倉),鎖定開倉和平倉參數 N 同為 3 ,便可觀察不同 M 值下的策略表現。

「參數高原」的用途是檢測過擬合。

理想的「參數高原」應顯示連續範圍內的穩定高表現(光亮格子聚團),而非孤立的高表現點(孤島)。

後者代表參數只需輕輕微調,便會導致績效大幅下降,該參數只是湊巧踩中行情、過擬合的可能性便會大增。

◉ 策略判斷標準

你已經跑完一次量化交易模擬!

如何初步判斷策略是否優秀?

我有以下標準:

參數高原,九宮格內最好至少有 7 個回測結果符合以下數值:

  1. Sharpe Ratio > 1
  2. Calmar Ratio > 1
  3. Sortino Ratio > 1

之後再進入後續的前向分析 ( WFA ) 檢驗。

如果你覺得手動一個個看比較麻煩,你也可以點擊該介面那兩個批量下載按鈕,將所有參數高原以圖片方式下載到 records/plotter 內,一次對比更加方便。

◉ 進階操作– Autorunner 配置文件回測

當你已經熟習了回測流程後,便可以省略以上不斷輸入的過程,改為在  lo2cin4bt/records/autorunner/backtester_autorunner / 下建立 json 檔案,並選擇主選單的自動化回測 Autorunner。

我已提供了多個範本供 AI 參考,屆時可以讓 AI 參考並建立回測配置。

舉個例子,你可以叫 AI:「參考 records\autorunner/backtester_autorunner / 內的 config_template_defaultall.json,預測文件改為使用 records\dataloader\import 的 YYY 文件,時間改為 2022 年 1 月 1 日至 2026 年 1 月 1 日,建立一份新的 json 文件」。

運行後系統會自動檢查文件是否符合要求,之後再回測。

◉  前行分析 ( Walk forward analysis, WFA )

上面提到的參數高原分析,雖然能幫助我們識別參數的穩健性,但它仍然是在同一份歷史數據上進行優化,無法完全消除過擬合問題。

就像是在考試前背熟所有題目答案,雖然在練習時表現完美,但遇到新題目(未來的市場數據)時可能表現不佳。

WFA 通過將數據分為訓練集(IS)和測試集(OOS),在訓練集上優化參數,然後在獨立的測試集上驗證,就像真正的考試一樣,能夠更真實地評估策略在未來市場中的表現。

  • WFA 可以做什麼?
    • 將歷史數據劃分為多個時間窗口,每個窗口包含訓練集和測試集
    • 在每個窗口的訓練集上優化策略參數(尋找最佳 Sharpe、Calmar 等指標)
    • 在對應的測試集上驗證優化後的參數表現
    • 通過多個窗口的 IS/OOS 對比,評估策略的穩健性和泛化能力
    • 識別策略是否在訓練集上表現良好,但在測試集上表現不佳(過擬合警告)
  • 兩種 WFA 模式:
    • 滾動模式(Standard):固定訓練集和測試集大小,每次向前滾動固定步長,適合評估策略在不同時間段的穩定性
    • 錨定起點模式(Anchored):固定起點,訓練集逐步增長,測試集大小固定,適合評估隨著歷史數據增加,策略表現如何變化

配置方式:目前僅提供配置文件模式,在 records/autorunner/wfanalyser_autorunner/ 中設定 WFA 配置文件即可執行。

詳細配置範例請參考 records/autorunner/wfanalyser_autorunner/config_template.json 和 config_anchored_template.json

在主選單選擇 5 ,再選擇對應的檔案,系統便會自動運行前向分析。

前行分析的細節與詳細設置將會在未來會員文章講解。

◉ WFA 可視化平台

當你做完前向分析後,可以回到主選單並啟動可視化平台,並選擇這次的分析檔案,之後便可以看到置頂多了一個前向分析 (WFA) 按鈕。

點擊後會進入以下介面,同樣可以選擇檔案和策略。

再下面則是按照定義的不同時間窗口所做的回測結果分析。

每個窗口的左面就是使用訓練集得出的最優解九宮格,而右面則是該九宮格的參數在測試集的表現。

以第一個為例,2024 年 1 月 16 日至 2024 年 12 月 25 日這段時間裡,MA1 的參數選 0 ~ 60、MA 4 的參數選 140 ~ 200 的表現最佳。

但這堆參數去到 2024 年 12 月 25 日至 2025 年 3 月 21 日的夏普率則完全不行。

我們其中一個準則,就是希望看到策略在訓練集和測試集表現相差不大。

另外一個重點則是看每個訓練集的參數是否相近。

如相近,代表策略在不同時間都展現出穩定性;

反之則代表時間對於參數的影響極大。

在下面這反面例子,PERC2 的參數從 100 ~ 160,變到 60 ~ 120,最後再變到 140~ 200,就是個很不穩定的參數。

◉ 找到好策略之後

如果你已找到能通過以上所有要求的策略,接下來,便可以按以下檢查清單,再次審視你的策略:

  1. 截圖記錄
    首先將資金曲線與參數高原圖表截圖記錄,以待後續討論。
  2. 測試其他參數
    除了少數策略,其他策略通常都不只兩個參數。
    滑動固定參數的數值,看看在固定參數變化後,參數高原有沒有明顯變化。
  3. 邏輯對不對
    能解釋的策略比回測更加重要。
    比如, MVRV 突破均線時,代表甚麼意思?
    為何它能具備預測能力?
  4. 是否已避免未來函數問題
    加密貨幣市場 24 小時交易,昨日開盤和今日開盤的數據可能只差 1 秒。
    確認你的數據能及時獲取甚至提前預測,要不然就只能再測試延遲一天後的收市價表現。
  5. 測試反向策略
    如果在低 MVRV 時買入賺錢,那可以再試試高 MVRV 賣出,看看是否能夠賺錢,證明邏輯多空皆可行。
    如只有單邊可行,那就要思考該預測因子出現以上表現是否合理。
  6. 細調參數
    找出「參數高原」的亮區,在該區間內測試更細的數字。
    比如原本的「參數高原」在 10 天至 200 天,以 10 為間隔的表現不錯,那就重做一次回測,並改為 5 天甚至 1 天作間隔。
  7. 分年檢查
    將原始數據拆分為不同年份,如 2020 至 2023 年的數據拆分為 2020、2021、2022、2023年,然後再分別跑四次回測。
    這樣做是觀察策略在不同時間段的表現,策略表現與最佳參數是否顯著變動 。
    如果每年的最佳參數都有極大差異,那直接使用 2020 至 2023 年數據找出的最佳參數,也可能會出問題。
    未來, lo2cin4bt 會增加「 walk-forward analysis 」,幫助各位更簡單地檢查策略穩定性。
  8. 資金曲線的表現
    有些時候,策略跑贏買入並持有策略的原因,僅僅是逃過了一兩次的大跌。
    這些是運氣還是預測因子真的能夠預測大跳並及時離場?

◉ 量化新手小秘訣

最後想分享一個很重要的散戶量化開發思路:
我認為只要足夠優質的數據,只需用簡單策略便可獲利。
交易者該多花時間尋找策略靈感和數據,而非擺弄指標。
尤其是如無必要,別增加指標。
愈嚴格的規則只會提高過擬合風險,保持反脆弱。

◉ 加入量化交易終身會籍

對量化交易充滿熱情但缺乏經驗?歡迎了解我們的終身會籍,與 40 位以上會員一起探索交易的無限可能!

在會員群中,你可以:

  • 隨時提問,例如「我的交易策略為什麼沒效果?」
  • 一同研究相同策略的參數變化是否合理
  • 學習其他量化愛好者分享的實用策略,快速上手試驗。
  • 結識志同道合的夥伴,共同成長、交流量化交易心得。

立即加入,和我們一起打造屬於你的量化交易旅程!