关闭

您正在使用的浏览器版本较低,无法支持聚宽的某些特性。

为了获得更好的体验,推荐使用: Google Chrome 或者 Mozilla Firefox 或者 IE9以上

因子分析

多因子模型是量化投资中广泛使用的一种模型, 多因子模型的构建中, 针对单个因子的研究是非常重要的一环。
基于以上的原因, 我们推出了单因子分析的功能。 来帮助用户更方便的设计多因子类策略。

因子分析 API

用户需要实现一个自定义因子的类, 继承 Factor 类, 并实现 calc 方法。

class MA5(Factor):
    name = 'ma5'
    max_window = 5
    dependencies = ['close']
    def calc(self, data):
        return data['close'][-5:].mean()

变量的含义

  • name: 因子的名称, 不能与基础因子冲突。
  • max_window: 获取数据的最长时间窗口
  • dependencies: 依赖的基础因子名称

dependencies 中可以使用的基础因子:

  • get_price 中可以取到的价量信息:open、close、high、low、volume、money
  • 财务指标因子:当日可以看到的最新单季财务指标,包含 fundamentals 中的全部指标, 详细指标见股票财务数据

* 注意:价量信息使用后复权数据 *

calc 的参数
在 calc 中, 可以通过 data 参数获取通过 max_window 和 dependencies 定义的数据。
data 是一个 dict, key 是 dependencies 中的因子名称, value 是pandas.DataFrame。

  • DataFrame 的 column 是股票代码, 目前可以选择沪深300 或中证500 作为股票池;
  • DataFrame 的 index 是一个时间序列,结束时间是当前时间, 长度是 max_window;
  • DataFrame 的值是在 index 时间点上, 能看到的最新因子数据。

calc 的返回值
需要保证返回一个pandas.Series, index 股票代码, value 是因子值

因子数据的处理

一般来讲,因子数据都需要经过去极值和标准化的处理。您可以使用模板中我们提供的方法, 也可以自己实现。个股的因子暴露实际上会影响到构建多空组合时的个股权重。详细的逻辑请参考文档的收益分析部分。

因子分析的结果

收益分析

在收益分析中, 分位数的平均收益, 各分位数的累积收益, 以及分位数的多空组合收益三方面观察因子的表现。

  1. 分位数收益: 表示持仓1、5、10天后,各分位数可以获得的平均收益。
  2. 分位数的累积收益: 表示各分位数持仓收益的累计值。
  3. 多空组合收益: 做多一分位, 做空五分位的投资组合的收益。

IC 分析

IC 是 information coefficient 的缩写。IC 代表了预测值和实现值之间的相关性, 通常用以评价预测能力。 取值在0到1之间, 值越大, 表示预测能力越好。

IC 的计算, 一般有两种方法, normal IC 与 rank IC。 我们计算的是rank IC.

  • normal IC: 因子载荷与因子收益之间的相关系数
  • rank IC: 因子载荷的排序值与收益的排序值之间的相关系数

    同时考虑到单日 IC 的波动较大, 我们提供了 IC 的月度移动平均线作为参考。

换手率分析

因子的换手率是在不同的时间周期下, 观察因子个分位中个股的进出情况。
计算方法举例:
某因子第一分位持有的股票数量为30支, 一天后有一只发生变动, 换手率为: 1/30 *100% = 3.33%

因子分位数换手率的价值体现在两个方面:

  1. 因子稳定性的体现:换手率低的因子,因子值在时间序列层面的持续性更好
  2. 衡量交易成本:在实际的交易过程中, 假设我们要维护投资组合的因子暴露恒定, 对于高换手率因子, 则需要进行更多的交易。 交易中的税费和滑点, 也会吞噬掉我们的部分利润。

多因子参考资料

  1. 《主动投资组合管理》 英文版的名称是”Active Portfolio Management”
  2. Quantitative Equity Portfolio Management – An Active Approach to Portfolio Construction and Management
  3. Quantitative Equity Portfolio Management – Modern Techniques and Applications
  4. Barra Risk Model Handbook
新手指引
如何使用代码编写策略?
如何使用向导式编写策略?
如何使用Notebook研究?
如何推送交易信号至微信?
通过QQ群和社区提问?
上一步
下一步
关闭