RE:CZ

Signal Trader 访谈纪要与事件溯源设计草案

资本持久战

👤 金融交易系统工程师、产品经理、审计人员,关注系统设计、分账精度和可审计性
本文记录了围绕 LOGS/71 的 Signal Trader 设计访谈,旨在将理念收敛为可实现的系统规则。核心内容包括:Signal Trader 必须遵循资本持久战原则,信号最小语义为 product_id + direction,名义价值决策权在 Signal Trader,多信号采用净额合并执行,以订阅 ID 作为分账粒度,隔离原则不可破坏。资金与分账方面,设立投资者独立缓冲池,VC 计算支持懒评估。执行策略优先使用市价单,记账采用双轨制。异常处理强调持仓中不允许系统主动平仓。审计系统采用事件溯源机制,审计日志即事件流,状态由 reducer 重放得到,确保可追溯、一致性和可重放。文章还列出了 v1 最小事件清单和下一步计划,旨在推进系统可证明正确,进入可审计、可扩展、可实盘的工程阶段。
  • ✨ Signal Trader 核心约束包括以损定仓、信号语义、名义价值决策权等
  • ✨ 采用事件溯源审计系统,审计日志即事件流,状态由 reducer 重放
  • ✨ 多投资者分账以订阅 ID 为粒度,设立独立缓冲池,隔离原则不可破坏
📅 2026-03-12 · 1,196 字 · 约 5 分钟阅读
  • Signal Trader
  • 事件溯源
  • 分账规则
  • 审计系统
  • 工程落地
  • 设计草案
  • 访谈纪要

Signal Trader 访谈纪要与事件溯源设计草案

现在是 2026 年 3 月 12 日,星期四,下午。

今天围绕 LOGS/71 的 Signal Trader 设计,做了一轮聚焦工程落地的访谈。目标是把理念约束收敛成可实现的系统规则,尤其是多投资者分账精度、隔离原则和审计可重放能力。

本次确定的核心约束

  1. Signal Trader 必须遵循资本持久战原则:以损定仓、风险硬约束、资本效率最大化。
  2. 信号最小语义是 product_id + direction(-1/0/1)stop_loss_ratio 可选;时间以 Signal Trader 接收时刻为准。
  3. 名义价值决策权完全在 Signal Trader,信号侧不能注入仓位强度自由度。
  4. direction=0 是强语义:立即平当前仓,并强制保持空仓。
  5. stop_loss_ratio 在持仓过程中不能变更;变更仅下一次开仓生效。
  6. 若开仓需要止损但缺失 stop_loss_ratio拒绝开仓
  7. 同品种多信号采用净额合并执行;完全相抵时用盘口 mid 统一清算。
  8. 多订阅单位存在时,以“订阅 ID”作为分账粒度;一个投资者可有同信号多订阅。
  9. 隔离原则不可破坏;投资者立即撤资产生的成本由该投资者单独承担。
  10. 系统优先优化多投资者分账精确性(MVP 优先级最高)。

资金与分账规则

投资者独立缓冲池

  • 残差不进公共池,进入投资者维度独立缓冲池
  • 缓冲池资金始终属于该投资者,只是受最小精度限制,可能暂不可提现。
  • 缓冲池是该投资者 VC 体系的一部分,不存在“并回 VC”的额外动作。

VC 计算触发

  • 允许在多类事件触发 Lazy Evaluate(信号触发、订阅变更、查询、定时)。
  • 核心约束是避免频繁转账动作,优先做账本计算而非链上/外部资金动作。

执行与成交策略

  1. 当前阶段优先使用市价单追入,优先保证成交。
  2. 记账采用双轨:
    • 下单成功记执行事件;
    • 成交回报再记成交事件与仓位账本变化。
  3. 完全内冲抵(无外部成交)时:
    • 使用盘口 mid 做统一清算;
    • 记录 mid 取值来源和取值时刻审计日志。

异常处理原则

  • 持仓中不允许系统主动平仓(除非信号显式给出 direction=0)。
  • 信号侧抖动不设冷却时间;在 VC 资金耗尽前,不人为降频。
  • direction=0 到来时即便无仓位,也记成功审计事件,用于验证信号链路健康。
  • 重点告警项:短期内大量拒单。

审计系统:Action / Reducer 重放机制

本次明确采用:审计日志即事件流,状态由 reducer 重放得到

这本质上是 Event Sourcing:

  • 审计日志 append-only,不做物理回滚。
  • 系统状态(仓位、VC、分账)由事件重放得到。
  • 同一事件流 + 同一 reducer 版本,必须得到确定性一致状态。

事件分层建议

  1. Intent*:信号意图层(例如收到信号、目标仓位变更)。
  2. Execution*:执行层(下单、拒单、成交回报)。
  3. Ledger*:账本层(仓位/VC/分账结果落账)。

拒单语义(关键)

拒单不是“删除历史”,而是“追加补偿事件”:

  1. 记录 IntentCreated
  2. 尝试执行,下单被拒则记录 OrderRejected
  3. 追加释放占用的补偿事件(如 IntentReleased)。
  4. 仓位账本仅由成交事实驱动,不因被拒意图而改变。

这样可以兼顾三点:

  • 审计可追溯(历史不丢失)
  • 账本一致性(不把失败执行写成成功持仓)
  • 可重放排障(能解释每一步为什么没成交)

v1 最小事件清单(草案)

  1. SignalReceived
  2. IntentCreated
  3. OrderSubmitted
  4. OrderRejected
  5. OrderAccepted
  6. OrderFilled
  7. InternalNettingSettled
  8. PositionUpdated
  9. InvestorLedgerUpdated
  10. BufferAdjusted
  11. SubscriptionUpdated
  12. SignalForcedFlatHandled (direction=0 路径)
  13. MidPriceCaptured
  14. AlertTriggered

下一步

  1. 先把事件 schema(字段、幂等键、版本号)定稿。
  2. 画出 reducer 状态机(按 Intent/Execution/Ledger 三层拆分)。
  3. 补一组“可重放一致性”回归用例(拒单、部分成交、完全冲抵、撤资残差)。
  4. 以“多投资者分账精度”作为第一验收标准推进实现。

这次访谈的价值在于:我们把“理念正确”推进到了“系统可证明正确”。在这个基础上,Signal Trader 才能真正进入可审计、可扩展、可实盘的工程阶段。

See Also

Referenced By