描述行情处理、策略执行、下单、对冲和降级的关键步骤,确保团队在实现与调试时对事件顺序达成共识。
sequenceDiagram
participant WS as Pacifica WS
participant MD as MarketDataAdapter
participant SB as ShadowBook
participant GM as GridMaker
participant SC as StrategyCoordinator
participant GOC as GlobalOrderCoordinator
participant RE as RiskEngine
participant OR as OrderRouter
WS->>MD: book.BTC update (seq, bids, asks)
MD->>SB: applyIncrement()
Note right of SB: 校验 seq<br/>更新 mid, spread
loop tradingInterval
GM->>SB: getMid()
SB-->>GM: mid price
GM->>GM: 计算网格差额 / Delta
GM->>SC: emit intents[]
SC->>SC: 按优先级去冲突
SC->>GOC: intents[]
GOC->>GOC: STP / 自成交检查
GOC->>RE: intent
RE->>RE: preCheck()
RE-->>GOC: OK
GOC->>OR: sendLimit()
OR->>OR: 滑点守卫 / 节流
OR->>Pacifica: POST /orders
OR-->>GOC: orderId
end
GridMaker 在 onTimer 内调用一次,返回的意向批量处理。RiskEngine.preCheck 抛错,StrategyCoordinator 记录失败并等待下一周期。当前实现差异:代码中尚未启用
StrategyCoordinator/GlobalOrderCoordinator,GridMaker会直接调用OrderRouter.sendLimitChild()。待协调器上线后,请将实现与上述流程对齐并更新此注释。
sequenceDiagram
participant WS as Pacifica WS
participant MD as MarketDataAdapter
participant SB as ShadowBook
participant GM as GridMaker
participant HE as HedgeEngine
participant RE as RiskEngine
participant OR as OrderRouter
WS->>MD: fills.maker fillEvent
MD->>SB: update position snapshot
MD->>GM: onFill(fill)
GM->>GM: 更新 Delta / 重挂对手单
GM-->>HE: enqueueDelta(symbol, delta)
HE->>HE: PI 控制计算需要对冲量
HE->>RE: preCheck(intent: hedge)
RE-->>HE: OK
HE->>OR: sendIOC()
OR->>Pacifica: POST /orders (IOC)
Pacifca-->>OR: fill | partial | reject
alt success
OR-->>HE: orderId
HE->>RE: reportFill()
else failure
OR-->>HE: error
HE->>HE: 重试 <= retryMax
HE->>Telemetry: hedge_failure_count++
end
minIntervalMs 与 maxExposureSec。HE 触发强制市价平仓并记录 incident。sequenceDiagram
participant WS as Pacifica WS
participant MD as MarketDataAdapter
participant SB as ShadowBook
participant MS as MicroScalper
participant SC as StrategyCoordinator
participant GOC as GlobalOrderCoordinator
participant RE as RiskEngine
participant OR as OrderRouter
WS->>MD: trade stream
MD->>SB: update trade stats
SB-->>MS: onTrade()
MD->>MS: onBook() (spread, OBI)
MS->>MS: 判断触发条件 / 冷却
MS-->>SC: intents (passive + taker legs)
SC->>SC: 合并 grid & scalper
Note right of SC: 剥头皮优先级低于网格<br/>冲突时保留网格
SC->>GOC: intents
GOC->>RE: preCheck
RE-->>GOC: OK
GOC->>OR: sendLimit / sendIOC
StrategyCoordinator 需按顺序传递。strategy_mode='both',GridMaker 生成的挂单优先。sequenceDiagram
participant RE as RiskEngine
participant DP as DegradationPolicy
participant OR as OrderRouter
participant STR as StrategyCoordinator
participant RUN as Runner
Note over RE: 每 1s 检查指标<br/>PnL / Delta / HedgeFailure / DataGap
RE->>RE: checkKillSwitch()
alt 无异常
RE-->>DP: { action: 'NONE' }
else Kill-switch
RE-->>DP: { action: 'HALT', reason }
DP->>OR: cancelAll()
DP->>STR: pauseStrategies()
DP->>Telemetry: emit incident
DP->>RUN: notify operator
else 降级
RE-->>DP: { action: 'REDUCE_ONLY' }
DP->>STR: enterReduceOnly()
end
sequenceDiagram
participant OPS as Operator
participant CFG as ConfigService
participant TEST as Backtest Harness
participant CAN as Canary Runner
participant PROD as Live Runner
OPS->>CFG: 提交新 config.yaml
CFG->>CFG: zod 校验
CFG-->>OPS: 校验通过/失败
OPS->>TEST: 触发 backtest --smoke
TEST-->>OPS: 结果 (EV, Sharpe, delta_abs)
alt 结果合格
OPS->>CAN: reload config (single symbol)
CAN->>Telemetry: 推送 KPI (10 分钟)
CAN-->>OPS: KPI 达标?
alt 达标
OPS->>PROD: reload config 全量
PROD->>Telemetry: 监控 30 分钟
else 回滚
OPS->>CAN: rollback config
end
else 回滚
CFG->>CFG: restore previous version
end
TRACE_ID 生命周期:
StrategyIntentCreated → IntentValidated → OrderSubmitted → OrderAcknowledged →
FillReceived → HedgeTriggered → HedgeCompleted → ExposureSnapshotUpdated → TelemetryFlushed
traceId 传递下去,便于事故回放。