期权做市和自营盘的风控报表,核心就是一行希腊字母:Delta、Gamma、Vega、Theta,加上做空方向和期限的分组。这行数字看起来是"持仓 × 公式"的直接计算,实际难点全在一致性上:组合里几百张合约分布在几十个到期日,每张合约的 Delta 来自《波动率曲面》篇的插值,标的现价每 500ms 变一次、曲面每分钟刷一次、持仓随成交实时动——三个数据源的节奏完全不同步,如果不做对齐,加总出来的组合 Delta 就是三个时刻的数字拼出来的,行情剧烈时误差能到名义敞口的几个百分点,对做市商是致命的(《Delta 对冲的执行》篇的 $E$ 直接失真)。本篇讲这条计算链的工程组织。
计算链的分层
希腊字母计算链分四层,每层有自己的刷新节奏:
- 合约层:单合约 Greeks,$\Delta = \partial C / \partial S$ 等,输入标的价格 $S$、曲面 $\sigma(K,T)$、无风险利率 $r$。BS 公式闭式解,计算本身微秒级;
- 账户/组合层:按持仓加总,$\Delta_{port} = \sum_i q_i \Delta_i m_i$($m_i$ 为乘数),Gamma、Vega 同构;
- 风险桶层:按维度切桶聚合——标的方向(正 Delta/负 Delta)、到期桶(0–1月、1–3月、3–6月、6月+)、行权价桶(moneyness 分档)。Vega 的桶必须是期限桶,因为 Vega 的风险因子就是期限维的波动率;
- 报表/告警层:限额比对、实时推送、落历史。
关键的工程决定在第 1 层和第 2 层之间:合约层不缓存 Greeks,只在组合层做版本化快照。理由是 Greeks 本身没有业务含义,只有"某时刻某价格某曲面上的 Greeks"才有。每次组合层刷新(通常标的价格变化超过阈值或曲面的新版本发布触发),拿当前三要素重算全部活跃合约,一次算出当版组合 Greeks 并打版本戳。下游全部消费这个版本。缓存单合约 Greeks 再组装的做法,必然混版本。
增量更新与触发条件
全量重算一遍几百张合约的 BS 公式也就是毫秒级,为什么还要增量?因为刷新触发太频繁:标的价格 500ms 一跳,每次全量会把计算队列打满,导致真正该算的(新成交、曲面更新)排队。增量策略按风险敏感度排序:
- 高敏感合约(近月、平值附近、Gamma 和 Vega 大的):标的每跳必重算;
- 低敏感合约(远月深虚值):$|\Delta|$ 小于阈值(比如 0.02)的合约,标的小幅跳动(< 0.5%)时不重算,只记"待刷新",下次组合刷新统一补;
- 成交驱动:任何成交回报到达,涉及合约立即重算,持仓数同步——这条优先级最高,因为库存状态错了比 Greeks 略旧更危险。
组合层聚合用增量聚合:合约 Greeks 更新事件带新值和旧值,聚合器按桶做加减法而不是全桶重扫。全桶重扫是 O(n),增量是 O(1) 每事件;桶数量几十个、事件频率每秒几十次时,两种实现差出 CPU 一个数量级。
聚合口径:为什么要切桶
组合总 Delta 一个数不够用,因为同一个 $\Delta_{port} = 0$ 可能是"正 Delta 现货桶 + 负 Delta 近月桶"的对冲结果,两个桶各自都顶着限额。切桶的维度由风险因子的可交易性决定:
| 桶维度 | 对应风险因子 | 对冲工具 |
|---|---|---|
| 标的方向 | Delta 符号 | 标的/期货 |
| 到期桶 | Vega、Theta 的期限分布 | 不同期限合约互调 |
| moneyness 桶 | Gamma 的位置分布 | 近平值 vs wings |
Vega 期限分布是桶设计里最值钱的一个:近月 Vega 对短期事件(财报、议息)敏感,远月 Vega 对波动率水平敏感,两者的对冲手段完全不同——近月事件风险靠减仓,远月水平风险靠 variance 互换或跨期调整。不切开这两个桶,组合 Vega 总额平稳掩盖近月桶的集中风险,一次事件就穿仓。
限额也按桶设(《事前风控指标实现》篇的指标缓存思路在这里复用):每个桶的 Delta/Gamma/Vega 设绝对限额和变化率限额(分钟级跳变超阈值报警,防计算错误或行情闪崩)。
验证:计算链的验收方法
Greeks 是算出来的,验证它比算它难。三个层面的校验:一是解析校验,对单笔持仓用独立的 Greeks 计算器(比如 QuantLib,注明版本)批量对拍,误差容忍在数值微分的步长噪声内;二是资金验证,用历史行情回放一天,按当时的曲面版本逐笔重算组合 Greeks,和落库的历史快照对比——这能抓出版本混用导致的漂移;三是经济验证,Gamma 和 Vega 的符号、量级要经得起交易员review:近月平值多头 Gamma 为正且数值不小,出现负值或量级异常必然是数据错了。
希腊字母系统的终极目标是让任何时刻的敞口数字可回放、可对账、可解释。三要素对齐解决"准",版本化快照解决"可回放",桶分层解决"可解释"——这三件事齐了,风控报表上的那行数字才值得被相信。