前言¶
在 DSH 里做量化相关任务,常见做法是零散脚本:拉行情一套、回测一套、报表又一套,智能体很难在一个闭环里自检、复现和对比结果。商品期货还涉及合约乘数、保证金、平今手续费等会计口径,若用收盘价成交或未建模成本,回测结论容易系统性失真。
下面介绍维护者 yichuan1123 发布的 DSH 插件 dsh-quant-cta(npm 包名 dsh-quant-cta,当前版本 0.11.0,MIT 许可证)。它以工作流形态把 研究 → 回测 → 模拟盘 串成一条可在对话、命令行与本地面板中操作的链路;行情优先走天勤 TqSdk 真实数据,无凭据时退化为确定性合成数据并在报告中显式标注。本插件不发任何真实委托,没有 CTP 下单路径,paper 模式只写内部账本。
- 目录页:https://www.skillhub.cn/plugins/yichuan1123/dsh-quant-cta
- 源码:https://github.com/yichuan1123/dsh-quant-cta
这是什么¶
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 做统计体检。
回测与风控口径(写死)¶
下列规则不是可选项,用于避免未来函数与成本低估:
- 信号在 t 日收盘产生,t+1 日开盘成交。
- 手数按波动率预算换算;等权时按
sqrt(Σw²)归一。 - 手续费按合约规格(按额/按手取大,含平今倍率),滑点默认 1 跳/笔。
- 开仓前做保证金校验,不足则缩减手数并记拒单。
- 风控含单品种上限、名义杠杆上限、组合回撤熔断、可选 ATR 止损。
- 期末强制平仓,保证权益变动与交易净盈亏恒等(有单测约束)。
设计细节见仓库 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 为准。