Quantopian Risk Model (QRM)

2019-11-04 16:34:46 浏览数 (1)

本文献给今天 36 岁的自己

本文含 2758 字,27 图表截屏

建议阅读 16 分钟

0

引言

在量化投资领域中,因子(factor)就是对股票池进行筛选的指标。大家耳熟能详的因子模型(factor model)有

  • 单因子(市场因子)模型 Capital Asset Pricing Model(CAPM)
  • Fama-French 三因子(市场、规模、价值因子)模型
  • Ross 提出的多因子模型 Arbitrage Pricing Theory(APT)

本帖考虑的是量化平台 Quantopian 中的风险模型(Quantopian Risk Model, QRM),它是建立在 APT 之上,详细原版文档可点击左下角的阅读原文获得。

1

模型简介

1.1

风险模型

QRM 本质上是一个多因子线性模型,用 J 个行业因子和 K 个风格因子来描述资产收益。

其中

  • ri,t 是第 i 个资产在时点 t 上的收益
  • J 是行业因子的个数
  • K 是风格因子的个数
  • βseci,j,t 是第 i 个资产的第 j 个行业因子在时点 t 上的因子载荷
  • fsecj,t 是第 i 个资产的第 j 个行业因子在时点 t 上的因子收益
  • βstyi,k,t 是第 i 个资产的第 k 个风格因子在时点 t 上的因子载荷
  • fstyk,t 是第 i 个资产的第 k 个风格因子在时点 t 上的因子收益
  • εi,t 是第 i 个资产在时点 t 上的残差收益

因子载荷(factor loading)也称作因子暴露(factor exposure),因子收益(factor return)也称作因子回报。

下两节分别介绍 QRM 里的行业因子和风格因子。

1.2

行业因子

行业因子(sector factor)反映不同行业对收益产生的影响。我们用晨星(Morningstar)里的行业 ETF 收益来表示行业因子收益 fsecj,t。下表总结出行业、ETF 代号、晨星代号、SID 和 Quantopian API 里变量名称之间的映射。

每种股票都会映射到某个行业中,而该行业的因子收益是已知的,需要估计的是行业的因子载荷。

1.3

风格因子

QRM 考虑五个风格因子(style factor),分别是动量(momentum)、规模(size)、价值(value)、短期反转(short-term reversal)和波动率(volatility)。每个风格因子都可以用来复制一个传统的投资策略。下表总结出五个风格因子的定义。

风格因子的定义比较抽象,可用不同的代理(proxy)方法来量化,下面介绍 QRM 对这五个风格因子的具体实现方法。

动量因子

动量因子用「过去一年扣除最近一月的收益率」来量化。

其中 ri,t 是第 i 个资产在第 l 天的收益,而 c 是每个月的交易日的天数,通常设为 21。

规模因子

规模因子用「流通市值的自然对数」来量化。

其中 Mi,t-1 是第 i 个资产在第 t-1 天的流通市值。

价值因子

价值因子用「权益和流通市值的比率」来量化。

其中 Si,t-1 是第 i 个资产在第 t-1 天的权益。

短期反转因子

短期反转因子用「近 14 日的相对强弱指数的相反数」来量化。

其中 RSIi,t-1 是第 i 个资产在 (t-15, t-1) 时期内的 14 天相对强弱指数。

波动率因子

波动率因子用「近 6 个月收益率的标准差」来量化。

其中 bar{ri} 是第 i 个资产在 (-6c t-1, t-1) 时期内的平均收益。

2

理论框架

2.1

方法论

整个 QRM 的方法论是将下面模型

划分成以下两个子模型

在 N 只股票,T 天历史,J 个行业和 K 种风格的设置下,我们选取 Quantopian 3000 只股票,采用 2 年历史数据,涉及 11 个行业和 5 种风格,因此 N = 3000, T = 500, J = 11, K = 5。令现在为时点 T,那么时点 t 代表历史第 T-t 天。

子模型一

第一个子模型目的是计算行业残差收益(sector residual return)矩阵,大小为 T×N,具体算法步骤总结在下表中。

步骤 2 中这种在「不同时点对相同股票」的回归被称作时间序列回归(time-series regression),上述算法进行了 N 次时间序列回归。

假设我们拿 6 只股票举例,而且只计算 4 天的历史收益。第 1 只股票是高盛,属于金融行业;第 2 只股票是 AT&T,属于电信行业。上述算法的简易版可视化如下图。

将 6 只股票做同样的回归而计算残差,堆叠后的残差矩阵(大小 6×4)如下图。

这个残差矩阵作为下个子模型的输入。

子模型二

第二个子模型目的是计算所有股票的风格残差收益(style residual return)矩阵,大小为 T×N。

首先将所有股票分成两大类

  • 第一类包含房地产投资信托(REITs)、美国存托凭证(ADRs)和流动性差的股票,称为补充股票(complementary stock)
  • 第二类包括剩余的股票,称为正常股票(normal stock)

对于 N1 只正常股票,我们已知其风格因子载荷,回归得到风格因子收益;假设五个风格因子适用于所有股票(正常股票和补充股票),那么对于 N2 只补充股票,用之前的风格因子收益,回归得到风格因子载荷。具体算法步骤总结在下表中。

步骤 1 中这种在「相同时点对不同股票」的回归被称作横截面回归(cross-sectional regression),步骤 2 中这种在「不同时点对相同股票」的回归被称作时间序列回归(time-series regression)。上述算法进行了 T 次横截面回归和 N2 次时间序列回归。

在 6 只股票中,假设前 4 只(N1 = 4)是正常股票,后 2 只(N2 = 4)是补充股票,步骤 1 的可视化如下图。

整理成矩阵形式,得到

垂直堆叠的风格因子收益矩阵 Fsty(大小 T×K)和风格残差收益矩阵 Σsty(N1) (大小 T×N1)如下图。

在步骤 2 中, 我们用 Fsty 对补充股票的残差收益做回归,其可视化如下图。

垂直堆叠风格残差收益矩阵 Σsty(N2)(大小 T×N2)如下图。

最后在步骤 3 将 Σsty(N1) 和 Σsty(N2) 合并成一个整体矩阵。

2.2

Quantopian 实现

方法论弄清楚后,实现以上两个算法其实不难,至于模型最后效果如何,确实需要考虑其他细节,如下图所示(第 73-81 行)。

麻烦的是如何得到行业因子收益和风格因子载荷。贴心的是 Quantopian 有一个 risk_loading_pipeline 的 API,可以获取所有股票任何历史时期的上述指标。

展示代码如下:

有了这些数据,就可以选股(用混合法或整合法)、配置权重(用 MVO, Risk Parity 等等),做回测了。

3

总结

本帖介绍了 QRM,它本质就是个多因子模型,但是有自己独到的处理方法。

  • QRM 先计算行业 ETF 收益,做行业因子收益的代理指标,再用时间序列线性回归得到行业残差收益
  • QRM 把所有股票分成正常股票和补充股票
    • 先计算正常股票的风格因子载荷,再用横截面线性回归得到风格因子收益
    • 假设所有股票的风格因子收益一样,再用时间序列线性回归得到补充股票的风格因子载荷

再用表格的形式总结 QRM 的方法论。

Stay Tuned!

0 人点赞