用Python怎么做量化投资

Python09

用Python怎么做量化投资,第1张

本文将会讲解量化投资过程中的基本流程,量化投资无非这几个流程,数据输入------策略书写------回测输出

其中策略书写部分还涉及到编程语言的选择,如果不想苦恼数据输入和回测输出的话,还要选择回测平台。

一、数据

首先,必须是数据,数据是量化投资的基础

如何得到数据?

Wind:数据来源的最全的还是Wind,但是要付费,学生可以有免费试用的机会,之后还会和大家分享一下怎样才Wind里摘取数据,Wind有很多软件的借口,Excel,Matlab,Python,C++。

预测者网:不经意间发现,一个免费提供股票数据网站 预测者网,下载的是CSV格式

TB交易开拓者:Tradeblazer,感谢@孙存浩提供数据源

TuShare:TuShare -财经数据接口包,基于Python的财经数据包,利用Python进行摘取

如何存储数据?

Mysql

如何预处理数据?

空值处理:利用DataFrame的fill.na()函数,将空值(Nan)替换成列的平均数、中位数或者众数

数据标准化

数据如何分类?

行情数据

财务数据

宏观数据

二、计算语言&软件

已经有很多人在网上询问过该选择什么语言?笔者一开始用的是matlab,但最终选择了python

python:库很多,只有你找不到的,没有你想不到,和量化这块结合比较紧密的有:

Numpy&Scipy:科学计算库,矩阵计算

Pandas:金融数据分析神器,原AQR资本员工写的一个库,处理时间序列的标配

Matplotlib:画图库

scikit-learn:机器学习库

statsmodels:统计分析模块

TuShare:免费、开源的python财经数据接口包

Zipline:回测系统

TaLib:技术指标库

matlab:主要是矩阵运算、科学运算这一块很强大,主要有优点是WorkSpace变量可视化

python的Numpy+Scipy两个库完全可以替代Matlab的矩阵运算

Matplotlib完克Matlab的画图功能

python还有很多其他的功能

pycharm(python的一款IDE)有很棒的调试功能,能代替Matlab的WorkSpace变量可视化

推荐的python学习文档和书籍

关于python的基础,建议廖雪峰Python 2.7教程,适合于没有程序基础的人来先看,涉及到python的基本数据类型、循环语句、条件语句、函数、类与对象、文件读写等很重要的基础知识。

涉及到数据运算的话,其实基础教程没什么应用,python各类包都帮你写好了,最好的学习资料还是它的官方文档,文档中的不仅有API,还会有写实例教程

pandas文档

statsmodels文档

scipy和numpy文档

matplotlib文档

TuShare文档

第二,推荐《利用Python进行数据分析》,pandas的开发初衷就是用来处理金融数据的

三、回测框架和网站

两个开源的回测框架

PyAlgoTrade - Algorithmic Trading

Zipline, a Pythonic Algorithmic Trading Library

Python量化投资框架:回测+模拟+实盘

Python量化投资 模拟交易 平台   1. 股票量化投资框架体系 1.1 回测 实盘交易前,必须对量化交易策略进行回测和模拟,以确定策略是否有效,并进行改进和优化。作为一般人而言,你能想到的,一般都有人做过了。回测框架也如此。当前小白看到的主要有如下五个回测框架: Zipline :事件驱动框架,国外很流行。缺陷是不适合国内市场。 PyAlgoTrade : 事件驱动框架,最新更新日期为16年8月17号。支持国内市场,应用python 2.7开发,最大的bug在于不支持3.5的版本,以及不支持强大的pandas。 pybacktest :以处理向量数据的方式进行回测,最新更新日期为2个月前,更新不稳定。 TradingWithPython:基于pybacktest,进行重构。参考资料较少。 ultra-finance:在github的项目两年前就停止更新了,最新的项目在谷歌平台,无奈打不开网址,感兴趣的话,请自行查看吧。 RQAlpha:事件驱动框架,适合A股市场,自带日线数据。是米筐的回测开源框架,相对而言,个人更喜欢这个平台。 2 模拟 模拟交易,同样是实盘交易前的重要一步。以防止类似于当前某券商的事件,半小时之内亏损上亿,对整个股市都产生了恶劣影响。模拟交易,重点考虑的是程序的交易逻辑是否可靠无误,数据传输的各种情况是否都考虑到。 当下,个人看到的,喜欢用的开源平台是雪球模拟交易,其次是wind提供的模拟交易接口。像优矿、米筐和聚宽提供的,由于只能在线上平台测试,不甚自由,并无太多感觉。 雪球模拟交易:在后续实盘交易模块,再进行重点介绍,主要应用的是一个开源的easytrader系列。 Wind模拟交易:若没有机构版的话,可以考虑应用学生免费版。具体模拟交易接口可参看如下链接:http://www.dajiangzhang.com/document 3 实盘 实盘,无疑是我们的终极目标。股票程序化交易,已经被限制。但对于万能的我们而言,总有解决的办法。当下最多的是破解券商网页版的交易接口,或者说应用爬虫爬去操作。对我而言,比较倾向于食灯鬼的easytrader系列的开源平台。对于机构用户而言,由于资金量较大,出于安全性和可靠性的考虑,并不建议应用。 easytrader系列当前主要有三个组成部分: easytrader:提供券商华泰/佣金宝/银河/广发/雪球的基金、股票自动程序化交易,量化交易组件 easyquotation : 实时获取新浪 / Leverfun 的免费股票以及 level2 十档行情 / 集思路的分级基金行情 easyhistory : 用于获取维护股票的历史数据 easyquant : 股票量化框架,支持行情获取以及交易 2. 期货量化投资框架体系 一直待在私募或者券商,做的是股票相关的内容,对期货这块不甚熟悉。就根据自己所了解的,简单总结一下。 2.1 回测 回测,貌似并没有非常流行的开源框架。可能的原因有二:期货相对股票而言,门槛较高,更多是机构交易,开源较少; 去年至今对期货监管控制比较严,至今未放开,只能做些CTA的策略,另许多人兴致泱泱吧。 就个人理解而言,可能wind的是一个相对合适的选择。 2.2 模拟 + 实盘 vn.py是国内最为流行的一个开源平台。起源于国内私募的自主交易系统,2015年初启动时只是单纯的交易API接口的Python封装。随着业内关注度的上升和社区不断的贡献,目前已经一步步成长为一套全面的交易程序开发框架。如官网所说,该框架侧重的是交易模块,回测模块并未支持。 能力有限,如果对相关框架感兴趣的话,就详看相关的链接吧。个人期望的是以RQAlpha为主搭建回测框架,以雪球或wind为主搭建模拟框架,用easy系列进行交易。