各位先進好,本身有在做程式交易
對於回測這塊也很有興趣,有鑑於自己做的標的物是股期,市面上的框架(含 vectorbt)在「期貨換月/保證金」接「批量掃參」這段對我來說還是不太順,於是決定借助當前 AI agent 的輔助開發能力,並借鑑 vectorbt 的向量化加速及 Numba JIT 兩個核心思想,建置了自己的回測框架 ChidoriBT。
「千鳥」(chidori) 是忍術中以極致速度與精準集中著稱的雷遁之術——該快的快、該對帳的不能偷懶。
核心的加速路徑相比vectorbt主要是:
1. vectorbt會將向量化面板外面再包一層pandas,而我直接將向量化的資料轉成易於numba引擎使用的連續記憶體地址資料結構(contiguous 陣列)
2.參數掃描的情況下提供使用者可以減少一些需要計算回傳的資料的路徑選項(fast path,不包含完整的fills 審計只回傳一些較重要的指標)(full path 仍可審計)
3. 參數掃描的情況下我使用prange加速,相比於利用vectorbt多執行緒併發執行,減少了後者multiprocess 逐 job 複製 DataFrame、重跑完整 simulation (prange一次進JIT迴圈內並行跑)
除了一般的多重個股統一資金池回測外,多了期貨回測的功能。期貨回測跟現股最大的差別,多了契約乘數、保證金占用、換月平倉再重建,ChidoriBT 把這些 metadata 轉成易於讓numba引擎使用的資料結構(contiguous 陣列),同一資金池裡股期混跑,策略輸出目標倉位後,引擎會依保證金上限決定能不能開、換月日強制平倉再視現金能否重建。
整個框架大概9成以上靠 AI agent 敲,我主要提供自己一些想法讓AI整理、判斷用不同路徑驗證結果是否合理正確、質疑agent。
另外也用類似方式建了一個lsm 資料結構方式的TSDB來存分K歷史資料,實測讀一百多萬筆OHLCV資料約1秒(用postgresql讀大概10秒)
若您有做股期又有掃參需求的歡迎試用
pip install chidoribt
Repo: colab範例(一般個股統一資金池回測):


