五 量化交易全流程

本节目录
策略回测
本节主要讨论回测相关的内容 , 包括两种不同的回测机制 , 即向量化回测和事件驱动回测;如何灵活使用开源工具来编写自己的回测程序;不同实现方式的优劣对比等 。
在我们研究策略的时候 , 需要知道某个策略的历史表现 , 这种情况就需要编写回测程序来查看了 。编写回测程序有两种模式 , 一种是向量化回测 , 一种是事件驱动回测 。这两种模式都有其对应的优点和缺点 。本部分将对这两种模式进行讨论 , 包括如何自己编写回测程序 , 如何使用开源框架等
回测系统是什么
最基本的回测系统是指 , 当我们有一组交易规则 , 需要根据历史数据来获取这组交易规则的业绩表现时 , 除了给出历史表现之外 , 有时候还需要优化参数 。比如 , 交易规则设定了一些参数 , 我们需要知道哪组参数表现最好 , 这种情况就还需要一个优化系统 。更精细一点的 , 有时候还需要对下单的冲击成本进行模拟 , 这种情况就还需要一个模拟撮合系统 。这些系统都是回测系统的一部分 。可以看到 , 回测系统想要简单时可以非常简单 , 想要复杂时也可以非常复杂 。具体如何选用、开发 , 还是要根据自己的需求来决定 。
各种回测系统简介
策略回测是一个非常广泛的需求 , 市面上有很多商业的或者开源的系统 。各种系统数量之多 , 如何选择也是一个问题 。一般来说 , 开发回测程序有三种方式 , 具体如下 。
口 使用现成的商业软件 , 这种商业软件提供的编程语言大体包含两类 , 一类是比较简单的Easy  , 比如、、文华财经等 。另一类是稍微复杂的事件驱动型 , 比如优矿、、 。
口 使用开源的框架进行二次开发 , 比如、等 。
口 使用任何一门编程语言自行开发 , 比较流行的有、Java、C#、、R等 。
(1)商业软件
使用商业软件 , 最大的好处是比较省时省力 , 而且由于有一个专业的公司在维护 , 系统出Bug的概率比较小 。缺陷是缺乏灵活性 , 它们往往只适用于几类策略 。对于更为灵活开放的策略往往是没有办法的 。有时候 , 也会有保密性方面的担忧 。
(2)开源框架二次开发
使用开源框架进行二次开发 , 可以兼顾省时省力和灵活性 。由于已经有了开发好的大量模块 , 所以直接进行二次开发 , 比自己从头开发要容易很多 。不过 , 这只是针对相对复杂的回测系统而言 , 比如 , 要实现tick级别的下单算法模拟 。
(3)自己从头开发
完全自己开发 , 拥有完全的灵活性 。更重要的是 , 很多策略回测往往并不需要复杂的回测系统 , 有时候很简单的脚本就能完成回测 。
以上三种方法各有优劣 , 都有自己适合的场景 。具体使用哪种方法 , 并没有一定之规 。在实际应用中 , 这三种方法很可能是交叉应用的 。即使在同一家公司之内 , 由于同事的工作习惯不同 , 在进行合作研究的时候 , 也不得不来回切换 。
由于本书主要集中于相关的内容 , 所以本章主要介绍如何使用 自主开发 , 以及如何使用开源框架进行二次开发 。
什么是回测