在进行反转点预测前,首先需要获取某只股票的历史交易数据,这些数据包括每天的开盘价、收盘价、最高价、最低价等。然后对这些数据进行预处理,并在预处理后的数据上进行反转点定义。最后抽取符合要求的技术指标组合向量,并使用SVM进行训练和预测。各部分的具体流程和方法如图13-3所示。
图13-3 SVM进行趋势拐点预测的流程
数据预处理
股票价格历史数据只包含了股票交易的最基本信息,要在这些历史数据上进行数据挖掘从而揭示股价反转的特征,首先需要对历史交易数据进行预处理。系统中数据预处理主要包括两方面:技术指标的计算和股票收盘价的平滑。
本案例采用了3个趋势技术指标,分别为MACD、 KDJ和RSI。
(1)MACD的计算公式如下:
(1)
其中EMA(J,T)表示数值J的T日指数移动平均值,Cx表示第x天的收盘价,S表示快速指数移动平均线的天数,L表示慢速指数移动平均线的天数,通常S取值为12, L取值为26, N取值为9。
(2)KDJ的计算公式如下:
(2)
其中,Cx表示第x天的收盘价,CHx,表示x天内的最高价,RLx表示x天内的最低价,通常x取值为9。
(3)RSI的计算公式如下:
(3)
其中MEANUP(C, x)表示x天内上涨收盘价的平均值,MEANDOWX(C, x)表示x天内下跌收盘价的平均值,通常x取值为12。
(4)收盘价平滑。股票每日收盘价连线最能表现股价走势,但是由于股票市场的特殊性,股票收盘价会在趋势方向上存在着一定的波动。为了消除收盘价波动对反转点定义的影响,本案例对股票收盘价进行平滑。
收盘价平滑公式如下:
其中,y(n)是指第n天股票的收盘价,y(n)是平滑后第n天股票的收盘价。同时,如果收盘价在趋势方向上的波动范围小于某一个足够小的给定值r'(r'>0),则忽略该小波动,具体处理方式为:假设在时间序列上有4个点t1,t2,t3,t4,它们对应的股价分别是Yt1, Yt2,Yt3、Yt4,则其变化率分别是:η=(Yt2-Yt1)/Yt2、r2=(Yt3-Yt2)/Yt2,r3=(Yt4-Yt3)/Yt3,如果η*r3>O, η*r2<0且abs(r2)<r,则将变化率r2置为0。