4. 风险度量基础:波动率、下行风险与最大回撤
风险度量是量化投资与组合管理的基石。本章聚焦三种最核心的风险指标:波动率(标准差)、下行风险与最大回撤(Max Drawdown)。理解它们的定义、计算逻辑与适用场景,是后续进行收益评估与风险人群切片的前提。
核心认知:波动率衡量“双向波动”,下行风险只关注“亏损波动”,最大回撤刻画“从峰顶到谷底的最坏损失”。三者从不同维度描述风险,不可相互替代。
4.1 波动率(标准差)
定义:波动率(Volatility)通常用收益率序列的样本标准差表示,衡量资产收益率围绕其均值的离散程度。波动率越大,价格不确定性越高。
计算公式(日收益率波动率):
σ = sqrt( (1 / (n-1)) * Σ (rᵢ - r̄)² )
其中:
rᵢ = 第 i 日的对数收益率或简单收益率
r̄ = 样本期内平均收益率
n = 样本天数
年化处理:金融实务中通常将日波动率年化:年化波动率 = 日波动率 × √252(假设一年252个交易日)。
| 特征 | 说明 |
|---|---|
| 对称性 | 对上涨和下跌同等惩罚,不区分“好波动”与“坏波动” |
| 适用场景 | 组合优化(马科维茨模型)、风险预算、衍生品定价 |
| 局限性 | 无法反映收益分布偏态与尾部风险 |
4.2 下行风险
定义:下行风险(Downside Risk)只关注收益率低于某个目标值(通常为0或无风险利率)的波动。它更贴合投资者“厌恶亏损”的心理。
计算公式(下行标准差):
Downside Deviation = sqrt( (1 / n) * Σ min(0, rᵢ - r_target)² )
其中:
r_target = 目标收益率(通常设为0)
n = 总样本数(或仅亏损样本数,视具体定义)
实务提示:下行风险是计算索提诺比率(Sortino Ratio)的分母。索提诺比率 = (组合收益率 - 无风险利率) / 下行标准差,比夏普比率更关注亏损端。
4.3 最大回撤(Max Drawdown)
定义:最大回撤衡量在选定周期内,从任何一个历史高点(峰值)回落到后续最低点(谷值)的最大损失幅度。它直接回答“最坏情况下会亏多少”。
计算步骤:
- 计算净值曲线:将每日收益率连乘得到累计净值
Nₜ。 - 记录历史峰值:到时刻 t 为止的最大净值
Peakₜ = max(N₁, N₂, ..., Nₜ)。 - 计算当日回撤:
Drawdownₜ = (Nₜ - Peakₜ) / Peakₜ(通常为负值或百分比)。 - 取最小值:
Max Drawdown = min(Drawdown₁, Drawdown₂, ..., Drawdownₙ)。
示例(简单净值序列):
净值: 1.00 → 1.20 → 1.10 → 0.95 → 1.05 → 1.30
峰值: 1.00 → 1.20 → 1.20 → 1.20 → 1.20 → 1.30
回撤: 0% → 0% → -8.3% → -20.8% → -12.5% → 0%
最大回撤 = -20.8%
避坑提醒:最大回撤只取“最深的单次下跌”,不反映下跌持续时间或回撤恢复速度。两个产品可能有相同的最大回撤,但一个3个月恢复,另一个3年恢复,风险差异巨大。
4.4 三种风险度量对比
| 维度 | 波动率(标准差) | 下行风险 | 最大回撤 |
|---|---|---|---|
| 关注方向 | 双向(涨跌均计入) | 仅下行(亏损) | 仅下行(峰值到谷值) |
| 时间维度 | 截面/时序平均 | 截面/时序平均 | 全周期极值 |
| 对极端值敏感度 | 中等(平方放大) | 中等(仅负向平方) | 极高(只取最极端一次) |
| 常用比率 | 夏普比率 | 索提诺比率 | 卡玛比率(年化收益/最大回撤) |
| 投资者直觉 | “波动大,不确定” | “亏的时候别太猛” | “最多亏过多少” |
4.5 风险度量关系示意图
下图展示三种风险度量在一条模拟净值曲线上的作用位置:波动率覆盖全路径的离散程度,下行风险只取低于零线的负向波动,最大回撤锁定历史峰值到最低谷的垂直距离。
4.6 计算示例(Python代码)
以下代码展示如何用Python计算三种风险指标,数据为模拟日收益率序列。
import numpy as np
import pandas as pd
# 模拟100个交易日的日收益率(正态分布,均值0.05%,标准差1%)
np.random.seed(42)
returns = np.random.normal(0.0005, 0.01, 100)
# 1. 波动率(年化)
daily_vol = np.std(returns, ddof=1)
annual_vol = daily_vol * np.sqrt(252)
print(f"年化波动率: {annual_vol:.4f}")
# 2. 下行风险(目标收益率=0)
target = 0
downside = np.sqrt(np.mean(np.minimum(0, returns - target)**2))
annual_downside = downside * np.sqrt(252)
print(f"年化下行风险: {annual_downside:.4f}")
# 3. 最大回撤
cum_returns = (1 + returns).cumprod()
peak = np.maximum.accumulate(cum_returns)
drawdown = (cum_returns - peak) / peak
max_dd = drawdown.min()
print(f"最大回撤: {max_dd:.4f} ({max_dd*100:.2f}%)")
输出解读:年化波动率约15-20%属于常见股票型基金;下行风险通常略低于波动率(因为只计负向);最大回撤若超过30%则属于高风险策略,需警惕。
4.7 风险人群切片应用
在组合风险人群切片中,三种指标用于区分不同风险偏好的投资者:
- 保守型:关注最大回撤 < 5%,下行风险低,可接受波动率 < 8%。
- 稳健型:最大回撤 < 15%,下行风险中等,波动率 8%-15%。
- 进取型:最大回撤 < 30%,下行风险较高,波动率 15%-25%。
- 激进型:最大回撤可超过30%,下行风险高,波动率 > 25%。
通过将组合的波动率、下行风险与最大回撤映射到投资者风险预算,可实现精准的风险人群切片与产品匹配。