Lo2cin4bt
The best backtest engine for non-coders and quant beginners (probably).
Install / Use
/learn @lo2cin4/Lo2cin4btREADME
🚀 Lo2cin4bt
The best backtest engine for non-coders and quant beginners (probably).
作者的話
大家好,我是 Jesse。
這個專案是一位「非程式背景」的交易員,透過 vibe coding 全程打造的交易回測框架。
我的目標是讓每一位量化新手,只需要以「說人話」的方式,便能輕鬆進行交易回測,並將結果可視化。
讓我們一同淘汰那些仍然憑感覺交易的散戶吧!
在使用之前,可在 Github 專案的右上角給一個星😄
歡迎到群組提出任何意見。
❓ 為什麼選擇 lo2cin4bt?
- 全程無需寫程式,只要在終端機選擇操作,加上大量提示,超適合新手
- 三大核心:統計分析、回測、可視化平台一次滿足
- 大量中文註解,輕鬆理解程式運作,方便二次開發
- 高內聚低耦合設計,易於修改擴展
- 可離線運行,數據安全
- 支援任意因子、任意資產,只要有數據就能回測
🔄 專案回測流程
lo2cin4bt 提供完整的量化回測流程,從數據載入到結果可視化,每個步驟都有明確的用途:
1. 📊 載入數據 (Data Loading)
- 用途:建立回測的基礎數據
- 功能:
- 支援多種數據來源:本地 Excel/CSV、Yahoo Finance、Binance API、Coinbase API
- 自動數據清洗與標準化
- 預測因子載入與時間對齊
- 數據驗證與缺失值處理
2. 🔬 統計分析 (Statistical Analysis)
- 用途:深入分析數據特徵與預測因子的有效性
- 功能:
- 數據分布檢驗與異常值檢測
- 預測因子與價格的相關性分析
- 時間序列穩定性測試
- 季節性分析與自相關檢驗
- 生成詳細的統計報告
3. 🧑💻 回測交易 (Backtesting)
- 用途:模擬真實交易環境,測試策略有效性
- 功能:
- 多策略多參數組合向量化回測
- 支援 MA、BOLL、Percentile 等技術指標
- 自訂交易成本與滑點設定
- 可導出的詳細交易記錄
4. 📈 交易分析 (Trade Analysis)
- 用途:深入分析交易表現與策略優化
- 功能:
- 計算關鍵績效指標:Sharpe、Sortino、Max Drawdown
- 交易統計分析:勝率、盈虧比、連續虧損
- 與 Buy & Hold 策略比較
- 風險調整後報酬率分析
- 生成績效報告與圖表
5. 👁️ 可視化平台 (Visualization Platform)
- 用途:直觀展示回測結果與策略表現
- 功能:
- 互動式權益曲線圖
- 多策略比較與篩選
- 參數敏感性分析
- 績效指標視覺化
- 即時數據探索與分析
💾 下載與安裝
-
點選 GitHub 頁面右上角的「Code」→「Download ZIP」下載專案
-
解壓縮 ZIP 檔案
-
安裝 Python(建議 3.9 以上)
-
開啟終端機(Terminal)或命令提示字元(CMD),切換到專案資料夾
-
安裝依賴套件:
pip install -r requirements.txt -
運行主程式:
python main.py -
依照畫面指示選擇數據來源與回測參數,即可開始!
⚠️ 疑難排解
📖 完整疑難排解指南:請參考 Troubleshooting.md 查看所有常見問題與解決方案。
💾 下載與安裝 (完全編程新手懶人包)
- 點選 GitHub 頁面右上角的「Code」→「Download ZIP」下載專案
- 解壓縮 ZIP 檔案 lo2cin4bt,並將檔案移至您想放置的磁碟/資料夾
- 複製目前 lo2cin4bt 的檔案路徑
- 安裝 Cursor
- 詢問它:「如何建立虛擬環境,並運行在 '檔案路徑' 的 lo2cin4bt?」
- AI 會指導您下載各種 Library 與安裝環境
💻 推薦編程新手開發環境: Cursor
安裝 Cursor(AI 編輯器)
- 前往 Cursor 官方網站 下載並安裝 Cursor
- 支援 AI 助理協作,可透過自然語言解決安裝難題
使用 Cursor 開啟本專案
- 開啟 Cursor
- 點選「File」→「Open Folder...」,選擇剛才解壓縮的專案資料夾
- 建議在左側 EXPLORER 檢視所有檔案結構,右側可直接點擊 .py 檔案進行編輯
- 內建終端機(Terminal):
- 點選「Terminal」→「New Terminal」,即可在專案根目錄下執行 pip、python 等指令
執行與除錯
- 在 Cursor 內直接按 F5 或點選「Run」→「Start Debugging」即可進行除錯
- 也可在內建終端機輸入
python main.py直接執行
📄 準備文件格式
1. 價格文件(非必須)
-
支援 Excel(.xlsx)、CSV
-
必要欄位:Time, Open, High, Low, Close
-
時間欄位名稱:支援
Time、Date、Timestamp(系統會自動標準化為Time) -
日期格式:建議使用
DD/MM/YYYY(如:31/12/2023) 或YYYY-MM-DD(如:2023-01-01) -
目前僅支援單一預測因子進行回測與差分,未來將開放多預測因子功能,敬請期待!
-
範例:
| Time | Open | High | Low | Close | |------|------|------|-----|-------| | 2020-01-01 | 100 | 110 | 90 | 105 |
2. 預測因子文件(非必須)
-
支援 Excel(.xlsx)、CSV、JSON
-
必要欄位:Time 或 Date, [自訂因子欄位]
-
時間欄位名稱:支援
Time、Date、Timestamp等(系統會自動標準化為Time) -
日期格式:支援多種格式,可在 autorunner 配置中指定:
YYYY-MM-DD(如:2023-01-01)→ 配置"time_format": "%Y-%m-%d"DD/MM/YYYY(如:01/01/2023)→ 配置"time_format": "%d/%m/%Y"MM/DD/YYYY(如:01/01/2023)→ 配置"time_format": "%m/%d/%Y"
-
需放在
records\dataloader\import,系統會自動檢測 -
範例:
| Date | factor1 | factor2 | |------|---------|---------| | 2020-01-01 | 0.5 | 1.2 |
🧑💻 互動流程範例(Demo)
以下為一個典型的命令行互動流程範例:
<p align="center"> <img src="images/template_1.jpg" alt="Template_1" width="900"/> </p>🗂️ 專案結構
lo2cin4bt/
├── main.py
├── autorunner/ # 自動化回測模組
├── backtester/ # 回測引擎模組
├── dataloader/ # 數據載入模組
├── metricstracker/ # 績效分析模組
├── plotter/ # 可視化模組
├── statanalyser/ # 統計分析模組
├── records/ # 數據與結果存放
│ └── autorunner/ # 自動化回測配置檔案
├── assets/ # 靜態資源
├── requirements.txt
└── README.md
每個資料夾內都有對應的 README,遇到問題請先參考「疑難排解」區塊!
🚀 Autorunner 自動化回測模組 NEW
概述
Autorunner 是 lo2cin4bt 的自動化回測模組,讓用戶可以透過配置文件驅動整個回測流程,無需手動輸入參數。支援多種數據來源、多策略配置、批次執行,以及 Walk-Forward Analysis (WFA) 滾動前向分析。
核心特性
- 📝 配置文件驅動:透過 JSON 配置文件定義所有回測參數
- 🔄 全自動執行:數據載入 → 回測執行 → 績效分析一鍵完成
- 📊 多數據源支援:Yahoo Finance、Binance、Coinbase、本地文件
- ⚡ 批次處理:支援多個配置文件同時執行
- 🎯 零交互設計:適合一次回測大量數據
- 🔄 WFA 支援:支援前向分析,評估策略穩健性
快速開始
1. 準備配置文件
回測配置:
- 將
records/autorunner/backtester_autorunner/config_template.json複製為您的配置文件,並根據需要修改 - 支援多種配置範例:
config_template_single.json、config_template_defaultall.json等
WFA 配置:
- 將
records/autorunner/wfanalyser_autorunner/config_template.json複製為您的 WFA 配置文件 - 支援滾動模式(Standard)和錨定起點模式(Anchored),詳見
config_anchored_template.json
2. 執行自動化回測
python main.py
# 在主選單選擇 "4. 🚀 Autorunner 自動化回測" 進行回測
# 或選擇 "5. 🔄 滾動前向分析 (WFA)" 進行 WFA 分析
# 選擇您的配置文件
# 系統將自動執行完整回測流程
支援的數據來源
| 數據源 | 配置方式 | 說明 |
|--------|----------|------|
| Yahoo Finance | "source": "yfinance" | 支援全球股票、ETF、指數 |
| Binance | "source": "binance" | 支援加密貨幣交易對 |
| Coinbase | "source": "coinbase" | 支援加密貨幣交易對 |
| 本地文件 | "source": "file" | 支援 CSV/Excel 格式 |
批次執行
支援多個配置文件同時執行,適合策略優化和參數測試:
- 回測批次執行:在
records/autorunner/backtester_autorunner/目錄放置多個回測配置文件 - WFA 批次執行:在
records/autorunner/wfanalyser_autorunner/目錄放置多個 WFA 配置文件 - 執行 autorunner 時選擇多個配置
- 系統將依序執行所有選定配置的回測與分析,並放置於對應資料夾
📂 數據存放與輸出說明
- 預測因子檔案存放:
- 需存放於
records/dataloader/import資料夾,格式為csv/xlsx/json檔案
- 需存放於
- Autorunner 配置文件:
- 回測配置:存放於
records/autorunner/backtester_autorunner/資料夾 - WFA 配置:存放於
records/autorunner/wfanalyser_autorunner/資料夾 - 支援多個配置文件批次執行
- 回測配置:存放於
- 回測結果(交易紀錄):
- 自動產生並存放於
records/backtester/資料夾,格式為.parquet檔案 - 每次回測會產生一個唯一檔名(如
20250723_97dpnzl6.parquet) - 可透過 Autorunner 自動執行或手動回測產生
- 自動產生並存放於
- WFA 分析結果:
- 自動產生並存放於
records/wfanalyser/資料夾,格式為.parquet和.csv檔案 - 包含多個窗口的 IS/OOS 績效對比數據
- 僅可透過 Autorunner WFA 模式產生
- 自動產生並存放於
- 統計分析結果:
- 自動產生並存放於
records/backtester/statanalyser資料夾,包含processed_data.csv、stats_report.txt等
- 自動產生並存放於
- 交易分析:
- 系統會自動讀取
records/backtester/下的 parquet 檔案,計算後會產生新的.parquet檔案,並存放於records/metricstracker/內
- 系統會自動讀取
- 可視化平台:
- 系統會自動讀取
records/metricstracker/下的 parquet 檔案,並以互動式圖表展示 - 如有 WFA 數據,會自動讀取
records/wfanalyser/下的檔案,並顯示「前向分析 (WFA)」頁籤
- 系統會自動讀取
- 日誌檔案:
- 所有錯誤與執行日誌會存於
logs/backtest_errors.log
- 所有錯誤與執行日誌會存於
- 自訂導出:
- 可於互動流程中選擇導出個別回測結果為 CSV
- WFA 結果可透過可視化平台下載完整分析圖表
🎯 開發目標與進度
目前已完成
<details> <summary>📅 2025-12-21 </summary>- 【重磅】新增 Walk-Forward Analysis (WFA) 前向分析功能
- 為什麼需要 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
- 【重磅】新增 WFA 可視化平台
- 互動式 WFA 結果展示,包含多窗口 IS/OOS 績效對比
- 九宮格熱力圖顯示不同參數組合在訓練集和測試集上的表現
- 支援多種績效指標可視化:Sharpe Ratio、Sortino Ratio、Calmar Ratio、Max Drawdown
- 可下載所有窗口的完整分析圖表
- 在主選單選擇「6.可視化平台」後,如有 WFA 數據會自動顯示「前向分析 (WFA)」頁籤
- 優化了主選單結構,新增「5. 🔄 滾動前向分析 (WFA)」選項
- 統一了代碼格式和風格,提升可讀性和維護性
- 簡化了部分代碼邏輯,減少冗餘
- 可視化功能增加,加設了「下載當前檔案所有圖表」和「下載所有檔案所有圖表」功能,能夠一鍵導出所有參數圖表。
- 可視化功能增加,現在可以載入多份回測結果,並在頁面選擇展示不同檔案的資金曲線與參數高原表現!
- 可視化平台美化,現在可更直觀地看到策略的重要指標
- 新增了疑難排解頁面
- 修正了各種 BUG
- 新增了更多 autorunner config 範例
- 系統目前可以閱讀 timestamp 格式的數據了
- 修改了 metricstracker 的儲存方式以降低電腦配置需求
- 【重磅】省略輸入選項的全自動版本 Autorunner 已上線!
- 在 records/autorunner 中設定 config.json
- 運行 main.py,在主選單選擇 autorunner
- 系統會自動回測並產生可視化所需的檔案
- 擴展了回測時的 default 功能為 defaultlong, defaultshort 和 defaultall。
- 以均線交叉策略為例,defaultlong 能檢查「升穿均線做多、跌穿均線平倉」的部分
- defaultshort 能檢查「跌穿均線做空、升穿均線平倉」的部分
- defaultall 則會分別檢查以上兩者
- 修正了回測後程序無法讀取 Parquet file 的 Bug
- 【重構】DataLoader 模組大幅重構,引入
AbstractDataLoader抽象基底類- 所有數據載入器(Binance、Coinbase、Yahoo Finance、File)現在繼承自統一基底類
- 減少約 200+ 行重複程式碼
- 統一的錯誤處理、成功訊息、警告顯示
- 標準化的使用者輸入處理(日期、頻率、預設值)
- 通用的數據處理方法(欄位標準化、型態轉換、缺失值處理)
- 提升程式碼可維護性和擴展性
- 【重磅】增加了 (高點、低點) HL、(數值) VALUE 指標
- HL、VALUE 指標已加入 default 策略
- 【重磅】回測參數現在可以輸入單一數值,不需必須輸入區間
- 修正了持倉時間計算錯誤問題
- 修正了指標 MA9-MA12 輸入邏輯錯誤問題
- 修正了指標 NDAYS 計算錯誤問題
- 修改了策略參數設定時的文案,以更精簡直觀
- 新增 Coinbase API 數據載入器 (感謝協作)
- 支援加密貨幣市場數據獲取(BTC、ETH 等交易對)
- 支援多種時間週期(1m、5m、15m、1h、6h、1d)
- 【重磅】增加了 (百分位) Percentile 指標
- Percentile 指標已加入 default 策略
- 【重磅】可視化平台增加了參數高原,檢測過擬合無難度
- BUG 修正:Calamar Ratio 的 Bug 已修正
- 反選功能指示更清晰
- 可視化平台增加了反選功能
- 【重磅】向量化形式重構回測部分
- 動態檢測電腦配置以確保程式不會崩潰
- 三大量化核心:統計分析、回測、可視化平台
- 支援多種數據來源(本地、Yahoo、Binance、Coinbase)
- 多策略多參數組合批量回測
- 詳細績效指標與互動式 Dash 可視化
- 完善的
