End To End Scenario
· · ·
题目进度 0 / 0 ✓ 0
全流程沙盘:一笔雪球交易的完整生命
从客户需求到交易完结,逐环节拆解。每个环节标注:谁参与、做什么、系统交互。
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.java → DeltaCalculator.java | 更新对冲建议 |
| 保证金充足率 | 第 7 步 | service/eod/MarginStep.java → odyssey-cash-manager-service | 保证金缺口判定 |
| 风险快照 | 聚合 | strHedgePositionEod/PositionAggregator.java | 生成当日风险快照 |
环节 6 · 敲出事件
BarrierCheckStep 捕捉到收盘价 ≥ 敲出线
→ ValuationStep 计算应付票息 = 名义 × 票息 × 存续月数/总月数
→ JUMS 推送通知(客户 + 运营)→ 运营执行结算 → 交易关闭