蔣慧敏,陳 鋒
(中國科學(xué)技術(shù)大學(xué) 信息科學(xué)技術(shù)學(xué)院,合肥 230027)
E-mail:jianghm@mail.ustc.edu.cn
金融時間序列預(yù)測是以金融市場中時間序列變量作為數(shù)據(jù)和研究對象,構(gòu)建數(shù)學(xué)模型以分析市場的變動規(guī)律,并對未來市場的動態(tài)變化進(jìn)行預(yù)測的研究[1].金融時間序列預(yù)測由于其廣泛的應(yīng)用領(lǐng)域和巨大的影響,無疑是學(xué)術(shù)界和金融界金融研究人員的首選計算智能.
傳統(tǒng)的時間序列預(yù)測方法主要是在確定時間序列參數(shù)模型的基礎(chǔ)上得出模型參數(shù),并利用求解出的模型完成預(yù)測工作.這種建模與預(yù)測方式不能較好地適應(yīng)多元的大數(shù)據(jù)時間序列分析[2].目前利用深度學(xué)習(xí)模型,如長期短期記憶模型(Long Short-Term Memory,LSTM)等,可擬合更為復(fù)雜的數(shù)據(jù)進(jìn)行時間序列預(yù)測.但是,這些模型缺少學(xué)習(xí)數(shù)據(jù)隱含的語義信息,導(dǎo)致預(yù)測結(jié)果不夠準(zhǔn)確,而且預(yù)測的結(jié)果往往缺乏可解釋性.知識圖譜的應(yīng)用場景非常廣泛[3],可以實現(xiàn)語義層面的特征搜索泛化,提升預(yù)測結(jié)果的可解釋性.然而,現(xiàn)有的研究缺少將深度學(xué)習(xí)和知識圖譜技術(shù)相融合來進(jìn)行時間序列建模與預(yù)測的統(tǒng)一框架.因此,融合深度學(xué)習(xí)、知識圖譜技術(shù)并應(yīng)用到特定的時間序列預(yù)測與分析是一個有益的嘗試.
考慮到金融時間序列拐點識別算法可有效感知重要點(Perceptually Important Points,PIP),對金融時間序列識別其局部趨勢特征具有重要作用[4].本文采用Zigzag指標(biāo)識別金融時間序列的重要點,從而減少噪聲,有助于更加關(guān)注行情局部趨勢特征和交易行為.
在實踐中,金融產(chǎn)品之間的相關(guān)性是不可忽視的因素[5].例如,某控股公司的子公司或與其關(guān)系密切的公司,其股價走勢可能具有一定的相關(guān)性.另外,在股票交易中,投資者會面臨或大或小的風(fēng)險,而股指期貨則利用一種達(dá)成協(xié)議的方式使兩者的風(fēng)險對沖實現(xiàn)盈利[6],因此,在構(gòu)造算法交易策略時通常會關(guān)注股指期貨和現(xiàn)貨市場波動的相關(guān)性.本文使用知識圖譜及相關(guān)技術(shù)挖掘金融產(chǎn)品之間的相關(guān)性.首先,通過融合市場交易等信息來構(gòu)建金融知識圖譜,并使用TransR模型將實體投影到對應(yīng)的關(guān)系空間中.然后,通過計算實體向量之間的歐氏距離選擇與目標(biāo)股票相關(guān)的金融產(chǎn)品,并將其特征與感知重要點等K線指標(biāo)信息進(jìn)行拼接融合.該方法的優(yōu)點是充分考慮了現(xiàn)實中金融產(chǎn)品之間的內(nèi)在相關(guān)性,避免了僅使用個股價格數(shù)據(jù)來進(jìn)行預(yù)測的局限性.
在預(yù)測模型方面,考慮到獲得標(biāo)的金融產(chǎn)品及其相關(guān)的特征數(shù)據(jù)可看成時間序列數(shù)據(jù),本文將上述這些信息作為基于注意力機(jī)制的雙向長短期記憶網(wǎng)絡(luò)(Bidirectional Long-Short Term Memory Network,BiLSTM)模型的輸入,通過對模型進(jìn)行訓(xùn)練與測試,得到了較優(yōu)的預(yù)測結(jié)果.
論文的其余部分安排如下:第2節(jié)簡要回顧了金融時間序列趨勢預(yù)測的相關(guān)研究;第3節(jié)對本文所研究的問題進(jìn)行了分析與界定;第4節(jié)詳細(xì)討論了所提出的預(yù)測模型;第5節(jié)給出實驗設(shè)置和結(jié)果分析;第6節(jié)對論文進(jìn)行了總結(jié)與展望.
金融時間序列預(yù)測及其相關(guān)應(yīng)用已被廣泛研究多年.在這些研究中,針對特定的金融時間序列,尤其是對股票市場和期貨市場的預(yù)測最受關(guān)注.
傳統(tǒng)時間序列模型一般需要嚴(yán)格的數(shù)學(xué)原理作為支撐,并需要較嚴(yán)格的條件加以約束,從而借助外推原則來推測未來變化[7],例如自回歸綜合移動平均模型[8]、廣義自回歸條件異方差模型[9]和平滑轉(zhuǎn)移自回歸模型[10]等方法.然而,在實際的金融市場中的時間序列數(shù)據(jù)通常很難滿足這些方法所需的平穩(wěn)性、正態(tài)性等假設(shè)要求.
金融數(shù)據(jù)本質(zhì)上是時間序列的多維向量,深度神經(jīng)網(wǎng)絡(luò)能夠通過高維特征的非線性變化獲得相比于傳統(tǒng)方法更好的表達(dá)能力[11].考慮到LSTM在時間序列預(yù)測問題上表現(xiàn)良好[12],并在金融預(yù)測方面可能比傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)有更好的效果.文獻(xiàn)[13]利用LSTM對中國股票收益率進(jìn)行了建模和預(yù)測,與隨機(jī)預(yù)測方法相比LSTM模型的預(yù)測精度從14.3%提高到27.2%.文獻(xiàn)[14]采用將小波變換、堆疊式自動編碼器與LSTM相結(jié)合,對股票價格進(jìn)行預(yù)測,有效地提高了模型的性能.此外,傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型沒有考慮模型輸入與輸出之間的相關(guān)性,于是文獻(xiàn)[15]將注意力機(jī)制加入長短期記憶模型,提出了一種基于注意力的金融時間序列預(yù)測模型AT-LSTM,有效地解決了時間序列預(yù)測的長期相關(guān)性問題,并提高了基于神經(jīng)網(wǎng)絡(luò)的時間序列預(yù)測方法的可解釋性.
使用Zigzag指標(biāo)預(yù)測金融時間序列走勢是K線特征趨勢算法交易模型的關(guān)鍵技術(shù)之一.文獻(xiàn)[16]使用Zigzag技術(shù)指標(biāo)來發(fā)現(xiàn)識別金融數(shù)據(jù)短期趨勢的興趣模式(motif),可以獲得較高的預(yù)測精度和投資收益.受Zigzag技術(shù)指標(biāo)在分割數(shù)據(jù)并發(fā)現(xiàn)motif方面應(yīng)用的啟發(fā),本文在特征識別中引入Zigzag指標(biāo),以幫助深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中減少相同趨勢之間的差異,擴(kuò)大不同趨勢之間的差異.
另外,鑒于金融市場的復(fù)雜性,在預(yù)測價格走勢時,許多研究者考慮了金融產(chǎn)品之間的相關(guān)性.文獻(xiàn)[17]提出了一種耦合隨機(jī)游走模型來度量股票之間的相關(guān)性.文獻(xiàn)[18]將股票價格序列作為維納過程,用兩個維納過程之間的相關(guān)性取代股票之間的相關(guān)性.這些方法只利用已知的股票價格時間序列數(shù)據(jù),僅從數(shù)據(jù)的角度來衡量相似性,缺乏語義信息和可解釋性.近年來,使用知識圖譜將外部信息整合到學(xué)習(xí)過程中來生成事件表示,以學(xué)習(xí)外部市場信息對金融價格走勢的影響.文獻(xiàn)[19]提出了一種基于異構(gòu)信息融合的股市預(yù)測改進(jìn)方法,通過構(gòu)造股票運動張量來模擬股票、事件和情緒之間的內(nèi)在關(guān)系,通過對中國A股和港股數(shù)據(jù)的評價表明了模型的有效性.但在實際趨勢預(yù)測問題上,外部市場之間的關(guān)系是復(fù)雜的,現(xiàn)有研究沒有充分考慮行情局部趨勢特征模式和交易行為相關(guān)性分析.
預(yù)測未來短期交易日的金融標(biāo)的價格走勢可以幫助投資者進(jìn)行交易決策時獲得更高的交易回報率.它可以分為兩個子問題:1)交易回報和趨勢是什么;2)如何進(jìn)行建模與預(yù)測.本小節(jié)首先定義價格變化的回報函數(shù)和趨勢變動函數(shù),然后給出需要預(yù)測的問題.
實際操作中,由于交易成本的原因,許多場景下并不需要準(zhǔn)確地知道下一個分析周期的價格(收盤價),只需知道被觀測市場的走向(升、降或平穩(wěn)),從而決定下一步的交易操作(長期/短期-買入/賣出).本文主要研究金融K線歷史數(shù)據(jù)預(yù)測將來中短期內(nèi)的價格走勢.
我們利用未來n個K線交易周期收盤價與當(dāng)前K線收盤價之差和當(dāng)前K線收盤價的比值來定義價格回報函數(shù).
(1)
其中,HHV(X,n)函數(shù)為求n周期內(nèi)X最高值,例如:對日K線來說,HHV(HIGH,5)表示求從當(dāng)前日起未來5日內(nèi)最高價.CLOSE函數(shù)返回當(dāng)前K線收盤價.
據(jù)此,給出價格趨勢變動函數(shù)trend,如公式(2)所示:
(2)
其中,trend代表當(dāng)前的價格變動趨勢,α和β分別表示價格向上變動幅度和向下變動幅度的閾值.
也就是說,我們將金融時間序列的漲跌趨勢分為上漲(類別3)、平穩(wěn)(類別2)、下跌(類別1)3種情況.α和β的值根據(jù)投資者的需求設(shè)定,如果取α=β=0.5,類別3代表未來n個K線交易周期存在投資回報率超過5%以上交易可能,類別2代表未來n個K線交易周期成交回報率均小幅振蕩在-5%~+5%之間,類別1代表未來n個K線交易周期成交價均下跌超過5%.本文將收盤價作為一個交易日的價格,然后形成幾個交易日的價格序列,并根據(jù)趨勢的定義分類標(biāo)注.
(3)
(4)
其中n是參與訓(xùn)練數(shù)據(jù)的長度,m是趨勢分類數(shù).
本文基于金融量化數(shù)據(jù),綜合運用重要點識別和知識圖譜相關(guān)技術(shù)來預(yù)測金融時間序列的漲跌趨勢,本文提出了一種融合深度學(xué)習(xí)和知識圖譜的面向局部特征模式的金融時間序列預(yù)測模型(Fusion Deep Learning and Knowledge Graph Forecasting Model based on Zigzag,ZKG),所提模型的總體框架如圖1所示.
圖1 本文預(yù)測模型的總體框架Fig.1 System framework of our prediction model
在本文的研究中,我們首先對原始時間序列數(shù)據(jù)進(jìn)行挖掘,識別出時間序列數(shù)據(jù)的重要點并對局部拐點趨勢進(jìn)行建模.同時,融合市場交易等信息構(gòu)造金融知識圖譜,從知識圖譜中找出金融標(biāo)的市場和交易數(shù)據(jù)間的潛在特征.采用TransR轉(zhuǎn)換模型將金融知識圖譜中的實體轉(zhuǎn)化為向量表示,通過計算向量間的距離找到相似的金融產(chǎn)品,綜合考慮其變動趨勢,增強(qiáng)模型的語義表征和魯棒性.
在選擇金融時間序列的量化特征時,我們選擇了常用的金融時間序列K線指標(biāo)特征,如Zigzag、MA均線、MACD、KDJ等,豐富模型的特征池,并將其特征信息拼接融合得到綜合特征信息向量.
在獲得金融標(biāo)的及相關(guān)金融產(chǎn)品的特征數(shù)據(jù)后,將這些特征信息作為基于注意力機(jī)制的雙向長短期記憶網(wǎng)絡(luò)模型的輸入,然后進(jìn)行模型參數(shù)學(xué)習(xí)和股價預(yù)測.與傳統(tǒng)的循環(huán)神將網(wǎng)絡(luò)(Recurrent Neural Network,RNN)模型相比,雙向長短期記憶網(wǎng)絡(luò)不僅能夠有效避免長期依賴問題,而且增加了遺忘和保存機(jī)制.此外,采用注意力機(jī)制可根據(jù)時間序列數(shù)據(jù)在不同時刻的狀態(tài)賦予不同的權(quán)重,從而能夠更加關(guān)注關(guān)鍵交易日的信息,獲得更好的預(yù)測結(jié)果.
識別出金融時間序列的重要點可以幫助提取金融時間序列的特征趨勢.如何確定金融時間序列在上升或下降趨勢中交替變化的時間點是否是一個真正的反轉(zhuǎn)點是至關(guān)重要的.
4.2.1 Zigzag指標(biāo)
Zigzag指標(biāo)是金融時間序列數(shù)據(jù)的滯后技術(shù)指標(biāo),它被用來突出時間序列歷史價值變動的顯著高低趨勢,并消除數(shù)據(jù)中的噪音.本文使用了Zigzag技術(shù)指標(biāo)來檢測重要點,并用來確定金融時間序列趨勢特征的技術(shù)指標(biāo)信號.
定義1.(Zigzag指標(biāo)) 給定第i個時間序列Si(k)=〈si(k),si(k+1),…,si(k+n-1)〉,其中n是給定K線時間窗口大小,則Zigzag指標(biāo)重要點序列Z定義如下:
1.Zi(k)=〈zi(k),zi(k+1),…,zi(k+n-1)〉
2.如果si(j)是基于深度(Depth)、偏差(Deviation)和回退(Backstep)3個參數(shù)的Zigzag重要點,則zi(j)=si(j);否則zi(j)=0.其中,k≤j≤k+n-1深度、偏差和回退是Zigzag指標(biāo)識別算法的三個重要自定義參數(shù),用于確定將過濾多少數(shù)據(jù),以及該指標(biāo)將對其已計算的值進(jìn)行調(diào)整的頻率.
定義2.(Zigzag深度)深度決定了K線的Bars數(shù),其中當(dāng)前Bar必須是極值Bar才能被確定為一個Zigzag重要點.對于深度參數(shù),Zigzag重要點需要滿足以下條件:
1.Si(k)=〈si(k),si(k+1),…,si(k+n-1)〉
2.Zi(k)=〈zi(k),zi(k+1),…,zi(k+n-1)〉
3.?zi(j)∈Zi(k),k≤j≤k+n-1:
zi(j)=si(j)→(?si(x)∈
{si(j-Depth)…si(j+Depth)},zi(j)≤si(x))
or(?si(x)∈{si(j-Depth)…si(j+Depth)},zi(j)≥si(x))
定義3.(Zigzag偏差)偏差用來表示在一個的Zigzag高點之后建立新的低值所需的Bars數(shù),以及在一個的Zigzag低點之后建立新的高值所需的Bars數(shù).即,新Bar的值應(yīng)該偏離以前的高或低值至少偏差量.對于偏差參數(shù),Zigzag重要點需要滿足以下條件:
1.Si(k)=〈si(k),si(k+1),…,si(k+n-1)〉
2.Zi(k)=〈zi(k),zi(k+1),…,zi(k+n-1)〉
3.?zi(j)∈Zi(k),k≤j≤k+n-1:
(si(j-1)+deviation≤zi(j)∧zi(j)≥si(j+1)+
deviation)or(si(j-1)-deviation≥zi(j)∧
zi(j)≤si(j+1)-deviation)
定義4.(Zigzag回退)回退是Zigzag指標(biāo)算法在回歸計算中的回退K線Bars的個數(shù).
Zigzag深度參數(shù)是用來確定要形成新的頂部或底部所需的最小Bar數(shù),通常要求是一個整數(shù).當(dāng)這個參數(shù)過小時,可能會要求更頻繁的計算;當(dāng)這個參數(shù)過大時,可能會遺漏部分重要點.另一方面,Zigzag偏差表示重新形成新的底部/頂部和舊的底部/頂部之間的最小所需差異,它同時也描述了頂部和底部點之間的高度.
因此,當(dāng)為Zigzag 指示器選擇參數(shù)時,深度和偏差應(yīng)在合適的區(qū)間選擇,以確保噪聲被過濾的同時又能檢測出時間序列的重大變化.在本文中,這些參數(shù)是通過人工指定和系統(tǒng)優(yōu)化計算確定的.
4.2.2 重要點識別
基于Zigzag的重要點識別算法的主要思想是基于Zigzag指標(biāo),通過優(yōu)化深度、偏差和回退3個參數(shù)識別出滿足某種特定模式的感知重要點序列,在此基礎(chǔ)上確定金融歷史時間序列數(shù)據(jù)中的特征趨勢,并在后續(xù)工作中可以作為金融知識圖譜構(gòu)造的重要來源之一.算法1描述了改進(jìn)的Zigzag算法,該算法的時間復(fù)雜度為O(n×k).其中,n為時間窗口中參與計算時間序列的K線數(shù)量;k為Zigzag指標(biāo)的深度參數(shù)Depth和回退參數(shù)Backstep的最大值.
算法1.Zigzag Point Identification
輸入:Data[]←currency time series,Bars←counting bars
Depth←Zigzag depth,Deviation←Zigzag Deviation,
Backstep←Zigzag Backstep
輸出:Data[].HighMapBuffer,Data[].HighMapBuffer
1.limit←Depth,Data[].HighMapBuffer←0,Data[].HighMapBuffer←0,lasthigh←0,lastlow←0;
/*初始化開始位置,高點,低點*/
2.for(shift=limit;shift<.Bars;shift++){ /*計算高低點*/
3. val= Data[iLowest].LowestPrice;/* iLowest計算Depth區(qū)間內(nèi)的低點*/
4. if(val==lastlow) val←0;
5. else {/*如果該低點是當(dāng)前低點*/
6. lastlow←val;
7. if((Data[shift].LowestPrice-val)>Deviation×PointPrice))val←0;
/*是否比上個低點還低Deviation,不是的話則不進(jìn)行回歸處理*/
8. else {//找到一個新的低點
9. for(back=1;back<=Backstep;back++){
/*回退Backstep個Bar,把比當(dāng)前低點高的紀(jì)錄值給清空*/
10. res← Data[shift-back].LowMapBuffer;
11. if((res!=0)&&(res>val))
Data[shift-back].LowMapBuffer←.0;
12. }
13. }
14. }
15. if Data[shift].LowestPrice==val)
Data[shift].LowMapBuffer←val;
/*將新的低點進(jìn)行記錄*/
16. else Data[shift].LowMapBuffer←0;
17. val← Data[iHighest].HighestPrice;
/*iHighes計算Depth區(qū)間內(nèi)的高點*/
18. if(val==lasthigh)val←0;
19. else {
20. lasthigh←val;
21. if((val-Data[shift].HighestPrice)>.Deviation×PointPrice))val←0;
22. else {
23. for(back=1;back<=Backstep;back++){
24. res←Data[shift-back].HighMapBuffer;
25. if((res!=0)&&(res 26. } 27. } 28. } 29. if(Data[shift].HighestPrice==val) Data[shift].HighMapBuffer←val; 30. else Data[shift].HighMapBuffer←0; 31.} 算法1中拐點高點的選取基于時間序列單根K線的最高價,低點的選取基于單根K線的最低價.這樣選取策略的優(yōu)點是考慮價格序列的多維特征,以適應(yīng)趨勢波動較為平穩(wěn)時的拐點識別. 根據(jù)時間序列數(shù)據(jù)的趨勢信息識別并提取重要轉(zhuǎn)折點,充分挖掘行情數(shù)據(jù)的局部特征模式,達(dá)到壓縮數(shù)據(jù)、減少噪聲影響的目的,算法1的輸出將作為接下來趨勢預(yù)測的輸入特征之一. 傳統(tǒng)的趨勢預(yù)測方法沒有充分考慮行情局部趨勢特征模式和交易行為相關(guān)性分析.為了解決上述問題,本文引入知識圖譜方法并將其應(yīng)用于異質(zhì)信息融合中.圖2描述了基于金融知識圖譜的交易信息與市場信息集成主要業(yè)務(wù)活動. 圖2 交易信息與市場信息集成活動圖Fig.2 Activity chart for integration of transaction information and market information 4.3.1 挖掘交易特征信息 知識圖譜G是根據(jù)現(xiàn)實世界中實體(結(jié)點)、實體間關(guān)系(邊)相互連接起來所形成的一種網(wǎng)絡(luò)結(jié)構(gòu),一般用三元組形式表示不同元素之間的復(fù)雜關(guān)系,可將圖譜中的每一條知識直觀地表示為G=4.3 基于知識圖譜的交易信息與市場信息集成
現(xiàn)貨股票市場和期貨市場往往會存在關(guān)聯(lián),期貨價格(特別是股指期貨)往往引領(lǐng)股票價格上漲與下跌,如隔夜期貨市場相關(guān)品種走勢對于第2天股市相關(guān)板塊影響巨大.以股指期貨滬深300股指期貨合約為例,在第1次迭代中,實體類型包括投資者、合約代碼等,關(guān)系類型包括喜好關(guān)系,盈虧關(guān)系等.在第2次迭代中,我們添加了涉及到的相關(guān)股票所屬公司、行業(yè)、地區(qū)等實體屬性,以及公司之間的持股、關(guān)聯(lián)和隸屬等關(guān)系.
本文采用自頂向下的知識圖譜構(gòu)建方法,選取來自投資者成交單的交易數(shù)據(jù)和相關(guān)基礎(chǔ)數(shù)據(jù)等構(gòu)造金融知識圖譜.對交易和市場數(shù)據(jù)進(jìn)行離散化和語義化處理并形成離散化的三元組,并在此基礎(chǔ)上構(gòu)造出金融時序知識圖譜,挖掘金融實體間的相關(guān)性和潛在特征.
金融時序知識圖譜FinKG為一張有向標(biāo)簽圖FinKGt=(Ts,Te,E,R,τ),其中E為知識圖譜的頂點集,用于表示實體集合;R為知識圖譜的邊集,用于表示事實關(guān)系集合;τ為E×E→R|k的函數(shù),表示知識圖譜中的所有元組;k表示在時間段[Ts,Te]按照時間前后排序的知識圖譜三元組列表中,兩實體之間存在第k次的關(guān)系R.金融知識圖譜概念示例如圖3所示.
圖3 金融知識圖譜概念示例Fig.3 Example of financial knowledge mapping
Trans R對于每個三元組(h,r,t)中每個關(guān)系都定義了一個投影矩陣Mr∈Rk*d,將實體空間中的實體向量通過Mr投影到關(guān)系r的子空間,lhr和lht表示為:
lhr=lhMr
(5)
ltr=ltMr
(6)
對應(yīng)的損失函數(shù)為
fr(h,t)=‖lhr+lr-ltr‖L1∕L2
(7)
采用TransR轉(zhuǎn)換模型將知識圖譜FinKG中選定周期[Ts,Te]內(nèi)的三元組(Ei,R,Ej)嵌入到低維空間內(nèi).對FinKG進(jìn)行圖嵌入操作,則其中每個元素被轉(zhuǎn)化為向量表示.這樣,F(xiàn)inKG中選定周期[Ts,Te]內(nèi)的實體(關(guān)聯(lián)股票等)被嵌入到k維超平面中,關(guān)系被嵌入到d維超平面中.可根據(jù)實際經(jīng)驗選擇k和d.
根據(jù)TransR原理,相似實體之間的k維向量距離較近.我們通過計算第i支股票向量vi和第j支股票向量vj之間的如公式(8)所示的歐氏距離來度量股票之間的相似性.
(8)
我們可以用上面的方法來計算任何一對股票之間的相似性,而相關(guān)的股票是那些與目標(biāo)股票具有top-K相似性的股票.
4.3.2 融合市場特征信息
為了更好地反映金融標(biāo)的(如股票)價格趨勢,本文選取一定周期內(nèi)金融標(biāo)的及其相關(guān)金融產(chǎn)品的的特征指標(biāo)構(gòu)建其市場信息,包括其來自市場行情數(shù)據(jù)(開盤價、最高價、最低價、收盤價、成交量等)及其衍生出的特征數(shù)據(jù)(Zigzag、MA均線、MACD、KDJ等)作為其特征信息.
1)基本數(shù)據(jù)
最基本的數(shù)據(jù)就是OHLC等行情數(shù)據(jù).其他K線技術(shù)指標(biāo)都是根據(jù)公開價、高價、低價、收盤價、成交量等基礎(chǔ)數(shù)據(jù)計算得出的.
Open(t):t時刻的開盤價.
High(t):時間t時的高價格.
Low(t):t時刻的低價格.
Close(t):t時刻的收盤價.
Volume(t):t時的交易量.
2)衍生特征數(shù)據(jù)
除了基本數(shù)據(jù)外,還考慮與某些和收益率最相關(guān)的衍生指標(biāo).除了基本數(shù)據(jù)外,還考慮與某些和收益率最相關(guān)的衍生指標(biāo).常用的衍生數(shù)據(jù)主要有Zigzag、MA均線、MACD、KDJ等數(shù)據(jù).
除了這些金融指標(biāo)數(shù)據(jù)外,其他數(shù)據(jù)也會作為衍生數(shù)據(jù),例如交易時間,會按格式分為年、月、日、周等更加細(xì)分的參數(shù);公司的股票代碼、名稱、行業(yè)地區(qū)等都會作為參數(shù),納入分析模型中.
對于每個標(biāo)的金融產(chǎn)品,都會根據(jù)上述這些指標(biāo)構(gòu)建其特征信息特征向量,我們將第i天第j只相關(guān)股票的市場信息向量表示為mij.然后利用知識圖譜和圖嵌入技術(shù)選擇與目標(biāo)股票相關(guān)的金融產(chǎn)品,并將其特征信息拼接融合得到綜合特征信息向量.如果我們選擇了標(biāo)的股票及與標(biāo)的股票最相關(guān)的k只股票來共同預(yù)測標(biāo)的股票未來走勢,我們將得到第i天的基于相關(guān)股票的市場信息向量M=[mi1,mi2,…,mi(k+1)].將它們共同作為預(yù)測模型的輸入數(shù)據(jù),從而豐富輸入數(shù)據(jù)的語義信息,提高預(yù)測精度.
在預(yù)測模型方面,我們采用了基于注意力的BiLSTM模型,金融標(biāo)的及其相關(guān)金融產(chǎn)品的綜合特征信息向量作為該模型的輸入,預(yù)測模型的輸出是“漲/跌/平穩(wěn)”的趨勢預(yù)測標(biāo)簽.
4.4.1 長短期記憶網(wǎng)絡(luò)
LSTM最初由Hochreiter和Schmidhuber提出,隨后由Alex Graves改進(jìn)的一種專門設(shè)計的RNN體系結(jié)構(gòu),通過門結(jié)構(gòu)控制信息傳遞從而為RNN訓(xùn)練過程中的反向傳播梯度消失和爆炸提供了解決方案[20].然而,經(jīng)典的LSTM網(wǎng)絡(luò)按照時間順序處理過去的信息,而忽略了未來的信息.因此,本文采用雙向長短期記憶網(wǎng)絡(luò)BiLSTM模型提取時間序列中的上下文信息,從而獲取更加穩(wěn)健的特征信息,更準(zhǔn)確地預(yù)測金融時間序列變化趨勢.
BiLSTM將正向狀態(tài)(正時間方向)和反向狀態(tài)(負(fù)時間方向)的兩個隱藏層連接起來,從而能夠從兩個不同的數(shù)據(jù)方向?qū)W習(xí)信息,做出更準(zhǔn)確的預(yù)測.圖4給出了本文使用的BiLSTM網(wǎng)絡(luò)結(jié)構(gòu),將融合了包含重要點特征數(shù)據(jù)的市場時間序列數(shù)據(jù)、交易數(shù)據(jù)和其他基本數(shù)據(jù)的過去t個交易日的市場信息向量M輸入到BiLSTM.
圖4 BiLSTM網(wǎng)絡(luò)架構(gòu)Fig.4 BiLSTM network architecture
單個LSTM單元中有一個單元狀態(tài)和3個門,即細(xì)胞狀態(tài)ct,輸入門it、遺忘門ft和輸出門ot.形式上,LSTM可以表示為:
it=σ(Wixt+Uiht-1+bi)
(9)
ft=σ(Wfxt+Ufht-1+bf)
(10)
ot=σ(Woxt+Uoht-1+bo)
(11)
(12)
(13)
ht=ot⊙tanh(ct)
(14)
其中,xt表示當(dāng)前的輸入向量,ht表示當(dāng)前隱藏層向量.Wi,Wf,Wc,Wo為權(quán)矩陣;bi,bf,bc,bo為偏置參數(shù).⊙是向量內(nèi)積,σ為sigmoid函數(shù).
(15)
其中,Wub為輸出層與前向隱藏層的權(quán)重矩陣,Wub為輸出層與后向隱藏層的權(quán)重矩陣,bu為BiLSTM的偏置參數(shù).
4.4.2 注意力機(jī)制設(shè)計
注意力機(jī)制考慮每個輸入元素的不同權(quán)重系數(shù),可以有效捕捉數(shù)據(jù)的變化特征.由于股價走勢往往與一些特定的時間點有關(guān),比如相近時間節(jié)點或新政策出臺時的信息可能對當(dāng)前時間點的預(yù)測更為重要.為了關(guān)注這些重要時刻,我們在上述結(jié)構(gòu)的基礎(chǔ)上中加入了注意力機(jī)制.
本文將BiLSTM的輸出狀態(tài)[u1,u2,…,ut]作為注意力機(jī)制的輸入,可以計算出t時刻的輸出需要關(guān)注t′時刻隱藏狀態(tài)的程度:
rt=tanh(Wrut+Wr′ut′+br)
(16)
對權(quán)重進(jìn)行歸一化得:
at,t′=sigmoid(Wart,t′+ba)
(17)
最終求得模型的輸出值如下:
(18)
其中,Wr,Wr′,Wa,br,ba均為可訓(xùn)練參數(shù),被隨機(jī)初始化后在訓(xùn)練過程中優(yōu)化.
上述注意力機(jī)制根據(jù)時間序列數(shù)據(jù)在不同時刻的狀態(tài)賦予不同的權(quán)重,從而學(xué)習(xí)不同時刻的信息對時間序列變化預(yù)測所起的關(guān)鍵性作用,使預(yù)測結(jié)果更加準(zhǔn)確.
為了驗證所提模型的有效性,本節(jié)將比較本文所提模型和其他基線模型的預(yù)測效果.
在實驗中,我們使用某程序化交易系統(tǒng)收集的約1萬條客戶的成交單數(shù)據(jù)和相關(guān)基礎(chǔ)數(shù)據(jù)等來構(gòu)建知識圖譜FinKG,并使用股票市場信息來構(gòu)建訓(xùn)練和測試所提出的模型和其他基線模型的數(shù)據(jù)集.數(shù)據(jù)集將2018年以前的數(shù)據(jù)作為訓(xùn)練集,將2018年1月1日~2020年4月9日的數(shù)據(jù)作為測試集.
本文的實驗環(huán)境是Intel Core i5-9400 CPU(2.90GHz)、Nvidia GeForce GTX 1660TI GPU(6G顯存)和8 GB RAM.利用TensorFlow框架完成了深度學(xué)習(xí)實驗.
模型評估使用的指標(biāo)是預(yù)測的準(zhǔn)確率Accuracy與Macro_F1值,計算方式如下所示:
(19)
(20)
(21)
(22)
(23)
其中TP、TN、FP和FN可以通過表1的混淆矩陣得到.
表1 混淆矩陣結(jié)構(gòu)Table 1 Confusion matrix structure
為了驗證所提模型的有效性,本文選取了幾個不同板塊的中國市場代表性股票作為研究案例,對其價格上漲、平穩(wěn)、下跌3種類型趨勢變動進(jìn)行預(yù)測,計算所提模型預(yù)測結(jié)果的準(zhǔn)確率Accuracy和宏F1(Macro_F1)指標(biāo),并與其他基線模型進(jìn)行對比與分析.
為了驗證融合重要點特征對預(yù)測結(jié)果的有效性,本文進(jìn)行了對比試驗.其中,KG代表是僅使用FinKG挖掘相關(guān)金融產(chǎn)品而未融合重要點特征的模型,而ZKG是加入重要點特征后的模型.
為了驗證重要點參數(shù)的選取對實驗結(jié)果的影響,本文采用算法1進(jìn)行Zigzag參數(shù)識別并選取文獻(xiàn)[21]的方法對Zigzag參數(shù)進(jìn)行優(yōu)化,得到表2的優(yōu)化后參數(shù),ZKGn是加入?yún)?shù)優(yōu)化后重要點特征的模型.
表2 Zigzag指標(biāo)優(yōu)化參數(shù)Table 2 Zigzag indicator optimization parameters
現(xiàn)以000002為例,其采用經(jīng)典參數(shù)(5,2,3)和優(yōu)化后參數(shù)(18,5,3)進(jìn)行zigzag指標(biāo)識別部分結(jié)果如圖5所示.
圖5 Zigzag感知重要點識別示例Fig.5 PIP using different Zigzag-related parameters
從表3可以看出,BiLSTM和BiLSTM_att的平均精度相較于LSTM分別提升了2.76%和5.07%,表明加入雙向傳播和注意力機(jī)制可以提高股價趨勢預(yù)測的準(zhǔn)確性.由前文分析知,通過構(gòu)建FinKG并對交易和市場信息進(jìn)行融合可以提高預(yù)測精度,而實驗結(jié)果也驗證了這一點,KG和ZKG方法預(yù)測的準(zhǔn)確率相較于BiLSTM_att均有了明顯的提升.ZKGn的準(zhǔn)確率是所有方法中結(jié)果最好的,說明引入合適重要點特征信息后的ZKG在進(jìn)行金融時間序列趨勢預(yù)測中具有顯著優(yōu)勢.
表3 基于準(zhǔn)確率的各方法預(yù)測結(jié)果Table 3 Prediction results of each method based on accuracy
在多分類預(yù)測中,Macro_F1也是一個重要指標(biāo).F1指標(biāo)是Precision和Recall是綜合度量,對于模型而言要看的是整體的f1值,即Macro_F1,其值越高,說明在各類別中分類的平均效果越好.從表4中,我們可以看出,ZKG和ZKGn方法在Macro_F1指標(biāo)表現(xiàn)顯著好于相較于其他基線算法.值得一提的是,在準(zhǔn)確率指標(biāo)上表現(xiàn)較好的RNN在Macro_F1指標(biāo)上表現(xiàn)最差,說明RNN的預(yù)測結(jié)果大幅偏置到了數(shù)據(jù)集上占比較大的那一類.
表4 基于Macro_F1的各方法預(yù)測結(jié)果Table 4 Prediction results of each method based on mf1-score
綜合上述兩個指標(biāo)可以看出,本文提出的融合深度學(xué)習(xí)和知識圖譜的面向局部特征模式的金融時間序列預(yù)測方面具有優(yōu)秀的預(yù)測性能.
圖6為各方法的準(zhǔn)確率收斂曲線圖.由圖6可知,各方法的改進(jìn)不僅會帶來準(zhǔn)確率的提升,同時也會加快收斂的速度.其中本文提出的ZKG和ZKGn方法具有較快的收斂速度,同時最終準(zhǔn)確率也高于其他方法.表明本文提出的方法能夠有效地預(yù)測金融時間序列的變動趨勢,也證明了模型的可用性.
圖6 各方法的acc曲線Fig.6 Performance of acc curve of each method
如圖7所示為訓(xùn)練的損失函數(shù)隨訓(xùn)練次數(shù)變化的曲線圖,損失函數(shù)是用來評價模型預(yù)測值與真實值之間的預(yù)測誤差的非負(fù)函數(shù).損失函數(shù)越小模型越好,如圖所示可知本文提出模型訓(xùn)練成功.
圖7 各方法的loss曲線Fig.7 Performance of loss curve of each method
圖8所示為000002在2018年~2020年的真實股價走勢和使用ZKGn預(yù)測的趨勢的示例圖,短劃線為實際價格曲線,實線為對應(yīng)的預(yù)測趨勢.價格的漲跌與趨勢的變化直接對應(yīng),當(dāng)股票價格大幅上漲或下跌時,趨勢會發(fā)生顯著變化;當(dāng)股價處于一個相對復(fù)雜的波動時期時,走勢也會隨之波動.事實上,這兩條曲線在上升趨勢和下降趨勢之間的變化是非常同步的,預(yù)測曲線在關(guān)鍵位置可以很好地擬合實際曲線,證明了ZKGn模型能夠有效地預(yù)測股票價格的走勢.事實上,本文所提出的模型在上述4個案例中均取得了良好的預(yù)測結(jié)果,證明了本文所提模型的通用性和穩(wěn)健性.
圖8 000002的預(yù)測結(jié)果和真實結(jié)果對比Fig.8 Comparison between the predicted results and the real results of 000002
實驗結(jié)果表明,基于知識圖譜和圖嵌入技術(shù)集成交易與市場信息可以更好地挖掘投資者和市場的特征,同時,融合Zigzag重要點特征信息有助于提高預(yù)測性能.綜上,本文所提出的模型具有較好的有效性、可用性與穩(wěn)健性.
針對金融時間序列的相關(guān)性強(qiáng)、易變性高的特點,本文提出了一種基于融合深度學(xué)習(xí)和知識圖譜的金融時間序列預(yù)測模型.首先,該模型可以實現(xiàn)對多序列特征變量輸入的處理,通過Zigzag指標(biāo)識別算法識別出重要點特征并對局部特征趨勢進(jìn)行建模.其次,模型可從金融知識圖譜出發(fā)挖掘交易數(shù)據(jù)中豐富的語義信息及相似金融產(chǎn)品間的潛在特征,并使得模型更好地融合重要點等行情特征信息.最后,在真實金融數(shù)據(jù)集上進(jìn)行了全面實驗,實驗結(jié)果表明本文所提出的預(yù)測模型取得了最佳的預(yù)測效果,驗證了該模型在金融時間序列預(yù)測問題上的有效性、可用性與穩(wěn)健性.
本文所提的模型和方法可實現(xiàn)自動化和可視化,不需要人工交互干預(yù),這在實時交易場景下是非常實用的,因為預(yù)測與交易通常是即時進(jìn)行的.文中的技術(shù)指標(biāo)參數(shù)初始選擇目前是通過歷史數(shù)據(jù)挖掘得來的.下一步的工作是實現(xiàn)參數(shù)的自動預(yù)測,以確定哪些參數(shù)可以產(chǎn)生最優(yōu)投資效益.另外,進(jìn)一步豐富融合多源相關(guān)信息[22]的知識圖譜庫,以適應(yīng)更廣泛的領(lǐng)域,并在程序化交易平臺上應(yīng)用所提預(yù)測模型和技術(shù).