王 領(lǐng),胡 揚(yáng)
(四川大學(xué)計(jì)算機(jī)學(xué)院,四川 成都 610065)
近年來,計(jì)算機(jī)技術(shù)迅猛發(fā)展,在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用。隨著時(shí)間的推移及存儲(chǔ)技術(shù)的發(fā)展,越來越多的股票交易數(shù)據(jù)被存儲(chǔ)下來。在海量的股票交易數(shù)據(jù)中往往隱藏了許多有用的信息,由此促進(jìn)了數(shù)據(jù)挖掘技術(shù)在股票分析領(lǐng)域中的應(yīng)用。但是,目前股票分析研究中存在一些問題:
1)分析的數(shù)據(jù)量較小,在利用計(jì)算機(jī)技術(shù)分析預(yù)測(cè)股票時(shí),選取的股票交易時(shí)間段較短,可能會(huì)影響實(shí)驗(yàn)結(jié)果的可靠性和說服力。
2)分析的股票單一,在多數(shù)股票分析中,一般選取滬深300 指數(shù)或上證50 指數(shù)進(jìn)行分析,雖然能分析整體股票走勢(shì),但對(duì)于個(gè)股還是有差別。
3)數(shù)據(jù)挖掘中的分類算法主要用于分析股票財(cái)務(wù)數(shù)據(jù),沒有對(duì)技術(shù)指標(biāo)進(jìn)行決策樹分類預(yù)測(cè)。針對(duì)上述問題,本文選取單均線、雙均線、MACD、KDJ、RSI這5 個(gè)技術(shù)指標(biāo),選擇由某投資公司提供的50 只股票從1990 年至2012 年的數(shù)據(jù),利用決策樹分類算法進(jìn)行分類預(yù)測(cè)。
對(duì)于股票技術(shù)指標(biāo)的分析,大多數(shù)采用統(tǒng)計(jì)的方法,在計(jì)算技術(shù)指標(biāo)時(shí),使用技術(shù)指標(biāo)公式中默認(rèn)的參數(shù),這對(duì)分析預(yù)測(cè)股票走勢(shì)有一定的影響。本文從量化的角度,分析常見技術(shù)指標(biāo)的最優(yōu)參數(shù),實(shí)驗(yàn)表明默認(rèn)參數(shù)不一定能達(dá)到最好的收益。
本文通過樣本股票數(shù)據(jù)計(jì)算技術(shù)指標(biāo),將技術(shù)指標(biāo)組合建立決策樹,利用決策樹預(yù)測(cè)買賣時(shí)機(jī),有利于提高投資的科學(xué)性,降低風(fēng)險(xiǎn),獲取更大收益,對(duì)于股票投資者來說具有重大意義。
MA(Moving Average)根據(jù)道·瓊斯的“平均成本概念”,采用統(tǒng)計(jì)學(xué)中“移動(dòng)平均”的原理,將一段周期內(nèi)的股票價(jià)格平均值連城一條曲線,用來顯示股價(jià)的歷史波動(dòng)情況,以便于預(yù)測(cè)股票價(jià)格未來的發(fā)展趨勢(shì),其中單均線即單條MA,雙均線即2 條MA。
MACD(Moving Average Convergence Divergence)是通過計(jì)算短期移動(dòng)平均線與長(zhǎng)期移動(dòng)平均線之間的離差關(guān)系,對(duì)買賣時(shí)機(jī)做出判斷。該指標(biāo)從MA 的原理發(fā)展而來,解決了MA 出現(xiàn)買賣交易信號(hào)過于頻繁的缺點(diǎn)。
KDJ 指標(biāo)主要研究股票最高價(jià)、最低價(jià)和收盤價(jià)之間的關(guān)系,能夠較快捷和直觀分析判斷股票行情,廣泛應(yīng)用于股市的中短期趨勢(shì)分析,是一種很實(shí)用的技術(shù)分析指標(biāo)。
RSI(Relative Strength Index)指標(biāo)是由Welles Wilder 提出,它以強(qiáng)弱指標(biāo)理論為基礎(chǔ),其原理是通過比較一段股票交易周期中收盤價(jià)上漲天數(shù)和收盤價(jià)下跌天數(shù),來分析市場(chǎng)買賣的實(shí)力和意向,從而預(yù)測(cè)股票市場(chǎng)的趨勢(shì)。
本文主要對(duì)單均線、雙均線、MACD、KDJ 和RSI參數(shù)進(jìn)行掃描,找出每種指標(biāo)使收益最大化的相對(duì)最優(yōu)參數(shù)。在參數(shù)優(yōu)化的研究中進(jìn)行如下假設(shè):
1)用每天收盤價(jià)進(jìn)行交易;
2)出現(xiàn)買賣時(shí)機(jī)時(shí),進(jìn)行全倉(cāng)買賣;
3)暫不考慮股息和利息;
4)最優(yōu)參數(shù)在優(yōu)化時(shí)以收益率為目標(biāo)函數(shù)。
KDJ 指標(biāo)不同參數(shù)的收益如圖1 所示。
圖1 SH600100 KDJ 不同參數(shù)收益對(duì)比圖
針對(duì)KDJ 指標(biāo),如果K 值比D 值高,則買入或持有;如果K 值比D 值低,則賣出或空倉(cāng)。默認(rèn)參數(shù)為:N1=9,N2=3,N3=3。掃描時(shí),參數(shù)N1,N2 和N3 的取值范圍為:D={(N1,N2,N3)|N1=2,3,…,30;N2=2,3,…,20;N3=2,3,…,20}。掃描后,默認(rèn)參數(shù)與最優(yōu)參數(shù)收益比較如圖1 所示。對(duì)于股票SH600100,KDJ 指標(biāo)的最優(yōu)參數(shù)為N1=23,N2=3,N3=9。
對(duì)單均線、雙均線、MACD、KDJ 和RSI 這5 個(gè)技術(shù)指標(biāo)進(jìn)行參數(shù)最優(yōu)化,并且從50 只股票中隨機(jī)選取5 只股票比較不同股票不同指標(biāo)在最優(yōu)參數(shù)下的收益情況,具體如表1 所示。
表1 不同股票不同指標(biāo)最優(yōu)參數(shù)收益對(duì)比
根據(jù)表1 可知,同一指標(biāo)不同股票最優(yōu)參數(shù)不同,同一股票不同技術(shù)指標(biāo)的收益也不相同,總體而言,MACD 和KDJ 收益較高,RSI 收益較低。
勝率是指所有交易中盈利的次數(shù)與總交易次數(shù)之比,而最大虧損記錄的是所有交易中一次性虧損的最大比例。對(duì)于50 只股票的不同技術(shù)指標(biāo),最優(yōu)參數(shù)勝率比較和最優(yōu)參數(shù)虧損比較如表2 所示。
表2 勝率和虧損比較/%
根據(jù)表2 可知,MACD 和RSI 采取最優(yōu)參數(shù)按照默認(rèn)買賣時(shí)機(jī)進(jìn)行投資時(shí)具有較高的勝率。而KDJ在投資中擁有較小的虧損,且其勝率也較好,是個(gè)不錯(cuò)的技術(shù)指標(biāo)。
C4.5 算法是Quinlan 于1993 年在ID3 算法的基礎(chǔ)上提出的。與ID3 算法采用信息增益作為結(jié)點(diǎn)屬性選擇標(biāo)準(zhǔn)相比,C4.5 是使用信息增益率來選擇結(jié)點(diǎn)屬性,信息增益率是信息增益與分割信息量之比。設(shè)樣本集S 可以被分為m 個(gè)類別,其中Pi表示第i個(gè)類別在整個(gè)樣本集中出現(xiàn)的概率,則信息增益info(S)可以根據(jù)信息論原理中的熵表示為:
熵的實(shí)際意義是表示數(shù)據(jù)集S 中類標(biāo)號(hào)所需要的平均信息量。又設(shè)屬性A 具有n 個(gè)不同的取值{a1,a2,…,an},如果用屬性A 將樣本集S 劃分為S1,S2,…,Sn共n 個(gè)子集,則用A 對(duì)S 進(jìn)行劃分的信息增益率為:
其中:
1)Gain(A)=info(S)-infoA(S),infoA(S)表示屬性A對(duì)S劃分的期望信息:|)info(Sj);
經(jīng)過理論和實(shí)驗(yàn)證明,采用信息增益率比直接使用信息增益具有更好的效果。使用信息增益率作為選擇屬性的標(biāo)準(zhǔn),能夠解決采用信息增益選擇屬性時(shí)出現(xiàn)的選擇分類較多的屬性的問題。
3.2.1 計(jì)算公式的簡(jiǎn)化
以信息增益的公式為例,對(duì)于下式:
由3.1 節(jié)可知,樣本集S 被分為m 個(gè)類別,假設(shè)類別集合為{C1,C2,…,Cn},則Pi可以表示為|Ci|/|S|,根據(jù)換底公式可知:logab=logsb/logsa,因此計(jì)算可以簡(jiǎn)化為:
根據(jù)等價(jià)無窮小的性質(zhì),當(dāng)X 趨近于0 時(shí),ln(1 +X)則趨近于X。由于每一類中的數(shù)目接近于,則|Ci|/|S|趨近于1,所以ln(|Ci|/|S|)趨近于(|Ci|/|S| -1),則公式可以進(jìn)一步簡(jiǎn)化為:
其中|S|ln2 為常數(shù),只用計(jì)算一次。同理,對(duì)于下式:
擴(kuò)展開后為:
其中,Pij=|Sij|/|Sj|,Sij表示屬性A 的子集Sj中屬于類Si的個(gè)數(shù),表示子集Sj的總數(shù)。根據(jù)info(S)的簡(jiǎn)化方法infoA(S)也可進(jìn)行相應(yīng)的簡(jiǎn)化。同理,對(duì)于下式:
也可進(jìn)行相應(yīng)的簡(jiǎn)化。
3.2.2 連續(xù)屬性離散化的改進(jìn)
簡(jiǎn)化計(jì)算信息增益率的公式,減少對(duì)數(shù)函數(shù)的運(yùn)算,從而減少計(jì)算量,提高計(jì)算效率。然而,C4.5 算法對(duì)連續(xù)屬性離散時(shí),在排序后,通過遍歷的方法尋找取得最大信息增益的Si。根據(jù)Fayyad 邊界定理:無論數(shù)據(jù)集有多少類別,連續(xù)屬性的最佳分割點(diǎn)總在邊界點(diǎn)處。根據(jù)這一定理,則不需要遍歷整個(gè)數(shù)列,只需考慮不同類別的邊界點(diǎn)。
因此,改進(jìn)后的連續(xù)屬性離散化步驟可表示為:
1)對(duì)于屬性A,利用快速排序?qū)傩訟 的值按升序排列。假設(shè)排序后的集合為{v1,v2,…,vn},其中n 為屬性A 的總數(shù)。
2)定義2 個(gè)變量imax和Gainmax,并設(shè)置初值為imax=1 和Gainmax=0。
3)對(duì)所有的vi,其中1≤i≤n-1,如果vi和vi+1不屬于同一類C,則表明vi和vi+1是邊界點(diǎn),計(jì)算按照vi或vi+1劃分得到的信息增益Gainv,比較Gainv和Gainmax的大小,Gainmax保存較大值,將對(duì)應(yīng)的i 值賦值給imax。
4)遍歷完一遍序列{v1,v2,…,vn}后,則vmax是屬性A 的分割閾值。
從以上步驟可以看出,只需遍歷一遍序列就能找出屬性的最佳分割閾值,根據(jù)Fayyad 邊界原理,不用對(duì)每個(gè)vi都計(jì)算一次信息增益,只需計(jì)算排序過后邊界點(diǎn)的vi,這樣大大減少了計(jì)算量,提高了計(jì)算效率。
3.2.3 優(yōu)化后的效果
對(duì)于本文處理的股票數(shù)據(jù),用來構(gòu)建決策樹的屬性都是連續(xù)屬性,所以需要進(jìn)行離散化。此處利用Weka 平臺(tái)對(duì)股票數(shù)據(jù)進(jìn)行分類預(yù)測(cè),不同數(shù)據(jù)量大小的股票數(shù)據(jù)由傳統(tǒng)C4.5 算法和改進(jìn)的C4.5 算法構(gòu)建決策樹的運(yùn)行時(shí)間對(duì)比如圖2 所示。
圖2 C4.5 算法優(yōu)化前后運(yùn)行時(shí)間對(duì)比圖
利用第3 節(jié)的方法得到5 個(gè)技術(shù)指標(biāo)的最優(yōu)參數(shù),再利用最優(yōu)參數(shù)得到最優(yōu)指標(biāo)。本文利用最優(yōu)MACD 判斷股票的買賣時(shí)機(jī)。利用MACD 來判斷時(shí),當(dāng)DIF >DEF 時(shí),為買點(diǎn);當(dāng)DIF <DEF 時(shí),為賣點(diǎn)。由于利用MACD 的值對(duì)訓(xùn)練樣本進(jìn)行分類對(duì)類別的影響最大,其信息增益也最大,所以實(shí)驗(yàn)只利用剩余的4 個(gè)最優(yōu)指標(biāo)結(jié)合之前由MACD 得到的買賣時(shí)機(jī)進(jìn)行決策樹的構(gòu)建。實(shí)驗(yàn)同時(shí)計(jì)算當(dāng)利用單個(gè)技術(shù)指標(biāo)MACD 進(jìn)行股票預(yù)測(cè)時(shí)的收益率,并與前者的結(jié)果做了比對(duì),從50 只股票隨機(jī)選取一只(SH600470)展示其效果,如圖3 所示。
圖3 單指標(biāo)(MACD)與決策樹的收益對(duì)比圖
從以上收益對(duì)比圖中可以得出:利用決策樹對(duì)股票進(jìn)行分析預(yù)測(cè)的收益比單指標(biāo)要高,說明單指標(biāo)分析具有一定的局限性,在對(duì)股票數(shù)據(jù)進(jìn)行分析預(yù)測(cè)時(shí),應(yīng)組合使用多個(gè)技術(shù)指標(biāo),提高收益。
在股票技術(shù)指標(biāo)分析中,使用默認(rèn)參數(shù)計(jì)算技術(shù)指標(biāo),對(duì)分析預(yù)測(cè)股票走勢(shì)以及投資時(shí)機(jī)和投資結(jié)果具有一定的影響。因此,對(duì)技術(shù)指標(biāo)進(jìn)行最優(yōu)參數(shù)掃描,能夠使收益達(dá)到最大化。對(duì)股票技術(shù)指標(biāo)進(jìn)行決策樹分類,能夠有效指導(dǎo)投資者規(guī)避風(fēng)險(xiǎn),合理投資以取得更好的收益,比只利用單個(gè)指標(biāo)進(jìn)行股票分析預(yù)測(cè)更具優(yōu)勢(shì)。
[1]鄭海榮.數(shù)據(jù)挖掘技術(shù)在股票分析與預(yù)測(cè)中的應(yīng)用[D].哈爾濱:哈爾濱工業(yè)大學(xué),2007.
[2]方智.基于多技術(shù)指標(biāo)模型的滬深300 指數(shù)走勢(shì)預(yù)測(cè)[D].南昌:江西財(cái)經(jīng)大學(xué),2012.
[3]Tsaih R,Hsu Y,Lai C C.Forecasting S&P 500 stock index futures with a hybrid AI system[J].Decision Support Systems,1998,23(2):161-174.
[4]Liu N K,Lee K K.An intelligent business advisor system for stock investment[J].Expert Systems,1997,14(3):129-139.
[5]方匡南,紀(jì)宏,路遜.股票技術(shù)指標(biāo)相似性與有效性研究[J].統(tǒng)計(jì)與信息論壇,2009,24(9):26-30.
[6]Fang Yue,Wada S,Moody J.Stock returns:Momentum,volatility and interest rates[C]// Proceedings of the 2003 IEEE International Conference on Computational Intelligence for Financial Engineering.2003:379-385.
[7]廖勇,唐常杰,元昌安,等.基于基因表達(dá)式編程的股票指數(shù)時(shí)間序列分析[J].四川大學(xué)學(xué)報(bào)(自然科學(xué)版),2005,42(5):931-936.
[8]彭宏,劉洋,鄧維維,等.股票數(shù)據(jù)流的相關(guān)性計(jì)算方法[J].華南理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2006,34(1):86-89.
[9]丁鵬.量化投資:策略與技術(shù)[M].北京:電子工業(yè)出版社,2012:368-404.
[10]張登明.技術(shù)指標(biāo)投資策略的優(yōu)化及其在量化交易中的應(yīng)用[D].武漢:華中科技大學(xué),2010.
[11]Lim T S,Loh W Y,Shih Y S.A comparison of prediction accuracy,complexity,and training time of thirty-three old and new classification algorithms[J].Machine Learning,2000,40(3):203-228.
[12]喬增偉,孫衛(wèi)祥.C4.5 算法的兩點(diǎn)改進(jìn)[J].江蘇工業(yè)學(xué)院學(xué)報(bào),2008,20(4):56-59.
[13]馮帆,徐俊剛.C4.5 決策樹改進(jìn)算法研究[J].電子技術(shù),2012,39(6):1-4.
[14]姚亞夫,邢留濤.決策樹C4.5 連續(xù)屬性分割閾值算法改進(jìn)及其應(yīng)用[J].中南大學(xué)學(xué)報(bào)(自然科學(xué)版),2011,42(12):3772-3776.
[15]趙蕊.基于WEKA 平臺(tái)的決策樹算法設(shè)計(jì)與實(shí)現(xiàn)[D].長(zhǎng)沙:中南大學(xué),2007.
[16]魏雄.決策樹算法在股票分析與預(yù)測(cè)中的應(yīng)用[J].電腦知識(shí)與技術(shù)(學(xué)術(shù)交流),2007,2(9):764-765.
[17]鄒筱梅,姜山,唐賢瑛.基于決策樹的股市數(shù)據(jù)挖掘與仿真[J].計(jì)算機(jī)仿真,2004,21(3):127-129.
[18]雷煒,葉東毅.利用決策樹技術(shù)對(duì)股票價(jià)格數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)挖掘[J].福建電腦,2004(8):52-53.