回到未来:交易机器人的历史数据的帮助下性能测试





之前我们已经研究了强制性发展阶段交易策略的问题,对于股市。其中最重要的步骤是对历史数据的性能测试策略 - 回溯测试。今天我们就来谈谈它到底。

这是什么 H4>简单来说,回溯测试是运行使用历史财务数据的算法交易策略。算法找到这些或其他股票的事件(“信号”),将产生为购买或出售金融工具的命令 - 这些操作都会有一个相关的收益或损失。

的一个预定的时间,在交易策略增益或损失(损益,损益,损益)的总量将是该算法的成功或失败的指示符。

有寻求通过返回检验的商业软件开发商几个目标:

  • 过滤器 B> - 每个策略都有一定的指标prizvoditelnosi和效率,这是纳入到它的开发者。因此,任何策略不允许以实现这些目标应该是“过滤”。
  • 仿真 B> - 用回溯测试开发人员可以测试不同的市场模式,而不会失去真正的金钱的风险(改变流动性,交易成本,加速订单的处理,在通道的延迟等) 。
  • 优化 B> - 用历史数据中的“运行”策略可以提高其在特定的市场情况下表现
  • 验证 B > - 使用测试开发人员可以了解是否有在战略上的代码说明没有失误 LI> UL>正如你所看到的,回溯测试是对金融系统的开发者一个有用的工具,但正确地进行历史数据测试不能始终。越是高频策略得到执行,就越难准确地模拟各种市场情况和背景下对系统整体性能的具体交易大厅的影响。



    的误解回溯测试 H4>股票交易著名专家,定量的开发和交流的机器人船体迈克尔 - 摩尔,相信新手开发人员交换系统通常被创建时,由于某些误解犯错误。具体地说,专家<一href="http://www.quantstart.com/articles/Successful-Backtesting-of-Algorithmic-Trading-Strategies-Part-I">приводит这四种错误观念:

    等待同样的好成绩,将来 H5>通常情况下,开发商面临着诱惑,修改测试参数,以获得更确凿的结果​​。

    因此,如果在历史数据的情况下,可以改变任何和准确地预测结果,“战斗”模式的机器人可以相当作为有效的工作。既要测量的输入参数的不同值的策略的性能。

    用“未来”的数据 H5>在某些情况下,交易策略的创作者,包括数据集,对市场的未来地位的假设。如果在代码中的错误错误计算了极端的价格值的策略或不正确使用的最优参数(最大值和最小值),在真正的市场推出这种战略可能会失败(这是最常见的原因之一,历史数据的策略有效地工作的比实时)。

    他心理稳定 H5>不正确的评估测试过程中开发人员认为他们的算法的最终性能。如果在某个时间点(比如一年或五年),该系统获利,这是很有诱惑力的忽视存款(亏损),其中发生在这条道路走向成功的过程中的沉降。人们认为他们可以很容易地生存下来的自己的钱的25%的损失(毕竟,那么机器人必须收回)。

    在实践中并非所有有足够的韧性生存这些时刻未做皮疹操作(如果该算法允许的钱25%,历史上的损失,而且这种情况在现实中是很可能的),这往往会导致更大的损失。<无线电通信/>

    哪些参数应被视为 H4>开发的交易系统必须考虑到许多不同的参数,可以影响特定策略的最终财务上的可行性。

    交易费用 H5>新手交易者往往只注意其在市场上的直接算法的性能,却忘了考虑到相关的费用,这可能会抵消所赚取的全部收入。在这种情况下,最显着的成本将是一个费收取交易数据上的一些关税费的交流和经纪人(在ITinvest 大致对应的交换)。

    延误和延误 H5>滑点是一个之间的价格差异在其交易机器人拟进行的交易,以及一个在它确实发生了。对于以核心交易系统的“交货”需要时间。在高速机器人交易(HFT)的账户每毫秒,对于其价格可能会稍微改变,使交易不太有利(或不利的总称)的情况。

    一些金融工具,具有较高的波动性(价格经常变化),所以当你与他们合作,你必须要考虑可能的延误。

    流动性的影响 H5>当相对缺乏流动性的交易工具的工作应该记住的可能影响其交易系统的行为会对市场上。如果某股买入和卖出的人并不多,在为了买一个显著一些这样的股票可以大大改变自己的价格。为了避免这种情况,有必要教机器人打破协议上有大量的小订单不能强烈地影响市场。

    交易指令的类型 H5>的交易策略的操作是由它的一些交易指令的开发计划用于交易的事实的影响。大多数情况下,交易商纷纷使出市场订单和限价订单。

    为了市场(«市场“)来执行的那一刻,立即形成了市场对金融工具的价格(股票,期货,<一个HREF =“htt​​p://habrahabr.ru/post/226829/”>选项等)。因此,如果需要的话,主要交易,如购买了大量的股票,市场秩序会导致这样的事实,几笔交易发生在不同的价格 - 市场未必有人愿意以同样的价格出售股票,然后购买他们所有的股份,机器人移动到下一个建议价格等方面的正确的号码

    市场订单咄咄逼人的工具 - 他们将永远被执行,而该交易的最终价格是未知的交易者。

    限价订单式让机器人来确定最糟糕的价格,它是有道理的,进行交易。这样的命令可能仍然没有兑现(如果市场是不希​​望买入或卖出特定价格),或部分填充(没有找到足够的愿意),因此被认为是比较被动的交易。



    其优点是无疑的事实,即交易价格被预先确定。目前展出的类型限价订单列表被称为请求(订单)的队列中,并显示在一个单独的窗口交易终端。

    当测试策略,利用市场和限价单时,要注意她的行为是很重要的。在模型正确的交易策略在实时操作时可能会出现较差的结果,与历史数据相比,运行的所有请求的情况下。

    工具进行回溯测试 H4>有相当大的数量,可用于测试的金融战略的公共系统:

  • MS Excel中 B> - 熟悉每一个Microsoft Excel中可用于编写自动交易系统。大多数经纪人都会让你这个工具链接到他们的软件产品(上传数据,并生成使用VBA买卖信号)。这样的决定的缺点也不会高的速度,而加自由和快速执行简单的策略。另一种选择 - 开放式办公
  • Matlab的 B> - 软件环境设计用于复杂的计算。有插件的股票交易使用。有了它,你可以创建一个小的脚本,不过形容相当复杂的策略。减 - 系统和支付高昂的代价。替代品对俄罗斯市场 TSlab StockSharp 。交易员还用它来创建自动交易系统的产品的MetaStock ,的财富实验室和欧米茄
  • C ++ / C# B> - 编程语言是在金融世界盛行。逐步获得的Java和Scala的普及
  • 内置工具的交易终端 B>的 - 。创造交易机器人和回溯测试策略,在一些交易终端已经内置工具。对应 的插件可安装在该终端的SmartX 。写的机器人使用的脚本语言 TradeScript 。 LI> UL>

    的窗口回溯测试插件,用于创建机器人TradeScript终端SmartX I>

    结论 H4>回溯测试是开发一个交易策略,否则也很难指望在现实市场的“实战”条件充足的就业交易机器人的关键一步。据了解,对历史数据的成功的工作策略,在实际交易​​中实时使用时,并不能保证相同的结果是非常重要的。

    除了测试历史数据给开发者值得一试的实时程序 - 它可以使用提供的交流和经纪人一个特殊的测试交易系统来完成。有了这样的无风险系统的虚拟货币的帮助下,你可以调试机器人的反应变化的市场条件 - 通常在这种情况下,数据提供证券交易所(延迟或'抽取»)

    目前,所有的,谢谢您的关注。我们将很乐意回答的问题的意见。

    警告! B>在ITinvest空缺开发GUI C#,工作是实现软件产品的开发frontent交易的交易所。链接<一个细节href="http://www.itinvest.ru/about/vacancies/programmer-gui-c/">www.itinvest.ru/about/vacancies/programmer-gui-c/.



    附:如果你发现一个错字或错误 - 写个人信息,我们会及时修复它

    链接和帖子的题目是: B>

  • Successful算法交易策略回测 - 第一部分
<一href="http://www.quantstart.com/articles/Successful-Backtesting-of-Algorithmic-Trading-Strategies-Part-II">Successful算法交易策略回测 - 第二部分 操作方法:发展一步步导对于股市交易系统 专访:如何在C#和C ++留名股市 操作方法:如何选择编程语言来创建一个交易机器人< / A> LI> UL>

资料来源:<一href="http://habrahabr.ru/company/itinvest/blog/238839/">habrahabr.ru/company/itinvest/blog/238839/