原来基金经理都偷偷用这个指标选股,难怪回撤小还赚钱

你知道吗?不少稳健型基金经理都有一个"秘密武器"------自波动率。通过观察股票的波动情况,他们能挑选出低回撤、高胜率的股票组合,让资金在波动的市场里依然稳健增长。今天,我就教你怎么像基金经理一样,用波动率选股和控制风险。


什么是自波动率?为什么重要

简单来说,自波动率就是股票自身价格的波动幅度,通常用对数收益率的标准差来衡量。

为什么重要?因为波动率直接反映风险:

  • 低波动率股票:通常价格平稳,波动小,组合回撤低。
  • 高波动率股票:价格剧烈波动,收益可能高,但风险也大。

也难怪很多稳健型基金经理在做资产配置时,经常偏好低波动资产,尤其在震荡或熊市中,这些股票能有效保护资金安全。


那么问题来了:怎么计算"自波动率"?

花姐用最简单的思路,带你走一遍👇

1️⃣ 取历史价格数据

今天就不用xtquant+miniQMT了,我们用akshare库,通过ak.stock_zh_a_hist获取一段时间内的行情数据。

2️⃣ 计算对数收益率

假设收盘价记作 <math xmlns="http://www.w3.org/1998/Math/MathML"> X t X_t </math>Xt,那对数收益率 <math xmlns="http://www.w3.org/1998/Math/MathML"> Y t Y_t </math>Yt的计算公式是:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> Y t = log ⁡ ( X t ) − log ⁡ ( X t − 1 ) Y_t = \log(X_t) - \log(X_{t-1}) </math>Yt=log(Xt)−log(Xt−1)

这样做的好处是能消除价格级别的影响,让波动性更可比。

3️⃣ 算标准差,并年化 先算出日收益率的标准差,再乘以 <math xmlns="http://www.w3.org/1998/Math/MathML"> 252 \sqrt{252} </math>252 (假设一年 252 个交易日),就得到了年化波动率。

下面是一个简单示例,用茅台最近 252 个交易日的收盘价计算自波动率:

python 复制代码
import numpy as np
import pandas as pd
import akshare as ak

data = ak.stock_zh_a_hist(symbol="600519", start_date='20200101',period="daily", adjust="qfq")


# 计算对数收益率
data['log_ret'] = np.log(data['收盘']) -np.log(data['收盘'].shift(1))

# 这2个计算公式同上面这一个
# data['log_ret'] = np.log(data['收盘'] / data['收盘'].shift(1))
# data['log_ret'] = np.log(data['收盘']).diff(1)

# 选取最新的252个数据,计算日波动率(标准差),再年化
daily_vol = data['log_ret'].tail(252).std()
# 年化波动率
annual_vol = daily_vol * np.sqrt(252)

print(f"最近252个交易日的自波动率为:{annual_vol:.2%}")

✅ 运行结果示例:年化波动率约 27.3%

这个数意味着啥?

  • 如果你要做低波动选股,茅台这个数值可以用来和别的股票比较。

  • 你还能根据波动的变化,调整仓位大小,比如波动率升高时减仓,降低整体组合的风险。

  • 对衍生品定价来说,波动率也是关键输入,甚至能帮你反推隐含波动率,从而判断价格是不是被高估或低估。


滚动波动率:动态观察风险

前面我们只是算了一个单一的年化自波动率,它能帮我们快速知道这只股票的"总体风险水平"。 但实盘中,行情是一直变化的,如果我们每一天都往前推固定天数(比如252天)来算波动率,就能得到一条随时间变化的曲线,也就是滚动波动率

Python 示例:

python 复制代码
import numpy as np
import pandas as pd
import akshare as ak
import matplotlib.pyplot as plt

symbol = "600519"  # 茅台
window = 252  # 1年
data = ak.stock_zh_a_hist(symbol=symbol, start_date='20200101',period="daily", adjust="qfq")
# 计算对数收益率
data['log_ret'] = np.log(data['收盘']) -np.log(data['收盘'].shift(1))

# 这2个计算公式同上面这一个
# data['log_ret'] = np.log(data['收盘'] / data['收盘'].shift(1))
# data['log_ret'] = np.log(data['收盘']).diff(1)

data['rolling_vol'] = data['log_ret'].rolling(window=window).std() * np.sqrt(252)
data.dropna(inplace=True)

# 可视化
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文字体
plt.rcParams['axes.unicode_minus'] = False    # 解决负号 '-' 显示为方块的问题

fig, ax1 = plt.subplots(figsize=(12,5))

# 绘制滚动波动率(左轴)
ax1.plot(data['日期'], data['rolling_vol'], color='blue', label=f'{window}日波动率')
ax1.set_xlabel("日期")
ax1.set_ylabel("波动率", color='blue')
ax1.tick_params(axis='y', labelcolor='blue')

# 创建第二个 y 轴,共享 x 轴
ax2 = ax1.twinx()
ax2.plot(data['日期'], data['收盘'], color='orange', label='收盘价')
ax2.set_ylabel("收盘", color='orange')
ax2.tick_params(axis='y', labelcolor='orange')

# 合并图例
lines_1, labels_1 = ax1.get_legend_handles_labels()
lines_2, labels_2 = ax2.get_legend_handles_labels()
ax1.legend(lines_1 + lines_2, labels_1 + labels_2, loc='upper left')

plt.title(f"{symbol} {window}日波动率与收盘价")
plt.show()

橘线是收盘价,蓝线是波动率

这条曲线有意思的地方在于:

  • 它不仅告诉你"风险有多大",还告诉你"风险什么时候变大"。

  • 你可以通过它,感知市场情绪的冷暖、风险的起伏,就像医生通过心电图判断病人的状态。

不过,这里还有一个关键问题------我到底该用多长的时间窗口(window)来算波动率?


不同窗口波动率的实盘应用

波动率并不是单一数字就够的,我们通常会用不同窗口观察股票,原因很简单:不同窗口反应不同层次的市场信息。

1️⃣ 短周期波动率(20~60日)

  • 反应速度:非常快,对突发行情特别敏感。

  • 优点:能及时捕捉到情绪波动和行情拐点。

  • 缺点:噪音多,容易出现"假信号"。

  • 实盘用法

    • 做短线策略时,当短周期波动率突然飙升,通常意味着市场正在加速波动,可以结合突破策略或区间突破止盈/止损。
    • 仓位控制上,短周期波动率大幅高于中周期时,可以减仓避险。

2️⃣ 中周期波动率(120~252日)

  • 反应速度:适中,能平衡灵敏度与稳定性。

  • 优点:波动趋势更平滑,干扰少。

  • 实盘用法

    • 趋势策略:在低波动环境中,趋势策略胜率更高。
    • 风控基准:当中周期波动率超过设定阈值,触发降低杠杆或提高止损阈值的信号。

3️⃣ 长周期波动率(500日及以上)

  • 反应速度:非常慢,几乎不受短期市场波动影响。

  • 优点:稳定性强,能刻画股票的长期风险特征。

  • 实盘用法

    • 资产配置:判断这只股票在长期中属于高风险还是低风险类别。
    • 组合优化:作为协方差矩阵的输入,让组合分散更科学。

实战组合玩法

要把波动率用得溜,可以考虑这些组合思路:

  • 双窗口监控:短周期 + 中周期同时观察。当短周期波动率急剧上升、明显高于中周期时,往往是市场进入高风险阶段的信号。
  • 波动率分层选股:用长周期波动率筛选低风险股票池,再用短周期波动率选出当下波动较低的优质标的。
  • 动态仓位控制:把仓位和波动率挂钩,波动率高时减仓,波动率低时加仓,让回撤可控的同时提高资金利用效率。
  • 策略切换:低波动时期用趋势跟踪策略,高波动时期用套利或区间震荡策略,适应不同市场环境。

关于波动率叠加热点的想法

我们是不是可以把自波动率这个指标和热点板块结合起来玩,比如近期热门的数字货币、创新药、军工、机器人,然后在这些热点板块里挑选个股,尝试选择几个低波动的优先上车(也可以结合MACD、RSI、均线等指标),这样即便板块整体热度下降,组合回撤也能控制住。然后每周或者几周的调仓一次,有心的朋友可以尝试尝试。

今天关于自波动率的分享就到这里了,希望大家有所收获,爱你们的花姐!

相关推荐
卡洛斯(编程版9 分钟前
(1) 哈希表全思路-20天刷完Leetcode Hot 100计划
python·算法·leetcode
得物技术14 分钟前
营销会场预览直通车实践|得物技术
后端·架构·测试
FreakStudio35 分钟前
一文速通 Python 并行计算:教程总结
python·pycharm·嵌入式·面向对象·并行计算
群联云防护小杜39 分钟前
从一次 DDoS 的“死亡回放”看现代攻击链的进化
开发语言·python·linq
Ice__Cai44 分钟前
Flask 入门详解:从零开始构建 Web 应用
后端·python·flask·数据类型
霸敛1 小时前
好家园房产中介网后台管理完整(python+flask+mysql)
开发语言·python·flask
武子康1 小时前
大数据-74 Kafka 核心机制揭秘:副本同步、控制器选举与可靠性保障
大数据·后端·kafka
HenryLin1 小时前
SHAP值的核心概念
python
紫穹1 小时前
006.LangChain Prompt Template
后端
whitepure1 小时前
万字详解JavaObject类方法
java·后端