SuperAPI AI 工具集

run-simulations

数据与分析

查看项目

更新于 10-16 10:48

技能介绍

用途

该技能用于协助设置和运行交易引擎模拟,并在运行前后进行诊断分析。当前阶段为双重焦点:验证 + 优化。技能说明中指出系统置信度约 85% 准确,模拟系统大体可信但仍存在差异,找出这些差异很关键。

技能建议在运行模拟之前调用,以辅助设置决策:配置选择、通过 collection 选择 segment、批量规模。

优先级

第一优先级:准确性差异。任何预期行为与实际行为之间的差距都可能是 bug 或误解,需要突出显示,包括:行为是否匹配配置参数、数据是否存在逻辑不一致、结果是否与策略应有产出一致。

第二优先级:利润优化。在系统可信的前提下,研究哪些配置表现最好、什么市场条件适合哪些策略、参数如何影响 PnL。

使用方式

用户输入优先。如果用户在调用技能时提供了任何参数、指令或上下文,这些优先于所有默认值。例如用户指定运行某配置、测试某些 segment 或提出特定问题,则按用户指定执行,不运行完整默认流程。默认行为仅在无参数调用时生效。

默认设置流程

  1. 选取多样化的配置和 segment,使用 segment collections(legacy filters 已弃用):查询可用配置 SELECT name, config FROM strategy_configs ORDER BY name;选择 10–20 个配置覆盖不同指标类型(EMA、RSI、Bollinger、combined)。
  2. 选择或创建 segment collection(v1 中仅支持 AND annotations),命令示例:
    • bun src/systems/trading-engine/bd-segments.ts list
    • bun src/systems/trading-engine/bd-segments.ts create --name=high-activity --annotations=high_activity --limit=100
    • bun src/systems/trading-engine/bd-segments.ts preview --name=high-activity
  3. 运行批量模拟:bun src/systems/trading-engine/batch-runner.ts --config-pattern="<pattern>" --collection=high-activity --save

推荐批量规模为每批 2,000–3,000 次模拟,约 30–60 秒(启用 tick caching),能提供统计上有效的结果,超过 3,000 在当前阶段收益不大。公式:配置数 × segment 数 = 总运行数(例如 20 配置 × 100 segment = 2,000 次运行)。

Batch Runner CLI 参考

位置:src/systems/trading-engine/batch-runner.ts 用法:bun src/systems/trading-engine/batch-runner.ts [options] 选项包括:--config=ID(-c,策略配置 ID,可指定多个)、--all-configs(-a,运行所有可用策略配置)、--config-pattern=PAT(-p,按名称模式匹配配置,SQL LIKE)、--strategy-type=TYPE(按策略类型过滤:volatility、arb、grid)、--collection=NAME|ID(-C,segment collection 选择器,必需)、--show-selection(预览解析后的 segment 列表并退出)、--capital=CENTS(初始资金,单位分,默认 10000 = $100)、--workers=N(-w,并行 worker 数,默认 8)、--save(-S,保存结果到数据库)、--dry-run(显示将运行什么但不执行)、--warmup-candles=N(指标预热,默认 50)、--db-pool-max=N(主批处理 DB pool 大小,默认 10)、--db-pool-max-worker=N(worker 进程 DB pool 大小,默认 3)。

示例:

# 在一个 segment collection 上运行单个配置
bun src/systems/trading-engine/bd-segments.ts create --name=swings100 --annotations=high_activity
bun src/systems/trading-engine/batch-runner.ts --config=abc123 --collection=swings100 --save

# 在一个 collection 上运行所有配置
bun src/systems/trading-engine/batch-runner.ts --all-configs --collection=swings50 --save

# 在指定 segment ID 上运行所有配置(snapshot collection)
bun src/systems/trading-engine/bd-segments.ts create --name=segment-set --segment-ids=949,950,951,952 --mode=snapshot
bun src/systems/trading-engine/batch-runner.ts --all-configs --collection=segment-set --save

# 在 high_activity segments 上运行匹配 "RSI-*" 的配置
bun src/systems/trading-engine/bd-segments.ts create --name=rsi-activity --annotations=high_activity
bun src/systems/trading-engine/batch-runner.ts --config-pattern="RSI-%" --collection=rsi-activity --save

# 空跑查看将执行什么
bun src/systems/trading-engine/batch-runner.ts --all-configs --collection=swings100 --dry-run

模拟后综合分析(始终运行)

技能要求模拟完成后运行以下全部诊断查询,以表格呈现结果:

  • 2.1 核心统计:每个配置的运行数、平均/标准差/最小/最大交易数。
  • 2.2 入场信号频率:计算入场间隔的平均值、中位数及小于 1 秒、5 秒、1 分钟的间隔数量。中位间隔小于 60 秒提示过度交易;健康配置间隔通常为分钟级(典型 20–30 分钟);小于 1 秒为主力红旗,说明指标持续触发。
  • 2.3 持仓重叠:平均和最大并发持仓数。
  • 2.4 持有时间分布:按时间段分桶(<30s、30–60s、1–2min、2–3min、3–4min、4–5min、5min+),统计交易数与平均 PnL。
  • 2.5 退出原因分析:按 exit_reason 统计交易数、平均 PnL 与占比。
  • 2.6 YES vs NO 双向分析:检查不对称性。YES/NO 表现显著不对称可能意味着价格转换或方向选择逻辑存在 bug。除策略明确偏好一侧外,两侧特征应相似。
  • 2.7 仓位规模验证:检查成交数量是否匹配配置的 maxTradeSize,是否有部分成交,并与 maxPositionPerMarket 比较。
  • 2.8 交易序列表现:按交易序号分桶(第 1 笔、2–5 笔、6–10 笔、11–20 笔、21 笔以上)查看平均 PnL 与胜率。
  • 2.9 市场片段分析:按 segment 定义统计运行数、交易数、平均运行 PnL 及 swing 数、reversion rate 等指标。
  • 2.10 运行健康检查:按状态统计运行数。若批处理后仍有 running 状态则说明有模拟崩溃。

日志分析(始终运行)

  • 查找最近模拟日志:ls -lt logs/sim/ | head -5
  • 采样日志内容并统计类别日志量(性能红旗:超过 100 万条指标日志):rg '"category"' "$LOG" | jq -r '.category' | sort | uniq -c | sort -rn
  • 从时间戳检查运行时长
  • 统计退出原因分布
  • 检查错误(level 50)和警告(level 40)

需关注的异常:不常见的退出原因(非 profit_target、time_limit、collapse、end_of_data)、错误级条目、疑似 bug 的模式(重复相同条目、字段缺失)。性能提示:日志文件超过 500MB 表示日志过多;超过 100 万条指标类别日志表示调试日志成为瓶颈。

性能分析

查询最近批次每秒运行数。预期吞吐为启用 tick caching 时 20–40 runs/sec。若低于 10 runs/sec,需排查:是否使用 tick cache、是否启用指标调试日志、worker 是否受 I/O 限制。

分析总结

应同时呈现准确性问题与利润洞察。先做准确性检查(优先级一):配置行为是否匹配参数、是否存在无法解释的模式或异常、指标是否逻辑合理。准确性问题优先,1% 的准确性 bug 可能使利润分析失效。准确性验证后再分析利润:哪些配置最赚钱、跨市场条件有哪些模式、是否有优化机会。

验证问题表列出了各观察项的预期行为与需调查方向,包括入场间隔、退出原因、YES vs NO 表现、仓位规模、持有时间、交易序列、指标触发等。

关键验证检查包括:指标触发频率(入场间隔是否符合指标周期,例如 EMA(20) 配合 60 秒 K 线需要 20 分钟数据,入场是否比这更快出现)、价格/方向一致性(YES 和 NO 应保持一致)。