# 历史行情回放

相信熟悉量化交易的朋友都知道策略回测。即使不熟悉的朋友,从字面描述也能猜出这概念的意图。

# 策略回测的需求动机

策略回测本质上是把历史行情数据按时间顺序输入到交易策略,从而观察交易策略的绩效表现。这个需求意图并不难理解。
所以,可以看到坊间的其他量化软件绝大多数都是面向策略来实现回测的,也就是先定义好了一个策略,然后才能做回测。

也许你会问,这不是废话么,没有策略回测什么?

面向策略的实现方案,从软件工程上就会有一个天然的缺陷,就是回测数据的输入依赖了策略框架,这会导致不同策略模式回测起来可能需要不同的数据回放方案,甚至限制了只有符合它们设计的方案才能进行回测。

对用户而言,简单来讲,就是复杂一点的策略就无法实现回测。

# 为什么选择采用行情回放的方案

Northstar 盈富量化平台大胆地一反业界常规,创新地提出更灵活的、面向历史行情回放的方案来实现这个回测需求。

当使用面向历史行情回放的思想去做设计时,程序的回放功能与策略交易模块完全解耦,不管交易策略有多么复杂,都能够实现策略回测。

对历史行情实现历史回放,对于用户来讲其实是相当自然的,用户只要能拿着历史数据,就像看行情回放录像一样,就能把策略回测做完了。
采用面向历史行情回放的方案,在回放的过程中,用户还可以根据实际需要去调整回放的精度与速度,不单单能回测策略,还能回测人性。因为有过量化操盘经验的朋友应该不陌生,一个回测时能挣钱的策略,当把它放到实盘运行时,操盘人往往会因为策略在某段时间连续亏损而对策略表示怀疑,从而手工干预策略的运行。这恰恰就是因为在回测时忽略了回测人性。
面向历史行情回放的方案可以让操盘人充分体验策略回测过程中的真实心理波动,从而能在操盘人心中建立了一个充分的心理预期。

因此,笔者对此方案相当有自信,以后不使用这种回测方案的量化软件,估计只能被称为是上一代的产品了。

# 行情回放的实现说明

历史行情回放是基于一分钟K线数据,利用三角函数插值法随机生成该K线的TICK数据。
回放精度分为四个级别:

  • 极低精度 为每分钟1个TICK数据,仅使用收盘价生成;
  • 低精度 为每分钟4个TICK数据,仅覆盖开高低收四个价位;
  • 中精度 为每分钟30个TICK数据,分别会在开高低收四个价位中间进行三角函数随机插值;
  • 高精度 为每分钟120个TICK数据,插值原理同上; 持仓量与成交量均采用算术平均值来计算。

具体算法实现可参考 TrigonometricTickSimulation 这个类的实现。

# 行情回放的机制说明

【连线】,当回放网关设置了 预热起始日 时,第一次点连线会先快速播放预热数据;待预热数据播放完后,会自动断开连线,再次连线则开始播放历史行情;
【断开】相当于暂停播放历史行情;
【复位】相当于把回放状态重置到初始状态

# 如何进行历史行情回放

# 1. 创建PLAYBACK行情网关

具体操作参考如何创建PLAYBACK行情网关

# 2. 验证行情回放

要验证行情回放,要准备一个模拟账户并绑定PLAYBACK行情网关,然后转到【手工期货交易】页。
选择模拟账户,然后选择一个有回放的合约即可。