跳过正文
  1. Posts/

风险也不是一个数字:波动率、最大回撤和 VaR 到底在衡量什么?

·6080 字·13 分钟
目录

上一篇《收益率不是一个数字》最后留下了一句话:同样赚了 10%,一路平稳和先腰斩再翻倍的体验完全不同。我本来以为接下来该看"怎么比较投资"了,结果发现前面还缺一块——先把风险这半边理清楚。

我对风险最初的直觉只有一句话:可能亏钱。在量化行业做了几年 ML Infra,日常工作围绕训练、推理、模型管理和自动化上线,金融理论本身并不在我的工作范围内;波动率、最大回撤、VaR 这些词见过很多次,真正坐下来逐个看定义和算法,是准备基金从业资格考试这段时间的事。

学完之后让我意外的不是某个公式,而是这些指标之间的关系:它们都能被叫作"风险",但定义的不是同一件事。波动率在描述收益有多不稳定,最大回撤在描述历史上最疼的一段下跌,VaR 在说某个概率下的损失阈值。它们不是同一件事的不同算法,而是在回答不同的问题。

从"可能亏钱"说起
#

先把几种都能叫"有风险"的情况摆在一起:

  • 一项投资每天小幅上下波动,但长期缓慢向上;
  • 另一项平时几乎不动,某个月突然亏掉一大截;
  • 有一项最终确实赚了钱,但中间一度从高点跌去一半;
  • 还有一项账面数字很稳,真想卖出时却很难找到买家。

这几种情况都让人不安,但不安的来源完全不同:第一种是过程颠簸,第二种是尾部事件,第三种是路径上承受的痛苦,第四种已经不在收益序列里了(流动性问题不在今天的话题里)。如果不先说清楚怕的是什么,就去比较一个孤零零的数字,很可能比较的不是同一件事。

做系统监控时我有过类似的经验。CPU 的平均利用率很低,不代表服务没出过故障;两个服务平均延迟一样,P99 延迟可能差出一个数量级。平均值把分布压成了一个点,而故障常常发生在那个点之外。风险指标也是同一种操作:先决定把"风险"定义成什么可以用数据描述的东西,再对它求一个数。所以我更想先弄清楚的是:每个指标究竟把什么当成了风险。

波动率:收益有多不稳定
#

波动率要回答的问题很朴素:每一期的收益,通常会偏离平均收益多少?

先把一段历史写成收益率序列 \(r_1, r_2, \dots, r_n\),再算出这段时期的平均收益 \(\bar r\)。单看某一期,它偏离平均值的幅度是 \(r_t - \bar r\)。想描述"典型的偏离幅度",把这串离差直接平均会得到 0——正的偏离和负的偏离自己抵消了。处理办法有两种:取绝对值,或者平方。金融里普遍用平方,算出来的量叫方差:

$$ \sigma^2 = \frac{1}{n}\sum_{t=1}^{n}(r_t - \bar r)^2 $$

平方之后的单位是收益率的平方,不直观,所以再开一次根号,得到和收益率同单位的量:

$$ \sigma = \sqrt{\sigma^2} $$

\(r_t\) 是第 t 期的收益率,\(\bar r\) 是这 n 期的平均值,\(\sigma^2\) 是方差,\(\sigma\) 是标准差。当它被用来描述收益率时,日常就叫波动率(volatility)。公式里的平方有两个效果:消掉正负号,让上涨和下跌都算作"偏离";放大较大的偏离,1% 的偏离平方之后是 0.0001,4% 的偏离是 0.0016,权重差 16 倍。

这里衡量的是收益率的波动,不是资产价格的波动。价格序列带着趋势,长期上涨会把波动盖过去;而且 10 元的资产和 1000 元的资产,价格波动没法直接比。收益率经过归一化,可以跨资产、跨时间段放在一起。

举一个只有四期的例子,两组收益的平均值都是 2%:

期数第 1 期第 2 期第 3 期第 4 期平均
稳定组+1%+2%+3%+2%+2%
波动组-3%+7%+1%+3%+2%

稳定组的离差是 -1%、0、+1%、0,平方平均再开根号,\(\sigma \approx 0.71\%\)。波动组的离差是 -5%、+5%、-1%、+1%,\(\sigma \approx 3.61\%\),是前者的五倍多。可是四期累计下来,稳定组涨了 8.23%,波动组涨了 7.97%,几乎一样。平均值相同的时候,波动更大的那组悄悄损失了一点复合增长——上一篇算过的波动拖累,这里正好是一个小例子。

关于口径:上面用的是总体标准差(除以 n),等价于把这段窗口当成考察的全部。日常看到的指标多数用样本标准差(除以 n-1,修正用样本估计总体时的偏差),上面两组会变成 0.82% 和 4.16%,数值略大,但倍数关系和结论不变。不同来源的数字放在一起之前,最好确认它们用的哪个口径。

单期波动可以换算成"年化波动率",常见做法是乘以 \(\sqrt{T}\),T 是一年包含多少期:

$$ \sigma_{ann} = \sigma_{period}\sqrt{T} $$

上面的波动组是月度数据,T 取 12:\(3.61\% \times \sqrt{12} \approx 12.5\%\)。日度数据常用 T=252(一年的交易日数量)。这个换算的方便之处是把不同频率的波动放到同一把尺子上,但它依赖几个假设:各期收益独立同分布、方差恒定、期与期之间没有自相关。真实收益有明显的波动聚集——大波动之后往往还是大波动——所以 \(\sqrt{T}\) 是近似,不是定理。它给的是同一个尺度上的可比性,不是"未来一年波动就是这么多"的承诺。

上涨也算风险吗
#

波动率的公式里,离差被平方之后符号就消失了:一期涨 5% 和一期跌 5%,对标准差的贡献一模一样。但对持有资产的人来说,上涨通常不是需要规避的东西。我第一遍看到这里时觉得别扭:为什么会用一个把上涨也算作风险的指标,还用了这么多年?

后来想明白的是,波动率本来就没打算衡量"亏损的可能性",它衡量的是收益路径的不确定程度。对做组合、做对冲、给期权定价的人来说,未来落在哪里难以预测本身就是需要管理的事,方向是次要的。另一个原因是它在组合层面好用:组合方差可以按持仓权重和协方差矩阵分解,这让波动率成为大量资产定价模型的默认输入。丢掉方向换来的,是简单、可加、可年化。

但局限还是局限。一个只会涨、只是涨幅忽大忽小的资产,波动率不会低,持有人却未必觉得自己在冒险。于是有了只惩罚不利方向的做法:下行偏差,只看低于某个目标(或均值)的那部分离差,仍用平方和来度量;把它放进分母,就得到 Sortino Ratio,和夏普比率的区别只在分母是"全部波动"还是"下行波动"。Sortino 以后再说,记住它的动机就够了:把上涨从惩罚名单里拿掉。

波动率的取舍不在计算过程,而在它一开始就把方向信息丢掉了。 丢掉方向换来通用性,通用性的代价是有时会把你不介意的东西也算成成本。

最大回撤:最痛苦的一段下跌
#

波动率是平均意义上的离散程度,它不关心偏离发生的顺序。+10%、-10% 和 -10%、+10% 的波动率完全一样,但经历它们的人感受完全不同。要描述路径,最直接的素材是净值曲线:每个时点资产值多少钱,常以 1 或 100 为起点。最大回撤问的是:在这段历史里,从任意一个高点算起,最惨的一次跌了多少?

设净值序列 \(V_0, V_1, \dots, V_n\)。先找出每个时点之前出现过的最高净值:

$$ \mathrm{Peak}_t = \max_{0 \le s \le t} V_s $$

最大回撤就是

$$ \mathrm{MDD} = \max_{t} \frac{\mathrm{Peak}_t - V_t}{\mathrm{Peak}_t} $$

\(\mathrm{Peak}_t\) 是从开始到 t 时刻的历史最高净值,分子是当前净值离这个高点的落差,分母是高点本身,所以最大回撤是一个比例,不是金额。举个最小的数字:净值从 100 跌到 50,回撤是 50%;反过来,从 50 涨回 100 需要 \(100/50 - 1 = 100\%\)。上一篇聊过百分比作用在会变的基数上(那篇),所以"跌 50% 再涨 50% 就回本"并不成立,50 涨 50% 只到 75。一般地,跌掉比例 d 之后,回本需要的涨幅是

$$ \frac{1}{1-d} - 1 $$

跌 10% 要涨约 11.1%,跌 30% 要涨约 42.9%,跌 50% 要涨 100%。坡是变陡的。

同一个终点,不同的路
#

用三条只有五个月的净值路径说明。都是月收益,起点 100:

路径第 1 月第 2 月第 3 月第 4 月第 5 月期末净值区间最大回撤
A+1.5%+1.5%+1.5%+1.5%+1.5%107.730
B+10%-5%+10%-15%+10%107.4815.0%
C+1%+1%+1%+1%-12%91.5712.0%
A、B、C 三条净值路径:相同的起点,不同的过程

A 和 B 期末几乎一样(+7.73% 和 +7.48%),只看收益分不出区别。但 B 中途跌了两段,最深的一次从 114.95 跌到 97.71,回撤 15%,要回到之前的高点还得再涨约 17.6%。A 的路径单调向上,最大回撤是 0。

B 的波动率也不低,这段收益的总体标准差是 10.3%,而 A 是 0。到这里两个指标的看法一致。C 就不一样了:前四个月每月涨 1%,波动率是 0,看起来比谁都稳;第五个月一次亏掉 12%,把前面四个月的收益全部抹掉还倒亏。按整段五期算,C 的标准差是 5.2%,大约只有 B 的一半,但它期末是亏的,最大回撤 12%。C 的风险藏在一个还没发生的月份里:如果只看前四个月,所有基于历史数据的指标都会说它很安全。

最大回撤不保证什么
#

有三件事它做不到,而且都容易被忽略。

它只描述给定历史窗口里实际发生过的最差路径。换一个起点,数字就变;窗口越短,越容易好看。所以拿基金宣传材料里一段漂亮的历史作数之前,得先看它覆盖了多长、有没有包含一次完整的下跌周期。一条还没经历过熊市的净值曲线,最大回撤接近 0 也不奇怪。

历史最大回撤也不是未来损失的上限。它记录的是发生过的事,没发生过的事不在指标里。用 2008 年以前的数据做回测,不会告诉你 2008 年会发生什么。

它也不包含时间信息。同样跌 20%,一个月跌完和三年阴跌,数字相同,对持有人的意义完全不同。有的地方会补充回撤持续期,这里就不展开了。

VaR:大多数时候最多亏多少
#

波动率和最大回撤都在描述已经发生过的路径,而投资人更常问的是未来:接下来可能亏多少?VaR(Value at Risk,在险价值)想用一个数字回答这类问题:在给定的持有期和置信水平下,损失超过某个阈值的概率是多少?

严格一点的定义是:在置信水平 \(\alpha\) 下,找一条最小的损失阈值线,使得损失超过它的概率不超过 \(1-\alpha\):

$$ P(L \gt \mathrm{VaR}_\alpha) \le 1 - \alpha $$

\(L\) 是持有期内的损失,正数表示亏钱;\(\alpha\) 是置信水平,比如 95%;\(\mathrm{VaR}_\alpha\) 就是那条线。95% 置信水平对应 5% 的尾部概率,这两个说法是一回事。

换成具体数字:一个 100 万元的组合,估出来的一日 95% VaR 是 2 万元。它大致的意思是,在当前使用的模型、数据和假设下,未来一天损失不超过 2 万元的概率约为 95%;剩下约 5% 的情况下损失会超过 2 万元。如果用历史模拟的视角,把过去 250 个交易日重来一遍,大约有 12 到 13 天会超过这条线。

下面这几件事常被搞混,值得单独说:

  • 它不是"最多亏 2 万元"。超过 2 万元的那部分,VaR 一个字都没说。
  • 它不是对某一天的预测,而是用历史数据估出来的一个分位数。换一段历史、换一个分布假设,数字就会变。
  • 不同持有期的 VaR 不能直接比较。一日 VaR 和十日 VaR 回答的是两个问题;在 i.i.d. 假设下有个常用的 \(\sqrt{T}\) 换算,十日 VaR 大约是 \(2 \times \sqrt{10} \approx 6.3\) 万元。这个换算和年化波动率一样,依赖假设。
  • 置信水平越高,线越靠尾部。95% 和 99% 不是同一个东西的两种精度,它们看的是损失分布上不同的位置。

估计 VaR 的方法主要有三类,选不同的方法,数字会不一样:

  • 历史模拟:把过去 N 天的收益率从差到好排序,取对应分位点。不假设分布形状,但等于相信"历史会重演"。
  • 参数法:假设收益服从某个分布(最常用的是正态分布),用均值和波动率直接算出分位点。快,但正态分布会低估尾部。
  • 蒙特卡洛模拟:先构造一个收益生成模型,模拟出大量可能路径,再从中统计分位点。灵活,也更依赖模型设定。

没有哪一种方法无条件更好,差别在于你愿意接受哪一组假设。

越过 VaR 之后呢
#

VaR 有一个让人不太满足的地方:它只说了越过阈值的概率,没说越过之后会怎样。两个组合可以有一模一样的 95% VaR,但一个在越线的情况下平均亏 3 万,另一个平均亏 30 万。

Expected Shortfall(ES,也常写成 CVaR)补的就是这一段:既然损失已经超过 VaR 了,那平均会亏多少?

$$ \mathrm{ES}_\alpha = E\left[L \mid L \gt \mathrm{VaR}_\alpha\right] $$

等式右边是条件期望,读作"在损失超过阈值的前提下,损失的平均值"。VaR 只取一个分位点,ES 取的是尾部区域的平均高度。

可以用洪水警戒线来想。VaR 像河堤上的警戒水位,它回答水位越线的概率;ES 关心的是,一旦越线,平均会漫出多少。警戒线高度相同的两条河,越线后的淹没深度可能完全不是一个量级。

ES 还有一个技术上更顺眼的性质:它满足次可加性——两个组合合在一起,ES 不会超过各自 ES 的和,这符合分散化降低风险的直觉。VaR 不保证这一点,个别情况下合并反而会让 VaR 变大。巴塞尔协议市场风险框架(FRTB)在内部模型法里把 VaR 换成了 97.5% 置信水平的 ES,原因之一就在这里。推导不展开,知道它补上了 VaR 留下的那个洞就够了。

没有哪个指标能单独描述风险
#

把前面几个指标摆在一起,各自的取舍就清楚了:

指标把什么视为风险回答什么问题容易遗漏什么
波动率收益偏离均值的程度收益路径有多不稳定方向;损失的概率;尾部事件
下行偏差不利方向的偏离程度低于目标时通常有多糟损失的概率;目标的选择依赖主观
最大回撤历史峰谷间的最大跌幅已经发生过的路里最痛的一段未来;窗口依赖;持续多久
VaR某个分位点的损失阈值损失超过一条线的概率有多大越线后的严重程度;对分布假设敏感
Expected Shortfall越过 VaR 后的平均损失尾部一旦发生,平均有多严重仍是模型估计;尾部样本少,估计不稳

回到 A、B、C 三条路径,三个指标给出的画面是这样的:波动率指出 B 不稳定;最大回撤指出 B 的路径最痛苦;而 C 说明有些风险在爆发之前根本不会出现在历史数据里,波动率和最大回撤都只能事后确认。如果拿前四个月的数据给 C 估一个 VaR,大概率会得到一条低得离谱的线,第五个月的 -12% 会直接把它击穿。这就是尾部风险的意思——不是"平均而言的坏",而是"小概率下的极端坏"。

这件事在系统监控里很常见。评价一个服务的可靠性,平均延迟、P99 延迟、错误率、最长故障时间各自描述的是一类失败:平均延迟看不见尾延迟,P99 看不见错误率,错误率看不见一次持续三小时的故障,最长故障时间也反映不了每天零星的小抖动。没有哪个数字能单独代表"这个系统好不好"。

选哪个风险指标,取决于你最怕哪种失败方式;一个指标越简洁通用,越要清楚它压缩掉了什么。

真正值得记住的几件事
#

  • 风险不是等待被某个公式发现的唯一数字。每个指标都先定义了自己关心的失败方式,再谈度量;比较两个风险数字之前,先确认它们回答的是不是同一个问题。
  • 波动率衡量的是收益偏离均值的程度,不是亏损本身;上涨和下跌对它的贡献完全一样。
  • \(\sqrt{T}\) 年化依赖 i.i.d.、方差恒定、无自相关等假设,是方便的比较尺度,不是自然定律。
  • 最大回撤描述给定历史窗口里实际发生过的最差峰谷跌幅,路径依赖、窗口依赖;历史最差不等于未来损失上限。
  • 回撤和回本不对称:跌掉比例 d,需要涨 \(1/(1-d)-1\) 才回到原点。
  • VaR 是给定模型、数据和置信水平下的损失阈值,不是最大可能损失;它也不说超过阈值之后会亏多少。
  • Expected Shortfall 关注越过 VaR 之后的平均损失,补上了"尾部有多严重"这一条信息。
  • 判断投资风险不能只看一个数字,就像判断系统可靠性不能只看平均延迟。

收益和风险现在都各自被拆成了一组指标。但一项投资还是没法只看其中一边:同样多的收益,谁承担的风险更小;或者同样深的回撤,谁换来的收益更多?下一篇写夏普比率,以及"风险调整后收益"到底调整了什么。

参考资料
#

  • Philippe Jorion, Value at Risk: The New Benchmark for Managing Financial Risk
  • Alexander J. McNeil, Rüdiger Frey, Paul Embrechts, Quantitative Risk Management: Concepts, Techniques and Tools
  • Basel Committee on Banking Supervision, Minimum capital requirements for market risk(2019)
  • John C. Hull, Options, Futures, and Other Derivatives 中波动率与 VaR 相关章节

相关文章