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)

定义:最大回撤衡量在选定周期内,从任何一个历史高点(峰值)回落到后续最低点(谷值)的最大损失幅度。它直接回答“最坏情况下会亏多少”。

计算步骤:

  1. 计算净值曲线:将每日收益率连乘得到累计净值 Nₜ。
  2. 记录历史峰值:到时刻 t 为止的最大净值 Peakₜ = max(N₁, N₂, ..., Nₜ)。
  3. 计算当日回撤:Drawdownₜ = (Nₜ - Peakₜ) / Peakₜ(通常为负值或百分比)。
  4. 取最小值: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 风险度量关系示意图

下图展示三种风险度量在一条模拟净值曲线上的作用位置:波动率覆盖全路径的离散程度,下行风险只取低于零线的负向波动,最大回撤锁定历史峰值到最低谷的垂直距离。

三种风险度量示意图 波动率 · 下行风险 · 最大回撤 对比示意 目标收益率(0%) 波动率(双向) 下行风险(仅负向偏离) 最大回撤 峰值→谷值 净值曲线 波动率范围 下行风险区域 最大回撤

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%。

通过将组合的波动率、下行风险与最大回撤映射到投资者风险预算,可实现精准的风险人群切片与产品匹配。