一种基于同匹配日期相似走势的股票预测方法技术领域
本发明涉及股票数据挖掘技术领域,尤其是涉及一种基于同匹配日期相似走势的
股票预测方法。
背景技术
股票市场是证券业和金融业必不可少的重要组成部分,受到投资者的普遍关注。
有效的股票预测在金融投资领域占有重要地位,因此对股票价格进行分析和预测有着非常
重大的理论意义和实践价值。
股票价格呈波动状态,在短期内看似无序,但其波动在长时间序列中却有着一定
的规律,即一定的趋势性。股票价格变化受到政治、金融状况、用户心理等多种因素的影响,
其变化具有非线性、突变性、随机性等特点,是一种复杂的非线性系统。
随着股市的发展,以及对于股市规律认识的加深,人们提出各种各样的股市预测
方法,比较常用的方法有回归分析、灰色系统分析、时间序列分析, 神经网络、支持向量机
等,这些预测方法都在一定程度上揭示了股市的运行规律,但应用效果并不理想。
发明内容
本发明公开了一种基于同匹配日期相似走势的股票预测方法。其主要思想是:对
于待预测的股票,取其近期一段时间的涨跌幅走势,将该走势与所有股票的历史数据走势
进行逐一匹配,首先得到与每只股票最相似趋势匹配的交易日期;其次对所有的匹配交易
日期进行次数的统计,获取次数最多的同匹配日期;然后在具有同匹配日期的相似的股票
走势里,获取相似度最高的前几只股票走势;最后以最相似股票在同匹配日期之后的走势
进行统计和还原计算出预测的走势。方法即可用于近期的预测,也可用于短期的预测,可为
股票短线操作提供决策支持。
这里近期预测是指1~5个交易日的预测,如1日预测、2日预测、3日预测;短期预测
是指20~60个交易日的预测,如20日预测,30日预测,60日预测等。
本发明方法的步骤如下:
(1) 对所有股票数据进行预处理;
(2) 加载待预测股票的数据和所有股票的待匹配历史数据;
(3) 将待预测股票与所有的股票进行移动加权匹配;
(4) 根据与每只股票的匹配日期进行分类统计并排序,得到次数统计值最大的同匹配
日期;
(5) 在同匹配日期的相似股票里面,获取最相似的前几只股票的匹配段;
(6) 以最相似股票在同匹配日期之后的走势进行统计和还原计算出待预测股票的后
期走势。
其中,步骤(1)中的预处理包括两类:一是对所有股票的每日的开盘价、最高价、最
低价相对于当天收盘价计算增减幅度;二是对所有股票当日的成交量、换手率等计算相对
于前一交易日的增减幅度。
其中,步骤(2)中的待预测股票的数据加载,是指获取待预测股票的近L个交易日
的涨跌幅数据,一般L的取值要求大于20;所有股票待匹配历史数据的加载是指获取每只股
票某个时间点以来(如2005年1月1日),到当前交易日的前L个交易日的数据,包括涨跌幅和
对应的交易日期。
其中,步骤(3)中,待预测股票与所有的股票进行移动加权匹配是指将待预测股票
长度L的涨跌幅数据段与每只股票的历史数据等长的走势片段逐一进行移动匹配。匹配过
程考虑各种因素,包括对位置加权和对同向性进行加权。与每只股票移动匹配后,获取最小
的匹配值和对应位置的匹配日期。
其中,步骤(4)中,根据待预测股票与每只股票的匹配日期进行分类统计,目的在
于获取与待预测股票匹配在同一日期的股票数量。对日期统计量进行排序后,获取次数统
计值最大的同匹配日期。
其中,步骤(5)中,在同匹配日期的前提下,提取出相似的股票段,在这些相似的股
票段里面,根据原先已经计算好的匹配值进行从小到大排序后,获取最相似的前几只股票
的匹配段。
其中,步骤(6)中,基于相似匹配段和同匹配日期,进行待预测股票后期走势的生
成。首先需要获取同匹配日期的相似股票之后的后期走势数据,包括涨跌幅和步骤1已经计
算的增减幅度各变量。其次需要获取待预测股票当前交易日的数据,包括当日的收盘价,以
及在步骤1中有计算相对量的原始字段。最后以待预测股票的当前交易日的数据作为“前一
交易日”基准数据,嫁接相似股票匹配日期后的走势数据,计算还原成待预测股票的走势数
据。
附图说明
图1 是本发明基于同匹配日期相似走势股票预测方法的流程图。
图2 是基于本发明方法输出的某一股票短期走势的预测结果。
图3 是基于本发明方法输出的某一股票近期预测结果。
图2和图3结果的参数取值为:待匹配股票段的长度L=30;短期预测交易日数N=30;
近期预测交易日数R=3。图2虚线之后为预测结果,包括每日收盘价、开盘价、最高价、最低
价、涨跌幅、成交量等方面的预测。图3预测结果包括近3天的可能涨跌幅和可能涨跌概率。
具体实施方式
下面结合附图和实例,对本发明进行详细的描述。
假设股票列表为S,S=[S1, S2,…,Si,…,Sn],n为股票池中股票的数量,如中国上
市股票的数量或美国上市股票的数量。对于每只股票,假设待预测的股票为Sm,m=1,…,n
具体预测步骤如下。
一、股票数据预处理。
假设对于股票列表S中的每只股票有如下数据字段:开盘价Open,收盘价Close,
最高价High,最低价Low,涨跌幅Change,成交量Volume,换手率Turnover等,其中收盘价
Close为前复权价格。
1.1计算相对于当天收盘价Close的增减幅度,并添加新字段。需要计算的字段包
括开盘价Open、最高价High和最低价Low,具体如下:
开盘价增减幅度StdOpen= 100*(Open-Close)/Close;
最高价增减幅度StdHigh= 100*(High-Close)/Close;
最低价增减幅度StdLow= 100*(Low-Close)/Close。
1.2计算相对前一交易日的增减幅度,并添加新字段。需要计算的字段包括成交量
Volume和换手率Turnover, 具体如下:
成交量增减幅度StdVolume= 100*(Volume- lastVolume)/ lastVolume, 其中,
lastVolume代表前一交易日的成交量;
换手率增减幅度StdTurnover= 100*(Turnover- lastTurnover)/ lastTurnover, 其
中, lastTurnover代表前一交易日的换手率。
如果有其他字段需要预测,如成交笔数、成交金额等,可类似计算出对应的相对
值,添加相应的字段。计算所得相对值将在本方法的最后一步中使用。
二、股票数据的加载。
该步骤主要完成数据的准备过程,从原始股票数据库中获取待预测股票的近期交
易日数据和待匹配的股票的历史交易日数据。
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位置对应交易日期。
三、股票间移动加权匹配。
该步骤主要完成待预测股票与某只待匹配股票之间的匹配过程,并获取得到与待
匹配股票匹配的最小值和对应匹配日期。
匹配过程在A和Bi展开,A的长度为L, Bi的长度为K, K>=L,具体匹配过程如下:
3.1 以步长为1,循环从Bi中获取长度L的涨跌幅数据,记为B,
3.2 A与B进行比较,得到匹配值。A、B的比较过程可以灵活进行,组合以下多种方式进
行比较,
(1)A、B相应位置的涨跌幅直接相减取绝对值;
(2) 对位置加权,越靠近当前交易日权值越高;
(3) 考虑A、B涨跌幅的同向性加权,同涨或同跌的位置赋予较大的权重;
最后将三种因素相乘作为最终的比较距离。
3.3 记录所有比较的匹配值的最小值和其对应的匹配日期,作为A与Bi匹配的最
终结果,记为Pi, i=[1,n],
Pi=[Vi,Di]
其中,Vi代表A与Bi的最小匹配值,Di代表最小匹配值对应的匹配日期。
四、根据匹配日期进行分类统计并排序。
在上一步骤中,当待预测股票完成与所有待匹配股票的匹配后,得到数组P,其中
Pi=[Vi,Di], i=[1,n]。接下来根据匹配日期进行分类统计,目的在于获取与待预测股票匹
配在同一日期的股票数量,具体步骤如下。
4.1 根据匹配日期分类统计。遍历数组P,当出现新的Di时,Di对应的日期统计量
Counti初始值为1,即Counti=1;当Di已经出现过时,对应的日期统计量Counti加1,即Counti=
Counti+1。
4.2 对日期统计量进行排序。根据日期统计量Counti的大小,从大到小进行排序,
最后得到一个匹配日期对应的匹配数量的数组M=[D,Count],其中,D代表匹配日期列,
Count代表匹配数量列。
五、基于同匹配日期和匹配值得到前几只相似的股票。
该步骤的目的在于获取T只最相似股票。具体过程为:
5.1 基于M数组,取得第一条记录,即具有最多匹配数量的匹配日期,记为Dt;
5.2 根据Dt对P数组的D列进行过滤,过滤后根据V列值从小到大排序后,获取数值最小
的前T只股票作为待预测股票的最相似的股票。
这里T的取值不宜太大,因为T的取值代表着有T种的短期预测结果;也不宜太小,
因为T的取值也应用于近期预测的统计。一般T取10左右。
六、获取同匹配日期的相似股票之后的后期走势数据。
该步骤获取相似股票匹配日期后的N个交易日(N一般取为20-30)数据,获取的数
据包括涨跌幅Change,以及步骤1中新增的各增减幅度字段,这里即为StdOpen、StdHigh、
StdLow、StdVolume、StdTurnover等。
由于相似的T只股票都具有同样的匹配日期,因此直接从股票数据库中获取该匹
配日期后的N个交易日(N一般取为20-30)数据。
具体相同匹配日期的相似股票,其后期的走势显得比较一致。
七、获取待预测股票当前交易日的数据。
该步骤获取待预测股票当前交易日数据,获取的数据包括收盘价Close(已前复
权),以及步骤1中有计算相对前一交易日增加幅度的原始字段,这里即为Volume,
Turnover。
八、股票预测结果生成。
该步骤基于前几个步骤已经准备好的数据生成预测结果。基本思想是,以待预测
股票的当前交易日的数据作为“前一交易日”基准数据,结合相似股票匹配日期后的走势数
据,计算还原成待预测股票的走势数据。前面步骤获得的每一只相似股票的走势都将还原
成一种预测结果,具体过程如下。
8.1 将待预测股票当前交易日的数据Close, Volume, Turnover置为前一交易日
lastClose, lastVolume, lastTurnover结果;获取某一只相似股票匹配日期后的走势数
据。
8.2还原下一交易日的预测数据,还原过程为:
下一交易日收盘价Close = lastClose + lastClose*Change/100;
下一交易日开盘价Open = Close + Close*StdOpen/100;
下一交易日最高价High = Close + Close*StdHigh/100;
下一交易日最低价Low = Close + Close*StdLow/100;
下一交易日成交量Volume = lastVolume + lastVolume *StdVolume/100;
下一交易日换手率Turnover = lastTurnover + lastTurnover *StdTurnover/100。
8.3 将当前交易日的收盘价Close,成交量Volume,换手率Turnover置为前一交易
日lastClose, lastVolume, lastTurnover结果。
8.4 重复执行8.2,8.3步骤,直至还原出期望的全部交易日预测数据。
8.5 上述8.1~8.4步骤将得到基于某一只相似股票走势的预测结果。将步骤5得到
的T只最相似股票运用上述步骤计算后,将可得到待预测股票的T个走势预测结果。这些结
果可作为一种短期的预测。
8.6 取出T个走势预测结果的前R天数据,形成二维数组Ftr, t=[1,…T],r=[1,…
R],对Ftr的每一列取平均值,该平均值作为近期对涨跌幅的预测。另外对T个列的数值分别
统计大于0、小于0、近似等于0(如-0.2到0.2区间)的个数,计算占总数T的比例,该比例值作
为近期对涨跌概率的预测。
综上所述,本发明提出了一种基于同匹配日期相似走势的股票预测方法。方法既
可用于近期的预测(如1,2,3个交易日),也可用于短期的预测(如10,20,30个交易日)。方法
在不同匹配基础上的预测结果之间较为一致。
本发明方法同样可应用于证券类具有时间序列特征的数据,如基金、期货等。因
此,尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内
容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权力要求的精
神和范围内,各种替换、变化和修改都是不可能的。因此,本发明不应局限于最佳实施例和
附图所公开的内容。当前公开的实施例在所有方面应被理解为说明性的而非对其请求保护
的范围的限制。