Learning
VOL. VII · NO. 30 · OTC Derivatives · 01 JAN 1970

OTC 交易生命周期:从询价到终止

OTC 衍生品 · 01 JAN 1970 · 8 min read · 1,895 words
· · ·

把 0001 的语汇串成一条主线——一笔交易在端到端路径上,哪一步发生、哪段代码跑了、什么顺序。

这一节是你作为 PM/BA 的核心骨架。客户问”一个 6 个月中证500雪球,报价多少?“之后发生了什么?哪一节、哪段代码、什么顺序?记住这条主线,后面每个产品、每个系统章节都能挂上来。两条线同时讲:业务事件(发生了什么、对应什么纸质单据)和 系统锚点(哪个组件、哪个类处理)。

必须记住
生命周期有 7 个阶段:询价报价 → 簿记 → 信用/合规+确认书 → 存续期管理 → 对冲 → 监管会计 → 终止。其中"存续期管理"不是一步,而是签约后每个交易日都在跑的日终循环(EOD)。

一、阶段全景(一图记)

阶段业务事件系统锚点
1 询价报价销售配参数试算,交易台加利润发客户QuotationActionPricingService.getPrice()
2 簿记交易员录入条款,成为有约束力合约ContractSaveServiceCtrContract
3 信用/合规+确认书额度/黑名单检查,生成 ISDA 确认书BlackOrWhiteListController · DocAgent
4 存续期管理每日定盘、MTM、追保、公司行动EOD 10 步(见第三节)
5 对冲交易台平掉卖给客户的风险OMS / DeltaCalculator
6 监管会计SAC 报送、会计凭证、客户估值报告ofareg · SacReportController
7 终止到期/提前终止/更替ContractSettleHelper.finalSettle()

二、阶段 1–3:从询价到生效(一次性事件)

1. 询价报价

业务:销售在前台配参数(标的、期限、障碍、名义本金),这是试算(what-if),还没有交易。定价速度就是业务速度——窗口通常 15–30 分钟,超时就可能丢客户。

系统锚点(IT 侧)
hedging-as/.../action/quotation/QuotationAction 收参数 → PricingService.getPrice():加载市场数据 → edslib.payoff.PayoffFactory.create() 构建收益函数 → MonteCarloValuationClosedFormValuation 计算。结果(中间价、价差、Greeks)返回 QuotationResult。报价存为 QuotationRecord(status=PENDING)——还没约束力。

2. 簿记 Booking

业务:交易员把商定条款录入系统,这是交易成为有约束力合约的时刻。TRS/Swap 等多数 OTC 有 2 个以上 leg(如 TRS = 融资 leg + 价格回报 leg),每个 leg 单独定义。

系统锚点(IT 侧)
eds-web-appContractControllerContractSaveService.validateTerms()(校验产品/leg/标的/额度)→ 生成 contractId(如 TRS20250716001)→ 持久化到 CtrContract 主表 + CtrContractLeg。状态先 PENDING_APPROVAL
业务代价:80 字段表格几分钟内填完,2019–21 平均每月 2–3 笔录入错误(名义多打一个零等),每笔修正耗时 2–4 工作日;若确认书环节才发现,需对手方重签 +1–2 周。

3. 信用/合规 + 确认书

业务:交易生效前中台查授信额度、ISDA 资质、制裁名单。信用检查是软性的(失败进人工),黑名单检查是硬性的(永久阻止)。通过后状态 PENDING_APPROVAL → ACTIVE。确认书是 ISDA 法律文本,双方签署;约 2–3% 有争议,解决 2–4 周。

系统锚点(IT 侧)
BlackOrWhiteListController(OFAC/制裁硬阻断)· CustomerMarginController(授信使用率)· 确认书引擎 DocAgent(读 Word 模板→渲染→PDF→S3→推送 JUMS)。状态在 CtrContract.confirmationStatusPENDING/SIGNED/DISPUTED

三、阶段 4:存续期管理(每日 EOD 循环)★重点

签约后,每个交易日 17:00 起系统跑一遍 EOD 批处理。这就是 0001 里”敲出判定""定盘价”真正发生的地方。10 步顺序(来自 EodScheduler):

MarketDataRefresh → Fixing → CorporateAction → BarrierCheck
→ Valuation → Greeks → Margin → CashMovement → Reporting → Cleanup
EOD 步做什么代码锚点对应 0001 概念
2 Fixing取官方定盘价/利率(如中证500收盘、CFETS 16:30)FixingStep / FixingManager定盘价(上一问)
3 CorpAction标的分红/拆股调整现金流CorporateActionStep
4 BarrierCheck价格 vs 敲入/敲出障碍BarrierCheckStep敲出/敲入
5 Valuation按市值计价,算当日 PnL、累积票息ValuationStepMTM
6 Greeks算 Delta/Gamma/Vega/Theta + DV01GreeksStepDeltaCalculatorGreeks / DV01
7 Margin算 IM/VM,判保证金缺口MarginStepcash-manager追保
双线串联
0001 的"名义本金、标的、敲出/敲入、DV01"在这里全部落地:标的→定盘价;敲出/敲入→BarrierCheckStep;DV01→GreeksStep 输出的利率敏感度。这就是为什么先打地基(0001)再走主线(0002)。
内行才知道
雪球敲出若发生在盘中(如 14:50),但 BarrierCheckT 日收盘定盘价判,定盘价 15:00 才生成——会有约 4 小时"已敲出但状态仍活跃"灰色地带。后来加了盘中轻量 IntradayBarrierCheck(用实时价,只预警不改正式状态)。这是 EOD 包里新人最易看懵的"双轨"逻辑。

四、阶段 5–7:对冲、监管、终止

5. 对冲

业务:卖给客户的雪球,交易台不会保留风险,会买入/卖出标的或指数期货对冲。定价引擎算每笔 delta,对冲台汇总净 delta → 交易期货/再平衡期权。

系统锚点
DeltaCalculator 算 delta → OMS 录入对冲单 → odts-option-web 实时对冲仪表盘监控对冲 PnL vs 客户 PnL。

6. 监管与会计

业务:每笔 OTC 须限时报 SAC;每笔资金变动产生会计凭证;客户每月收估值报告。

系统锚点
SacReportController 生成 SAC XML → ofareg 报送中证报价/CSRC;cash-manager 处理资金与凭证。

7. 终止

业务:到期(最终结算)、提前终止(算终止支付额)、更替(改 counterpartyId)。

系统锚点
ContractSettleHelper.finalSettle() → 状态 ACTIVE → EXPIRED/TERMINATED

五、每日时间表(记住节奏)

时间系统活动出问题
08:00eds-price-server市场数据导入未完成→用昨天数据开盘
15:00eds-web-app同日簿记截止交易员催”等我5分钟”
17:00hedging-asEOD 估值/定盘卡住→保证金计算推迟
18:30ofaregSAC 监管报送报错→运营加班重跑

六、测验(Recall 练习)

凭记忆作答,不要回看。每题选项等长,避免暗示。

1

交易"成为有约束力合约"的时刻是哪一步?

2

EOD 批处理中,判断雪球敲出/敲入的是第几步?

3

下列哪项检查是"硬性永久阻止"交易?

4

"定盘价"在 EOD 里主要用于什么?

5

DV01 是在 EOD 哪一步被算出的?

6

雪球盘中敲出但 EOD 状态仍活跃的"灰色地带",根因是什么?

7

交易录入错误(名义本金多一个零)通常在哪一步被发现?

8

EOD 第7步 Margin 主要计算什么?

七、错题本与复习

查看全部错题

本课错题记录

八、延伸阅读(Primary Source)

下一步
主线已立。接下来建议挑一个产品家族深拆(双线):雪球(最复杂、路径依赖)、TRS(融资+跨境)、IRS(DV01/CS01 主场)、或场外期权。告诉我哪个最陌生,或想先补 product-swap.md 的 CS01 代码锚点。

Lesson 0002 · 上游 0001 全景与语汇 · 母文档 ODTS-05 · 错题追踪 0011 错题本 · MISSION: 产品 + IT 双线精通 · 样式 base.css