随着计算机技术的发展,算法交易变得越来越流行,尽管现在使用这种新型交易方法的人还不多,且入门的门槛相对也比较高。软件算法,其实,是世界上那些相当聪明的人,通过他们的逻辑思维,写出的代码,或许这要比我们一般的普通人要厉害得多。每个喜欢并关注交易的人,都应该去了解一下算法交易这个技术,并了解其设计的原理和方法,进一步用来优化自己的交易系统。以下是文章。
原文出处:算法交易策略的七个要点 2019年2月5日 09:19
摘要:笔者将在文中简单介绍算法交易需要注意的7个要点,如风险管理、市场选择、仓位调整以及回测等内容,并举例说明笔者的一些实际操作。
1.风险管理
在制定交易策略时必须确保你能承受的风险有多大。通过计算如果你所有的头寸都被平仓,账户将会损失多少来衡量和跟踪所有的未平仓风险。一般而言,投资者可以根据头寸和整体投资组合来衡量和调整风险。这也意味著:如果所有仓位都被止损出场,你也能提前了解自己所遭受的损失占据账户的百分比。
举个例子来看:
假设你每笔新交易的风险是账户总额的0.5%,这个例子中的交易策略—跟踪止损单(trailing stop)是基於某段时间X的最低价位来跟踪Y时期的止损。在变动缓慢或盘整的市场中,该交易策略设置的止损将接近价格;随著时间的变动,风险将减少。在抛物线形态的波动(parabolic moves)中,价格和风险将快於跟踪止损。
此时,未平仓头寸面临的风险可能是0.5%至该数字的几倍,如果没有进一步降低这种交易风险的机制,当该笔交易迅速回吐此前所有的收益时,投资者的账面和心理都有可能会遭受重大创伤,尤其是投资者多个头寸都从这种交易策略中受益时。
实战交易不应人云亦云,每个交易者都应该对自己有信心并按自己的交易计划进行,DailyFX高级指南为你总结四大要点,点此下载获取
对於算法交易员来说,这个发现意味著我们需要一个算法来计算每个头寸的未平仓风险和整体投资组合的风险。那么具体要如何来算呢?一个较为妥善的办法是在交易中加入一个专门为这些情况设计的算法,当风险超过某阈值时,可以进行移动止损或减少头寸,然後再通过回测优化这些参数。
每笔交易的风险=整体账户的X%:可控制比每笔交易的最初风险
单笔交易最大风险=X%(移动止损或者减少仓位):该数据等於或者稍大於上面的数字
投资组合的最大风险=Y%(移动止损或减少仓位):如果你的交易策略用了很多工具,这个参数可以控制投资组合的总风险。下面这张图片展现了整个交易过程中的投资组合风险。
笔者是在2008年做多原油的过程中“艰难地”学会了这一方法。笔者曾经使用了一种非常长期的滞後指标来作为出场信号,在市场处於明显的趋势且价格变动缓慢有一定波动性的时候,笔者的策略是非常可靠的。然而,由於当时油价的走势在以往的价格中并不常见,笔者并没有考虑过控制未平仓利润的风险。
2008年笔者做多了原油,在油价直逼140美元/桶时获得了可观的收益。与此同时,随著油价上升的速度越快,笔者对止损价位越远的担忧就越甚,目前还能清楚记得当时有多希望油价能够盘整一段时间。以便让交易策略的止损价能跟上来。
虽然当时也获利了结了一定的仓位,但由於期货市场的合约量很大,能减持的仓位非常有限。在先前的多单跌至移动止损价位出场後,笔者又对风险系统进行改进,当单个仓位的风险超过某一水平时,通过调整止损和控制风险来降低损失。
2.市场选择、时间框架和投资组合结构
根据投资者所使用的交易系统、回测平台、所需的基於云的资源和使用的应用程序接口以及是否需要托管服务的不同,时间框架(分钟图、小时图和日图等)的不同都会对交易策略产生潜在影响。
基於触发器、即时执行或者1分钟烛图执行的高频交易系统可能需要云基础设施的解决方案,以便在不同突发时间范围内计算能力的回测和优化能得到最佳结果。一些第三方交易平台会将此作为其软件包的一部分。
《成功者交易手册》:总结了2016年IG的3000万笔真实交易多个活跃品种上平仓时的获利和亏损情况表现,从大数据告诉你为什么设置1:1的风险回报比成功率很低。
交易系统的策略开发过程中,对电脑计算能力和回测引擎的优化将为投资者节省大量时间。对於考虑高频交易策略的投资者来说,需要选择尽可能与经纪商的服务器在同一地点的交易体系,并且通过FIX API来确保能即时接受所有的报价,其报价频率每秒高达300次,与此相比,ForexConnect API的报价频率仅每秒2-3次。
为了尽可能使盈利最大化,投资者就必须以预想的价格或者更好的价格买入/卖出,前提条件是要确保平台、代码和服务器位置尽可能少的出现延迟,从而为投资者在确切的时间提供最佳机会,否则会容易出现滑点。
了解每个市场的潜在流动性特征可以帮助投资者了解自己交易策略的伸缩性。每个价位的流动性并不是无限的,而是依据市场、交易时间和环境的不同而不同。在预估滑点时,低频交易系统需要更多的保证金来避免误差。相较於高频交易系统,若回测的总交易单数越少,其执行过程中滑点对整体盈利能力的影响就越小。
如果您的交易止损策略使用的是价格通道或某种滞後指标,减少延迟性带来的影响可能不如特定策略产生的影响大。在代理服务器设置盈利价位和止损,速度都不会提高。个别市场的表现可能有很大的差异。有些可能长时间在区间内交投,而另一些则可能很快就出场。因此,少量市场的投资组合可能会比规模更大、市场更多样化的战略投资有更具波动性的回报。
3.了解如何能更好地执行自己的订单
一些投资者仅利用市价进行交易,一般而言投资者对这种情况的成交价会感到满意,但在不确定性高企的环境中,报价商倾向提供范围更广的价格区间以维护自己的利益,且此时价格的变动十分迅速。
当价格突破阻力後,基於动能和突破策略的交易会被成交,此时很可能遭受滑点,因许多做单方向一致的订单被同时触发。可以在这种交易中设置以区间来入场。
一些交易者可能以零滑点的价位入场甚至是正滑点进场,例如高频交易者和基於重磅事件的一些交易策略。回测是假设所有单子能被100%执行,但现实可能无法做到。
整体而言,需了解自己交易的订单类型以及如何能以更好地价位执行订单。
4.仓位调整
有两种常见的方法来调整交易的仓位:
A.基於固定比例的交易:无论交易的是何种货币对,均设置固定的交易比例。虽然这种方法受到许多交易者的欢迎,但这种方法的局限性是:在波动性较大的市场容易造成增持,在波动性小的市场容易减持。不同的汇率可能导致名义的交易规模差异巨大。现在许多自动化系统对每个头寸都设置了固定的止损总额,笔者不喜欢这种方法,其将导致价格在波动性大的市场中离止损太近,而在平静的的市场中离止损太远。
B.基於风险的交易:根据止损的位置来计算每笔交易的风险
基於风险的头寸考虑了每个交易面临的风险,其中,风险等於入场价减去初始止损。
一个复杂的方法是将每个市场独特的因素以及近期的平均价格范围考虑在内来确定止损水平。这样做的其中一种方法是计算最後x个周期的平均真实波幅,并将初始止损定在离该波幅几倍远的水平。此方法将根据每个市场独特的波动性来动态平衡每个交易在不同市场的风险。
举例:以交易欧元/美元为例
一手的交易风险=((总交易额 * 每笔交易愿意承担的风险)/(X时期的ATR * ATR offset * 每一手的点子价值))
总交易额 = $100K
每笔交易愿意承担的风险 = 1%
X时期的ATR = 50点
ATR offset = 1.5
每一手的点子价值 = $0.10
根据上述公式得到这笔交易的风险 = (($100K * 1%) / (50 * 1.5 * $0.10) = 133.333
在动荡的市场中,无论交易的时间框架如何,ATR的范围在不确定的情况下都可能大幅增加,其在市场中移动快速且缺乏方向性,导致许多交易员被甩出市场。然而,如果投资者将近期的ATR(平均真实范围)利用在交易中,并使用它的倍数来确定止损价格,是可以通过该方法过滤一些短期的波动,从而提高交易成功的可能。建议投资者反复测试,仔细研究结果。不过请记住,回测有其局限性,过去的表现并不能预示将来的结果。
5.回测
首先需要足够的数据,笔者认为最重要的测试自己的交易以及将所测试的应用到交易中。外汇市场的分散性意味著每个经纪商可能会有不同的历史价格和价差。一些第三方的算法交易平台也将提供历史数据的访问,但提供的数据可能并不完整。
将一些好的主意应用到交易策略,然後将主意写成代码在实战中交易是一回事,但如果您直接实践或是利用不切实际的回测检验,将很可能遭受滑铁卢。如果您的回测检验不现实或者是使用了错误的假设,例如假设每笔交易都能完美执行,那么您可能会发现实际结果与回测检验的结果非常不同。
一个设计出色的回测系统可以帮助你在投入资金前发现什么是有效的,什么是无效的,尽管过去的表现并不能预示将来的结果。您应该尝试不同的参数并检视统计数据,查看可视化的结果,并在图表上查看不同交易的表现。最先进的回测平台将能够同时检查和优化多个市场的结果;这在发现不同市场的交易策略以及对整个头寸组合的风险管理方面非常重要。
6.优化
如果不优化自身的交易策略,很可能难以得到一个最佳的策略;另一方面,如果进行过度优化,最终可能会得到一个只在历史数据上表现良好的交易系统。关键是要在两者之间找到平衡。
当使用回测检验来优化策略时,面临的最大风险将是曲线拟合。笔者总是提防那些使用许多不同变量来进行优化的系统,或者只在一个市场上进行优化的系统。换句话说,笔者想要限制系统的自由度。
交易系统的参数越多,就越容易以过去的价格去完美地优化参数,尽管检验的结果令人惊讶,但这可能只是噪音而非一个可重复的模式。
如果只在一个市场上对策略进行回测检验,将产生同样的效果。由於系统只在一组价格上模拟结果,很容易将参数过度拟合到历史数据中,从而得到令人难以置信的回测结果,但其统计意义不大。
一般而言,许多交易者会使用非常简单的系统和少量的参数来避免这种风险。此外,保持策略的逻辑思维简易也将有助於减少生成交易决策时导致的延迟。如果您的系统只需要处理6个检查点(checkpoint)而不是10个,那么在交易一个非常活跃的策略时,执行的结果将增强。
7.风险容忍度
每个人都拥有独特的性格:年龄、收入、支出、风险资本、一般的风险偏好,以及是否容易乐观或悲观等等。因此,每个人都必须确定其可以接受的风险类型。如果风险资本很小,最好的办法可能是根本不做交易,继续存钱。
大多数算法交易者都是乐观主义者,他们相信他们可以取得高於其他人平均水平的结果,而这可能导致许多高风险的,大胆的交易计划产生,由於这些交易可能达到损失或触及算法交易者心理进一步的损失预期,这些计划很快就出场。
当投资者者正处於一个大的亏损期时,很难像一开始交易时那样乐观。根据笔者的经验,这与实施第一个自动化策略类似,在回测检验时可以达到一年20%的盈利率,但是,40%似乎更好,前提是得愿意承担更大的风险!
笔者认为许多投资者真正的风险承受能力可能低於想象。永远不要忘记:生存和资本保留是最重要的考虑因素,而不是根据回测了解自己潜在的盈利率。
在交易时,恐惧或贪婪的情绪都会导致投资者做出糟糕的决策。计算机不需要处理这一问题,所以笔者认为处理这一问题的最佳策略是找到一个强大的交易系统,坚持该交易系统的,并在做出任何改变之前先进行研究。
交易过程中的情绪可以帮助投资者识别交易系统中的弱点和潜在机会。如果交易过程中的波动一直让你感到恐惧,那么也许需要降低风险;
也许你看到了市场出现一波後悔没入场的行情。了解自己在交易过程中的情绪,并利用回测来探索修改交易系统的方法,以确保将来不会错过类似机会。
DailyFX 提供外汇市场新闻资讯和行情技术分析。