專案 B · 開源產物 · 引擎 + 論文已草擬
量化研究框架
一個研究等級的系統化交易框架,任何人都能用它來產生策略,以規則為本或以 ML 為本,具備堅不可摧的滾動前向最佳化、一個會隨市場狀態輪動的內建回顧最佳化器、一個可自訂的市場狀態分段器,以及一個 5 情境穩健性套件。以一個 Python 參考實作與一個規格等價的 Rust 移植交付,並在每一個 PR 上受公開數值一致性契約約束。
兩個引擎,一份規格
不是套在 Rust 外的 Python 包裝,而是同一個回測器的兩個獨立實作
量化工具中一個常見的型態是把 Python 門面套在 Rust 熱迴圈上。這個框架是另一回事:兩個完整、獨立的引擎,一個用 Python、一個用 Rust,各自獨立地實作相同的演算法規格,並由一個在每個 PR 上運行的一致性協定約束至相同的數值輸出。
挑選適合你技術堆疊的語言。若你生活在 pandas、numpy、scikit-learn 與 notebooks 裡,安裝 Python 參考實作(pip install quant-research-framework),你就有了一個完整的研究引擎,策略契約、滾動前向、市場狀態、穩健性套件、度量帳本、蒙地卡羅與去膨脹 Sharpe 診斷,原生在 Python 中運行,並在交易執行迴圈內帶 numba JIT。
若你要部署到生產、想要單一靜態二進位檔,或在 Rust 交易堆疊內運行,安裝 Rust 移植(cargo add quant-research-framework-rs)。它不是一個 Python 繫結:它是相同規格的一個獨立重新實作,具一條 Vec<Bar> 資料路徑與一個 Rust 原生策略契約 fn(&[Bar], usize) → Vec<i8>。
兩個引擎都以 IEEE 754 雙精度計算其指標階梯。不同的記憶體佈局、不同的捨入機制(LLVM-via-rustc 對 LLVM-via-numba)、不同的 RNG。它們在 210 個已驗證點上以 ≤10⁻³ 相對容差產生相同的列印度量,觀測到的最差偏差為 5×10⁻⁵,這正是一致性協定存在所要展示的。一個實作中的 bug 必須要嘛在另一個中對應到一個相符的 bug,要嘛被逮到。
與眾不同之處
這個框架做對了什麼,是其他回測器沒做到的
這個框架中的每一個元件都在開源生態系的某處存在。貢獻在於組合,以及把組合維繫在一起的紀律。下表彙整我們在 2026 年 4 月對六個廣泛使用的回測器,沿著對研究等級工作最重要的四條軸所做的調查。
內建滾動前向最佳化、每市場狀態回顧選擇、由交易帳本層級自動屬性測試強制執行的嚴格無前視,以及跨語言位元組一致性測試,據我們所知,那套組合是本框架獨有的。每一條個別軸都在某處被實作;QuantConnect Lean 出貨 WFO、vectorbt 有一個精巧的分割器 API、NautilusTrader 跑一個 Python+Rust 雙堆疊,但它們無一把四者連同一份公開一致性契約全部放在一起。
另一條值得一提的軸:每一個寫實控制,手續費、滑價、資金費率、盤中 SL/TP、時段視窗、外匯點值定價、部分槓桿上限,都是引擎的參數,而非策略的參數。策略作者無法忘記套用滑價或跳過資金費,引擎會在每個 WFO 視窗、每個穩健性覆蓋層的每一筆交易上套用它們。
功能比較 · 2026 年 4 月
| 框架 | 授權 | 內建 WFO | 每市場狀態 LB | 嚴格-LAH 測試 | 跨語言一致性 |
|---|---|---|---|---|---|
| 本作(Py + Rs) | Apache-2.0 | ✓ | ✓ | ✓ | ✓ |
| vectorbt | Apache + CC | ✓(Splitter) | - | - | n/a |
| backtrader | GPL-3.0 | ,(社群) | - | - | n/a |
| NautilusTrader | LGPL-3.0 | ,(僅引擎) | - | - | ,(雙語言;無一致性) |
| zipline-reloaded | Apache-2.0 | ,(第三方) | - | - | n/a |
| QuantConnect Lean | Apache-2.0 | ✓ | - | - | n/a |
| bt | MIT | - | - | - | n/a |
嚴格-LAH 測試 = 由交易帳本層級的自動屬性測試強制執行的嚴格無前視。
對照主要文件驗證,2026 年 4 月。據我們所知,WFO + 每市場狀態 LB + 嚴格-LAH + 跨語言一致性這個組合是本作獨有的。
實證速度
相同工作量,六個引擎,一個計時協定
從框架的組合產生器取樣 100 個策略,每一個端到端經過一次樣本內回顧掃描、一次 RRR 最佳化與一次樣本外評估。相同的 SOLUSDT 1 小時 K 棒、相同的成本(引擎支援之處的手續費 + 滑價)、相同的單執行緒預算,訊號產生與回測引擎兩者皆在計時區內。
單執行緒牆鐘,100 個策略,SOLUSDT 1h
| 引擎 | 牆鐘時間 | 對比 Rust 移植 |
|---|---|---|
| 本作(Rust 移植) | 6.3 s | 1×,最快 |
| 本作(Python) | 37.5 s | 慢 6× |
| vectorbt | 4.1 min | 慢 39× |
| backtesting.py | 23.7 min | 慢 226× |
| backtrader | 13.4 h | 慢 7,670× |
| bt | 37.2 h | 慢 21,340× |
單執行緒、端到端(訊號產生 + 回測引擎)。相同的策略、相同的 IS/OOS 切分、相同的手續費 + 滑價假設;資金費僅在引擎開箱支援之處收取。
backtrader 與 bt 被平行化至 15 個工作者以塞進時鐘時間;此處回報單執行緒等價總計以做同類對比。bt 是一個投資組合再平衡框架而非方向型交易模擬器,納入僅為界定比較最慢的一端。
信任模型
為什麼這些數字可以信任
可重現性是一個四層主張:演算法有能逮到要緊失效模式的測試、兩個獨立實作對輸出達成一致、方法論引用並套用已發表的統計文獻,而每一個產物都公開授權並 DOI 封存,好讓第三方能重建並重新驗證一切。
01 · 屬性測試的不變量
基於 Hypothesis 的屬性測試在交易帳本層級驗證無前視不變量:每一筆交易的進場索引都必須嚴格大於擬合該參數時的索引。一個獨立的偵測器擬合不變量測試把預設市場狀態偵測器釘為在 K 棒尾擾動下為因果的,並明確把 KMeans / 波動率分位/趨勢-波動率偵測器標記為已記錄的反模式,而非讓它們的洩漏靜默發生。
02 · 跨語言一致性
210 個度量點橫跨三個配置介面(預設 · 市場狀態 + WFO · 外匯)以 10⁻³ 相對容差驗證。全部 210 個點中觀測到的最差偏差為 5×10⁻⁵,比宣告的帶寬緊二十倍。一致性框架在每個 PR 上運行;一個通過此關卡的方法論主張,必須要嘛在兩個引擎中對應到一個相符的 bug,要嘛被逮到。
03 · 引用已發表文獻
隨附的預印本(44 頁、12 輪內部審閱、平均分 7.0 → 最終 8/8/9)引用 42 篇參考文獻,橫跨去膨脹 Sharpe 比率(Bailey & López de Prado)、組合對稱 CV / PBO(Bailey-Borwein-LdP-Zhu)、多重檢定文獻(Harvey-Liu、Bonferroni / Holm / BHY)、bootstrap 資料窺探族(White's Reality Check、Romano-Wolf step-down),以及市場狀態切換基礎(Hamilton、Ang-Timmermann)。引擎隨附的診斷實作的是這些方法,而非它們的近似。
04 · 公開、有 DOI、可重新驗證
兩個產物都是 Apache-2.0 授權,並在 Zenodo 上 DOI 封存(Python 為 10.5281/zenodo.19798594 · Rust 為 10.5281/zenodo.19798592)。論文儲存庫出貨 requirements-paper.txt,附釘住的 Python 依賴,以及一個 Makefile 目標 make verify,會對釘住的姊妹複本 SHA 重跑一致性框架並重新產生每度量殘差 CSV。重現本作中每一張圖與每一個一致性主張,在近期的筆電上需 5–10 分鐘。
最佳化器內部
是什麼讓這個最佳化器比一次網格掃描更有效
大多數回測器暴露一個參數網格,讓使用者跑一次窮舉掃描。這個框架在其上新增三樣東西:一個粗-後-細的搜尋,在不失最佳值的情況下把搜尋成本減半;一個智慧最佳化防護,在尖銳的 PF 峰過擬合樣本內視窗之前拒絕它們;以及一個 RRR 探測,挑選使每 WFO 視窗總已實現 R 最大化的風險報酬比。
粗掃描在 step-2 網格上掃描回顧範圍 {12, 14, ..., 76}(33 個候選),在每一個上評估策略,並按配置的最佳化器度量排序(預設 Sharpe;獲利因子、期望值、MaxDD 也可配置)。頂部粗候選接著在其 ±1 鄰域觸發一次微調,額外三次評估。我們在任何測試過的資料集上都未見微調步驟與窮舉最佳值不一致。
智慧最佳化防護坐落在粗-後-細結果之前。一個其獲利因子超出其緊鄰鄰居中位 PF 逾 10% 的候選會被當作尖峰拒絕,並提升次優者。10% 閾值被誠實揭露為工程經驗法則,它是在一組合成策略上觀察到樣本外過擬合有質性降低的值,而防護的開/關行為是一致性介面的一部分,所以任何人都能翻動它並看到效果。
RRR 探測是第三階段。對每個候選 RRR ∈ {1, 2, 3}(經典)或 {1, 2, 3, 4, 5}(市場狀態路徑),引擎為先碰到 SL 的交易(封頂獲利)把每筆交易的已實現 R 重新計算為 min(peak_R, RRR),而對在碰到候選 TP 之前出場的交易則用實際的收盤 R。所選的 RRR★ 是使 ΣR 最大化的那個。這正是讓策略作者插入一條單一規則、並讓引擎找到一個合理的風險報酬擬合,而非用猜的。
- 三個階段全都在每個 WFO 子視窗內運行,從不在完整樣本上,所以無前視不變量在帳本層級得以保全。
- 每市場狀態回顧選擇把相同的三個階段限制在標籤為 r 的 K 棒上運行,產生一個長度等於市場狀態標籤數的向量 {lb★_r}。在 OOS 中引擎逐 K 棒輪動慢速 EMA 跨度。
- 所有最佳化器旋鈕都是 Config 欄位。numba 核或 Rust 閉包裡沒有隱藏預設,翻動其中任何一個都是一行變更,可對照一致性紀錄重現。
每市場狀態參數輪動
大多數回測器暴露一個參數,讓使用者挑選它。少數暴露一個參數網格,讓使用者跑一次掃描。幾乎沒有一個出貨內建最佳化器,而有的那些也不做每市場狀態最佳化。這個框架兩者都做:它在樣本內視窗內掃描回顧範圍,限制在市場狀態標籤為 r 的 K 棒上,並產生每市場狀態各自的 lb★_r。在 OOS 中引擎接著根據即時市場狀態標籤逐 K 棒輪動慢速 EMA 跨度,所以策略以在實際看起來像當前市場狀態的 K 棒上表現最好的那個回顧運行。
整套機制,粗-後-細掃描、智慧最佳化防護、RRR 探測、每市場狀態限制、OOS 輪動,在無任何使用者介入下運行。策略作者寫那個 (df, lb) → int8[] 函式並配置市場狀態偵測器(預設 8-bar EMA-200;可插入波動率分位、KMeans 或自訂函式)。其餘一切都是引擎的工作。有一個空市場狀態安全機制:若某市場狀態在 IS 視窗內的交易少於 min_trades,其 lb★_r 回退到全域 IS 最佳值,使輪動絕不靜默產生零交易行為。
分階段路線圖
5 個已完成 · 1 個進行中 · 3 個已規劃 · 點選任何節點查看細節
- Done
quant-research-framework v0.6.0,可 pip 安裝的 Apache-2.0 回測器,帶 WFO、市場狀態分段,以及一個開箱即用的 5 情境穩健性套件。
- Done
quant-research-framework-rs v0.6.0,規格驅動的 Rust 引擎,具相同的策略語意,可供生產部署。
- Done
兩個引擎,一份規格:210 個度量點橫跨 3 個介面(預設 · 市場狀態+WFO · 外匯)以 10⁻³ 相對容差驗證。
- Done
Rust 移植已快到足以用於生產:整個行程記憶體低約 33–65×,在隨附基準上端到端加速 23.8–57×。
- Done
44 頁 LaTeX 預印本,12 輪內部審閱(平均 7.0 → 最終 8/8/9)。arXiv 投稿待定。
- Done
QEMU 下的 ARM64 交叉編譯:每一個確定性度量在全部六個資料集上都與 x86_64 逐位元組相同。原生 ARM 與 QEMU 工作皆已整合進 CI。
- Done
在重新設計的每腿帳本上的配對、籃子、beta 對沖投資組合。已於 v0.5.0 發布;八個一致性介面在 1e-3 內吻合,單一資產輸出逐位元組不變。
- Done
市場狀態 + WFO + 外匯 + 時段。已關閉:一個測試臺旋鈕不一致,加上 Rust 核心中三處時段結束 K 棒的分歧,現已對齊。組合逐位元組精確,並在 CI 中設有閘門(v0.5.0)。
- Done
去膨脹 Sharpe 比率現已在 Rust 中鏡像並通過跨語言一致性驗證(在 1e-3 內,且在有限案例上低於 1e-9),把診斷區塊帶到與引擎特性對等。
點選綠色節點看已交付什麼;強調色節點看進行中什麼;僅有外框的節點看已規劃什麼
Phase 01 · 已完成 · v0.6.0 · Apache-2.0
Python 參考引擎
Python 參考實作是任何人今天都能安裝、並用來在研究等級流程下產生策略,以規則為本或以 ML 為本,的框架。你寫一個函式,輸入 (df, lb) 並回傳 {−1, 0, +1} 中的 int8 訊號;框架擁有最佳化、滾動前向編排、市場狀態輪動、5 情境穩健性覆蓋套件,以及度量計算。numba JIT 內迴圈在一個型別化交易帳本上套用手續費、滑價、資金費(僅加密貨幣)、盤中 SL/TP、時段視窗與強制平倉邏輯,所以模擬的 PnL 正是一個可部署的執行層實際會看到的。
七個主要子系統開箱出貨,資料載入器、指標核心、策略契約、執行核心、最佳化器、滾動前向編排器、市場狀態引擎,外加蒙地卡羅與去膨脹 Sharpe 診斷區塊。v0.4.0 版把 Config 從全域變數解纏,這正是讓兩個回測能在同一個直譯器中共存的關鍵,也正是它在下游解鎖了跨語言一致性協定。
- 安裝:pip install quant-research-framework。DOI:10.5281/zenodo.19798594。Apache-2.0 授權。
- 策略契約刻意極簡:(df, lb) → int8[] in {−1, 0, +1}。手寫規則與 ML 模型用的是同一個介面。
- 隨附 CSV 讓第一次回測成為一行:SOLUSDT 1h(48,094 根 K 棒)與 EURUSD 1h(53,160 根 K 棒)。
Phase 02 · 已完成 · v0.6.0 · Apache-2.0
Rust 移植,規格驅動的重新實作
Rust 移植給你相同的引擎,相同的 WFO、相同的市場狀態分段器、相同的穩健性套件、相同的策略語意,在一個你能投進生產部署而無需 Python 直譯器的二進位檔中。它是相同規格的一個獨立實作,而非一次音譯:不同的記憶體佈局、不同的捨入機制(LLVM-via-rustc 對 LLVM-via-numba)、不同的 RNG。重點是用兩個唯一共享血緣為規格本身的引擎來演練演算法規格。
策略契約與 Python 完全鏡像:fn(&[Bar], usize) → Vec<i8>。翻轉偵測層把原始訊號水準翻譯成進場/出場代碼;這種分離讓策略作者指定期望狀態(多/空/平)而非轉換,這對維持無前視正確性容易得多。
- DOI:10.5281/zenodo.19798592。crates.io:cargo add quant-research-framework-rs。
- 依賴刻意極小且釘住:rand =0.9(精確)、chrono 0.4、chrono-tz 0.10。精確的 rand 釘住有記錄,因為 rand 0.10 把 random_range 變成一個 trait 方法,會破壞呼叫點。
- Rust 二進位檔無需暖機;Python 在第一次受測運行之前付一次性的 numba JIT 快取成本。
Phase 03 · 已完成 · 兩個引擎是同一個引擎的證據
跨語言一致性協定
一致性是讓我們能主張 Python 與 Rust 在運行同一個回測器、而非兩個碰巧看起來相像的回測器的協定。三個確定性配置介面在每個 PR 上端到端驗證:預設配置(56 個度量點 · K 棒觸發 WFO + 智慧最佳化回顧 + 自動 RRR)、市場狀態 + WFO(98 個度量點 · 每市場狀態 LB 最佳化 + OOS LB 輪動 + 200-bar 暖機 + 4 個 WFO 視窗),以及外匯模式(56 個度量點 · 點值縮放部位規模 + 外匯模式 PnL 封頂)。
容差為 10⁻³ 相對;全部 210 個度量點中觀測到的最差偏差為 5×10⁻⁵,比宣告緊二十倍,我們視之為演算法等價、而非數值累積在起約束作用的證據。210 點的論文期複現以 \%.4f 列印捨入精度逐位元相符。
- 重跑一致性是每個介面一個指令,在近期筆電上總執行時間 ≈ 5–10 分鐘。
- 按設計停用:蒙地卡羅百分位(引擎間 RNG 實作不同)與 INDICATOR_VARIANCE 覆蓋——一個未設種子的 ±1 回顧位移,按設計即為隨機,因此這些列在每個引擎中逐次執行而跳動,落在一致性介面之外。
- 誠實揭露的未驗證範圍:Windows MSVC。四向市場狀態+WFO+外匯+時段組合現已逐位元組精確並在 CI 中設閘門(Phase 08),且 aarch64 上的跨架構一致性已由 CI 驗證(Phase 06)。
Phase 04 · 已完成 · 已發布的基準框架
效能,Rust 移植已快到足以用於生產
效能階段的重點是 Rust 引擎在生產部署中可操作地可用,而非 Python 參考實作慢。在隨附的基準上,Rust 移植端到端快 23.8–57×,整個行程峰值 RSS 低約 33–65×,一旦扣掉 Python 的 pandas/numpy/numba 直譯器基線,可歸因於引擎的記憶體差距合理上可能僅 3–5×,論文帶著那條警語來讀這個標題。
速度比較之所以有意義,正是因為一致性成立:沒有一致性,一個更快的重新實作可能只是做了更少的工作;有一致性,你計時的是同一個演算法的兩個實作。
- 基準在隨附的 SOLUSDT 1h 切片上於 15k / 25k / 35k / 48k 根 K 棒運行,三次暖運行(捨棄一次暖機以供 numba JIT 快取)。
- 完整的預設流程端到端運行:IS/OOS 基線、帶自動 RRR 的智慧最佳化回顧搜尋、K 棒觸發滾動前向、蒙地卡羅診斷,以及四個 v0.1.x 穩健性覆蓋。
Phase 05 · 已完成 · 44 頁 · ~715 KB PDF
可重現滾動前向回測器預印本
隨附論文記錄架構、WFO + 市場狀態 + 穩健性流程、一致性方法論、效能比較,以及一份適合學術發表的可重現性藍圖。它把框架對照六個廣泛使用的開源回測器與相關統計文獻定位;貢獻在於組合加上一致性協定,而非新的統計機制。
十二輪內部審閱把論文從平均審閱分 7.0 帶到最終 8/8/9 的軌跡。論文儲存庫出貨 requirements-paper.txt 附釘住的 Python 依賴、一個會對釘住的姊妹複本 SHA 運行 make verify 的 Makefile,以及一個支撐每一張圖的已產生 parity_residuals.csv。
- 完整原始碼:github.com/DaruFinance,論文 repo + python repo + rust repo 作為姊妹。
- 兩個產物都有各自的 Zenodo DOI;論文儲存庫將在發表時封存至 Zenodo 而獲得自己的 DOI。
Phase 06 · 已完成 · 在 aarch64 上逐位元組相同,QEMU 與原生 ARM CI 皆綠
跨架構一致性
Rust 移植已被交叉編譯至 aarch64-unknown-linux-gnu,並在 QEMU 使用者模式模擬下對照與 x86_64 二進位檔相同的輸入運行。在為先前未設種子的指標變異覆蓋設種子(一個在論文準備期間發現並修正的疏失)之後,每一個列印的確定性度量在兩個架構之間、於全部六個資料集上都逐位元組相同,1,176 行度量,零差異。只有載入與總牆鐘計時不同,兩者都被 QEMU 的模擬開銷膨脹。
這個比較是對列印的度量區塊做精確字串相等,嚴格強於跨語言一致性所用的相對容差檢查,而它之所以成立,是因為熱路徑只使用正確捨入的 IEEE-754 運算,沒有 fast-math 也沒有 fused-multiply-add 的程式碼產生。一個在免費公開 ARM 執行器上的原生 ARM 工作,在 QEMU 工作旁邊於真實矽晶上執行相同的逐位元組相等斷言,因此兩個架構在每次變更時都被檢查,而 QEMU 結果作為可重現的後備。
Phase 07 · 已完成 · 以 v0.5.0 在兩個引擎發布
多資產核心
執行核心在論文所固定的版本上一次操作單一 OHLC 序列。解除該限制的多資產子基底已於 v0.5.0 在兩個引擎發布:一個 panel 層(跨資產市場狀態偵測、多空籃子、equal-risk-contribution 配重、beta/美元/sigma 中性化、投資組合約束)外加配對與 carry 原語,建立在一個重新設計的每腿交易帳本之上,該帳本攜帶腿 id、交易群組 id,以及完整的成本分解(手續費、滑價、資金費、毛額與淨額),滿足毛額 − 成本 = 淨額至浮點容差。
每個原語都 Python ↔ Rust 鏡像,並由其在 CI 中自己的一致性閘門驗證,遵循與原本介面相同的紀律,八個介面現在在 1e-3 內吻合(交易筆數精確)。單一資產輸出與前一版相比逐位元組不變。建立在此子基底之上的專有策略研究維持私有;公開發布的是引擎能力,而非策略。
Phase 08 · 已完成 · 逐位元組精確並在 CI 中設閘門(於 v0.5.0 發布)
四向一致性介面(市場狀態 + WFO + 外匯 + 時段)
已發布的一致性紀錄涵蓋三個介面;四向組合,市場狀態 + WFO + 外匯 + 時段,是剩下的那一個,現已關閉。追根究柢發現兩個成因。主要的是測試臺的不一致,而非引擎缺陷:組合驅動程式以不同的選擇旋鈕餵給兩個引擎(最小交易數與 risk-to-reward 最佳化在 Rust 側是編譯期常數,但在 Python 側被覆寫),使得樣本內階段選了不同的回看長度。
殘差是 Rust 核心中三處時段結束 K 棒的分歧:在當日最後一根在-時段 K 棒上,它讓相反方向的翻轉訊號開倉、從不阻擋新進場,且執行了 intrabar 的停損/停利檢查,而參考引擎則無條件強制平倉並跳過該停損/停利檢查。對齊這三者(完全由時段旗標保護,因此單功能介面維持逐位元組不變)使組合在每個階段都逐位元組精確。它現在作為第四個受控一致性介面在 CI 中運行,把誠實揭露的未驗證足跡縮小至 Windows MSVC。
Phase 09 · 已完成 · Rust 鏡像已交付並通過一致性驗證
Rust 中的去膨脹 Sharpe 比率
DSR 工具(Bailey & López de Prado 2014)原本僅 Python,因為它依賴 scipy 的常態分布,並且每個最佳化軌跡被呼叫一次、而非每根 K 棒。它現已在一個輕量功能旗標後鏡像於 Rust,並以套用於其純量輸出的相同一致性紀律:一個專用測試臺以相同的(Sharpe、試驗 Sharpe、報酬)固定樣本,包括偏態、厚尾與所有退化守衛案例,餵給兩個實作,並確認在標準容差內(且在所有有限案例上低於 1e-9,因為兩者皆為封閉形式)於期望最大 Sharpe 與去膨脹 Sharpe 上吻合。
常態 CDF 及其反函數取自一個經驗證的統計 crate,與 scipy 吻合至約 1e-12;移植中他處使用的粗略誤差函數近似刻意不重用,因為其尾部誤差會在相關分位數上汙染期望最大 Sharpe 項。其益處是一個僅 Rust 的部署能在它自己的最佳化器軌跡上計算去膨脹 Sharpe 診斷,而無需往返 Python。
可重現性
quant-research-framework
Python · Apache-2.0 · DOI 10.5281/zenodo.19798594
quant-research-framework-rs
Rust · Apache-2.0 · DOI 10.5281/zenodo.19798592
在 5–10 分鐘內重現一致性
git clone …/quant-research-framework
git clone …/quant-research-framework-rs
cd quant-research-framework-rs
cargo build --release
QRF_PY_DIR=../quant-research-framework \
python tools/parity_check.py --tol 0.001
QRF_PY_DIR=../quant-research-framework \
python tools/parity_regime.py --tol 0.001
QRF_PY_DIR=../quant-research-framework \
python tools/parity_forex.py --tol 0.001
