# Pacifica Delta-Neutral 策略架构设计

## 1. 设计目标
- 在 **Delta≈0** 约束下，通过被动做市与微剥头皮捕捉点差、Maker 返佣与短期均值回归收益。
- 全链路符合交易场所及监管要求：自成交预防、可审计日志、风控优先。
- 模块化 TypeScript 架构，可在实盘/回测之间复用同一套策略逻辑，支持多 venue 扩展与持续运维。

### 1.1 文档遵循
- 架构实施需与以下详细规范保持一致，任何偏离必须先更新对应文档并获评审认可：
  - `docs/API_CONNECTOR_SPEC.md`：连接层端点、签名与错误处理
  - `docs/MODULE_INTERFACES.md`：模块接口、依赖图与错误类型
  - `docs/SEQUENCE_FLOW.md`：行情、策略、执行、对冲、降级的时序
  - `docs/CONFIG_REFERENCE.md`：配置字段、默认值与热更新策略
  - `docs/TESTING_PLAN.md`：测试矩阵、验收指标
  - `docs/OPERATIONS_PLAYBOOK.md`：运维巡检、降级和恢复流程
  - `docs/MICRO_GRID_CONTROL.md` / `docs/MICRO_GRID_ROADMAP.md`：微网格闭环控制标准与分 Sprint 开发计划
- 代码实现、配置模板、测试计划及运维脚本发生变更时，需同步更新以上文档并在 PR 中引用。

## 2. 总体架构
```
┌───────────────────────────────────────────────────────────────┐
│                         Apps / Runners                        │
│  - live-runner  - canary-runner  - replay-runner (backtest)   │
└────────────┬─────────────────────────────┬────────────────────┘
             │                             │
      ┌──────▼────────┐            ┌───────▼───────────────────┐
      │ Strategy Bus  │            │ Risk & Compliance Engine │
      │ (MM, Scalper, │            │ (limits, STP, kill-switch│
      │ ExecutionPolicy)│          │ audit, policy gating)    │
      └─────┬──────────┘            └─────────┬────────────────┘
            │                                   │
     ┌──────▼─────────┐                  ┌──────▼───────────┐
     │ Order Router   │◄────Health──────►│ Telemetry & Logs │
     │ (child orders, │                  │ (Prom, Pino,     │
     │ slippage guard)│                  │  audit trail)    │
     └─────┬──────────┘                  └──────┬───────────┘
           │                                   │
   ┌───────▼──────────┐            ┌───────────▼──────────────┐
   │ Exchange Adapter │◄──────────►│ Market Data Pipeline     │
   │ (Pacifica, +N)   │ (WS/REST)  │ (shadow book, derived
data)│
   └────────┬─────────┘            └───────────┬──────────────┘
            │                                  │
      ┌─────▼──────────┐              ┌────────▼───────────┐
      │ Persistence    │              │ Backtest/Simulator │
      │ (PnL, fills,   │              │ (event replay, fee│
      │ configs, audit)│              │ model)             │
      └────────────────┘              └────────────────────┘
```

**架构优化说明**（2025-10 更新）：
- 新增 **Symbol Registry & Allocator**：管理多标的生命周期，动态分配全局风险预算
- 新增 **Global Order Coordinator**：跨账户 STP 检查，防止关联账户间的经济自成交
- 新增 **Strategy Coordinator**：协调 MM 和 Scalper 信号，避免方向冲突和重复对冲成本
- Exchange Adapter 支持多账户（Account A/B）管理，实现跨账户对冲
- Market Data Pipeline 增强延迟追踪，支持回测延迟注入防止前瞻偏差

## 3. 模块分解
### 3.1 App Runner 层
- `apps/runner`: 负责 DI 容器、配置加载与热更新、生命周期管理（启动、平滑关闭）。
- 提供 `live-runner`、`canary-runner`、`replay-runner` 三种应用入口，统一注入策略与引擎。

### 3.2 配置与密钥管理
- `.env`：API base、key、Ed25519 私钥、子账户等敏感信息。
- `config/config.yaml`：策略参数（symbols、mm、scalper、risk、hedge、telemetry），通过 `zod` 校验与热更新。
- 配置更新事件写入审计表，支持回滚与差异比对。

### 3.3 Symbol Registry & Allocator（`packages/registry`，新增）
- 动态管理多标的（BTC/ETH/SOL 等）的启动、暂停、卸载生命周期
- 全局风险预算分配：将总名义上限、回撤阈值按标的流动性与相关性分配
- 标的间相关性监控：检测多标的同时持仓时的隐性风险暴露
- 自动标的筛选器：基于流动性、spread、funding rate 相关性评分，动态启用/禁用标的
- 配置热更新时，协调各标的策略实例的参数同步

### 3.4 Global Order Coordinator（`packages/execution/globalCoordinator.ts`，新增）
- **跨账户订单注册表**：维护所有账户/venue 的挂单镜像（clientId + account + symbol + side + px）
- **跨账户 STP 检查**：
  - 在任一账户下单前，检查对手价是否来自关联账户的挂单
  - 若是对冲单（由 HedgeEngine 标记），允许跨账户匹配
  - 若是策略单（MM/Scalper），拒绝经济自成交
- **订单冲突检测**：检测同一标的上多个策略的订单是否方向相反或价格重叠
- **降级策略触发**：当检测到异常（如单账户延迟过高、对冲失败率>阈值），触发该账户的降级模式

### 3.5 Strategy Coordinator（`packages/strategies/coordinator.ts`，新增）
- **信号聚合与冲突解决**：
  - MM 和 Scalper 提交"意向订单"（intent）而非直接下单
  - 检测同一标的上的方向冲突（如 MM sell + Scalper buy）
  - 冲突解决策略：优先级（MM > Scalper）、合并同向订单、取消相反订单
- **净仓位变化输出**：将多个策略的意向订单合并为"净仓位变化"，避免对冲引擎频繁触发
- **策略隔离模式**：当某策略表现劣化（EV < 0 持续 N 分钟），自动暂停该策略
- **全局冷却管理**：跨策略的订单频率限制，避免触发 venue 限频

### 3.6 Exchange Adapter（`packages/connectors/pacifica`）
- `adapter.ts`：封装 REST 请求（下单、撤单、批量撤、持仓、资金费率、账户信息）。
- `signing.ts`：Ed25519 签名实现（确定性 JSON 序列化、时间戳、header 注入）。
- 限频器（token bucket）与重试策略，统一错误码映射。
- **多账户支持**（优化）：每个 adapter 实例绑定一个账户（address + subaccount），通过 `adapterRegistry` 管理 Account A/B。
- **对冲延迟追踪**（优化）：记录每笔对冲单从发起到成交的延迟，暴露 P50/P95/P99 指标。

### 3.7 市场数据管线（`packages/utils/shadowBook.ts`, `packages/utils/marketDataAdapter.ts`）
- 订阅 REST/WS 行情，合并增量，维护影子订单簿与本地时间戳；市场数据适配器负责定期刷新快照并推送事件。
- 提供派生特征：`mid`、`spread_bps`、`order_book_imbalance(k)`、短时波动率 `rv`、队列估算 `queue_alpha`。
- 对数据断流进行健康检查，异常时触发风险引擎 HALT。

### 3.8 Execution / Order Routing（`packages/execution/orderRouter.ts`）
- 对外接受策略订单（limit/IOC/FOK/postOnly/OCO 子单），路由至指定 adapter。
- 包含滑点守卫（对比影子簿 top of book）、`clientId` 去重、STP 检查（不得与本地挂单交叉）。
- 提供批量撤单、定时补单、状态回调接口。

### 3.9 Risk & Compliance（`packages/risk`）
- `RiskEngine`: 名义/库存/单笔上限，订单前置校验；实时记录 realized PnL，触发回撤熔断。
- **Kill-switch（增强）**：
  - **跨账户聚合模式**：计算 Account A + Account B 的总权益与总 PnL，避免单账户误杀
  - **多维度熔断触发器**：
    1. PnL 回撤超阈值（-0.5%）
    2. Delta 绝对值失控（>2x max_base_abs）
    3. 连续对冲失败次数 >3
    4. 行情数据断流 >3 秒
  - **时间窗口回撤**：基于滑动窗口（如 1 小时）计算回撤，而非从启动时刻开始
- 审计模块：记录信号、决策、风控审批、下单、成交、对冲全过程（trace id）。

### 3.10 策略层（`packages/strategies`）
- `MarketMaker`: 按 mid±δ 多层挂单；基于波动 regime 调整 spread/clip/reprice 周期。
- `MicroScalper`: spread 扩张 + 成交流不平衡触发；以 `ExecutionPolicy` 决定被动/主动模式、tp/sl 目标。
- **`GridMaker`（新增，备选策略）**：
  - 在价格区间内均匀分布买卖订单网格，捕捉震荡市往返价差
  - 买单成交 @ price_buy → 在 price_buy * (1 + grid_step) 挂卖单
  - 卖单成交 @ price_sell → 在 price_sell * (1 - grid_step) 挂买单
  - 批量对冲：Delta 累积到阈值（如 0.3 BTC）触发对冲引擎
  - 自适应调整：价格偏离网格中心 >2% 时，撤旧单重新布网格
  - 趋势检测：1 小时涨跌 >0.5% 时自动暂停，避免单边持仓
  - **优势**：实现简单（200 行）、对冲频率低（2-5 次/小时 vs 剥头皮 10-20 次）、参数稳定
  - **适用场景**：震荡市、高波动低趋势、DEX 高延迟环境
  - **策略切换**：通过 `config.yaml` 中的 `strategy_mode: grid | scalper | both` 选择
  - **闭环与路线图**：微网格的库存闭环、成交率 PI、簿内结构调节、队列退避等详尽规范见 `MICRO_GRID_CONTROL.md`，对应开发排期参考 `MICRO_GRID_ROADMAP.md`
- 通过 `StrategyBus` 协调执行节奏，避免信号竞态；支持启停、参数热更。
- **策略协调器（混合模式）**：当 `strategy_mode=both` 时，GridMaker 和 Scalper 通过优先级避免冲突（网格优先，剥头皮仅在极端 spread 触发）。

### 3.11 对冲与仓位管理（`packages/portfolio`, `packages/hedge`）
- `PositionManager`: 聚合多 venue/子账户仓位、计算净 Delta、资金费暴露。
- `HedgeEngine`: PI 控制器计算对冲量，强制最小间隔，调用对冲 venue 的 IOC/紧限价单；记录 hedge 成本。
- **对冲延迟预算模型（新增）**：
  - 目标：对冲延迟 P50 < 500ms, P99 < 2s
  - 超时处理：若对冲未在 3 秒内完成，触发强制市价平仓
  - 对冲失败重试：最多重试 2 次，每次增加滑点容忍度 +5bps
- **资金费率套利风险监控（新增）**：
  - 监控双账户所在 venue 的 funding rate 相关性
  - 若相关性 < 0.8 或同向支付，告警并建议减仓
- 支持资金费率偏置（当期 funding 不利时主动减仓）。

### 3.12 TriggerEngine（`packages/execution/triggerEngine.ts`）
- 管理 OCO 止盈止损、时间止损、离散触发器；确保与 RiskEngine/OrderRouter 共用校验路径。

### 3.13 Telemetry & Logging（`packages/telemetry`）
- `prom-client` 暴露指标：`maker_ratio`, `avg_edge_bps`, `real_slip_bps`, `delta_abs`, `hedge_cost_bps`, `latency_p99`, `cancel_rate`, `pnl_intraday`, `stp_hits` 等。
- **风险指标（新增）**：`risk_kill_switch_state`, `risk_delta_abs`, `risk_hedge_failures`, `risk_data_gap_seconds`, `risk_drawdown_pct`，实时反映 RiskEngine 状态。
- **对冲效率指标（新增）**：
  - `hedge_success_rate`: 对冲订单成交率（目标 >98%）
  - `hedge_latency_p50/p95/p99`: 从信号到对冲完成的延迟分位数
  - `hedge_slippage_bps`: 对冲实际成交价 vs 预期价的偏差
  - `cross_venue_basis_bps`: 双账户所在 venue 的价差，用于发现套利机会或数据异常
- `pino` 结构化日志 + `pino-pretty` 本地调试；审计日志写入 append-only 存储（文件或数据库）。
- 与报警系统联动（Grafana/Loki/Slack Webhook）。

### 3.14 Persistence（可插拔）
- 初期：本地文件或 SQLite 记录 fills、PnL、配置历史、审计日志。
- 扩展：接入云数据库（PostgreSQL/ClickHouse）用于长周期分析与回测数据管理。

### 3.15 Backtest / Simulator (`packages/backtest`)
- 事件重放：对实时 `MarketDataEvent` 与 `OrderEvent` 进行回放，驱动同一套策略模块。
- **延迟注入模块（新增）**：
  - 记录实盘"链上事件时间 vs 策略接收时间"的延迟分布
  - 回测时按真实延迟分布注入随机延迟，防止前瞻偏差
  - 验证：回测 Sharpe 应略低于实盘（若高于则存在数据泄漏）
- 手续费/滑点模型、资金费率模型注入；输出报表与 KPI。
- 支持参数搜索、策略回测对比、敏感性分析。

## 4. 数据与控制流（增强版）
1. **行情路径**：
   - Multi-venue Adapter 拉取/订阅 → 各 ShadowBook 实例更新 → Derived metrics (OBI/RV/spread)
   - → Symbol Registry 聚合 → Strategy Bus 消费 → 策略生成意向订单

2. **订单路径（协调版）**：
   - 策略（MM/Scalper）发出 intent → **Strategy Coordinator 冲突检测与合并**
   - → **Global Order Coordinator 跨账户 STP 检查**
   - → RiskEngine 审批（限额/kill-switch）
   - → OrderRouter 发单（滑点守卫）→ Adapter 执行
   - → Fill/PnL 回流 RiskEngine/Telemetry + PositionManager

3. **对冲路径（增强版）**：
   - Fill 触发 → PositionManager 更新净仓（跨账户聚合）
   - → HedgeEngine 计算对冲量（PI 控制器 + 延迟预算检查）
   - → 对冲 venue IOC 单（带重试机制）
   - → 结果回写（成功/失败/延迟）→ Telemetry 记录对冲成本与延迟
   - → 若失败次数 >3，触发 Global Order Coordinator 降级策略

4. **监控路径**：
   - 各模块推送指标/日志（含对冲效率指标）→ Telemetry 聚合
   - → Dashboard/报警系统处理 → 触发降级或 kill-switch

5. **配置热更（金丝雀流程）**：
   - 配置变更请求 → zod 校验 + 回测烟囱测试
   - → 金丝雀（单标的试运行 10 分钟）→ KPI 验证
   - → 若达标则全量发布，否则自动回滚
   - → 全程审计日志记录（who/when/what/result）

6. **降级路径（新增）**：
   - 异常检测（对冲失败/延迟过高/数据断流）→ Global Order Coordinator 触发
   - → 根据降级矩阵执行（撤单/只平不开/暂停策略/HALT）
   - → 告警推送 + 审计日志

## 5. 合规与风控设计
- **STP（增强）**：
  - 单账户内 STP：Router 前置自查，避免与本地挂单交叉
  - 跨账户经济 STP：Global Order Coordinator 检查对手价是否来自关联账户
  - 对冲例外：对冲单允许跨账户匹配，但需明确标记
- **风险限额**：订单前置、仓位持续监控、跨账户聚合 PnL 回撤 Kill-switch、外部命令可触发 HALT。
- **审计**：所有决策节点生成唯一 trace id，写入 append-only 日志，含参数版本、行情快照摘要。
- **操作规范**：禁止主动制造虚假成交量，策略仅在合规 venue 与账户运行。

## 5.5 降级策略矩阵（新增）

| 故障场景                  | 检测条件                              | 降级动作                                    | 恢复条件                |
|--------------------------|--------------------------------------|-------------------------------------------|------------------------|
| 主账户行情断流            | >5s 无行情更新                        | 撤主账户所有挂单，保留对冲账户               | 行情恢复且延迟 <500ms   |
| 对冲账户 API 故障          | 连续 3 次对冲失败                     | 主账户切换为"只平不开"模式                   | 对冲账户恢复正常 5 分钟 |
| 双账户都断流              | 双重断流 >3s                          | 全部撤单 + HALT + 告警                      | 手动恢复                |
| 对冲延迟过高              | hedge_latency_p95 > 2s 持续 1 分钟   | 暂停新信号，仅处理存量仓位                   | 延迟降至 <1s            |
| Gas fee 暴涨（链上 DEX）  | 对冲成本 > edge_bps * 2               | 暂停新信号，延长对冲间隔至 1 分钟            | Gas 降至正常水平        |
| Delta 失控                | abs(delta) > 2x max_base_abs          | 强制市价对冲，暂停所有策略 1 分钟            | Delta 归零              |
| Funding rate 异常         | 双 venue funding rate 相关性 <0.5     | 减仓至 50%，告警通知人工审查                | 人工确认后恢复          |
| 策略表现劣化              | 某策略 EV <0 持续 10 分钟             | 自动暂停该策略，保留其他策略运行             | 参数调整后手动启用       |
| 跨账户 STP 命中率过高     | STP 拒绝率 >5%                        | 暂停 Scalper，仅保留 MM                     | STP 率 <1% 持续 5 分钟  |

**降级策略实现要点**：
- 所有降级动作触发时，立即写入审计日志并推送告警（Slack/PagerDuty）
- 降级状态持久化到配置文件，重启后保留降级状态
- 提供手动干预接口：`/api/override-degradation`（需认证）

## 6. 部署与运维
- Node 22 + pnpm；容器化（Docker）部署到 Kubernetes/自管主机。
- 热更：配置文件挂载 + SIGHUP 触发重载；策略参数金丝雀发布。
- 健康检查：Adapter 连通性、行情延迟、PnL drawdown、STP 命中频次。
- Playbook：冷启动、波动骤升、数据断流、对冲失败、资金费率极端等场景演练。

## 7. 技术栈与依赖
- 语言/构建：TypeScript 5、pnpm、ts-node/tsx。
- 网络：`undici`, `ws`；加密：`@noble/ed25519`。
- 校验：`zod`；配置：`dotenv`, `cosmiconfig`。
- 日志：`pino`, `pino-pretty`；指标：`prom-client`。
- 测试：`vitest`/`jest` + 自定义事件回放框架。

## 8. 运行时序示例
1. **MarketMaker 定时循环**
   - `StrategyBus` 触发 `MarketMaker.onTimer` → ShadowBook 提供 mid/spread → 生成双边限价单 → RiskEngine 校验 → OrderRouter(postOnly) 下单 → Telemetry 记录。
2. **Scalper 行情触发**
   - `ShadowBook` 发布新行情 → `MicroScalper.onBook` 检测 spread 扩张 → 发起 taker/被动组合 → TriggerEngine 设置 OCO → OrderRouter 执行。
3. **对冲**
   - Fill 事件回写 → PositionManager 更新净仓 → HedgeEngine PI 计算 → RiskEngine 审批 → 对冲 Adapter IOC → Telemetry 记录成本。
4. **Kill-Switch**
   - RiskEngine 监测 PnL drawdown/数据断流 → 触发 HALT → Router 撤单、策略暂停、报警推送。

## 9. 测试与质量保障
- 单元测试：签名、影子簿、风控、策略决策函数。
- 集成测试：模拟行情流 + 订单回执，验证完整链路。
- 回测：在 CI 中跑缩短数据集作为烟囱测试；PR 需附回测 KPI。
- 覆盖率与代码质量：ESLint、Prettier、TypeDoc 文档生成。

## 10. 迭代路线
- 与 `docs/IMPLEMENTATION_PLAN.md` 里程碑保持同步，每阶段结束更新本架构文档状态。
- 记录关键设计变更（如新 venue、风险策略调整）并在 PR 中说明影响。
