1.3 利用回测工具降低交易风险

量化系统投入实际使用之前,人们会希望提前测试交易的效果。这个期间往往涉及代码的改动和参数的调整。最常见的做法是将历史数据输入量化系统,让量化系统根据既定的交易逻辑进行操作,观察和分析交易结果,找到问题所在,调整量化系统,然后以此循环,直到效果达到预期为止。

该过程在业界被称为回测。回测是量化工作者常见的工作内容之一。

Note

很遗憾的是,回测跟实盘交易永远存在差距,再好的系统也无法回避。现在市面上有几个开源的回测引擎框架,虽然减少了回测的开发工作量,但或多或少都存在回测的误差。在此,我们优先介绍概念,其次介绍一些常见的规避或者补偿误差的方法,供读者在实践中使用。

回测工具有哪些功能?

历史交易过程和结果的模拟

顾名思义,回测当然是回顾一段时间,用既定的交易策略,向模拟的交易平台提交交易请求,然后统计交易的结果。

这样,一个策略到底能不能运作,是不是像想象中的那样运作(实战中,策略辞不达意的情况概率很大),运作的效果在特定的行情下是不是有预期的效果(不是所有策略都适用于所有行情,显而易见的事情),一目了然。

自动记账

如果每一笔交易都要自己手动记录交易结果,计算扣费,遇到限制条件还要进行异常处理,这个工作量是及其繁琐和容易出错的。一般来说,回测会有专门的记账功能,确保量化系统的交易请求能被正确处理。

回报分析

为了辅助回测人员对自身的策略效果建立一个客观的认识,回测往往附带一套指标系统,包括但不限于回报率、alpha、beta、夏普率、最大回撤等,通过这些指标,一个策略的收益情况、收益的相对好坏、收益的稳定和波动程度、最坏情况等,都可以得到一个参考,在常规的理解里,这些指标在实盘中依然有同样的表现水准(严格数学证明略)。

当然,为了分析的方便,回测还会提供基准参考与图形可视化功能,把市场的平均回报连同策略的回报按时间顺序用图形展示,能极大地具象化策略运作情况。

怎么使用回测工具?

回测工具有很多,这里只介绍我们推荐的相对简单可靠的方式。

回测工具与量化系统高度集成。在理想的情况下(参照我们设计的简单的量化系统),用户可以原样照搬量化系统里面的策略内容,并添加少量的系统变量设置,然后回测工具自动装载策略,加载回测情报系统,对回测的交易系统进行操作,记账。

# 回测系统示例伪代码

开始 {
    读取用户设置(时长、品种、误差系数)
    初始化程序(策略系统,回测数据系统,模拟交易记账系统)
    循环:回测数据系统.从第一条到最后一条.执行 {
        策略系统.读取历史数据
        策略系统.计算信号
        如果(策略系统.有交易指令)执行 {
            模拟交易记账系统.执行交易
        }
    }
    打印分析结果
}

这跟量化系统的执行逻辑非常相似,差别是:

  1. 情报系统是实时在更新,而回测数据系统提取历史数据;
  2. 交易系统会向交易平台提交交易请求,模拟交易记账系统则是在本地进行模拟撮合交易,记录结果;
  3. 回测系统有专门的分析结果。

有了这样的系统,重复地运行,不断地调整参数,找到你认为可以接受的结果为止,回测也不是那么难,对不对?

所以到底需要准备什么才能进行回测呢?

答:完整且规范的数据源,自动记账程序,和你想测试的策略。

可是这几件都不是省油的灯,要自己重头写一遍,基本就是《量化交易从入门到放弃》的故事原本了。

如果你一直读到这里,还对自己完成这样的任务抱有期待,WeQuant佩服你的坚持。

新手做回测时容易犯什么样的错误?

这里面学问很多,主要围绕如何降低回测的系统与人为误差,回头有机会再慢慢更新。

结语

回测是调优你的量化系统的比较有效的手段,不过有效的回测并不容易,也不是所有的场景都能通过回测解决。对于回测可以解决的问题,我们设计了一套简单的标准和配套工具,降低大家使用回测的门槛。请阅读下一篇。