关于 quant-research
quant-research 是面向量化研究者的回测统计 MCP 服务,检验策略结果是否能经受多重试验和样本不确定性。它将试验数保存在服务端账本中,并支持可独立验证的签名记录。
主要功能
- 01计算 Deflated Sharpe 与 PSR
- 02评估回测过拟合概率
- 03提供净化交叉验证与自助法区间
- 04检验策略族并估算有效试验数
- 05生成并验证研究证明记录
适用场景
- 01评估参数搜索后的策略表现
- 02检查回测样本长度是否足够
- 03比较策略族与基准表现
- 04验证试验记录是否连续且未被修改
MCP 相关
通过 MCP 服务让 Claude、Cursor、VS Code 等客户端在对话中运行研究统计;服务端保留试验数。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://quant-mcp.avasis.ai/mcpclaude mcp add --transport http ai-avasis-quant-research https://quant-mcp.avasis.ai/mcp{"mcpServers":{"ai-avasis-quant-research":{"type":"http","url":"https://quant-mcp.avasis.ai/mcp"}}}在 Cursor 中打开{"servers":{"ai-avasis-quant-research":{"type":"http","url":"https://quant-mcp.avasis.ai/mcp"}}}在 VS Code 中打开{"mcpServers":{"ai-avasis-quant-research":{"type":"http","url":"https://quant-mcp.avasis.ai/mcp"}}}{"mcpServers":{"ai-avasis-quant-research":{"serverUrl":"https://quant-mcp.avasis.ai/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://quant-mcp.avasis.ai/mcp需要授权工具
详细介绍
这个库不会帮你找到盈利策略。它的作用是淘汰它们。 这里的一切都旨在回答一个问题:考虑到你在报告这组配置之前试过多少种配置,结果还能站得住脚吗?
pip install quant-integrity
一个图看懂这个问题
在 BTC-USD 小时线数据上使用移动平均线交叉策略。扫描参数后,表现最好的配置年化夏普比率为 0.95,概率夏普比率(PSR)为 0.86,也就是 “很可能高于零”。
大多数回测到这里就结束了。下面是同一结果与 28 次尝试实际设定的门槛对比:
即使底层边际收益全都恰好为零,28 次尝试中表现最好的一次也会很高。与这一门槛相比,折减夏普比率为 0.157。观察结果并非只是略低于门槛,而是不到纯粹靠运气所能产生数值的一半。
PSR 高而 DSR 低,说明这是过拟合搜索的特征,而非一个处于临界边缘的优势。
搜索实际上在筛选什么
原因在试验本身中一目了然。将记录的 28 次运行按交易次数与夏普比率排序:
交易越少的配置看起来越好,相关系数 ρ = −0.96。这不是发现了信号,而是测出了成本拖累,再加上一条缓慢移动的均线在上涨市场中近似于买入并持有。搜索没有找到优势,只找到了交易次数最少的配置。
而且这个区间从一开始就不窄
单独报告 Sharpe = 0.95,暗示了数据并不支持的精确度。
以上所有数字都可复现
git clone https://github.com/abhayjnayakk/quant-integrity
cd quant-integrity && pip install -e .
python docs/make_figures.py # regenerates all three figures and prints the values
| 评估的试验次数 | 28 |
| 夏普比率(年化,扣除成本后) | 0.9500 |
| 概率夏普比率(PSR) | 0.8556 |
| 零假设下的 E[max Sharpe],28 次试验 | 1.8525 |
| 折减夏普比率(DSR) | 0.1568 |
| 夏普比率的自助法 95% CI | [−0.93, 2.69] — 跨越零 |
| 超额峰度 | 18.61 |
| Spearman ρ(夏普比率、交易次数) | −0.9618(p = 3.8e−16) |
| 最短回测时长 | 需要 1.94 年,实际有 1.25 年 |
试验次数取自记录的运行结果,而非手动填写。本页早期版本曾硬编码为 29 次,但文件记录的是 28 次,并分别引用了基于其中一种次数计算的折减夏普比率和基于另一种次数计算的最短回测时长。
图表和本表由同一个脚本从 examples/btc_ma_runs.npz 生成(24 KB,包含实际收益序列和各试验结果)。无需服务器,也无需账号。更详细的演示见 examples/btc_ma_postmortem.ipynb。
关于一个未包含在此仓库中的数字。 后来,同样的设定在一组资产而非单一资产上运行,汇总 10 项资产后夏普比率为 −1.376,其中 3 项为正。该结果保存在托管服务的账本中,而不在此仓库内——此处的示例文件只包含单一资产的试验,因此你无法据此复现这组资产的结果。之所以在此引用,是因为这是这段经历中最有说服力的部分;之所以特别注明,是因为无法核验的数字理应始终标明这一点。
包含的内容
| 功能 | 回答的问题 |
|---|---|
deflated_sharpe(returns, n_trials) | 这个夏普比率是否优于 N 次试验中运气最好的结果? |
probability_backtest_overfitting(matrix) | 你的选择程序是否真的包含有效信息? |
combinatorial_purged_cv(...) | 带有净化和禁运期的交叉验证拆分 |
stationary_bootstrap_ci(returns) | 区间的实际宽度是多少? |
reality_check(family, benchmark) | 这个策略族中最好的成员是否优于它所胜出的基准? |
effective_tests(matrix) | 相关测试组合实际包含多少个独立测试? |
min_backtest_length(n_trials, ...) | 你的样本长度是否足以支撑所进行的搜索? |
triple_barrier_labels(...), dollar_bars(...) | 标注和基于活动度的采样 |
spec_hash(spec) | 基于内容的策略标识 |
verify_attestation(record, key) | 独立验证已签名的研究记录 |
import quant_integrity as qi
out = qi.deflated_sharpe(returns, n_trials=28)
print(out["dsr"], out["psr"])
n_trials 指你评估过的所有配置,包括已舍弃的配置。低报这个数字会让结果显得更好看。这个库无法核实它——这正是下一节要讨论的问题。
从第一天起就明言商业意图
本仓库中的统计方法采用 AGPL-3.0 许可,永久免费。 这里的每种方法都已发表为学术成果。计算本身没有任何护城河,本库也不会故意削弱功能来诱使你付费升级——这类诱饵既无法有效引流,也会丧失完整性工具唯一赖以立足的东西。
托管式证明服务需要付费。 验证是公开的,代码就在这里。签发则不是,原因如下。现在先说明白,免得日后有人指责我们突然变卦。
为什么自托管无法提供证明
只有当试验次数无法向下修改时,它才有意义。但如果你运行自己的账本,就可以编辑它。通常并非出于恶意,而是因为人们往往会在改写之后重置计数,或不记录毫无进展的搜索。自我证明的完整性记录毫无证明力,因为出具证明的人正是从中获益的人。
验证是公开的。签发才是这项服务。
任何人都可以使用这个库和签发方的公钥来检查证明。无需签发方配合,也没有任何验证代码被扣留。但你无法自行签发证明,因为只有当签名者不是受益方时,签名才有意义。
真正发挥作用的不是某个单独的签名,而是链条。verify_chain 可确认一系列证明满足以下条件:
- 序列号连续,因此没有记录从中间被删除;
- 每条记录都引用前一条记录的摘要,因此事后无法篡改;
n_trials绝不减少。
外部人员无需查看账本即可确认以上所有事项。修改自己记录的人无法重现这些结果,因为他们必须使用自己并不持有的密钥重新签署所有后续记录。
这就是这门生意的全部:不是这里公开且免费的计算,而是运营一个对结果没有利害关系的实例。这个实例就是 quant.avasis.ai——它是一个 MCP 服务,因此研究可在 Claude、Cursor、VS Code 或任何 MCP 客户端中运行,试验次数也由服务端而非对话来记录。
范围
这是一个统计工具。以下内容是刻意不纳入、今后也不会纳入的:
- 不提供买入、卖出或持有信号。不提供目标价格、头寸规模或止损位。
- 不提供模型投资组合或资产配置。
- 不对收益作出任何声明,也不提供任何暗示此类声明的示例。
这个库接收收益序列和试验次数,并返回相关统计数据。它不知道你在交易什么,也不会对此发表意见。
安装和贡献
pip install quant-integrity # statistics
pip install "quant-integrity[attestation]" # + signature verification
Python 3.10+。依赖 numpy、scipy 和 pandas。完全类型化(py.typed)。
贡献需要签署 CLA 和 DCO——请参阅 CONTRIBUTING.md,其中会解释原因,直言不讳。
许可证
AGPL-3.0-or-later。请参阅 LICENSE 和 NOTICE。
网络使用条款是有意设置的:这意味着竞争对手不能运行基于此代码的闭源托管分支。但这不妨碍你在自己的研究中使用此库,无论是否托管,也无需发布任何内容。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。