跳到主内容
研究主线因子策略、对冲与尾部风险 · 第37–42讲5/6 · 配套练习模块导览 →
练习

第41讲:为什么要对贝塔和行业暴露进行对冲 II (Why Hedge Beta and Sector Exposures II) · 练习

分解单股系统与特异风险,计算两资产组合波动和多因子贡献,并在压力情景中检查对冲效果。

← 返回本讲讲义
完成状态保存在当前浏览器,可随时取消。

风险分解基础#

单只股票的风险构成#

练习:已知某生物科技公司股票的β系数为1.5,所处行业的平均波动率为24%,该公司特异性波动率为32%。请计算:

  1. 总风险水平

  2. 系统性风险占比

  3. 如果该股票与行业指数的相关性提升20%,总风险将如何变化?


组合风险分析#

两资产组合#

数据准备

code
import yfinance as yf
import numpy as np

# 获取2022年两只股票数据
data = yf.download(['AMZN', 'GOOG'], start='2022-01-01', end='2023-01-01')['Adj Close']
returns = np.log(data/data.shift(1)).dropna()

练习

  1. 计算AMZN与GOOG的日收益率相关系数

  2. 当组合权重为60%-40%时,估算组合年化波动率

  3. 绘制两个资产的收益散点图并标注协方差椭圆的方位角


多因子风险模型#

因子暴露计算#

数据依赖

code
# 获取三因子数据示例
ff3 = yf.download(['^GSPC', '^RUT'], start='2020-01-01')['Adj Close']  # 假设为市场因子代理
ff3_returns = ff3.pct_change().dropna()

练习

给定某科技公司股票TSM的日度收益率数据:

  1. 使用OLS回归计算其市场因子、规模因子暴露

  2. 计算残差项的波动率

  3. 验证总风险分解公式是否成立


衍生品对冲#

期货对冲比率#

参数设置

  • 现货组合β=1.25

  • 指数期货合约乘数=250

  • 当前指数点位3800

  • 组合市值1000万美元

练习

  1. 计算完全对冲所需的期货合约数量

  2. 若希望将β降至0.6,应如何调整头寸?

  3. 当基差扩大0.5%时,对冲效果将如何变化?


压力测试#

极端场景构建#

历史数据调用

code
crisis = yf.download(['SPY', 'TLT'], start='2007-01-01', end='2009-01-01', interval='1mo')

练习

假设当前组合配置为:

  • 股票60%(β=1.1)

  • 债券40%(久期6.5)

  • 股债相关性-0.3

请估算:

  1. 2008年式危机下的最大回撤

  2. 若美联储加息300bps对组合的久期冲击

  3. 绘制压力情景下的风险价值(VaR)分布图


实战挑战#

数据要求

code
tech_stocks = yf.download(['AAPL', 'MSFT', 'NVDA', 'ADBE', 'INTC'],
                         start='2020-01-01',
                         end='2023-12-31',
                         auto_adjust=True)['Close']

任务清单

  1. 计算各股票滚动120天的β系数

  2. 构建行业中性组合(假设基准为NASDAQ100成分)

  3. 设计动态对冲策略并回测

  4. 比较不同再平衡频率下的夏普比率

  5. 可视化行业风险暴露的时变特征


数据提示

  1. 处理拆股需使用auto_adjust=True

  2. 计算超额收益建议使用3个月国债收益率作为无风险利率

  3. 行业分类可通过yf.Ticker().info['sector']获取

  4. 考虑交易成本时默认设定单边佣金0.1%

完成练习后,自评一次

建议先独立作答,再展开参考答案进行核对。