跳到主要内容
AI教程

使用 Calibrain Harness 对交易分类器进行前向测试

了解如何安装 Calibrain Harness,配置模型和 Bybit 测试网凭据,运行其终端,检查预测结果,启用模拟交易,评估模型能力,并应用其校准、执行和风险控制功能。

使用 Calibrain Harness 对交易分类器进行前向测试

什么是 Calibrain Harness?

Calibrain Harness 是一个用于高速分类模型前向测试的开源系统。它将受支持的模型连接到永续合约市场数据,在每根已收盘的K线上提出可标注问题,将返回的概率转换为期望值,并可选择仅在Bybit 测试网上执行符合条件的交易。

该项目结合了两个相关工具:交易机器人和模型评估测试框架。每次预测都会被保存,并在之后与市场结果进行比较,包括未产生交易的预测。这使模型质量能够与手续费、滑点、执行和策略规则的影响区分开来。

重要提示: Calibrain Harness 正在积极开发中,属于研究软件,不构成金融建议。其交易主机已硬编码为 Bybit 测试网,且没有主网切换选项。不同提交版本之间的接口、默认设置和问题集可能会发生变化。

系统工作原理

测试框架不会要求模型回答“买入、卖出还是持有”,而是提出可以根据之后的价格数据进行客观标注的问题。例如,在固定时间范围内,哪个边界会先被触及:正向目标还是负向止损。

  1. 收集主网公开市场数据、新闻、宏观背景、订单簿信息和衍生品数据。
  2. 特征构建器创建紧凑且带单位标注的状态,并为相关交易品种和区间加入历史基准概率。
  3. Kairos 或 Jev 接收该状态以及七个带类型、可标注的问题。
  4. 严格验证响应。无效响应会被记录为错误,而不会被解释为负向预测。
  5. 校准层将模型概率与历史基准概率进行融合。
  6. 策略以 R 为单位计算期望值,应用入场门槛,并确定风险规模。
  7. 如果启用了自动交易,符合条件的订单会被发送到 Bybit 测试网。
  8. 请求、响应、标签、运行记录和交易记录都会存储在 SQLite 中,用于评估和报告。

信号和标签使用主网数据,因为测试网市场数据可能是合成数据,也可能存在偏差。但订单始终只会在测试网上执行,并根据测试网可用的盘口深度确定规模。

主要功能

多种分类模型

目前,该测试框架支持由 DMind 通过 Minara Cloud 提供的 Kairos,以及由 TypeSafe 提供的 Jev。两者使用相同的 System One 请求格式、问题集、验证机制、策略和评估流程。

决策、校准权重、评估和报告均按模型分别保存。实时切换模型会启动一次新的运行,并且只有在机器人没有持仓时才允许切换,从而避免混合不同模型的结果。

彭博风格终端

Next.js 终端通过一个 WebSocket 接收实时更新。它提供图表、模型信号、校准后和原始期望值、持仓、账户信息、订单簿和深度视图、市场地图、新闻、强平信息、衍生品数据,以及包含每次模型请求和响应的决策日志。

内置校准与评估

Calibrain Harness 使用公式 w · model + (1 − w) · base rates 将模型概率与特定交易品种的基准概率进行融合。权重初始为 0.5,当某个问题累计至少 100 个已标注结果后,每 15 分钟重新拟合一次。

评估包括 Brier 分数和排序概率分数、相对于气候基准和所提供基准概率的技能评分、AUC、可靠性、期望校准误差、概率积分变换分析、期望值排序、一致性探测、执行质量,以及每次运行的交易结果。

测试网执行控制

入场使用 IOC 限价单,并以相对于测试网最佳价格的上限进行限制。目标价可以作为仅减仓限价单挂出;托管止损则使用主网可执行价格触发,并在测试网上通过受限的仅减仓 IOC 订单平仓。系统还包括时间止损、标记价格后备机制、每日亏损上限、持仓上限、投资组合风险限制和紧急停机开关。

前置条件

安装前,请准备以下内容:

Bybit 密钥应具有用于订单和持仓的合约权限。请勿授予提现权限。

安装 Calibrain Harness

1. 克隆代码仓库

git clone https://github.com/zadescoxp/calibrain-harness.git
cd calibrain-harness

2. 创建 Python 环境

创建 Python 3.12 虚拟环境,安装依赖,并复制示例配置:

python3.12 -m venv .venv
.venv/bin/pip install -r requirements.txt
cp .env.example .env

将凭据添加到 .env,或稍后通过终端的 KEYS 命令输入。应用会从此文件读取密钥;该文件已被 gitignore 忽略,并应设置为仅所有者可访问。密钥不会存储在数据库中,也不会以完整形式发送到浏览器。

3. 构建终端界面

cd web-next
npm ci
npm run build
cd ..

这会在 web-next/out 中生成静态终端。Python 服务会提供界面、API 和 WebSocket,因此不需要单独运行生产环境 Node.js 进程。

4. 启动服务

.venv/bin/python -m ctb.server

打开 http://127.0.0.1:8800。服务器仅绑定本地地址 127.0.0.1,并拒绝跨源写入。

如果尚未构建 UI,该地址会显示一个包含构建命令的简短页面。API 和实时 WebSocket 仍然可用。

配置模型和凭据

在 .env 中使用 CTB_MODEL_PROVIDER 选择 Kairos 或 Jev:

CTB_MODEL_PROVIDER=kairos
KAIROS_API_KEY=your_kairos_key

对于 Jev,请使用:

CTB_MODEL_PROVIDER=jev
TYPESAFE_API_KEY=your_typesafe_key
CTB_JEV_MODEL=jev-1.14.0

文档中指定的 Jev 模型固定为 jev-1.14.0,但可以通过 CTB_JEV_MODEL 覆盖。Kairos 凭据必须属于已启用 Kairos 的 Minara Cloud 群组。

使用 .env.example 提供的变量名添加 Bybit 测试网凭据。切勿提交 .env 或 data/ 下的文件。

先以仅观察模式运行

机器人启动时不会下单。在此模式下,它会继续收集市场数据、调用所选模型、记录决策并为预测添加标签。建议从此模式开始,因为它可以让你在不开启测试网仓位的情况下验证连接并研究模型行为。

  1. 启动 Python 服务。
  2. 在 127.0.0.1:8800 打开终端。
  3. 确认市场数据和模型决策已经显示。
  4. 在 LOG 和 EVAL 页面检查错误与延迟。
  5. 仅当设置正常运行时才启用 AUTO-TRADE。

使用终端

主要页面

  • MON、F1:显示自选列表、图表、模型标记、账户、仓位、市场地图、订单簿、新闻、衍生品、资金流数据和决策成交单。
  • EVAL、F2:显示校准结果、发现、EV 排名、问题得分、一致性探测、运营指标、盈亏和执行质量。结果可按模型、运行、交易品种、问题集和时间范围筛选。
  • TRADES、F3:列出单个运行和交易,包括参考价格、成交、滑点和精确 R 值。
  • NEWS、F4:展示新闻标题和 Kairos news_return 预测。新闻收益预测仅适用于 Kairos。
  • LOG、F5:显示系统事件和错误。

命令行示例

按 / 打开终端命令行。常用命令包括:

  • 输入 BTC 或 ETH 加载交易品种。
  • 输入 ASK 或 PRB 立即查询模型并运行一致性探测。
  • 输入 1M 到 4H 更改图表时间范围。
  • 输入 TF 5M 设置交易时间范围。
  • 输入 UNIV 选择交易品种范围。
  • 输入 POS 10 设置最大仓位数量。
  • 输入 KEYS 管理凭据。
  • 输入 HELP 显示终端帮助。

你可以通过功能键栏中的 MODEL 在 Kairos 和 Jev 之间切换。切换前机器人必须处于空仓状态。

谨慎启用测试网交易

观察决策并验证设置后,可在命令栏中使用 AUTO-TRADE 允许测试网下单。严格模式仅在经过校准的预测通过所有已配置的门槛时交易,包括最低预期价值、设置质量、方向一致性、收益分布一致性、交易场所偏差、仓位状态和做空权限。

探索模式默认禁用。设置 CTB_EXPLORATION=1 后,当严格门槛阻止交易时,系统可以在降低风险的情况下交易模型偏好的方向。其目的是收集真实执行数据,并不表示严格策略发现了正向优势。

测试网流动性可能极其不足,且表现可能与主网不同。项目早期的前向测试发现,执行质量可能主导测试网盈亏。应将测试网结果视为研究数据,而不是未来盈利能力的证据。

使用紧急停止开关

终端中的 KILL 按钮会关闭机器人仓位、取消订单并停止系统。也可以在项目目录中触发相同操作:

touch KILL

在测试网上手动开立的仓位通常会显示,但不会由机器人管理。紧急停止开关是文档规定的例外。

运行测试和冒烟检查

在不访问网络的情况下运行单元测试:

.venv/bin/python -m pytest -q tests

向当前模型发送一次真实请求并验证其响应:

.venv/bin/python scripts/kairos_smoke.py SOLUSDT

明确指定 Jev:

.venv/bin/python scripts/kairos_smoke.py SOLUSDT --model jev

测试最小规模的测试网执行路径:开立多头仓位、验证止损,然后平仓:

.venv/bin/python scripts/testnet_smoke.py SOLUSDT long

这些冒烟脚本会发送真实的外部请求,因此运行前请确认所选交易品种和凭据。

了解重要配置选项

决策时机和括号订单

  • CTB_DECISION_TF默认为5,表示根据已收盘的五分钟K线做出决策。
  • CTB_HORIZON_BARS默认为24,在默认时间周期下形成两小时的预测周期。
  • CTB_ATR_TF默认为15,用于止损幅度计算。
  • CTB_SL_ATR和CTB_TP_ATR分别默认为1.5和2.5 ATR。
  • CTB_MIN_SL_BP和CTB_MAX_SL_BP默认将止损距离限制在40–300个基点。

严格策略门槛

  • CTB_MIN_EDGE_R=0.15设置默认的最低校准优势值。
  • CTB_MIN_SETUP_QUALITY=1.5控制建仓质量阈值。
  • CTB_MIN_DIRECTION_MARGIN=0.03要求校准后的方向与拟议交易方向之间达到指定的最小差值。

风险限制

  • CTB_RISK_PER_TRADE_PCT=0.5定义触发止损时预期损失的权益百分比。
  • CTB_MAX_POSITIONS、CTB_MAX_SAME_SIDE和CTB_MAX_OPEN_RISK_PCT限制投资组合敞口。
  • CTB_MAX_LEVERAGE=3和CTB_MAX_NOTIONAL_USDT=5000默认提供硬性上限。
  • CTB_DAILY_LOSS_LIMIT_PCT=3设置默认的每日亏损上限。

成本与执行

  • CTB_TAKER_FEE_BP=5.5和CTB_SLIPPAGE_BP=2用于为预期收益和标签提供成本模型输入。
  • CTB_MAX_ENTRY_SLIP_BP=10设置默认的入场价格滑点上限。
  • CTB_EXIT_MODE=managed启用文档所述的托管退出流程。

每次只更改一组设置,并在比较策略时启动新的运行。每次运行都会保存配置快照,便于后续分析。

高级评估提示

将模型与基线进行比较

看起来能够盈利的预测不一定有用。检查模型是否优于气候学基线,以及输入中包含的准确历史基准率。校准层会在带标签的结果表明模型提供的信息很少时降低其影响。

区分预测能力与交易结果

使用EVAL检查所有带标签的决策,而不仅是交易。预测指标衡量模型的概率预测能力,而测试网盈亏衡量模型、策略、成本、风险仓位和执行共同产生的影响。

考虑决策重叠

标签从每次决策之后的第一根一分钟K线开始,从而避免前视偏差。如果一根K线同时触及止盈和止损,标签将其计为止损。不过,连续决策的预测周期可能重叠,因此原始样本数量可能高估统计独立性。README建议每个交易对至少等待数百个带标签的决策后再得出结论。

检查一致性

使用重复探针测量确定性,使用镜像探针判断反转看涨和看跌市场特征是否会适当地改变模型答案。同时检查多头与空头之间的一致性,不要依赖单一孤立指标。

导出报告

在EVAL中使用EXPORT MINARA REPORT生成包含评估结果的Markdown报告。在解读比较结果前,可按模型、运行、交易对、问题集或时间周期进行筛选。

管理交易对和运行

UNIV命令会列出按成交额排名前100的USDT永续合约,其中仅包含在测试网上市的合约。结果包括深度和价差信息,并标记流动性薄弱的订单簿以及股票或商品永续合约。你最多可以选择30个交易对,但需受模型请求预算限制。服务会自行重启以应用交易对范围变更。

每个决策和交易都会分配给一个活动运行。要通过程序创建运行,请在没有机器人交易持仓时发送POST /api/runs/start。在更改模型、问题、风险规则或执行设置时,启动单独的运行非常有用。

处理界面

拉取更改或编辑前端后,重新构建静态导出:

cd web-next && npm run build

之后重新加载浏览器;无需重启Python服务器。

如需实时重新加载开发,请保持Python服务器运行,并单独启动Next.js:

cd web-next && npm run dev

打开http://localhost:3000。开发界面通过127.0.0.1:8800与API和WebSocket通信。

使用以下命令检查前端类型:

cd web-next && npx tsc --noEmit

安全与运维实践

  • 确认主机仍为api-testnet.bybit.com;项目有意不提供主网交易开关。
  • 先以仅观察模式开始,并在启用测试网下单前检查模型错误。
  • 使用不具备提现权限的Bybit凭据。
  • 不要将.env和data/目录纳入版本控制。
  • 监控交易场所偏差、成交率、延迟、滑点和退出原因,不要只关注盈亏。
  • 在测试执行前确保可以随时访问紧急停止开关流程。
  • 提交更改前运行Python测试和前端类型检查。

结论

Calibrain Harness提供了一种结构化方法,用于判断快速分类模型是否为永续市场预测增加了可测量的信息。它在一个本地终端中结合了客观问题、历史基准率、概率校准、严格验证、测试网执行和详细评估。

首先安装服务,配置 Kairos 或 Jev,并收集仅观察模式下的决策。数据和模型管线稳定后,在 Bybit 测试网上谨慎测试执行,保持各次运行相互独立,并基于大量样本将模型与其基线进行比较,而不要依赖短期盈亏。