zoukankan      html  css  js  c++  java
  • 因子学习笔记、问题汇总

    一、多因子问题

     500、总问题,每月要更新的数据有哪些?

    1、各个因子数据,具体哪些? pe pb等

    2、return数据,所有A股return数据 ,沪深300、中证500return数据

    3、

    9、存储的csv格式数据结构是怎么样的呢?

    应该是每个月为一个因子或多个因子的数据,命名为0、1、2、3....,0是为2000年1月31日数据。每列为股票因子数据。

    如何更新:每次更新一个因子数据命名为一个csv文件,保存到相应位置,每次更新与以前数据不冲突。

    8、回测时股票价格数据该如何选择?

    20180621新修改:

    不需要取收盘价格数据,直接取pct_chg即可。向前复权和先后复权都可以,因为不是取的收盘价。

    每个月度数据新建一个表,更新的数据在新建的表中,一个月数据按照月顺序命名,以2000年1月份为0开始命名。

    1、周期:日、周、月、季(报告期)、年

    2、时间设置:固定日期---->,起始日期,截止日期;相对日期---->前推周期(日历日、交易日、周、月、季、年),截止日期

    3、日期类型:交易日、日历日、工作日

    4、无交易数据处理:沿用之前数据、空值、自设数值(自己输入数值)

    5、货币:原始货币、人民币、美元、港币

    6、价格修正:(!)、复权方式(适用于股票基金):不复权、前复权、后复权、定点复权   (2)、价格类型(适用债券):净价、全价、市价、收益率

    设置汇总:1、周/月 2、相对日期-->周/月 3、日历日 4、空值 5、原始货币 6、复权方式-->前复权

    注意:(1)、复权可以选择向后复权,这样收益率数据库可以(周/月)度更新,如果向前复权,每次向前时点不一致,导致数据不一致。

              (2)、频繁交易会加大交易成本,一般选取月度数据进行回测。所有数据在一张表中,需要数据时来表中取数据,可每月更新一次收盘数据。

    7、A股比较基准是什么?

    沪深300指数  代码 000300.SH   中证500指数 代码 000905.SH

    注意:沪深300指数数据是从2002年1月开始,中证500指数数据是从2005年1月开始。

    6、在做多因子研究时,如果回测结果较好,把y换成随机数序列y1,用y1回归来看模型预测能力差,是不是说明模型预测能力较好?

    5、在因子去极值处理后,因子数据全部变为0,是什么原因?

    解答:dividendyield2因子在2008年5月31日数据全为0,因为中位数数据为0,极大值和极小值均为0,最后结果都为0,影响应该不大,这样数据少,以后随着分红变得普遍,就不会有这种情况发生了。

    4、数组标准化(变为均值为0,方差为1)后的数据唯一吗?

    解答:是唯一的,两个标准化的差别是一个对每列标准化,一个对全部数据标准化。

    data=pd.DataFrame(np.array([[0, 0], [0, 0], [1, 1], [1, 1]]))
    data
    Out[53]: 
       0  1
    0  0  0
    1  0  0
    2  1  1
    3  1  1
    scale_fun = lambda x: (x - x.mean()) / x.std()
    data1=data.apply(scale_fun)
    data1
    Out[56]: 
              0         1
    0 -0.866025 -0.866025
    1 -0.866025 -0.866025
    2  0.866025  0.866025
    3  0.866025  0.866025
    data1.mean()
    Out[79]: 
    0    0.0
    1    0.0
    dtype: float64
    data1.std()
    Out[80]: 
    0    1.0
    1    1.0
    dtype: float64
    
    from sklearn import preprocessing
    scaler=preprocessing.StandardScaler()
    scaler.fit(data)
    Out[84]: StandardScaler(copy=True, with_mean=True, with_std=True)
    data2=scaler.transform(data)
    data2
    Out[87]: 
    array([[-1., -1.],
           [-1., -1.],
           [ 1.,  1.],
           [ 1.,  1.]])
    data2.mean()
    Out[88]: 0.0
    data2.std()
    Out[89]: 1.0
    data3=DataFrame(data2)
    data3
    Out[91]: 
         0    1
    0 -1.0 -1.0
    1 -1.0 -1.0
    2  1.0  1.0
    3  1.0  1.0
    data3.mean()
    Out[92]: 
    0    0.0
    1    0.0
    dtype: float64
    data3.std()
    Out[93]: 
    0    1.154701
    1    1.154701
    dtype: float64

    3、选取回报数据的时候,是否需要复权处理?价格修正方式(股票基金)有4种:不复权、前复权、后复权、定点复权(仅用于支持定点复权指标)

    解答:选择前复权,如果不复权,价格不真实

    2、有些股票当期不在交易标的中,比如ST、停牌、上市不满三个月等。在做因子数据预处理时是该先丢掉这些数据再做预处理,还是全部因子数据数据预处理完,再丢掉?

    解答:先全部预处理完,再丢,这样包含的信息更多。

    1、如果当天股票停牌,不考虑后续是否停牌情况下,单个回测周期因子回测时该如何处理?实际交易时如何处理?

    回测时:该股票不在投资标的中,所有因子值设置为nan,设置时间分为因子预处理前和预处理后两种情况。

    实盘时:如果按照回测时情况来处理,该停牌股票必然会被调出股票持仓中,可能实际上该股票不应该调出,产生无效交易,加大交易成本。

    这是一个问题。。。

    兴业三叉戟量化选股策略

    1、RV选股策略:

    2、3+2量化选股策略

     

  • 相关阅读:
    java代码确认出ip和主机名
    java代码getHostAddress .getHostName()的练习
    java代码用户界面网格布局GridLayout.划分为格子区域
    java图形用户界面BorderLayout布局。冲突
    java图形用户界面添加背景颜色不成功的解决方案
    java图形用户界面练习。j2se
    java代码Calendar类
    java图形用户界面添加图片的代码
    java图形用户界面边界布局管理器
    P1120 小木棍 [数据加强版]
  • 原文地址:https://www.cnblogs.com/bawu/p/7300755.html
Copyright © 2011-2022 走看看