Learning
VOL. VII · NO. 22 · OTC Derivatives · 21 JUL 2026

End To End Scenario

OTC 衍生品 · 21 JUL 2026 · 5 min read · 444 words
· · ·

全流程沙盘:一笔雪球交易的完整生命

从客户需求到交易完结,逐环节拆解。每个环节标注:谁参与、做什么、系统交互。

flowchart TB
    E1[环节1: 需求发现<br/>Sales→客户] --> E2[环节2: Term Sheet<br/>系统生成]
    E2 --> E3[环节3: 报价议价<br/>Trader→客户]
    E3 --> E4[环节4: 准入KYC<br/>Compliance]
    E4 --> E5[环节5: 下单执行<br/>Sales下单]
    E5 --> E6[环节6: 确认清算<br/>Ops]
    E6 --> E7[环节7: 存续监控<br/>Risk]
    E7 --> E8[环节8: 到期/敲出<br/>完结]

环节 1:需求发现

角色:Sales → 客户

时间:某天下午,销售拜访 XYZ 私募

对话

销售:"王总最近有什么想法?"
客户:"中证500这个位置不上不下,我想拿点增强收益但不想冒太大风险。"
销售:"那雪球合适啊,敲入80%,敲出103%,年化18%。你考虑一下?"
客户:"行,出个 Term Sheet 我看看。"

系统交互

  • 销售在 CRM 记录商机
  • 销售推送产品资料给客户

环节 2:Term Sheet 生成

角色:Sales → 系统自动生成

系统动作

销售打开"产品库"→ 选择"经典雪球"
→ 输入参数:标的=中证500,期限=12月,敲入=80%,敲出=103%
→ 系统调用定价引擎 → 输出票息=18%
→ 系统生成 Term Sheet PDF
→ 销售用微信发给客户

环节 3:客户确认 & 内部审批

角色:客户 → Sales → 交易台 → 风控

客户确认:客户说”行,做 1 个亿”

系统动作

销售在系统里提交"交易申请"
→ 系统自动检查:客户适当性(C5 ≥ R4)✓
→ 系统自动检查:授信额度(可用额度2亿 ≥ 1亿)✓
→ 系统自动检查:AML筛查 ✓
→ 通知风控审批
→ 风控一键通过
→ 通知交易台

环节 4:交易执行

角色:交易员

时间:次日 10:30

动作

交易员在 OMS 录入:
  - 产品类型:雪球
  - 客户:XYZ私募
  - 标的:中证500
  - 名义本金:1亿
  - 期初价:5500
  - 参数:敲入4400/敲出5665/票息18%
  
→ 系统校验通过 → 交易生效
→ 系统自动生成确认书 → 发送客户
→ 客户签署确认书 → 系统归档

环节 5:存续期(日复一日)

每日 15:00 收盘后

系统自动运行

1. 获取中证500收盘价
2. 敲入检查:收盘价 < 4400?是→记录敲入事件
3. 如果是观察日:收盘价 ≥ 5665?是→触发敲出
4. 计算当日Delta → 更新对冲建议
5. 计算保证金充足率
6. 生成当日风险快照

环节 6:事件触发

第7个月敲出

→ 系统捕捉到敲出(收盘5665 ≥ 5665)
→ 自动计算应付票息 = 1亿 × 18% × 7/12 = 1050万
→ 发送通知给客户和运营
→ 运营执行结算
→ 交易关闭


系统实现(代码引用)

把上面每个环节映射到 ~/odts1/hedging-as 的真实代码路径(与 product-snowball.md §6 一致)。一笔雪球是路径依赖型产品,系统的”每日循环”全部落在 EOD 批处理 里。

环节 2 · Term Sheet 生成

销售选"经典雪球" → 输入参数
  → hedging-as action/quotation/QuotationAction.java   (询价入口)
  → edslib valuation/MonteCarloValuation.java            (数万条路径模拟)
  → edslib payoff/SnowballPayoff.java                  (逐路径算敲出/保本/亏损)
  → gpricingengine pricing/StructuredProductPricing.java (折现 + 票息边际)
  → 输出票息 18% → 生成 Term Sheet PDF(DocAgent,见 14-Systems-and-Data §5.9)

环节 5 · 存续期每日循环(EOD 批处理)

每笔雪球签约后,系统靠 EOD 日终批处理持续跟踪:

步骤EOD 顺序代码路径对应环节 5 的动作
定盘价第 2 步action/eod/FixingStep.java取中证500收盘价
敲入/敲出判定第 4 步action/eod/BarrierCheckStep.java收盘价 vs 敲入4400 / 敲出5665
票息计提第 5 步service/eod/ValuationStep.java累积票息计算
Greeks / Delta第 6 步service/eod/GreeksStep.javaDeltaCalculator.java更新对冲建议
保证金充足率第 7 步service/eod/MarginStep.javaodyssey-cash-manager-service保证金缺口判定
风险快照聚合strHedgePositionEod/PositionAggregator.java生成当日风险快照

环节 6 · 敲出事件

BarrierCheckStep 捕捉到收盘价 ≥ 敲出线
  → ValuationStep 计算应付票息 = 名义 × 票息 × 存续月数/总月数
  → JUMS 推送通知(客户 + 运营)→ 运营执行结算 → 交易关闭

详见 ODTS-18 EOD 批处理深潜ODTS-15 对冲工作流ODTS-05 交易生命周期

下一文件:system-requirements.md