FAQ > 金融建模 > 建模问题 > 天软因子

Q:为什么风格因子计算结果中,最终合成因子全为0?    

  • A:很有可能是因为指定股票列表中大多数股票都处于停牌状态

    在风格因子计算过程中,当设置了填充已剔除的股票因子值(FillNaN=1)时,样本池中会保留当日停牌或其他不满足条件的成分股,然后根据缺失值填充方式(FillMiss)的设置,使用指定值作为该类特殊股票的当日因子值。

    当存在特殊事件,该类特殊股票数量较多时,会导致序列中多数因子值相同,最终在经过去极值、标准化处理后结果均为0。
    目前已知存在这种情况的日期有:20150709、20150710。

    以20150709为例,由于特殊事件,当天A股大约有一半的股票处于停牌状态。
    对应的代码示例以及最终合成因子结果如下:
      EndT := inttodate(20150709);
      StockArr := GetAbkbyDate("A股",EndT);
      Factors := array(); //因子表(有默认列表,一般不变)
      IndexID := "SH000300"; //市场指数
      RiskFreeRate := 0; //每日无风险利率(%)
      //数据处理
      FillNaN := 1; //是否填充已剔除的股票因子值 1: 用NaN填充当日停牌以及上市日不足525个交易日的股票
      FillMiss := 2; // 0:剔除; 1:平均值填充; 2:中位数填充
      Normalization := 1; //极值处理:0:不处理; 1: 中位数; 2:3 倍标准差 ; 3:四分位法
      Standardization := -1; //标准化处理:自定义
      return TS_StyleFactor(EndT,StockArr,Factors,IndexID,RiskFreeRate,FillNaN,FillMiss,Normalization,Standardization);


    解决方法:
    不填充已剔除的股票因子值(FillNaN=0)
    最终合成因子部分结果如下: