因子学习笔记、问题汇总

一、多因子问题

 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量化选股策略

 

原文地址:https://www.cnblogs.com/bawu/p/7300755.html