炼数成金 门户 量化投资 查看内容

基于可伸缩模式识别技术的股价预测模型

2016-7-12 21:36| 发布者: 炼数成金_小数| 查看: 24544| 评论: 0|原作者: 董家麒|来自: 上交所技术服务

摘要: 时间序列模式挖掘是数据挖掘领域一个非常重要的研究方向,其广泛应用在金融、生物、医疗、工程监控等领域。本文提出了一种新的趋势预测算法,首先使用了SAX算法对证券交易序列进行价格规范化,然后定义了一种伸缩距 ...

算法 模型 金融 可视化 量化投资 模式

时间序列模式挖掘是数据挖掘领域一个非常重要的研究方向,其广泛应用在金融、生物、医疗、工程监控等领域。本文提出了一种新的趋势预测算法,首先使用了SAX算法对证券交易序列进行价格规范化,然后定义了一种伸缩距离函数,对在指定某证券交易序列中截取的输入段作为给定序列模式进行“缩放”的相似性查询,并将这些查询结果的后续子序列进行加权平均综合形成一个预测结果。实验结果表明,这种股价趋势预测模型能够有效地提高股价的预测能力。
关键词:证券交易序列,相似性查询,模式预测,距离函数

1 引言
 成功的价值投资取决于时机的掌控,预测则为研究和预估这种时机提供了可能。证券交易序列是现代金融市场中不同证券价格或价值交易情况的记录,采用各种方法和工具以预测其变化趋势是当前商业界与学术界共同关注的热点问题。

证券交易序列是一种包含n个形如(序,值)这样的偶对元素依照一定顺序排列的集合,可形式化定义如下:
S = {(t1,p1),(t2,p2),…,(tn,pn)}        (1)

其中:n 为序列的长度; (ti,pi) (1≤i≤n)是序列中的元素,称为序元; ti(1≤i≤τ)是序元的序(order)(一般地,在上下文清楚的情况下可省略); pi(1≤i≤n)是序元的值(value),pi∈R+.

近年来主要的预测方法是基于时间序列分析的,即建立结构或非结构模型采用模式识别、参数估计和诊断验证三个步骤。常用的模型有马尔科夫链或隐马尔科夫模型、多项式回归模型、分类与回归树(CART Tree)等。但在现实应用中存在以下几个问题:

(1) 给定某个数据集,存在很多预测模型,是否能拟合给定数据集且能有很好泛化能力有待商榷,模型选择往往需要各领域的长期经验。

(2) 在选定预测模型后,往往需要预先假定数据集的密度分布函数,例如:隐马尔科夫模型需预先给定数据在隐藏状态下的分布函数,在不知道数据源产生机理的情况下,这也是比较困难的。

(3) 如果给定数据集不是充分大的时候,训练的模型易存在过度拟合(overfitting)现象,导致泛化能力较差;如出现过度拟合,则需要继续重复模式识别、参数估计和诊断验证这三个步骤。
 (4) 基于模型的方法往往较为复杂,例如:多项式回归模型需根据给定数据集求解多项式的各阶系数,又如:混合高斯模型不可能求解闭式接是不可能的、只能求解数值近似解。

有些经济学家试图从证券价格或价值的联动去分析趋势,如考虑使用一些证券交易序列的上行趋势去补偿另一些序列的下降趋势。我们受此启发从序列模式的角度,定义了一种非模型的、基于相似性查询的趋势预测方法,既无需指定任何假设,也不需要进行任何参数估计,简单可行。我们预测方法的基本思想是:历史发生的数据对未来有影响,且历史数据如果是相似的,则未来数据的变化趋势也应该是相似的,例如在基因数据库中根据待查序列和查询结果的结构相似性推测它们功能的相似性。
本文接下来的组织是:第2节对涉及相关概念进行定义。第3节给出预测算法的描述。第4节是实验结果与讨论。第5节对本文做出总结。

2 基本定义
本节给出一些与预测算法相关的定义。

 定义1(证券交易序列集)  设D是包含一个或多个证券交易序列的数据集,则称D是证券交易序列集,记为 D = {S1,S2,…,SN},N为序列数。

定义2 (模式)  一个模式就是一个序列 (p1,p2,…,pn)中连续的子序列,记作P = (pφ,pφ+1,…,pψ) ,其中:1≤φ≤i≤ψ≤n,若令 l = |ψ-φ|,则称为l此模式P的长度.

 定义3 (价格规范化) 对价格使用有序的离散化价格{D1,D2,…,Dk} 重新表示,且满足若 Vi ∈ Di,Vj ∈ Dj ,Vi≤Vj 则 Di≤ D j。
价格规范化后,交易序列的值域虽然发生了变化,但价格存在保序性。

定义4(序列区间化) 将一个证券交易序列 S 中表示价格的 pi∈R+ (1≤i≤n)离散化后分成若干区间,则可依次得到 k 个原始数据的压缩表示,那么将原序列 S 转换为新序列 S'  的过程称为价格规范化,表示为: S' = {(Ds1,ks1),(Ds2,ks2),(Dsn,ksn)},(Dsi,ksi)(1≤i≤n), 表示第i个区间有ks个连续相同字符Ds。

定义5(伸缩距离)对于区间个数相同的模式,使用伸缩距离作为相似性度量,定义如下:
(2)

3 算法描述
本节给出预测算法FSS (Forecast based on Similarity Search)的具体描述。

3.1总体框架
我们提出的这种趋势预测算法的框架是:首先对证券交易序列价格规范化,在指定进行预测的某证券交易序列中截取输入段作为给定序列模式,然后设计了一种考虑比例相似性的伸缩距离作为相似性度量,将查询的结果的后续一定长度模式加权平均作为给定模式的预测结果。

在FSS算法中,本文主要解决了如下问题:
(1)证券交易序列价格规范化。
不同证券的价格变化区间差别很大,如何规范化对预测结果是否准确影响很大。文献[5]对现有较好的8种不同的表示方式进行了统一比较,得出SAX[5](Symbolic Aggregate Approximation)是目前在假设数据正态分布的前提下最好的一种规范化成字符表示方式,其优点:一是降维,二是能使表示后的结果与原序列联系起来(其证明了规范化后的字符序列距离函数原序列距离函数的下界),三是这种表示可以转化为数据流以借鉴数据流挖掘的一些方法。

 本文对于证券价格的预测是基于趋势的,而证券价格的扰动,往往会导致计算机对趋势发生误判。比如,价格在上升之后突然发生大幅度回撤,然后又进入上升通道。使用价格规范化后,可以有效避免证券价格的扰动对趋势的误判。

(2)相似性查询。
伸缩距离相似性查询主要解决的问题是证券价格横盘时间的不同。证券价格会在一段时间内维持在一个区间内不动,然后突然进入另一个价格区间。不同证券之间变化规律相同,但横盘的时间是不同的。伸缩距离可以充分考虑这部分因素对证券模式查询带来的影响,提高模式查询的准确性。

 对证券交易序列进行的相似性查询即如何综合考虑模式长度和幅度的近似查询。这种近似查询包括如下两类:一类是待查序列中存在于给定查询模式相似的“放大”或“缩小”模式,即是查询模式的长度和幅度按比例的近似缩放,如持续天数不同的股票价格变化趋势可能相似;另一类是在放大的相似性模式中,有些小的区间段存在小幅“震荡”,但这些小区间从整体上来看不影响整个区间的趋势,这时这些小区间在进行相似性考察时应该“融合”到整体趋势中去。

(3)趋势预测分析
 使用TOP K个查询结果的后续一定长度模式加权平均能作为预测结果。

3.2 预测结果生成
FSS的预测结果是对查询结果候选集中结果的后续长度为 的模式加权平均,作为给定模式的预测结果。即设给定查询模式 的预测模式 ,则计算公式为:

从领域知识知道:无论何种证券,其价格走势都是具有很强的不确定性的,不可能完全准确预测,因此将全部查询结果的后续长度为 的模式加权平均意义不是很大。这意味着如何选取尽可能少的查询结果来代表全部以产生尽可能相似的上涨或者下跌的变化趋势很重要。我们采用的方法是:对全部结果进行排序选取其中的TOP K个伸缩距离最小的查询结果来代表。

4 实验与讨论
进行实验的环境是:进行实验的环境是:在Windows 7操作系统和内存3G的机器;算法使用Java语言实现。

实验的证券交易序列采用真实股票序列数据集:从申银万国下载的上海与深圳交易所从2002年1月1日至2013年12月31日精确复权的股票交易序列,在预处理中剔除基金、债券、权证,仅保留SH6和SZ0开头股指品种 (含退市股),每只股票一个文本文件,包含了股指品种、日期和日开盘价、日收盘价、日最高价、日最低价。我们从中抽取出2002年1月1日起始数据建立实验数据集SET_2002;抽取出2006年1月1日起始的数据建立数据集SET_2006。

4.1 可视化
首先,为了说明我们的价格规范化方法,在SET_2002数据集对股票代码为SH600152进行原数值型证券交易序列与规范化后使用二维向量进行重叠合并的字符序列进行可视化比较,我们看到:在保证区间平衡的前提下部分进行了融合和缩放。

图1 SH600152价格规范化前后比较

 (1) 无消息来源的:输入查询段的开始日期为2010-7-5、结束日期为2011-4-7。
表1所示使用相似性查询得到的TOP 10个结果的详细信息,包括查询段匹配和后续长度为 τ = 30 的真实数据。

表1 SH600152的TOP 10个相似性查询结果起讫日期及伸缩距离详细数据

图2(a)和(b)分别表示查询到的结果和后续区间各自形状。

图2 SH600152的TOP 10个相似性查询结果和后续区间(τ=30)各自形状可视化比较图

图3表示预测结果与真实历史数据比较。

图3 SH600152的预测结果与真实历史数据比较

(2) 有消息来源的:输入的查询段分别为:SH600111开始日期2009-9-2、结束日期为2010-8-26;SZ000752开始日期为2010-7-5、结束日期为2011-3-1。
图4(a)和(b)分别表示SH600111和SZ000752预测结果与真实历史数据比较。

图4 SH600111和SZ000752预测结果与真实历史数据比较

最后,我们对SH600152分别在SET_2002和SET_2008数据集上进行伸缩性可视化比较,如图5所示,分别选取同一查询段(开始日期为2010-7-5、结束日期为2011-4-7)进行,可以看到:TOP K差异不大,选取这种方法在不同的数据集对趋势预测影响较小。

图5 SH600152分别在SET_2002和SET_2008数据集上预测结果与真实历史数据比较

4.2 预测正确率
为说明预测结果是否准确,我们在SET_2008数据集上随机抽出100只进行准确性评价,评价标准一律采用以下标准由机器自动识别,如图6所示。

图6 预测结果评价标准

为了检验预测输入段与预测结果的影响程度,实验采用了:
(1) 3个不同预测时期,定义了预测点日期是:
预测点1  2008-6-30;
预测点2  2008-12-31;
预测点3  2009-6-30;

(2) 3种输入段的自动选择方法:
选择1  采用简单的人为指定的方法,在预测点前直接选择半年的数据作为预测输入段,即从2008-1-1~6-30, 2008-7-1~12-31, 2009-1-1~6-30。
选择2  根据定义10,在预测点前自动包含一个头部模式作为预测输入段;
选择3  在选择2的基础上,再包含一个底部模式作为预测输入段。

如图7(a)和(b)所示,分别为不同预测时期与输入段选择方法的预测结果比较情况,分为:预测正确(postitive)、模棱两可(ambiguity)和预测错误(negative)三种。

图7 不同预测时期与输入段选择结果比较

首先,从区分不同预测时期总体情况来看:选择3最好、选择1最差,这是因为:
选择1是在预测点前直接人为选择半年的数据作为预测输入段的,存在问题是虽然输入段很长,但仍无法保证输入段具有典型形态。

选择2相比于选择1有了较大改进,我们定义了一种领域知识内表示上涨行情趋势的头部模式,一般而言包含一个头部模式的输入段长度小于半年,其执行时间明显较选择1短。但是选择2的缺点在于头部模式仅仅是一种上涨行情,是不够的,会导致预测在部分情况下将局部的头部理解为整体的头部,从而无法准确预测该股票价格是否能进一步增长。

选择3则是在选择2的基础上,额外加入了一种领域知识内表示下降行情趋势的底部模式,其输入段长度在大部分情况下会较选择1要长,极端情况输入段的起始日期落在2005年下半年。但是选择3所包含的信息量更多,“头部+底部模式”的出现更有利于帮助辨别头部模式在整个股票价格在增长过程中出现的相对位置,使得预测更为准确。

其次,从不同预测点以预测时期总体情况来看:预测点3最好、预测点2最差,这是因为:

预测点1和预测点2的输入段是一个熊市,从年初5261.56点,探底到2008-10-28的1664.93点,而我们的历史数据是从2002-1-1开始的,数据中所含的急剧下跌行情数量不够,因此导致预测点2这个时期的3种选择的平均正确率仅为19.462%,从而很大程度上导致预测算法的预测正确率从80.435%下降到53.300%。而预测点3最好的关键是由于其所在的时间点是最晚的,实验数据集包含的历史数据最多因而准确。

再次,结合上述两类我们发现:选择2虽然误判率最低的但给出模棱两可判断的数量非常高,其原因是仅包含一个头部模式的输入段,既能判断是整体头部、后续趋势向下,也可认为是局部头部、后续仍有上涨空间;由此选择3给出模棱两可判断的数量最低符合预期。同时,在预测点3选择1的预测正确率是最高的,这是因为选择1直接选择的半年中股票价格走势比较平稳,而且大部分股票期间都已包含一个头部模式和一个底部模式。

5、结束语
本文提出了一种基于可伸缩模式识别技术的证券价格预测技术,该技术在各种给定的查询模式下进行了一系列实验,实验结果表明可以把握住总的预测趋势。但我们同时发现:如何正确截取指定欲进行预测的证券交易序列中某段作为给定序列模式、熊市指标的失灵等对预测结果的质量影响较大,针对输入段对预测的影响,我们将做进一步研究。另外,由于算法没有考虑到价格振幅比例,比如某两个证券交易序列分别在50~100元、1~5元价格区间振幅,因而会将价格区间幅度不一的模式作为结果找出来,从而影响预测质量,这将是我们的下一步工作。

参考文献
[1] Xiong Yun. The Research on Biological Sequential Pattern Mining and Clustering [D]. Shanghai: Fudan University, 2007. (熊赟. 生物序列模式挖掘与聚类研究[D]. 上海: 复旦大学, 2007.)
[2] Zhu Yangyong, Dai Dongbo, Xiong Yun. A Survey of the Research on Similarity Query Technique of Sequence Data [J]. Journal of Computer Research and Development, 2010, 42(2): 264-276 (in Chinese). (朱扬勇, 戴东波, 熊赟. 序列数据相似性查询技术研究综述[J]. 计算机研究与发展, 2010, 42(2): 264-276.)
[3] Robert S Pindyck, Julio J Rotemberg. The Excess Co-movement of Commodity Prices [J]. The Economic Journal, 1990(100): 1173-1189.
[4] Walter C. Labys, Yves Perrin. Multivariate Analysis of Price Aspects of Commodity Stabilization [J]. Weltwirtschaftliches Archives, 1976(112): 556-564.
[5] J. Lin, E. J. Keogh, L. Wei, and S. Lonardi. Experiencing SAX: a novel symbolic representation of time series[C]. Data Min. Knowl. Discov., 15(2), 2007.

作者:董家麒/百度中国有限公司 上海研发中心 工程师 上海
E-mail: jaykee0906@hotmail.com

欢迎加入本站公开兴趣群
量化投资群
兴趣范围包括:量化投资,算法交易,金融建模,统计套利等等
QQ群 262335016
如果大家不明白什么是量化投资,在百度谷歌搜索一下“西蒙斯”就知道了,最近这哥们火极了!这套东西在国外的金融机构已经大量使用,随着中国金融市场规模日益扩大和趋于成熟,这套玩法最终肯定也能在国内转起来,我们一起学习切磋,寻求项目机会做一下,提升自己在这方面的技能,将来一起发财

鲜花

握手

雷人

路过

鸡蛋

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2017-5-27 17:54 , Processed in 0.280253 second(s), 25 queries .