zipline应用在国内市场的限制

zipline可以很好的支持美国股票市场的应用,但是却无法直接使用在国内市场,主要有如下几个方面的限制

数据方面

zipline 自带的几个bundle 都无法支持国内市场,其中quandl只包含美国的市场数据, yahoo的经过配置勉强可以下载到国内的股票信息。但是由于雅虎的国内行情的数据质量不敢恭维,历史数据经常会有缺失,所以感觉也不是特别靠谱的选择

交易日历 ( TradingCalendar )

交易日历是zipline系统里非常重要的部分,通过上一文章的稿子可以看到,很多其他的组件都和它有关联,给其他组件提供时间维度的索引,不管是ingest data bundle 还是运行算法,如果日历不匹配的话,那回测的结果肯定是不正确的,zipline默认使用的是美国纽交所的交易日历 (NYSE),这个显然是不能匹配国内股市的,除此之外,它还提供了 CME (芝加哥商品交易所 ) ,ICE(洲际交易所),us_futures (美国期货),等不同交易市场的交易日历,同样也不太适合国内的市场。

基准数据和国债利率曲线

基准数据

在回测的时候,如果没有特别指定,zipline使用的美国的标普500作为基准,显然也无法适用于国内的市场,我们可以通过两种方式来改变默认的行为

  • 一种是在初始化TradingEnvironment的时候使用bm_symbol参数来指定
  • 另外一种是在策略代码里调用 set_benchmark api 来设置

注意,两种方法在数据源的获取上有所不同 , TradingEnvironment的方式通过雅虎网站上的csv数据源获取的,而 set_benchmark 的方式是直接使用你本地的data bundle数据。

无论哪种方式,现有的zipline平台都不是特别合适,其中TradingEnvironment的方式由于是用yahoo上获取的数据源,经测试,雅虎的数据源的数据在国内的指数上,如上证综指部分时间点的数据有缺失,由于zipline在运行时对于数据的要求比较严格,会导致运行时抛出异常失效。对于set_benchmark的模式,由于它默认是不提供国内的行情数据的,所以也无法使用。

所以如果要讲zipline应用到国内的市场,需要做一些定制的开发。

所以后面我们会分别从TradingCalendar, 数据方面分别研究一下。

results matching ""

    No results matching ""