逐合约收保证金有个显然的浪费:买入一手沪深 300 期货同时卖出一手相近到期合约,两个头寸的价格风险几乎抵消,按合约各收一份保证金等于让交易者为一个已经对冲掉的敞口押两份钱。组合保证金的思路是把组合当整体定价风险:一次性扫描"价格变动 ±N 档"的若干情景,取最坏情景的亏损作为保证金。这个思路最经典的实现是 CME 的 SPAN(Standard Portfolio Analysis of Risk),上期所、中金所的保证金体系也在用同款思想。本篇拆 SPAN 的计算结构。
风险阵列:把非线性近似成分段线性
SPAN 的第一步是为每个合约生成风险阵列(risk array):对价格扫描点 $j = 0, \pm1, \cdots, \pm M$ 和波动率变动档位,预计算合约在情景下的损益:
$$ L_{i,j} = V_i(S \cdot (1 + j \cdot \delta), \sigma + \Delta\sigma_j) - V_i(S, \sigma) $$
$V_i$ 是合约 $i$ 的价值函数(期权用定价模型,期货是线性 $S - F$),$\delta$ 是价格扫描步长(常取标的价格的一定百分比),$\Delta\sigma_j$ 是波动率档位(常见三档:-1、0、+1)。16 个扫描点(8 个价格档 × 2 个波动率档)的预计算结果就是这个合约的风险阵列,行是扫描点,列是合约。
这一步的本质是用分段线性近似非线性损益。对期权合约,价值函数的凸性意味着正负扫描点的亏损不对称——价格向上扫 +5% 时虚值看涨可能大赚(线性近似失效),向下扫 -5% 时卖方期权亏损加速。阵列把每个方向的亏损都算实了,取最大者:
$$ \text{扫描风险}_i = \max_j (-L_{i,j}) \cdot q_i $$
($q_i$ 带符号持仓,损失取正)。对期货这类线性合约,正负扫描点亏损对称,阵列退化为 $|\Delta S| \cdot q$——这也解释了为什么期货的保证金远比期权规则简单。
组合层面:价格相关性产生净额优惠
单合约扫描风险直接加总没有优惠。优惠来自第二步:把不同合约的扫描点按价格相关性对齐。SPAN 用"组合"(combined commodity)概念,把同一标的不同到期、相关标的(比如股指期货和股指期权)归到一组,组内共用一套价格扫描点,假设组内所有合约的价格同步按扫描点变动。组内组合损益:
$$ L_{port,j} = \sum_{i \in g} q_i \cdot L_{i,j} $$
组内扫描风险 $= \max_j(-L_{port,j})$。因为多头和空头的 $L_{i,j}$ 在扫描点 $j$ 上符号相反(价格同向变动),对冲头寸的损益在阵列层面就抵消了——净额优惠是价格同步假设的直接产物。
这个假设的代价要认清楚:极端行情里相关性会崩(《衍生品压力测试与情景分析》篇的课题),同步假设高估了对冲保护。SPAN 用两道防线补:一是组内风险乘以跨式/组合抵扣系数(inter-month spread charge 等),把同步假设的乐观打折;二是交割月追加保证金(delivery month charge)——临近交割合约的现货价格联动性单独收紧,防止期货现货基差收敛阶段的假对冲。
参数文件:整个体系的旋钮
SPAN 的全部规则都在参数文件里:扫描档位 $\delta$、波动率档位、组合抵扣系数、交割月附加、最低保证金。参数由交易所发布,会员单位的风控引擎按日加载。系统的关键设计:
- 参数版本化:每日保证金批处理记录使用的参数版本,保证金争议(客户质疑为什么今天收这么多)要能回放"按昨日参数是多少";
- 参数变更预警:参数调整日(常见为合约调整或波动加剧后)保证金水位系统性上移,要预计算影响面并提前通知客户补资金——参数文件发布到生效之间要有缓冲;
- 会员级 overlay:会员可以在交易所参数上加严(不能放松),常见做法是按客户风险等级加乘数。《风控参数的热更新》篇的灰度原则在这里同样适用:乘数调整先小客户组试运行。
一个简化计算示例
假设某账户持有:1 手期货多头(价值函数线性,价格扫描 ±2% 时损益 ∓2% × 名义),1 手平值看涨期权空头(价格 +2% 时该期权价值 +1.8% 名义,价格 -2% 时价值 -0.3% 名义,卖方损益反向)。组内组合在 $j=+2\%$ 扫描点的损益:期货 -2%,期权 +1.8%,合计 -0.2%;在 $j=-2\%$ 点:期货 +2%,期权 -0.3%,合计 +1.7%。逐合约收:期货 2% + 期权 1.8% = 3.8% 名义。组合收:最坏 0.2% 名义。净额优惠接近 95%——这就是对冲持仓保证金效率的来源,也是期权卖方业务的资本前提。
和逐日盯市的衔接
SPAN 算的是初始保证金(开仓时收),盘中还要配合逐日盯市(mark-to-market)的亏损追缴:当日亏损超过维持保证金线触发追保。两个体系的数据要打通——SPAN 批处理用日终结算价生成阵列,盘中实时版本用最新价近似。近似和日终批处理的差异要在日终对账,差异大说明盘中近似失真,需要调整盘中扫描频率。
组合保证金体系的工程精髓和《复式记账在券商系统里的落地》篇同构:每个数字都要能回答"从哪个参数版本、哪个价格、按哪条路径算出来的"。SPAN 看似复杂,拆到底就是一张预计算表、一次对齐加总、一个取最大值的收尾——复杂的是参数口径,而参数口径的管理,从来都是风控系统里最该花功夫的地方。