mcpField
C
Canli Backtest

Canli Backtest

本地服务
canlicapital.com金融数据53 天前更新

关于 Canli Backtest

Canli Backtest 是面向量化研究者和 Agent 的 MCP 服务,可构建 SEC 时点因子,并用用户提供的价格回测信号。它强制执行避免前视的交易时滞,按换手计入成本,并用试验账本记录各个变体。

主要功能

  1. 01生成 SEC 时点因子
  2. 02横截面信号回测
  3. 03强制避免前视偏差
  4. 04按换手计算交易成本
  5. 05用试验账本记录变体

适用场景

  1. 01根据 SEC 文件构建因子
  2. 02用自有价格数据测试信号
  3. 03经搜索调整比较回测变体

MCP 相关

它向 MCP 客户端提供因子查询、时点因子生成和信号回测工具。服务通过本地 stdio 运行,价格、信号和账本不会离开本机。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"arhancanli-canli-backtest": {
"command": "npx",
"args": [
"-y",
"canli-backtest-mcp"
]
}
}
}
启动命令npx -y canli-backtest-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmcanli-backtest-mcp0.3.0

工具

3

收录的工具列表 · 更新于 4 天前

此工具无需参数。

详细介绍

canli-backtest-mcp

值得信赖的 AI Agent 回测。一个 MCP 服务,可基于 SEC 文件构建时点因子,使用你自己的价格数据对任意信号进行横截面回测,确保无前视偏差 (由代码强制执行),按实际交易计入成本,并在试验账本中记录每个变体,因此搜索得出的最佳结果会与整个搜索结果进行比较,而不是单独评估。

仅限本地 stdio:你的价格、信号和账本都不会离开你的设备。

为什么

以下三个错误会让大多数由 Agent 执行的回测看起来比实际更好:

  1. 前视偏差。 在数据公开前使用它:例如,在 1 月使用 2 月才提交的年度数据,或使用后来被重述的数值。pit_factor 只使用截至各日期已向 SEC 提交的数据,并以当时的数据为准;backtest_signal 只交易至少早于当前日期 lag_days 个交易日的信号行,如果任何数据超出此范围,就会停止。
  2. 免费交易。 忽略换手率。持仓会随价格在再平衡之间漂移,交易成本则按这些漂移后的持仓到新目标仓位之间的交易计算。
  3. 只统计赢家。 Agent 尝试 200 个变体,然后只报告最佳结果。使用 ledger 后,每次运行都会记录在 canli-validation-mcp 的哈希链账本中;每条回复都会给出最佳运行在计入所有尝试后经过缺陷校正的夏普比率,以及单靠运气就能达到的夏普比率。

工具

工具功能
list_factors列出 pit_factor 构建的因子及其衡量内容。
pit_factor为你的股票代码按月构建因子(roa、gross_margin、operating_margin、revenue_growth、asset_growth、accruals 或 level:<measure>),并使用每个日期当时已知的数据。写入信号 CSV。
backtest_signal按信号排名,做多最高分位组(并做空最低分位组),按周、月、季度或每 N 天再平衡;支持 lag_days、cost_bps 和可选的 ledger。

快速开始

npx -y canli-backtest-mcp

Claude Code:

claude mcp add canli-backtest -- npx -y canli-backtest-mcp

然后提出请求:“为这些 200 个股票代码构建 2015 至 2024 年的 roa,使用 prices.csv 按月回测,成本为 10 bps,在 'roa-search' 账本中尝试分位数 0.1、0.2 和 0.3,并告诉我最佳结果能否经受住整个搜索的检验。”

文件

两个文件都是 CSV,包含一个 date 列(YYYY-MM-DD)和每个股票代码对应的一列:

  • 价格:每个交易日一行的收盘价。请自行提供;如需计算总回报,请调整拆股和股息。服务不提供价格数据(供应商许可禁止转发价格数据)。
  • 信号:每个日期一行,表示数据值变为已知的日期。pit_factor 会写入此文件;也可以使用你自己的信号,但每行日期必须是该数据可用的日期。

空单元格表示缺失值,绝不表示零。

结果无法证明什么

  • 价格数据由你提供:其中的幸存者偏差、拆股、股息和数据错误都会直接影响结果。
  • 回测衡量的是在这些成本假设下的一段历史走势;它无法证明信号会持续有效。
  • 成本按每单位交易量的固定费率计算;除非计入 cost_bps,否则不包含市场冲击、卖空借券费和融资成本。
  • SEC 数值是公司按 XBRL 格式提交的数据;晚提交的公司、非 XBRL 提交者和标签变更可能导致数据缺失。

配置

变量默认值含义
CANLI_LEDGER_DIR~/.canli/ledgers账本的存放位置(与 canli-validation-mcp 共用)
CANLI_CACHE_DIR~/.cache/canli-fundamentalsSEC 数据缓存

Canli Capital MCP 系列的一部分

canli-validation-mcp(验证器和试验账本)、canli-fundamentals-mcp(SEC 基本面时点数据)、canli-research-mcp(开放研究记录)。源代码:github.com/arhancanli/canlicapital。采用 MIT 许可证。由 Arhan Canli 构建。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。