姚宏亮, 施振振, 王 浩
(合肥工業(yè)大學(xué) 計算機與信息學(xué)院 安徽 合肥 230601)
股市是一個復(fù)雜的非線性動態(tài)系統(tǒng)[1],是眾多因素共同作用的結(jié)果,受到政策、社會新聞事件、公司本身經(jīng)營狀況以及投資者心理變化等眾多因素的影響[2-3],因而股市趨勢預(yù)測是機器學(xué)習(xí)中具有挑戰(zhàn)性的研究問題。同時,拐點預(yù)測是股市趨勢中的關(guān)鍵性難題[4]。
近年來,不少研究者利用支持向量機(support vector machine,SVM)預(yù)測股市的拐點。文獻(xiàn)[5]提出了成交量加權(quán)支持向量機(volume weighted SVM,VW-SVM)模型對股市拐點進(jìn)行預(yù)測;文獻(xiàn)[6]針對傳統(tǒng)加權(quán)支持向量機(weighted SVM,W-SVM)中參數(shù)需要人為指定的問題,提出了融合遺傳算法的加權(quán)支持向量機(genetic algorithm weighted SVM,GAW-SVM)模型,對股票拐點進(jìn)行預(yù)測; 文獻(xiàn)[7]根據(jù)拐點變化幅度對拐點賦予不同的權(quán)值,用分段線性表示(piecewise linear representation,PLR)方法對股票趨勢進(jìn)行預(yù)測。
股市受到實時因素的影響,且這些因素具有不確定性[8-9],因而股票趨勢數(shù)據(jù)的分布具有可變性。傳統(tǒng)方法利用較長時間的歷史數(shù)據(jù)學(xué)習(xí)模型,忽略數(shù)據(jù)分布可變性,難以有效預(yù)測股市拐點[10]。文獻(xiàn)[11]提出用滑動窗口方法來處理數(shù)據(jù)分布變化,但僅考慮近期數(shù)據(jù)分布,容易產(chǎn)生過擬合,導(dǎo)致模型的適應(yīng)性不佳。
本文將用歷史數(shù)據(jù)學(xué)習(xí)得到的模型和用近期數(shù)據(jù)學(xué)習(xí)得到的模型進(jìn)行融合,通過引入平衡項,提出一種平衡加權(quán)支持向量機(balance weighted SVM,BW-SVM)模型。BW-SVM模型對歷史數(shù)據(jù)分布和近期局部數(shù)據(jù)分布進(jìn)行了融合,其中平衡項是用歷史數(shù)據(jù)學(xué)習(xí)得到結(jié)果和用近期局部數(shù)據(jù)學(xué)習(xí)所得結(jié)果的均方誤差,其中誤差項可以通過調(diào)節(jié)系數(shù)μ進(jìn)行調(diào)節(jié)。
拐點相關(guān)的特征提取,是有效發(fā)現(xiàn)拐點的重要基礎(chǔ)[12]。目前研究者一般從傳統(tǒng)技術(shù)指標(biāo)中提取與股市拐點相關(guān)的特征[13],這些特征能在一定程度上體現(xiàn)近期數(shù)據(jù)分布的變化。本文在傳統(tǒng)技術(shù)指標(biāo)基礎(chǔ)上,通過對指標(biāo)進(jìn)一步量化得到拐點的能量特征,然后利用馬爾可夫毯對提出的特征進(jìn)行融合,最后將能量特征帶入BW-SVM模型,對股市拐點進(jìn)行預(yù)測。
本文先給出BW-SVM模型的形式化表示,推導(dǎo)出BW-SVM模型的分類函數(shù);然后提取具有能量信息的特征,利用馬爾可夫毯對拐點的能量特征進(jìn)行融合,得到能量特征與拐點之間的結(jié)構(gòu)關(guān)系;再將能量特征帶入BW-SVM模型得到基于能量的平衡加權(quán)支持向量機(BW-SVM based on energy,EBW-SVM)算法,并用遺傳算法對模型參數(shù)進(jìn)行優(yōu)化;最后通過真實數(shù)據(jù)集上的實驗結(jié)果驗證了算法的有效性。
W-SVM模型的分類函數(shù)為:
f(x)=w·φ(x)+b
(1)
其中,φ為未知函數(shù)。最優(yōu)化問題可表示為:
s.t.yi[(w·φ(xi))+b]≥1-ξi,
ξi≥0,i=1,2,…,n
(2)
其中,C為懲罰參數(shù),C>0;si為權(quán)重;ξi為松弛變量;n為樣本個數(shù);xi為訓(xùn)練數(shù)據(jù)。
在W-SVM模型上,在目標(biāo)函數(shù)中增加平衡項μ‖wt-ws‖2,其中,μ為調(diào)節(jié)系數(shù),ws為使用較長時期的歷史數(shù)據(jù)學(xué)習(xí)得到的模型參數(shù),wt為用近期數(shù)據(jù)學(xué)習(xí)得到的模型參數(shù)(本文取最近20個交易日的數(shù)據(jù)),得到的BW-SVM模型表示如下:
(3)
(4)
進(jìn)而,可得到展開式的對偶形式為:
(5)
其中,ns為歷史數(shù)據(jù)樣本數(shù);αs為根據(jù)歷史數(shù)據(jù)訓(xùn)練得到的模型對偶形式的解。利用Matlab中的quadprog函數(shù)求解該對偶形式的解αt,可得:
(6)
(7)
wt、bt為BW-SVM分類函數(shù)的系數(shù)和常數(shù)項,代入(1)式,得到分類函數(shù):
f(x)=wt·φ(x)+bt=
(8)
其中,K為給定的核函數(shù)。
從多空角度來看,股市的波動是能量作用的結(jié)果,而拐點的產(chǎn)生是能量從一種趨勢變成另一種趨勢造成的。傳統(tǒng)技術(shù)指標(biāo)如KDJ指標(biāo)、異同移動平均線(Moving Average Convergence and Divergence,MACD)指標(biāo)等也具有能量分布特性,但只是能量變化的一種基本表示,與實際能量波動存在較大的不一致性。本文對傳統(tǒng)技術(shù)特征進(jìn)一步量化,以提取更有價值的特征。
2.1.1 KDJ指標(biāo)的能量特征
KDJ指標(biāo)由K線、D線和J線構(gòu)成,表示最高價、最低價及收盤價之間的關(guān)系,被廣泛用于金融市場中短期的趨勢分析。當(dāng)i時刻K線向上時,即ΔKi=(Ki-Ki-1)/Ki-1>0,向上趨勢的能量強度可以用|Ki-Di|表示,其加權(quán)能量強度可以表示為|Ki-Di|ΔKi,K線的變化幅度越大,其加權(quán)后的能量越大;若ΔKi<0,則當(dāng)前是下跌趨勢,對應(yīng)的能量值為負(fù)。
(9)
2.1.2 影線比重的能量特征
影線比重的能量特征為:
(10)
其中,Oi、Hi、Li、Ci分別為i時刻股票的開盤價、最高價、最低價及收盤價;ξ是為了防止分母為0的偏置值,這里取ξ=0.000 1。上下影線長度與上方壓力或下方支撐力有關(guān)。
2.1.3 移動平均線指標(biāo)的能量特征
(11)
2.1.4 相對強弱指標(biāo)的能量特征
(12)
2.1.5 成交量移動平均指標(biāo)的能量特征
(13)
2.1.6 當(dāng)前價格所處位置的能量特征
(14)
圖1 股票600031當(dāng)前價格所處的位置
2.1.7MACD的能量特征
MACD是利用收盤價的短期(常用12日)指數(shù)移動平均線與長期(常用26日)指數(shù)移動平均線表示趨勢的變化情況,由離差(difference,DIFF)線、離差值的指數(shù)平滑移動平均(difference exponential average,DEA)線和MACD能量柱組成。當(dāng)DIFF線向上,即ΔDIFFi=(DIFFi-DIFFi-1)/DIFFi-1>0時,當(dāng)前趨勢向上,向上的能量強度可以用|DIFFi-DEAi|表示,此時加權(quán)能量強度可以表示為|DIFFi-DEAi|ΔDIFFi,DIFF的變化幅度越大,其加權(quán)后的能量越大;若ΔDIFFi<0,則當(dāng)前是下跌趨勢,對應(yīng)的能量值為負(fù)。
(15)
利用馬爾可夫毯對能量特征進(jìn)行融合,得到能量特征與拐點之間的結(jié)構(gòu)關(guān)系。將上述能量特征進(jìn)行離散化,并利用K2算法構(gòu)建貝葉斯網(wǎng)絡(luò),如圖2所示。
圖2中,1~7號節(jié)點分別代表T1~T7指標(biāo),8號節(jié)點為拐點。
對于一個變量T和變量子集S,T?S,給定T的馬爾科夫毯(記作MB(T)),若變量T與貝葉斯網(wǎng)絡(luò)中的其他變量間是條件獨立的,即存在I(S,T|MB(T)),稱MB(T)為最小特征子集[14]。MB(T)包含了變量T的所有信息,且這些信息無法從變量集的其他變量中得到[15]。在貝葉斯網(wǎng)絡(luò)圖中,MB(T)是由變量T的父結(jié)點、子結(jié)點和子結(jié)點的父結(jié)點組成的[16]。
圖2 拐點的貝葉斯網(wǎng)絡(luò)
由圖2可知,8號拐點的父節(jié)點為1、2,子節(jié)點為5、6、7,子節(jié)點的父節(jié)點為1、2、3、5,其馬爾科夫毯如圖3所示。
設(shè)TP(turning point)為拐點信息,馬爾科夫毯對拐點相關(guān)特征融合后的能量用ETP表示,其條件概率函數(shù)為:
PTP=P(ETP|T1,T2,T3,T4,T5,T6,T7)
(16)
圖3 拐點的馬爾科夫毯
輸入:股票日線數(shù)據(jù)集Dateset。
輸出: 拐點。
(1) 根據(jù)(9)~(15)式,從Dateset中提取7個能量特征T1~T7及真實拐點標(biāo)簽,并將數(shù)據(jù)分為訓(xùn)練集、驗證集及測試集。
(2) 利用馬爾可夫毯對能量特征進(jìn)行融合,并得到融合后的能量函數(shù)。
(3) 將訓(xùn)練集特征帶入W-SVM模型進(jìn)行訓(xùn)練,得到W-SVM的模型參數(shù)ws。
(4) 基于ws,提取測試集的前N個交易日為局部訓(xùn)練集,帶入EBW-SVM模型進(jìn)行訓(xùn)練,得到EBW-SVM模型。
(5) 利用EBW-SVM模型對拐點進(jìn)行預(yù)測。
根據(jù)(3)式,EBW-SVM模型中有5個參數(shù)
需要事先設(shè)定,分別是懲罰因子C、調(diào)節(jié)系數(shù)μ、拐點的權(quán)重s1、非拐點的權(quán)重s2,以及徑向基函數(shù)(radial basis function,RBF)的參數(shù)γ。一般地,高維特征選擇線性核函數(shù),低維特征選擇RBF核函數(shù)[17],因此選擇RBF核函數(shù)。RBF核函數(shù)為:
K(x,xi)=exp(-γ‖x-xi‖2)
(17)
這里用遺傳算法(genetic algorithm,GA)對模型參數(shù)進(jìn)行全局尋優(yōu),5個參數(shù)的尋優(yōu)范圍如下:C取值為0~1 000;s1取值為0.01~1;s2取值為0.01~1;μ取值為0~10;γ取值為0.000 1~10。
將歷史數(shù)據(jù)分成訓(xùn)練集和驗證集,GA算法的目標(biāo)是最大化驗證集的F1值(以下簡稱F1)。F1是一種常用的衡量分類效果好壞的指標(biāo),其計算公式為:
(18)
其中,Ravg為平均召回率;Pavg為平均準(zhǔn)確率。
為了驗證取不同局部數(shù)據(jù)對實驗結(jié)果的影響,分別取N為前20、50、100、200、500個交易日,并從準(zhǔn)確率、召回率及F1值3個方面和文獻(xiàn)[6]提出的算法進(jìn)行比較,結(jié)果見表1~表3所列。
表1 GAW-SVM算法和EBW-SVM算法準(zhǔn)確率對比
表2 GAW-SVM算法和EBW-SVM算法召回率對比
表3 GAW-SVM算法和EBW-SVM算法F1值對比
從表1~表3可以看出,當(dāng)N取不同值時,EBW-SVM算法的表現(xiàn)均比GAW-SVM算法好。在準(zhǔn)確率方面,N為20或50時EBW-SVM算法的表現(xiàn)最好,N為100時次之,N為200或500時最差。在召回率方面,當(dāng)N為200或500時EBW-SVM算法的表現(xiàn)最好,N為100時次之,N為20或50時表現(xiàn)最差。F1值,當(dāng)N為100時EBW-SVM算法的表現(xiàn)最好。
由此可知,N太小時EBW-SVM算法容易對拐點過于敏感,而N太大又過于保守,選擇適當(dāng)?shù)木植繑?shù)據(jù)進(jìn)行第2次訓(xùn)練,有助于整體預(yù)測效果的提升。
本文主要針對目前歷史數(shù)據(jù)學(xué)習(xí)模型的方法忽略近期數(shù)據(jù)分布變化,導(dǎo)致拐點難以有效發(fā)現(xiàn)的問題,提出一種融合能量特征的支持向量機股市拐點預(yù)測方法(EBW-SVM)。在原W-SVM模型中引入平衡項得到BW-SVM模型,然后在能體現(xiàn)數(shù)據(jù)分布變化的技術(shù)指標(biāo)基礎(chǔ)上,進(jìn)一步量化提取拐點的能量特征,并利用馬爾可夫毯融合拐點的能量特征,最后將能量特征帶入BW-SVM模型對股市拐點進(jìn)行預(yù)測。實驗分析結(jié)果表明,EBW-SVM算法具有良好的性能。