dsh-quant-cta:商品期貨 CTA 研究、回測與模擬盤工作流

前言

在 DSH 裏做量化相關任務,常見做法是零散腳本:拉行情一套、回測一套、報表又一套,智能體很難在一個閉環裏自檢、復現和對比結果。商品期貨還涉及合約乘數、保證金、平今手續費等會計口徑,若用收盤價成交或未建模成本,回測結論容易系統性失真。

下面介紹維護者 yichuan1123 發佈的 DSH 插件 dsh-quant-cta(npm 包名 dsh-quant-cta,當前版本 0.11.0,MIT 許可證)。它以工作流形態把 研究 → 回測 → 模擬盤 串成一條可在對話、命令行與本地面板中操作的鏈路;行情優先走天勤 TqSdk 真實數據,無憑據時退化爲確定性合成數據並在報告中顯式標註。本插件不發任何真實委託,沒有 CTP 下單路徑,paper 模式只寫內部賬本。

這是什麼

dsh-quant-cta 是商品期貨 CTA 的全鏈路工作臺:引擎用 Python 實現,通過 DSH 暴露 qcta_doctor、qcta_data、qcta_backtest 等工具,並提供 Web 面板與客戶端側欄入口。目標用戶是需要在本地用真實(或標註爲 synthetic)日線驗證策略流程、成本與風控約束的開發者或研究者,而不是要直接掛實盤下單的場景。

鏈路裏每一環落在哪

README 用表格說明各環節不是示意代碼,而是對應倉庫內模塊:

環節 實現位置 說明
行情獲取 python/qcta/data.py 天勤主連日線(復權)/ 本地 CSV 緩存 / 確定性合成數據
合約規格 python/qcta/specs.py 28 個品種的乘數、跳價、保證金率、手續費
策略信號 python/qcta/strategies/ 唐奇安突破、橫截面動量
倉位換算 python/qcta/sizing.py ATR 波動率預算 → 手數,按 sqrt(Σw²) 歸一
撮合與賬本 python/qcta/account.py 期貨會計口徑、手續費攤分、滑點、保證金校驗
事件循環 python/qcta/engine.py t 收盤決策 → t+1 開盤成交,逐日盯市、熔斷、止損
績效歸因 python/qcta/metrics.py CAGR/夏普/回撤/卡瑪/PF/月度矩陣等
報告輸出 python/qcta/report.py Markdown + JSON + 手寫 SVG 曲線
模擬盤 python/qcta/paper.py 逐日推進的可斷點賬本
DSH 工具 lib/index.js doctor / data / backtest / report / paper / sim 等
最優配比 python/qcta/optimizer.py 等權、波動率倒數、ERC、最小方差、均值方差等
滾動模型 python/qcta/model.py walk-forward 調倉,狀態落盤可追溯

DSH 還可按間隔定時推進 paper 賬本;面板路由爲 /dsh-quant-cta/panel,客戶端在「開始」列表註冊「量化 CTA 工作臺」入口。

安裝與啓用

插件要求 Node >= 20,peer 依賴 @deepseek-ai/cordis 與 @deepseek-ai/dsh。安裝分三步:掛接 DSH 插件、裝 Python 依賴、可選配置天勤賬號。

1. 裝成本地 DSH 插件

README 給出已驗證的本地目錄安裝(不動 pnpm 鎖文件):

# 1) 把插件目錄聯接進 profile 的 node_modules
powershell -NoProfile -Command "New-Item -ItemType Junction -Path '<profile>\node_modules\dsh-quant-cta' -Target '<repo>'"

# 2) 在 profile 的 cordis.patch.yml 末尾追加(config 裏寫本機 Python 路徑)
#    - insert:
#        - id: dsh-quant-cta
#          name: dsh-quant-cta
#          config:
#            pythonPath: <repo>/.venv/Scripts/python.exe
#            engineRoot: <repo>

# 3) 重啓 DSH

其中 <profile> 一般爲 %USERPROFILE%\.dsh\profiles\desktop。

發佈到 npm 後,也可用:

dsh plugin add dsh-quant-cta

插件自帶 cordis.patch.yml 會插入插件名單;本機 Python 路徑仍需在 profile 的 patch 層配置。

2. 安裝 Python 依賴

在倉庫根目錄創建虛擬環境並安裝依賴:

python -m venv .venv
.venv/Scripts/python.exe -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas tqsdk

解析 Python 可執行文件的順序:config.pythonPath → 環境變量 QCTA_PYTHON → <插件目錄>/.venv → PATH 中的 python。

3. 天勤賬號(可選,建議配置)

推薦在面板「數據源賬號」卡片填寫快期賬號並「保存並測試」。命令行等價:

echo '{"user":"手機號","password":"密碼"}' | python -m qcta auth login --stdin --verify
python -m qcta auth status

無憑據時引擎仍可運行,但僅使用合成數據,報告頂部有醒目標註。憑據在 Windows 上可用 DPAPI 加密存本機;密碼不會出現在 API 返回值中。

注意:插件以當前 DSH 進程權限運行,安裝前請閱讀源碼與 MIT 許可證,自行判斷憑據與本地 API 路由(僅本機迴環)是否符合你的安全要求。

典型用法

在 DSH 對話裏

先自檢,再按數據 → 回測 → 報告 → 模擬盤順序調用:

qcta_doctor
qcta_sim    action="status"
qcta_sim    action="advance"
qcta_data   action="sync" live=true
qcta_backtest pool="default" start="2019-01-01" live=true
qcta_report action="get"
qcta_paper  action="init"; qcta_paper action="step"

面板可直接訪問 http://127.0.0.1:58080/dsh-quant-cta/panel,或與右側欄入口打開同一頁面。

命令行

cd python
python -m qcta doctor
python -m qcta data sync --live --pool default
python -m qcta backtest --pool default --start 2019-01-01 --json
python -m qcta backtest --pool starter --sleeves trend:0.6,xsec:0.4 --vol 0.10
python -m qcta paper init --pool starter --capital 300000
python -m qcta paper step --live

回測結束後可用 python -m qcta report --run <run_id> 查看報告;python -m qcta stats --run <run_id> --trials 12 做統計體檢。

回測與風控口徑(寫死)

下列規則不是可選項,用於避免未來函數與成本低估:

  1. 信號在 t 日收盤產生,t+1 日開盤成交。
  2. 手數按波動率預算換算;等權時按 sqrt(Σw²) 歸一。
  3. 手續費按合約規格(按額/按手取大,含平今倍率),滑點默認 1 跳/筆。
  4. 開倉前做保證金校驗,不足則縮減手數並記拒單。
  5. 風控含單品種上限、名義槓桿上限、組合回撤熔斷、可選 ATR 止損。
  6. 期末強制平倉,保證權益變動與交易淨盈虧恆等(有單測約束)。

設計細節見倉庫 docs/DESIGN.md。

面板與本地 API

面板提供權益/回撤雙摺線圖、最優配比環形圖、逐日收益與波動副軸等(純 SVG,無圖表庫)。頂部可填模擬投入、期望年化與回撤閾值,僅做可視化換算與告警,不改變歷史回測結果。

同源只讀/管理路由(README 列舉)包括:GET /dsh-quant-cta/api/overview、GET /dsh-quant-cta/api/report?run=<id>、憑據相關 GET/POST/DELETE、以及 GET/POST /dsh-quant-cta/api/sim 用於模擬調度。均無鑑權,限本機迴環使用。

適用場景與侷限

適合:在 DSH 或本地把 CTA 日線策略跑通;用天勤真實主連檢驗成本與風控;需要 Markdown/JSON/SVG 報告與 walk-forward 配比的研發流程。

不適合或未提供:實盤 CTP 下單;真實盤中滑點(日頻爲開盤價 ± 固定跳數);將歷史回測當作投資建議。README 明確:合成數據僅驗證流程;合約規格需與交易所公告覈對;跨策略腿在同一品種上不對淨額對沖(歸因清晰,但可能多付手續費與保證金)。

維護者在 README 中給出 2016 至今與 2021 至今等窗口的真實數據回測表,並附統計體檢(PSR、DSR、MinTRL 等),強調長窗口下基線策略與噪聲難以區分——使用時應結合 report.md 末尾體檢章節自行判讀,而非只看年化或夏普。

結尾

dsh-quant-cta 把商品期貨 CTA 從行情、規格、信號、撮合到報告與 paper 賬本收進一條可自檢、可復現的工作流,並通過 DSH 工具與本地面板接入智能體日常操作;全程不發真實委託。若要安裝或貢獻代碼,以 GitHub 倉庫 README 爲準。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜