【量化金融】量化多因子策略基础介绍

因子分类

​ 第一类叫做量价因子,第二类叫做基本面因子,第三类叫另类因子。而里面量价因子大概是占60%的左右,20%是基本面因子,剩下20%是另类因子

​ 量价因子主要是有哪些数据去产生的呢?一般是来源成交量的数据,包括每分每秒的这个这个股票的价格、资金流、以及各类K线等技术指标,包括动量指标、周期指标、成交量指标、价格指标等。

​ 基本面因子则是大家说的财务报表、营收、券商报告、分析师预期等,一般都是来源于这个包括万得、朝阳永续的数据库。而这种数据,它的一个时间更新频率一般比较长,一般是以这个月频或者季度的数据进行更新,不像价格每分每秒都在发生改变。

​ 还有就是另类因子,包括社交舆情,电商数据,门店数据这样的一些因子

基本面因子

基本情况

​ 比如:盈利能力因子:资本收益率(ROE),资产回报率(ROA),主营业务毛利率,主营业务利润率,净利率。像成长,盈利,估值这些都可以划到基本面因子里面去。

​ 基本面因子的解释的参考资料https://www.bilibili.com/video/BV1TE41117pJ?from=search&seid=13977766754480028751

财报数据

​ 一般来说,基本面因子的数据离不开三大财务报表。对于量化来说,我们需要的是记录了财报发布,修正的那三张表,这样能避免未来数据的引入。所以这三张表里一般有两个日期,财报的发布日和对应的会计日期,同时我们还需要注意每条记录是单季度的还是累积的。

​ 因为存在更新或者修正的情况,财报数据里,经常出现的一种情况就是,同一个会计日期,可能会对应多个发布日期,例如上市公司在发布今年年报时,也会披露或者更新去年的年报数据,我们需要注意的一点就是在当前时点可以使用最新的数据,但是不要引入未来数据。

​ 对于因子的计算来说,为了避免未来数据的问题,有两种方案:

  • 当上式公司的财报发布,更新对应股票的因子
  • 会计日期结束,统一更新所有股票的因子数据

​ 第一种方案,可以保证我们在当时的时点能拿到最新的因子数据,但是却面临着不同股票之间在这一日期存在不可比的问题,第二种方案又会造成信息的滞后。像Barra CNE5计算的基本面因子采用的是第二种方案,但最新的模型改成了第一种。究竟哪种方案好,需要去测算。

TTM函数

​ 提到基本面因子,就不得不说TTM(Trailing Twelve Months),这也是经常在券商研报里发的因子库列表当中看到,意思就是滚动12个月,或者说滚动四个季度。例如我们常说的滚动PE,意思就是当前的市值/过去4个季度的净利润。

​ 这里不讨论为什么要引入TTM。现在有的数据商会提供一些财务衍生指标的报表,这里面会包含一部分TTM的数据,但是,可能并不全,这时候我们得自己计算TTM的数据了,那么问题来了,怎么计算?

​ 我们用Q1(t),S1(t),CQ3(t),A(t)分布表示上市公司的一季报,半年报,三季报(累积),年报。那么:

  • 如果当前为Q1(t),则Q1(t,ttm) = A(t-1) - Q1(t-1) + Q1(t)
  • 如果当前为S1(t),则S1(t,ttm) = A(t-1) - S1(t-1) + S1(t)
  • 如果当前为CQ3(t),则CQ3(t,ttm) = A(t-1) - CQ3(t-1) + CQ3(t)
  • 如果当前为A(t),则A(t,ttm) = A(t)

​ 基于上面的公式,我们可以快速的给出TTM函数的Python实现,当然,考虑到全历史,全样本的计算,我们可能还要考虑一些加速的方案。(基本面因子经常要用到Pandas的DataFrame里面的sort,drop_duplicates,groupby这些函数)

技术因子

  1. 由技术分析得来,反映股票价格变动。

  2. 目的:利用股价波动的规律,预测未来股价的变化。适用于短期的股票价格预测,比如日内或者几日内。

  3. 技术因子的分类:

    1. 量价因子。以交易行情为基础计算得到的因子。
    2. K线因子。以股价K线走势为基础计算得到的因子。
    3. 图形因子。以股价图形为基础得到的因子。
  4. 常见的技术因子有:动量因子、换手率因子、波动率

单因子构建与挖掘流程

  1. 因子来源:

    1. 对市场数据的观察。
    2. 投资相关的paper,文献,券商研报。
  2. 验证单因子是否有效:回归法分析、分层回测。