跳到主内容
研究主线资产定价与组合构建 · 第30–36讲6/7 · 配套练习模块导览 →
练习

第35讲:风险约束的投资组合优化 (Risk-Constrained Portfolio Optimization) · 练习

读取并对齐股票与三因子数据,估计 ETF 暴露和风险贡献,再设置约束并检查求解状态与残差。

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

一、数据获取与因子对齐#

练习1

从Fama-French数据库获取三因子数据并与股票收益率对齐:

  1. 下载2010-2020年日频三因子数据(包含Mkt-RF/SMB/HML)

  2. 获取苹果(AAPL)、微软(MSFT)、亚马逊(AMZN)同期日收益率数据

  3. 对齐两者的交易日历(保留共同交易日)

  4. 输出对齐后因子数据的前3行描述统计

code
# 依赖数据
ff3_url = "https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors_daily_CSV.zip"
tickers = ['AAPL', 'MSFT', 'AMZN']
start_date = '2010-01-01'
end_date = '2020-01-01'

二、因子暴露与风险分解#

练习2

计算科技板块ETF(XLK)的因子暴露并进行风险分解:

  1. 下载XLK和Fama-French三因子2015-2022年数据

  2. 通过回归计算市场/规模/价值因子的暴露系数

  3. 分解总风险为系统性风险和特质风险

  4. 绘制风险占比环形图

code
# 依赖数据
xlk_data = yf.download('XLK', '2015-01-01', '2022-12-31')['Close'].pct_change().dropna()
ff3_data = pd.read_csv(ff3_url, skiprows=3, index_col=0, parse_dates=True).loc['2015':'2022'].iloc[:,:3]/100

完成练习后,自评一次

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