張雪芳 溫 馨
(武漢郵電科學(xué)研究院 武漢 430074)
在我國經(jīng)濟快速發(fā)展的背景下,股票市場應(yīng)運而生。股市是股票發(fā)行流通的平臺,同時也是上市公司募集資本的重要途經(jīng)之一。另一方面,隨著人民經(jīng)濟水平的提高和股票市場的發(fā)展,進行股票投資也成為了人們的主要理財方式之一。股票投資的目的是,如何在最小化風險的情況下獲得投資收益的最大化,而如何選擇投資策略,成為眾多投資者面臨的主要問題。本文選擇XGBoost 算法作為基礎(chǔ),構(gòu)建股票指數(shù)漲跌預(yù)測模型。通過以往的研究結(jié)果,選取財報中的相關(guān)數(shù)據(jù)作為輸入特征,對后一天的漲跌情況進行預(yù)測,并通過網(wǎng)格搜索法確立最佳權(quán)重。本文用二元數(shù)據(jù)表示模型預(yù)測的結(jié)果,“+1”即為上漲,“-1”即為下跌,并對不同年份、不同模型的效果進行比較,判斷模型的預(yù)測效果。本文進一步比較了LR算法、SVM算法、隨機森林算法和XGBoost 算法的優(yōu)劣,證明XGBoost 模型在股指預(yù)測中有較優(yōu)的效果,最后得出基于XGBoost 模型量化分析的結(jié)論建議。
XGBoost 算法是基于Adaboost 和GBDT 等提升樹算法基礎(chǔ)上進行優(yōu)化的算法,它是通過集成多個弱分類器來實現(xiàn)學(xué)習(xí)的。通過一個含有n 條記錄以及m 個解釋變量的訓(xùn)練集D={(xi,yi)},|D|=n,xi∈Rm,yi∈R,第i個樣本所預(yù)測的值,可以表示為由k個決策樹聯(lián)合的模型,記作:其中,fk代表第k個決策樹,F(xiàn)是函數(shù)空間,代表所有決策樹的集合。
與GBDT 的目標函數(shù)不同,XGBoost 在原有的目標函數(shù)之上增加了正則化項,來減弱過擬合,增強泛化性。目標函數(shù)公式如下:
其中,函數(shù)l 可以選擇不同的損失函數(shù),Ω(fk)代表第k棵樹的懲罰項,具體公式如下:
其中,wk,j代表第k 顆樹中第j 個葉子的權(quán)值,T 代表葉子節(jié)點數(shù),γ和λ是用來平衡重要性的參數(shù)。通過對L 式進行二階泰勒級數(shù)的近似展開,得到如下公式。
其中,pi是的Logit變換。
XGBoost算法的優(yōu)點如下:
1)模型支持并行化運算,計算效率更高;
2)算法支持列抽樣,不僅可以降低過擬合,增強泛化能力,還可以有效減少計算量;
3)有缺失值處理的機制,對缺失的數(shù)據(jù),能夠自動學(xué)習(xí)出樹節(jié)點的分裂選擇方向;
4)相比于GBDT 僅使用了一階導(dǎo)信息,XGBoost 使用的是二階泰勒級數(shù)進行展開,可以學(xué)習(xí)到更精細的數(shù)據(jù)模式,增強模型準確性;
5)在損失中增加了L1、L2 正則化,可以大大提高泛化能力。
滬深300 指數(shù)是從滬深兩個市場中選取的排名前300 的股票組成的,具有流動性較好并且資金規(guī)模較大的特點。其中的股票多為A 股中的市值較大的公司,市場代表性好,能夠較好地反映市場龍頭公司的股票價格走勢。受新冠疫情造成的全球股市低迷的影響,本文選取了2012 年1 月1 日到2019年12月31日,共計1945個交易日的采集數(shù)據(jù)進行研究,采集了年度財務(wù)報告中的數(shù)據(jù)比率指標進行預(yù)測。本文所采用的財務(wù)指標特征和股價數(shù)據(jù)均來自于瑞斯數(shù)據(jù)庫。
在實際量化投資模型構(gòu)建時,由于原始數(shù)據(jù)量比較大,并且存在著數(shù)據(jù)缺失、量綱不統(tǒng)一的臟數(shù)據(jù),因此首先有必要對數(shù)據(jù)進行處理。
直接刪除異常值樣本簡單粗暴,但是存在一定問題。刪除特異值樣本導(dǎo)致樣本在這一范圍區(qū)間內(nèi)的數(shù)目減少,致使樣本總體分布發(fā)生改變,對模型效果有不利的影響。因此本文采用的處理方法是,將財務(wù)指標中數(shù)據(jù)分布大于95%分位點的數(shù)據(jù)用95%分位點的數(shù)據(jù)值替換,而小于5%分位點的數(shù)據(jù)用5%分位點的數(shù)據(jù)值替換。某股票財務(wù)數(shù)據(jù)指標以及替換后的指標統(tǒng)計如表1~2所示。
表1 財務(wù)指標統(tǒng)計
表2 異常值處理后的財務(wù)指標統(tǒng)計
表3 默認參數(shù)下模型的運行結(jié)果
表4 不同算法AUC評分比較
表5 不同年份下每種模型的效果比較
構(gòu)建模型時,并不是輸入特征越多越好。如果數(shù)據(jù)量非常大,造成冗余信息過多,XGBoost 訓(xùn)練的過程會消耗大量的時間。因此,可以通過數(shù)據(jù)規(guī)約的方式進行降維,保留數(shù)據(jù)有效性的同時降低數(shù)據(jù)維數(shù),消除冗余數(shù)據(jù),可以有效減小消耗。本文采用主成分分析法(PCA)進行數(shù)據(jù)規(guī)約。具體步驟如下:
1)對原始輸入矩陣做標準化轉(zhuǎn)換,統(tǒng)一量綱;
2)計算不同特征的相關(guān)系數(shù)矩陣R;
3)計算相關(guān)系數(shù)矩陣R 的特征值以及特征向量,得到載荷矩陣,保留前m 個特征值以及對應(yīng)的特征向量,此時數(shù)據(jù)的正交性最大,即在有效降低冗余同時,可以保留最大的信息量。
XGBoost參數(shù)優(yōu)化的一般步驟如下:
1)選擇較高的學(xué)習(xí)率,例如設(shè)置學(xué)習(xí)率為0.1,可以在一定區(qū)間內(nèi)用窮舉法進行參數(shù)尋優(yōu),獲得準確率較高的參數(shù)組合;
2)在給定的學(xué)習(xí)率和決策樹數(shù)量下,進XGBoost 各個參數(shù)調(diào)優(yōu)(max_depth、min_child_weight、subsample、gamma等);
3)XGBoost的正則化參數(shù)調(diào)優(yōu);
4)選用更低的學(xué)習(xí)率,精細化的確定理想?yún)?shù)。
默認參數(shù)下,模型的運行效果如下。
首先,在固定學(xué)習(xí)率的條件下,對Min_chile_weight、Max_depth 參數(shù)尋優(yōu),測試其在不同組合下的模型效果。其次,固定上述三個參數(shù),對gamma參數(shù)尋優(yōu)。接下來,調(diào)整subsample 和colsample_bytree參數(shù)。最后,對reg_alpha參數(shù)進行優(yōu)化。
通過上述調(diào)優(yōu),將模型測試集的AUC 提高到了0.6782,有一定的優(yōu)化效果。
最終,比較了不同算法的AUC 評分,示意如下。
不同年份年報數(shù)據(jù)下的模型效果比較如下表所示。
從上述結(jié)果可以看出,XGBoost 算法的效果是要優(yōu)于SVM、RF、LR 的。同時,XGBoost 對模型有較好的解釋性,更加適用于特征數(shù)量較少、對解釋性要求較高的場合。
本文從股票投資的視角出發(fā),研究了XGBoost算法在量化分析中的應(yīng)用,基于財務(wù)數(shù)據(jù)對股票趨勢進行分析,有一定的有效性。并比較了XGBoost、RF、SVM、LR 算法的優(yōu)缺點,具有一定的借鑒意義。在實際的股票交易中,每日股票漲跌的幅度是一定范圍內(nèi)的變化值,而不是只有二元的結(jié)果。此外,每次交易伴隨一定的稅費,因此短期內(nèi)多次交易不是最優(yōu)的決策。在后續(xù)的研究中可以就相關(guān)方向進行進一步的總結(jié)與完善。