为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

陈学彬制作 程序化交易初级教程C13-交易系统的测试和优化

2019-07-19 71页 ppt 1MB 24阅读

用户头像 个人认证

希望

暂无简介

举报
陈学彬制作 程序化交易初级教程C13-交易系统的测试和优化C13-交易系统的测试和优化13 交易策略系统的测试和优化一个程序化交易策略系统根据策略思想编制程序,并经过程序的调试通过后,必须对其进行历史数据的回测检验,以确定交易系统的适用性、盈利性和稳定性。在进行交易系统测试的同时,我们还有必要对交易系统的参数进行优化。因为金融市场在遵循基本的运行规律的同时,不同的市场和商品,甚至同样的市场和商品在不同的时期,具有不同的运行特点。没有适用所有市场和商品,甚至所有时期的万能的交易系统。因此,根据适用市场商品的特点建立的交易系统,必须利用历史数据进行参数的优化,以改善系统的基本特性,提高系...
陈学彬制作 程序化交易初级教程C13-交易系统的测试和优化
C13-交易系统的测试和优化13 交易策略系统的测试和优化一个程序化交易策略系统根据策略思想编制程序,并经过程序的调试通过后,必须对其进行历史数据的回测检验,以确定交易系统的适用性、盈利性和稳定性。在进行交易系统测试的同时,我们还有必要对交易系统的参数进行优化。因为金融市场在遵循基本的运行规律的同时,不同的市场和商品,甚至同样的市场和商品在不同的时期,具有不同的运行特点。没有适用所有市场和商品,甚至所有时期的万能的交易系统。因此,根据适用市场商品的特点建立的交易系统,必须利用历史数据进行参数的优化,以改善系统的基本特性,提高系统的适用性、盈利性和稳定性。13.1 交易策略系统测试过程13.1.1 模拟测试商品选择在TradeStation的工作区打开一个图形分析窗口,在主菜单选择“插入”按钮,选择“插入代码”到图形交易图表用以进行交易策略系统的历史模拟测试。如果你不知道交易资产的代码,可以在插入代码窗口选择代码搜索功能,根据其选择资产的类型选择股票、期货、期权等相应类型。如图12-1所示,要搜索沪深300股指期货的代码,我们可以选择期货类型,在描述栏输入IF关键词后搜索。系统将显示相关的品种代码。作为历史回测,我们可以选择主力合约的连续数据,即IF当月。因为期货商品的上市交易时间是有时间限制的,季月合约最长9个月,非季月合约只有2个月,其交易行情数据是不连续的。为了获取最长的连续行情数据,各交易软件通常将各主力合约连接为连续行情数据,便于客户进行较长时间的历史数据分析。模拟测试的时间越长,历史数据越多,其涵盖的市场行情的周期阶段(上升、下跌和盘整)越多,其对系统测试的稳定性效果越好。所以,进行期货商品的历史回测应该选择连续行情数据。对于交易,我们则应该选择主力合约。然后确认即加载到图形分析中。图12-1TradeStation图形分析的代码搜索和代码设置在插入代码后,我们需要对代码的参数进行设置。需要选择图形的类型、时间间隔、数据区间等。需要注意的是,由于分钟数据量较大,TS在调入历史数据时有时不会显示太长时间的分钟数据,而我们有希望有较长时间的历史数据进行回测。解决的办法就是分段下载,然后再链接使用。比如,我们需要下载2010年沪深300股指期货开始交易以来的分钟数据,我们可以分为每年1段,从1月1日开始,12月31日结束。如果系统显示“数据请求失败,此代码没有可用的数据”的错误信息,我们可以通过同时按下“Ctrl”键+R键进行强制下载。待每段数据下载完成后,再将数据区间改为2010年开始,2017年结束,就可将全部数据加载到图形分析里。。13.1.2模拟测试的K线周期选择进行历史模拟测试需要选择K线周期。TradeStation模拟图表提供日(D)、周(W)、月(M)、分钟(m)和每笔交易Tickets(T)的K线数据可供选择。每一K线提供开盘价、收盘价、最高价和最低价4个数据。K线周期越短,提供的数据越多,与实际交易时的数据差距越小。但是,K线周期越短,其波动性越强,其趋势性越差。利用技术指标分析预测行情的未来走势的预测作用越差。除非是进行高频交易,否则并不需要每一笔交易的数据。因此,一般的程序化交易使用分钟级别的K线已经足够。究竟选择多长K线周期最佳,可以通过不同的K线周期进行模拟测试比较,选择综合性能较好的周期。13.1.3模拟期间选择模拟期间的选择涉及到测试样本规模和代表性两方面的问题。测试的目的是为了指导未来的实际交易。市场的基本形态可以区分为牛市、熊市和震荡市。如果测试的样本期间太短,没有充分地包括几个典型的市场周期阶段,其样本就不具有充分的代表性。其测试的结果的稳健性就差。当市场状态发生较大变化的时候,历史测试效果很好的交易系统在现在或者未来的实际使用中效果可能很差。因此,模拟测试的样本期间不单是越长越好,更重要的是要具有充分的代表性,以尽可能多的包括不同的市场周期阶段和市场状态,从而测试我们交易系统对不同市场状态和周期阶段的适用性。13.1.4模拟策略选择通过在菜单上点击键,可以加载已经调试好的交易策略程序到该模拟图表。加载好后,系统自动进行模拟测试,并将测试的交易信号和累计盈利显示在图表上。我们可以通过点击键加载交易程序中使用的技术指标,对比分析程序发出的交易信号与技术指标的指示是否一致。如果不一致,说明程序的编写或者参数存在问题,需要重新进行调试。13.1.5模拟参数设置在模拟图表上的交易策略上单击右键,在菜单上选择策略属性设置,调出分析技术和策略设置窗口(如图3.26所示)。在此窗口,可以对程序参数和通用属性等内容进行设置。具体设置方法可以参见3.5.2节的详细介绍。13.1.6模拟结果显示在模拟图表上会自动显示模拟交易信号和累计盈利曲线。如图12-2所示,图表显示了交易商品的价格走势K线,技术指标和交易信号。交易信号包括信号名称、信号类型(用向上的红色箭头表示开多仓,向下蓝色箭头表示开空仓)、上面的数字表示持仓数量:0表示无持仓、正数表示持有多仓、负数表示持有空仓。图12-2交易策略的模拟交易信号显示13.2 交易策略系统测试性能分析在进行模拟测试后,必须对系统测试进行分析。TradeStation的测试报告可以在主菜单上点击键打开。交易策略性能报告提供能够评价交易策略成果的多方面分析方法。TradeStation的系统性能报告包括性能总结、交易分析、交易列表、周期回报、性能图、交易图和参数设置等主要内容。13.2.1性能总结分析综合分析包括27个指标,并分为做多交易、做空交易和所有交易列示其相应的指标。在此是以商品交易金额来计算的。左键点击左则指标,将会跳出该指标的含义和计算方法解释。如:净利润:净利润总额,显示指定周期内的净利润或亏损(见注释)。利润显示为黑色的正数,亏损显示为红色的负数。净利润=利润总额+亏损总额。计入佣金(如果策略指定,同时还要计入滑点)。累计盈利:毛利润,显示特定周期内所有获利交易的累计利润总额。累计亏损:总亏损,显示特定周期内所有亏损交易的累计亏损总额。盈亏比:获利系数,显示相对于亏损金额的利润金额。计算方法为,用利润总额除以毛亏损。根据定义,值大于1表示这些交易的净利润为正。其值越高越好。交易总笔数:显示指定周期内已完成交易的总笔数。报告中应有最小数量的交易总笔数(20-40),以评估业绩结果的意义。交易总笔数=获利交易笔数+亏损交易笔数。计入佣金(如果策略指定,同时还要计入滑点)。盈利百分比:又称胜率,显示指定周期内可盈利的已完成交易百分比。盈利百分比=获利交易除以交易总笔数。通常胜率高的策略更好,但趋势跟踪型策略由于在区间震荡时亏损的几率较大,因此,其总的胜率偏低,但如果其趋势跟踪效果好,则盈亏比应该较高。资金需求量:所需账户金额,此字段计算您账户中为进行策略交易必须要有的金额。计算方法:所需账户金额=最大下跌的绝对值(从交易关闭到交易关闭)。由于TS目前没有提供用户设置保证金比率的窗口,其计算的最大资金需求并不准确,仅供参考。累计佣金:总佣金,显示用户定义的所有已完成交易的总佣金。这是指定周期内经纪人收取的所有交易的佣金总额。各种策略的估计佣金由用户通过“设定策略格式”对话框中的“策略属性”对话框进行设置。对于中国股指期货和其它期货在平今仓和往日仓收取不同手续费的,以及手续费率调整的,TS没有相应的设置窗口。因此,该手续费的计算也仅供参考。初始资金回报率:初始资本回报率,显示特定周期内“净利润总额”相对于初始启动资金的回报率百分比(如果指定,则包括佣金和滑点)。初始资本回报率=净利润总额除以初始资本。初始资本由用户通过“设定策略格式”对话框中的“策略属性”对话框进行设置。“TradeStation策略业绩报告”仅显示“所有交易”的“初始资本回报率年化收益率:显示给定时间内所有交易基于初始资本的回报率,用年化百分比表示。买入并持有收益率率:显示策略整个测试周期内持有多头证券的回报率(用百分比表示),与策略回报率进行比较。仅针对“所有交易”显示。账户收益率:此字段表示您将赚得的金额数与策略交易所需的金额数的关系(将保证金和追加保证金考虑在内)。此值的计算方法为,用净利润除以所需的账户规模。稳健风险收益率:回报回调比率,此收益/风险比是夏普比率的替代比率。与夏普比率不同的是,此字段区分上行和下行回报率波动之间的区别。此比率越高,风险相关的回报率越大。RINA指数:是一个专有指数,其将选择净利润总额、市场中的时间以及下跌计算综合为单一的收益/风险比,可用于策略比较。此指数越大,策略越有效/越能规避风险。RINA指数=(选择净利润总额)/((平均下跌)x(在市场中的百分比时间))“TradeStation策略业绩报告”仅显示“所有交易”的“RINA指数”。夏普比率:每月平均回报率(%)减去无风险利率除以每月回报率的标准偏差所得的结果。这一数字越高,风险相关的回报率越大。此计算基于过去36个月的情况。您可以在针对成本调整策略时指定利率。若要将“夏普比率”用于日间图表上的某一策略,至少需要在图表中加载36个月的数据。此字段的替代字段是回报回调比率。K比率,此比率与夏普比率类似。两者的不同之处在于,此比率使用线性回归技术来测量经历时间变迁的结果的一致性。此比率越高,风险相关的回报率越大。如果是应用于日间图表的策略,将不显示此值。最大下跌占初始资本的%(波峰到波谷):显示指定周期内所有交易从先前的资金最大上涨开始所出现的最大亏损下跌占初始资本的百分比(柱状线到柱状线)(如果指定,则包括佣金和滑点)。最大下跌占初始资本的%(日间波峰到波谷)=最大下跌(日间波峰到波谷)除以初始资本净利润占下跌的百分比(从交易平仓到交易平仓):显示指定周期内所有交易“净利润”占最大亏损下跌的回报率(从先前的资金最大上涨开始)(从平仓交易到平仓交易)(见注释)。净利润占下跌的百分比(从交易平仓到交易平仓)=净利润总额除以最大下跌(从交易平仓到交易平仓)。如图12-3的交易策略,其累计盈利达到1088.8万元,但累计亏损也高达953.4万元,盈亏比仅为1.14,净利润仅135万元。虽然有盈利,但交易效率并不高。而如图12-4所示,初始资金回报率达451.27%,投资6年9个月,年化收益率达25.26%,账户收益率为573.61%,而买入并持有的收益率为-0.89%。显然该策略的收益率还是比较可观的。其稳健风险收益率为1.91,RINA指数为121.23,看似风险收益还可以。但夏普比率太低,仅0.25,表明其面临的风险还是比较高的。结合性能图可见,该策略在2014-16年期间的收益持续大幅增长,但在2010-2014年期间收益甚低,而且波动极大。这反映初该策略是一个趋势追踪策略,在趋势性行情中收益较高,而在震荡行情中收益较差。图12-3系统性能测试报告(1)图12-4系统性能测试报告(2)13.2.2交易分析和周期回报分析TradeStation模拟测试对交易行为进行了统计分析,包括交易总笔数、盈利亏损笔数、平均每笔盈利、平均交易时间、平均交易间隔时间、平均创新高时间,以及异常交易、上涨回撤和平均效率等(如图12-5所示)。这为我们从总体上分析策略的交易绩效提供了依据。我们不仅需要对策略系统的总体性能进行综合评价,更需要了解交易明细,特别是对于多策略组合,更有必要对交易明细进行分析,从而找出具体策略的优劣之处,以便修改完善。TradeStation性能报告提供了每一笔交易的明细。包括开仓和平仓类型、时间、信号名称、价格、交易数量、盈亏、累计盈亏、最大盈亏、开平仓效率和总效率等指标。在窗口菜单栏点击储存按钮,可以将分析报告按EXCEL格式存储,供调用分析。图12-5策略模拟的交易分析和周期分析报告在交易明细中,TradeStation还可以查找最大盈利交易、最大亏损交易、最大上涨交易和最大下跌交易等,便于我们对策略进行输入分析。有些交易平台,如YesTrader,还提供交易信号分类汇总。这对于测试中对于产生各种具体交易信号的交易策略进行分类评价,修改完善具有重要作用。特别是在该交易明细表中点击具体的交易信号,模拟交易图表会自动显示该交易信号的位置,以便我们察看分析。但可惜TradeStation没有此类功能。期间分析的目的在于分析比较其交易策略在不同模拟期间的表现,以分析其对不同期间的市场形态上的表现差异。周期可以按年、月、周和日度进行汇总分析。汇总分析的方法包括单位分析和循环累计分析。盈利/亏损交易分析13.2.3性能图和交易图分析图形直观明了,是重要的策略性能分析工具。TradeStation策略性能报告提供了多种分析图形。其中包括资金曲线、详细资金曲线、资金曲线区域图、新高回撤曲线、月度净利润、月度累计净利润和月平均利润等图12-6资金曲线图和详细资金曲线图资金曲线图和详细资金曲线图:它们是最直观反映策略的盈亏动态变化的图形。如图12-6所示,从中可以非常直观的看到该策略虽然在模拟期间是有大量盈利的,但是,在前2000多各交易中的盈利却很差,主要盈利是在后1000多各交易获得的。它反映了该策略在不同时期对市场的适应情况差异较大。资金曲线是按照策略交易盈亏来计算的,而详细资金曲线则是按照账户资金变动来计算的。在高频交易的情况下,二者相差不大。但在低频交易的时候,由于持仓时间比较长,资产价格波动较大,在按交易计算的资金曲线里面就不一定反映出资产市值的波动,而按资产市值计算的资金详细曲线则能够反映这种动态波动。图12-7详细资金曲线和新高回撤曲线新高回撤曲线:它按月和按周汇总反映了策略盈利回撤的幅度,即策略面临的风险水平。如图12-7左图所示,该策略在2012-2014年的盈利回撤幅度较大,最高时达35%,说明该策略的稳定性较差,风险较高。交易图分析则主要针对策略的各次交易提供效率分析、上涨、回撤分析等图表。效率性图表:显示策略的开仓效率、平仓效率和总效率,如图12-8所示。从中可见,其开仓效率分布较散乱,平均水平为50%多。平仓效率则较好,平均水平为62%,主要较多的集中于80%左右的水平,说明利用移动止损,平仓效率较高。图12-8策略效率图表交易图表中最大有利变动和最大不利变动图表反映各个交易盈利亏损的绝对额和百分比情况。最大不利变动图:此图最适合用来确定交易策略的移动止损。“最大不利变动”图以散点图的形式展示已实现盈亏与下跌的关系。绿色向上箭头代表获利交易,红色箭头代表亏损交易。最大有利偏移图:此图最适合用来确定交易策略的移动止损。“最大有利偏移”图以散点图的形式展示了已实现盈亏与上涨的关系。绿色向上箭头代表获利交易,红色箭头代表亏损交易。最大不利变动百分比图和最大有利变动百分比图,使用百分比而不是金额生成最大不利变动图和最大有利变动图。此图最适合用于长期评估。注意在某一区域设定移动止损,在限制策略遭受利润侵蚀的同时可以捕捉大多数获利交易。从图12-9所示的最大不利和有利变动百分比图可见,已实现的有利远高于已实现的亏损,移动止损策略还是执行得比较好的。图12-9交易图表中的最大有利波动和不利变动的影响图13.2.4策略设置状态在策略性能报告窗口的设置栏可以显示交易策略设置状态,如图12-10所示。从中我们可以了解该策略模拟测试的环境和参数设置状况。13.3 交易策略系统优化交易策略系统在经过历史模拟测试和性能分析后,我们可以发现其存在的许多问题。针对这些问题,我们需要对系统进行优化完善。优化完善的基本方法包括两类:策略参数优化和策略结构调整。13.3.1策略参数优化策略参数优化是交易策略系统优化的基本步骤。在模拟图表的策略程序上双击策略调出策略设置窗口。在参数窗口点击需要优化的参数MTL(如图12-11左图),显示参数值优化设置窗口。选择模拟优化的最小值、最大值和增加单位。在把所有需要优化的参数设置好后选择“确认”返回策略设置窗口(如图12-11右图)。该窗口提供优化的类型和方法选择。图12-11参数优化方法的选择和设置(1)参数优化方法选择TS的参数优化方法有两种:穷举和遗传。穷举:的方法即对每一个参数进行模拟计算。选择“穷举”将使用全面方法计算指定范围内全部策略输入参数所有可能的组合。由于计算了所有参数组合,因此,穷举方法保证算法会找到比较参数中一组最佳策略参数。当有多个参数需要优化时,其计算的总次数为每个参数计算次数的乘积。当参数太多时,其计算的总次数太大,需要耗费大量的时间。遗传:选择“遗传”将采用基于演变算法的优化方法。在穷举方法太费时或处理太密集的情况下,遗传优化更可取。在更短的时间内运行优化,也可以让您在策略优化中选择更广的参数范围。遗传优化不计算所有可能的策略参数组合,但会使用基于自然选择的算法,从而得出一个在统计上有意义的答案。在计算总次数较少时,系统将自动选择穷举算法。(2)优化类型选择优化类型包括“标准”和“步进”两种选择。标准:是指回测优化时,将所有样本区作为一个整体而非分段进行优化。其优化结果为将这些参数再待会样本计算的结果。步进:则是将全部样本区分为样本内和样本外多个小的样本区,参数优化仅根据样本区内的数据进行,优化结束在用样本外数据模拟测试这些优化参数的运行结果。我们知道,交易策略的优化是建立在“历史会重演”的假设之上的。因此,我们可以利用历史数据优化的参数来指导未来的交易。但是,历史虽然会重演,但不会简单的重演。历史只会相似而不会相等。因此,我们完全利用历史数据优化参数的策略并不一定适应未来的市场环境。究竟策略的适应性怎样?我们只能通过时候的检验来判断。因此,我们将样本划分为两部分,一部分作为参数优化的样本(参数优化的样本内),一部分作为参数检验的样本(参数优化的样本外)。如果该策略在样本内外均能够获得好的表现,则该策略就是一个比较好的策略。如图12-12所示,利用移动均线发散追踪策略在沪深300股指期货5分钟K线进行步进优化的结果。总样本最后的30%作为样本外检验。我们看到该策略在内样本外都获得了较好的收益。将其与标准优化的图12-6的结果比较可见,同样的策略,在图12-6里的标准优化里总盈利为135万元,且在2014年前基本没有多少收益;而在图12-12所示的步进优化里,总盈利达到235万元,而且盈利更加平稳增长,在2014年前盈利虽然较低,但比图12-6有了很大的改进。更重要的是在样本外的预测中,仍然能够较好的盈利。其稳健性指标有以来的稳健风险收益率1.91,RINA指数121.23,夏普比率0.25,提高为稳健风险收益率7.51,RINA指数320.36,夏普比率0.38。稳健性大幅提高。图12-12移动均线发散趋势追踪策略步进优化的结果13.3.2TradeStation步进优化器(1)关于TradeStation的步进优化器TradeStation步进优化(WFO)是一个高级策略优化工具,它能自动化执行对交易策略优化输入进行步进统计测试的复杂、多步骤任务。TradeStation步进优化开始于其他优化方法通常结束的地方,利用优化(样本内)业绩数据对未优化(样本外)数据部分执行一组“步进”业绩测试,以模拟真实市场条件下交易策略的不可预测性。TradeStation步进优化器是一个终极策略交易压力测试工具,结合了TradeStation策略回测引擎、EasyLanguage和高级回测业绩报告的强大功能。点击TradeStation平台快捷工具栏中的步进优化器图标启动WFO。(2)步进分析选项卡聚类分析:显示代表选定显示类别和WFA类型的“样本外%”(OSS%)和步进运行的每个增量测试结果的聚类矩阵。优化摘要(样本内):显示一组步进运行样本内结果的摘要。对于聚类分析结果,运行数量与所选单元格聚类分析矩阵中的“运行”列相关联,而输入反映的是给定“运行”测试的特定输入组合。步进摘要(样本外):显示一组步进运行样本外结果的摘要。对于聚类分析结果,运行数量与所选单元格聚类分析矩阵中的“运行”列相关联,而输入反映的是给定“运行”测试的特定输入组合。测试结果:显示步进运行的测试标准结果分数和注释。对于聚类分析结果,选项卡上部的OOS%和WFRuns值代表聚类分析矩阵中选定的单元格。图形:根据特定权益系数绘制一组步进运行结果的图形。盈亏历史:显示作为一组步进运行的一部分的所有交易的盈亏。对于聚类分析,选项卡上部的OOS%和WFRuns值代表聚类分析矩阵中选定的单元格。业绩摘要:显示一组步进运行的业绩摘要。对于聚类分析,选项卡上部的OOS%和WFRuns值代表聚类分析矩阵中选定的单元格。敏感性分析:对于单次步进分析,允许用户研究各个优化参数如何影响策略业绩。分布分析:针对所选市场标准,通过用图形显示各种业绩标准,允许用户评估组成策略的交易。(3)步进优化步骤WFO可以将步进分析这样的复杂任务变得生动有趣。为正确执行步进分析,用户只需执行下列步骤:A.在TradeStation平台中①为应用于TradeStatio图形的每个所需的策略设置输入优化值。②选择步进作为优化类型并设置步进测试名称以将所有必要信息保存至WFO交易历史文件以在TradeStation优化过程完成后执行步进分析。③选择穷举或遗传作为优化方法并单击“优化”以运行TradeStation优化。④启动TradeStation步进优化。B.在TradeStation步进优化器中①打开包含从TradeStation穷举/遗传优化导出数据的交易历史文件的步进测试名称。②对导出数据执行步进分析(单项或聚类)。用户只需指定两个输入:步进运行的所需数量和样本外窗口的大小。用户还可以选择滚动步进或锚定步进优化。由于计算密集型步进分析通过集成TradeStationWFO执行,比在EasyLanguage或外部电子中执行更加快速。(4)步进优化方法①滚动步进优化利用滚动步进优化,前移样本内窗口(比如两年)以压缩最新的样本外周期(比如六个月)。然后对新的移动后的两年窗口再优化。为该窗口找到顶层模型后,对下一个六个月测试窗口再次进行测试。重复这一过程直至完成所有步进测试。②锚定步进优化使用锚定步进优化时,样本内窗口的开始固定于初始/原始起始点。(5)测试结果通过使用默认设置,交易策略通过步进分析的前提是:•跨多个步进运行整体获利,且•显示出50%或更高的步进效率,且•显示利润一致性,且•显示利润均匀分布,且•最大跌幅小于40%。注意:如果策略没有通过全部独立业绩标准测试,那么策略整体失败,可能不适用于实时执行和交易。为适应业绩评估中的各个默认选项,WFO允许用户自行设置通过/失败百分比(使用设置>测试标准设置)。(6)步进分析步进分析(WFA)是对实时交易策略使用方法最真实的模拟。它还有助于回答下列重要问题:①优化后的交易策略将继续盈利吗?②我可以期望策略以何种速度在隐藏数据上盈利呢?③趋势、波动率和流动性的变化对未来业绩有什么影响?④交易策略应多久再优化一次?回答上述问题有以下好处:①帮助验证策略的远期交易能力(即策略在优化后是否还有生命,以及是否具有实时创造利润的潜力?)可检测策略是否过度拟合(曲线拟合)或优化不当。例如:研究表明,随机选择、不充分或过度拟合的策略能够在一项或两项步进测试中获利,但是在大量步进测试中不能获利。能够在大量步进测试中获得利润的策略更有可能在将来取得成功。②该方法可靠地衡量优化后的利润和风险率。WFA生成一个多样本内优化和样本外交易周期的统计概况。因为它基于的样本数量比测试单个隐藏数据期间要多很多,因此具有更高的统计有效性。且使得样本外与样本内交易利润比率的准确比较和测量成为可能。(稳健策略的未来业绩应与优化期间取得的水平相似)③WFA还有助于了解趋势、波动率和流动性变化对策略业绩的影响。虽然这些变化可能对交易业绩有极为不利的影响,但是稳健策略将能够以可盈利的方式应对这种变化。④为获得最佳业绩,WFA根据经验决定应再次优化策略的频率。WFA期间,DetailAnalysis网格会收集每个已执行运行的结果。这一详细信息可以用于检查步进过程,或观察在某一周期内的策略行为。可以对步进详细信息进行强制过滤,例如:用户可以选择只显示可盈利百分比>=40且利润系数>=1.5的样本内/外详细信息。对于样本内数据和样本外数据,详细信息报告包含TradeStation策略优化报告中的所有统计数据。虽然单一WFA可以提供一个策略是否稳健的初步指示,但是对于证明或反证交易策略和优化的有效性,多步进分析的聚类分析往往是一个更好的方法。每个使用TradeStation“步进优化系统”(WFO),用步进分析(WFA)优化策略。在步进分析期间,系统会执行多次步进运行,将样本外(不可见)数据的表现情况与样本内(可见)数据的表现情况进行比较。策略步进优化将使用不同的标准来评估步进优化的一致性,并且依据这一分析对系统的稳健性作出整体评级。详细使用指南请参考TradeStation关于步进优化的帮助文档。13.3.3策略思想调整(1)完善系统功能参数优化虽然可以提高交易策略系统性能,但其提高的程度是有限的。对于交易策略思想上的缺陷则需要策略思想的调整完善。如如图12-13所示布林突破回撤交易策略,它没有有专门的止损策略止盈策略,因此,导致了图12-15左边两图显示损失和盈利的波动巨大。因此,我们首先要做的,就是可以增加一个专门的止损和止盈策略。如图12-14的回撤止盈和止损策略。然后,我们在对参数进行模拟优化。图12-15的子图分别显示了调整策略后优化的累计盈利变动情况。比较可见,在增加止损止盈策略以后,其累计盈利不仅有所增加,更重要的是累计盈利波动幅度减小,策略系统的稳定性有较大提高,潜在风险相应下降。这说明作为一个完整的交易策略,不仅需要正常的开仓、平仓功能,还应该具备止损、止盈功能。基本功能模块的完善,对于提高交易策略性能具有重要意义。图12-13未加止盈止损的布林线突破回撤交易策略//布林线突破回撤交易策略inputs:BollLength(26),NumDevsDn(2),Losspercent(2), //定义布林线区间长度和标准差倍数variables:UpperBand(0),LowerBand(0), //定义布林线上下轨变量UpperBand=BollingerBand(c,BollLength,NumDevsDn); //计算布林线上轨LowerBand=BollingerBand(c,BollLength,-NumDevsDn); //计算布林线下轨ifccrossesoverLowerBandthen //突破下轨反弹开多 Buy(!("上穿下轨开多"))nextbaratLowerBandstop;ifccrossesunderUpperBandthen //突破上轨回落开空 Sellshort(!("下穿上轨开空"))nextbaratUPPerBandstop;图12-15增加止损止盈命令的布林线突破回撤交易策略程序//布林线突破回撤交易策略inputs:BollLength(26),NumDevsDn(2),Losspercent(2), //定义布林线区间长度和标准差倍数FloorPercent(2),TrailingPct(20),UnitValue(300); //定义最低止盈目标,盈利回落和标的单位价值variables:UpperBand(0),LowerBand(0), //定义布林线上下轨变量FloorProfit(0),Stoploss(0); //定义止盈和止损变量UpperBand=BollingerBand(c,BollLength,NumDevsDn); //计算布林线上轨LowerBand=BollingerBand(c,BollLength,-NumDevsDn); //计算布林线下轨ifccrossesoverLowerBandthen //突破下轨反弹开多 Buy(!("上穿下轨开多"))nextbaratLowerBandstop;ifccrossesunderUpperBandthen //突破上轨回落开空 Sellshort(!("下穿上轨开空"))nextbaratUPPerBandstop;//风险控制模块SetStopShare; //以每股计算盈利FloorProfit=c*FloorPercent/100*UnitValue; //计算按百分比计算的最低盈利额Stoploss=c*LossPercent/100*UnitValue; //计算按百分比计算的最低盈利额SetPercentTrailing(FloorProfit,TrailingPct); //设置达到最低盈利后回落止盈setstoploss(Stoploss);//设置达到最大亏损后止损图12-16有无止损止盈命令的布林线突破回撤交易策略的优化模拟结果(2)调整策略思想由于布林线突破回撤交易策略是一种区间震荡策略,区间震荡时期交易效果较好,而对趋势的跟踪效果就甚差。由于市场既有震荡又有趋势,因此,要提高策略绩效,就需要调整策略思想,使之更加适应市场。在此,我们将布林线突破回撤逆趋势策略与阻力支撑趋势跟踪策略组合,以弥补单一策略难以适应复杂市场的缺陷。策略程序如图7-15所示,其参数优化后的模拟运行效果如图12-17所示。将该图两个子图比较可见,组合策略比单一策略在适应市场形态方面的能力有了大幅提高。后者的盈利能力和稳定性也有较大程度的提高。这说明,策略的优化不仅是参数的优化,更重要的是策略思想的优化,策略功能的完善。图12-18布林线突破回撤与+阻力支撑趋势跟踪策略的模拟结果比较13.4.1历史测试与现实交易的差异对交易系统的历史测试和优化是以历史数据为依据进行的,其隐含的假设前提是,历史是会重演的。因此,交易系统对历史数据的模拟和优化是可以用于指导未来交易的。但是,虽然历史是会重演的,但历史绝不会简单地重演。因此,我们利用历史数据模拟优化的具有很好绩效的交易系统在实际交易中往往并不能够获得模拟测试的效果。我们必须对此有充分的认识。造成模拟与现实差异的原因是多方面的,许多程序化交易的先驱们为了缩小这种差距进行了无数的探索。作为最成功的海龟交易者之一的柯蒂斯.费思在著名的《海龟交易法则》一书中认为,历史测试结果和实际交易结果的差异主要是由四大因素造成的:(1)交易者效应如果一种方法在近期赚了很多钱,那么其他交易者很可能注意到它,可是用类似的方法模仿它,这很容易导致这种方法的效果不再像一开始那样好。(2)随机效应(Randomeffect)历史测试的结果夸大了系统的内在优势也可能是纯随机性的现象。现实世界存在许多不确定性因素,它们的发生既有特定的规律,也有许多随机因素的影响。因此,这些随机性因素必然会对交易系统在不同时间的表现产生重要的影响。(3)最优化矛盾(optimizationparadox)选择特定参数的过程(比如选择25日移动均线而不是30日移动均线)可能降低事后测试的预测价值。最优化过程一方面可以提高系统在未来表现良好的概率,另一方面却会降低系统未来表现符合模拟测试结果的概率。我们必须对此有一清醒的认识。有些人对最优化的过度信任甚至依赖是错误的,而另外一些人对优化的恐惧而避之不及也是错误的。没有优化过程,我们主观地确定各种参数,其结果一定更加糟糕。适度的最优化过程是建立有效的交易系统必不可少的重要环节。(4)过度拟合(overfitting)或曲线拟合系统可能太过复杂,以至于失去了预测价值。由于它与历史数据的吻合度太高,市场行为的权威变化就会造成效果的明显恶化。过度拟和通常发生在系统变得过于复杂的时候。有时候,你可以通过添加过滤规则来提高系统的历史表现,提高系统对历史曲线的拟合程度。但是,如果添加的规则对其他的情况没有充分的适用性,而在系统里仅有几次适用的交易出现,这就是过度拟合。怎样判断是否过度拟合13.4.2改进的方法海龟法则还提出了一些改进系统测试方法,增强系统稳健性的方法。(1)参数调整检验在优化后的系统参数里,挑选几个参数,大幅调整参数值,看看其对系统稳健性的影响。如果参数的微小变化就会导致模拟结果的剧烈变化,出现所谓的峭壁(cliff),则说明系统可能有过度拟合的问题。(2)增加策略适用频率如果一种策略仅在模拟期间发生几次的交易信号,这说明其具有过度拟合的问题。具体检验的方法,就是在交易明细分类里,查看每一种交易信号发生的频率,如果该信号发生频率太低,仅有十几次甚至几次,在模拟期间所有上千次的交易信号里所占比重微乎其微,这种交易策略不具有普遍适用性,它只能改善历史模拟的性能而不会改善实际交易的性能。因此,这种过度拟合的策略应该加以修正,将适用频率过低的交易策略限制条件放宽,提高其发挥作用的频率,也就提高了策略的适用性。(3)滚动窗口优化为了避免在测试期过度拟合的问题,我们可以将历史数据期间分为几个时期,采用滚动窗口的办法进行优化和测试,比较其结果。具体做法是,首先随机选择一个历史时间,以该时间前的所有历史数据进行测试和优化。然后利用其获得的最优化参数对其后一段时间的历史数据进行模拟检验,测试其系统性能,并在扩展的数据上进行参数优化,然后再向后顺延一段时间进行测试,直到最新的数据为止。最后,比较分期滚动最优化窗口测试的结果和参数优化结果有何变化。变化越小,说明系统的稳健性越高。TradeStation的步进优化分析就是在此基础上的拓展。(4)蒙特卡罗模拟滚动窗口仍然是使用的历史数据,由于历史不会简单重复,因此,怎样判断系统对变化了的数据有何反映?一种方法就是蒙特卡罗模拟,通过随机产生的一些变化来测试系统的普遍适用性。但是,随机模拟虽然可以产生许多不同的市场前景,但是,它很难产生连续暴涨暴跌的情景。而这种序列相关性通常是由于一些特定事件引发的一个持续较长时间的变动。因此,有些模拟软件即可随机产生短期波动,也可随机产生一段较长期的波动,以提高模拟结果的现实性。TradeStation的步进优化分析里面也可进行蒙特卡罗模拟分析(5)仿真交易测试由于历史回测使用的数据是以K线为单位的开盘价、收盘价、最高价和最低价,而进行实际交易时,是以每一笔交易或下单数据为依据,这也会使一些策略的历史测试与实际交易发生较大偏差。另外,在历史测试的时候,许多软件都假设信号发出后即能成功地以指定价格成交。但实际交易中有时并非如此,特别是在价格剧烈波动的时候。以实时数据进行仿真交易测试,可以发现交易系统的历史测试中未能发现的许多问题。现在许多交易平台都提供了仿真交易功能。因此,所有交易系统在经过历史测试后,必须经过一段时间的仿真交易测试,调整完善后,才能真正地用于实际交易。(6)分散化和简化根据海龟们的经验,任何稳健的系统都具备两大基本特征:分散化和简化。越复杂的系统之所以复杂,就是人们总是不断地增加限制条件以适应各种特殊情况。而根据这种特殊情况“量身定做”的特殊法则,其对特定市场状态的依赖性约稿,其普遍适用性越差。而简单法则正是因为其适应各种不同的市场状况而更加稳健。分散化投资可以分散风险,这是金融投资风险管理的基本策略。在程序化交易里也同样重要。分散化不仅包括投资的商品、市场,而且还包括交易策略系统。不同的市场、不同的商品在同一时间可能有不同的表现,分散化投资可以降低其面临的总体风险。不同的交易策略系统具有不同的特点,因而适应不同的市场形态。因此,多种交易策略的组合将提高交易系统的整体适应能力,从而提高其整体业绩。13.5 练习与思考(1)怎样正确地进行交易策略的测试和分析?(2)怎样之前地进行交易策略的优化?(3)步进优化有什么优点?它能有效提高策略未来收益的稳定性吗?(4)交易策略的优化和测试中可能遇到哪些问题?怎样解决?谢谢大家
/
本文档为【陈学彬制作 程序化交易初级教程C13-交易系统的测试和优化】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索