本文是 Datawhale《和Yibo零基础学习量化金融》Phase 2 第五章的学习总结,包含核心概念、理论发展脉络、Python 代码实现和真实行情验证。
标签:量化交易Python波动率学习笔记Datawhale投资组合
分类:Python / 量化投资
前言
很多新手只关心「我能赚多少钱」,但量化研究员更关心「为了赚这些钱,我要承担什么风险」。
这一章从两个收益完全相同、但持有体验天差地别的故事切入,帮你建立对波动率的直觉,并学会用 Python 真实计算它。
一、为什么两只收益相同的股票,体验完全不同?
想象你和朋友各拿1 万元,分别买入两只股票,连续观察5 天:
| 股票 | 价格路径 | 最终结果 |
|---|---|---|
| A | 100 → 105 → 110 → 115 → 120 | +20% |
| B | 100 → 80 → 130 → 70 → 120 | +20% |
第 5 天,两个人账户都是12,000 元,相对本金都赚了20%。
但持有体验完全不同:
- 股票 A像坐电梯,稳稳上涨
- 股票 B像坐过山车,经历过 -20%、+62.5%、-46.2% 的剧烈波动
量化研究员不仅看「赚多少」,还要看「中间有多颠」。
二、什么是波动?
金融市场中,价格从来不是直线运动的:
- 有些股票像坐电梯——缓缓上行,偶尔停一停
- 有些股票像坐过山车——尖叫、俯冲、再弹射
量化里,我们把这种**「不稳定程度」**叫做波动(Volatility)。
右图红色阴影 = 从阶段高点跌下来的部分,也就是账户「缩水」的时刻。
三、为什么用收益率而不是价格?
| 问题 | 解释 |
|---|---|
| 价格会「越涨越高」 | 100 元的 5% 和 200 元的 5%,绝对金额差一倍 |
| 不同股票价位差很多 | 直接比价格涨跌不公平 |
| 收益率是相对变化 | 可以在不同股票、不同时期之间比较 |
日收益率公式:
r t = P t − P t − 1 P t − 1 r_t = \frac{P_t - P_{t-1}}{P_{t-1}}rt=Pt−1Pt−Pt−1
代码实现:
df['return']=df['Close'].pct_change()- 左图:累计收益率曲线,看长期方向
- 右图:日收益率直方图,看日常分布是集中还是分散
四、波动率 = 收益率的标准差
标准差衡量的是数据的分散程度:
| 标准差 | 含义 |
|---|---|
| 越大 | 收益率越分散 → 波动率越高 |
| 越小 | 收益率越集中 → 波动率越低 |
样本标准差公式:
σ = 1 n − 1 ∑ i = 1 n ( r i − r ˉ ) 2 \sigma = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(r_i - \bar{r})^2}σ=n−11i=1∑n(ri−rˉ)2
其中:
- r i r_iri:第 i 天的日收益率
- r ˉ \bar{r}rˉ:日收益率的平均值
- n nn:样本天数
- σ \sigmaσ:标准差(用来近似日波动率)
玩具案例验证(5.1)
| 股票 | 日波动率(标准差) |
|---|---|
| A(平稳上涨) | 0.28% |
| B(大起大落) | 58.85% |
B 的波动率约为 A 的210 倍,和肉眼观察的「过山车」完全一致。
真实数据:AAPL
- 日波动率(标准差):1.5469%
- 粗略直觉:典型单日涨跌幅度大约在±1.55%附近
五、年化波动率
日波动率只有「一天」尺度,不同研报、不同软件口径不统一。
业界习惯换算成**「一年尺度」**,方便横向比较:
- 美股一年约252 个交易日
- 年化因子取252 \sqrt{252}252
公式:
σ a n n u a l = σ d a i l y × 252 \sigma_{annual} = \sigma_{daily} \times \sqrt{252}σannual=σdaily×252
一句话:年化波动率 = 把「日波动」翻译成人人都懂的「年尺度」。
六、三票波动率 PK:苹果 vs 特斯拉 vs 英伟达
用近 2 年真实数据,计算三只科技龙头股的日/年化波动率:
| 股票 | 日波动率 | 年化波动率 | 年化收益(约) |
|---|---|---|---|
| 苹果 | 1.79% | 28.41% | 26.01% |
| 特斯拉 | 3.83% | 60.77% | 47.06% |
| 英伟达 | 2.98% | 47.29% | 45.17% |
结论:
- 最稳:苹果(28.4%)—— 大公司、机构持仓多,走势相对稳
- 最刺激:特斯拉(60.8%)—— 涨得猛,跌得也猛
七、同收益、不同波动:净值路径模拟
假设两位投资者,一年后账户都赚了 20%:
| 投资者 | 年收益 | 年化波动率 | 性格画像 |
|---|---|---|---|
| A | 20% | 10% | 平稳型 · 像坐电梯 |
| B | 20% | 60% | 过山车型 · 大起大落 |
模拟结果:
- 投资者 A:最终净值 1.11,最大回撤-5.7%
- 投资者 B:最终净值 1.25,最大回撤-43.3%
终点一样,路径完全不同。
高波动的 B 中途回撤极大,很多人可能在低点「受不了」而卖出。
八、小实验:你会选哪一个?
规则:未来 5 年不能卖出。你只能选一只。
| 选项 | 预期年收益 | 年化波动率 |
|---|---|---|
| A | 40% | 50% |
| B | 20% | 10% |
用 8 只真实股票 + 2 个虚构选项做风险-收益散点:
近 2 年历史数据一览:
| 名称 | 年化收益 | 年化波动 |
|---|---|---|
| 可口可乐 | 18.0% | 17.6% |
| 摩根大通 | 35.6% | 25.3% |
| 苹果 | 26.0% | 28.4% |
| 微软 | -2.3% | 26.5% |
| Meta | 22.3% | 37.4% |
| 英伟达 | 45.2% | 47.3% |
| 特斯拉 | 47.0% | 60.8% |
| Coinbase | 7.6% | 78.1% |
我的选择:选项 B(20% 收益,10% 波动率)
理由:5 年不能卖,我需要一个能让我睡得着觉的组合。高波动带来的心理压力可能导致我在低点割肉,最终实际收益反而不如低波动组合。
九、挑战任务结果
| 等级 | 任务 | 结果 |
|---|---|---|
| Lv.1 | 计算 AMD 年化波动率 | 69.34% |
| Lv.2 | 加入 MSFT 对比 | TSLA 44.78% > NVDA 35.83% > MSFT 27.62% > AAPL 24.56% |
| Lv.3 | MSFT 日收益率分布 | 直方图已生成 |
| Lv.4 | 近 1 年波动率最高 | AMD (69.34%)> COIN (68.48%) > TSLA (44.78%) |
十、核心公式汇总
| 公式 | 含义 | 出处 |
|---|---|---|
| r t = P t − P t − 1 P t − 1 r_t = \frac{P_t - P_{t-1}}{P_{t-1}}rt=Pt−1Pt−Pt−1 | 日收益率 | 5.3 |
| σ = 1 n − 1 ∑ i = 1 n ( r i − r ˉ ) 2 \sigma = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(r_i - \bar{r})^2}σ=n−11∑i=1n(ri−rˉ)2 | 样本标准差 | 5.4 |
| σ a n n u a l = σ d a i l y × 252 \sigma_{annual} = \sigma_{daily} \times \sqrt{252}σannual=σdaily×252 | 年化波动率 | 5.5 |
| 年化收益 = ( 1 + r ˉ ) 252 − 1 \text{年化收益} = (1 + \bar{r})^{252} - 1年化收益=(1+rˉ)252−1 | 年化收益率(几何) | 5.5 |
十一、关键收获
- 波动率是投资体验的量化:以前只觉得「风险大」,现在知道可以用标准差精确测量
- 年化换算的重要性:不同频率的数据必须标准化到同一尺度才能比较
- 历史 ≠ 未来:波动率是无法直接观测的隐变量,我们只能估算
- 高波动的隐性成本:不只是数学上的标准差,更是行为学上的「拿不住」
核心金句
「投资最重要的不是赚得最快,而是长期活下来。」—— 巴菲特
波动率不仅是数学指标,也是投资体验。体验太差,会导致错误的操作——最终「理论上的收益」你根本拿不到。
它属于无法直接观测的隐变量,我们只能通过历史行情近似估算。(历史波动率 ≠ 未来波动率)
参考资源
- 课程仓库:datawhalechina/quant-for-beginners
- 本章 Notebook:01_理解波动率.ipynb