量化交易策略开发步骤
开发交易策略的步骤一般分为收集信息阶段、制订交易策略阶段、测试及评价交易策略阶段、完善交易策略阶段等。只有在开发交易策略的过程中落实每个阶段的工作,才能开发出最佳的交易策略。
1. 信息收集阶段
开发交易策略的第一步是选择买卖标的市场和产品,即找出适合做程序化交易的产品为开发程序化交易策略的第一个步骤。选择投资对象的原则是:(1)选择流动性较好的商品。一般来说,个人为了财产增值而选择投资对象时,会考虑能否在自己需要的时点上变现。而这样的可变现能力就是“流动性”。一般市场参与者多、交易活跃的商品,开仓和平仓可以顺利进行,并且所需的数量可以以自己可预期的价格买卖。但是交易平淡的商品,由于报价差比较大,因此以市价下单时,往往会以上限价成交。相反,平仓时也有可能发生需要以比预期更低的价格下单的情况,因此发生的交易费用会更高。(2)波动性大的产品。波动性(volatility)有很多种定义,一言以蔽之,就是“市场波动的幅度”。无论是在流动性充裕,还是在长期横盘整理的平淡的市场下,哪怕开仓和平仓及时,如果没有一定的波动性,就很难创出收益。市场要有一定程度的波动才会有交易机会,而抓到这样的机会才能创出收益,所以要选取具有足够波动性的市场和商品。判断波动性的方法有单纯测量一定时间段内最高价和最低价幅度的方法、平均最高价和最低价幅度的方法、利用历史波动性的方法等多种方法。(3)交易费用低的产品。选择产品时,交易费用是不可忽略的因素。当交易较少时,交易费用的负担相对比较低。但是当交易次数达到一定程度以上时,在全部盈亏里交易费用所占的比重和负担就会增加。因此交易次数越多,选择交易费用较低的市场和产品就会越有利。交易费用不仅包含手续费、税款等明确化的费用,还包含很多隐性费用。大部分交易者只对肉眼能看到的费用反应敏感,对于隐性的看不到的费用却认识不到其重要性。实际上在交易费用里这种隐性费用更为重要。程序化交易里的隐性费用(滑价)是指在买卖信号中发生的价格和实际成交价格之间的差价。如上述,越是流动性不大或频繁快速涨跌的产品,其滑价也越大。滑价越大,实际获得的收益会比系统报告上的收益越小,而亏损也会越大。因此报价差比较大的产品不适合做程序化交易。除了流动性,报价单位的大小也会影响滑价。波动性相同的两个商品中,一个产品的报价单位比较小,另外一个产品的报价单位比较大,这时前者滑价会比较小。
2. 交易策略制订阶段
如果买卖标的商品已选好,下一个就是交易策略制订阶段。要先决定对哪种趋势的市场建立适合的交易策略,然后再制订如何进入市场、如何撤出市场的具体交易策略。市场基本上可分为趋势市场、非趋势市场、波动性市场。但是无论是哪种商品,都不会只显示一个市场特性。强势市场随着逐步回归理性,会转为非趋势市场,而走势平淡的价格也会有急涨或急跌的时候。因此每类商品都会不可避免地走出多种形态的市场。实际上,想作出在所有市场上都能获利的单个交易策略是很困难的。因此,要以选出最有可能盈利的市场走势为目标,并开发符合该市场走势的交易策略。如果选择了趋势市场,就要开发出顺应趋势能获利的交易策略;如果选择的是波动市场,则要开发出通过捕捉波动较小的市场上发生巨大行情变化的时点来获利的交易策略。
对于可以做两个方向交易的市场,无论是买还是卖,凡是新建头寸都叫“开仓”。而了结持有头寸的交易行为叫平仓。程序化交易策略大多分为开仓和平仓,而这两者具体为(1)开仓规则。开仓是指在市场上新建的头寸。在程序化交易里按照一定的条件决定新买入或新卖出的时点和方法,称为开仓规则。(2)平仓规则。平仓规则与开仓规则相反,是指通过把持有的多头头寸或空头头寸平仓,从而从市场上退出的交易行为。而把这种平仓方法在系统里以规则指定的就叫平仓规则。(3)过滤法。通过给交易策略的主要开仓规则或平仓规则添加指针或市场价格等特定条件,使其对根据基本开仓规则和平仓规则产生的开仓和平仓信号再作一次考虑,以此减少频繁的交易及提高信号准确度的方法。(4)再平仓。开仓后,在盈利的情况下根据遇到的调整时机而编辑的平仓条件,当然,也可能发生从市场退出的情况。还有可能在开仓后不久,因价格的反方向移动,导致止损平仓从市场退出的情况。此后,如果市场回归原来的方向并持续该趋势,就算不能满足最初的开仓条件,也会产生以该方向再次开仓的需要。这时的开仓就称再开仓。(5)反向交易。可做两个方向的交易里可应用的反向交易是只能在持仓的状态下发生,并把平仓和开仓结合的交易。把当前持有的头寸平仓,然后再按反方向开仓新建头寸,就叫作反向交易。反向交易通常用于趋势追踪型交易策略,这主要是因为通过反向交易可一直进入市场,紧紧地跟随不知何时将会发生的大行情。
3. 交易策略验证阶段
交易策略验证阶段是确认开发者编辑的交易策略是否按照开发者的意图被正确编辑的过程。首先通过验证功能和信息提示,确认用计算机语言编辑的交易策略是否有语法或逻辑上的错误,然后再应用编辑的交易策略,确认在其所预计的地方是否正确产生信号。把编辑的交易策略应用到系统里验证的行为就叫系统测试,这时要着重进行与实际买卖相似的测试。只有这样,测试结果才会有可信度,并且才能以此来进行实际买卖。进行系统测试时,虽然没有与实际买卖完全一致的方法,但是通过把实际买卖里发生的现实内容反映到测试过程中,可以得到类似的结果值。进行与实际买卖相似的测试时,要注意以下事项:
(1)交易费用
进行系统测试时,如果不输入手续费、税金、滑价等交易费用或是输入完全不一样的其他值,其模拟结果将会与实际交易结果有很大的出入。对于交易次数频繁的系统来说,在不包含交易费用的情况下其可能显示盈利状况很好,但是一旦适用合理的交易费用,就可能会发生逆转为亏损的情况。因此在系统测试过程中,一定要适用与相关商品符合的交易费用来进行测试。
(2)追踪止损
作为程序化交易设置窗内的强制平仓项中的一项,“追踪止损”根据设定值进行模拟交易与实际交易之间会产生巨大的差距。因为模拟交易里使用的历史数据不保存已成交的所有逐笔数据,而只保存基本的开盘价、最高价、最低价、收盘价等数据,并只利用这些数据来发出买卖信号。反之,实际交易是通过反映交易中间发生的所有逐笔数据来发出买卖信号,因此模拟交易和实际交易之间会产生差距,尤其是输入非常小的值时差距会经常产生,所以要明确认识及使用模拟交易和实际交易之间的差距。
4. 交易策略评估阶段
交易策略开发者通过交易策略测试报告,来评估所开发的交易策略是否会产生盈利。如果会产生盈利,就过渡到下一个过程;否则,就重新回到收取意见的过程中去,然后重新制订交易战略。由此,通过交易策略报告,可以判断是否产生盈利、可否信赖、交易策略是否有效等。交易策略评估包括最佳的过程和可行性分析过程,并且在实际交易中会反复进行。
(1)对盈利最大化的评估
盈利最大化评估是通过使用所开发的交易策略,来评估能够创造出多少盈利。由此,产生总盈亏、年均盈亏、平均盈亏、最大盈利等类目。① 总盈亏。总盈亏是指测试阶段总的盈利,是当前市值减去买入时的成本。如果总盈亏为负数,就应该及时判断交易策略的有效性。但是,即使实时总盈亏为正数,也不能就据此判断交易策略是否有效。是否是在特定交易中产生的高收益,或者是否是在恶劣条件下产生的结果等,必须与其他项目作综合性比较后再判断。② 年平均盈亏。年平均盈亏是指将虚拟阶段所产生的总盈利分成不同时期,再换算成年单位,从而得知每年可以获得的最大盈利是多少。以总盈亏作为基准判断交易策略的盈利时,它的问题在于起点不同,所产生的盈亏会有很多差异。因此,把不同时期的交易策略所产生的成果作比较时,主要使用以年单位换算的年平均盈亏。③ 平均盈亏。平均盈亏是把总盈亏分成总的交易次数后计算,并且每次交易都会显示平均盈亏。有些交易策略可以在多次交易中,通过累积小的盈利而创造出盈利;有些交易策略,虽然交易次数较少,但可以在各自交易中创造出高盈利。当发生交易时,平均盈亏所显示的是测试平均能够创造出多少盈利的标准。④ 最大盈利。最大盈利显示整个交易期间产生了最大盈利的那笔交易的盈亏情况。一次交易如果产生了很高的盈利,那么通过该项目,可以得知到底产生了多大的盈利。那它是否与总盈亏有关系呢?为了对此作出判断,常使用该项目。
(2)风险评估
如同硬币有两面,风险评估也存在内外两面。虽说判断风险的衡量标准有很多,但是一般来说,当判断将来会发生盈亏变化,或者产生盈亏时,这就是风险。下述三项可以判断出将来是否会产生亏损:最大亏损幅度、最大亏损、最长连续亏损交易。① 最大亏损幅度。最大亏损幅度是指,以已平仓交易为基准,将累积亏损额合计,盈利率曲线的最高点至最低点中,最长的下降部分就是亏损幅度。也可理解成整个交易过程中将要产生的交易策略中潜在的最大亏损,以前的交易中产生过的最恶劣的情况。该情况可以视作交易时可以承受的最大亏损限度。如果交易时,以该金额为基准来测定风险大小,并产生了莫大的亏损,则应该加强对交易策略的改善。② 最大亏损。最大亏损是以已平仓交易中发生最大亏损的交易的盈亏,来评估一次交易中可能发生的最大的潜在亏损。如果一次交易中发生的亏损很大,导致无法承受时,就不能信任该交易策略。在该情况下,需要改善策略以降低最大亏损。③ 最大连续亏损交易次数。最大连续亏损交易次数可以成为对于战略的心理上动量指针的一个项目。最大连续亏损交易次数,与最大亏损幅度一起显示交易可承受的最大亏损限度。作为此交易策略,为了实现交易,应显示出交易可以承受的连续亏损的时间。
(3)风险调整收益评估
风险调整收益评估是同时评估经营成果和风险的一种评估方法。在交易策略测试报告书中,泛指补偿比率、总盈利/总亏损、夏普指数等。① 补偿比率。补偿比率是通过算出风险比例和补偿比率后,把总盈亏分成最大亏损幅度后计算。当补偿比率低于1时,则表示风险大、补偿少,可以判断出该交易策略不是很理想。如果补偿比率大,说明对于风险的补偿率也就大,从而可以获得比较稳定的收益。由于补偿比率是利用总盈亏来计算的,因此在测试阶段可能会受到影响。在所显示的盈利率曲线的交易策略中,如果在显示向右上方向收益率曲线的交易策略中,测试时间过长,则补偿比率随之变高。也就是说,测试时间不同的交易策略间的比较是毫无意义的。② 总盈利/总亏损。总盈利和总亏损需要把整个测试期间的总盈利分为总亏损后计算。如果总盈利大于总亏损,则会显示大于1的值,在短线交易策略中,可以经常看到1.5—2的值。补偿比率和总盈利/总亏损,都显示风险补偿收益率。补偿比率是把盈利的幅度和亏损的幅度作为补偿关系来测定的;总盈利/总亏损则是在量变的基础上测定补偿关系的。③ 夏普指数。夏普指数是把月平均盈亏分为月平均盈亏的标准偏差后计算的。通过夏普指数,可以知道产生了多少比较稳定的盈亏。一般来说,夏普指数值越高,代表产生的盈亏更稳定。由于夏普指数是按月来计算的,所以一般采用至少三年以上的数据为计算基准。
(4)可靠性评估
交易策略测试报告上的总交易次数到底有多少才能判断出测试报告上各项评价项目是可信的呢?从统计理论来说,如果使用了30个以上的样本,就能知道答案。那么,是不是代表测试报告上有30次以上的交易就可以信赖了呢?答案是否定的。统计理论虽然是这样定义的,但是在将来,走势与虚拟数据是没有必然联系的。总之,太少的交易次数无法提供统计的有效性,交易次数越多,信赖性也就越高。但是,这并不意味着在同一时间内要促成多次交易,因为,交易费用的增加会导致业绩越来越低。想要增加交易次数,不妨加长测试的时间。
(5)交易策略有效性评估
通过交易策略测试报告书上的胜率和平均盈亏比例,可以判断该交易策略是否有效。一般来说,趋势跟随型交易策略显示的是低的胜率到高的平均盈亏比;而逆势交易显示的则是高的胜率到低的平均盈亏比。低点买入、高点抛售的逆势交易性交易策略,由于盈利交易的次数多于亏损交易的次数,所以胜率一般要高于50%,但是,由于其盈利不是很高,因此平均盈亏比与趋势跟随型交易策略相比,相对来说还是较低。相反,趋势跟随型交易在横步区域内由于作假信号频繁,整个胜率会很低,但是,在出现较大趋势时,通常又会产生较大盈利,因此,平均盈亏比例通常较高。
5. 交易策略改善阶段
在整个交易策略评估过程中,如果判断将来有可能产生盈利,那么下一步就是修改和优化交易策略评估,从而达到改善交易策略的目的。所谓优化,是由交易策略到外部变量的数值中,换入其他值,然后通过使用以前的数据来测试交易策略。也就是说,将和利用进入规则和清算规则的技术性分析指针的时间相同的变量值等,变更成为其他各种数值,随后通过互相评估业绩,达到改善交易策略业绩的目的。如果在交易策略评估过程中,该战略落选了,必须回到开发交易策略中,并重新制订新的策略。优化过程虽然是确认所开发的交易策略能不能成为突出的交易策略、用于交易策略中的变量是否通用的过程,但是,也可能会发生过优化的问题。过优化是让以前的数据产生盈利,通过利用选配曲线,在测试报告上显示出可观的盈利。但是,这样做会降低自由度,导致实际交易中产生亏损。因此,交易策略开发者必须提高警惕避免陷入过优化的困境中去。为预防过优化,可以尝试下述方法:第一,运用伦理性规则;第二,使用较少的变量;第三,对长时段的数据进行测试;第四,采用前向分析。
发表回复