基于遗传编程的技术分析在股票市场预测中的建模与应用
2014-06-05尚朝辉甄九州
尚朝辉,甄九州
(1.河北工业大学 管理学院,天津 300130;2.永安华明会计师事务所,北京 100738)
基于遗传编程的技术分析在股票市场预测中的建模与应用
尚朝辉1,甄九州2
(1.河北工业大学 管理学院,天津 300130;2.永安华明会计师事务所,北京 100738)
现如今大量实证研究通过使用人工智能技术来增强技术分析在股票市场的预测能力。本文构建了基于遗传编程理论的股票技术交易模型,通过使用五个世界股票指数、五支英国股票以及五支中国股票不同时长的历史数据进行的实验表明,该模型的盈利能力较基本的技术指标均有提高,并能战胜“买入-持有”策略。
股票市场;技术分析;遗传编程;移动视窗技术
一、引言
技术分析使用历史信息,如成交价、成交量等,来预测金融市场上的某一投资工具将来的价格走势[1]。与分析金融资产内在价值的基本分析不同,技术分析运用图表和指标来发现价格形态,预测市场趋势。尽管金融市场上的投资者们对技术分析抱有极大信心,在学术界关于技术分析是否有显著的预测能力仍存在分歧。主要的批判来自两个理论:随机游走假说和有效市场假说。肯德尔和希尔(Kendall&Hill,1953)以及罗伯茨(Roberts,1959)认为金融工具的价格变化类似物理学上的分子“布朗运动”,具有随机游走,不可预测的特点[2-3]。法玛(Fama,1970)认为如果金融市场是弱式有效的话,市场价格已充分反映出所有历史信息,技术分析不可能获得超额收益[4]。因此检验技术指标是否能战胜“买入-持有”策略一直以来都是检验市场有效性的常用途径。然而市场上存在着大量的技术指标,不同的技术指标往往只适用于特定的市场形态。基于此观点,马歇尔(Marshall,2008)认为某个技术指标无法获得持久性的超额收益并不能说明市场已经具备弱式有效[5]。
针对这一问题,本文构建了基于遗传编程理论的股票技术交易系统。该系统以历史价格为输入变量,生成的七种常用技术指标,然后随机将这些指标结合起来生成一定数量的交易策略,通过交叉、变异、遗传等手段进行优化,最终输出最优交易策略,并通过评估其在样本外的盈利能力来检验市场有效性假说。另外,本文使用了移动视窗技术来扩大样本区间,在一定程度上避免了数据探测偏差的发生。
二、遗传编程及基于遗传编程的技术交易系统
(一)遗传编程
遗传编程(GP)的前身来源于由霍兰德(Holland,1975)于1975年首先提出来的遗传算法(GA)[6]。作为一种启发式搜索算法,遗传算法(GA)通过模拟生物进化的过程来搜寻近优解。双亲交配和遗传基因变异都可以产生新的染色体,从而使物种得到进化。遗传算法正是根据这种理论模拟了“物竞天择,适者生存”的机制,用逐次迭代法进行搜索寻优。在遗传算法中的个体是指某一生物体,应用在技术分析中则是指某一交易规则或策略,是算法的基本单位。个体通常使用一长串的字符串来表达,字符串中的每一位对应一个基因。个体通常使用二进制的字符串表达,字符串中的每一位对应一个基因。然后随机生成一定数量的个体组成初始种群,并用根据优化目标确定的适应度函数,在训练区间上对每个个体进行评估。之后种群通过复制、交叉和变异进行逐代进化。当达到预设的终止条件时,进化停止。此时,当代种群中具有最高适应度的交易策略即为最终解,并进入测试区间进行评估。科赞(Koza,1992)认为遗传算法(GA)只能使用固定长度的字符串来代表种群中的个体,因此限制了解空间的多样性[7]。为了弥补这一缺陷,他将遗传算法(GA)改进成为遗传编程(GP)。
(二)基于遗传编程的技术交易系统
1.系统框架
本文的交易系统以历史价格为输入变量,以技术分析为基础理论,以遗传编程方法为核心模块,输出最优技术交易规则。系统首先将历史价格转换成多种技术指标,之后将技术指标生成的买入卖出信号作为遗传编程模块的输入数据,通过种群初始化,复制、交叉、变异等子模块进行进化,并以夏普比率为适应度函数,最终将得到的最优交易规则应用于测试区间。系统框架结构如图1。
图1 遗传算法流程图
2.编码
构建基于遗传编程的技术分析系统的出发点是计算技术指标。每一个技术指标可以生成一系列的买入,持有和卖出信号。针对大部分基于遗传编程的交易系统产生的交易策略难以理解,缺乏实际意义的问题,本文采取了邓普斯特和琼斯(Dempster&Jones,2001)的方法[8],即只应用技术指标生成的交易信号和逻辑运算函数(AND,OR,XOR)作为输入数据和运算函数,抛弃算术操作符,比较运算函数,最大值、滞后值与平均值等运算函数。一个完整的交易策略包含指标信号的状态(真或假),连接符(AND,OR,XOR),选择区(是或否)和最终输出(买入或卖出),如图2(a)、图2(b)和图2(c)分别展示了交易策略的字符串表达形式和树形结构表达形式。每一个技术指标都有一个数位来表示该指标的状态:“真”或“假”(“1”或“0”)。一个“真”的技术指标意味着投资者认为它可以给出正确的交易信号,反之亦然。为了保证交易策略的多元性,该系统添加了“选择区”,用1或0来代表“激活”或者“非激活”状态。处于激活状态的基因为显性基因,参与交易策略的生成;处于非激活状态的基因为隐性基因,不影响该策略,但在进化过程中有可能转变成显性。
3.种群初始化
图2
本系统的种群初始化是通过生成一系列符合均匀分布的伪随机字符串实现的。假设可以被使用的指标总数为I,在每个策略中指标的最少和最多使用数量分别为J和K,且J≤K≤I。生成一个随机均匀分布的整数因子U,使J≤U≤K。该因子代表了有U个指标会被激活并应用到当前交易策略中,且有I-U个指标被忽略(隐性)。第一步,生成选择区。该步的关键是随机为U个指标确定位置。以不重复抽样法生成一个随机均匀分布的整数序列V1,V2,…,VU,使1≤V1≤V2≤…≤VU≤I。这些数字代表了U个显形指标在I个指标中的分布位置。然后生成一个长度为I的二进制字符串,在V1,V2,…,VU对应的位置上填充1,其余位置上填充0。第二步,为每个指标确定状态。随机生成I个单字节字符变量(1或0),并放到相应位置上。1代表状态为真,0为假(注意在这里要为所有的显性和隐性指标确定状态)。第三步,生成连接符。需要注意的是随机生成的“11”字符串是无效的并应被剔除。最后,把每个指标的状态,连接符,以及选择区按照顺序连接起来,组成一个完整的交易策略。重复上述步骤,直到满足预先设定的初始种群数量。
4.适应度检验
在初始种群生成后,需要使用特定的适应度函数,在训练区间上评估种群中的每一个交易策略,作为进化的基础。适应度函数的选取对一个交易系统的成败起着至关重要的作用。传统的适应度函数有收益率,与无风险利率相比的超额收益率以及与“买入-持有”策略相对比的超额收益率。本文则采取了可以同时对收益与风险加以考虑的夏普比率来作为评判交易策略优劣的适应度函数。夏普比率最高的交易策略可以在固定的所能承受风险下,收获最大的收益;或在固定的预期收益下,追求最低的风险。从初始种群开始,每进化一代都要对所有个体进行适应度函数检验,然后按照夏普比率降序排列。
5.复制、交叉与变异
该系统的种群进化通过复制,变异与交叉实现。复制指的是将当前种群中最优的c%精英个体直接放入下一代种群。这样做可以在最大程度上保证优良的基因可以在种群进化中延续下来。交叉指的是将两个父代个体的部分结构加以替换和重组。在选定两个父代个体之后,系统随机选取交叉位置将每个个体分为头尾两部分。然后头尾互换产生两个新个体。最后随机在两个个体中间选择一个作为后代。交叉概率m%指的是只有表现最好的前m%的个体才会被选择进行交叉。需要注意的是,根据之前的设计,每个连接符占用两个字节位。因此为了保证交叉后的基因完全来自父代且没有变异,该系统禁止将交叉位选择在一个连接符的内部。此外,每一个通过交叉产生的新个体都要通过唯一性检验,重复的个体将会被剔除。图3展示了一个典型的交叉例子。交叉点被随机选择在了第三字节,两个个体分别被分割成了“110-0010111”和“000-1001101”,二者交叉产生后代“000-0010111”。变异作为生物进化的一个重要特征,在遗传编程中同样起着关键作用。变异率n%决定了每个个体的变异程度。如图4,变异只发生在了第六位字节上,这一改变使得第三个连接符从或变为了和(“01”到“00”)。另外,变异也可以发生在状态位上从而使指标从真假间切换,或者发生在选择区,使得隐性基因变为显性。与交叉一样,变异产生的个体也要通过唯一性检验。
图3 交叉过程示意图
图4 变异过程示意图
三、实证分析
为了检验系统是否具有广泛的适应性,本文分别选取了指数和个股作为研究对象。表1列出了在本文中应用的七种技术指标的名称,缩写以及计算所需数据。其他参数选择见表2。
表1 技术指标概况
在以下的所有实验中,除了种群大小和交易成本之外,参数遵循邓普斯特和琼斯(Dempster&Jones,2001)的设定,如表2。当初邓普斯特和琼斯考虑到过大的种群数量会消耗更多的计算资源和时间,因此将种群大小限定在150。但本文将之提升为250,因为更大的数量可以确保种群有更高的多样性,而且随着计算机硬件水平的发展,遗传编程的计算速度也有了大幅提高[8]。
表2 遗传编程参数选择
(一)指数实验
实验一的数据包括5个世界重要股票指数从2010年1月至2012年11月的开盘价,最高价,最低价和收盘价。所有数据按3:1的比例分为训练期和测试期两部分。根据现实情况,本实验将交易股指的成本定为0.04%。表3列出了该系统生成的最优策略在相应测试期的收益率(GP),并与常用技术分析指标收益率,以及“买入-持有”策略收益率(B&H)进行对比的统计结果。从表中可以看出,在大部分情况下,5支股指中GP均战胜了常用技术指标以及“买入-持有”策略。
实验二的数据包含FTSE 100从2002年12月到2012年11月十年间的日交易数据,并采取了移动视窗技术以固定的步进值将一段数据划分为多组互相重叠的训练期间和测试区间[9]。将三年的数据作为训练期,之后一年的数据作为测试期进行一次评估,然后将整个测试步进一年。因此,十年的数据可以产生七个重叠但相对独立的测试。为了测试移动视窗技术的有效性,需进行一组额外的实验,即训练三年的数据,测试七年的数据。实验二扩大了实验区间,这在一定程度上可以避免数据探测(Data Snooping Bias)。另外,考虑到最优交易策略可能会随着市场环境的变化而变化,某一特定策略可能只能在一段时间内战胜市场,因此应用最近三年的数据来测未来一年的股指走势更符合在现实市场中投资者的真实行为。
表3 五个股指的GP、常用指标、“买入-持有”策略的收益率统计
如表4,GP虽然在三个测试中得到了负的收益率,但十年来的整体平均水平(8.24%)仍然可以击败所有常用指标和“买入-持有”策略(3.21%)。可以发现失败测试所在的年份往往是市场环境出现较大变动的时间,如2007年美国次贷危机和2009年欧洲主权债务危机。然而值得注意的是,在获得足够训练数据之后,该系统便可以通过进行大量的做空来适应下跌行情并获得超额收益。由表3.4也可以看出,在前七个测试中,GP收益率的均值(8.24%)高于所有常用指标以及“买入-持有”策略的收益率均值(3.21%)。但是在测试八中,GP年化收益率(2.29%)却低于CCI(3.97%),FSTO(2.50%)和SSTO(4.39%)的年化收益率。另外,前七个测试的GP收益率的均值(8.24%)也要高于测试八的年化收益率(2.29%)。这证明了移动视窗技术优化了遗传编程生成的最优策略,使之随着市场环境的变化做出正确的调整。
表4 FTSE 100的GP,常用指标,“买入-持有”策略的收益率统计
(二)个股实验
为了检测该交易系统的普遍适应性,个股实验选取了五支在伦敦证券交易所上市的FTSE 100成份股和五支在中国沪深证券交易所上市并首批进入融资融券标的的股票。伊斯法哈尼博(Esfahanipour,2011)的研究认为交易频繁的股票更容易在算法交易中获利,因此本文在两个市场内选取了不同行业中交易频繁,成交金额大的十只股票[10]。如表5所示,针对英国市场,本实验遵循实验一的设定,数据包括5个个股从2010年1月至2012年11月的开盘价,最高价,最低价和收盘价。而在中国,由于融资融券于2010年3月才开始正式实施,因此实验数据的起点延后至2010年3月31日。根据现实情况,英国个股的交易成本设定为0.04%,而中国个股的交易成本则设定为0.3%。
表5 个股实验选取股票名称、代码、所属行业,数据来源及时长
由表6和7可以得出结论,所有十支个股在测试期均战胜了常用技术指标和“买入-持有”策略,这在一定程度上证明了将该遗传编程系统应用在个股交易中是可行的。值得注意的是,浦发银行的GP收益率(16.10%)要低于“买入-持有”策略收益率的绝对值(16.80%)。这说明在纯下跌行情中,该系统产生的交易策略并不能战胜“一直做空”策略。
表6 五支英国股票的GP、常用指标、“买入-持有”策略的收益率统计
表7 五支中国股票的GP、常用指标、“买入-持有”策略的收益率统计
与上节中的指数实验相比,可以发现在相同实验期内(2010年1月至2012年11月),交易五支英国股票的平均收益(19.80%)要比交易FTSE 100指数的收益率(9.98%)高。由于本实验选取的这五支股票在FTSE 100成分股中是流动性位于前列的股票,因此可以认为这五只股票组成的投资组合的流动性要高于FTSE 100指数。
四、结论
检验市场有效性的一个重要途径是研究某个或某些技术指标与“买入-持有”策略相比的超额盈利能力。然而不同的技术指标往往只适用于特定的市场形态,因此只能在一段时间内战胜市场。为了解决这一问题,本文构建了基于遗传编程的技术交易系统。该系统以历史价格(开盘价、最高价、最低价和收盘价)为输入变量,生成的七种常用技术指标,然后随机将这些指标结合起来生成一定数量的交易策略,通过交叉、变异、遗传等手段进行优化,然后评估最优策略在样本外的盈利能力。
通过使用五个世界股票指数、五支英国股票以及五支中国股票不同时长的历史数据进行的实证研究表明,该技术交易系统生成的最优交易策略的盈利能力均较原始的技术指标有所提高,并能战胜“买入-持有”策略。另外,该系统在流动性较强的个股上能获得更高的超额收益。将来的研究方向主要集中在三个方面。一是遗传编程系统的参数优化,如种群数量、变异率等。二是如何识别突然的市场环境变化,潜在的解决方案包括增加适应于不同市场趋势的技术指标以及与人工决策相结合等。三是用不同的方法来避免数据探测以及检验模型的真实有效性,如真实性检验和预测力优劣检定法。
[1]Pring M J.Technical Analysis Exp lained:the Successful Investor’s Guide to Spotting Investment Trends and Turning Points[M].New York:McGraw-Hill,(2002).
[2]Kendall M G,Hill A B.The Analysis of Economic Time-Series-Part I:Prices.Journal of the Royal Statistical Society[J].Series A(General),1953,116(1):11-34.
[3]Roberts H V.Stock-Market“Patterns”and Financial Analysis:Methodological Suggestions[J].Journal of Finance,1959,14(1):1-10.
[4]Fama E F.Efficient Capital Markets:A Review of Theory and Empirical Work[J].Journal of Finance,1970,25(2):383-417.
[5]Marshall B R,Cahan RH,Cahan JM.Can Commodity Futures be Profitably Traded with Quantitative Market Timing Strategies?[J].Journalof Banking and Finance,2008,32(9):1810-1819.
[6]Holland JH.Adaptation in Natural and Artificial Systems:an Introductory Analysiswith Applications to Biology,Control,and Artificial Intelligence[M].AnnArbor:University of Michigan Press,1975.
[7]Koza JR.Genetic Programming:on the Programming of Computers by Means of Natural Selection[M].Cambridge,Mass.:MIT Press.
[8]Dempster M A H,Jones CM.A Real-time Adaptive Trading System Using Genetic Programming[J].Quantitative Finance,2001,1(4):397-413.
[9]Chen S,Kuo T,Hoi K.Genetic Programming and Financial Trading:How Much About“WhatWe Know”[A]//Zopounidis C,Doumpos M,Pardalos PM.Handbook of Financial Engineering[C].Springer US,2008:99-154.
[10]Esfahanipour A,Mousavi S.A Genetic Programming Model to Generate Risk-adjusted Technical Trading Rules in Stock Markets[J].Expert Systems with Applications,2011,38(7):8438-8445.
Modeling and Application of Technical Analysis in Stock Market Based on Genetic Programming
SHANG ZHAO-hui1,ZHENG Jiu-Zhou2
(1.School of Management,Hebei University of Technology,Tianjin 300130,China;2.Ernst&Young HunaMing LLP,Beijing 100738,China)
Nowadaysmany empirical studies attempt to enhance the technical analysis by using an artificial intelligence method such as genetic programming and artificial neural network.This paper develops a genetic programmingmodel to test the profitability of technical indicators in stock markets with daily data.Fourmain experiments are applied by using historical data of five world stock indices(FTSE 100,S&P 500,CAC 40,DAX and Nikkei 225),five individualstocks listed on FTSE 100 and five A-shares in China.An evidence ofsignificantexcess returns is found in stock markets,comparing to the“buy and hold”strategy.
stockmarkets;technical analysis;genetic programming;sliding-window technique
F224.9
A
1008-2700(2014)0028-08
(责任编辑:高立红)
2014-01-08
尚朝辉(1970- ),男,河北工业大学管理学院博士研究生,高级经济师,研究方向为管理科学与工程;甄九州(1989- ),男,安永华明会计师事务所审计师,金融学硕士。