量化选股——基于多因子模型的量化策略(第1部分—因子测算&策略构建)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

东西有点多拆开成多个文章边写边整合~应该会分成2部分

  1. 第1部分—因子测算&策略构建
  2. 策略回测与分析

1.多因子模型概述

多因子模型Multifactor Model也是使用最为广泛的模型神似 y = w x + b y=wx+b y=wx+b

  • 因子资产收益率的解释变量
  • 多因子模型是基于“因子”的投资理论构造出的一个模型用于描述投资的逻辑

因为多因子模型是希望构建“解释变量”来解释最终收益因此在构造模型的过程中会存在一些前提条件。想象这样一个场景过去买了好多股票【股票的组合】每天都会有当天的损益最终形成收益曲线图。在整个过程中

  1. 因子是用来解释股票本身的而最终会通过作用于个股价格的涨跌将损益传递给整个组合
  2. 因子和当天的损益都是随时间变化的因此在分析时因子也是一个时序数据

在多因子模型中在 t t t 时刻第 i i i 只股票的超额收益率表示为
r i , t = ∑ m = 1 n β i , m X i , m + ε i , t r_{i,t} = {\textstyle \sum_{m=1}^{n}} \beta _{i,m} X_{i,m} + \varepsilon _{i,t} ri,t=m=1nβi,mXi,m+εi,t

其中 r i , t r_{i,t} ri,t 表示 t t t 时刻第 i i i 只股票的超额收益label值 β i , m \beta _{i,m} βi,m 表示计算出的因子的收益矩阵模型拟合出的权重矩阵 X i , m X_{i,m} Xi,m 表示因子的暴露矩阵指因子的具体取值也就是x值 ε i , t \varepsilon _{i,t} εi,t 表示未被因子解释的特殊收益即特异性收益率截距项、误差项

  1. 这一部分的内容通常是金融术语括号里的内容计算机/算法术语
  2. 表示多因子模型公式的写法很多这是其中一种
  3. 在多因子模型中最后一项虽然与ML模型中的误差项作用类似但是在模型中的含义却不同
  • ML中假设每个x独立同分布因此误差项是服从标准正态分布N(0,1)这个误差项作为先验而存在。
  • 多因子模型中由于是为了让解释变量解释收益所以期望误差项趋近于0而并非先验的服从什么分布。因为当误差项为0时代表所有解释变量可以完美解释收益但目前没有这么牛的模型所以只能在一定的前提下让误差项通过检验来验证模型的可行性。

2.因子挖掘

因子的来源有一个专业术语【因子挖掘】挖掘出的因子可以被拿来解释个股或组合的收益。目前因子挖掘体系相对成熟也是入门量化必备的技能。本节中这一部分简单介绍其他文章中会着重介绍。以CNE7为例它通过因子的性质将因子分为

  1. 风格因子反映个股状态、预期的因子体现的是过去一段时期内呈现出的一些特征。比如个股的财务指标个股市值PE指标股价的波动性换手率等因素
  2. 行业因子反映个股所处行业的行业特征。由于行业周期性、政策冲击、重大事件等因素导致从事相近业务的股票在市场上也会表现出较高的相关性的因素
  3. 市场因子更加宏观反映由于宏观环境影响、供求关系变化呈现出的同涨同跌的情况

挖掘到因子后判断因子有效性的步骤如下

  1. 如果因子的值域范围较大通常会将数据分箱或转换为分位数后用离散后的值来计算
  2. 由于因子本身也是时序数据因此通过滑动窗口的验证会验证很多轮根据当期的因子值与下期的收益来判断因子的收益
  3. 每个滑动窗口会得到一个原始因子的 x x x 与最终的收益 y y y最后通过胜率、均值、方差、相关系数等方法来验证因子的有效性如使用相关系数验证时则验证的是 c o r r ( 上一期的因子揭露值本期的收益 ) corr(上一期的因子揭露值本期的收益) corr(上一期的因子揭露值本期的收益)

3.多因子策略

多因子模型适合很多场景通常来讲根据模型使用的【因子】的不同可以将对应的模型分为以下三个类别

在这里插入图片描述

通常来讲如果我们对金融知识并不了解特别常见一个操作就是将所有因子排排站然后按照ML的流程对所有因子进行特征编码、降维、建模、训练预测。

注其实这个流程是有一个特别严重的错误操作我们打过比赛的同学都知道比如Kaggle里与生物化学相关竞赛、有一定专业性的调查问卷分析等相关竞赛按照一般的流程是几乎达不到高分或者说能够出类拔萃的都不仅仅是建模调参就能达到的。需要对数据做额外的一些操作比如通过专业领域已有的公式对数据做变化而变化后的数据可能才是建模的关键。因此对因子及其背后的金融含义有足够的了解才能够得到回测时更优的模型。但与此同时伴随着一个风险。我们测算因子的过程就是开天眼的过程在后续使用中测算的结论会被先验的代入到后续的计算中。

如果不注意这一点我们容易把市场当做一个数字游戏或建模任务而当其他参与者并不这么认为时风险敞口会在一瞬间出现造成一定破坏后在瞬间消失这里大家可以看一下桥水基金的相关研究会有更深的感触同时容易被归因为偶发事件逻辑不严谨等问题。因为资本是风险最后的承担着因此在金融领域大家要格外谨慎谨慎的程度取决于这些钱与你的亲密程度😝。

4.多因子策略构建

基于多因子的策略通用流程

因为多因子模型的“因子”通常是用来解释资产价格变动的解释变量至于能否盈利需要根据确定的因子来测算通常构造基于因子的策略流程是

  1. 确定因子后将因子的取值标准变化、归一化处理按从小到大或从大到小排序
  2. 根据值域使用数据分箱处理因子的值将股票对应的因子归类到十分位之后的类别中
  3. 做多排名最高的一组中的全部股票或者等权重做多排名最高的几组股票有路子的话也同时做空排名最低的一组每月调整一次仓位

Fama-French三因子

这里我们参考Fama-French三因子模型百度百科Fama-French三因子模型

在Fama-French三因子中在CAPM的市场的基础上引入了表示价值与规模的解释变量根据市值与账面市值比BM值是市净率的倒数计算得出HML与SMB

首先将股票池的全部股票按照市值的大小分为small小市值与big大市值两类。将大于全市场市值的中位数的股票认为是“大市值股票”将小于全市场市值的中位数的股票认为是“小市值股票”

其次统计全市场的账面市值比BM将前30%认为是Low将30%-70%认为是Middle将大于70%的股票认为是High

根据这两个指标将全市场的股票分为以下两类

LowMiddleHigh
Small小市值S/LS/MS/H
Big 大市值B/LB/MB/H
  • HML表示价值 1 2 ( S / H + B / H ) − 1 2 ( S / L + B / L ) \frac{1}{2}(S/H + B/H) - \frac{1}{2} (S/L+B/L) 21(S/H+B/H)21(S/L+B/L)
  • SMB表示规模 1 3 ( S / H + S / M + S / L ) − 1 3 ( B / H + B / M + B / L ) \frac{1}{3}(S/H + S/M + S/L) - \frac{1}{3} (B/H+B/M+B/L) 31(S/H+S/M+S/L)31(B/H+B/M+B/L)

这里我们简化一下后续就用市值与BM指标作为因子来构建量化策略

因子效果测算方法

  • 股票池非ST沪深A股
  • 测算时间区间2015年1月1日至2020年12月23日

测算方法

  1. 统计这段时间个股月线的【涨跌幅%】每个月月末的【市值】【PB】
  2. 计算BM指标BM = 1/PB
  3. 每月一统计
    • 将大于全市场【市值】的中位数的股票认为是“大市值股票”将小于全市场市值的中位数的股票认为是“小市值股票”
    • 统计全市场的账面市值比BM将小于30分位数的认为是Low将30分位-70分位认为是Middle将大于70分位的股票认为是High
市值类别 \ BM类别LowMiddleHigh
Small小市值low_小市值middle_小市值high_小市值
Big 大市值low_大市值middle_大市值high_大市值
  1. 将下一月的涨跌幅与当月的因子值进行对应作为因子对未来涨跌幅的解释

最终处理后得到如下数据表

通过对这样的数据进行分析并得到最终的结果

因子测算结论&量化策略构建

结论如下

  1. 综合来看选择当月BM较低且市值较大的公司时胜率最高高达81.15%相反的选择当月BM较高且市值较小的公司时胜率最低低至37.68%
  2. 逐年测算时选择当月BM较低且市值较大的公司时的胜率较为稳定年均测算结果呈现盈利状态而其他情况则表现不稳定时而盈利时而亏损。

注计算胜率时收益率大于2%时记为胜否则记为负。

月收益如下图所示
在这里插入图片描述
综合来看胜率如下

分类胜率
high_大市值0.449275
high_小市值0.376812
low_大市值0.811594
low_小市值0.666667
middle_大市值0.507246
middle_小市值0.463768

按年份统计的胜率图如下所示

在这里插入图片描述

因此基于Fama-French三因子灵感来源的策略就很清晰啦下一部分我们就买买买不但看看再过去的表现情况同时看看在21年与22年的表现效果如何

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6