Interest Rate Derivatives
ODTS-62: 利率衍生品——在场外市场半壁江山中的 IRS 与 CCS
为什么这篇文档值得读
在 ODTS 的交易量中,利率衍生品占不到股权衍生品的份额——但它的业务复杂度、风险规模和对系统架构的冲击力远超股权类产品。一笔 10 年期 IRS 的名义本金可能高达 50 亿,它涉及的现金流计算(逐日计息、reset、摊销)跨越十年。对 PM/BA 来说,利率衍生品是理解”为什么 OTC 系统的数据模型如此复杂”的关键入口。
利率产品在 ODTS 的独特地位: 虽然全球 OTC 衍生品市场中利率产品占比超过 70%(名义本金超 600 万亿美元),但在 CICC 亚洲股权衍生品为主的业务中,IRS/CCS 是”必需但不大”的品类。这意味着系统对它们的支持是够用但未优化——一个现实业务取舍:用一个有 10 年历史的雪球定价引擎去算 IRS,就像用 F1 赛车拖货柜——能做,但不是最优解。
做反利率方向的真实代价: 利率互换的方向搞反(付浮动写成收浮动,或反之),10 亿名义本金 × 3% 利率差 = 每年 3000 万的损益差异。这类错误在手工录入时代并不罕见——运营在 Excel 里录入 swap 方向时把一个”PAY_FIXED”写成了”RECEIVE_FIXED”,系统不会报错。发现时通常是下一次付息日,运营核对实际应付金额与系统预期不一致。如果不仔细的对账流程漏过了这个错误,交易台可能在错误的利率方向上运行一个季度——代价可能超过 1000 万。
利率互换基础 (IRS / Interest Rate Swap)
业务逻辑
最朴素的利率互换是将固定利率现金流交换为浮动利率现金流。
┌─────┐
客户付固定年利率 3.0% ─────────→│ │──────→ 交易台付 SHIBOR 3M
客户收浮动 SHIBOR 3M ←───────│ │←────── 交易台收固定 3.0%
└─────┘
名义本金:10 亿 RMB
期限:5 年
付息频率:每季度(双方同频)
结算:净额——不是双方各付各的,而是计算差值,一方付给另一方
一个典型的 IRS 交割日计算:
当前 SHIBOR 3M = 2.5%
固定利率 = 3.0%
名义本金 = 10 亿
季度天数 = 91 天(按 ACT/360 计算)
浮动腿: 10 亿 × 2.5% × 91/360 = 631,944
固定腿: 10 亿 × 3.0% × 91/360 = 758,333
净额结算: 客户付 758,333 - 631,944 = 126,389 RMB
关键点: IRS 的核心是净额结算——双方不需要每天划转全额资金。只需要付差值。这大大降低了融资和操作成本。但在系统实现上,净额结算意味着系统需要计算两个方向的现金流再相减——不是所有系统都能优雅地处理这个。
为什么用 IRS
| 用户 | 动机 | 例子 |
|---|---|---|
| 企业客户 | 锁住融资成本 | 一家房地产公司发了一笔 5 年期 5% 的固息债,担心利率下降 → 做 IRS 收固定付浮动,把固息债转为浮息债 |
| 基金 | 改变久期而不卖债券 | 觉得利率要降(债券会涨),不做 IRS 就得卖掉债券再买更长久期的 → 做 IRS 收固定付浮动 |
| 银行 | 资产负债管理 | 银行收存款(浮动付息)放贷款(固定收息),利率风险大 → 做 IRS 收浮动付固定来对冲 |
| 交易台 | 做市/投机 | 赚买卖价差。例如给客户报 3.0% 固定利率收,3.05% 固定利率付 |
交叉货币互换 (CCS / Cross Currency Swap)
业务逻辑
CCS 是 IRS 的升级版:不仅交换利息,还交换本金。
初始:
交易台给客户 1 亿美元
客户给交易台 7.2 亿人民币(按 USD/CNY = 7.2 汇率)
存续期(每季度):
交易台付客户:USD SHIBOR + 50bp 的利息 × 1 亿美元
客户付交易台:CNY SHIBOR 3M 的利息 × 7.2 亿人民币
到期:
交易台还客户 7.2 亿人民币
客户还交易台 1 亿美元
CCS 和 IRS 的本质差异:
| 维度 | IRS | CCS |
|---|---|---|
| 本金 | 名义——不交换 | 实际——初始和到期都交换 |
| 货币 | 单币种 | 双币种 |
| 汇率风险 | 无 | 有——重新兑换时汇率可能变化 |
| 结算风险 | 小(净额结算) | 大(本金交换需要同时到账) |
| 常见场景 | 利率对冲 | 融资币种转换 |
系统层面,CCS 比 IRS 复杂在哪里:
IRS 的现金流计算维度:
一个方向(支付)× 两个腿(固定/浮动)× N 次付息
CCS 的现金流计算维度:
两个币种 × 两个方向 × 三个事件(初始本金钱、存续期利息、到期本金钱)
+ 汇率转换逻辑
+ 如果期中有一方提前终止,还需要计算汇率损益
CCS 在 ODTS 中的实现
代码中的 CCSFValue.java 和 DCCSValue.java 实现了交叉货币互换的定价:
CCSFValue (Cross Currency Swap Fix):
─ 固定利率 vs 浮动利率的 CCS
─ 适用于标准 CCS 交易
─ 计价逻辑:两个币种分别折现,再按即期汇率折算为基准币种
DCCSValue (Dual Currency / Dynamic Cross Currency Swap):
─ 更复杂的可变结构 CCS
─ 每个腿可能有不同的标的结构(股票、指数、固收)
─ dccs_legsInfo 中的每条腿可以是 FSValue (Forward Start)
或 STOCKValue 或 FINValue
─ 整体 NPV = 各条腿 NPV 之和
DCCS 的业务含义: 在实际交易中,有些 CCS 结构的其中一条腿不是纯利率——而是挂钩股票或指数。例如:客户想用人民币换美元投资标普 500——这既是 CCS(货币交换)又包含了股权回报。DCCS 就是这种混合结构的产品。
基差互换 (Basis Swap)
业务逻辑
Basis Swap 是 IRS 的一个变体:双方都付浮动利率,但用不同的浮动利率基准。
客户付 SHIBOR 3M + 20bp
交易台付 SHIBOR 1Y
名义本金:5 亿
为什么做 basis swap?
─ 客户认为 SHIBOR 曲线会走陡→3M 利率相对 1Y 走低
─ 或者客户持有基于 3M 的资产、基于 1Y 的负债
代码中的 ACS (AutoCallable Swap) 是 Basis Swap 的一个特例吗? 其实不是——ACS 是 Autocallable Swap 结构,更像是利率版本的雪球:含有敲出 (KO) 条款的利率互换。ODTS 中的 ACSSimulator.java 和 ACSPayOffRule.java 实现了这些含路径依赖的利率结构。
定价方法
IRS 的曲线定价
IRS 的定价比股权产品更依赖曲线(而非单点数据):
IRS = 固定腿 NPV - 浮动腿 NPV
固定腿 NPV = Σ (固定利率 × 名义本金 × 计息因子 × 折现因子)
浮动腿 NPV = Σ (远期利率(t) × 名义本金 × 计息因子 × 折现因子)
其中远期利率由 SHIBOR 曲线插值得出
系统实现路径: eds-price-server/.../gpricingengine/pricing/ → IRS Curve Pricing 模块。定价引擎从 Bloomberg 加载 SHIBOR 曲线(从隔夜到 30 年),使用折现因子插值法计算每期现金流的现值。
CCS 的双曲线定价
CCS 需要两条曲线——两种货币各一条:
CCS NPV = CNY 腿 NPV - USD 腿 NPV × 即期汇率
每个币种使用各自的折现曲线:
├── CNY 折现:SHIBOR swap curve (中国政府债 + IRS 报价)
└── USD 折现:SOFR swap curve (美国国债 + SOFR 报价)
现金流系统和 EOD 处理
利率衍生品的 EOD 处理比股权产品多了计息重置 (Reset) 环节:
TRS/Equity IRS/CCS
────────── ──────
EOD 步骤:
1. 获取标的物收盘价 1. 获取 SHIBOR/SOFR 定盘价
2. 计算盯市变化 2. 检查是否有 reset 日
3. 计算保证金(IM + VM) 3. 如果有 reset → 重置浮动利率
4. 生成 Margin Call 4. 计算当期应计利息 (accrued interest)
5. 计算盯市变化(利率曲线变动)
6. 计算保证金
7. 生成 Margin Call
Reset 的频率由合约中的 resetFrequency 字段决定——可以是每日、每周、每月、每季度。
业务影响: 如果系统在 reset 日没有正确更新浮动利率,下一期的利息计算就会出错。一对差 0.1% 的误差在 10 亿名义本金下就是 100 万的差异。这就是为什么利率衍生品的 EOD 系统对数据准确性要求高于股权产品——不是因为有更高的估值波动,而是因为小幅度的利率误差会通过累乘效应放大。
清算方式
| 标准 IRS | 非标准 IRS | CCS | |
|---|---|---|---|
| 清算 | 上海清算所 (SHCH) 中央清算 | 双边清算 | 双边清算(少数经 CCP) |
| ISDA 类型 | 普遍 SIMM | 有 | 有 |
| 保证金 | CCP 计算 IM/VM | 双方 CSA 协商 | 双方 CSA 协商 |
| 市场深度 | 高(报价频繁) | 中(根据期限) | 中(取决于币种对) |
在中金系统中,标准 IRS 通过 SHCH 清算——这意味着交易台录入交易后,CCP 接管清算和保证金计算。非标准 IRS 和 CCS 则走双边清算路径,保证金由 MarginCalculator.java 计算。
一句话
IRS 和 CCS 是 OTC 衍生品市场中体量最大的品类(全球名义本金超 600 万亿美元),但在 CICC 的亚洲股权衍生品为主的业务中占比不大。系统支持它们,但并没有为它们优化——ODTS 的定价引擎对 IRS 的曲线定价支持不如股权产品成熟,这是业务规模决定的架构取舍。
关键文件
| 组件 | 路径 |
|---|---|
| CCS 固定/浮动定价 | eds-price-server/.../structuredproducts/CCSFValue.java |
| 双币种结构定价 | eds-price-server/.../structuredproducts/DCCSValue.java |
| DCCS 含 Premium | eds-price-server/.../structuredproducts/DCCSPValue.java |
| 可赎回利率互换 (ACS) | eds-price-server/.../structuredproducts/ACSSimulator.java |
| ACS 收益规则 | eds-price-server/.../structuredproducts/payoff/ACSPayOffRule.java |
| 通用 Swap Payoff | eds-price-server/.../structuredproducts/payoff/SwapPayoff.java |
| IRS 曲线定价引擎 | eds-price-server/.../gpricingengine/pricing/IRS Curve Pricing |
| 摊销 IRS 定价 | eds-price-server/.../gpricingengine/pricing/Amortizing IRS Pricing |
| 结算系统 | hedging-as/.../settlement/ |