第3章 股票时间序列的特征表示方法 3.1目标概述 股票时间序列的分析预测问题一直是一个研究热点。现有对股票价格的预测研究主要有两种方法: 一种是关注短期内股票价格变化的预测,该研究方法不仅需要解决数据高频变化带来的问题,同时在实际应用中不适合中长期投资交易; 另一种研究方法关注对股票价格拐点的预测,进而确定股票的交易信号。 在实际投资中,在股票价格拐点处进行交易能够获得最优的收益,因此认为股票价格拐点是股票最佳交易信号。通常,相比价格的短期变动,价格拐点之间具有更长的时间间隔,可以避免股票数据高频变化带来的影响。如果能对股票价格拐点进行准确的预测,就能够确定股票的交易信号,从而给投资者带来更大的收益。然而,对股票交易信号的预测需要解决拐点提取、预测模型建立等一系列问题,导致目前仍没有很好的预测方法。 本章首先介绍股票时间序列的概念及时间序列分析方法,之后介绍一些股票时间序列的特征表示方法,在了解现有表示方法及其优劣势的基础上,提出一种新的基于拐点检测的股票历史数据分段方法。分段结果可用于解决预测模型的训练数据问题,通过获取所有股票历史数据中的上升走势段和下降走势段,以用于其他拐点预测模型的训练,这也是本章所介绍方法的主要目的。最后,基于股票时间序列的分段表示,提出了一种基于精准高低点分段匹配的股票预测方法,作为股票数据分段表示之后的一个应用示例。 3.2股票时间序列 3.2.1时间序列的基本概念 时间序列就是按照一定的时间间隔排列的一组数据,其时间间隔可以是任意的时间单位,如小时、日、周、月等。这组数据可以具有各种各样的含义,如经济领域中每年的产值、国民收入、商品在市场上的销量、股票数据的变化情况等。人们希望通过对这些时间序列的分析,从中发现和揭示现象的发展变化规律,或从动态的角度描述某一现象和其他现象之间的内在数量关系及其变化规律,从而尽可能多地从中提取出所需要的准确信息,并将这些知识和信息用于预测,以掌握和控制未来行为。人们研究时间序列,通常也是希望根据历史数据预测未来的数据。对于时间序列的预测,由于很难确定它与其他因变量的关系,或收集因变量的数据非常困难,因此不能采用回归分析方法进行预测,而是使用时间序列分析的方法。 采用时间序列分析进行预测时需要用到一系列模型,这种模型统称为时间序列模型。在使用时间序列模型时,总是假定某一数据变化模式或某一种组合模式会重复发生。因此需要首先识别出这种模式,然后采用外推的方式进行预测。采用时间序列模型时,关键在于辨识数据的变化模式; 同时决策者所采取的行动对这个时间序列的影响很小,因此这种方法主要用来对一些环境因素或不受决策者控制的因素进行预测,如宏观经济情况、就业水平、某些产品的需求量等。 时间序列分析法,常常用于中短期预测,因为在相对短的时间内,数据变化的模式不会特别明确。时间序列分析主要用于如下几个方面: (1) 系统描述。根据对系统进行观测得到的时间序列数据,用曲线拟合方法对系统进行客观的描述。 (2) 系统分析。当观测值取自两个以上变量时,可用一个时间序列中的变化去说明另一个时间序列中的变化,从而深入了解给定时间序列产生的机理。 (3) 预测未来。一般用ARMA模型拟合时间序列,预测该时间序列的未来值。 (4) 决策和控制。根据时间序列模型可调整输入变量,使系统发展过程保持在目标值上,即预测到过程要偏离目标时,便进行必要的控制。 3.2.2时间序列的影响因素 时间序列的变化受许多因素的影响,有些起着长期的、决定性的作用,使其呈现出某种趋势和一定的规律性; 有些则起着短期的、非决定性的作用,使其呈现出某种不规则性。在分析时间序列的变动规律时,事实上不可能对于每个影响因素都一一划分开来,分别去做精确分析。但可以将众多影响因素,按照对现象变化影响的类型,划分成若干时间系列的构成因素,然后对这几类构成要素分别进行分析,以揭示时间序列的变动规律性。 影响时间序列的构成因素,可归纳为如下4种: (1) 趋势性(Trend),指现象随时间推移朝着一定方向呈现出持续渐进的上升、下降、平稳的变化或移动。这一变化通常是许多长期因素的结果。 (2) 周期性(Cyclic),指时间序列表现为循环于趋势线上方和下方的点系列,并持续一段时间以上的有规则变动。这种因素是因经济多年的周期性变动产生的。例如,高速通货膨胀时期后面紧接的温和通货膨胀时期将会使许多时间序列表现为交替地出现于一条总体递增的趋势线的上下方。 (3) 季节性变化(Seasonal variation),指现象受季节性影响,按一固定周期呈现出的周期波动变化。尽管我们通常将一个时间序列中的季节变化认为是以1年为期的,但是季节因素还可以被用于表示时间长度小于1年的有规则重复形态。例如,每日交通量数据表现出为期1天的“季节性”变化,即高峰期到达高峰水平,而一天的其他时期车流量较小,从午夜到次日清晨最小。 (4) 不规则变化(Irregular movement),指现象受偶然因素的影响而呈现出的不规则波动。这种因素包括实际时间序列值与考虑了趋势性、周期性、季节性变动的估计值之间的偏差,它用于解释时间序列的随机变动。不规则因素是由短期的未被预测到的以及不重复发现的那些影响时间序列的因素引起的。 时间序列一般是以几种变化形式的叠加或组合出现的,如图31所示的不同形式的时间序列,包括平稳序列、趋势序列、季节型序列及季节与趋势因素的叠加组合序列等。 图31不同形式的时间序列 3.2.3时间序列的分类 根据不同的标准,时间序列有不同的分类方法,常用的标准及分类方法如下: (1) 按所研究对象的多少来分,有一元时间序列和多元时间序列。如某种商品的销售量数列,即为一元时间序列; 如果所研究对象不仅仅是这一数列,而是多个变量,如按年、月顺序排序的气温、气压、雨量数据等,每个时刻对应着多个变量,则这种序列为多元时间序列。 (2) 按时间的连续性,可将时间序列分为离散时间序列和连续时间序列两种。如果某一序列中的每一个序列值所对应的时间参数为间断点,则该序列就是一个离散时间序列; 如果某一序列中的每个序列值所对应的时间参数为连续函数,则该序列就是一个连续时间序列。 (3) 按序列的统计特性分,有平稳时间序列和非平稳时间序列两类。所谓时间序列的平稳性,是指时间序列的统计规律不会随着时间的推移而发生变化。平稳序列的时序图直观上应该显示出该序列始终在一个常数值附近随机波动,而且波动的范围有界、无明显趋势及无周期特征。与之相对,时间序列的非平稳性是指时间序列的统计规律随着时间的推移而发生变化。 (4) 按序列的分布规律来分,有高斯型和非高斯型时间序列两类。 3.2.4时间序列分析概述 时间序列分析是一种广泛应用的数据分析方法,它研究的是代表某一现象的一串随时间变化而又相关联的数字系列,从而描述和探索该现象随时间发展变化的规律性。时间序列的分析利用的手段可以通过直观简便的数据图法、指标法、模型法等来分析,模型法应用更确切和适用,也比前两种方法复杂,但能从更本质上了解数据的内在结构和复杂特征,以达到控制与预测的目的。 总的来说,时间序列分析方法包括如下两类。 (1) 确定性时序分析: 指暂时过滤掉随机性因素(如季节因素、趋势变动)进行确定性分析方法,其基本思想是用一个确定的时间函数y=f(t)来拟合时间序列,不同的变化采取不同的函数形式来描述,不同变化的叠加采用不同的函数叠加来描述。具体可分为趋势预测法、平滑预测法、分解分析法等。 (2) 随机性时序分析: 其基本思想是通过分析不同时刻变量的相关关系,揭示其相关结构,利用这种相关结构建立自回归、滑动平均、自回归滑动平均混合模型来对时间序列进行预测。 为了对时间序列分析方法有一个比较全面的了解,其相关方法可归纳成图32。 图32时间序列分析的方法 无论采用哪种方法,时间序列的一般分析流程基本固定,如图33所示。下面对两种类型时间序列分析的相关方法进行简要介绍。 图33时间序列分析的流程 3.2.5确定性时间序列分析 在确定性时间序列分析中通过移动平均、指数平滑、最小二乘法等方法来体现社会经济现象的长期趋势及带季节因子的长期趋势,并预测未来的发展趋势。 1. 移动平均法 通过对时间序列逐项推移求得平均数作为预测值的方法叫移动平均法,它是对时间序列进行修匀,边移动边平均以排除偶然因素对原序列的影响,进而测定长期趋势的方法。其计算公式为: 预测值=最后N个值的平均 其中,N=被认为是与预测下一个时期相关的最近的时期数。 采用移动平均法进行预测,用来求平均数的时期数N的选择非常重要,这也是移动平均的难点。因为N取值的大小对所计算的平均数的影响较大。当N=1时,移动平均预测值为原数据的序列值。当N=全部数据的个数时,移动平均值等于全部数据的算术平均值。显然N值越小,表明对近期观测值预测的作用越重视,预测值对数据变化的反应速度也越快,但预测的修匀程度较低,估计值的精度也可能降低。反之,N值越大,预测值的修匀程度越高,但对数据变化的反应速度则较慢。 不存在一个确定时期N值的规则。一般N为3~200,具体视序列长度和预测目标情况而定。对于水平型的数据,N值的选取较为随意,一般情况下,如果考虑到历史上序列中含有大量随机成分,或者序列的基本发展趋势变化不大,则N应取大一点。对于具有趋势性或阶跃性特点的数据,为提高预测值对数据变化的反应速度,减少预测误差,N的取值一般较小一些,以使移动平均值更能反映目前的发展变化趋势。下面介绍几种移动平均的方法。 1) 简单算术平均法 设时间序列的各期观察值为=∑Nt=1XtN,(t=1,2,…,N),式中表示观察值时间序列平均数; N表示观察时期数; Xt表示时间序列各组观察值。 2) 加权算术平均法 利用不同的时期所对应的权数不同,来体现由于时间差异而取得的信息的重要性不同; 或根据预测者的能力大小不同,也可以利用加权法来体现其重要性的区别。其公式是: =∑Nt=1WtXt∑Nt=1Wt 3) 一次移动平均法 移动平均法是通过逐项推移依次计算包含一定项数的时序平均数,以反映时间序列的长期趋势的方法。由于移动平均法具有较好的修匀历史数据、消除数据因随机波动而出现高点、低点的影响,从而能较好地揭示经济现象的发展趋势。 设时间序列为Y1,Y2,Y3,…,以N为移动时期数,则移动平均数的计算公式为: Mt=Yt+Yt-1+…+Yt-N+1N Mt=(Yt-1+…+Yt-N+1+Yt-N)-Yt-N+YtN 通过整理后可得Mt=Mt-1+YN-Yt-NN。 4) 加权移动平均法 若要考虑各期数据的重要性,对近期数据给予较大的权数,远期数据给予较小的权数,就应采用加权平均法。设W1,W2,…,WN为移动步长为N期内由近至远各期观察值的权数,则加权移动平均数的计算公式为: MtW=W1Yt+W2Yt-1+…+WNYt-N+1W1+W2+…+WN 利用加权移动平均法进行预测,其预测模型为Yt+1=MtW,即以第t期的加权移动平均数作为t+1期的预测值。 5) 二次移动平均法 当实际资料出现明显的线性增长或减少的变动趋势时,用一次移动平均值来预测就会出现滞后偏差,因此要进行修正。修正方法是在一次移动平均的基础上,作二次移动平均,利用两次移动平均滞后偏差的规律来建立直线趋势预测模型。为区别起见,将一次移动平均法记作M(1)t,将二次移动平均法记作M(2)t。则二次移动平均法的计算公式为: M(2)t=M(1)t+M(1)t-1+…+M(1)t-N+1N 上式中: M(1)t为一次移动平均值; M(2)t为二次移动平均值; N为步长。由上式可推出: M(2)t=M(2)t-1+M(1)t-M(1)t-NN 值得注意的是,二次移动平均值不能直接用于预测,而应该建立趋势直线预测模型来进行预测。移动平均法存在两个明显问题: 一是计算移动平均预测值,需要有近期N个以上的数据资料; 二是计算未来预测值没有利用全部历史资料,只考虑这N期资料便做出推测,N期以前的数据对预测值不产生任何影响。 2. 指数平滑法 指数平滑法是由移动平均法改进而来的,是一种特殊的加权移动平均法,也称为指数加权平均法。这种方法既有移动平均法的长处,又可以减少历史数据的数量。第一,它把过去的数据全部加以利用; 第二,它利用平滑系数加以区分,使得近期数据比远期数据对预测值影响更大。它特别适用于观察值有长期趋势和季节变动,必须经常预测的情况。指数平滑法在市场预测中的应用主要有一次指数平滑法和多次指数平滑法。 1) 一次指数平滑法 一次指数平滑法就是计算时间序列的一次指数平滑值,以当前观察期的一次指数平滑值和观察值为基础,确定下期预测值。 设时间序列为y1,y2,y3,…,一次指数平滑法的计算公式为: S(1)t=ayt+(1-a)S(1)t-1 式中: yt为t期时间序列的观察值; S(1)t为t期时间序列的观察值的指数平滑值; a(0≤a≤1)为平滑常数。一次平滑系数是以前一次指数平滑值作为第t+1期的预测值,即 y^t+1=S(1)t 由此可以得到预测公式的另一种表达方式: y^t+1=ayt+(1-a)y^t 2) 二次指数平滑法 为了进一步减少偶然因素对预测值的影响,可在一次平滑的基础上进行第二次平滑。二次指数平滑值的计算公式为: S(2)t=aS(1)t+(1-a)S(2)t-1 其中, S(2)0=y1或S(2)0=1k∑kt=1yt 当时间序列趋势具有线性趋势时,二次指数平滑法的直线趋势模型为: y^t+T=at+btT 其中, at=2S(1)t-S(2)t,bt=a1-a(S(1)t-S(2)t) a的取值对平滑效果影响很大,a越小,平滑效果越显著。a取值的大小决定了在平滑值中起作用的观察值的项数的多少。当a取值较大时,各观察值权数的递减速度快,因此在平滑值中起作用的观察值的项数就较少; 而当a取值较小时,各观察值权数的递减速度很慢,因此在平滑值中起作用的观察值的项数就较多。 3. 季节系数法 事物变化趋势除了直线变动外还有季节性变动、循环变动和不规则变动趋势。其中季节性变动现象与我们的生活息息相关。这里所说的季节,既不同于日历上讲的季度,也不同于气象上所讲的季节,它是用来描述任何重复出现的每小时、每周、每月或每季等相似间隔的时间段。在市场预测中多指一年中经营活动的某一固定形态。 季节系数法(也称季节指数法)是根据预测对象各个日历年度按月或按季编制的时间序列资料,以统计方法测定出反映季节变动规律的季节变动系数,并据以进行预测的一种预测方法。季节系数是以相对数形式表现的季节变动指标,一般用百分数或系数表示。利用季节系数法进行预测,一般要求时间序列的时间单位或是季或是月; 要掌握至少3年以上的按月或按季编制的时间序列。 在时间序列存在直线趋势的情况下,季节变动预测通常需要消除直线趋势的影响。直线趋势比率平均法能够很好地消除这种影响,从而达到准确预测。此方法的应用过程为: 先分离出不含季节周期波动的直线趋势,再计算季节指数,最后建立预测模型: X(t+i)j=TiFi,i=1,2,…; j=1,2,… 式中: Ti为直线趋势方程; S为季节期数(如以季度为季节,则S=4); Fi为季节指数。 预测步骤如下: 先求出Ti=a+bi; 计算平均季节指数,把历年同季节的平均数除以该季节的趋势值平均值,就可以消除直线趋势的影响,得到平均季节指数: F′j=1n(X1+X2+…+Xt+(n-1)s) 其中,n为观察年数; 对平均季节指数作处理,使其均值为1,即: =1S·∑F′j,Fj=F′j(j=1,2,…,s) 4. 趋势延伸法 事物的发展具有一定的连续性,有些事物的发展在某个相对时间内呈现出一定的规律性,遵循这种规律进行推导延伸,就可以预测事物发展的未来。 趋势延伸法就是遵循事物连续原则,分析预测对象时间序列数据呈现的长期趋势变化轨迹的规律性,找出拟合趋势变化轨迹的数学模型,据以进行预测的方法。趋势延伸法的突出特点是选用一定的数学模型来拟合预测变量的变动趋势,并进而用模型进行预测。 1) 线性趋势预测模型 线性趋势的预测模型为: y^t=a+bt,其中a和b是参数。a为截距; b为直线的斜率; t为时间变量并且要求计算过程中等距; y^t为时间序列线性趋势预测值。 用此方法进行预测时,关键是将观察时间序列拟合成一条直线,该线与各期观察值坐标点的距离最短。用最小二乘法求待定参数a、b,其决定于如下标准方程组: ∑y=∑a+b∑t ∑ty=∑t+b∑t2b=n∑ty-∑t∑y/n∑t2-∑t2 a=y--bt- 通过变形可以进一步得到: b=∑ty∑t2,a=∑yn。在确定参数a和b后,预测方程即可确定。这时代入预测时期数值t,即可估计市场现象即预测y^t。趋势预测的误差可用线性回归中的估计标准误差来衡量,公式为: sy=∑ni=1(yi-y^i)2n-2 2) 二次曲线趋势预测模型 市场现象受到诸多因素影响,变动趋势往往呈曲线形式。常见的有指数曲线、二次曲线、龚伯兹曲线等多种。二次曲线趋势的预测模型为: y^t=a+bt+ct2,根据最小二乘法推导待定参数a、b、c的标准方程组: ∑y=na+b∑t+c∑t2 ∑ty=a∑t+b∑t2+c∑t3 ∑t2y=a∑t2+b∑t3+c∑t4 3) 指数曲线趋势预测模型 指数曲线趋势的预测模型为: y^t=abt,其中a、b为未知数。这里必须要把指数先通过变量代换转化为直线趋势才能用最小二乘法来求参数,即: 两边取对数lny^t=lna+tlnb,再根据直线形式的常数确定方法,可求得lna、lnb,最后取反对数得到a、b的值。 从总体上来说,确定性时序分析刻画了序列的主要趋势是直观简单、便于计算,但是比较粗略,不能严格反映实际的变化规律。为了严格反映时序的变化,必须结合随机时序分析法进一步完善对社会经济现象的分析,以便进行决策。 3.2.6随机性时间序列分析 在随机性时间序列分析中,分为平稳时序分析和非平稳时序分析。平稳随机过程其统计特性(均值和方差)不随时间的平移而变化,具有平稳特性的时序称平稳时序。平稳时序分析主要通过建立自回归模型(Autoregressive Model,AR)、滑动平均模型(Moving Average Model,MA)和自回归滑动平均模型(Autoregressive Moving Average Model,ARMA)分析平稳的时间序列的规律。 1. 自回归模型AR(p) 如果时间序列Xt(t=1,2,…)是平稳的且序列数据前后有一定的依存关系,即Xt与前面Xt-1,Xt-2,…,Xt-p有关,与其以前时刻进入系统的扰动(白噪声)无关,具有p阶的记忆,描述这种关系的数学模型就是p阶自回归模型: Xt=φ1Xt-1+φ2Xt-2+…+φpXt-p+at(31) φ1,φ2,…,φp是自回归系数,或称为权系数; at为白噪声,类似于相关回归分析中的随机误差干扰项,其均值为零,方差为σ2a。在上面的模型中若引入后移算子B,则可改为: (1-Bφ1-B2φ2-…-Bpφp)Xt=at(32) 记φ(B)=(1-φ1B-φ2B2-…-φpBp),则式(32)可写成 φ(B)Xt=at(33) 称φ(B)=0为AR(p)模型的特征方程。特征方程的p个根λi(i=1,2,…,p)被称为特征根。如果p个特征根全在单位圆外,即 |λi|>1i=1,2,…,p(34) 则称AR(p)模型为平稳模型,式(34)被称为平稳条件。由于是关于后移算子B的多项式,因此AR(p)模型是否平稳取决于参数φ1,φ2,…,φp。 2. 滑动平均模型MA(q) 如果时间序列Xt(t=1,2,…)是平稳的,与前面的Xt-1,Xt-2,…,Xt-p无关,与其以前时刻进入系统的扰动(白噪声)有关,具有q阶的记忆,描述这种关系的数学模型就是q阶滑动平均模型: Xt=at-θ1at-1+θ2at-2+…+θqat-q(35) 在上面的模型中若引入后移算子B,则可改为: Xt=(1-θ1B-θ2B2-…-θqBq)at 3. 自回归滑动平均模型ARMA(p,q) 如果时间序列Xt(t=1,2,…)是平稳的,与前面的Xt-1,Xt-2,…,Xt-p有关,且与其以前时刻进入系统的扰动(白噪声)也有关,则此系统为自回归移动平均系统,预测模型为: Xt-φ1Xt-1+φ2Xt-2+…+φpXt-p=at-θ1at-1+θ2at-2+…+θqat-q(36) 即: (1-Bφ1-B2φ2-…-Bpφp)Xt=(1-θ1B-θ2B2-…-θqBq)at 4. 非平稳时间序列模型 在实际的社会经济现象中,收集到的时序大多数呈现出明显的趋势性或周期性,这样就不能认为它是均值不变的平稳过程。要用模型来预测就需要综合考虑趋势和波动因素,用模型来描述: Xt=μt+Yt(37) μt表示Xt中随时间变化的均值(往往是趋势值),Yt是Xt中剔除μt后的剩余部分,表示零均值平稳过程,这时就可用自回归模型、滑动平均模型或自回归滑动平均模型来拟合。求解模型Xt=μt+Yt,分为以下两步: (1) 具体求出μt的拟合形式,可以用上面介绍的确定性时序分析方法建模,求出μt,得到拟合值,记为μ^t。 (2) 对残差序列{Xt-μ^t}进行分析处理,使之成为均值为零的随机平稳过程,再用平稳随机时序分析方法建模求出Yt,通过反运算,最后可得Xt=μt+Yt。 3.3股票时间序列的特征表示方法 3.3.1方法概述 股票交易时间序列描述的是股票在交易过程中价格随时间变化的数据,分析这些数据能为投资者选择投资方案提供量化参考依据。由于股票交易存在巨大的风险与机遇,使得股票交易时间序列成为当前研究和应用的热点。 股票时间序列特征表示和相似性度量在数据挖掘的分类、聚类、关联等挖掘任务中起到最基础同时也是非常关键的作用。对股票时间序列的特征表示与相似性度量进行基础性的研究,会使得数据挖掘打开新的局面,出现新的不同机会。时间序列的特征表示与相似性度量也是对要解决的问题的基础理解,理解正确,方法模型可行,对时间序列要解决的问题使用数据挖掘功能就有更大的机会得到好的解决方案。股票时间序列特征表示是对股票时间序列的降维,用股票时间序列的部分值来代替股票时间序列本身。使用时间序列相似性度量的结果,可以度量不同时间序列之间的差别,将其结果可用于分类、聚类、关联、模式识别和异常模式发现等时间序列数据挖掘任务中,从而使得实际问题得到解决。 目前各类时间序列特征表示法很多能应用于股票时间序列的压缩表示,但其效果各不相同。股票时间序列一方面与其他时间序列一样要求拟合误差低,压缩率高; 另一方面需要把时间序列的趋势特征更好地保留下来。 3.3.2时间序列特征表示 时间序列数据挖掘研究的重点之一是将原始序列映射为特征序列,并使用特征序列的特征值来表示原始序列。这种方法在保留原始序列的主要特征的基础上对时间序列进行一定程度的压缩。目前基于特征提取的数据压缩表示方法主要有以下几种。 1. 频域表示法 频域表示法的中心思想是把时间序列当作一个离散的信号,用离散小波变换(Discrete Wavelet Transform,DWT)或者离散傅里叶变换(Discrete Fourier Transform,DFT)将时间序列从时间域映射到频率域,用少量的频率值来模拟原始时间序列数据,大大地压缩了数据,保留了时间序列的主要值分布情况。时间序列通过DFT后,前几个系数保存了绝大部分信息。但是由于经过DFT变换后的参数保留的是时间序列的全局信息,对局部信息的描述不够。因此,这种变换不适用于揭露时间序列的局部信息特征。频域表示法在压缩原始数据方面表现很好,但由于不能揭露时间序列的局部特征,当需要做精确的相似性查询时,使用这种方法应用少量的几个频率近似模拟原始序列,不能很好地达到目标。 2. 奇异值表示法 奇异性是指数据本身或其某阶导数在某一时刻点存在突变,突变的奇异点往往含有比较重要的信息。奇异值表示法作为一种特征表示方法在文本和图像的压缩或索引中广泛应用。奇异值分解(Singular Value Decomposition,SVD)在对整个时间序列做特征表示降维处理、提取主要特征或者还原数据时,是一种较好的方法。其缺点是时间空间复杂度较大,时间复杂度为O(Nm2)、空间复杂度为O(Nm),其中N为时间序列的数量。另外,如果要在数据集中添加或者删除一条记录,需要重新计算SVD。尤其是当面对海量高维时间序列数据,考虑到其时间复杂度和内存存储空间,SVD都不便于处理。这种特征表示法比较适合于模式识别、文本挖掘、图像压缩以及人脸识别等。 3. 符号化表示法 符号化表示法是将时间序列映射到一个符号序列,是将时间序列离散化。时间序列本身是连续值,通过波形变换将几个划分在同一区域的数值映射到一个离散的符号值,每一段时间间隔内的序列对应一个符号,从而将整个时间序列转换为符号序列。符号化表示法对原始数据的表示不太精确,为了提高精确度需要把分区划分得更小,但这样又会降低算法的性能。近年来,这类符号化表示法在文本数据挖掘和生物信息挖掘等领域取得了不错的效果。尤其是对于某些难以用定量数据来表示的问题,使用字符型数据却能有很好的效果。 4. 分段线性表示法 分段线性表示法(Piecewise Linear Representation,PLR)是一种对时间序列进行线性划分,使得时间序列的连续数据离散化的一种方法,也就是用相邻的一系列首尾相连的线段来近似表示时间序列,主要是对时间序列的关键点或关键形态进行分析和识别。这种表示法非常直观而且简单,得到了许多研究者的研究与重视,是一种比较常用的特征表示方法。 时间序列分段表示的中心思想是用许多相邻的直线段来代替原始的时间序列,对于股票时间序列,关键在于如何确定能代表整个股票时间序列走势的关键点,使用这些关键点来对时间序列进行划分,然后再用这些划分出来的走势点所拟合出的直线段来近似地表示原来的时间序列。根据不同的划分方法可以使用不同的划分策略来实现,例如滑动窗口方法、自底向上的方法和自顶向下的方法。使用滑动窗口和自底向上方法的时间复杂度为O(n2),n为序列长度,而自顶向下的时间复杂度比较低。滑动窗口在分区内数据值变化剧烈时拟合效果较差,不能很好地表现出原始时间序列的变化。分段线性表示方法利用分段产生的直线段来过滤时间序列的局部波动,能够快速进行相似性检索,是一种很好的数据降维和过滤噪声的方法,而且大多数的 PLR 方法支持时间序列的动态增加。 上述各类时间序列表示法应用于股票时间序列表示时具有一些缺陷。 (1) 股票时间序列的形态和趋势本身都包含了大量的有用信息,但是很多时间序列分段表示方法都忽略了序列的形态,或者在变换中丢失了关键点。 (2) 没有与股票领域知识结合,很多分段方法的分段结果与业界的划分大相径庭,且没有足够的实际操盘应用成功率,不能在实际应用中得到业界的认同。 (3) 股票数据往往是动态增加的,有些分段算法动态增加数据对算法影响较大。 在前述各种特征表示方法中,线性分段表示法在形态和趋势特征的保留中,相较其他方法优势明显。下面将选取分段线性表示法中几种典型的方法进行介绍。 3.3.3基于斜率提取特征点的时间序列分段线性表示 基于斜率提取特征点的方法,通过利用解析几何中的两点确定一直线,该直线的两个特征值: 斜率和截距。把时间序列的特征和斜率结合起来,方法首先计算连接时间序列中非端点的某一个点,与其左右两个点连线的斜率,根据斜率值的变化幅度阈值决定该点是不是分段特征点,这些特征点的集合就构成原始时间序列的特征表示序列。这种方法简称为时间序列的 SEEP(Slope Extract Edge Point)表示法。 1. 时间序列的 SEEP 表示法 时间序列的SEEP表示法即基于斜率提取特征点的算法表示。它是根据时间序列中斜率的变化是否达到某个阈值来决定该点是否是分段特征点。将这些点连接起来就是分段线性表示方法SEEP。设时间序列X=〈x1,x2,…,xn〉,其特征点集合为{xi1,xi2,…,xik},且1≤i1=d) then xx=xx+{(xi,i)}; //序列点xi加入特征点集合 xx ii=i; jj=i+1; kk=i+2; else jj=i+1; kk=i+2; (5) else // x[kk]和x[ii]位于x[jj]异侧 if(fabs((x[kk]- x[jj])/(kk-jj)-(x[jj]- x[ii])/(jj-ii))>=d) then xx=xx+{(xi,i)}; //序列点xi加入边缘点集合xx ii=i; jj=i+1; kk=i+2; else jj=i+1; kk=i+2; (6) xx=xx+{(xn,x)}; //最后一个序列点是边缘点 (7) 输出L(X)={L(xi1,xi2),L(xi2,xi3),…,L(xik-1,xik) } 4. 算法分析 该算法具有如下优点: (1) SEEP算法只需扫描序列一次,算法的时间复杂度仅为O(n),其中n是时间序列的长度。 (2) 可以直接用于时间序列的在线分段。当时间序列动态增长时,以前的边缘点结果集依然可以保留,只需对新的时间序列数据应用SEEP算法即可。 该算法的不足之处如下: (1) 证券时间序列不管上升还是下降都是波浪式完成的,涨跌变化频繁。一个上涨趋势长时间的上涨,与盘整期间频繁的短期上涨下跌跳变造成的干扰噪音,在斜率上难以区分。导致分段算法对参数d非常敏感,参数d设置很困难。 (2) 由于数据源用收盘数据代替整个K线数据段,使得对于趋势特征非常重要的极值点存在一定的误差。 3.3.4基于趋势转折点的时间序列模式表示 1. 时间序列趋势转折点 基于时间序列趋势转折点分段法的主要分段方法体现在以下两种情况: (1) 在时间序列中找出波动幅度达到一定程度的极值点,也就是幅度变化很大,而且相邻的两个极值点。如何判断某一点波动幅度达到一定程度从而构成极值点,根据文献定义有这样的确定特征点的方法: 给定常数R和时间序列{X=(v1,t1),(v2,t2),…,(vn,tn)},如果Xm波动幅度达到一定程度能成为极值点,它应该满足下面的条件: ① 它必须是时间序列的一个极值点,两个端点X1和Xn除外; ② 根据时间序列上升、下降分两种情况: 如果Xm>Xm-1,则必须满足Xm/Xm-1>R; 否则,如果XmR。 满足上述条件的时间序列中的点反映了序列中的趋势转折情况,这些点是构成时间序列特征点数据集合的一部分。 (2) 短时间大波动数据点,也就是波动幅度剧烈,达到一定幅度的相邻点,并且这些点不是极值点。短时间内大波动时间序列的判断: 图36非极值数据波动 如果当前点的值与其直接相邻的前一个点的值之差的绝对值为Q,当前点的值与其直接相邻的后续点的值之差的绝对值为P,当Q不为0时,如果P/Q>K或者P/Q<1/K,则认为存在短时间内大波动数据,K为一个指定的阈值数据; 当Q=0,且P≠0时,也可以认为是短时间内大波动数据。如图36所示,a、b、c是位置上相邻的3个数据点,Q=|b-a|,P=|b-c|。如果满足上述条件,那么a、b、c这3个点就是短时间大波动的数据点,其中点b是这种趋势变化的转折点; 寻找的另一个趋势变化转折点就是寻找与点b相类似的这种趋势变化的转折点。 由以上两种方法来划分的时间序列中的分段特征点,代表了时间序列隐含的变化趋势,称之为时间序列趋势转折点。用第一种方法得到的时间序列趋势转折点,反映了时间序列局部趋势变化; 用第二种方法得到的趋势转折点,则反映了时间序列在局部非极值点的趋势变化,从而把极值点的趋势变化与非极值点的趋势变化有效地表达出来,完成了用两种尺度来描述时间序列变化趋势的任务。 2. 基于趋势转折点的分段线性表示 通过上面描述的两种方法,可以得到时间序列的趋势转折点,然后在这些相邻的数据点之间进行直线插补,就能得到基于时间序列趋势转折点的分段线性表示。下面是分段线性表示法算法,算法步骤如下: (1) 输入原始时间序列数据,根据波动幅度是否达到一定程度,以及是否是短时间大波动的非极值数据点,确定该点是否是趋势转折点。 (2) 对于每两个趋势转折点进行直线插补,用插值数据代替原来的曲线数据。 3. 算法分析 算法的优点: 该算法能保留时间序列的主要趋势特征,过滤一些细节干扰,能有效地反映出时间序列的自身特征,算法在反映时间序列变化趋势变化的同时,达到了有效压缩时间序列数据的目的。 算法的不足: (1) 算法设置R和K两个需要人为调节的参数,使得算法的执行对领域知识的掌握要求更高。 (2) 由于数据源中每个数据点只用一个数据代替整个K线高低值数据段,使对于趋势特征非常重要的极值点存在一定的误差。 在充分利用了时间序列数据自身的时变特征的基础上,该方法有效地对时间序数据进行了维数的约简,是一种支持时间序列动态增长的方法。该方法还有具有实现方法简便、直观和运算效率高的优点。 3.4新方法: 基于拐点检测的股票历史数据分段方法 3.4.1主要思想 基于拐点检测的股票历史数据分段方法,如图37所示,其主要思想是: 首先加载股票的涨跌幅数据并预处理为每日基准收盘价; 而后在初始高低点检测和初始模式设置的基础上,针对不同模型进行股票拐点检测,具体分为在低点找高点模式和在高点找低点模式; 最后对高位拐点和低位拐点分别进行存储。基于拐点分段后,则可以区分获得股票的上升走势段和下降走势段。这些趋势段可为其他股票数据挖掘方法的数据训练提供支持,从而正确寻找股票拐点。 本方法进行拐点检测的特点在于快速、直观。仅需一遍扫描即可获得股票的全部拐点,同时拐点涉及的参数很直观,容易设置。 图37基于拐点检测的股票历史数据分段方法的流程图 3.4.2计算步骤 对股票交易信号进行预测的首要问题是如何确定股票价格历史数据中的交易点,即拐点。在对每只股票的历史数据进行拐点检测后,获得的拐点(分为高位拐点和低位拐点)及其对应的数据分段可以作为当前交易点是否为拐点及后期走势的判断基础。假设股票列表为S,S=[S1,S2,…,Si,…,Sn],n为股票池中股票的数量,如中国上市股票的数量或美国上市股票的数量。对于每只股票Sm,m=1,2,…,n,基于其历史数据进行拐点检测的具体步骤如下。 1. 股票数据预处理及加载 (1) 对于股票时间序列Sm,以某个时间点作为起点,如20050101,截取自该时间点以来到现今的数据。 (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的总交易日次数。 (3) 同时获取每个交易日对应的股票交易日期,记为D,D=[d1,d2,…,di,…,dL],其中,di代表股票的第i个交易日所对应的交易日期。 2. 初始高低点检测和初始模式设置 (1) 基于基准收盘价数组A的前30个数据,比较该段数据的大小,获取最大值Highest和最小值Lowest,及其对应的位置 HighPos和LowPos。 (2) 比较HighPos和LowPos的大小, 如果HighPos=LowPos,则属于非正常情况,跳过该股票的拐点检测; 如果HighPosLowPos,则设置模式为在低点找高点的模式。 (3) 设置模式下的初始变量。在高点找低点的模式,设置临时低点TempLow为当前高点的基准收盘价数值; 在低点找高点的模式,设置临时高点TempHigh为当前低点的基准收盘价数值。 3. 不同模式下的拐点检测 根据当前模式,以搜索到的高点或低点为起点,顺序遍历基准收盘价数组A。 (1) 在低点找高点模式。对于当前的基准收盘价ai,分3种情况进行处理: ① 若ai大于临时高点TempHigh,则令TempHigh=ai,同时记录相应的交易日期di和位置i; ② 若ai大于或等于ai-1,则不做处理,继续遍历; ③ 若ai小于ai-1,首先计算当前ai相对于临时高点TempHigh的跌幅,若跌幅绝对值大于预先设置的阈值v1,进一步计算当前ai位置与临时高点TempHigh位置的距离,并判断距离是否大于预先设置的阈值v2; 若两个条件都满足,则此时产生新的高位拐点,拐点为当前记录的临时高点TempHigh位置,记录该拐点的交易日期,同时将扫描的起始位置设置回到该拐点位置; 接下来设置新的临时低点TempLow为TempHigh值,最后设置新搜索模式为在高点找低点的模式。一般取值v1=10,v2=10。 (2) 在高点找低点模式。对于当前的基准收盘价ai,分3种情况进行处理: ① 若ai小于临时低点TempLow,则令TempLow=ai,同时记录相应的交易日期di和位置i; ② 若ai小于或等于ai-1,则不做处理,继续遍历; ③ 若ai大于ai-1,首先计算当前ai相对于临时低点TempLow的涨幅,若涨幅大于预先设置的阈值v1,进一步计算当前ai位置与临时低点TempLow位置的距离,并判断距离是否大于预先设置的阈值v2; 若两个条件都满足,则此时产生新的低位拐点,拐点为当前记录的临时低点TempLow位置,记录该拐点的交易日期,同时将扫描的起始位置设置回到该拐点位置; 接下来设置新的临时高点TempHigh为TempLow值,最后设置新搜索模式为在低点找高点的模式。一般取值v1=10,v2=10。 4. 拐点分类存储 上述步骤遍历完后,将获得股票的所有拐点,包括高位拐点和低位拐点两种。高位拐点代表先涨后跌的拐点模式; 低位拐点代表先跌后涨的拐点模式。对这两种类型的拐点分别按记录的交易日期时间点顺序存储。 5. 拐点及数据分段应用 对于每个高位拐点,结合交易日期顺序,获取当前拐点到前一个低位拐点的数据段,作为股票上升走势的训练数据。对于每个低位拐点,结合交易日期顺序,获取当前拐点到前一个高位拐点的数据段,作为股票下降走势的训练数据。之后可结合数据挖掘方法,如聚类分析、支持向量机、数据分类等方法对训练数据进行挖掘。 综上所述,提出的一种基于拐点检测的股票历史数据分段方法,通过不同模型下的拐点检测迅速获取拐点及其对应的数据分段,分段数据可以作为当前交易点是否为拐点及后期走势的判断基础,方法可为其他股票数据挖掘方法的数据训练提供支持。 3.4.3方法步骤与创新特征 基于拐点检测的股票历史数据分段方法,包括如下步骤: (1) 加载股票数据,同时进行数据预处理操作; (2) 数据起始位置附近初始高低点检测和初始模式设置; (3) 交替以不同模式遍历股票,快速进行拐点的检测; (4) 对高位拐点和低位拐点分类存储; (5) 获取上升走势段集合或下降走势段集合,作为其他模型的训练数据源。 其创新或显著特征如下: (1) 拐点检测所用的基础数据为基准收盘价数据,其值以某时间点取值为1作为基准,基于每日的涨跌幅累加变换得到,有效避免了因除权除息等因素造成股价不连续的影响。 (2) 拐点检测的过程,区分低点找高点和高点找低点两种模式,交替遍历基准收盘价数组,以接近于仅需一遍扫描的效率获得了股票的所有高、低位拐点。 (3) 在对高、低位拐点结果的处理上,对高位拐点和低位拐点分类存储,从而可以迅速获取上升走势段集合和下降走势段集合。 3.4.4结果及分析 图38为对股票招商银行(600036)进行拐点检测的结果。具体为基于其2005年1月1日以来的股票时间序列,在阈值取值v1=10,v2=10的情况下获得的拐点。其中拐点类型0代表低位拐点,1代表高位拐点。与该个股的走势进行核对,可以发现这些拐点较好地表征了原序列。 图38股票拐点检测后不同类型拐点顺利记录的示意图 3.5新方法: 基于精准高低点分段匹配的股票预测方法 3.5.1主要思想 基于精准高低点分段匹配的股票预测,如图39所示,其主要思想是: 对于所有的股票,检测其历史数据时间序列的高低点并记录; 之后对于每只待预测的股票,获取近期一段时间的走势,进行初始设置后,与已记录的待匹配股票的高低点位置进行精准配准,在此基础上,对配准点之后的走势进行相关性计算; 在所有股票间全局搜索匹配到最相关的匹配段之后,最后通过已知的待匹配股票的后期走势来估计待预测股票的后期走势。方法可以为股票的短线操作提供决策支持。 图39基于精准高低点分段匹配的股票预测方法的流程图 3.5.2计算步骤 本方法对于股票的预测过程首先基于待预测股票与待匹配股票高低点位置的精准配准; 在此基础上,对配准点之后的走势进行相关性计算; 在所有股票间全局搜索匹配到最相关的匹配段之后,最后通过已知的待匹配股票的后期走势来估计待预测股票的后期走势。假设股票列表为S,S=[S1,S2,…,Si,…,Sn],n为股票池中股票的数量,如中国上市股票的数量或美国上市股票的数量。方法的具体预测步骤如下。 1. 股票数据加载及预处理 (1) 对于股票时间序列Sm,以某个时间点作为起点,如20050101,截取自该时间点以来到现今的数据。 (2) 令起始时间点的收盘价以1为基准,其后续时间点的收盘价根据涨跌幅进行变换得到,如第二天的涨跌幅为Change2,则第二天的基准收盘价为: 1×(1+Change2/100); 第三天的涨跌幅为Change3,则第三天的基准收盘价为: 1×(1+Change2/100) (1+Change3/100); 以此类推。最后形成一个基准收盘价数组,记为P,P=[p1,p2,…,pi,…,pL],其中pi代表第i个交易日的基准收盘价,L为股票Sm的总交易日次数。同时获取每个交易日对应的股票交易日期,记为D,D=[d1,d2,…,di,…,dL],其中di代表股票的第i个交易日所对应的交易日期。 2. 对股票所有历史数据进行高低点位置检测 (1) 高点位置检测。顺序遍历基准收盘价数组P,对于当前的基准收盘价pi,判断其前后偏移范围e内的位置的基准收盘价是否都低于它本身,如果是则标记其为高点,记录下相应的股票交易日期di; 否则跳过该点位置。偏移范围e一般取5以上。在计算上,因为是要求都低于当前位置的基准收盘价,所以只要有一个位置的值不满足条件,即可跳过以加快计算过程。 (2) 低点位置检测。顺序遍历基准收盘价数组P,对于当前的基准收盘价pi,判断其前后偏移范围e内的位置的基准收盘价是否都高于它本身,如果是则标记其为低点,记录下相应的股票交易日期di; 否则跳过该点位置。偏移范围e一般取5以上。在计算上,因为是要求都高于当前位置的基准收盘价,所以只要有一个位置的值不满足条件,即可跳过以加快计算过程。 由于高低点位置的更新频率较低,因此高低点位置的检测过程仅需一段时间运行一次即可。上述步骤遍历完后,将获得股票的所有高位点和低位点位置。高位点代表先涨后跌的拐点模式; 低位点代表先跌后涨的拐点模式。对这两种类型的高低点分别按记录的交易日期时间点顺序存储。 3. 待预测股票的初始高低点检测和初始模式设置 (1) 获取待预测股票基准收盘价数组P的近期30个基准收盘价数据,以类似上述方法进行高低点位置的检测; 如果没检测到,则扩展数据继续获取数组P相邻前期10个数据,直到可以检测出高低点,并分别记为HighPos和LowPos。 (2) 比较HighPos和LowPos的大小,如果HighPos=LowPos,则属于非正常情况,跳过该股票的预测; 如果HighPosLowPos,则设置模式为高点配准模式,配准起始点为HighPos。 4. 加载用于匹配的数据 用于匹配的数据分为两种: 一个是待预测股票的匹配数据; 另一个是用于受匹配的股票数据。 (1) 待预测股票的匹配数据为配准起始点之后到当前交易日的每日涨跌幅数据,记为A,A=[a1,a2,…,ai,…,aT],其中,ai代表近T-i的交易日的涨跌幅,aT代表当前交易日的涨跌幅。所有股票中每只待预测股票的匹配数据的长度不一定相同,长度T为配准点到当前交易日的距离。 (2) 受匹配股票的股票数据为除待预测股票之外的所有股票,匹配数据为以某个时间点作为起点,如20050101,截取自该时间点以来到当前交易日的每日涨跌幅数据,记为Bi,i=[1,n],Bi=[bi1,bi2,…,bij,…,bik],其中,bij代表第i只股票的j位置对应交易日的涨跌幅。每个Bi的长度k不一定相等,因为股票中间有停牌等因素的影响。 除此之外,同时预先加载每只股票的高低点位置。 5. 基于初始模型进行高点或低点位置配准并相关性匹配 对于低点配准模式,获取待匹配股票每一个低点到下一个高点这一区间段的匹配数据,为描述简单,假设每一个低点到高点的区间段都记为B,B=[b1,b2,…,bi,…,bW],W为该区间段的长度。将B与A进行相关性计算,这里要求长度W大于数组A的长度T,若W≤T,则跳过该区间段的比较。若W>T,则取B中的前T个数据与A进行相关性计算,具体相关性计算公式为: C=∑Ti=1aibi∑Ti=1a2i×∑Ti=1b2i 记录所有比较的相关系数值的最大值和其对应的匹配日期(即高低点位置),作为A与Bi的匹配结果; 将A与所有股票对应的Bi进行匹配后,形成最终的结果,记为Mi,i=[1,n],Mi=[Vi,Di],其中Vi代表A与Bi的最大相关系数值,Di代表最大相关系数值对应的匹配日期。 对于高点配准模式,与低点配准模式类似,区别仅在于获取的是待匹配股票每一个高点到下一个低点的区间段作为匹配数据。 6. 获得与待匹配股票相关系数绝对值靠前的前几只股票 基于上一步骤股票间相关性计算的结果数组M,获取H只最相关股票。具体过程为: 根据数组M的Mi数值,获取其绝对值最大的前H个Mi及其对应的Di,形成新数组TMh,h=[1,H],TMh=[Mh,Dh]。这里H的取值不宜取太大,一般小于5,因为H的取值代表着有H种的趋势预测结果。对于每只股票,都有其对应的H只最相关的股票。 7. 生成待预测股票的后期走势 获取最相关股票数组TM中每行元素对应的匹配数据Bh,h=[1,H]。接下来根据Bh的序列来估算待预测股票A序列后续的走势。假设Bh的长度为W,A的长度为T,根据前面分析,W>T,获取Bh后面的W-T个数据。顺序遍历这W-T个数据,以此来生成A序列的后续相关数据。假设当前Bh后面的W-T个数据的某一位置值为Y,待求解的A序列的后续相应位置预测值为X,则X可通过下式求解得到: C=∑Li=1aibi+X×Y∑Li=1a2i+X2×∑Li=1b2i+Y2 其中,C即为原先计算得到的A与Bh的相关系数Mh,求解一元二次方程即可得到X值。由于一元二次方程可能会有两个解,这里需要排除一个。排除方法是: 根据相关系数的正负情况,要求X·Y的值也必须要有相对应的正负情况,即如果C>0,则要求X·Y>0; 反之C<0,则要求X·Y<0。 遍历完W-T个数据,并逐个求解X后,即可得到待预测股票A序列的后期走势涨跌幅。最后待预测股票A序列通过预测的涨跌幅生成预测走势的每日收盘价后,结合Bh后期的W-T个数据每日开盘价、最高价、最低价相对于当日收盘价的变动幅度,生成A序列后期走势每日的开盘价、最高价、最低价。 以上步骤将得到基于某一只相关股票走势的预测结果。前面计算得到的H只最相关股票将可得到待预测股票的H个后期走势预测结果。 综上所述,提出了一种基于精准高低点分段匹配的股票预测方法,事先对所有股票的高低点进行检测; 然后在匹配时,先进行精准的高低点匹配,而后再进行后续片段的相关性计算; 最后通过在所有股票间全局搜索最相关的匹配段并进行后期走势预测。方法可为股票的短线操作提供决策支持。 3.5.3方法步骤与创新特征 基于精准高低点分段相关走势匹配的股票预测方法,包括如下步骤: (1) 股票数据加载及预处理; (2) 对股票所有历史数据进行高低点位置检测; (3) 待预测股票的初始高低点检测和初始模式设置; (4) 加载用于匹配的数据; (5) 基于初始模型进行高点或低点位置配准并进行相关性匹配; (6) 获得与待匹配股票相关系数绝对值靠前的几只股票; (7) 生成待预测股票的后期走势。 其创新或显著特征如下: (1) 进行相关走势匹配前,分别对待预测股票的近期走势数据和受匹配的历史数据进行了高低点位置的检测。 (2) 在进行相关走势匹配时,先进行了高点或低点位置的精准配准,而后再对配准之后的走势进行匹配。 (3) 精准配准后,根据初始模式获取低点到高点,或者高点到低点两种不同走势的数据用于相关系数的计算。 (4) 在预测结果中,除了包括待预测股票的后期走势,还提供了受匹配的最相关股票匹配日期位置前后的走势图作为对比,结果直观,利于用户使用决策。 3.5.4结果及分析 图310为股票中国核电(601985)在2016年10月27日的预测走势。图311为受匹配股票农产品(000061),匹配日期为2015年3月9日。图311用于与图310的预测结果作对比。图310最右边虚线之后为预测结果,而图310最右边虚线之后是匹配日期之后的实际走势。这里参数L取20,N取30。 图310输出的某一只股票走势的预测结果图 图311受匹配的最相关股票匹配日期位置前后的走势图