技术分析和基因算法相结合构建商品交易策略(1)

    尽管从统计和数学的研究结果看,技术分析在商品期货交易方面并没有理论支持,但技术分析仍然在商品期货交易中被广泛地使用。技术分析研究都面临数据迁就偏差(Data-snooping biases)的问题。使用基因算法编程,提前判别可选择使用的技术交易策略;通过简单的算法运算机械地选择技术交易策略,就避免了因为数据迁就偏差所带来的问题。本文的交易规则生成选用了24种期货行情。从统计结果看,只有两个行情有显著的获利能力,这为基于技术分析的交易系统提供了某种支持。

    技术分析是基于行情历史数据或其他可观察到的统计数据,对期货的未来价格做出预测的策略和方法。从其定义看,技术分析与弱式行情有效理论是相冲突的。从金融学术的研究结果看,对技术分析基本都是持否定的观点。但技术分析在证券交易一直以来被广泛的使用,这一点却是不争的事实。

       本文所阐述的内容是基于技术分析在商品市场的研究结果,并且获得了盈利;这项研究是由Lukac、Brorsen和Irwin共同完成的。他们发现,十二个交易系统中有七个获得了毛利润;有四个策略应用于商品组合,并实现了较大的净利润。与之相似的是,Lukac和Brorsen发现,其中的几个交易系统确实获得了远大于交易成本的盈利。这两份研究都采用多个交易系统,这些系统在实际应用中都已有事实表明是盈利的。

    此前,一般研究技术分析的回报或资产价格预测能力的模型研究方法,要先指定一个或一个以上的交易规则(这类交易规则一般都使用了相当长的时间),根据历史数据拟合模型的参数;使用样本外(out of sample)数据测试规则的可能性或概率,即在参数化过程中不使用数据。但是,使用那些应用的或应用过的策略做研究,就有数据迁就偏差的问题(data-snooping bias),只是使用历史数据对以前成功的交易规则做历史评价。

    使用基因算法编程可以通过简单的算术运算符找到可选用的、预先确定的交易规则,从而避免由于使用已知的成功的交易策略引发的偏差。本文中使用基因算法编程来确定三个可以选用的、预先确定的交易规则,交易三个农产品期货。生成的每个交易规则都使用四年的日收盘价,并使用下一年的价格作为样本外数据进行测试。这些测试表明,这些交易规则能很好地预测高低点的返回期限。这些交易策略有盈利能力,但是如果把交易成本计算在内,其盈利能力基本就丧失了。

    本文包括四部分。第一部分说明基因编程在构建和优化技术交易策略方面的应用。第二部分对所使用的期货交易策略和数据做出评价。第三部分给出这些交易规则的结果。第四部分是总述和结论。

基因算法编程、数据迁就和技术分析

    基因算法编程是进化算法的分支,进化算法是复杂的程序,其通过简单运算符的层次化而构建的。这类算法有最初生成的一组随机规则,经过进化过程演变而来,根据一些拟合函数对其进行评估,然后通过随机组合完成进化,生成新的一组规则。

    使用基因算法编程作为技术交易策略最初是由NeelyWellerDittmarrNWD)以及AllenKarjalainesAK)提出的。他们认识到基因算法编程避免了在早期技术分析研究中内在的数据迁就偏差。此前的绝大多数技术分析研究,都使用历史数据评价常用交易规则的绩效。然而,事实上这些规则在实际使用中都比较常用,且能够获利。使用历史数据评价这些交易规则,而不是对其进行模型拟合后的评估。

    因为构建的交易规则是由简单的算术运算符和逻辑运算符相结合而聚合而成的,所以基因算法编程避免了数据迁就的问题。使用历史数据对这些规则进行机械地优化,然后使用一组不同的历史数据进行测试。因此,尽管这些规则的具体规定取决于与其对应的历史绩效,但在构建过程中使用无效数据判断其优点。

    在NWDAK的研究中使用的交易规则都只有两种状态,即这些交易规则只向交易者表述两种状态。这些状态就是交易头寸的状态:可做多/可做空、可做多/中性、或者中性/可做空。本文中,使用的交易规则都有三种状态,表明可做多、可做空或中性的行情状态。

技术分析和基因算法相结合构建商品交易策略(1) - caspar - 青山
 

 图1 简单均线交易规则

     1是表示基因算法编程的一个简单均线交易规则的例子。XR是根节点,要求有两个子节点;对这一规则而言,两个子节点是不等号<和>。实际数值是1.02,0.98和10;数据CPR(收盘价)是终端节点,其再没有子节点。节点<,>和***(相乘)和AVG(移动均值)都是运算符,是具有函数功能的节点,要有一个或多个节点作为输入。运算符节点可以是实际数值,如***和AVG,或者是逻辑值,如<和>。XR是三态运算符,其状态是其子节点状态的函数(本例中,子节点为>和<),如表1所示,该表中分别用1,0和-1表示多、空和中性。规则1是简单移动均线规则,若收盘价高于10日收盘价的移动均线,则做多;若收盘价低于10日收盘价的移动均线,则做空;其他情况为中性状态。

技术分析和基因算法相结合构建商品交易策略(1) - caspar - 青山

1 给定子节点状态的XR的状态

 

创建基因算法程序时选择节点与NWDAK的研究中所使用的方法相似。终端节点(即那些不再有子节点或无元的节点)可以是[-10,10]中的数值、布尔值(真、假)或者是返回的价格数据:OPR(开盘价)、HPR(最高价)、LPR(最低价)、CPR(收盘价)、VOL(成交量)和OI(持仓量)。函数节点可以是算术运算(加、减、乘、除)、逻辑运算符(IF-Then-ElseAndOrNot)、不等号(<, >)和1-norm(绝对差)。另外,四个函数包括对滞后数据的运算(每个函数都需要两个元)、对数据序列和实际数值K的运算(K表示运算要采用的观察期的数值)。LAG返回K日滞后值,AVG返回K日平均值。MNDMXD除返回最近k日内的最低或最高值以来的天数外,其含义与MINMAX相似。表2列出了18个技术交易指标。本文中使用的一组运算符能构建一组交易规则,这样的一组交易规则包括最常用的技术规则。

技术分析和基因算法相结合构建商品交易策略(1) - caspar - 青山

用来生成可选用交易规则的进化过程是基因算法编程定义所具有的特点。要启动这一过程,先随机地聚合一组规则;对其中的每一个规则做拟合评估,如高胜算或低风险。根据每个规则的拟合结果进行概率高低排名,选择规则参与基因进化运算,如再组合,运算结果获得的规则组成下一代规则。

重复这个三步过程(评价、选择、运算),直至汇聚或达到迭代的最大数值。本文中,只使用两个基因运算符来生成规则。在再生成的过程中,把从父代规则筛选出来的规则插入到未修改的子代中。在再结合的过程中,选择两个父代规则,从每个父代规则中随机选择子树,并进行交换。图2表明两个父代规则再次与两个子代规则结合。提出许多其他的基因运算的同时,再生成和再组合都是最常用的两个运算,除此之外的规则一般不会带来多大的益处。


技术分析和基因算法相结合构建商品交易策略(1) - caspar - 青山
 
 

因为选择规则是为了进行基于规则的拟合运算,所以拟合度量是基因算法编程的关键。一般使用两种拟合度量来生成本文中的规则,毛盈利能力(Gross profitability)和盈利能力与最大中间损失的比率。在下一部分中解释这两个标准条件。为防止过度拟合,使用两组期货价格数据生成规则,这与AK研究中的方法一样。根据规则在“训练”数据中的拟合来评价规则选择与运算,两组数据都是指定商品两年的价格。使用训练数据对每一代规则进行评估之后,把最佳拟合规则应用到“选择”(selection)数据,所使用的数据也是两年的价格数据。若使用选择数据评估得知,当前规则比前一个规则拟合地更好,那么就保留当前规则。

创建初始一代有20000个随机规则。每个后续代都由前一代中的最佳拟合规则组成,插入1999个随机选择的规则,插入的规则是不可替换的(再生成),余下的18000个规则是随机配对重新组合的产物。与进化过程类似,选择规则并不是真正随机的;实际上,为了插入或重新组合而选择规则的概率是该规则拟合度的函数。具体来说,概率是规则在聚合中排名先后的函数,公式如下:

技术分析和基因算法相结合构建商品交易策略(1) - caspar - 青山
 

其中,Pi是第i个规则i th被选择的概率;i是该规则的排序值,且i=N时拟合最好,i=1时拟合最差。最佳规则(应用于选择数据)5代不改变,则创建后继代,最多200代。

因为无论是从局部还是全局来看,基因算法编程并不保证能汇集,所以解决方法的质量是计算成本的单调函数;更多的规则聚合更大时,运行进化的时间更长,那么汇集的概率就增大。平衡这一要求时估算所需要的时间。聚合大小达到2000个规则,每个规则的节点限制在50以内。在初始规则一代中,规则都被限制深度不超过10级;但在重新组合中,规则都可以增加到16级的深度。为了进一步改进结果,针对每组训练/选择数据可执行20次优化,只是在种子值和随机数生成器有差别,样本外数据测试中使用20次优化后的最佳规则。样本外数据评估使用同一成熟月份一年的价格数据作为测试和选择数据,只是下一个合约年份的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值