一种基于拐点检测的股票历史数据分段方法技术领域
本发明涉及股票数据挖掘技术领域,尤其是涉及一种基于拐点检测的股票历史数
据分段方法。
背景技术
股票时间序列的分析预测问题一直是一个研究热点。现有对股票价格的预测研究
主要有两种方法:一种是关注短期内股票价格变化的预测,该研究方法不仅需要解决数据
高频变化带来的问题,同时在实际应用中不适合中长期投资交易;另一种研究方法关注对
股票价格拐点的预测,进而确定股票交易信号。
实际投资中,在股票价格拐点处进行交易能够获得最优的收益,因此认为股票价
格拐点是股票最佳交易信号。通常,相比价格的短期变动,价格拐点之间具有更长的时间间
隔,可以避免股票数据高频变化带来的影响。如果能对股票价格拐点进行准确的预测,就能
够确定股票的交易信号,从而给投资者带来更大的收益。
然而,对股票交易信号的预测需要解决拐点提取、预测模型建立等一系列问题,导
致目前仍没有很好的预测方法。本发明方法在于解决预测模型的训练数据问题,通过获取
所有股票历史数据中的上升走势段和下降走势段,以用于其它拐点预测模型的训练。
发明内容
本发明公开了一种基于拐点检测的股票历史数据分段方法。方法首先加载股票的
涨跌幅数据并预处理为每日基准收盘价;而后在初始高低点检测和初始模式设置的基础
上,针对不同模型进行股票拐点检测,具体分为在低点找高点模式和在高点找低点模式;最
后对高位拐点和低位拐点分别进行存储。基于拐点分段后,则可以区分获得股票的上升走
势段和下降走势段。这些趋势段可为其它股票数据挖掘方法的数据训练提供支持,从而正
确寻找股票拐点。
本发明方法进行拐点检测的特点在于快速、直观。仅需一遍扫描即可获得股票的
全部拐点,同时拐点涉及的参数很直观,容易设置。
假设股票列表为S,S=[S1, S2,…,Si,…,Sn],n为股票池中股票的数量,如中国上
市股票的数量或美国上市股票的数量。
对于每只股票Sm,m=1,…,n ,基于其历史数据进行拐点检测的具体步骤如下:
(1)加载股票数据,同时进行数据预处理操作;
(2)数据起始位置附近初始高低点检测和初始模式设置;
(3)交替以不同模式遍历股票,快速进行拐点的检测;
(4)对高位拐点和低位拐点分类存储;
(5)获取上升走势段集合或下降走势段集合作为其他模型的训练数据源。
其中,步骤(1)中每只股票加载的数据为以某个时间点作为起点,如2005-01-01,
截取自该时间点以来到现今的涨跌幅数据,以及对应的交易日期。数据的预处理操作为设
置起始时间点的收盘价为1作为基准,其后续时间点的收盘价根据涨跌幅进行变换得到,如
第二天的涨跌幅为Change2,则第二天的基准收盘价为:1*(1+Change2/100); 第三天的涨跌
幅为Change3,则第三天的基准收盘价为:1*(1+Change2/100) (1+Change3/100);以此类推,
最后形成该股票的基准收盘价数组A。
其中,步骤(2)的数据起始位置附近的初始高低点检测是指基于基准收盘价数组A
的前30个数据,比较该段数据的大小,获取最大值Highest和最小值Lowest,及其对应的位
置 HighPos和LowPos;而后比较HighPos和LowPos的大小,如果HighPos<LowPos,则初始模
式设置为在高点找低点的模式;反之如果HighPos>LowPos,则初始模式设置为在低点找高
点的模式。
其中,步骤(3)的交替以不同模式遍历股票是指在低点找高点模式和在高点找低
点模式,随着顺序遍历基准收盘价数组A,这两种模式交替进行。简单的说就是找完高点,下
一步找低点;找完低点,下一步找高点。
在低点找高点的过程中,将当前位置与低点进行比较,设置临时的高点;若下一位
置大于临时高点,则更新临时高点,反之低于临时高点,则计算当前值相对于临时高点的跌
幅;若跌幅大于预先设定的阈值并且与临时高点的位置距离大于预先设定的距离,则记录
临时高点为高位拐点,同时转为高点找低点模式。
在高点找低点的过程中,将当前位置与高点进行比较,设置临时的低点;若下一位
置小于临时低点,则更新临时低点,反之高于临时低点,则计算当前值相对于临时低点的涨
幅;若涨幅大于预先设定的阈值并且与临时低点的位置距离大于预先设定的距离,则记录
临时低点为低位拐点,同时转为低点找高点模式。
其中,步骤(4) 高位拐点和低位拐点分类存储是指步骤3后,将股票的所有拐点,
包括高位拐点和低位拐点。高位拐点代表先涨后跌的拐点模式;低位拐点代表先跌后涨的
拐点模式。对这两种类型的拐点分别按记录的交易日期时间点顺序存储。
其中,步骤(5) 获取上升走势段集合或下降走势段集合作为其他模型的训练数据
源。获取上升走势段集合的过程为:对于每个高位拐点,结合交易日期顺序,获取当前拐点
到前一个低位拐点的数据段,作为股票上升走势的训练数据;对于每个低位拐点,结合交易
日期顺序,获取当前拐点到前一个高位拐点的数据段,作为股票下降走势的训练数据。之后
可结合数据挖掘方法,如聚类分析,支持向量机、数据分类等方法对训练数据进行挖掘。
附图说明
图1 是本发明基于拐点检测的股票历史数据分段方法的流程图。
图2 是股票进行拐点检测后不同类型拐点顺利记录的示意图。图中具体为股票招
商银行(600036),基于其2005年1月1日以来的股票时间序列,在阈值取值v1=10,v2=10的情
况下,获得的拐点。其中拐点类型0代表低位拐点,1代表高位拐点。
具体实施方式
下面结合附图和实例,对本发明进行详细的描述。
对股票交易信号进行预测的首要问题是如何确定股票价格历史数据中的交易点,
即拐点。在对每只股票的历史数据进行拐点检测后,获得的拐点(分为高位拐点和低位拐
点)及其对应的数据分段可以作为当前交易点是否为拐点及后期走势的判断基础。
本发明方法进行拐点检测的特点在于快速、直观。仅需一遍扫描即可获得股票的
全部拐点,同时拐点涉及的参数很直观,容易设置。
假设股票列表为S,S=[S1, S2,…,Si,…,Sn],n为股票池中股票的数量,如中国上
市股票的数量或美国上市股票的数量。
对于每只股票Sm,m=1,…,n ,基于其历史数据进行拐点检测的具体步骤如下。
一、股票数据预处理及加载。
1.1 对于股票时间序列Sm,以某个时间点作为起点,如2005-01-01,截取自该时间
点以来到现今的数据。
1.2 令起始时间点的收盘价以1为基准,其后续时间点的收盘价根据涨跌幅进行
变换得到,如第二天的涨跌幅为Change2,则第二天的基准收盘价为:1*(1+Change2/100);
第三天的的涨跌幅为Change3,则第三天的基准收盘价为:1*(1+Change2/100) (1+Change3/
100);以此类推。最后形成一个基准收盘价数组,记为A,
A=[a1,a2,…,ai,…aL]
其中,ai代表第i个交易日的基准收盘价。L为股票Sm的总交易日次数。
1.3 同时获取每个交易日对应的股票交易日期,记为D,
D=[d1,d2,…,di,…dL]
其中,di代表股票的第i个交易日所对应的交易日期。
二、初始高低点检测和初始模式设置。
2.1 基于基准收盘价数组A的前30个数据,比较该段数据的大小,获取最大值
Highest和最小值Lowest,及其对应的位置 HighPos和LowPos。
2.2 比较HighPos和LowPos的大小,
如果HighPos=LowPos,则属于非正常情况,跳过该股票的拐点检测;
如果HighPos<LowPos,则设置模式为在高点找低点的模式;
如果HighPos>LowPos,则设置模式为在低点找高点的模式。
2.3 设置模式下的初始变量。在高点找低点的模式,设置临时低点TempLow为当前
高点的基准收盘价数值;在低点找高点的模式,设置临时高点TempHigh为当前低点的基准
收盘价数值。
三、不同模式下的拐点检测。
根据当前的模式,以搜索到的高点或低点为起点, 顺序遍历基准收盘价数组A。
3.1在低点找高点模式。
对于当前的基准收盘价ai,分三种情况进行处理,
(1)若ai大于临时高点TempHigh,则令TempHigh=ai,同时记录相应的交易日期di和位置
i;
(2)若ai大于或等于ai-1,则不做处理,继续遍历;
(3)若ai小于ai-1,首先计算当前ai相对于临时高点TempHigh的跌幅,若跌幅绝对值大
于预先设置的阈值v1, 进一步计算当前ai位置与临时高点TempHigh位置的距离,并判断距
离是否大于预先设置的阈值v2,若两个条件都满足,则此时产生新的高位拐点,拐点为当前
记录的临时高点TempHigh位置,记录该拐点的交易日期,同时将扫描的起始位置设置回到
该拐点位置,接下来设置新的临时低点TempLow为TempHigh值,最后设置新搜索模式为在高
点找低点的模式。一般取值v1=10,v2=10。
3.2 在高点找低点模式。
对于当前的基准收盘价ai,分三种情况进行处理,
(1)若ai小于临时低点TempLow,则令TempLow=ai,同时记录相应的交易日期di和位置i;
(2)若ai小于或等于ai-1,则不做处理,继续遍历;
(3)若ai大于ai-1,首先计算当前ai相对于临时低点TempLow的涨幅,若涨幅大于预先设
置的阈值v1, 进一步计算当前ai位置与临时低点TempLow位置的距离,并判断距离是否大
于预先设置的阈值v2,若两个条件都满足,则此时产生新的低位拐点,拐点为当前记录的临
时低点TempLow位置,记录该拐点的交易日期,同时将扫描的起始位置设置回到该拐点位
置,接下来设置新的临时高点TempHigh为TempLow值,最后设置新搜索模式为在低点找高点
的模式。一般取值v1=10,v2=10。
四、拐点分类存储。
上述步骤遍历完后,将获得股票的所有拐点,包括高位拐点和低位拐点两种。高位
拐点代表先涨后跌的拐点模式;低位拐点代表先跌后涨的拐点模式。对这两种类型的拐点
分别按记录的交易日期时间点顺序存储。
五、拐点及数据分段应用。
对于每个高位拐点,结合交易日期顺序,获取当前拐点到前一个低位拐点的数据
段,作为股票上升走势的训练数据。
对于每个低位拐点,结合交易日期顺序,获取当前拐点到前一个高位拐点的数据
段,作为股票下降走势的训练数据。
之后可结合数据挖掘方法,如聚类分析,支持向量机、数据分类等方法对训练数据
进行挖掘。
综上所述,本发明公开了一种基于拐点检测的股票历史数据分段方法。方法通过
不同模型下的拐点检测迅速获取拐点及其对应的数据分段,分段数据可以作为当前交易点
是否为拐点及后期走势的判断基础,方法可为其它股票数据挖掘方法的数据训练提供支
持。
本发明方法同样可应用于证券类具有时间序列特征的数据,如基金、期货等。因
此,尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内
容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权力要求的精
神和范围内,各种替换、变化和修改都是不可能的。因此,本发明不应局限于最佳实施例和
附图所公开的内容。当前公开的实施例在所有方面应被理解为说明性的而非对其请求保护
的范围的限制。