mcpField
B
backtestport

backtestport

本地服务
github.com/CloudCorpRecords金融数据01 周前更新

关于 backtestport

backtestport 是面向策略开发者的 MCP 服务和命令行客户端,可连接托管的 Backtest360 引擎。它支持验证和比较策略、运行回测、评估信号并获取市场与宏观数据,但不提供交易下单功能。

主要功能

  1. 01验证策略文档
  2. 02运行并比较回测
  3. 03评估最新信号
  4. 04获取市场与宏观数据
  5. 05浏览指标和模板

适用场景

  1. 01运行前检查策略
  2. 02在相同数据上比较策略
  3. 03查看标的价格历史
  4. 04查询宏观经济序列

MCP 相关

向 MCP 客户端提供 Backtest360 引擎、策略、回测、市场数据和宏观数据相关工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-backtestport": {
"command": "npx",
"args": [
"-y",
"@reneturcios/backtestport"
]
}
}
}
启动命令npx -y @reneturcios/backtestport

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

安装包
npm@reneturcios/backtestport0.1.0
ocighcr.io/cloudcorprecords/backtestport:0.1.0

工具

19

收录的工具列表 · 更新于 1 周前

此工具无需参数。

详细介绍

backtestport

无需搭建自己的引擎,即可回测交易策略。backtestport 是 Backtest360 托管式回测引擎的轻量客户端:你只需提供策略文档,它就会验证文档、运行回测、评估最新信号、使用相同数据比较多种策略,并获取引擎可处理的市场和宏观经济数据,以及编写策略所需的指标目录、模板和参考数据。

这只是一个回测客户端。它不包含实盘交易、下单或账户工具,它执行的任何操作都不会转移资金。

除下文所述的输出字节数上限外,响应内容与引擎返回的内容完全一致:不会进行截断、重命名或摘要。

配置

四个环境变量用于控制客户端:

  • BACKTEST360_API_KEY(必需)——每次请求都会通过 X-API-Key 请求头发送此密钥。未设置时,所有工具都会在发出任何请求之前失败,并返回 BACKTEST360_API_KEY is not set。
  • BACKTEST360_ENGINE_URL(可选)——引擎基础 URL。默认为 https://api.backtest360.com。
  • BACKTEST360_MCP_TIMEOUT(可选)——每个请求的超时时间,单位为秒,默认为 300。请求运行时间超过此值时会失败,并返回 backtest360 request timed out。
  • BACKTEST360_MCP_MAX_OUTPUT_BYTES(可选)——响应大小上限,单位为字节,默认为 100000。超过上限的响应正文会被截断至上限,并在末尾追加一行 {"truncated_by_mcp": true},以免庞大的权益曲线淹没调用方。

读取结果

引擎有两种看似失败、实则不然的响应:

  • 当策略文档存在问题时,策略验证会返回 {valid: false, errors: [...]}。这是正常结果——错误信息经过结构化处理且可定位,便于你修复文档。
  • 引擎拒绝执行回测时,会返回 {accepted: false}。这也是正常结果。

真正的失败会以错误形式返回:当引擎发送 Retry-After 请求头时,HTTP 429 会返回 backtest360 rate limited (HTTP 429); retry after <value>(如果未发送该请求头,则不包含后缀);任何其他非 2xx 响应都会返回 backtest360 error: HTTP <status>;无法连接引擎时会返回 backtest360 unreachable。

策略参数(strategy,以及 strategies 中的每一项)可以是 JSON 对象或 JSON 字符串;发送前会解析字符串。无法解析的字符串会返回 strategy is not valid JSON。

三个参数用于控制回测运行:

  • response_detail——summary(默认)、stats 或 full:控制返回多少回测结果。
  • max_series_points——返回序列长度上限,默认为 500;必须是至少为 2 的整数,并会在发出任何请求前于本地进行检查(max_series_points must be an integer >= 2)。
  • include——可指定 trades、equity_curve、monthly_returns、yearly_returns 和 signal_diagnostics 中的任意项,每项都会将对应序列添加到回测结果中。

工具

发现与账户:

  • engine_info — 引擎版本、API 合约、运行状况。
  • get_me — 配置的密钥可以执行哪些操作:权限范围、限制、当前用量、能力标志。
  • get_catalog — 参考目录(运算符、执行模式、停止类型、仓位规模方法、K 线频率、指标分区);传入 catalog 可仅获取一个目录。
  • list_indicators — 发现指标并查看各指标的参数架构;search 可缩小列表范围。
  • list_templates — 预先设计的策略模板,以精简形式列出;传入 id 时可完整查看单个模板。
  • get_strategy_schema — 策略文档的 JSON Schema。

策略与运行:

  • validate_strategy — 检查策略文档,但不运行。
  • run_backtest — 运行回测;symbol、start、end、上述塑形参数以及 data(作为对象内联提供的 K 线)均为可选。
  • get_latest_signal — 仅评估最近一根 K 线;不计算盈亏。
  • compare_backtests — 在相同数据上并排运行多个策略。
  • compute_stats — 根据外部生成的 returns 序列计算指标集。

市场与宏观数据:

  • search_tickers / list_tickers — 可获取数据的标的范围。
  • get_data_range — 某标的可用历史数据和 K 线数量估算。
  • get_ticker_info — 一次调用即可获取标的身份信息和数据覆盖范围。
  • get_quote — 某标的最新可用价格。
  • get_price_history — 指定日期范围内的 OHLCV 历史数据(start、end、frequency;使用服务端数据时,引擎会将 K 线固定为 1d——该参数仍会被接受并转发)。
  • list_macro_series / get_macro_series — 宏观经济序列目录,以及某个序列在可选日期范围内的观测值。
端点来源说明

原项目的 README 明确列出 19 个工具、塑形参数的语义、带默认值的 4 个环境变量、X-API-Key 标头,以及将验证结果和引擎拒绝视为数据的规则。以下线路路径为还原内容,并已标注:GET /engine/info、GET /me、GET /catalogs、GET /indicators、GET /templates[/{id}]、GET /strategy/schema、POST /strategy/validate、POST /backtests、POST /signals/latest、POST /backtests/compare、POST /stats、GET /tickers/search、GET /tickers、GET /tickers/{symbol}/data-range、GET /tickers/{symbol}、GET /tickers/{symbol}/quote、GET /tickers/{symbol}/history、GET /macro、GET /macro/{series}——均位于配置的基础 URL 下,路径段和查询值均经过 URL 编码。

CLI

每个工具都是一个子命令,接受一个 JSON 参数字符串:

npx @reneturcios/backtestport engine_info '{}'
npx @reneturcios/backtestport validate_strategy '{"strategy":{"name":"sma-cross","rules":[]}}'
npx @reneturcios/backtestport run_backtest '{"strategy":{"name":"sma-cross"},"symbol":"AAPL","include":["equity_curve"]}'
npx @reneturcios/backtestport get_quote '{"symbol":"AAPL"}'
npx @reneturcios/backtestport --version

输出为工具的结果文本(成功时为上游 JSON)。退出码:成功时为 0,运行时错误时为 1(包括缺少密钥、验证失败或上游失败),用法错误时为 2。

MCP 服务

npx -y @reneturcios/backtestport mcp

MCP 客户端配置:

{
  "mcpServers": {
    "backtestport": {
      "command": "npx",
      "args": ["-y", "@reneturcios/backtestport", "mcp"],
      "env": {
        "BACKTEST360_API_KEY": "<your key>"
      }
    }
  }
}

Docker

docker run -i ghcr.io/cloudcorprecords/backtestport
docker run --rm ghcr.io/cloudcorprecords/backtestport get_quote '{"symbol":"AAPL"}'

开发

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (fake fetch only, no network)
npm run dev     # run the CLI from source

许可证

MIT — 版权所有 (c) 2026 Rene Turcios

评论

支持 Markdown

第一次接触 MCP?

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

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