从单笔定价到组合估值:历史模拟 VaR 与情景重估
从单笔定价到组合估值:历史模拟 VaR 与情景重估
交易台关心的是「这一笔现在值多少」。风控和投组关心的是另一句话:明天亏多少、哪一笔贡献最大、这组数能不能审计。 公开站目前强在单笔模型——香草、障碍、雪球、可转债、IRS——缺的是把这些单笔放进 同一张市场快照 里重估,并读出 VaR / ES。
本文不讲命令行,只讲四件事:
- 为什么风险不能在「另一套曲线」上算;
- 历史模拟法实际在对持仓做什么;
- 它和参数法、蒙特卡洛的差别;
- 猛犸如何让日终估值、VaR 和绩效共用同一条价格路径。
1. 从一只 PV 到一本账
单笔定价的输入是:估值日、交易条款、一组市场对象(曲线、曲面、汇率、正股)。输出是一个 PV 和若干 Greeks。
组合估值把同一套输入扩成三步:
- 同一快照加载全部曲线、曲面、行情;
- 对组合里每一笔用 各自的定价引擎 重估(债券走折现,雪球走蒙特卡洛,可转债走树);
- 把 PV、Greeks、情景损益按组合、产品、币种汇总。
关键约束:定价用的市场对象,必须就是风险冲击的那一套。 若报价台用 Dupire 曲面,风控却用另一张 ATM 表去 bump,组合 VaR 和单笔 Greeks 对不上,后面的归因、限额、绩效都会分叉。
猛犸把「单笔函数」和「批次重估」接到同一套产品定义上:雪球仍是同一条 YAML,可转债仍是同一棵条款树,只是调用次数从 1 变成「1 + 情景数」。
2. 历史模拟在算什么
历史模拟(Historical Simulation, HS)不问「收益率是否正态」,而问:如果过去 天里曾经发生过的市场变动,今天再来一遍,组合会亏多少?
取回顾窗口 (常见 250 个交易日,约一年),对每一个历史日 :
- 量出当日到次日的市场变动——股票/期货用价格比 ,债券和 IRS 用曲线的变动,汇率用即期比;
- 把这组变动加到 今天的快照 上,得到一个情景市场;
- 用原定价模型对全组合重估,得到情景损益 。
于是有 个损益。令 为经验分位数(亏损为负时取左尾):
| 指标 | 读法 |
|---|---|
| VaR(95% / 99%) | 在历史经验里,大约 5% 或 1% 的日子亏得比这个数更多 |
| ES(Expected Shortfall) | 已经跌破 VaR 之后,平均还要再亏多少 |
| PFE | 潜在未来敞口,多用于对手信用,和 VaR 不是同一个分位数故事 |
教学上可以想象一张表:250 行情景,一列组合损益,从亏到盈排序。第 13 行附近(约 5%)就是 95% VaR;那 13 行的平均亏损就是 95% ES。不必假设钟形分布。
窗口和持有期要写进报告:250 日、1 日持有是最常见的监管/内部口径;10 日 VaR 不应当成「1 日 VaR 乘 」往期权和雪球上套——非线性产品没有这个权利。
3. 和参数法、蒙特卡洛差在哪
| 参数法(方差–协方差) | 历史模拟 | 蒙特卡洛 | |
|---|---|---|---|
| 市场假设 | 收益正态、线性(常用 Δ) | 历史真的发生过的变动 | 指定随机过程再抽样 |
| 对期权 / 雪球 | Δ 近似,丢掉 Gamma 和敲入 | 按原模型重定价 | 也可重定价,但路径是模型造的 |
| 优点 | 快、分解容易 | 不假设正态;尾部是「曾经见过的」 | 可以造历史里没有的联合冲击 |
| 缺点 | 非线性产品系统性偏 | 窗口里没有的事件不会出现 | 依赖模型;和定价模型可能不一致 |
雪球、障碍、可转债都是非线性。用组合 Δ 加总再乘一个「组合波动率」,等于假设明天只走一小步、结构还在同一段 payoff 上。历史模拟则对每个情景 重新跑定价:股价跌破敲入线,那一笔的损益会跳,而不是沿 Delta 滑过去。这正是 雪球 路径 C 在组合里的样子。
参数法适合线性债、线性期货的快速限额;正式的期权与结构簿,HS 或全定价蒙特卡洛才和单笔模型同一套语言。
4. 风险和绩效为什么要共用日度 PV
同一组合常常被算两遍:风控按历史情景重估,绩效按真实日终价算收益。若两套程序用了不同曲线、不同节日、不同是否含应计,就会出现「VaR 说亏 800 万,绩效说亏 300 万,两边都有公式」。
正确做法是 先留下一条日度 PV 序列(每笔、每日、同一快照规则),然后:
- 风险:用这条序列的变动做经验分位数(或用同一规则对今日持仓套历史冲击);
- 绩效:用同一条序列算区间收益、回撤、与基准的差;
- 归因:债券上再拆成票息、利率、利差,见 债券归因。
猛犸的日终批次按这个顺序落盘:先完整估值,再在同一结果上做 HS-VaR 和绩效,而不是风控、绩效各起一套重估。
5. 不同产品,冲击的是什么
「历史变动」必须对上产品真正敏感的因子。猛犸按资产类型选冲击,而不是对所有东西都乘一个指数涨跌:
| 产品 | 历史冲击加在哪 | 不做什么 |
|---|---|---|
| 股票、ETF、商品/股指期货 | 标的或合约的历史价格比 | 不另造一条「影子现货」 |
| 债券、IRS | 收益率曲线的历史变动 | 不只冲一个久期乘子就结束 |
| 场内/场外期权 | 先冲标的现价,波动率用当日曲面 | 默认不把历史再拿去扭一遍 vol 面 |
| 雪球等结构 | 冲标的,定价仍走 LocalVol / HistVol 蒙特卡洛 | 不用 Δ 代替重定价 |
| 可转债 | 正股价格 + 曲线 / 利差 | 不能只冲债或只冲股 |
期权「先冲现价、当日 vol 保持」是有意的:HS 窗口里的隐波变化很难和今日曲面一一对齐;先保证非线性的现货腿被重估,vol 冲击留给单独的压力情景。若业务要求 vol 也跟历史走,应写成显式情景,而不是悄悄改默认 HS。
外汇账面则冲击即期和远期点;信用相关产品冲击利差或信用曲线。CVA 是对手违约的估值调整,和组合市场风险 VaR 不是同一个数,不要加在一起当「总风险」。
6. 猛犸怎么跑(业务视角)
日终。 当天交易 + 当天市场快照 → 全组合基价 → 历史情景重估 → 输出每笔 PV、Greeks、组合 VaR/ES,以及按组合/产品/币种的汇总。
日内。 快照和已完成的日终批次保留,只对新增交易估值,不覆盖已经落盘的 results。适合盘中补单,而不是重算全年历史。
回测。 同一套冲击规则沿日期滚动:每一天用「当时的持仓 + 当时的快照 + 过去 日变动」算出 VaR,再和次日真实损益比。这是在检验 VaR,不是再发明一种定价。
对使用方只要盯三件事:快照是否完整(曲线、行情、节日)、回顾窗口和分位数是否写进报告、非线性产品是否走了重定价。市场数据缺了还在出数,比模型选错更危险——后续专文会写就绪检查。
试用和单笔模型仍从 软件下载 和 场外计算器 进入;组合批次是同一引擎的批量模式。
7. 常见误区
用组合 Delta 加总当期权 / 雪球 VaR。 敲入、强赎、障碍附近,损益不是直线。HS 必须重定价。
结构化只冲击 ATM 波动率。 雪球的价格在左翼。只动平价 σ,等于没看见路径 C。有曲面就冲击或重校准整张面;没有面再用 HistVol,并换窗口。
风险一套重估、绩效一套重估。 对账成本会无限涨。先固定日度 PV,再分叉指标。
10 日 VaR = 1 日 VaR × √10。 对线性、正态近似成立;对期权簿和雪球簿不成立。
窗口里没有的危机,VaR 也不会有。 HS 的诚实之处也是局限。2015、2020、2024 这类日子若不在窗口里,就要另做压力情景,不能假装 99% VaR 已经覆盖「所有坏事」。
把 CVA、VaR、会计减值加总。 口径不同。市场风险 VaR 是持仓重估的分位数;CVA 是对手信用;减值是会计。分开报告。
8. 延伸阅读
| 想继续看 | 文档 |
|---|---|
| 非线性结构为何必须重定价 | A股雪球 |
| 正股 + 条款树 | 中国可转债 |
| 债券损益拆开 | 债券归因分析 |
| 对手信用,不是市场 VaR | CVA |
| 单笔 Greeks 约定 | 结构化产品希腊字母 |
| 历史波动率(定价用,不是 HS 窗口) | 历史波动率 |
| 试用与安装 | 软件下载、安装指南 |
猛犸不只给出一个 PV,还能在同一张快照上给出可审计的组合尾部风险。先把快照和重估对齐,VaR 才值得写进限额。
