08 【数据】获取历史数据的实操课

在上一集里已经讲解完了海龟回测框架的整个设计思路,在这一集里面我们就要开始来准备我们的回测所需要的历史数据。

【点击】传送门-加入 从0到1跑通量化交易 >>>>

<限前500名加入量化训练营>
马上添加助教微信(jwzhujiao2)
发送订单截图申请名额

本期提要

  • 海龟所需要的历史行情数据在特性上分为四点
  • 综合两种不同的免费数据方案的六点情况,总结出的结论是免费的可能才是最贵的。
  • 四个常用的数据获取函数
  • 本课相关网址与下载资料:米筐RQDATA试用申请 | 本课文件夹点击下载

内容摘录

在上一集里面,我们已经手把手地做了一遍海龟策略的回测,海龟策略现在对于你来说可能不再是书本上的一个空泛的概念或者说一套规则,而是一个实际你已经看到过的能跑出回测曲线来的这么一套策略代码。那么在接下来课程里面,我们将会深入的去看每一个代码的细节。这节课我们会从回测框架的设计开始。

在上一集里面,我们已经讲解完了海龟回测框架的整个设计思路,在这一集里面我们就要开始来准备我们的回测所需要的历史数据。

海龟回测所需数据有4个特性

首先我们来看看海龟回测它所需要的数据类型。那么因为海龟是一种CTA类的策略,那么基本上所有的CTA策略核心都只是需要历史的行情数据,本质原因是因为CTA策略主要所跟踪的这种趋势本身是在价格上面就能够得到足够的反映,你并不需要去依赖像股票类的因子类策略等等所需要得很多基本面的数据——所谓的参考引用数据(Reference Data)。

海龟所需要的历史行情数据在特性上整体上也分为这四点:

  1. 首先主要是我们这种低频的K线数据,因为海龟策略的运行的策略周期一般是比较大的时间周期,原版的海龟策略可能是日线级别的,那你继续往下沉,可能最多也就只能下沉到小时线的级别,那么无疑你如果用tick数据来回放,这个数据量太大了,因为我们知道一天的K线数据可能有上万个tick,这样对于我们的回测效率无疑是一种非常大的拖累。
  2. 第二个是对于数据行情本身,它要是这种所谓的做空无限制的。因为我们在之前已经知道海龟策略里面涉及到大量的这种多空双向的交易,如果像某些特殊的市场,比如说国内股票市场,它的做空可能要么你就没有办法融到这个券,要么融券的成本本身可能年化就很高了,已经高到能够影响你策略的收益的水平了,在这样一个情况,你用这种历史数据做出来的海龟回测的结果也同样是没有意义的。
  3. 第三点是没有所谓的换月跳空,因为我们知道期货合约是有一个叫做到期日、到期时间概念的,每个合约到期之后,我们就需要把我们的持仓再滚动到下一个我们的主力合约上。在这个过程中,从上一个主力合约到下一个主力合约,价格在大部分时候都是会不一样的,而且会有一个偏差。那么这个偏差既是反映了所谓的叫做carry cost,其实是一种融资成本,同时也反映了期货,虽然你同样可能是鸡蛋,但是这个月的鸡蛋和五个月后的鸡蛋,那么它在期限结构上、在供需需求上可能就是完全不一样的,反映了这些点。但不管怎么样,当这些因素导致的跳空出现在我们换月的情况下的时候,我们就需要对主力合约的换月做一个特殊的调整,使得我们回测的行情数据是平滑的,那么有两个手段,一个是叫做指数平滑,还有一个就是在换月的时候把价格的变动作为一个分红的方式直接去对价格做一个调整,那么这两种方式都能够实现换月跳空的平滑。
  4. 最后一个要求是叫做统一的时区时间,那么这个要求可能更多是针对比如说像外汇像数字货币这样的期权24小时的全球市场,那么如果你想要做一个国内期货上的回测,同时你想要跟比如说数字货币结合起来做一个这样大的组合,看效果怎么样,那么一定要注意你所使用的历史数据,它们的时区是要能对齐的,否则一个固定的偏差会使得它们,就你每天因为到收盘的时候,你需要对整个风险暴露做一些调整,那么你如果调整那个时间点,实际上是在不同时区的话,无疑在现实中是不可能做到的,所以一定要保证是统一的时区时间。

……