单因子分析模块简介

策略分享
标签: #<Tag:0x00007fb3dad18f18>

(feynman0825) #1
克隆策略

单因子分析模块简介

大家在找因子的时候,一定会纠结应该如何去评价一个因子的好坏。我记得华尔街的以为量化大鳄曾说过一句话,在量化交易里,最烂的方法是看回测,最好的方法是特征分析(信息分析)。 于是,开发了一个单因子分析的模块,来帮助大家甄别因子的好坏。

模块基本分析框架

全市场因子暴露

因子暴露在我们的分析框架里,就是指因子值。我们分别做了因子暴露的月度分布分析以及时序分析。

全市场因子收益

因子收益指对收益率回归得到的因子beta系数。因为y是收益率,beta代表对因子的单位暴露,y变动的敏感度,所以也就解释为收益率的变动。

相关性分析

我们整理出来了9个大类因子,分别是:

  • 规模因子
  • 成长因子
  • beta因子
  • 流动性因子
  • 杠杆因子
  • 价值因子
  • 逆转因子
  • 动量因子
  • 波动因子

我们针对这9个大类因子分别做了目标因子与它们的相关性分析。

因子行业分布

用来分析因子暴露在申万一级行业的分布。

因子IC分析

IC代表了这个因子是否具有预测性能,通过IC的序列分析,我们或许能发现因子有效性的周期轮动规律。

因子分组收益

我们对因子收益根据20%、40%、60%、80%的分位数分为五组,然后把每一组视为一个投资组合,分别统计它们的投资收益。

多空收益

在这里,我们计算根据因子分组后,做多因子收益最高的一组投资组合,做空因子收益最低的一组投资组合,然后分析组间收益的离差规律。

因子收益t检验

因子收益,在我们的分析里本质上就是beta系数,我们可以通过t检验来验证因子收益的统计显著性。也就是当p值小于5%时,我们可以相信有很大的可能因子收益不为0, 相反如果p值大于5%,那么我们的因子收益结果就不那么信服。

使用方式

1. 新建一个空白的可视化策略

2. 从共享模块拖入单因子分析模块

从共享模块拖入单因子分析模块,然后我们注意到在右边有三个输入参数,分别是:

  • 因子,可以输入因子表达式,只能输入一个因子
  • 开始时间,表示单因子分析的时间跨度,最少要输入一个月
  • 结束时间

3. 运行模块

当我们输入完参数,就可以右键模块运行了。

4. 分析结果

大概几分钟后,我们就能看到分析结果了:

    {"Description":"实验创建于10/10/2018","Summary":"","Graph":{"EdgesInternal":[],"ModuleNodes":[{"Id":"-15","ModuleId":"BigQuantSpace.单因子分析.单因子分析-v2","ModuleParameters":[{"Name":"factor","Value":"rank_avg_amount_0/rank_avg_amount_5","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"start_date","Value":"2010-01-01","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"end_date","Value":"2017-12-31","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[],"OutputPortsInternal":[],"UsePreviousResults":false,"moduleIdForCode":2,"Comment":"","CommentCollapsed":true}],"SerializedClientData":"<?xml version='1.0' encoding='utf-16'?><DataV1 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><Meta /><NodePositions><NodePosition Node='-15' Position='475.54388427734375,347.2872314453125,200,200'/></NodePositions><NodeGroups /></DataV1>"},"IsDraft":true,"ParentExperimentId":null,"WebService":{"IsWebServiceExperiment":false,"Inputs":[],"Outputs":[],"Parameters":[{"Name":"交易日期","Value":"","ParameterDefinition":{"Name":"交易日期","FriendlyName":"交易日期","DefaultValue":"","ParameterType":"String","HasDefaultValue":true,"IsOptional":true,"ParameterRules":[],"HasRules":false,"MarkupType":0,"CredentialDescriptor":null}}],"WebServiceGroupId":null,"SerializedClientData":"<?xml version='1.0' encoding='utf-16'?><DataV1 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><Meta /><NodePositions></NodePositions><NodeGroups /></DataV1>"},"DisableNodesUpdate":false,"Category":"user","Tags":[],"IsPartialRun":true}
    In [2]:
    # 本代码由可视化策略环境自动生成 2018年10月23日 10:14
    # 本代码单元只能在可视化模式下编辑。您也可以拷贝代码,粘贴到新建的代码单元或者策略,然后修改。
    
    
    m2 = M.单因子分析.v2(
        factor='rank_avg_amount_0/rank_avg_amount_5',
        start_date='2010-01-01',
        end_date='2017-12-31',
        m_cached=False
    )
    
    [2018-10-23 09:56:35.072666] INFO: bigquant: 单因子分析.v2 开始运行..
    [2018-10-23 09:56:56.247624] INFO: bigquant: instruments.v2 开始运行..
    [2018-10-23 09:56:56.258056] INFO: bigquant: 命中缓存
    [2018-10-23 09:56:56.259177] INFO: bigquant: instruments.v2 运行完成[0.011612s].
    [2018-10-23 09:56:56.264713] INFO: bigquant: input_features.v1 开始运行..
    [2018-10-23 09:56:56.311569] INFO: bigquant: 命中缓存
    [2018-10-23 09:56:56.312894] INFO: bigquant: input_features.v1 运行完成[0.048183s].
    [2018-10-23 09:56:56.397395] INFO: bigquant: general_feature_extractor.v7 开始运行..
    [2018-10-23 09:56:56.420865] INFO: bigquant: 命中缓存
    [2018-10-23 09:56:56.422495] INFO: bigquant: general_feature_extractor.v7 运行完成[0.025106s].
    [2018-10-23 09:56:56.425112] INFO: bigquant: input_features.v1 开始运行..
    [2018-10-23 09:56:56.430370] INFO: bigquant: 命中缓存
    [2018-10-23 09:56:56.431608] INFO: bigquant: input_features.v1 运行完成[0.006497s].
    [2018-10-23 09:56:56.437610] INFO: bigquant: derived_feature_extractor.v3 开始运行..
    [2018-10-23 09:56:56.460445] INFO: bigquant: 命中缓存
    [2018-10-23 09:56:56.461818] INFO: bigquant: derived_feature_extractor.v3 运行完成[0.024208s].
    
    /usr/local/python3/lib/python3.5/site-packages/sklearn/preprocessing/_encoders.py:326: DeprecationWarning: Passing 'n_values' is deprecated in version 0.20 and will be removed in 0.22. You can use the 'categories' keyword instead. 'n_values=n' corresponds to 'categories=[range(n)]'.
      warnings.warn(msg, DeprecationWarning)
    
    factor_df loaded
    processed_df loaded
    ols loaded
    factor_industry_dist_df loaded
    rank_IC loaded
    LIQUIDITY factor completed
    REVERSAL factor completed
    benchmark_factors_df completed
    benchmark_factors_df resampled
    benchmark_factors_df processed
    corr_process loaded
    
    [2018-10-23 10:10:19.622711] INFO: bigquant: 单因子分析.v2 运行完成[824.549976s].
    

    (yangming) #2

    写的这么好 为什么没人顶呢?


    (blueltx) #3

    怎么能看到源码?


    (小Q) #4

    策略直接克隆就可以到自己的策略研究界面。


    (Plenari) #5

    不知道有没有因子回测或者模拟