一种基于时态联动挖掘的股票预测方法与流程

文档序号:12126548阅读:423来源:国知局
一种基于时态联动挖掘的股票预测方法与流程

本发明涉及股票数据挖掘技术领域,尤其是涉及一种基于时态联动挖掘的股票预测方法。



背景技术:

股票作为金融市场最主要的金融工具之一,其价格波动能否预测、以及用何种方法进行预测,一直以来都是金融领域研究的焦点问题之一。

股票价格预测是指根据调查统计收集的股票价格数据,从股票市场的历史、现状和规律性出发,采用科学预测方法对股票价格未来变化趋势做出准确预测。

在当前的股票分析中,普遍采用的方法有两种:基本分析法和技术分析法。基本分析法通过对影响股市的供求关系的基本因素进行分析,确定股票的真正价值,判断股市走势,提供投资者选择股票的依据。而技术分析关心证券市场本身的变化,通过对股价、成交量以及涨跌指数等技术指标的分析,研究市场过去及现在的行为反应,以推测未来价格的变动趋势。本发明方法属于技术分析的方法。

国内外对股票价格进行预测的模型种类很多。但依据其建模理论不同,可将这些预测模型划分为两个大类:一类是以统计原理为基础的传统型波动率预测模型,目前较为流行且具有代表性的模型包括ARCH模型和SV模型;另一类是以神经网络、灰色理论、支持向量机等为基础的创新型预测模型。这两类模型在对股票价格进行预测时各有特点,但其预测的准确度仍有待提高。

本发明提出的基于时态联动挖掘的股票预测方法可对股票近期几天是否大涨或大跌的情况进行预测,从而为股民决策提供较大的指导价值。



技术实现要素:

本发明公开了一种基于时态联动挖掘的股票预测方法。方法用于挖掘类似的规则:如果A股票大涨(或大跌),那么k日后B股票大涨(或大跌)的概率为x%。方法分为两个阶段:规则挖掘阶段和规则应用阶段。在规则挖掘阶段,针对所有股票的每日涨跌幅数据,经过简单量化后,统计不同股票之间在间隔的一小段时间内联动大涨或大跌的次数,同时计算出现该联动的支持度和置信度,最后生成联动规则。在规则应用阶段,每日根据每只股票的涨跌情况进行触发生成,生成的规则分为大涨正面、大涨反面、大跌正面、大跌反面四种类型。方法可为股票短线操作提供决策支持。

本发明方法是一种近期预测的方法,即如1日预测,2日预测,3日预测等;预测结果简化地分为4类:大涨(>=2%)、不会大涨(<2%)、大跌(<=-2%)、不会大跌(>-2%),括号内的值为类别对应的涨跌幅定义。

本发明方法将首先挖掘如下这样类似的规则,“如果A股票大涨(或大跌),那么k日后B股票大涨(或大跌)的概率为x%”,在得到规则后,根据每日股票的具体涨跌幅情况,对联动股票在近期几天的大涨或大跌,以及相应的概率做出预测。

假设股票列表为S,S=[S1, S2,…,Si,…,Sn],n为股票池中股票的数量,如中国上市股票的数量或美国上市股票的数量。本发明方法分为两个阶段,规则挖掘阶段和规则应用阶段。具体步骤如下:

一、规则挖掘阶段

(1)对基础统计数据及映射数据进行准备;

(2)加载大涨和大跌的股票数据,并各自填充到二维统计数组里面;

(3)基于统计数组进行时态间隔时间为1天、2天和3天的联动统计,包括大涨联动统计和大跌联动统计;

(4)基于联动统计结果,挖掘生成大涨的正反面规则和大跌的正反面规则;

二、规则应用阶段

(5)加载每日大涨股票的涨幅,搜索应用大涨的正反面规则,生成联动规则结果;

(6)加载每日大跌股票的跌幅,搜索应用大跌的正反面规则,生成联动规则结果。

其中,步骤(1)的基础统计数据是指每只股票的大涨次数、大跌次数和历史交易的总次数;映射数据是指股票与编号的双向哈希映射表:Hash(Stock:ID) 和Hash(ID:Stock);交易日期与编号的双向哈希映射表:Hash(Date:ID)和Hash(ID:Date)。

其中,步骤(2)的对二维统计数组的填充,是指以所有股票的数量和所有交易日期的数量交叉形成两个二维数组StatUp和StatDown,而后根据每只股票大涨的交易日期在StatUp数组的相应位置填1,根据每只股票大跌的交易日期在StatDown数组的相应位置填1,其余位置填0。

其中,步骤(3)的联动统计分为大涨联动统计和大跌联动统计。基于StatUp数组,进行时态间隔时间为1天、2天和3天的大涨联动统计,基本过程是对于每一行,即每只股票,逐位扫描StatUp数组,在碰到1的时候,对该列位置的前1、2、3列分别进行竖方向的扫描,并分别对1出现的个数进行统计累加,最后计算该股票与其他各股票大涨联动统计的支持度和置信度;大跌联动统计基于StatDown数组,其计算过程类似大涨联动统计。

其中,步骤(4) 的规则生成,在设定参数最小支持度minSupport、最小置信度minConfidence和最少交易次数minTradeCount参数、最大置信度maxConfidence后,大涨正面规则是指对于每只股票获取支持度大于minSupport,置信度大于minConfidence,交易次数大于minTradeCount的元组;大涨反面规则是指支持度大于minSupport,置信度小于maxConfidence,交易次数大于minTradeCount的元组;大跌正面规则是指支持度大于minSupport,置信度大于minConfidence,交易次数大于minTradeCount的元组;大跌反面规则是指支持度大于minSupport,置信度小于maxConfidence,交易次数大于minTradeCount的元组。

其中,步骤(5)在应用大涨的正反面规则,进行联动结果的生成过程中,由于是要生成规则右边涉及股票的挖掘结果,因此对于每只股票的代码,是通过匹配规则右边的股票来获取规则左边所有相关的股票代码,然后判断这些相关股票代码是否在当日大涨了,以此来确定规则是否适用。如果适用成功,则输出相应联动规则。

其中,步骤(6)在应用大跌的正反面规则,进行联动结果的生成过程中,由于是要生成规则右边涉及股票的挖掘结果,因此对于每只股票的代码,是通过匹配规则右边的股票来获取规则左边所有相关的股票代码,然后判断这些相关股票代码是否在当日大跌了,以此来确定规则是否适用。如果适用成功,则输出相应联动规则。

附图说明

图1 是本发明基于时态联动挖掘的股票预测方法的流程图。上半部分为规则的挖掘过程,下半部分为规则的应用过程。

图2 是基于本发明方法输出的某一股票近期的大涨正面规则。

图3 是基于本发明方法输出的某一股票近期的大涨反面规则。

图4 是基于本发明方法输出的某一股票近期的大跌正面规则。

图5 是基于本发明方法输出的某一股票近期的大跌反面规则。

图2~图5的结果是在设定最小支持度minSupport=20%、最少交易次数minTradeCount=500,正面规则的最小置信度minConfidence=25%,反面规则的maxConfidence=5%后,以某一交易日如2016/09/29的收盘数据进行时态联动挖掘后得到的。

具体实施方式

下面结合附图和实例,对本发明进行详细的描述。

本发明方法首先挖掘如下这样类似的规则,“如果A股票大涨(或大跌),那么k日后B股票大涨(或大跌)的概率为x%”在得到规则后,根据每日股票的具体涨跌幅情况,对联动股票在近期几天的大涨或大跌,以及相应概率做出预测。

假设股票列表为S,S=[S1, S2,…,Si,…,Sn],n为股票池中股票的数量,如中国上市股票的数量或美国上市股票的数量。本发明方法分为两个阶段:规则挖掘阶段和规则应用阶段。

一、规则挖掘阶段。

本发明方法针对所有股票的日线数据进行时态联动规则的挖掘。先对预测结果4个分类的对应涨跌幅作定义: 大涨(>=2%)、不会大涨(<2%)、大跌(<=-2%)、不会大跌(>-2%)。具体定义数值作为参数可调。本发明中提到的“大涨”或“大跌”皆表示了其对应的涨跌幅。

(1)基础统计数据及映射数据准备。

1.1 获取所有股票的列表,并为每只股票从0开始进行顺序编号,形成股票与编号的哈希映射表Hash(Stock:ID),和编号与股票的哈希映射表Hash(ID:Stock)。

1.2 通过上证指数,获取某个时间以来(如2005年1月1日)所有交易日期,并对日期从小到大排序后,从0开始顺序编号,形成交易日期与编号的哈希映射表Hash(Date:ID),和编号与交易日期的哈希映射表Hash(ID:Date)。

1.3 获取每只股票在历史交易中的大涨次数和大跌次数,形成股票与大涨次数的哈希映射表Hash(Stock:UpCount),和股票与大跌次数的哈希映射表Hash(Stock:DownCount)。

1.4获取每只股票的历史交易的次数,形成股票与交易次数的哈希映射表Hash(Stock:Count)。

(2)大涨和大跌股票数据的加载。

2.1 定义两个二维统计数组: StatUp[n,m] 和 StatDown[n,m],其中n代表所有股票的数量,m代表上证指数某段时间以来交易日期的数量,即所有交易日期的数量。

2.2 获取每只股票大涨的交易日期,以1填充StatUp[n,m]的相应位置。具体为:对于每只股票,在得到其股票代码及大涨的交易日期后,通过Hash(Stock:ID)获取行编号,通过Hash(Date:ID)获取列编号,最后设置StatUp数组的行列编号对应位置为1。其余位值设置为0。

2.3 获取每只股票大跌的交易日期,以1填充StatDown[n,m]的相应位置。具体为:对于每只股票,在得到其股票代码及大跌的交易日期后,通过Hash(Stock:ID)获取行编号,通过Hash(Date:ID)获取列编号,最后设置StatDown数组的行列编号对应位置为1。其余位值设置为0。

(3)时态联动统计。

通过以上步骤,所有待统计数据已经准备好了。接下来对StatUp和StatDown两个数组分别进行时态联动统计。时态是指不同股票间隔一小段时间的状态,而时态联动是指对间隔小段时间的不同股票的状态进行统计,以挖掘这些状态间是否有联动的现象。为避免数据量过于庞大,时态间隔时间仅取3种情况:间隔1天,间隔2天,间隔3天。

3.1 大涨联动统计。分别对时态间隔时间的3种情况进行大涨的联动统计。具体为:

a. 设置3个一维跟踪数组Stat1[n]、Stat2[n]、Stat3[n],n为所有股票的数量;

b. 对于StatUp中的每一行,逐位进行扫描,如果位值为1,则进入下一步,否则跳过;

c. 获取该1位置所对应的列编号,对该列位置减1,减2和减3的三列进行竖的扫描,如果位值为1,则将该值累加统计到跟踪数组中。列位置减1,减2和减3的三列的扫描统计数据分别记录到Stat1[n]、Stat2[n]、Stat3[n]。跟踪数组的每行实际上是与每只股票一一对应的;

d.计算支持度和置信度。对于3个跟踪数组的每一行,通过Hash(ID:Stock)获取股票代码,通过Hash(Stock:UpCount)获取大涨次数,通过Hash(Stock:Count)获取交易次数。最后大涨联动统计的支持度和置信度定义为:

支持度up = 100*大涨次数/交易次数;

置信度up=100*跟踪数组的统计次数/大涨次数。

3.2 大跌联动统计。分别对时态间隔时间的3种情况进行大跌的联动统计。具体过程与大涨联动统计过程类似。统计对象为StatDown二维数组,大跌次数通过Hash(Stock:DownCount)获得。最后大跌联动统计的支持度和置信度定义为:

支持度down=100*大跌次数/交易次数;

置信度down=100*跟踪数组的统计次数/大跌次数。

(4)规则挖掘生成与挑选。规则的挖掘生成过程分为两种:正面规则和反面规则。

4.1 大涨联动规则生成。

大涨正面规则生成:设定最小支持度minSupport、最小置信度minConfidence和最少交易次数minTradeCount参数,基于大涨联动统计和计算的结果,获取支持度大于minSupport,置信度大于minConfidence,交易次数大于minTradeCount的元组,这些元组构成大涨正面规则的元组组合:

UpRule+ = {StockA,StockB,Interval,Support,Confidence}

其中,每条元组代表股票StockA大涨,在间隔时间Interval后,在支持度Support下,股票StockB大涨的置信度(或概率)为Confidence。

大涨反面规则生成:设定最小支持度minSupport、最大置信度maxConfidence和最少交易次数minTradeCount参数,基于大涨联动统计和计算的结果,获取支持度大于minSupport,置信度小于maxConfidence,交易次数大于minTradeCount的元组,这些元组构成大涨反面规则的元组组合:

UpRule- = {StockA,StockB,Interval,Support,Confidence}

其中,每条元组代表股票StockA大涨,在间隔时间Interval后,在支持度Support下,股票StockB不会大涨的置信度(或概率)为Confidence。

4.2 大跌联动规则生成。

大跌正面规则生成:设定最小支持度minSupport、最小置信度minConfidence和最少交易次数minTradeCount参数,基于大跌联动统计和计算的结果,获取支持度大于minSupport,置信度大于minConfidence,交易次数大于minTradeCount的元组,这些元组构成大跌正面规则的元组组合:

DownRule+ = {StockA,StockB,Interval,Support,Confidence}

其中,每条元组代表股票StockA大跌,在间隔时间Interval后,在支持度Support下,股票StockB大跌的置信度(或概率)为Confidence。

大跌反面规则生成:设定最小支持度minSupport、最大置信度maxConfidence和最少交易次数minTradeCount参数,基于大跌联动统计和计算的结果,获取支持度大于minSupport,置信度小于maxConfidence,交易次数大于minTradeCount的元组,这些元组构成大跌反面规则的元组组合:

DownRule- = {StockA,StockB,Interval,Support,Confidence}

其中,每条元组代表股票StockA大跌,在间隔时间Interval后,在支持度Support下,股票StockB不会大跌的置信度(或概率)为Confidence。

二、规则应用阶段。

规则的应用频率是每天一次。规则的应用对象是每只股票。在每个交易日交易结束后即可应用规则对每只股票进行预测。具体过程如下。

(1)当日大涨和大跌股票数据的加载。

每个交易日交易结束后,获取每天大涨股票的当日涨幅,形成股票与涨幅的哈希映射表Hash(Stock:ChangeUp);获取每天大跌股票的当日跌幅,形成股票与跌幅的哈希映射表Hash(Stock:ChangeDown)。

(2)大涨时态联动规则应用。

2.1 大涨正面规则应用:

基于UpRule+ = {StockA,StockB,Interval,Support,Confidence},对于每只股票的代码,通过匹配StockB列,获取StockA列所有相关的股票代码,如果元组StockA列的股票代码存在于Hash(Stock:ChangeUp),则说明规则条件成立,获取StockA的具体涨幅X%,生成联动规则: StockA大涨X%,StockB在Interval天后大涨的概率为Confidence%。

2.2 大涨反面规则应用:

基于UpRule- = {StockA,StockB,Interval,Support,Confidence},对于每只股票的代码,通过匹配StockB列,获取StockA列所有相关的股票代码,如果元组StockA列的股票代码存在于Hash(Stock:ChangeUp),则说明规则条件成立,获取StockA的具体涨幅X%,生成联动规则: StockA大涨X%,StockB在Interval天后不会大涨的概率为Confidence%。

(3)大跌时态联动规则应用。

3.1大跌正面规则应用:

基于DownRule+ = {StockA,StockB,Interval,Support,Confidence},对于每只股票的代码,通过匹配StockB列,获取StockA列所有相关的股票代码,如果元组StockA列的股票代码存在于Hash(Stock:ChangeDown),则说明规则条件成立,获取StockA的具体跌幅X%,生成联动规则:StockA大跌X%,StockB在Interval天后大跌的概率为Confidence%。

3.2 大跌反面规则应用:

基于DownRule- = {StockA,StockB,Interval,Support,Confidence},对于每只股票的代码,通过匹配StockB列,获取StockA列所有相关的股票代码,如果元组StockA列的股票代码存在于Hash(Stock:ChangeDown),则说明规则条件成立,获取StockA的具体跌幅X%,生成联动规则:StockA大跌X%,StockB在Interval天后不会大跌的概率为Confidence%。

综上所述,本发明公开了一种基于时态联动挖掘的股票预测方法。方法可用于挖掘类似这样的规则:“如果A股票大涨(或大跌),那么k日后B股票大涨(或大跌)的概率为x%”。需要说明的是,大涨正面、大涨反面、大跌正面、大跌反面4种类型规则具体应用到某一只股票时,并不一定会生成联动规则,因为触发规则的条件不一定成立。本发明方法可以预测股票近期几个交易日的大涨或大跌的概率,从而为股票短线操作提供决策支持。

本发明方法同样可应用于证券类具有时间序列特征的数据,如基金、期货等。因此,尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权力要求的精神和范围内,各种替换、变化和修改都是不可能的。因此,本发明不应局限于最佳实施例和附图所公开的内容。当前公开的实施例在所有方面应被理解为说明性的而非对其请求保护的范围的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1