李 娜,毛國君,鄧康立
(中央財經(jīng)大學(xué)信息學(xué)院,北京 102206)
隨著我國市場經(jīng)濟的不斷發(fā)展,越來越多的人選擇投資股票。股票投資是一項非常復(fù)雜的活動,其中對股票走勢的正確預(yù)測是最基礎(chǔ)性的工作[1]。然而,由于大多數(shù)股民是散戶,他們獲取上市公司的信息有限,所以利用歷史數(shù)據(jù)進(jìn)行技術(shù)指標(biāo)分析以幫助預(yù)測股票走勢及實現(xiàn)選股是一條可行的途徑。
研究和利用技術(shù)指標(biāo)來實現(xiàn)股票的技術(shù)分析一直得到廣泛關(guān)注,相關(guān)機構(gòu)已經(jīng)研發(fā)許多技術(shù)指標(biāo)及其工具來幫助股民進(jìn)行股票的技術(shù)分析。已經(jīng)出現(xiàn)的股票技術(shù)指標(biāo)保守說也有數(shù)十種[2]。使用較多的有隨機指標(biāo)KDJ、平滑異同平均線指標(biāo)MACD、順勢指標(biāo)CCI、乖離率指標(biāo)BIAS、三重指數(shù)平滑移動平均指標(biāo)TRIX等[3-4]。這些指標(biāo)從某些角度反映了股票市場的走勢或者運行狀態(tài),所以正確使用它們可以在一定程度上為投資者選擇股票提供幫助。例如:最流行的技術(shù)分析手段之一的KDJ指標(biāo)集可以幫助投資者了解某只股票的中短期走勢;MACD指標(biāo)集是大勢趨勢類指標(biāo),可以幫助投資者確定某只股票的買賣時機[5]。
事實上,任何技術(shù)指標(biāo)都有各自的缺陷和局限性。例如:KDJ對軋空單邊式鈍化存在盲區(qū);MACD對震蕩走勢存在盲區(qū)等[6]。因此,有經(jīng)驗的投資者會盡量利用多種類指標(biāo)來尋找合適的買賣時機和價位,比如將KDJ和MACD等指標(biāo)綜合考慮。然而,這樣解決問題的思路存在的缺陷也是顯然的。首先,不同的投資者很難準(zhǔn)確地了解每個技術(shù)指標(biāo)的作用,更談不上能綜合多個指標(biāo)來進(jìn)行決策,所以簡單實用的多維度指標(biāo)分析手段有著很強的吸引力。其次,這些技術(shù)指標(biāo)大多都是只能應(yīng)用于一只股票,缺乏多種相似或者同行業(yè)股票群的比較,不能對投資者提供直接的選股指導(dǎo)。最后,股票交易是在一個復(fù)雜的非線性系統(tǒng)上運行的,目前的股票技術(shù)指標(biāo)基本上是在某個維度上來界定和解決問題,缺乏對數(shù)據(jù)的深層次分析。因此,本文利用數(shù)據(jù)挖掘技術(shù)手段,利用多維度、多股票、多指標(biāo)綜合分析手段,形成對被觀察股票群的定性分析,為投資者選股等提供直接的幫助和指導(dǎo)。
數(shù)據(jù)挖掘是從大量的、不完全的、有噪聲的數(shù)據(jù)中提取潛在有用的知識模式的方法[7-9]。數(shù)據(jù)挖掘提取的知識模式可以表現(xiàn)為概念抽象、規(guī)則表達(dá)以及分類、聚類等歸類規(guī)律描述,是一個由定量到定性轉(zhuǎn)化的過程。因此,相比于技術(shù)指標(biāo)分析,將數(shù)據(jù)挖掘技術(shù)應(yīng)用到股票分析中,可以形成指導(dǎo)性更強的決策性信息。例如,通過數(shù)據(jù)挖掘技術(shù)可以發(fā)現(xiàn)“最有投資價值的股票”、或者“應(yīng)該買入或者賣出的股票”。很顯然,這樣的發(fā)現(xiàn)對于投資者的股票交易要比技術(shù)指標(biāo)的指導(dǎo)意義更直接、更簡單。
股票交易的復(fù)雜性也表現(xiàn)在數(shù)據(jù)的高噪聲、非線性、多維度等特點上[10],這些對于技術(shù)指標(biāo)來說是難以克服的障礙,但是數(shù)據(jù)挖掘技術(shù)本身就立足于解決這樣的問題。比如,可以把簡單線性的單個技術(shù)指標(biāo)作為數(shù)據(jù)挖掘?qū)W習(xí)的一個維度,通過數(shù)據(jù)挖掘方法進(jìn)行多個指標(biāo)的多維度分析,就可以形成更綜合的決策信息[11-12]。事實上,數(shù)據(jù)挖掘技術(shù)對我國股票投資的預(yù)測性和指導(dǎo)意義更突出。我國股票市場還未完全成熟,非技術(shù)因素的大漲大跌現(xiàn)象經(jīng)常出現(xiàn),這必然影響某些技術(shù)指標(biāo)的客觀性,數(shù)據(jù)挖掘技術(shù)可以通過技術(shù)消噪或者多指標(biāo)融合削減這些現(xiàn)象的影響,更容易做出準(zhǔn)確地預(yù)測。
近年來,利用數(shù)據(jù)挖掘技術(shù)來解決股票的技術(shù)分析的研究已經(jīng)得到廣泛關(guān)注。這些研究將不同的數(shù)據(jù)挖掘方法應(yīng)用到股票的技術(shù)分析中,從不同的角度進(jìn)行了有益的嘗試。從依據(jù)的數(shù)據(jù)挖掘方法角度,相關(guān)的研究主要集中在分類、聚類、關(guān)聯(lián)規(guī)則以及神經(jīng)網(wǎng)絡(luò)等方法的應(yīng)用上[13-15]。
在分類方法的應(yīng)用方面,最典型的方法之一來自于王領(lǐng)等[12]。他們利用C4.5決策樹分類算法實現(xiàn)了基于股票指數(shù)的分類預(yù)測。此外,他們也通過改進(jìn)C4.5算法,將股票的技術(shù)指標(biāo)進(jìn)行有效結(jié)合,不僅能夠提高數(shù)據(jù)挖掘的執(zhí)行效率,也能在股票預(yù)測方面得到預(yù)期的挖掘效果。
與分類不同,聚類是一種無指導(dǎo)學(xué)習(xí)策略,不需要事先知道需要的分類數(shù)目及標(biāo)識,通過數(shù)據(jù)的自動學(xué)習(xí)來對數(shù)據(jù)進(jìn)行特征分類。其中一個比較有代表性的工作來自于盧瑞瑞等[11]。他們突破以往學(xué)者的區(qū)間劃分和模糊狀態(tài)劃分的概念,首次將數(shù)據(jù)挖掘的聚類分析和馬爾科夫預(yù)測模型結(jié)合起來應(yīng)用到股價預(yù)測當(dāng)中,預(yù)測準(zhǔn)確率能夠達(dá)到60.32%。
神經(jīng)網(wǎng)絡(luò)是一種大規(guī)模并行的復(fù)雜的非線性動力系統(tǒng),它可表示極其復(fù)雜的非線性模型系統(tǒng)。近年來出現(xiàn)了許多利用神經(jīng)網(wǎng)絡(luò)來進(jìn)行股票分析的方法。吳微等[16]運用BP神經(jīng)網(wǎng)絡(luò)對上證綜指進(jìn)行了預(yù)測,取得了預(yù)期的效果。孫冰潔等[17]提出的基于小波分析的神經(jīng)網(wǎng)絡(luò)股票預(yù)測模型在預(yù)測精度上得到明顯的提高。Mendelssohn和Stein[18]用德國股票市場的3年日數(shù)據(jù)作為訓(xùn)練集、一年的日數(shù)據(jù)作為檢測集建立和測試人工神經(jīng)網(wǎng)絡(luò)模型,研究結(jié)果表明神經(jīng)網(wǎng)絡(luò)產(chǎn)生的24個買入信號中一半是正確的。Yao和Poh[19]利用BP神經(jīng)網(wǎng)絡(luò)對吉隆坡證券交易所的指數(shù)進(jìn)行了預(yù)測,研究結(jié)果表明用以日數(shù)據(jù)進(jìn)行訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型的預(yù)測正確率高于以周數(shù)據(jù)進(jìn)行訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型。
關(guān)聯(lián)規(guī)則是數(shù)據(jù)挖掘的另一典型方法,也出現(xiàn)了一些將關(guān)聯(lián)規(guī)則和股票分析進(jìn)行結(jié)合的研究。例如,鄭朝霞等[20]用Aprorio算法挖掘出隱藏在數(shù)據(jù)背后的有用的規(guī)則,對于輔助投資者進(jìn)行買賣交易具有一定的借鑒價值。
以上研究成果從不同角度、利用不同的數(shù)據(jù)挖掘方法完成了股票分析的嘗試,具有很好的應(yīng)用價值。然而,這些成果主要是建立在研究一只或者幾只股票的運行規(guī)律基礎(chǔ)上的,并且缺乏對現(xiàn)有股票技術(shù)指標(biāo)的綜合分析機制。因此,本文的研究從基礎(chǔ)的股票技術(shù)分析指標(biāo)入手,通過數(shù)據(jù)挖掘技術(shù)進(jìn)行多維度的綜合分析來形成交易決策所需的信息。
本章在闡述k-means算法和KDJ技術(shù)指標(biāo)之后,著重解釋基于k-means算法的KDJ類指標(biāo)深度挖掘的基本原理。
聚類是數(shù)據(jù)挖掘的一個重要任務(wù)之一。給定一個元素集合D,其中每個元素具有n個可觀察屬性,聚類算法就是將D劃分成k個子集(被稱為一個簇),要求每個子集內(nèi)部的元素之間的相似度盡可能高,而不同子集中的元素相異度盡可能高[21-22]。
分類和聚類是數(shù)據(jù)挖掘中形成類別性知識模式的主要方法。分類是示例式學(xué)習(xí),要求分類前明確類別的數(shù)目和標(biāo)識。與分類不同,聚類是觀察式學(xué)習(xí),在聚類前可以不知道或者不給定類別集[9]。因此,對于大容量、有噪音的數(shù)據(jù)來說,聚類挖掘具有效率高、抗噪能力強等優(yōu)點[23-24]。對于股票的深度分析來說,被觀察的交易數(shù)據(jù)可以從多個維度來理解,形成聚類所需的多個屬性,經(jīng)過聚類后得到的簇集則達(dá)到了“物以類聚”的效果,每個簇代表了一類交易走勢或者投資價值等的定性空間。由于聚類算法能夠很好地解決多維度、非線性的深度挖掘問題,因此形成的決策指導(dǎo)信息對于投資者來說可能更有效。
k-means算法是解決聚類問題的一種經(jīng)典算法,具有簡單、快速等特點[25]。特別是它對大數(shù)據(jù)集處理上的較高的可伸縮性和抗噪性,已經(jīng)得到了廣泛的應(yīng)用。k-means聚類算法的基本思想是:以空間中k個點為中心,將和它們相似的點聚集成簇;通過反復(fù)迭代直到k個簇達(dá)到穩(wěn)定狀態(tài)[21]。其中有3個關(guān)鍵問題:1)點與點、點與簇以及簇與簇的相似度計算;2)簇的中心點計算;3)迭代結(jié)束條件設(shè)置。
給定n個屬性的2個點x=(x1,x2,…,xn)和y=(y1,y2,…,yn),x和y相似度被定義為它們之間的距離倒數(shù),其中距離最常用的是使用歐氏距離公式,即:
(1)
給定1個簇A,假設(shè)它的中心點是a=(a1,a2,…,an),一個點x=(x1,x2,…,xn)和簇A的相似度可以用x到這個簇的中心的距離來計算,即:
(2)
給定2個簇A和B,假設(shè)它的中心點是a=(a1,a2,…,an)和b=(b1,b2,…,bn),2個簇A和B的相似度可以用這2個簇的中心的距離來計算,即:
(3)
(4)
k-means算法迭代結(jié)束的判定條件主要是判定所有簇的簇內(nèi)元素的相似度足夠高。給定已經(jīng)得到的簇集{C1,C2,…,Ck},它們的中心點分別是c1,c2,…,ck,則可以通過計算收斂判別式E來測試迭代是否結(jié)束,即:
(5)
基于以上計算方法,k-means算法可以簡單描述如下:
算法k-means
輸入:簇的數(shù)目k;n個對象的數(shù)據(jù)庫D;判別式閾值ε。
輸出:k個簇。
1)從D中隨機選擇k個元素作為k個簇中心點;
由圖2可知,科技進(jìn)步對安徽省農(nóng)業(yè)經(jīng)濟的貢獻(xiàn)率較高,但是它并不是連年上升的,這說明農(nóng)業(yè)科技對經(jīng)濟增長的貢獻(xiàn)作用有滯后性、長期性和周期性,科學(xué)技術(shù)本身的發(fā)展需要有一個知識儲備的過程,科技對農(nóng)業(yè)經(jīng)濟增長的貢獻(xiàn)也有一個積累的過程[6]。要使農(nóng)業(yè)技術(shù)進(jìn)步水平不斷提高,抑制不利于農(nóng)業(yè)經(jīng)濟增長因素的影響,延緩規(guī)模報酬遞減規(guī)律發(fā)生作用,就要持續(xù)穩(wěn)定地加快農(nóng)業(yè)科學(xué)技術(shù)的研究和推廣應(yīng)用。
2)設(shè)置一個足夠大的初始收斂判別式E0;
3)對D中的每個點,均把它分配到和它相似度最高的簇中;
4)對每個簇,計算它的簇中心;
5)計算收斂判別式E;
6)當(dāng)|E-E0|<ε時,結(jié)束;否則,E0賦值成E的值轉(zhuǎn)到第3步繼續(xù)計算。
KDJ是由K值、D值與J值這3個指標(biāo)組成的一個指標(biāo)集。最早起源于期貨市場,由喬治·萊恩(George Lane)首創(chuàng),現(xiàn)在已經(jīng)是股票投資最常用的技術(shù)指標(biāo)集之一[26]。KDJ指標(biāo)集主要是通過一個特定周期內(nèi)出現(xiàn)過的最低價、最高價及收盤價形成對該周期股票價格走勢的估計判斷。
KDJ可以通過設(shè)置不同時長的時間段來刻畫短、中期市場的波動規(guī)律[26]。時長可以設(shè)置為分鐘、日、周等級別。以9日為周期為例,對應(yīng)的K、D和J值計算如下:
RSV=(C-L9)÷(H9-L9)×100
(6)
K=2/3×K前一日+1/3×RSV當(dāng)日
(7)
D=2/3×D前一日+1/3×K當(dāng)日
(8)
J=3×D-2×K
(9)
從技術(shù)分析角度,KDJ指標(biāo)可以幫助投資者尋找合適的買賣股票及時機[1]。然而,這些技術(shù)指標(biāo)的使用需要高超的技巧,普通股民很難正確地應(yīng)用它們。本質(zhì)上說,KDJ只是一個時間段中數(shù)據(jù)流動趨勢的線性計算,沒有形成決策性的指導(dǎo)信息,需要使用者進(jìn)一步分析研判。因此,探討進(jìn)一步的深度分析機制有其理論和應(yīng)用價值。
既然KDJ指標(biāo)集是由K值、D值與J值組合而成,那么一個簡單的辦法就是利用這3個不同屬性值來對被觀察股票進(jìn)行聚類。但是這3個屬性值在顯示股票特性時所占權(quán)重不同,所以需要給每一個屬性值分別添加一個平滑因子αK、αD、αJ。事實上,平滑因子是股票分析的一個重要因素,是另一個值得進(jìn)一步探討的問題。本文實驗中平滑因子的設(shè)定是通過實驗獲得的,首先假設(shè)平滑因子為一位小數(shù),通過帶標(biāo)簽的歷史數(shù)據(jù)進(jìn)行學(xué)習(xí),分別給K、D、J從0.1~0.9賦值,每個指標(biāo)平滑因子有9種情況,進(jìn)行組合排列,經(jīng)過729次迭代之后得出每種情況下的準(zhǔn)確率,選取準(zhǔn)確率最高的組合。最后采用的K、D與J值對應(yīng)的平滑因子分別為0.6、0.3和0.1。
基于k-means和KDJ技術(shù)指標(biāo)集,通過平滑因子等方法,本文設(shè)計了如下的模型KDJ-k-means。
模型KDJ-k-means
步驟1計算被觀察股票數(shù)據(jù)集的所有股票的K值、D值與J值,得到三維數(shù)據(jù)庫D;
步驟2使用算法k-means聚類數(shù)據(jù)庫D,得到簇集{Ci};
步驟3對每個簇集Ci,給出每個簇的投資價值評價;
步驟4應(yīng)用聚類和分析結(jié)果,形成選股、交易時機等決策信息。
本章利用上證A股數(shù)據(jù)進(jìn)行一系列實驗來驗證本文提出模型的有效性。主要工作包括:1)在實驗集上對KDJ-k-means模型和KDJ指標(biāo)分析結(jié)果進(jìn)行對比性分析;2)針對不同k值進(jìn)行模型優(yōu)化。
實驗數(shù)據(jù)來自東方財富網(wǎng),實驗選取了上證A股1364只股票作為挖掘?qū)ο?。?017年11月3日作為挖掘日期,使用之前數(shù)據(jù)進(jìn)行模型訓(xùn)練;以2017年11月6日數(shù)據(jù)作為測試數(shù)據(jù)形成精度等測試結(jié)果。
表1給出了對部分采集的上證A股數(shù)據(jù)的隨機指標(biāo)KDJ值的計算結(jié)果(2017年11月3日時間點)。
表1 部分股票KDJ指標(biāo)值示意
利用KDJ-k-means模型進(jìn)行實驗,當(dāng)k為3時與普通的K、D、J值預(yù)測效率進(jìn)行比較,得出結(jié)果;然后對k取不同的值進(jìn)行實驗,得出最優(yōu)的k值。
3.2.1 KDJ-k-means模型實驗
在1364只股票的交易數(shù)據(jù)上,在計算對應(yīng)的KDJ指標(biāo)值后實施KDJ-k-means模型,圖1給出了聚類后的結(jié)果(k=3,不同圖案各代表一個簇)。
圖1 k為3時上證A股聚類分析結(jié)果
為了進(jìn)一步驗證本文模型的有效性,采集了這1364只股票在11月6日的收盤價,通過和本文模型預(yù)測的簇特征進(jìn)行比對,驗證本文模型的預(yù)測精度。對11月6日得到的數(shù)據(jù)提取漲跌信息,利用之前學(xué)習(xí)的聚類結(jié)果,形成了表2的實驗結(jié)果。
表2 部分?jǐn)?shù)據(jù)驗證結(jié)果
本文KDJ綜合分析方法與K、D、J單獨技術(shù)指標(biāo)分析實驗對比結(jié)果如表3所示。
表3 指標(biāo)單獨分析與聚類分析結(jié)果對比
從表3可以看出,本文提出的KDJ聚類分析方法的準(zhǔn)確率均高于這3個指標(biāo)單獨分析方法。
3.2.2 不同k值實驗比較
KDJ-k-means模型的k取值不同,得到的準(zhǔn)確率不同。由于k取值太小會失去預(yù)測的意義,取值太大又會使決策信息不明確,所以k存在一個優(yōu)化問題。很顯然,對于不同的應(yīng)用k值需要通過反復(fù)實驗來進(jìn)行確定。圖2~圖6分別是k為4、5、6、7、8時對上面的1364只股票的聚類結(jié)果。
圖2 k為4時上證A股聚類分析結(jié)果
圖3 k為5時上證A股聚類分析結(jié)果
圖4 k為6時上證A股聚類分析結(jié)果
圖5 k為7時上證A股聚類分析結(jié)果
圖6 k為8時上證A股聚類分析結(jié)果
同樣,利用2017年11月6日數(shù)據(jù)作為測試集,可以得到不同k值下的預(yù)測精度,如圖7所示。
圖7 預(yù)測效率對比圖
圖7說明,對于本文觀察的股票數(shù)據(jù)而言,k=7是一個較優(yōu)化的解決方案。
KDJ-k-means模型是在KDJ指標(biāo)集的基礎(chǔ)上利用數(shù)據(jù)挖掘技術(shù)的一個解決方案,對于股票數(shù)據(jù)的深入分析提供了一個可以借鑒的思想和方法。主要貢獻(xiàn)歸納為:1)所提出的模型雖然只針對KDJ指標(biāo)集進(jìn)行了分析和實驗,但對于其他的股票技術(shù)分析指標(biāo)的綜合分析也具有很強的可借鑒性。2)相比于神經(jīng)網(wǎng)絡(luò)等方法,利用聚類挖掘技術(shù)進(jìn)行股票技術(shù)分析方法研究較少,但是本文研究說明聚類挖掘應(yīng)用到股票分析中不僅是可行的,而且具有直觀、易用的顯著特點。
下一步的研究工作主要是嘗試?yán)枚喾N股票的技術(shù)指標(biāo)、多種數(shù)據(jù)挖掘算法進(jìn)行相關(guān)的研究和實驗,擴展KDJ-k-means模型及其使用范圍。這樣的擴展性研究包括綜合使用KDJ、MACD及BIAS等技術(shù)指標(biāo)集,聯(lián)合使用聚類、分類、關(guān)聯(lián)規(guī)則等多種數(shù)據(jù)挖掘方法等。