基于遗传编程的股票指数技术交易系统的设计与实现_第1页
基于遗传编程的股票指数技术交易系统的设计与实现_第2页
基于遗传编程的股票指数技术交易系统的设计与实现_第3页
基于遗传编程的股票指数技术交易系统的设计与实现_第4页
基于遗传编程的股票指数技术交易系统的设计与实现_第5页
已阅读5页,还剩2页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于遗传编程的股票指数技术交易系统的设计与实现

0基于遗传编程的技术交易系统的提出技术交易规则通过分析价格和历史数据来指导交易决策。有效的市场假设假设,在存在弱有效市场的情况下,当前的价格水平充分反映了历史交易信息,并否认了技术分析可以战胜市场的可能性。因此,对技术交易规则有效性的检验一直以来都是检验市场有效性的重要途径。比较流行的技术交易规则相对于“买入-持有”策略的超额收益,是学者们检验技术交易规则有效性的常用途径,但这一研究方法可能导致两种结论偏差。一方面,由于流行的技术交易规则是在多年的市场起伏中由投资者们筛选出的,这一研究方法相当于用同一段历史数据首先筛选出性能优越的技术交易规则,再来检验它们的超额收益,从而缺乏对技术交易规则有效性的真正样本外测试,存在有数据探测的问题。因而,流行的技术交易规则战胜市场并不能够完全否定市场的弱式有效性。另一方面,市场上存在有大量的技术交易规则,一个技术交易规则获得超额收益的能力通常只能持续一段时间,不同的技术交易规则在不同的市场环境下会表现出不同的优劣性。因此,某个或某些流行的技术交易规则不能够持久地战胜市场,也不能够得出市场具备弱式有效性的结论。针对上述两种结论偏差,本文提出构建基于遗传编程的技术交易系统。首先,该系统不依赖于对流行的技术交易规则的先验知识,在训练区间通过遗传编程优化由基本函数模块随机构成的技术交易规则,输出的最优技术交易规则被应用于后继的测试区间。因此,在测试区间上对该系统的性能评估可以实现真正的样本外测试,避免数据探测的问题。其次,该系统根据输入的价格与成交量训练数据,通过遗传编程自适应地产生最优技术交易规则,其输出的最优技术交易规则根据训练区间的市场环境改变而相应变化。因此,对该系统的性能评估是对市场弱式有效性的更可靠检验。1初代种群的建立、进化和变异操作遗传编程和大家更为熟悉的遗传算法(GA,geneticalgorithm)一样,都是模仿生物进化机理的随机优化方法,具有并行性和全局寻优能力。它们的区别在于,遗传算法使用线性结构表示问题的候选解,遗传编程则使用树形结构表示问题的候选解。树形结构的编码方式可以很好地描述技术交易规则,根节点的函数返回值对应于交易决策,每个非叶子节点的子节点为其函数提供输入参数,叶子节点则对应于输入数据。使用遗传编程探寻最优技术交易规则的第一步,是根据市场特点选择函数模块,随机构建一组树形结构的技术交易规则,形成遗传编程的初代种群。每一棵树的构建都采用自顶向下的顺序,根节点被随机设定为具有规定返回值类型的函数,其余各节点被随机设定为符合其父节点输入参数要求的函数或者输入数据。初代种群生成后,遗传编程将用根据优化目标定制的适应度函数,在训练数据上对其中每一个技术交易规则进行评估。种群的逐代进化,通过复制、交叉和变异来实现。复制,即选择当代种群中的树直接拷贝进入下一代种群。交叉,即选择当代种群中两棵树并随机交换它们的分支(子树),将新生成的树送入下一代种群。变异,即令当代种群中某些树的分支随机突变,将新生成的树送入下一代种群。新一代种群达到预先设定的规模时,一次进化结束,遗传编程将计算其中每一个技术交易规则的适应度数值,作为下一次进化的基础。通过提高适应度数值较高的树被选择参与复制和交叉操作的比例,遗传编程使得种群向提高适应度数值的方向逐代进化。变异操作的引入,则可以防止遗传编程的优化提前陷入局部最优解。当达到预设的进化终止条件时,逐代进化停止,此时,当代种群中具有最高适应度数值的技术交易规则即为遗传编程优化得到的最优技术交易规则,其样本外性能将在测试数据上进行检验。2输出自适应性的最优技术交易规则本文的股票指数技术交易系统以历史价格与成交量作为输入,以遗传编程优化方法为核心模块,输出具有自适应性的最优技术交易规则。系统的输入同时也作为遗传编程模块可选用的输入数据。此外,系统还提供了对输入进行对数变换的模块,对数变换的结果同样作为遗传编程模块的可选择输入数据,以提高系统捕获数据间非线性联系的能力。系统框架结构如图1所示。2.1窗宽与序列数据图1遗传编程模块中的输入数据子模块,包含了可选择以构建技术交易规则随机树的叶子节点的所有数据。该模块由四大类数据构成,即序列数据、布尔型数据,窗宽数据、实数。其中窗宽数据的取值范围是1-150之间的整数,实数则是指(0,1]之间均匀分布的随机数。序列数据还包括四个子类型,即价格类(开盘价OPR、收盘价CPR、最高价HPR、最低价LPR),成交量类(成交量VOL)、对数价格类(对数开盘价LGOPR、对数收盘价LGCPR、对数最高价LGHPR、对数最低价LGLPR),对数成交量类(对数成交量LGVOL)。其中对数类序列数据的提出是对作者现有文献遗传编程输入数据类型的补充,本文将通过实证研究引入该非线性变换序列数据的效用。2.2指数加权平均值函数图1遗传编程模块中的基本函数子模块,包含了可选择以构建技术交易规则随机树的非叶子节点的所有函数。本文的基本函数子模块沿用作者现有文献的设计,除了包含有现有遗传编程文献常用的算术操作符(+,-,×,÷),逻辑运算函数(AND,OR,XOR),比较运算函数(>,<),返回输入参数绝对差值的函数(NORM),返回指定窗长内数据序列的最大值(MAX)、最小值(MIN)与平均值(AVG)的函数,返回数据序列指定窗长的滞后值的函数(LAG),还引入了两个新的函数,即返回指定窗长内数据序列标准差的函数(STD),以及返回指定窗长内数据序列指数加权平均值的函数(EAVG)。标准差函数的引入可以将价格与成交量序列的波动信息纳入交易决策的考量。指数加权平均值函数的引入,使得近期数据被赋予更高的权重,从而确保近期数据对交易决策产生更大的影响。数据序列P的指数加权平均值函数定义如下这里的Pt代表时间标记在t日的数据序列P,Pt表示数据序列P在t日的取值,w是权重,L是EAVG函数的窗长参数,t是普通平均值函数AVG的窗长参数。表1给出了本文所用的基本函数子模块的具体构成。表中的(序列+时间)数据表示带有时间标记的数据序列,序列实数表示区别于(0,1]随机数的实数,可以是数据序列在给定时间标记的取值,或者数据序列参与运算的结果。这里,普通的算术运算符(+,–,×,÷)被算术运算函数(ADD,SUB,MUL,DIV)代替,并将其定义为:ADD(L,R)=L×(1+R),SUB(L,R)=L×(1-R),MUL(L,R)=L×R,DIV(L,R)=L÷R,其中左参数为序列实数,右参数则为(0,1]随机数,以减少无效计算,并提高遗传编程优化技术交易规则门限值的能力。2.3关于a作为创始条件的生长网络地理遗传编程的初代种群中每一棵技术交易规则随机树的生成都采用自顶向下的顺序。树形结构的根节点随机选择为返回值可以对应于相应市场交易决策的函数,每个非叶子节点的子节点为其函数提供输入参数,因此随机选择为返回值类型匹配的函数,或类型匹配的输入数据。由于试验发现深度较大的树形结构具有较大比例的冗余及无效分支,本文规定初代种群中树形结构的深度不超过8层,因此第7层的非叶子节点仅允许选择输入数据作为其子节点,即其子节点均为叶子节点。由于中国现阶段仅允许对股票指数进行买、卖操作,本文将树形结构的根节点定义为具有布尔型返回值的函数,即可在表1中的比较运算函数与逻辑运算函数中选择根节点函数。规定返回1对应买入信号,返回0对应卖出信号。此外,由于表1中比较运算函数的左右参数均为序列实数,而作为供选择输入数据的股票指数价格(及对数价格)与成交量(及对数成交量)数据的数量级差别较大,不同类型数据间的比较意义不大,本文在生成初代种群时,对比较运算函数引入“绑定序列数据类型”的概念,以尽可能减少低效的树形结构。具体而言,当比较运算函数被选作节点函数时,即随机绑定四种序列数据子类型(价格类,成交量类,对数价格类,对数成交量类)之一,该序列数据子类型亦成为以该节点为根节点的子树中唯一允许出现的序列数据子类型。图2给出了“绑定序列数据类型”规则的具体示例。这里树形结构的根节点A被随机选择为逻辑运算函数(OR),其右子节点B被随机选择为比较运算函数(>),并随机选择绑定成交量类序列,因此子树b中仅允许出现成交量类序列数据。此外,节点C的比较运算函数(<)被随机绑定价格类序列,因此子树c中仅允许出现价格类序列数据;节点D的比较运算符(<)被随机绑定对数价格类序列,因此子树d中仅允许出现对数价格类序列数据。2.4遗传编程进化规则设计在一代种群生成后,遗传编程使用根据研究问题及优化目标定制的适应度函数,在训练区间上评估种群中的每一个技术交易规则,作为进化操作的基础。本文沿用检验股票指数技术交易规则有效性的传统方法,根据技术交易规则相对于“买入-持有”策略的超额收益来检验其有效性。假设资产在评估区间的初始处于现金状态,并在评估区间末回复到现金状态。则在长度为T日(日历日)的评估区间内,技术交易规则的收益r,以及“买入持有”策略的收益rb-h分别为其中,Ib(t)与Is(t)分别是资产处于股票状态和现金状态的指标函数,若资产在t日处于股票状态则Ib(t)取值为1,Is(t)取值为0;若资产在t日处于现金状态则Is(t)取值为1,Ib(t)取值为0。P(t)表示证券价格,本研究中使用日收盘价格。Rfree(t)表示年化无风险利率,本研究中使用人民币活期存款年利率。n表示T日内“买-卖”操作的对数。c为交易费用,在中国股票市场主要包括印花税、佣金等,本研究中将交易费用设为成交价格的0.4%。本文将技术交易规则在该长度为T日的评估区间内的适应度数值f,定义为其相对于“买入-持有”策略的年化超额收益试验表明,按照公式(2)~(3)计算的技术交易规则适应度数值可能为负值,因此,本文引入适应度调整值。具体而言,使用适应度函数在训练区间上评估完当代种群中每一棵树的适应度数值后,即将当代种群按照适应度数值由大至小的顺序重新排序,适应度调整值的计算方法为其中,fi是重新排序的当代种群中第i棵树的原始适应度数值,fK是重新排序的当代种群中排在最后的树的原始适应度数值,nfi是重新排序的当代种群中第i棵树的适应度调整值。遗传编程的种群进化通过复制、交叉与变异来实现。其中复制与变异规则的设计,需要体现适者生存的原则。本文的进化规则设计如下:(1)复制:将重新排序的当代种群中处于前5%,且适应度数值非负的技术交易规则直接拷贝进入下一代种群。(2)变异:产生K⋅5%棵深度不超过8层的技术交易规则随机树,送入下一代种群。(3)交叉:本文按照轮盘赌的原理确定各个树形结构参与交叉操作的概率。在重新排序的规模为K的当代种群中,第i棵树被选中进行交叉的概率为本文在选中的两个树形结构上各随机选择一个非叶子节点,并交换以之为根节点的两棵子树,新生成的树形结构则送入下一代种群。子树的交换需要确保对其父节点透明,即被交换的两棵子树的根节点函数必须具有相同的返回值类型。此外,种群在交叉时必须遵守旨在减少低效树形结构的“绑定序列数据类型”规则,即被随机选择的两个非叶子节点若返回序列数据((序列+时间)数据或序列实数),则必须对应于同一种序列数据子类型。本文的交叉操作同样控制树形结构的深度,规定仅当交叉生成的树形结构深度不超过19层时,才送入下一代种群。当种群的进化次数达到20次,或者最高适应度数值在连续10代种群中保持不变时,进化终止。此时当代种群中具有最高适应度数值的树形结构即为该基于遗传编程的技术交易系统针对给定的训练数据输出的一个最优技术交易规则。系统针对不同的训练数据(市场环境)自适应地调整输出的最优技术交易规则,这些最优技术交易规则在相应测试区间的适应度数值将被用于股票市场有效性的检验。3训练区间-测试区间组合本文使用深证100指数在2004年1月2日到2010年3月12日期间共计1503个交易日的历史数据,检验该基于遗传编程的股票指数技术交易系统的性能,以对中国股票市场的有效性做出评价。考虑到各种技术交易规则会随着市场环境的变化体现出不同的优劣势,一个技术交易规则可能仅仅在一段时间内具有战胜市场的能力,以及本文的技术交易系统具备根据训练数据特征自适应地调整最优技术交易规则的能力,我们不是将该长度为1503个交易日的数据区间简单地分成一个训练区间与一个测试区间,而是以步进值固定的移动窗的方式来设计训练区间与测试区间,从而将该长度为1503个交易日的数据区间分成多组互相交叠的训练区间-测试区间组合。首先,将步进值设定为50个交易日,训练区间与测试区间的窗长分别设定为500个交易日和400个交易日。考虑到遗传编程的基本函数模块中包括窗宽在1-150之间的序列运算函数,且序列运算函数可以在树形结构技术交易规则的各层内多次出现,规定训练区间-测试区间的组合从300-800-1200开始,从而在1503个交易日的数据区间内,产生7组训练区间-测试区间组合,最后一组为600-1100-1500。此外,为增强实证结果的可靠性,将训练区间的窗长调整为600个交易日,考虑从300-900-1300开始,到500-1100-1500为止的5组训练区间-测试区间组合。由于遗传编程是一种随机优化方法,对于同一个训练区间,多次遗传编程试验可能产生不同的优化结果,从而使系统输出的最优技术交易规则在测试区间上的年化超额收益具有一定波动,因此,需要通过多次遗传编程试验,对系统输出的最优技术交易规则的年化超额收益进行统计检验,以对系统性能进行评价。本文在每一组组合的训练区间下进行100次独立的遗传编程试验,并在相应测试区间下对系统输出的100个最优技术交易规则相对于“买入-持有”策略的年化超额收益进行统计检验。表2给出了该技术交易系统输出的深证100指数最优技术交易规则在相应测试区间的年化超额收益的统计结果。在面板A中训练区间窗长500个交易日,测试区间窗长400个交易日的700次独立遗传编程试验下,系统输出的700个最优技术交易规则有71%获得非负的年化样本外超额收益,61%获得正的年化样本外超额收益。对于其中的每一组训练区间-测试区间组合,系统输出的100个最优技术交易规则获得的年化样本外超额收益存在一定波动,具体如图3所示。但在所有训练区间-测试区间组合下,均有50%以上的最优技术交易规则获得非负的年化样本外超额收益,且在大部分组合下,有75%左右的最优技术交易规则获得非负的年化样本外超额收益。除了在训练区间-测试区间组合400-900-1300下,系统输出的最优技术交易规则仅有32%获得正的年化样本外超额收益外,在其余6组组合下,系统输出的100个最优技术交易规则均有50%以上获得正的年化样本外超额收益。本文认为,面板A中系统在900-1300的测试区间内表现出的相对较差的性能,是由于相应的训练区间400-900内的数据特征与该测试区间内的数据特征相似度较低,从而导致系统根据训练区间内的价格与成交量历史数据优化得到的相当一部分技术交易规则,在测试区间内未能战胜市场。这一观点在面板B的结果中也得到了支持。当训练区间窗长扩大为600个交易日后,系统输出的100个最优技术交易规则在900-1300的测试区间内有68%获得非负的年化样本外超额收益,63%获得正的年化样本外超额收益。面板B中的其余各项统计结果与面板A相似,系统输出的500个最优技术交易规则有73%获得非负的年化样本外超额收益,64%获得正的年化样本外超额收益。并且,对于每一个测试区间,系统输出的100个最优技术交易规则均有60%左右获得正的年化样本外超额收益。表2中还给出了每个训练区间-测试区间组合下,系统输出的100个最优技术交易规则在测试区间的年化超额收益的平均值,以及该平均值大于零的t统计量。各组合下年化超额收益的平均值存在一定波动,很大程度上是因为各组合下训练区间与测试区间数据特征的相似度并不一致。由t统计量可知,对于本文试验选择的步进值为50个交易日,且交叠覆盖了深证100指数所有历史数据的各组训练区间-测试区间组合,系统输出的100个最优技术交易规则在测试区间内年化超额收益的平均值都统计显著地大于零。这一结果表明,该技术交易系统具有战胜市场的能力,同时也表明中国股票市场尚未达到弱式有效。为了充分利用中国股票市场现阶段的低效性,本文进一步提出构建以该基于遗传编程的技术交易系统为核心模块的程序化交易系统。由于该技术交易系统采用遗传编程进行随机优化,对于同一个训练区间,系统输出的各个最优技术交易规则在测试区间的年化超额收益具有一定的波动,并可能有部分最优技术交易规则具有负的年化超额收益(如图3)。为了确保程序化交易系统能够战胜市场,其运转将基于技术交易系统输出的多个最优技术交易规则。具体如图4所示,该程序化交易系统中存在基于遗传编程的技术交易系统的N(例如,N=100)个镜像。通过参数设定模块设定好技术交易系统训练区间与测试区间的长度后,被启动的各个镜像即向前回溯指定长度的历史数据,通过遗传编程进行技术交易规则的优化。产生的N个最优技术交易规则作为程序化交易系统的输出,分别用于在后继的测试区间内指导资金被分成的N等份之一的交易决策。N个最优技术交易规则的共同运用,将确保该程序化交易系统在测试区间内获得超出“买入-持有”策略的收益,持续地战胜市场。本文还通过实证考察了在基于遗传编程的技术交易系统中引入对数变换模块的作用。我们屏蔽了对数变换模块后,重复上述12组训练区间-测试区间下的1200次独立试验,并将统计结果与表2中的结果进行比对,具体如表3所示。表3中的f1表示引入对数变换模块后系统输出的深证100指数最优技术交易规则在相应测试区间的年化超额收益,f2表示禁用对数变换模块后系统输出的深证100指数最优技术交易规则在相应测试区间的年化超额收益,比较栏中则给出了f1平均值大于f2平均值的t统计量。可以看到,在大多数训练区间-测试区间组合下,f1平均值与f2平均值并没有统计显著的差别,即对数变换模块的引入并没有对系统的性能产生显著的影响。但是,当训练区间为400

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论