田紅麗,楊瑩瑩,閆會強
1.河北工業(yè)大學 人工智能與數(shù)據(jù)科學學院,天津 300401
2.河北工業(yè)大學 經(jīng)濟管理學院,天津 300401
國民經(jīng)濟發(fā)展迅速,金融投資重要性凸顯,股票預(yù)測既是研究熱點,亦是研究難點。人工智能在股票市場的應(yīng)用主要集中于股價預(yù)測與拐點預(yù)測,股票價格受多方面因素影響,預(yù)測具體的價格存在困難[1]。股價拐點是反映股票價格趨勢變化的“信號”,可以使投資者快速發(fā)覺股票的變化趨勢。由于交易成本的存在,日內(nèi)交易基本無法獲利,對于將股票作為長線投資的股民來說,找到股票的買賣點,高拋低吸,以獲得最大收益至關(guān)重要。股市拐點預(yù)測可以為投資者提供一定的買賣信號,因此股價拐點預(yù)測在股票投資之中存在重要意義[2]。
在證券市場之中,大數(shù)據(jù)成為信息的主要存儲方式,海量數(shù)據(jù)中蘊含著常規(guī)方法無法提取的特征。從線性模型到非線性模型,研究者們嘗試了多種方式對股票市場進行挖掘與預(yù)測,如支持向量機[3]、卷積神經(jīng)網(wǎng)絡(luò)[4-5]、灰色模型[6]和長短期記憶網(wǎng)絡(luò)[7-8]等。鄭興等將加權(quán)支持向量機應(yīng)用于股票反轉(zhuǎn)點的預(yù)測[9]。程一梅將SMOTE 過采樣算法與支持向量機相結(jié)合,平衡數(shù)據(jù)集中不同類別樣本的差異,以提升拐點預(yù)測的準確率[10]。Chen等將主成分分析算法與加權(quán)支持向量機相結(jié)合對股市拐點進行預(yù)測[11]。Luo等結(jié)合分段線性化和加權(quán)支持向量機對股票市場的交易信號進行預(yù)測[12]。藺曉運用卷積神經(jīng)網(wǎng)絡(luò),與全連接的多層感知器相結(jié)合對股市拐點進行預(yù)測[13]。石陸魁等將最小方差算法與支持向量機相結(jié)合,對股市拐點進行預(yù)測[14]。對于上述模型,均未將股票的長短期趨勢進行充分利用,在拐點標注的過程中未考慮無法為投資者帶來收益的偽分型,未從投資者所獲收益的角度出發(fā),對預(yù)測結(jié)果的實際收益率進行探討,模型的實際收益模糊。
本文結(jié)合纏論和深度學習對股票價格的拐點進行預(yù)測。為提升模型的實際收益率,拐點標注過程中基于纏論刪除股市中存在的偽分型,并與股市的長短期趨勢相結(jié)合作為拐點預(yù)測模型的輸入特征。由于拐點數(shù)據(jù)集是典型的不平衡數(shù)據(jù)集,提出一種結(jié)合SMOTE 過采樣算法[15]、引入焦點損失函數(shù)的卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network with focal loss,F(xiàn)LCN)與加權(quán)支持向量機(weight support vector machine,WSVM)的混合模型,以緩解數(shù)據(jù)類別不平衡帶來的分類困難問題,提升模型性能,為投資者提供投資信號,提高收益率。
技術(shù)指標是股票市場中判斷股價漲跌趨勢的有力武器。近年來,諸多學者將技術(shù)指標與股票基本數(shù)據(jù)相結(jié)合對股票價格進行預(yù)測,技術(shù)指標的選擇主要集中于MACD、KDJ、OBV、RSI 等。眾多技術(shù)指標在股票市場具有不同的功能:MACD 利用快、慢速移動平均線之間的聚合與分離的狀況,對買賣的時機進行判斷;KDJ 適用于分辨?zhèn)€股超買超賣的情況;BIAS 對移動平均線的使用功能進行具體量化。由此可見,不同的技術(shù)指標從不同角度對股票進行解析。本文對股票市場進行綜合考慮,采用MACD、OBV、KDJ、BIAS、MA5 等技術(shù)指標作為輸入特征。其中MACD與MA5指標代表股票的趨勢特征;KDJ、BIAS 與RSI 代表股票的震蕩特征;OBV代表股票的能量特征。
纏論作為一種原理型的技術(shù)分析理論,試圖采用數(shù)理學與完全分類的方式來解析股票價格與走勢的變化規(guī)律。K 線圖將股票在特定周期內(nèi)的開盤價、收盤價、最高價和最低價等漲跌變化狀況以圖形的方式表現(xiàn)出來。在K線圖中,該理論對走勢采用完全分類的畫線分析方式,并提出交易市場“走勢終完美”的哲學思想。本文根據(jù)纏論對周K線與日K線的拐點進行標注。
1.2.1 分型
拐點蘊含在分型之中,若要獲取拐點,首先需要提取出股票K線中存在的分型。
頂分型:相鄰三根K 線之中,中間一根K 線的最高價,是三根K 線中最高價的最大值,并且其最低價是三根K線中最低價的最大值,此三根K線的組成則構(gòu)成頂分型,如圖1(a)所示。
底分型:相鄰三根K 線之中,中間一根K 線的最高價,是三根K 線中最高價的最小值,并且其最低價是三根K線中最低價的最小值,此三根K線的組成則構(gòu)成底分型,如圖1(b)所示。
圖1 頂分型與底分型示意圖Fig.1 Schematic diagram of top typing and bottom typing
1.2.2 包含關(guān)系
分型判斷過程中,可通過K線信息直接獲取的分型稱為直接型分型;而隱藏在K線信息之中的分型稱為猶豫型分型。若需要獲取猶豫型分型,需要先對其進行包含關(guān)系處理。包含關(guān)系是股價K 線圖中一種常見的存在形式,若不對其進行處理,將極有可能錯失蘊含著重要拐點的分型,影響實驗結(jié)果。相鄰兩根K 線用K1與K2表示,open_1、open_2、close_1、close_2、high_1、high_2、low_1、low_2 分別代表兩根K 線的開盤價、收盤價、最高價與最低價。包含關(guān)系處理如下。
上升趨勢中:
(1)若high_1<high_2且low_1>low_2,則將low_1的值賦給low_2,使low_2=low_1,其他數(shù)據(jù)不改變。
(2)若high_1>high_2且low_1<low_2,則將high_1的值賦給high_2,使high_2=high_1,其他數(shù)據(jù)不改變。
下降趨勢中:
(1)若high_1>high_2且low_1<low_2,則將low_1的值賦給low_2,使low_2=low_1,其他數(shù)據(jù)不改變。
(2)若high_1<high_2且low_1>low_2,則將high_1的值賦給high_2,使high_2=high_1,其他數(shù)據(jù)不改變。
1.2.3 筆
兩個相鄰的頂?shù)追中涂梢詷?gòu)成一筆。纏論理論下的一筆至少包括7根K線。筆的組成包括頂分型、底分型與至少一根既不屬于頂分型也不屬于底分型的K線。如圖2(a)所示,由頂分型與底分型構(gòu)成的筆稱為向下筆;反之,如圖2(b)所示,由底分型與頂分型構(gòu)成的筆稱為向上筆。
圖2 向下筆與向上筆示意圖Fig.2 Schematic diagram of pen down and pen up
1.2.4 偽分型處理
纏論理論要求:相鄰分型間不可共用同一根K 線;股票的頂分型與底分型交替存在;一筆由至少7根K線組成;頂分型的頂應(yīng)高于相鄰底分型的底。若不符合任意一項要求,則表示存在偽分型。偽分型即其K線結(jié)構(gòu)符合分型特征,卻蘊含著無法為投資者帶來收益的假拐點。在所有分型中,頂分型包含著向下拐點;底分型包含著向上拐點;而偽分型并不包含拐點。因此,在進行拐點標注的過程中,去除不包含拐點的偽分型。
對于股票市場,長周期波動大,作為買賣點不夠精確,需要短周期進行配合。本文的長短期趨勢信息通過不同頻率的K 線信息進行獲取。高低頻K 線信息分別選擇股票價格的日K 線信息與周K 線信息。以短周期為基準,將長周期趨勢信號融入短周期之中。根據(jù)纏論理論對分型與筆的概念要求,可以得出前一個分型出現(xiàn)后,下一分型與前一分型相反,且距離下一個分型出現(xiàn)至少存在一根K線,即距離下一個拐點出現(xiàn)至少兩根K線。如圖3 所示,對周K 線進行解析,陰影K 線代表不可能形成拐點的區(qū)域,則前一個分型出現(xiàn)后的二周內(nèi)不會出現(xiàn)大周期上的趨勢反轉(zhuǎn);虛線框部分的K線表示可能形成拐點的區(qū)域。長短期趨勢結(jié)合即將周趨勢以信號的方式加入到短周期數(shù)據(jù)集之中。如周K 線的向下筆,頂分型出現(xiàn)后的兩周間,K線將呈現(xiàn)下降趨勢,不構(gòu)成拐點,因此在該區(qū)間的日數(shù)據(jù)集中以(-1,-1)的信號進行標注。兩周之后的每一周均存在構(gòu)成向上拐點的可能性,即以(1,0)的信號標于日數(shù)據(jù)集之中,直至下一個底分型出現(xiàn);向上筆,即底分型出現(xiàn)后的兩周,周趨勢以信號(1,1)標注于日數(shù)據(jù)集,兩周之后,以(1,0)標注于日數(shù)據(jù)集,直至下一頂分型出現(xiàn)。
圖3 趨勢結(jié)合信號圖Fig.3 Trends combined with signal graphs
SMOTE-FLCN-WSVM 股價拐點預(yù)測模型由合成少數(shù)類過采樣技術(shù)(synthetic minority oversampling technique,SMOTE)、引入Focal Loss 的卷積神經(jīng)網(wǎng)絡(luò)(FLCN)與加權(quán)支持向量機(WSVM)三部分組成。拐點預(yù)測模型如圖4所示。
圖4 拐點預(yù)測模型Fig.4 Turning point prediction model
股票拐點數(shù)據(jù)集是典型的不平衡數(shù)據(jù)集,其拐點樣本在所有數(shù)據(jù)中占比不足20%,因此在神經(jīng)網(wǎng)絡(luò)的學習中,容易對拐點樣本造成特征學習不足的現(xiàn)象,分類結(jié)果則偏向于多數(shù)類別。SMOTE算法[10]的基本思想是對少數(shù)類樣本進行分析和模擬,通過KNN 近鄰算法對每一個少數(shù)類樣本x隨機選取一個少數(shù)類樣本y,通過式(1)產(chǎn)生新樣本[16]。
其中,x代表原始數(shù)據(jù)集的一個少數(shù)類樣本;rand( 0,1)代表0到1之間的隨機數(shù);y代表以x為中心附近隨機選取的K近鄰少數(shù)類樣本。
FLCN 模型為引入Focal Loss 的卷積神經(jīng)網(wǎng)絡(luò)模型。FLCN網(wǎng)絡(luò)結(jié)構(gòu)如圖5。
圖5 FLCN網(wǎng)絡(luò)結(jié)構(gòu)Fig.5 FLCN network structure
卷積神經(jīng)網(wǎng)絡(luò)具有特征提取能力?;窘Y(jié)構(gòu)包括輸入層、卷積層(convolutional layer)、池化層(pooling layer,也稱為取樣層)、全連接層和輸出層。網(wǎng)絡(luò)中卷積層的作用是對輸入數(shù)據(jù)進行特征提取,如式(2)所示;數(shù)據(jù)經(jīng)過卷積層的特征提取后進入池化層,池化層的作用是數(shù)據(jù)特征降維。全連接層整合卷積層或者池化層中具有類別區(qū)分性的局部信息。該層神經(jīng)元的激勵函數(shù)一般采用ReLU激活函數(shù)。
其中,x代表輸入特征向量;w代表卷積核;k代表卷積核尺寸;*代表卷積運算;b為偏置項;f()· 代表激活函數(shù);ci代表經(jīng)過卷積層的輸出特征向量。
在平衡數(shù)據(jù)集的多分類任務(wù)中,交叉熵損失函數(shù)(Cross Entropy Loss)為最常用的損失計算函數(shù),它的表達式:
其中,p代表模型輸出的類別概率;y代表類別標簽。
焦點損失函數(shù)(Facal Loss)[17]于2017 年被Kaiming提出,首次提出被應(yīng)用于解決one-stage 目標檢測中正負樣本比例嚴重失衡問題。在不平衡數(shù)據(jù)集分類中,F(xiàn)ocal Loss 函數(shù)通過對少數(shù)類樣本內(nèi)部加權(quán)以緩解類別不平衡問題。Focal Loss 函數(shù)在Cross Entropy Loss函數(shù)的基礎(chǔ)上增加兩個參數(shù)αt和γ。其中αt為平衡因子,用來處理類別數(shù)量的不均衡問題,若某一個類別的樣本數(shù)量占總數(shù)量的比值較高,則適當降低該類別α值的大?。环粗?,適當增大。γ為懲罰項,使損失函數(shù)專注于難分類的樣本。Focal Loss函數(shù)的表達式:
其中,p代表模型輸出的類別概率;α為平衡因子;γ代表難易樣本權(quán)重;y為樣本類別標簽。
支持向量機(support vector machine,SVM)的基本思想為在特征空間中尋找可以將不同類別樣本分開的超平面,并使得不同樣本間距離最大。假設(shè)樣本數(shù)據(jù)集,則支持向量機的初始目標函數(shù)表達式:
其中,C代表懲罰參數(shù);ξi代表松弛變量;w代表超平面w·xi+b=0 的法向量;b代表超平面的偏置項;xi與yi代表數(shù)據(jù)集樣本。對上式進行拉格朗日求解,可得其對偶公式:
相應(yīng)的高維空間的決策函數(shù)公式:
對于不平衡數(shù)據(jù)集,少數(shù)樣本類別對分類貢獻較小,普通的支持向量機并不適用于該類問題。為平衡各類別的貢獻率,引入類別權(quán)重參數(shù)(class weight)增大少數(shù)類樣本權(quán)重,同時減小多數(shù)類樣本權(quán)重,則初始目標函數(shù)的改變公式:
其中,σi代表類別權(quán)重,其余與式(5)相同。則該公式的對偶公式:
相應(yīng)的分類決策函數(shù)公式:
支持向量機將線性不可分數(shù)據(jù)映射到高維特征空間的工具為核函數(shù),本研究選擇徑向基核函數(shù)作為樣本數(shù)據(jù)向高維的映射工具。RBF核函數(shù)公式:
其中,(x,y)代表樣本數(shù)據(jù);K(x,y)代表映射后的高維樣本數(shù)據(jù)。
支持向量機運算過程中存在兩個重要的參數(shù)C和γ,實驗采用網(wǎng)格尋優(yōu)方法對兩參數(shù)進行調(diào)整,尋求最優(yōu)參數(shù)。懲罰因子C的范圍大小設(shè)置為(1,3),以0.2為步長進行尋優(yōu);γ的范圍設(shè)置為(1,2),同樣以0.2 為步長進行參數(shù)尋優(yōu)。
為提升拐點預(yù)測模型的性能,提出了SMOTE-FLCNWSVM混合模型。近年的研究中,SMOTE算法被廣泛應(yīng)用于不平衡數(shù)據(jù)集的處理,但該算法合成的數(shù)據(jù)為模擬數(shù)據(jù),無法完全替代真實數(shù)據(jù),因此本文在特征提取模塊引入Focal Loss 函數(shù),并與SMOTE 算法結(jié)合以解決不平衡數(shù)據(jù)集特征提取困難的問題。數(shù)據(jù)集進行拐點標注后,對非拐點樣本、向上拐點樣本和向下拐點樣本以{x1:x2:x3} (x1>x2=x3)的比例進行SMOTE 運算,一定程度上緩解拐點與非拐點比例嚴重失衡的問題。經(jīng)過SMOTE 算法的拐點數(shù)據(jù)集依然存在不平衡,特征提取過程使用FLCN模型,以{x3:x2:x1} 的比例調(diào)節(jié)不同類別損失函數(shù)的權(quán)重系數(shù),增大少數(shù)類別對損失函數(shù)的貢獻率。該方式不僅改善了單獨使用SMOTE算法造成合成數(shù)據(jù)過多致使數(shù)據(jù)集缺乏真實性的問題,也緩解了數(shù)據(jù)樣本極度不平衡造成預(yù)測結(jié)果偏斜嚴重的問題。FLCN模型提取的的特征作為輸入進入WSVM模型。
本文在Windows10操作系統(tǒng)的計算機上進行,仿真平臺選取Pycharm,模型搭建框架為Keras,編程語言為Python,編程所用數(shù)據(jù)包包括tushare、sklearn、pandas、numpy、talib、matplotlib等。
本文選取的數(shù)據(jù)集輸入特征包含開盤價(open)、收盤價(close)、最高價(high)、最低價(low)、成交量(volume)、MACD、KDJ 等。不同數(shù)據(jù)間存在量級差異,因此本文對數(shù)據(jù)進行歸一化處理。為驗證該研究模型的有效性,在實驗對象的選擇中,對所選對象的交易數(shù)據(jù)有一定的要求,選擇每日的成交額均大于一億的股票,若股票的成交額小于一億,則在投資者進行投資的過程中,投資金額在當日成交額中所占比例無法忽略不計,投資者投入金額將推動股價以相對其價值以上的價格進行估值,造成該支股票短期急速增長,市盈利攀升,價格與其價值背離,而產(chǎn)生股市泡沫現(xiàn)象。相對而言,模型適用于對交易額影響較小的中小型投資者。為驗證模型的實用價值,且可與基金業(yè)績形成對比,實驗數(shù)據(jù)選取股票1(滬深300綜合指數(shù))、股票2(中證500指數(shù))以及股票3(上證50指數(shù))三支股指作為實驗對象。
首先,依據(jù)纏論思想對股價拐點信息進行標注。三支股指的原始K 線數(shù)據(jù)與拐點標注如圖6~圖8 所示。由于篇幅原因,拐點標注圖示僅展示2017年1月至2019年12月3年的數(shù)據(jù)。
圖6 滬深300指數(shù)拐點標注示意圖Fig.6 Shanghai and Shenzhen 300 index turning point
圖8 上證50指數(shù)拐點標注示意圖Fig.8 Shanghai 50 index turning point
依據(jù)圖6、圖7可以看出,依據(jù)纏論理論可以較準確地提取出股指價格的拐點,因此基于纏論理論對股價的拐點進行標注是有效的。
圖7 中證500指數(shù)拐點標注示意圖Fig.7 CSI 500 index turning point
依據(jù)本文提出的拐點預(yù)測模型,將預(yù)測出的向上拐點與向下拐點分別作為股票市場的買點與賣點,進行一年期與三年期的模擬交易。從實用性角度,以收益率作為評價標準,對模型的實用性進行評判,股票收益率(R)的計算公式如下:
本文選取三支股指2006年1月4日至2019年12月31日共13年的歷史數(shù)據(jù)作為實驗數(shù)據(jù)。集合的劃分過程中,短期收益選取2019 年1 月4 日至2019 年12 月31日共1 年數(shù)據(jù)作為驗證集;長期收益選取2017 年1 月4日至2019年12月31日共3年數(shù)據(jù)作為驗證集。從絕對收益率與相對收益率兩個角度對收益結(jié)果進行討論。絕對收益率指的是其凈值的增長率,相對收益率為其絕對收益率與同時期基金業(yè)績漲跌幅的差值?;鸺醇斜姸嘀行⌒屯顿Y者的資金,委托專業(yè)投資人進行量化選股投資。本文的相對收益的基準選擇各范圍基金業(yè)績的中位數(shù),原因是中位數(shù)代表整個基金業(yè)績的平均水平。若個人投資者可通過模型獲取基金業(yè)績平均水平的收益且可免除基金手續(xù)費,代表該模型具有實用價值。其中,相對收益率1代表與同類基金業(yè)績的中位數(shù)相比較;相對收益率2為與全部股票型基金業(yè)績的中位數(shù)相比較;相對收益率3為與全部基金業(yè)績的中位數(shù)相比較。
根據(jù)表1 結(jié)果可以得到,無論短期交易或長期交易,三支股指的絕對收益均為正,代表依據(jù)該模型進行投資,均可獲利。以基金業(yè)績?yōu)榛鶞剩瑑H股票3 的相對收益率2為負,其余均為正,表示在絕大多數(shù)的情況下,該模型的收益率高于基金業(yè)績平均水平。證明了本文模型的實際應(yīng)用價值。
表1 股票收益率Table 1 Stock return
為驗證本文模型的性能,按一年期模擬交易的數(shù)據(jù)進行數(shù)據(jù)集劃分。選取WSVM[9]、SMOTE-SVM[10]與結(jié)合主成分分析的加權(quán)支持向量機(PCA-WSVM)[11]三類模型與本文模型進行對比實驗。選取準確率(Accuracy)和收益率對模型性能進行評估。準確率計算公式如下:
其中,TP代表正確的劃分為正例的個數(shù);FP代表正確的劃分為負例的個數(shù);P代表被劃分為正例的個數(shù);N代表被劃分為負例的個數(shù)。
根據(jù)表2可知,本文模型的準確率與收益率優(yōu)于對比實驗?zāi)P停俅巫C明了本文模型的有效性與實用性。
表2 模型效果比較Table 2 Model effect comparison
本文基于纏論理論,將卷積神經(jīng)網(wǎng)絡(luò)與支持向量機進行改進與結(jié)合,提出一種結(jié)合纏論和深度學習的SMOTE-FLCN-WSVM股價拐點預(yù)測模型。首先,利用纏論對股價拐點進行標注,并將股價的長短期趨勢進行融合。針對類別樣本失衡問題,利用SMOTE 過采樣算法對數(shù)據(jù)集進行預(yù)處理。之后,采用引入Focal Loss的卷積神經(jīng)網(wǎng)絡(luò)(FLCN)進行特征提取,并使用加入類別權(quán)重參數(shù)的支持向量機進行分類。對三支股指進行預(yù)測,實驗結(jié)果從絕對收益與相對收益兩個角度,證明了模型可為投資者帶來收益,具有實際應(yīng)用價值。經(jīng)過對比實驗,再次證明了模型的有效性與實用性。此模型針對中小投資者,股票選擇也局限于日營業(yè)額高于一億的股票。下一步的工作,希望通過增加多方面信息以使模型適用于更廣泛類型的股票。