因子學習筆記、問題彙總

1、多因子問題數據庫

 500、總問題,每個月要更新的數據有哪些?數組

一、各個因子數據,具體哪些? pe pb等數據結構

二、return數據,全部A股return數據 ,滬深300、中證500return數據app

三、ide

 

九、存儲的csv格式數據結構是怎麼樣的呢?spa

應該是每月爲一個因子或多個因子的數據,命名爲0、一、二、3....,0是爲2000年1月31日數據。每列爲股票因子數據。3d

如何更新:每次更新一個因子數據命名爲一個csv文件,保存到相應位置,每次更新與之前數據不衝突。code

 

八、回測時股票價格數據該如何選擇?orm

20180621新修改:blog

不須要取收盤價格數據,直接取pct_chg便可。向前復權和前後復權均可以,由於不是取的收盤價。

每月度數據新建一個表,更新的數據在新建的表中,一個月數據按照月順序命名,以2000年1月份爲0開始命名。

一、週期:日、周、月、季(報告期)、年

二、時間設置:固定日期---->,起始日期,截止日期;相對日期---->前推週期(日曆日、交易日、周、月、季、年),截止日期

三、日期類型:交易日、日曆日、工做日

四、無交易數據處理:沿用以前數據、空值、自設數值(本身輸入數值)

五、貨幣:原始貨幣、人民幣、美圓、港幣

六、價格修正:(!)、復權方式(適用於股票基金):不復權、前復權、後復權、定點復權   (2)、價格類型(適用債券):淨價、全價、市價、收益率

設置彙總:一、周/月 二、相對日期-->周/月 三、日曆日 四、空值 五、原始貨幣 六、復權方式-->前復權

注意:(1)、復權能夠選擇向後復權,這樣收益率數據庫能夠(周/月)度更新,若是向前復權,每次向前時點不一致,致使數據不一致。

          (2)、頻繁交易會加大交易成本,通常選取月度數據進行回測。全部數據在一張表中,須要數據時來表中取數據,可每個月更新一次收盤數據。

 

七、A股比較基準是什麼?

滬深300指數  代碼 000300.SH   中證500指數 代碼 000905.SH

注意:滬深300指數數據是從2002年1月開始,中證500指數數據是從2005年1月開始。

 

六、在作多因子研究時,若是回測結果較好,把y換成隨機數序列y1,用y1迴歸來看模型預測能力差,是否是說明模型預測能力較好?

 

五、在因子去極值處理後,因子數據所有變爲0,是什麼緣由?

解答:dividendyield2因子在2008年5月31日數據全爲0,由於中位數數據爲0,極大值和極小值均爲0,最後結果都爲0,影響應該不大,這樣數據少,之後隨着分成變得廣泛,就不會有這種狀況發生了。

四、數組標準化(變爲均值爲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

 

三、選取回報數據的時候,是否須要復權處理?價格修正方式(股票基金)有4種:不復權、前復權、後復權、定點復權(僅用於支持定點復權指標)

解答:選擇前復權,若是不復權,價格不真實

 

二、有些股票當期不在交易標的中,好比ST、停牌、上市不滿三個月等。在作因子數據預處理時是該先丟掉這些數據再作預處理,仍是所有因子數據數據預處理完,再丟掉?

解答:先所有預處理完,再丟,這樣包含的信息更多。

 

一、若是當天股票停牌,不考慮後續是否停牌狀況下,單個回測週期因子回測時該如何處理?實際交易時如何處理?

回測時:該股票不在投資標的中,全部因子值設置爲nan,設置時間分爲因子預處理前和預處理後兩種狀況。

實盤時:若是按照回測時狀況來處理,該停牌股票必然會被調出股票持倉中,可能實際上該股票不該該調出,產生無效交易,加大交易成本。

這是一個問題。。。

 

興業三叉戟量化選股策略

一、RV選股策略:

 

二、3+2量化選股策略

 

相關文章
相關標籤/搜索