本發明涉及股票數據挖掘技術領域,尤其是涉及一種基于股票預測走勢進行分類和推薦的方法。
背景技術:
股票價格受多種因素的綜合影響,具有變化萬千、錯綜復雜的特點,同時與金融環境密切相關,數據變化極其繁雜,變化有極強的無序性,難以建立精確的數學模型,因此對股票進行預測一直是金融領域研究的熱點問題。
在股票走勢預測方面,技術分析方法主要有統計學方法和人工智能方法。時間序列分析法是統計學方法中主要的一種方式,其中常用的模型的有隨機游走模型、自回歸移動平均模型、齊次非平穩模型和馬爾可夫鏈模型等。近年來,人工智能技術得到了很大的發展,很多學者開展了神經網絡在股票價格預測上的應用。
在股票分類方面,可用于分類的算法有決策樹、貝葉斯分類、神經網絡、支持向量機等。目前已形成的各種算法理論雖然能解釋股市上的某些現象,但實際應用效果并不理想。
技術實現要素:
本發明公開了一種基于股票預測走勢進行分類和推薦的方法。方法首先以待預測股票的近期走勢,搜索匹配所有股票的歷史數據,獲得最相似的三個走勢段,并基于相似走勢段的后期走勢生成三種走勢預測結果;其次對每種走勢進行分類,包括一路上漲、先漲后跌、先跌后漲、一路下跌、不好確定五類,每只股票的三種預測走勢對應三種分類;然后對分類的一致性進行判斷,當三種趨勢的分類全部不同時股票走勢為不好確定,其余根據多數原則進行分類判斷;最后在分類標簽完全一致的股票中挑選預測走勢漲幅最大的前幾只股票作為大漲推薦的列表,預測走勢跌幅最大的作為大跌預警的列表。
本發明方法是一種推薦方法,推薦的依據是基于其未來一段時間的預測走勢,推薦的股票除了要求接下來要有較大的漲幅外,同時要求具有較高的準確性。
本發明方法的步驟如下:
(1)在所有股票的歷史數據中搜索與待預測股票近期走勢相似的走勢段,并基于相似走勢段的后期走勢生成股票的3種預測走勢;
(2)對每只股票的每種預測走勢進行分類;
(3)對每只股票的3種預測走勢分類進行一致性統計,確定股票最終分類;
(4)在具有分類標簽完全一致的股票中進行股票推薦。
其中,步驟(1)主要是要獲取待預測股票的3種預測走勢。具體包括如下5個子步驟:
(1)對所有股票進行數據預處理操作。計算開盤價,收盤價, 最高價相對于收盤價的增減幅度;
(2)加載待預測的股票數據和待匹配的歷史數據。待預測股票數據為近期L個交易日的漲跌幅數據;待匹配的歷史數據為每只股票的某個時間點以來到當前交易日的前L個交易日的數據,以及對應的交易日期;
(3)將待預測股票的近期走勢段與每只股票的歷史數據逐位進行移動加權匹配,每只股票僅記錄一個最佳匹配段;
(4)在所有股票的最佳匹配段中,全局進行比較,再次獲取最匹配3個走勢段;
(5)基于相似走勢段后期的走勢生成待預測股票的3種預測走勢。
其中,步驟(2)中對每只股票的每種預測走勢進行分類,具體分成5個類別,其名稱和對應代碼為:“一路上漲”:“1”、 “先漲后跌”:“2”、“先跌后漲”:“3”、“一路下跌”:“4”、“不好確定”:“5”。每種走勢分類的確定過程為:
(1)獲取走勢的最高、最低價格所對應的位置,記最大值所在的位置為HighPos,最小值所在的位置為LowPos;
(2)根據HighPos和LowPos位置的不同組合確定預測走勢的分類;
對于每只股票的3種走勢預測結果,將得到相對這只股票的3個分類。
其中,步驟(3)的對每只股票的三種預測走勢分類進行一致性統計,具體為:對于每只股票的3種預測走勢對應著3個分類,而分類的類別僅有4種,因此其分類類別的組合有3種情況:3個分類完全一致、2個分類一致另一個不同、3個分類全部不同。對于這3種情況,把3個分類全部不同的股票最終分類判斷為“不好確定”,其余兩個分類根據最多投票原則將具有相同的分類確定為該股票的最終分類。
其中,步驟(4) 在具有分類標簽完全一致的股票中進行股票推薦,具體為:對推薦分為兩種,一種是“大漲推薦”,另一種是“大跌預警”。結合原先對股票的3種預測走勢,將3種預測走勢中的最大漲幅取平均值作為該股票的漲幅預測;3種預測走勢對應的最大跌幅取平均值作為該股票的跌幅預測;獲取3種走勢分類標簽完全一致且漲幅預測最大的前幾只股票作為大漲推薦的列表,跌幅預測最大前幾只股票的作為大跌預警的列表。
附圖說明
圖1是本發明基于股票預測走勢進行分類和推薦方法的流程圖。
圖2是股票推薦中大漲推薦結果列表的示例。
圖3是股票推薦中大跌預警結果列表的示例。
具體實施方式
下面結合附圖和實例,對本發明進行詳細的描述。
本發明方法首先對股票進行短期的走勢預測,而后根據預測的走勢將股票分成5個類別,即“一路上漲”、“先漲后跌”、“先跌后漲”、“一路下跌”、“不好確定”5類,最后根據分類的一致性情況進行股票的推薦。
假設股票列表為S,S=[S1, S2,…,Si,…,Sn],n為股票池中股票的數量,如中國上市股票的數量或美國上市股票的數量。
一、股票的短期預測。
該步驟對股票進行短期的預測,從而獲取股票的短期走勢。短期走勢包括一段時間的開盤價、收盤價、最高價、最低價、漲跌幅等。對于每只股票,假設待預測的股票為Sm,m=1,…,n 具體預測步驟如下。
(1)股票數據預處理。
假設對于股票列表S中的每只股票有如下數據字段:開盤價Open,收盤價Close, 最高價High,最低價Low,漲跌幅Change等,其中收盤價Close為前復權價格。數據預處理過程主要是計算相對于當天收盤價Close的增減幅度,并添加新字段。需要計算的字段包括開盤價Open、最高價High和最低價Low,具體如下:
開盤價增減幅度StdOpen= 100*(Open-Close)/Close;
最高價增減幅度StdHigh= 100*(High-Close)/Close;
最低價增減幅度StdLow= 100*(Low-Close)/Close。
(2)股票數據的加載。
該步驟主要完成數據的準備過程,從原始股票數據庫中獲取待預測股票的近期交易日數據和待匹配的股票的歷史交易日數據。
2.1 獲取待預測股票Sm的近L個交易日的漲跌幅數據,形成一個數組,記為A,
A=[a1,a2,…,ai,…aL]
其中,ai代表近L-i的交易日的漲跌幅。a0代表當前交易日的漲跌幅。L的取值至少得符合短期預測交易日的要求,如>=20。
2.2 對S中的每只股票,獲取某個時間點以來(如2005年1月1日),到當前交易日的前L個交易日的數據,形成另一個數組,記為Bi,i=[1,n],
Bi=[bi1,bi2,…,bij,…bik]
其中,bij代表第i只股票的j位置對應交易日的漲跌幅。每個Bi的長度k是不一定相等的,因為股票中間有停牌等因素的影響;同時記錄bij的交易日期,記為另一數組Ci,i=[1,n],
Ci=[ci1,ci2,…,cij,…cik]
其中,cij代表第i只股票的j位置對應交易日期。
(3)股票間移動加權匹配。
該步驟主要完成待預測股票與某只待匹配股票之間的匹配過程,并獲取得到與待匹配股票匹配的最小值和對應匹配日期。匹配過程在A和Bi展開,A的長度為L, Bi的長度為K, K>=L,具體匹配過程如下。
3.1 以步長為1,循環從Bi中獲取長度L的漲跌幅數據,記為B。
3.2 A與B進行比較,得到匹配值。A、B的比較過程可以靈活進行,結合以下幾種方式進行比較,
(a)A、B相應位置的漲跌幅直接相減取絕對值;
(b) 對位置加權,越靠近當前交易日權值越高;
(c) 考慮A、B漲跌幅的同向性加權;
(d) 將A、B漲跌幅歸一化到[0,1]區間后進行比較。
3.3 記錄所有比較的匹配值的最小值和其對應的匹配日期,作為A與Bi匹配的最終結果,記為Pi, i=[1,n],
Pi=[Vi,Di]
其中,Vi代表A與Bi的最小匹配值,Di代表最小匹配值對應的匹配日期。
(4)獲取全局最相似走勢段。
4.1對數組P的Pi數值從小到大進行排序,排序后獲取數值最小的前3個Pi及其對應的Di,形成新數組Mt ,t=[1,T], Mt=[Pt,Dt]。這里T=3。
4.2 分別獲取Mt中對應股票的匹配日期后的N個交易日(N一般取為20-30)數據,獲取的數據包括漲跌幅Change,以及步驟1中新增的各增減幅度字段,這里即為StdOpen、StdHigh、StdLow等。
4.3獲取待預測股票當前交易日的收盤價Close(已前復權)。
(5)股票短期預測走勢結果生成。
以待預測股票的當前交易日收盤價Close作為“前一交易日”基準數據,結合相似股票匹配日期后的走勢數據,計算還原成待預測股票短期預測的走勢數據。數組Mt中對應的每一只相似股票的走勢都將還原成一種短期預測結果,具體過程如下。
5.1 將待預測股票當前交易日的數據Close置為前一交易日lastClose結果;獲取某一只相似股票匹配日期后的走勢數據。
5.2還原下一交易日的預測數據,還原過程為:
下一交易日收盤價Close = lastClose + lastClose*Change/100;
下一交易日開盤價Open = Close + Close*StdOpen/100;
下一交易日最高價High = Close + Close*StdHigh/100;
下一交易日最低價Low = Close + Close*StdLow/100。
5.3 將當前交易日的收盤價Close置為前一交易日lastClose結果。
5.4 重復執行5.2,5.3步驟,直至還原出期望的全部交易日預測數據。
以上步驟將得到基于某一只相似股票走勢的預測結果。前面計算得到的3只最相似股票將可得到待預測股票的3個短期走勢預測結果R。每種走勢的預測結果Rt(t=1,23)由四個數組組成,即Opens、Closes、Highs、Lows,分別代表預測趨勢每天的開盤、收盤、最高、最低價格。數組的長度都為L,這里取L=30,以方便后續對股票進行走勢分類。
二、對股票的預測走勢進行分類。
走勢的分類結果是預先定義的,分成5個類別,其名稱和對應代碼為:“一路上漲”:“1”、 “先漲后跌”:“2”、“先跌后漲”:“3”、“一路下跌”:“4”、“不好確定”:“5”。對于每只股票的3種走勢預測結果,將得到相對這只股票的3個分類。對于一種預測走勢Rt(t=1,23),其分類的確定過程如下。
(1)獲取走勢的最高、最低價格所對應的位置。
1.1在Rt的Highs最高價數組中通過比較其數值,獲取最大值所在的位置,記為HighPos;同時計算最大值相對于待預測股票當前交易日收盤價Close的漲幅Upt。
1.2 在Rt的Lows最低價數組中通過比較其數值,獲取最小值所在的位置,記為LowPos;同時計算最小值相對于待預測股票當前交易日Close的跌幅Downt。
(2)根據位置組合進行分類。
2.1 如果HighPos<LowPos,為下降趨勢,進一步判斷過程為:
如果LowPos>15, HighPos<5,則類別為4,一路下跌;
如果LowPos>15, HighPos>=5,則類別為2,先漲后跌;
如果LowPos<=15, HighPos<5,則類別為3,先跌后漲;
如果LowPos<=15, HighPos>=5,則類別為2,先漲后跌。
2.2 如果HighPos>=LowPos,為上升趨勢,進一步判斷過程為:
如果HighPos >15, LowPos<5,則類別為1,一路上漲;
如果HighPos >15, LowPos>=5,則類別為3,先跌后漲;
如果HighPos <=15, LowPos<5,則類別為2,先漲后跌;
如果HighPos <=15, LowPos>=5,則類別為3,先跌后漲。
對于每種預測走勢Rt都進行如上的分類,需要注意的是,目前每種走勢都有明確的分類,暫時還沒有“不好確定”的第5類。
三、股票一致性統計和分類。
對于每只股票的3種預測走勢對應著3個分類,目前分類的類別僅有4種。分類類別的組合有3種情況:3個分類完全一致、2個分類一致另一個不同、3個分類全部不同。對于這3種情況,把3個分類全部不同的股票最終分類判斷為“不好確定”,其余兩個分類根據最多投票原則將具有相同的分類確定為該股票的最終分類。至此,通過該步驟每只股票都有了一個唯一確定的對應分類。
四、結合預測趨勢的漲跌幅進行股票推薦。
推薦分為兩種,一種是“大漲推薦”,另一種是“大跌預警”。將股票的3種預測走勢對應的3種預測最大漲幅Upt取平均值作為該股票的漲幅預測。將股票的3種預測走勢對應的3種預測最大跌幅Downt取平均值作為該股票的跌幅預測。
對所有股票的漲幅預測結果進行從大到小排序后取出前h個,同時要求這些股票對應的3種趨勢3個分類結果的標簽完全一致。這些股票作為“大漲推薦”的結果。
對所有股票的跌幅預測結果絕對值進行從大到小排序后取出前h個,同時要求這些股票對應的3種趨勢3個分類結果的標簽完全一致。這些股票作為“大跌預警”的結果。
綜上所述,本發明公開了一種基于股票預測走勢進行分類和推薦的方法。方法推薦的依據是基于股票未來一段時間的預測走勢,推薦的股票是取自于三種走勢分類標簽完全一致的股票,可靠性較高。
本發明方法同樣可應用于證券類具有時間序列特征的數據,如基金、期貨等。因此,盡管為說明目的公開了本發明的具體實施例和附圖,其目的在于幫助理解本發明的內容并據以實施,但是本領域的技術人員可以理解:在不脫離本發明及所附的權力要求的精神和范圍內,各種替換、變化和修改都是不可能的。因此,本發明不應局限于最佳實施例和附圖所公開的內容。當前公開的實施例在所有方面應被理解為說明性的而非對其請求保護的范圍的限制。