在这里可以看出,zipline由下面几个主要的部分构成

名称 说明
TradingAlgorithm 量化策略的抽象,既可以通过初始化传入构造上参数的方式,也可以通过继承的方式构造,其中zipline命令行主要的运行入口逻辑 run 方法也在这个类中
TradingCalendar 交易日历的抽象,这个类非常重要,无论是在构建数据的过程还是运行的过程,都可以用到
DataPortal 数据中心的抽象,可以通过这个入口获取很多不同类型的数据
AlgorithmSimulator 使用generator的方式,表述了策略运行过程的主循环。如果说TradingAlgorithm更像是代表了策略本身,那么AlgorithmSimulator更像是策略的执行器,尤其要关注的是他的transform方法
TradingEnvirioment 构造运行环境,主要是benchmark国债利率曲线等信息,对于美国的市场,这个类基本上不太需要关注,但是对于国内的市场,我么需要构建自己的TradingEnvironment
    1. Every zipline algorithm consists of two functions you have to define:

      • initialize(context)
      • handle_data(context, data)
    2. context is a persistent namespace for you to store variables you need to access from one algorithm iteration to the next.

    3. Zipline的本地化回测应用主要涉及2大块内容:TradingEnvironmentTradingAlgorithm
      TradingEnvironment主要用于本地化交易环境设置,而TradingAlgorithm则是Zipline回测框架的主对象,可以理解为回测入口。

    4. TradingEnvironment本地化最重要的就是设置:

      • tradingcalendar
      • benchmarke_return
      • treasury_return
        tradingcalendar用于设置tradingdays,其默认已排除周六周日,因此只需要重写一个py文件将每年对应的holiday(国内假期)从tradingdays除去即可。
        而benchmarke_return和treasury_return则作为策略回报的比较基准,将国内沪深300和对应各期限国债收益率通过重载load函数导入,将load函数对象传入至TradingEnvironment即可。
        注意benchmarke_return为Pandas的Series对象,treasury_return为DataFrame对象,各期限必须包含1month ~ 10year间所有。
    5. TradingAlgorithm的本地化则需要重点设置:simulation_parametersinitialize函数对象,handle_data函数对象。
      simulation_parameters包括策略回测的起始日期和回测频率,回测起始日期必须通过Pandas的tz_localize本地化,而回测频率包含daily和minute两种方式。
      而initialize函数与handle_data函数则用于策略初始化和模拟Bar周期反复回调所用。

    6. 数据的准备:理论上Zipline只支持其内置的DataPortal类型,它是其回测模拟所有数据的接口。
      考虑到通用性,Zipline目前也支持pandas的DataFrame和Panel,只不过它对DataFrame的支持就是将其很粗暴的转换为Panel来实现的。因此,就目前来说,Zipline只支持内置DataPortal和Pandas的Panel两种类型。所以,用户可以将任何本地可获取的数据首先转换为DataFrame,其index按日递增,columns为小写的open、high、low、close和volume等。然后以DataFrame为value,数据ticker为key来构建相对应的Panel作为回测本地化的标准数据输入。

zipline整体架构的更多相关文章

  1. 【深入浅出jQuery】源码浅析--整体架构

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  2. Underscore 整体架构浅析

    前言 终于,楼主的「Underscore 源码解读系列」underscore-analysis 即将进入尾声,关注下 timeline 会发现楼主最近加快了解读速度.十一月,多事之秋,最近好多事情搞的 ...

  3. jQuery 2.0.3 源码分析core - 整体架构

    拜读一个开源框架,最想学到的就是设计的思想和实现的技巧. 废话不多说,jquery这么多年了分析都写烂了,老早以前就拜读过, 不过这几年都是做移动端,一直御用zepto, 最近抽出点时间把jquery ...

  4. [转]Android App整体架构设计的思考

    1. 架构设计的目的 对程序进行架构设计的原因,归根到底是为了提高生产力.通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点, ...

  5. jQuery整体架构源码解析(转载)

    jQuery整体架构源码解析 最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性, ...

  6. 《深入理解bootstrap》读书笔记:第二章 整体架构

    一.  整体架构   1. CSS-12栅格系统 把网页宽度均分为12等分(保留15位精度)--这是bootstrap的核心功能. 2.基础布局组件 包括排版.按钮.表格.布局.表单等等. 3.jQu ...

  7. Nginx的负载均衡 - 整体架构

    Nginx的负载均衡 - 整体架构 Nginx版本:1.9.1 我的博客:http://blog.csdn.net/zhangskd Nginx目前提供的负载均衡模块: ngx_http_upstre ...

  8. MINIX3 内核整体架构回顾及内核定 性分析

    MINIX3  内核整体架构回顾及内核定 性分析 12.1 注意事项 由于本文档不对 I/O 文件系统做出分析,所以在此不对 MINIX3 整体做出一个分 析,本章主要是针对内核进程分析.并且这里的模 ...

  9. [Bootstrap]7天深入Bootstrap(2)整体架构

    大多数Bootstrap的使用者都认为Bootstrap只提供了CSS组件 和JavaScript插件,其实CSS组件和JavaScript插件只是Bootstrap框架的表现形式而已,它们都是构建在 ...

随机推荐

  1. Ecshop安装的坑,建议不要使用!

    最近因为工作的需要,安装了下ecshop,这个曾经的火爆开源程序,现在也呈现出疲态. 1.请看官方的运行环境推荐: 服务器端运行环境推荐·php版本5.0以上5.3以下的版本(推荐使用5.2系列版本) ...

  2. 史上最严管控,Android P非SDK接口管控特性解读及适配

    导读 在 Android P 版本中,谷歌加入了非 SDK 接口使用限制,无论是通过调用.反射还是JNI等方式,开发者都无法对非 SDK 接口进行访问,此接口的滥用将会带来严重的系统兼容性问题. 针对 ...

  3. Linux crontab 实现每秒执行

    Linux crontab 实现每秒执行 linux crontab 命令,最小的执行时间是一分钟.如需要在小于一分钟内重复执行,可以有两个方法实现. 1.使用延时来实现每N秒执行 创建一个php做执 ...

  4. hdu4675 GCD of Sequence 莫比乌斯+组合数学

    /** 题目:hdu4675 GCD of Sequence 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4675 题意:给定n个数的a数组,以及m,k: ...

  5. 素数 + 背包 - SGU 116. Index of super-prime

    Index of super-prime Problem's Link Mean: 如果一个素数所在的位置还是素数,那么这个素数就是超级素数,比如3在第2位置,那么3就是超级素数. 现在给你一个数,求 ...

  6. easyui datagrid 列拖动

    实现代码-code <script type="text/javascript"> $.extend($.fn.datagrid.methods, { columnMo ...

  7. imx6 uboot splash image

    跟踪uboot代码,了解imx6 splash image的生成过程. 涉及文件: ./cpu/arm_cortexa8/start.S ./board/freescale/mx6q_sabresd/ ...

  8. linux 下简单的ftp客户端程序

    该ftp的客服端是在linux下面写,涉及的东西也比较简单,如前ftp的简单介绍,知道ftp主要的工作流程架构,套接字的创建,还有就是字符串和字符的处理.使用的函数都是比较简单平常易见的,写的时候感觉 ...

  9. php -- PDO预处理

    可以使用多种方式实现预处理:指的是在绑定数据进行执行的时候,可以有多种方式. 预处理语句中为变量 使用数组指定预处理变量 1.准备预处理语句(发送给服务器,让服务器准备预处理语句) PDOStatem ...

  10. 【转】C++ Incorrect Memory Usage and Corrupted Memory(模拟C++程序内存使用崩溃问题)

    http://www.bogotobogo.com/cplusplus/CppCrashDebuggingMemoryLeak.php Incorrect Memory Usage and Corru ...