每日模拟盘¶
TraderHarness 的每日模拟盘复用回测中的同一个 ToolAgent、阶段协议、条件单与 TradingBus.place_order() 撮合路径。它不是另一套简化策略执行器,因此盘前研究、开盘两段、 尾盘两段、工具纠错和 Agent 记忆都保持可审计。
多 Agent 同场对比¶
一个模拟盘会话可以选择 1–4 个 Agent。每个 Agent 拥有完全隔离的现金、持仓、条件单、成交记录、 净值曲线和错误状态,但使用同一个交易日、初始资金、行情截止点、撮合规则与费用模型。页面会把多条 净值曲线、实时排名和 Agent 状态放在同一视图中,点击选手即可切换其持仓、交割、模型判断与工作轨迹。
为保持确定性并避免共享内存行情帧竞争,同一交易日内的 Agent 按顺序执行,而不是并发修改环境; 每个 Agent 仍只看到对应阶段截止时刻之前的数据。因此该模式适合公平的策略与 Agent 对比,不用于 衡量模型并发延迟。
分钟行情与重要信息播报¶
模拟盘会把关注池内的最新价格、日内涨跌和最近分钟量比聚合成“市场异动雷达”,显著价格或成交量 变化会提高展示优先级。播报台同时展示以下点时安全信息:
- Agent 持仓、观察清单和条件单相关公司的公告;
- 央行、证监会、国务院、财政部、发改委等高影响政策快讯;
- 数据源标记为高优先级的财经快讯。
实时快讯每个轮询周期最多请求一页,并复用数据管线的限速、退避与熔断。页面只展示去重后的重要项目, 完整新闻数据仍由 Agent 通过原有点时安全工具读取。
两种时钟¶
- 实时 1 分钟:用于当天或未来交易日。开市后每 60 秒拉取持仓、观察清单和活动条件单涉及的 小型关注池;11:30–13:00 午休停止请求。每个 Agent 决策窗口只会看到当时已经完成的 5 分钟聚合 bar,不能看到未来数据。
- 历史加速验收:立即推进四个决策窗口。最近五个交易日优先使用公开 1 分钟快照;不可用时明确 标记并降级到本地 canonical 5 分钟数据。此模式用于开发验收,不冒充实时行情。
默认关注池上限为 8 只,轮询周期 60 秒,相当于约 0.13 请求/秒。即使把上限调到 20、轮询缩短到 允许的 15 秒,理论值也约为 1.33 请求/秒,仍低于默认 Eastmoney 协作预算 2.5 请求/秒。Eastmoney 断线时会进入五分钟冷却,Sina 只补拉缺失代码,不会同时向两个源重复请求;其独立预算为 2 请求/秒。 每个供应商的请求继续经过共享的最小间隔、Retry-After、指数退避和 403/429 熔断;系统不会使用 代理池绕过上游限制。
使用¶
启动本地研究台后打开 /paper:
- 选择 1–4 个 Agent、交易日、时钟模式和每个账户的虚拟资金;
- 启动每日模拟盘;
- 对比净值与排名,查看重要快讯、分钟异动、持仓、交割、工具/阶段轨迹和模型判断;
- 需要终止时使用“安全停止”,不会强杀正在写入的审计状态。
模拟盘状态写入 ~/.traderharness/paper/<session-id>/state.json,所有界面事件顺序追加到 events.jsonl,完整模型请求、响应、工具参数和工具返回写入 trajectory.jsonl。页面底部可以直接 下载事件审计和完整轨迹。服务重启不会伪装成继续运行:中断会标记为失败,已产生的审计日志仍然保留。 “安全停止”采用协作式取消;正在途中的模型响应返回后不会再执行其中的订单工具,并以 cancelled 正常收口。
审计工作台会把工具参数与返回值解析为字段视图;execute_code 等工具中的 Python 代码使用带行号、 独立滚动和复制按钮的代码视图展示,不再要求用户阅读转义后的 JSON 字符串。Results 页面复用同一 结构化渲染组件,因此历史回测和模拟盘具有一致的轨迹阅读体验。
行情完整性规则¶
- 持仓股票的 1 分钟行情缺失时停止撮合,绝不使用陈旧价格替代;
- 观察清单中非持仓股票缺失时显示降级状态,并继续保留其他可验证标的;
- 1 分钟数据只用于形成已经完成的 5 分钟窗口,撮合仍遵循 A 股涨跌停、手数、T+1 和费用规则;
- 全市场研究继续使用本地点时安全的日线、公告、新闻、基本面和估值数据;不会每分钟扫描全市场。
研究用途
模拟盘使用虚拟资金,仅用于 Agent 评估和软件研究,不是实盘交易接口,也不构成证券投资建议。 公开展示时应同时披露数据延迟、虚拟成交、费用模型和失败记录。