Signal Trader 访谈纪要与事件溯源设计草案
现在是 2026 年 3 月 12 日,星期四,下午。
今天围绕 LOGS/71 的 Signal Trader 设计,做了一轮聚焦工程落地的访谈。目标是把理念约束收敛成可实现的系统规则,尤其是多投资者分账精度、隔离原则和审计可重放能力。
本次确定的核心约束
- Signal Trader 必须遵循资本持久战原则:以损定仓、风险硬约束、资本效率最大化。
- 信号最小语义是
product_id + direction(-1/0/1);stop_loss_ratio可选;时间以 Signal Trader 接收时刻为准。 - 名义价值决策权完全在 Signal Trader,信号侧不能注入仓位强度自由度。
direction=0是强语义:立即平当前仓,并强制保持空仓。stop_loss_ratio在持仓过程中不能变更;变更仅下一次开仓生效。- 若开仓需要止损但缺失
stop_loss_ratio,拒绝开仓。 - 同品种多信号采用净额合并执行;完全相抵时用盘口
mid统一清算。 - 多订阅单位存在时,以“订阅 ID”作为分账粒度;一个投资者可有同信号多订阅。
- 隔离原则不可破坏;投资者立即撤资产生的成本由该投资者单独承担。
- 系统优先优化多投资者分账精确性(MVP 优先级最高)。
资金与分账规则
投资者独立缓冲池
- 残差不进公共池,进入投资者维度独立缓冲池。
- 缓冲池资金始终属于该投资者,只是受最小精度限制,可能暂不可提现。
- 缓冲池是该投资者 VC 体系的一部分,不存在“并回 VC”的额外动作。
VC 计算触发
- 允许在多类事件触发 Lazy Evaluate(信号触发、订阅变更、查询、定时)。
- 核心约束是避免频繁转账动作,优先做账本计算而非链上/外部资金动作。
执行与成交策略
- 当前阶段优先使用市价单追入,优先保证成交。
- 记账采用双轨:
- 下单成功记执行事件;
- 成交回报再记成交事件与仓位账本变化。
- 完全内冲抵(无外部成交)时:
- 使用盘口
mid做统一清算; - 记录
mid取值来源和取值时刻审计日志。
- 使用盘口
异常处理原则
- 持仓中不允许系统主动平仓(除非信号显式给出
direction=0)。 - 信号侧抖动不设冷却时间;在 VC 资金耗尽前,不人为降频。
direction=0到来时即便无仓位,也记成功审计事件,用于验证信号链路健康。- 重点告警项:短期内大量拒单。
审计系统:Action / Reducer 重放机制
本次明确采用:审计日志即事件流,状态由 reducer 重放得到。
这本质上是 Event Sourcing:
- 审计日志 append-only,不做物理回滚。
- 系统状态(仓位、VC、分账)由事件重放得到。
- 同一事件流 + 同一 reducer 版本,必须得到确定性一致状态。
事件分层建议
Intent*:信号意图层(例如收到信号、目标仓位变更)。Execution*:执行层(下单、拒单、成交回报)。Ledger*:账本层(仓位/VC/分账结果落账)。
拒单语义(关键)
拒单不是“删除历史”,而是“追加补偿事件”:
- 记录
IntentCreated。 - 尝试执行,下单被拒则记录
OrderRejected。 - 追加释放占用的补偿事件(如
IntentReleased)。 - 仓位账本仅由成交事实驱动,不因被拒意图而改变。
这样可以兼顾三点:
- 审计可追溯(历史不丢失)
- 账本一致性(不把失败执行写成成功持仓)
- 可重放排障(能解释每一步为什么没成交)
v1 最小事件清单(草案)
SignalReceivedIntentCreatedOrderSubmittedOrderRejectedOrderAcceptedOrderFilledInternalNettingSettledPositionUpdatedInvestorLedgerUpdatedBufferAdjustedSubscriptionUpdatedSignalForcedFlatHandled(direction=0路径)MidPriceCapturedAlertTriggered
下一步
- 先把事件 schema(字段、幂等键、版本号)定稿。
- 画出 reducer 状态机(按
Intent/Execution/Ledger三层拆分)。 - 补一组“可重放一致性”回归用例(拒单、部分成交、完全冲抵、撤资残差)。
- 以“多投资者分账精度”作为第一验收标准推进实现。
这次访谈的价值在于:我们把“理念正确”推进到了“系统可证明正确”。在这个基础上,Signal Trader 才能真正进入可审计、可扩展、可实盘的工程阶段。