The Hedging Workflow
ODTS 15 — 对冲工作流:交易台怎么管理风险
业务问题
交易台做的每一笔交易都会产生风险。卖出一张看涨期权 → short gamma。一个 TRS → long delta。一张 NDF → 外汇敞口。
交易台的核心能力是管理这些风险——对冲它们,让 P&L 来自客户利差,而不是市场涨跌。
客户交易 → 风险产生 → 对冲交易 → 风险中性化
↑ ↑
头寸管理 (系统) 对冲执行 (交易员 + 系统)
每个产品产生什么风险
| 产品 | 主要风险 | 次要风险 |
|---|---|---|
| 香草期权(卖出) | Short gamma, short vega | 利率 (rho), 分红 |
| TRS(收益接收方) | Long delta(如未对冲) | 融资、分红、公司行为 |
| 雪球(卖出) | Short gamma, short vega | 障碍风险 (gap risk) |
| NDF | 外汇远期敞口 | 融资、交易对手 |
| 障碍期权(卖出) | Short gamma, short vega | 障碍风险(如被触及) |
| Swap(固息支付方) | 利率敞口 | 信用利差 |
对冲系统
第 1 步:头寸汇总
每笔合约 → PositionAggregator.java
→ 按标的汇总
→ 计算每个标的的净 delta、gamma、vega
约 5000 笔活跃合约 → 约 300 个唯一标的 → 每日 EOD 计算
代码:
hedging-as/src/com/cicc/service/strHedgePositionEod/
├── PositionAggregator.java — 汇总
├── DeltaCalculator.java — 每笔合约的 Delta
├── GammaCalculator.java — 每笔合约的 Gamma
└── VegaCalculator.java — 每笔合约的 Vega
汇总在 EOD 估值步骤后运行。它获取所有估值结果 (TodayContractRaInfo) 并按标的汇总。
第 2 步:对冲建议
汇总后的头寸 → HedgeEngine.java
→ 净 delta = +5000 万 RMB 中证 500 → "卖出 5000 万期货"
→ 净 gamma = -1000 万 RMB → "Gamma 太大,买入期权"
代码:
hedging-as/src/com/cicc/service/strHedgePositionEod/HedgeEngine.java
但对冲引擎只是建议。交易员决定。系统不会自动执行对冲。
第 3 步:交易员执行对冲
交易员收到对冲建议并决定:
系统说:"净 delta = +5000 万 RMB,卖出 5000 万中证 500 期货"
交易员想:
"我已经有 -5000 万中证 500 期货的隔夜头寸。
如果再卖 5000 万,就是 -1 亿。
但市场开盘涨了 2%。让我等个好价格。"
决定:现在卖 2500 万(在 5500),等涨到 5550 再卖剩下的。
对赌是主动决策,不是自动的。 系统提供数字,交易员提供判断。
第 4 步:对冲交易簿记
交易员的对冲交易作为对冲交易(不是客户交易)录入系统:
HedgeTrade {
traderId: "TRADER01"
productType: "FUTURES" / "STOCK" / "OPTION"
direction: BUY / SELL
qty: 500,000 (中证 500 期货 × 200 乘数 = 1 亿 RMB)
price: 5500
timestamp: 2025-07-16 09:32:15
hedgeForContract: null (book 级对冲,不是逐笔合约)
}
对冲交易记录在 HedgePosition 表中。它们不是客户交易——它们是内部风险管理。
逐笔对冲 vs 组合对冲
逐笔对冲 (Per-Contract Hedging):
交易:卖出 1 亿中证 500 看涨 → 买入 6000 万中证 500 期货
好处:每笔交易完全对冲,容易理解
问题:最后有 50 倍于需要的对冲头寸
组合对冲 (Portfolio Hedging)——ODTS 采用:
交易:卖出 1 亿中证 500 看涨
→ 不立即对冲
→ EOD 时汇总所有中证 500 头寸
→ 净 delta = +2 亿 → 一次卖出 2 亿期货
好处:对冲交易更少,净额结算更好
问题:两笔交易之间和 EOD 对冲之前有盘中风险
ODTS 使用组合对冲。交易台每天汇总一次所有头寸并对冲净额。盘中由交易员手动管理。
Delta-One 对冲交易台
交易台有一个专门的 delta-one 交易员,其工作是:
08:30 — 检查隔夜头寸
09:00 — 审查 EOD 批处理的对冲建议
09:15 — 执行期货/股票对冲(如果需要)
09:30–15:00 — 监控头寸,随新交易调整对冲
15:00 — 收盘,EOD 批处理开始
16:00 — 审查 EOD 对冲建议
16:30 — 执行剩余对冲
Delta-one 交易员交易的品种:
- 股指期货(中证 500、沪深 300、中证 1000)— 用于对冲指数产品
- 个股 — 用于对冲 TRS
- 股票期权 — 用于对冲 gamma
- ETF 组合 — 用于组合对赌
Gamma 对冲
Gamma 对冲是最微妙的。Short gamma 头寸意味着:
如果市场上涨 → 头寸亏钱(delta 变得更短)
如果市场下跌 → 头寸亏钱(delta 变得更长)
Gamma 对冲是:买入期权(有正 gamma)
→ 要付权利金
→ 但保护免受大波动影响
Gamma 对冲决策:
交易台卖出:10,000 张中证 500 期权,净 gamma = -5 亿 RMB
要对冲 gamma,交易台可以:
A) 买入中证 500 看涨期权:+gamma,成本 = 权利金
B) 更频繁地调整 delta:减少 gamma P&L 影响
C) 不做:接受 gamma 风险(如果波动率低,没问题)
选哪个?取决于:
- 期权成本(贵不贵?)
- 预期波动率(gamma 会伤到吗?)
- 交易台的风险偏好
系统不做这个决定。交易员做。
TRS 对冲的特殊挑战——流动性差
TRS 的对冲方式和期权不同。交易台买入 TRS 标的股票来实现对冲。但如果标的是流动性差的股票(如某只中小盘 A 股,日均成交额仅 2000 万),对冲就是一个问题:
客户想通过 TRS 做多一只日均成交 2000 万的股票,名义本金 1 亿。
交易台需要买入 1 亿的股票来对冲。
实际执行困难:
- 一天只能买入 500 万而不推高股价(按日均成交的 25%)
- 需要 20 个交易日才能建完全部头寸
- 这 20 天里,如果股价上涨 5%,交易台的实际建仓成本高了 500 万
- 客户并不承担这笔成本——TRS 承诺的是总收益
这就是 TRS 业务中”交易台不一定能在合理价格上对冲”的现实。交易台通过两种方式管理:
- 分批建仓:系统跟踪建仓进度,交易员每天买入不超过流动性限制的量
- 报价调整:对于流动性差的标的,交易台在报价中加入”对冲难度溢价”——给客户的融资利率比正常高 50–200bp。这 50–200bp 就是对冲难度的价格。
流动性风险的实际成本: 某只中小盘 TRS,交易台报价给客户 150bp spread(比正常高 50bp 作为流动性溢价)。名义本金 1 亿,年化收入 150 万。但实际对冲时,交易台花了 30 个交易日才建完仓,期间标的涨了 7%——建仓成本 700 万。这笔交易年化亏损 550 万。交易台的判断是”客户的 TRS 需求会带来更长远的业务关系”——但在单个交易层面,流动性差就是亏钱。
对冲的时间缺口
对冲工作流中最大的风险是时间缺口:
T+0, 10:00: 客户交易簿记(卖出 1 亿看涨期权)
→ 风险:delta = -5000 万, gamma = -1000 万
→ 对冲:无(交易员正忙)
T+0, 11:00: 客户又来讨论另一笔交易
→ 交易员被分散了注意力
T+0, 14:30: 对冲交易执行
→ 在这 4.5 小时的缺口里,中证 500 涨了 3%
→ Delta P&L = -5000万 × 3% = -150 万 RMB
这就是组合对冲带来的盘中风险。交易台通过以下方式管理它:
- 经验(交易员知道哪些交易需要立即对冲)
- 经验法则:任何 delta > 2000 万的单笔交易必须在 30 分钟内对冲
- 初级交易员监控并在异常时升级
交易台最惨的对冲故事(2019 年): 一个初级交易员本应对冲一个 -1 亿中证 500 头寸。他被一个客户电话分了心。收盘时头寸仍未对冲。中证 500 当天涨了 4%。交易台亏了 400 万 RMB。初级交易员被告知:“先对赌,再跟客户说话。”
对冲的隐形成本——期货展期: 使用期货对冲意味着当期货合约快到期时,必须卖出旧合约、买入新合约——这叫展期 (roll)。展期本身有成本:如果市场处于 contango(远期比近期贵),展期就是亏损的。一个持有 10 亿 RMB 中证 500 期货净头寸的交易台,每季度展期一次,年化展期成本约 50–200 万(取决于市场结构)。这笔钱不是”亏损”——它是对冲的必需品。但很少有人把它作为对冲成本独立统计。
对冲滑点 (slippage): 当交易台需要对冲一个 5 亿 RMB 的 delta 调整时,市场会在执行过程中反向移动。以中证 500 期货的流动性,一个 5 亿的市价单大约需要 3–5 分钟完成,期间的滑点约 0.05%–0.15%。每笔 5 亿的对冲滑点就是 25–75 万。一个交易台每天可能做 1–3 次这样的调整——滑点成本每年累积到 500–2000 万 RMB。这就是为什么交易员不直接用市价单,而是用算法交易 (algo trading) 拆成小单逐步执行。
总结
ODTS 中的对冲:
系统的职责: 计算净头寸、推荐对冲方案
交易员的职责: 以最优价格执行对冲、管理盘中风险
正常情况: 交易台赚取利差而不承担市场风险
故障情况: 系统显示错误头寸 → 错误对冲 → P&L 亏损
交易员未及时对冲 → 市场变动 → 亏损