量化策略开发第一步:数据源

开发量化策略的第一个重要环节:如何获取数据?

开发量化策略所需要的数据,包括历史数据和实时数据。特别指出,我们只介绍免费的数据源,以帮助大家降低成本。

先从股票开始,股票的历史数据,我们可以借用三方平台回测(例如优矿、聚宽、米筐等),相当于借用了平台的历史数据,但平台历史数据有一个问题:往往不能将全量数据下载到本地。想要自己搭建股票回测框架的话,推荐用tushare的数据,如果你是学生,tushare是可以免费使用的;而如果你有写blog的习惯,也可以写一些tushare相关的技术文,向tushare申请免费的积分以获取数据权限。

一个tushare获取数据的小栗子

对于实时数据,目前新浪财经、腾讯股票可以通过爬虫抓取实时数据,我们曾分享过如何通过新浪财经,以及Easyquotation(包含新浪、腾讯财经接口)获取数据的文章,传送门:

实时获取股票数据,免费!——Python爬虫Sina Stock实战

股票数据爬虫:进阶免费、开源的股票爬虫Python库,亲测真香

然后再看期货,期货数据根据数据周期可以分为K线数据和tick数据。期货的三方平台例如tbquant,提供了tbpy的接口。我们可以通过Python将平台提供的全量历史k线数据下载到本地,来进行本地的回测,可以说是极为友好了。此外,比如tqsdk(快期天勤的Py接口),以及上文提到过的tushare,也能提供期货的k线的历史数据接口。

对于高频策略需要用到的tick数据,就只能通过自编软件来收集了,目前我们没有看到三方平台或数据商有这一类免费的数据源提供。期货的实时数据,由于有ctp api这个完全免费、高度成熟的期货接口,任何人都可以通过这个接口接收交易所推送的标准行情数据,与此同时,我们可以配合mysql或mongodb,将数据落地,就形成了本地的tick级数据回测来源。

tick数据落地范例

量化策略开发第二步:回测平台

开发量化策略的第二个重要环节:选择合适的回测平台/框架

量化策略的回测,我们既可以借助成熟的三方平台,也可以用例如Python等语言自行编写搭建回测框架。

先说三方平台,股票回测的三方平台,以聚宽、优矿、米筐这3个最常见,这3个平台都是Python API的结构,并且有完善的测试结果的可视化工具。

对于期货的回测,K线策略同样可以借助4大三方平台:tbquant、文华财经、金字塔、multicharts来实现,如果对于Python比较熟悉,也可以选择天勤的tqsdk或者vn.py来回测,其中vn.py需自行对接历史数据。

三方回测平台的优势与劣势

然后,我们来分析一下三方平台的优势、劣势。首先是优势,第一点,三方平台把回测的基础框架都搭建好了,用户只需要专注最核心的策略逻辑部分,而不需要关注其他的底层;第二点,三方平台往往回测和实盘代码是同一套,回测、实盘的逻辑由三方平台自建的底层代码来做切换,给予用户编程最大程度的方便。

说完优势,我们再来看一下劣势,第一,三方平台封装好了底层,是一个双刃剑,在提供编程便利的同时,也把底层变成了黑盒,有些指标计算、开平仓价格的细节,无法通过代码去定位是否有潜在错误,导致回测结果变得不十分可信。代码控制的不好,很容易产生未来数据或偷价格等错误,导致回测出上帝视角的策略效果。第二,三方平台的回测速度,往往不如自编更快,因为三方平台需要兼顾许许多多客户的不同需求,增加越多通用性的功能,往往意味着性能上的妥协。第三,使用三方平台会产生一定的费用,例如需要购买历史数据、服务器磁盘空间、实盘权限等等(毕竟免费的三方回测,也不是做雷锋,总有其需要变现之处)。

总结一下,如果有一定的Python编写能力,或是对于策略的回测精度细节要求很高,基本上只能自己搭建框架来回测;而如果测试一些通用的策略,且编程是刚刚上手的,那么三方平台能尽快地帮助你去实现一些想法,并验证这些想法在历史上是否可行,以及是否有应用到实盘的价值。

我们在此前的直播中,分别分享了基于K线策略的自编Python回测框架,以及基于横截面策略的自编Python回测框架,感兴趣的朋友可以参考

【系列培训第三讲】魔改经典策略:变种肯特纳通道策略(完整录播版)

【系列培训第四讲】量价之外:期货基本面量化策略(完整录播)

量化策略开发第三步:实盘平台

开发量化策略的第三个重要环节:选择合适的实盘平台/API

首先是股票,股票目前监管较为严格,比较有名的像XTP,接入门槛在300万-500万起步;此外,市面上有一些类似外挂的接口,极不稳定,实盘请注意风险,不建议大资金使用,上述接口都是基于C++语言的。也有部分“科学家”用Python开发了类似按键精灵功能的伪接口,不算是完善的接口,实盘同样需要注意风险。

再说期货,期货入门门槛最低的是4大三方平台:tbquant、文华财经、金字塔、multicharts,这4个平台采用编程极为友好的easylanguage,建议编程初学者使用,但有需要支付额外手续费、速度慢等缺点;再难一点的是vn.py,开源的python平台,对于熟悉python的同学比较友好;然后更为复杂的就是C++ API了,大家用的最多的是ctp,速度更快的还有ctp mini、盛立、艾克朗科、恒生等。对于平台的选择,如果做的是中低频的策略,优选4大平台或vn.py,但如果做高频策略,C++是必须配置,ctp是起步要求,如果策略对于速度要求更高的话,选用盛立等以FPGA作为底层的平台更合适。FPGA为底层的交易系统(下图是一个典型的FPGA通路),可以将交易系统的响应速度提升到极致。

量化投资对于数据源、回测、实盘平台的选择相关推荐

  1. 量化交易如何进行回测+模拟+实盘?包括哪些回测框架?

    大家在进行实盘交易前,必须对量化交易策略进行回测和模拟,以确定策略是否有效,并进行改进和优化.作为一般人而言,你能想到的,一般都有人做过了.回测框架也如此.当前小白看到的主要有如下五个回测框架: 1. ...

  2. 数字货币中短线策略(数据+回测+实盘)

    数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数 ...

  3. 基于Python的指数基金量化投资-股票数据源baostock

    基于Python的指数基金量化投资-股票数据源baostock 课程参考:基于Python的量化指数基金投资 微信公众号: 量化用到的数据源来自baostock,可以通过www.baostock.co ...

  4. python外汇交易回测系统_StarQuant - 综合量化交易回测系统/平台

    Welcome to StarQuant StarQuant(中文名:易数交易系统)是一个轻量的.面向个人( 普通)用户的综合量化交易回测系统,目前主要用于期货期权程序化交易(CTP接口,在实盘测试中 ...

  5. Quant工具箱:量化开发之事件驱动回测框架与实盘交易系统

    所以这一章,我们将分别聊一遍 事件驱动回测框架 和 实盘交易系统 的架构与实现细节.这篇开始就逐渐有工程味道了,小伙伴们准备好哦. 一.事件驱动回测 承接着向量化回测,这一篇我们先说事件驱动回测模块. ...

  6. 量化框架zipline--分钟回测改写

    基于zipline的分钟回测改写,其中数据源为自定义,使用bcolz的ctable,该数据格式与pandas的DataFrame很好兼容,并且bcolz文件压缩率很好.以下主要记录此次改写回测整个过程 ...

  7. 数据分析师1.4量化交易策略的回测方法和技巧

    1.具体流程 1.利用Python编写好策略,选择选好的股票池. 2.设置开始和结束的时间点,然后设定资金池 3.通过股票池和日期获得股票数据,然后按照设定的间隔,比如每天/每 分钟调用回测函数. 4 ...

  8. 终于有人把量化投资讲明白了

    导读:股市起起伏伏,"基金"成为了热搜的常驻嘉宾,你上车了吗?翻车了吗?今天我们也蹭一下这个热度,聊聊量化投资. 作者:赵志强 刘志伟 来源:大数据DT(ID:hzdashuju) ...

  9. 目前市面上量化交易软件、平台、框架的特点, 重点推荐VNPY底层仿真回测系统

    随着这几年量化交易在国内的快速发展,各种API接口.量化平台.量化交易框架匆匆推出,呈现出一片百花齐放,欣欣向荣的景象,但是由于目前国内还处于私募基金发展的初期,大部分平台也都匆匆上马,既有自己的特点 ...

最新文章

  1. Excel 公式 两个时间比大小
  2. java中断线程_Java中断线程的方法
  3. python日历函数_python 怎么定义一个函数,输出日历
  4. Servlet中response对象Commit状态的分析
  5. 看懂 IPv6+,这篇就够了
  6. Android入门(四)UI-创建自定义控件
  7. 左右db_block_size了解和实验
  8. 十九、Math和Random类
  9. DPDK学习0 -- 学习步骤
  10. 129.求根到叶子节点数字之和
  11. IDEA+Maven搭建JavaWeb项目
  12. Java打包ZIP压缩包文件下载
  13. 练习题 斐波那契数列
  14. 使用jenkins流水线完成自动部署服务到K8s
  15. 批处理:批量修改文件名称
  16. jwt token使用autho0-jwt框架使用(二)
  17. 模电——多级放大电路的耦合方式
  18. 卡巴斯基2019安装之后电脑网速变慢
  19. PostMessage,SendMessage,GetMessage,PeekMessage,TranslateMessage,DispatchMessage的用法集合
  20. 深入学习spring cloud gateway 限流熔断

热门文章

  1. 设置banner图片居中且有背景
  2. System.arraycopy()方法使用
  3. PostgreSQL 扩展安装
  4. 人生最大的敌人是自己
  5. java 对象流判断文件末尾 ( end of file / eof异常处理 )
  6. 马士兵java面向对象_马士兵JAVA零基础后端工程师
  7. spring开发基础
  8. 文件传输协议FTP和开源FTP软件FileZilla
  9. MQTT--多个Zigbee监测网络远程监控的实现
  10. 中国科技大学2018 hackergame (喵咪克星)