本發(fā)明涉及股票數(shù)據(jù)挖掘技術(shù)領(lǐng)域,尤其是涉及一種基于最相似走勢的股票短期預(yù)測方法。
背景技術(shù):
股票投資已經(jīng)成為人們生活中的重要組成部分, 有效地進(jìn)行股票價(jià)格預(yù)測,最大程度規(guī)避股票風(fēng)險(xiǎn),增加投資收益,是股票投資者最關(guān)注的熱點(diǎn)問題。因此股市預(yù)測方法的研究具有極其重要的應(yīng)用價(jià)值和理論意義。
常用的股票挖掘方法有:時(shí)間序列分析法、神經(jīng)網(wǎng)絡(luò)預(yù)測方法、回歸分析法、時(shí)間序列平滑法、趨勢曲線模型法、隨機(jī)時(shí)間序列預(yù)測方法、馬爾柯夫預(yù)測法和判別分析預(yù)測法等。由于股票市場中隨機(jī)因素很多,對(duì)股指、價(jià)格的影響顯著,價(jià)格波動(dòng)劇烈,燥聲高,表現(xiàn)出很強(qiáng)的非線性、不確定性。所以這些方法雖然在實(shí)際工作中有著重要的指導(dǎo)作用,但仍存在著某些不盡如人意的地方,如回歸模型外推性差,類比系數(shù)法準(zhǔn)確性較差,神經(jīng)網(wǎng)絡(luò)計(jì)算量大、易產(chǎn)生過擬合等問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明公開提出了一種基于最相似走勢的股票短期預(yù)測方法。這里的短期預(yù)測一般是指對(duì)股票接下來2周以上交易日的預(yù)測,如20日預(yù)測,30日預(yù)測,60日預(yù)測等。本發(fā)明方法的預(yù)測結(jié)果不僅是對(duì)未來一段時(shí)間收盤價(jià)、漲跌幅的預(yù)測,還包括每日開盤價(jià)、最高價(jià)、最低價(jià)、成交量等方面的預(yù)測。
本發(fā)明方法的主要思想是:首先對(duì)每只股票進(jìn)行相對(duì)量的計(jì)算,包括橫向相對(duì)量和縱向相對(duì)量;然后以待預(yù)測股票的近期一段時(shí)間段內(nèi)的漲跌幅走勢對(duì)所有股票的歷史數(shù)據(jù)進(jìn)行逐段的匹配,搜索獲得相似度最高的前幾只股票;最后以最相似股票匹配日期之后的走勢數(shù)據(jù),結(jié)合橫縱向相對(duì)量,計(jì)算還原待預(yù)測股票的后期走勢作為其短期預(yù)測結(jié)果。本發(fā)明方法是一種基于所有股票數(shù)據(jù)的大數(shù)據(jù)挖掘方法,方法可為股票短線操作提供決策支持。
本發(fā)明方法的步驟如下:
(1) 對(duì)每只股票的每個(gè)交易日進(jìn)行橫向相對(duì)量的計(jì)算;
(2) 對(duì)每只股票的每個(gè)交易日相對(duì)前一交易日進(jìn)行縱向相對(duì)量的計(jì)算;
(3) 將待預(yù)測股票的近期走勢片段逐一與每只股票的歷史數(shù)據(jù)進(jìn)行移動(dòng)加權(quán)匹配,獲取最為相似的前T只股票對(duì)應(yīng)的匹配段和匹配日期;
(4) 以最相似股票匹配段匹配日期之后的走勢數(shù)據(jù)為基礎(chǔ),結(jié)合橫、縱向相對(duì)量,計(jì)算還原待預(yù)測股票的后期走勢。
其中,步驟(1)中橫向相對(duì)量的計(jì)算是針對(duì)每只股票每個(gè)交易日進(jìn)行的,計(jì)算的是相對(duì)于當(dāng)日收盤價(jià)的增減幅度,一般需要計(jì)算的相對(duì)量包括:開盤價(jià)增減幅度、最高價(jià)增減幅度、最低價(jià)增減幅度。
其中,步驟(2)中縱向相對(duì)量的計(jì)算也是對(duì)每只股票的每個(gè)交易日進(jìn)行的,不同的是相對(duì)量是相對(duì)于前一交易日來進(jìn)行計(jì)算。需要計(jì)算的字段包括成交量、換手率、成交筆數(shù)等。
其中,步驟(3)中待預(yù)測股票的近期走勢片段是指近期一段時(shí)間的漲跌幅數(shù)據(jù),將該段數(shù)據(jù)與所有股票歷史數(shù)據(jù)等長的走勢片段逐一進(jìn)行移動(dòng)匹配;首先在每只股票中獲取一個(gè)最小的匹配值,而后再在所有的股票中獲取全局最小的T個(gè)最小匹配值,同時(shí)獲取這些最小匹配值對(duì)應(yīng)的匹配日期。
在匹配過程中,兩個(gè)股票走勢片段的匹配過程綜合考慮了各種因素。首先對(duì)位置加權(quán),位置越靠右側(cè)的權(quán)重越大;接下來對(duì)同向性加權(quán),同漲或同跌的位置賦予較大的權(quán)重;最后將權(quán)重乘以相應(yīng)位置漲跌幅的相減絕對(duì)值,作為最終的比較距離。
其中,步驟(4)中相似股票匹配日期之后的走勢數(shù)據(jù)是指漲跌幅、相對(duì)成交量、相對(duì)換手率等。把這些走勢數(shù)據(jù)套用到原待預(yù)測股票,如通過后期每日的漲跌幅,以原待預(yù)測股票最后一個(gè)交易日的收盤價(jià)為基礎(chǔ),可以計(jì)算其后續(xù)每日的收盤價(jià),結(jié)合橫向相對(duì)量則可以反向計(jì)算每日的開盤價(jià)、最高價(jià)和最低價(jià);通過相似股票的縱向相對(duì)成交量,以原待預(yù)測股票最后一個(gè)交易日的成交量為基礎(chǔ),可以計(jì)算其后續(xù)每日成交量;其他的縱向相對(duì)量類似地進(jìn)行應(yīng)用。
附圖說明
圖1 是本發(fā)明股票短期預(yù)測方法的流程圖。
圖2 是基于本發(fā)明方法輸出的某一股票短期走勢的預(yù)測結(jié)果1。
圖3 是基于本發(fā)明方法輸出的某一股票短期走勢的預(yù)測結(jié)果2。
這里最相似股票數(shù)T取值為2,因此圖2和圖3中給出2個(gè)短期走勢的預(yù)測結(jié)果。虛線之后為預(yù)測結(jié)果,圖中待匹配股票的匹配段長度L和預(yù)測交易日數(shù)N都取為30。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)例,對(duì)本發(fā)明進(jìn)行詳細(xì)的描述。
短期預(yù)測一般指對(duì)股票接下來2周以上交易日的預(yù)測,如20日預(yù)測,30日預(yù)測,60日預(yù)測等。
本發(fā)明方法的預(yù)測結(jié)果不僅包括每日收盤價(jià)、漲跌幅的預(yù)測,還包括每日開盤價(jià)、最高價(jià)、最低價(jià)、成交量等方面的預(yù)測。
假設(shè)股票列表為S,S=[S1, S2,…,Si,…,Sn],n為股票池中股票的數(shù)量,如中國上市股票的數(shù)量或美國上市股票的數(shù)量。
對(duì)于每只股票,假設(shè)待預(yù)測的股票為Sm,m=1,…,n 具體預(yù)測步驟如下。
一、股票數(shù)據(jù)預(yù)處理。
預(yù)處理過程主要是針對(duì)一些相對(duì)量的計(jì)算,包括橫向相對(duì)量和縱向相對(duì)量。
假設(shè)對(duì)于股票列表S中的每只股票有如下數(shù)據(jù)字段:開盤價(jià)Open,收盤價(jià)Close, 最高價(jià)High,最低價(jià)Low,漲跌幅Change,成交量Volume,換手率Turnover等,其中收盤價(jià)Close為前復(fù)權(quán)價(jià)格。數(shù)據(jù)預(yù)處理過程如下。
1.1橫向相對(duì)量。計(jì)算相對(duì)于當(dāng)天收盤價(jià)Close的增減幅度,并添加新字段。需要計(jì)算的字段包括開盤價(jià)Open、最高價(jià)High和最低價(jià)Low,具體如下:
開盤價(jià)增減幅度StdOpen= 100*(Open-Close)/Close;
最高價(jià)增減幅度StdHigh= 100*(High-Close)/Close;
最低價(jià)增減幅度StdLow= 100*(Low-Close)/Close。
1.2縱向相對(duì)量。計(jì)算相對(duì)前一交易日的增減幅度,并添加新字段。需要計(jì)算的字段包括成交量Volume和換手率Turnover, 具體如下:
成交量增減幅度StdVolume= 100*(Volume- lastVolume)/ lastVolume, 其中, lastVolume代表前一交易日的成交量;
換手率增減幅度StdTurnover= 100*(Turnover- lastTurnover)/ lastTurnover, 其中, lastTurnover代表前一交易日的換手率。
如果有其他字段需要預(yù)測,如成交筆數(shù)、成交金額等,可類似計(jì)算出對(duì)應(yīng)的相對(duì)值,添加相應(yīng)的字段。計(jì)算所得相對(duì)值將在本發(fā)明方法的最后一步中使用。
二、股票數(shù)據(jù)的加載。
該步驟主要完成數(shù)據(jù)的準(zhǔn)備過程,從原始股票數(shù)據(jù)庫中獲取待預(yù)測股票的近期交易日數(shù)據(jù)和待匹配的股票的歷史交易日數(shù)據(jù)。
2.1 獲取待預(yù)測股票Sm的近L個(gè)交易日的漲跌幅數(shù)據(jù),形成一個(gè)數(shù)組,記為A,
A=[a1,a2,…,ai,…aL]
其中,ai代表近L-i的交易日的漲跌幅。a0代表當(dāng)前交易日的漲跌幅。L的取值至少得符合短期預(yù)測交易日的要求,如>=20。
2.2 對(duì)S中的每只股票,獲取某個(gè)時(shí)間點(diǎn)以來(如2005年1月1日),到當(dāng)前交易日的前L個(gè)交易日的數(shù)據(jù),形成另一個(gè)數(shù)組,記為Bi,i=[1,n],
Bi=[bi1,bi2,…,bij,…bik]
其中,bij代表第i只股票的j位置對(duì)應(yīng)交易日的漲跌幅。每個(gè)Bi的長度k是不一定相等的,因?yàn)楣善敝虚g有停牌等因素的影響。
同時(shí)記錄bij的交易日期,記為另一數(shù)組Ci,i=[1,n],
Ci=[ci1,ci2,…,cij,…cik]
其中,cij代表第i只股票的j位置對(duì)應(yīng)交易日期。
三、股票間逐段移動(dòng)匹配。
該步驟主要完成待預(yù)測股票與某只待匹配股票之間的匹配過程,并獲取得到與待匹配股票匹配的最小值和對(duì)應(yīng)匹配日期。
匹配過程在A和Bi展開,A的長度為L, Bi的長度為K, K>=L,具體匹配過程如下:
3.1 以步長為1,循環(huán)從Bi中獲取長度L的漲跌幅數(shù)據(jù),記為B;
3.2 A與B進(jìn)行比較,得到匹配值。匹配過程首先對(duì)位置加權(quán),位置越靠右側(cè)的權(quán)重越大;接下來對(duì)同向性加權(quán),同漲或同跌的位置賦予較大的權(quán)重;最后將權(quán)重乘以相應(yīng)位置漲跌幅的相減絕對(duì)值,作為最終的比較距離;
3.3 記錄所有比較的匹配值的最小值和次小值,和其對(duì)應(yīng)的匹配日期,作為A與Bi匹配的最終結(jié)果,即每只股票記錄兩個(gè)匹配結(jié)果,分別記為Pi, Pi+n,i=[1,n],
Pi=[Vi,Di], Pi+n=[Vi+n,Di+n]
其中,Vi 、Vi+n分別代表A與Bi的最小和次小匹配值;Di、Di+n分別代表最小匹配值和次小匹配值對(duì)應(yīng)的匹配日期。
股票兩兩之間的匹配之所以記錄兩個(gè)結(jié)果,是因?yàn)橛锌赡茏钕嗨频钠ヅ涠紕偤贸霈F(xiàn)在同一只股票中。
四、獲得匹配值排序靠前的前幾只相似股票。
該步驟基于上一步驟移動(dòng)加權(quán)匹配結(jié)果數(shù)組P,獲取T只最相似股票。具體過程為:對(duì)數(shù)組P的Pi數(shù)值從小到大進(jìn)行排序,排序后獲取數(shù)值最小的前T個(gè)Pi及其對(duì)應(yīng)的Di,形成新數(shù)組Mt ,t=[1,T], Mt=[Pt,Dt]。這里T的取值不宜取太大,一般取2即可, 因?yàn)門的取值代表著有T種的短期預(yù)測結(jié)果。該步驟獲取最相似股票的過程還可以結(jié)合換手率、成交量等因素進(jìn)行。
五、獲取相似股票匹配日期之后的后期走勢數(shù)據(jù)。
該步驟獲取相似股票匹配日期后的N個(gè)交易日(N一般取為20-30)數(shù)據(jù),獲取的數(shù)據(jù)包括漲跌幅Change,以及步驟1中新增的各增減幅度字段,這里即為StdOpen、StdHigh、StdLow、StdVolume、StdTurnover等。
六、獲取待預(yù)測股票當(dāng)前交易日的數(shù)據(jù)。
該步驟獲取待預(yù)測股票當(dāng)前交易日數(shù)據(jù),獲取的數(shù)據(jù)包括收盤價(jià)Close(已前復(fù)權(quán)),以及步驟1中有計(jì)算相對(duì)前一交易日增加幅度的原始字段,這里即為Volume,Turnover。
七、股票短期預(yù)測結(jié)果生成。
該步驟基于前幾個(gè)步驟已經(jīng)準(zhǔn)備好的數(shù)據(jù)生成預(yù)測結(jié)果?;舅枷胧?,以待預(yù)測股票的當(dāng)前交易日的數(shù)據(jù)作為“前一交易日”基準(zhǔn)數(shù)據(jù),結(jié)合相似股票匹配日期后的走勢數(shù)據(jù),計(jì)算還原成待預(yù)測股票短期預(yù)測的走勢數(shù)據(jù)。
前面步驟獲得的每一只相似股票的走勢都將還原成一種短期預(yù)測結(jié)果,具體過程如下:
7.1 將待預(yù)測股票當(dāng)前交易日的數(shù)據(jù)Close, Volume, Turnover置為前一交易日lastClose, lastVolume, lastTurnover結(jié)果;獲取某一只相似股票匹配日期后的走勢數(shù)據(jù);
7.2還原下一交易日的預(yù)測數(shù)據(jù),還原過程為:
下一交易日收盤價(jià)Close = lastClose + lastClose*Change/100;
下一交易日開盤價(jià)Open = Close + Close*StdOpen/100;
下一交易日最高價(jià)High = Close + Close*StdHigh/100;
下一交易日最低價(jià)Low = Close + Close*StdLow/100;
下一交易日成交量Volume = lastVolume + lastVolume *StdVolume/100;
下一交易日換手率Turnover = lastTurnover + lastTurnover *StdTurnover/100;
7.3 將當(dāng)前交易日的收盤價(jià)Close,成交量Volume,換手率Turnover置為前一交易日lastClose, lastVolume, lastTurnover結(jié)果;
7.4 重復(fù)執(zhí)行7.2,7.3步驟,直至還原出期望的全部交易日預(yù)測數(shù)據(jù)。
以上步驟將得到基于某一只相似股票走勢的預(yù)測結(jié)果。前面計(jì)算得到的T只最相似股票將可得到待預(yù)測股票的T個(gè)短期走勢預(yù)測結(jié)果。
綜上所述,本發(fā)明提出了一種基于最相似走勢的股票短期預(yù)測方法,充分利用了所有股票的歷史數(shù)據(jù),可以對(duì)股票的短期走勢做出較好預(yù)測,預(yù)測不僅包括每日收盤價(jià)、漲跌幅的預(yù)測,還包括每日開盤價(jià)、最高價(jià)、最低價(jià)、成交量等方面的預(yù)測。
本發(fā)明方法同樣可應(yīng)用于證券類具有時(shí)間序列特征的數(shù)據(jù),如基金、期貨等。因此,盡管為說明目的公開了本發(fā)明的具體實(shí)施例和附圖,其目的在于幫助理解本發(fā)明的內(nèi)容并據(jù)以實(shí)施,但是本領(lǐng)域的技術(shù)人員可以理解:在不脫離本發(fā)明及所附的權(quán)利要求的精神和范圍內(nèi),各種替換、變化和修改都是不可能的。因此,本發(fā)明不應(yīng)局限于最佳實(shí)施例和附圖所公開的內(nèi)容。當(dāng)前公開的實(shí)施例在所有方面應(yīng)被理解為說明性的而非對(duì)其請(qǐng)求保護(hù)的范圍的限制。