📈 量化金融笔记 —— 理解波动率
目录
- 波动率理论发展脉络
- 为什么两只收益相同的股票,体验完全不同?
- 什么是波动?
- 用收益率观察波动
- 波动率是什么?
- 波动率度量与区间预测
- 波动率的基础定义详解及公式推导
- 高级主题:方差修正与偏差校正
- 三股票日/年化波动率对比
- 10只Ticker批量波动率排名
- 波动率为什么会让人亏钱?
- 作业解答
- 本期学习总结与个人感悟
- 完整代码附录
一、波动率理论发展脉络
| 时间 | 人物 | 贡献 |
|---|---|---|
| 1900年 | 路易·巴舍利耶 | 《投机理论》,首次用布朗运动描述股价 |
| 1952年 | 马科维茨 | 现代投资组合理论,用方差度量风险 |
| 1973年 | 布莱克-斯科尔斯 | BS期权定价模型,引入隐含波动率 |
| 1982年 | 恩格尔 | ARCH模型,波动率聚类现象 |
| 1986年 | 泰勒 | 实现波动率(Realized Volatility) |
| 1993年 | 摩根大通 | VaR(风险价值)模型,RiskMetrics |
| 1994年 | 丹斯肯-兰德 | 随机波动率模型(SV) |
| 2003年 | 安德森-玻勒斯莱夫 | 实现波动率理论完善 |
二、为什么两只收益相同的股票,体验完全不同?
核心洞察:收益率相同 ≠ 投资体验相同
| 股票A | 股票B |
|---|---|
| 第1年:+10% | 第1年:+50% |
| 第2年:+10% | 第2年:-30% |
| 两年总收益:21% | 两年总收益:+5% |
| 年化收益:10% | 年化收益:2.5% |
| 体验:安稳睡觉 | 体验:心脏病发作 |
数学解释:
- 算术平均:A=(10+10)/2=10%,B=(50-30)/2=10%
- 几何平均(实际收益):A=sqrt(1.11.1)-1=10%,B=sqrt(1.50.7)-1=2.5%
波动率侵蚀收益:高波动导致"复利衰减",同样的算术平均,波动越大,实际几何收益越低。
三、什么是波动?
波动= 价格变动的幅度和频率
| 类型 | 定义 | 例子 |
|---|---|---|
| 上行波动 | 价格上涨的剧烈程度 | 利好消息后的暴涨 |
| 下行波动 | 价格下跌的剧烈程度 | 黑天鹅事件后的暴跌 |
| 双向波动 | 价格上下震荡的幅度 | 震荡市中的反复拉锯 |
关键区分:
- 波动 ≠ 风险(波动是中性概念,风险是主观感受)
- 波动 ≠ 亏损(高波动可能带来高收益)
- 波动 = 不确定性(未来价格的不确定程度)
四、用收益率观察波动
4.1 收益率的计算
简单收益率:
R_t = (P_t - P_{t-1}) / P_{t-1} = P_t / P_{t-1} - 1对数收益率:
r_t = ln(P_t / P_{t-1}) = ln(P_t) - ln(P_{t-1})为什么用对数收益率?
- 时间可加性:r_{t1,t2} = r_{t1} + r_{t2}
- 对称性:+10%和-10%的绝对值相等
- 近似等于简单收益率(小幅度时)
4.2 收益率序列可视化
通过观察收益率的分布,可以直观感受波动:
- 波动大的股票:收益率分布"胖尾",极端值多
- 波动小的股票:收益率分布"瘦尾",集中在0附近
五、波动率是什么?
5.1 波动率的定义
波动率 = 收益率的标准差
sigma = sqrt( (1/(N-1)) * sum((R_i - R_mean)^2) )其中:
- R_i = 第i期的收益率
- R_mean = 平均收益率
- N = 样本数量
5.2 波动率的本质
波动率不是预测未来价格,而是量化"未来价格的不确定性"。
| 波动率 | 含义 |
|---|---|
| 10% | 价格相对平稳,日波动约±0.6% |
| 30% | 价格波动剧烈,日波动约±1.9% |
| 60% | 价格极不稳定,日波动约±3.8% |
| 100% | 价格可能翻倍或腰斩 |
六、波动率度量与区间预测
6.1 年化波动率
日波动率 → 年化波动率:
sigma_annual = sigma_daily * sqrt(252)(252为一年交易日数量)
为什么是sqrt(252)而不是252?
- 波动率具有"时间平方根法则"
- 方差(波动率的平方)具有时间可加性
- 波动率本身不具有时间可加性
6.2 期权交易中的区间预测
在正态假设下,未来价格落在某个区间的概率:
| 区间 | 概率 |
|---|---|
| ±1σ | 68.3% |
| ±2σ | 95.4% |
| ±3σ | 99.7% |
应用:当前股价100美元,年化波动率30%,则1年后:
- 68.3%概率:70美元 ~ 130美元
- 95.4%概率:40美元 ~ 160美元
- 99.7%概率:10美元 ~ 190美元
七、波动率的基础定义详解及公式推导
7.1 总体方差 vs 样本方差
总体方差(已知全部数据):
sigma^2 = (1/N) * sum((R_i - mu)^2)样本方差(仅知部分数据,用均值估计):
s^2 = (1/(N-1)) * sum((R_i - R_mean)^2)为什么样本方差分母是N-1?
- 因为用样本均值R_mean代替了总体均值mu
- 样本均值已经"拟合"了数据,导致偏差
- 自由度修正:N个数据,估计了1个均值,剩余N-1个自由变化
7.2 价格序列调整
除息调整:
P_adj = P_close - D其中D为每股分红金额。分红后价格自然下跌,需调整避免虚假波动。
拆股调整:
P_adj = P_close * (1/S)其中S为拆股比例(如1拆2,S=2)。拆股后价格减半,需回溯调整历史价格。
八、高级主题:方差修正与偏差校正
8.1 由样本推断总体方差:自由度修正
当用样本方差s^2
估计总体方差sigma^2时:
E[s^2] = sigma^2 * (N-1)/N无偏估计:
s^2_unbiased = (N/(N-1)) * s^2 = (1/(N-1)) * sum((R_i - R_mean)^2)8.2 詹森不等式与波动率偏差校正
詹森不等式:对于凸函数f,有E[f(X)] >= f(E[X])
波动率是标准差(方差的平方根),平方根是凹函数:
E[sqrt(s^2)] <= sqrt(E[s^2]) = sigma结论:样本标准差s是总体标准差sigma的有偏低估估计量。
校正方法:
- 小样本:用c_4系数校正 s_corrected = s / c_4
- 大样本(N>30):偏差可忽略
8.3 正态假设下的样本标准差分布
若收益率服从正态分布,则:
((N-1)*s^2) / sigma^2 ~ chi^2_{N-1}即样本方差服从自由度为N-1的卡方分布。
九、三股票日/年化波动率对比
9.1 数据来源与计算
基于2024年7月至2026年7月的2年历史数据:
| 股票 | 市场 | 行业 | 日波动率 | 年化波动率 |
|---|---|---|---|---|
| 美光 (MU) | 美股 | 存储芯片 | 3.61% | 57.3% |
| SK海力士 (000660.KS) | 韩股 | 存储芯片 | 3.89% | 61.7% |
| 兆易创新 (603986) | A股 | 存储芯片 | 5.68% | 90.2% |
9.2 波动率对比柱状图
关键发现:
- 三只同为存储芯片股,波动率差异巨大
- 兆易创新波动率最高(90.2%),A股特性+小市值
- SK海力士次之(61.7%),韩股波动较大
- 美光相对最低(57.3%),美股大盘蓝筹特性
十、10只Ticker批量波动率排名
10.1 计算结果
| 排名 | Ticker | 公司 | 市场 | 年化波动率 |
|---|---|---|---|---|
| 1 | AMD | 超微 | 美股 | 80.1% |
| 2 | TSLA | 特斯拉 | 美股 | 76.8% |
| 3 | NVDA | 英伟达 | 美股 | 66.7% |
| 4 | BABA | 阿里巴巴 | 港股 | 62.0% |
| 5 | META | Meta | 美股 | 51.7% |
| 6 | TCEHY | 腾讯 | 港股 | 49.4% |
| 7 | AMZN | 亚马逊 | 美股 | 44.0% |
| 8 | GOOGL | 谷歌 | 美股 | 40.8% |
| 9 | AAPL | 苹果 | 美股 | 34.9% |
| 10 | MSFT | 微软 | 美股 | 30.2% |
10.2 波动率排名图
关键发现:
- AMD波动率最高(80.1%),半导体行业高弹性
- 微软波动率最低(30.2%),大型蓝筹稳定性
- 芯片股(AMD/NVDA)波动率显著高于软件股(MSFT/AAPL)
十一、波动率为什么会让人亏钱?
11.1 波动率侵蚀收益的数学原理
算术平均 vs 几何平均:
几何平均 ≈ 算术平均 - (sigma^2)/2波动率税(Volatility Tax):高波动直接降低复利收益。
| 算术平均收益 | 波动率 | 几何平均收益 | “波动税” |
|---|---|---|---|
| 10% | 10% | 9.5% | -0.5% |
| 10% | 30% | 5.5% | -4.5% |
| 10% | 50% | -2.5% | -12.5% |
| 10% | 80% | -22% | -32% |
11.2 行为金融学视角
| 心理效应 | 表现 |
|---|---|
| 损失厌恶 | 下跌1%的痛苦 > 上涨1%的快乐 |
| 追涨杀跌 | 高波动触发情绪化交易 |
| 锚定效应 | 以买入价为锚,忽视波动本质 |
| 过度自信 | 误将波动视为"机会",频繁交易 |
11.3 杠杆与波动
杠杆放大波动的影响:
- 2倍杠杆:波动率翻倍,"波动税"翻4倍
- 高波动+高杠杆 = 爆仓的温床
十二、作业解答
作业1:微软(MSFT)年化波动率计算
数据:MSFT 2024年7月-2026年7月
| 指标 | 数值 |
|---|---|
| 日波动率 | 1.90% |
| 年化波动率 | 30.2% |
加入四票对比:
| 排名 | 股票 | 年化波动率 | 市场 |
|---|---|---|---|
| 1 | 兆易创新 | 90.2% | A股 |
| 2 | SK海力士 | 61.7% | 韩股 |
| 3 | 美光(MU) | 57.3% | 美股 |
| 4 | 微软(MSFT) | 30.2% | 美股 |
结论:微软波动率最低,仅为兆易创新的1/3,体现了大型科技股的稳定性。
作业2:Histogram + 正态对比收益率分布图
上图:四只股票收益率分布直方图 + 正态分布曲线叠加
关键发现:
- 所有股票收益率分布均呈现"尖峰厚尾"(Leptokurtic)
- 极端收益频率高于正态分布预测
- 兆易创新尾部最厚,极端波动最多
- 微软最接近正态,但仍存在厚尾
作业3:近1年波动率最高的股票
| 排名 | 股票 | 近1年波动率 |
|---|---|---|
| 1 | AMD | 80.1% |
| 2 | TSLA | 76.8% |
| 3 | NVDA | 66.7% |
| 4 | BABA | 62.0% |
| 5 | META | 51.7% |
近1年波动率最高:AMD(80.1%)
作业4:自选5-10个ticker批量计算
十三、总结
13.1 核心内容回顾
| 主题 | 关键收获 |
|---|---|
| 波动率定义 | 收益率的标准差,量化不确定性 |
| 年化处理 | sigma_annual = sigma_daily * sqrt(252) |
| 方差修正 | 样本方差用N-1,标准差有偏需校正 |
| 詹森不等式 | 波动率是凹函数,样本估计有偏低估 |
| 波动率税 | 高波动直接侵蚀复利收益 |
| 三票对比 | 同板块不同市场,波动率差异巨大 |
| MSFT波动率 | 30.2%,远低于芯片股,体现蓝筹稳定性 |
13.2 个人感悟
波动率是量化投资的"元概念"。理解波动率,才能理解风险、定价、对冲的一切。
同样的收益,不同的体验。两只股票算术收益相同,几何收益可能天差地别。波动率就是隐形的"收益税"。
A股波动率显著高于美股。兆易创新90% vs 美光57%,这不仅是个股差异,更是市场结构和投资者结构的差异。
正态假设是危险的。所有股票都呈现"尖峰厚尾",黑天鹅比正态分布预测的更频繁。这就是为什么期权市场存在"波动率微笑"。
波动率本身可以成为交易标的。VIX指数、波动率互换、方差互换——理解波动率,就打开了衍生品世界的大门。
十四、代码附录
14.1 波动率计算函数
importnumpyasnpimportpandasaspddefcalculate_volatility(prices,period='daily'):# 计算对数收益率log_returns=np.log(prices/prices.shift(1)).dropna()# 计算日波动率 (样本标准差,无偏估计)daily_vol=log_returns.std(ddof=1)# 年化ifperiod=='daily':returndaily_volelifperiod=='annual':returndaily_vol*np.sqrt(252)else:raiseValueError("period must be 'daily' or 'annual'")14.2 批量计算多股票波动率
defbatch_volatility(tickers_data):results=[]forticker,pricesintickers_data.items():log_returns=np.log(prices/prices.shift(1)).dropna()results.append({'ticker':ticker,'daily_vol':log_returns.std(ddof=1),'annual_vol':log_returns.std(ddof=1)*np.sqrt(252),'mean_return':log_returns.mean(),'skewness':log_returns.skew(),'kurtosis':log_returns.kurtosis(),'max_daily_gain':log_returns.max(),'max_daily_loss':log_returns.min()})returnpd.DataFrame(results)14.3 收益率分布可视化
importmatplotlib.pyplotaspltfromscipyimportstatsdefplot_return_distribution(returns,ticker,ax=None):ifaxisNone:fig,ax=plt.subplots(figsize=(10,6))# 直方图ax.hist(returns,bins=50,density=True,alpha=0.6,color='steelblue',label='实际分布')# 正态分布拟合mu,sigma=returns.mean(),returns.std()x=np.linspace(returns.min(),returns.max(),100)normal_pdf=stats.norm.pdf(x,mu,sigma)ax.plot(x,normal_pdf,'r-',linewidth=2,label='正态分布')ax.set_title(f'{ticker}收益率分布 vs 正态分布')ax.set_xlabel('对数收益率')ax.set_ylabel('概率密度')ax.legend()returnax