AI量化知识树

因子风险暴露

由clearyf创建,最终由user448 被浏览 1491 用户

导语

本文介绍了如何计算因子风险暴露的内容。

判断风险暴露的建模是否合理

通常,此分析是基于历史数据,而对历史风险暴露的估计可能会影响未来的风险暴露。 因此,计算因子风险暴露是不够的。 你必须对风险暴露保持信心,并明白对风险暴露的建模是否合理。

##运用多因子模型计算因子风险暴露 我们可以运用多因子模型分析一个组合中风险和收益的来源,多因子模型对收益的分解如下:

通过对历史收益率进行建模,我们可以分析出收益中有多少是来自因子收益率,有多少来自资产特质波动(epsilon)。 我们也可以研究投资组合所面临的风险来源,即投资组合的因子暴露。

在风险分析中,我们经常对主动回报(相对于基准的回报)和主动风险(主动回报的标准差,也称为跟踪误差或跟踪风险)进行建模。

例如,我们可计算到一个因子对主动风险的边际贡献——FMCAR。 对于因子j,表示为:

b_j表示组合对因子j的风险暴露,b_i表示组合对因子i的风险暴露,K表示一共K个因子。FMCAR_j这项指标这告诉我们,假设其他条件不变,暴露在因子j下我们增加了多少风险。

策略案例

附件:运用Fama-French三因子模型演示因子风险暴露

https://bigquant.com/experimentshare/8aa1b33560044a0cbf431ead82e89371


本文由BigQuant宽客学院推出,版权归BigQuant所有,转载请注明出处。

\

标签

多因子模型
评论
  • ```python FMCAR那一部分的rolling_cov函数已经失效,可以用df.rolling().cov()替代,这一块代码可以改为下面: (对层次索引这一块还不是特别熟悉,所以用了比较傻的序号索引来取值进行计算) # 计算方差协方差 # 去除有缺省值的日期,从有实际有效值的日期开始 df_cov = df[['F1','F2']]; covariances =df_cov.rolling(window=100).cov()[198:] # 计算主动风险 active_risk_squared = pd.Series.rolling(active,window = 100).std()[99:]**2 #将rolling_std旧方法更新为pd.Series.rolling().std() # 计算beta betas = rolling_parameter_estimates[['F1', 'F2']] #F1,F2两个的系数 滚动系数 # 新建一个空的dataframe FMCAR = pd.DataFrame(index=betas.index, columns=betas.columns) # 每个因子循环 for factor in betas.columns: #两列分别是F1 和 F2 # 每一天循环 for t in range(228): #将用时间索引改成用序号索引 # 求beta与协方差之积的和,见公式 if(factor == 'F1'): #乘以第一列 s = betas.iloc[t,0] * covariances.iloc[2*t,0] + betas.iloc[t,1] * covariances.iloc[2*t+1,0] else: s = betas.iloc[t,0] * covariances.iloc[2*t,1] + betas.iloc[t,1] * covariances.iloc[2*t+1,1] # 获取beta b = betas.iloc[t][factor] # 获取主动风险 AR = active_risk_squared.iloc[t] # 估计当天的FMCAR FMCAR[factor][t] = b * s / AR ``` \
  • 感觉应该是b1, b2, α