用Python怎么做量化投资

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

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

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

一、数据

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

如何得到数据?

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

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

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

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

如何存储数据?

Mysql

如何预处理数据?

空值处理:利用DataFrame的fillna()函数,将空值(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 27教程,适合于没有程序基础的人来先看,涉及到python的基本数据类型、循环语句、条件语句、函数、类与对象、文件读写等很重要的基础知识。

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

pandas文档

statsmodels文档

scipy和numpy文档

matplotlib文档

TuShare文档

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

三、回测框架和网站

两个开源的回测框架

PyAlgoTrade - Algorithmic Trading

Zipline, a Pythonic Algorithmic Trading Library

Python作为一门胶水语言,第三方库众多,下面我简单介绍几个好用的Python库:

tensorflow

这是谷歌非常著名的一个开源机器学习框架,在业界非常受欢迎,可以灵活、快速的构建大规模机器学习应用(如神经网络等),性能和可移植性都非常不错,支持GPU并行计算,如果你对机器学习比较感兴趣,也想深入了解一下的话,可以学习一下这个框架,非常不错:

pandas

如果你对数据分析比较感兴趣,那么pandas就是一个非常不错的选择,专门为数据分析而建,内置的函数和方法可以快速处理Excel,CSV等文件,而且提供了实时分析功能,代码量更少,使用起来也更方便,对于数据处理来说,是一个非常不错的分析工具:

matplotlib

这是Python的一个数据可视化库,可以快速制作我们常见的图表,如柱状图、饼状图、散点图等,当然,也不仅仅限于这些,还有很多,如果你想画出更多美丽的图表,可以考虑学习一下这个库,非常值得学习,当然,seaborn,pyecharts等这些可视化库也非常不错:

tushare

如果你对金融财经比较感兴趣,想快速获取股票等行情数据,也不想编写复杂的处理代码,那么tushare就是一个非常不错的选择,自动整合了国内大部分金融财经数据,完成了数据从采集、清洗和存储的全过程,只需简单的几行代码就可以实时快速获取到你所想要的数据,免费且开源:

PyQt

这是Python的一个GUI开发库,如果你想快速创建一个桌面GUI程序,想直接拖拽控件布局界面的话,那么PyQt就是一个非常不错的选择,基于Qt的QtDesigner设计工具,你可以直接拖拽Qt大量的控件快速构建出你自己的桌面应用,简单而又快捷:

Kivy

如果你想利用Python开发一个安卓应用,那么kivy就是一个非常不错的选择,这是Python的一个开源、跨平台的GUI库,只需要编写一套代码,即可运行在大部分桌面及移动平台上,包括winsows,linux,ios,android等,非常不错:

scrapy

这是Python的一个爬虫框架,在也就非常受欢迎,如果你想快速的定制自己的爬虫程序,又不想重复的造轮子的话,可以学习一下这个库,只需要添加少量的代码,就可启动属于自己的一个爬虫应用,非常方便:

django

这是一个流行的PythonWeb框架,如果你想快速构建一个自己的web应用,那么这个框架就非常值得学习,成熟稳重,基于MVC模式,使用起来非常方便,当然,也有轻量级的web框架,如flask,tornado等,也都非常不错:

pygame

如果你想快速开发一个小型游戏,又不想低级语言的束缚,可以考虑学习一下这个库,非常简单,只需要少量的代码便可构建一个游戏应用,当然,它也是一个非常不错的GUI库,对于桌面开发来说,也是一个不错的选择:

you-get

这是Python的一个视频、音频下载库,如果你想免费快速下载优酷、B站、腾讯等网站的视频,安装这个库后,只需要简单的一行命令就可直接下载,非常方便,而且还可以在线观看,查看视频文件格式及清晰度等,当然,也可直接下载:

就介绍这10个不错的Python库吧,对于日常学习开发来说,非常不错,当然,还有许多其他好用的Python库,这个可以到网上搜索一下,非常多,也欢迎大家留言补充。

1WEB开发

在国内,豆瓣一开始就使用Python作为web开发基础语言,知乎的整个架构也是基于Python语言,这使得web开发这块在国内发展的很不错。

尽管目前Python并不是做Web开发的首选,但一直都占有不可忽视的一席。Python中有各类Web框架,无论是简单而可以自由搭配的微框架还是全功能的大型MVC框架都一应俱全,这在需要敏捷开发的Web项目中也是十分具有优势的。广泛使用(或曾经广泛使用)Python提供的大型Web服务包括知乎、豆瓣、Dropbox等网站。加之Python本身的“胶水”特性,很容易实现在需要大规模性能级计算时整合其它语言,同时保留Web开发时的轻便快捷。

除此之外,Python中还有大量“开箱即用”的模块,用于与各种其它网站的对接等相关功能。如果希望开发个微信公众号相关功能,wechat-sdk/weixin-python等包,能够使你几乎完全不用管文档中提及的各种服务器交互细节,专注于功能实现即能完成开发。

目前,国内的Python web开发主要有两个技术栈:

(1)Django

Django是一个高级的敏捷web开发框架,如果学会了,撸一个网站很快。当然如果纯粹比撸网站的速度,基于ruby的Ruby on rails显然更快,但是Django有一个优势就是性能优秀,更适合国内网站的应用场景。国外的著名社区Pinterest早期也是基于Django开发的,承受了用户快速增长的冲击。所以说如果你想快速开发一个网站,还能兼顾APP客户端的API调用需求,Django是可以信赖的。

(2)Flask

相对于Django,Flask则是一个轻量级的web框架,Flask的最大的优势是性能优越,适合配合手机客户端开发后台API服务。国内基于Flask的Restful API服务这快很火,也是需求最大的。知名的比如百度、网易、小米、陌陌等等很多公司都有基于Flask的应用部署。当然,如果你想做一个传统的web网站,还是建议使用Django,Flask的优势是后端、API,不适合构建全功能网站。

2网络爬虫

网络爬虫是Python比较常用的一个场景,国际上,google在早期大量地使用Python语言作为网络爬虫的基础,带动了整个Python语言的应用发展。以前国内很多人用采集器搜刮网上的内容,现在用Python收集网上的信息比以前容易很多了。

Python在这个方面有许多工具上的积累,无论是用于模拟>

3人工智能与机器学习

人工智能是现在非常火的一个方向,AI热潮让Python语言的未来充满了无限的潜力。现在释放出来的几个非常有影响力的AI框架,大多是Python的实现,为什么呢?

因为Python足够动态、具有足够性能,这是AI技术所需要的技术特点。比如基于Python的深度学习库、深度学习方向、机器学习方向、自然语言处理方向的一些网站基本都是通过Python来实现的。机器学习,尤其是现在火爆的深度学习,其工具框架大都提供了Python接口。Python在科学计算领域一直有着较好的声誉,其简洁清晰的语法以及丰富的计算工具,深受此领域开发者喜爱。

早在深度学习以及Tensorflow等框架流行之前,Python中即有scikit-learn,能够很方便地完成几乎所有机器学习模型,从经典数据集下载到构建模型只需要简单的几行代码。配合Pandas、matplotlib等工具,能很简单地进行调整。

而Tensorflow、PyTorch、MXNet、Keras等深度学习框架更是极大地拓展了机器学习的可能。使用Keras编写一个手写数字识别的深度学习网络仅仅需要寥寥数十行代码,即可借助底层实现,方便地调用包括GPU在内的大量资源完成工作。

值得一提的是,无论什么框架,Python只是作为前端描述用的语言,实际计算则是通过底层的C/C++实现。由于Python能很方便地引入和使用C/C++项目和库,从而实现功能和性能上的扩展,这样的大规模计算中,让开发者更关注逻辑于数据本身,而从内存分配等繁杂工作中解放出来,是Python被广泛应用到机器学习领域的重要原因。

4数据分析处理

数据分析处理方面,Python有很完备的生态环境。“大数据”分析中涉及到的分布式计算、数据可视化、数据库 *** 作等,Python中都有成熟的模块可以选择完成其功能。对于Hadoop-MapReduce和Spark,都可以直接使用Python完成计算逻辑。这无论对于数据科学家还是对于数据工程师而言都是十分便利的。

5服务器运维及其它小工具

Python对于服务器运维而言也有十分重要的用途。由于目前几乎所有Linux发行版中都自带了Python解释器,使用Python脚本进行批量化的文件部署和运行调整都成了Linux服务器上很不错的选择。Python中也包含许多方便的工具,从调控ssh/sftp用的paramiko,到监控服务用的supervisor,再到bazel等构建工具,甚至conan等用于C++的包管理工具,Python提供了全方位的工具集合,而在这基础上,结合Web,开发方便运维的工具会变得十分简单。

更有意思的是,Python社区的开发者们还制作了诸如itchat这样的开发工具包,你大可以用微信来管理服务器或是各种服务的运行。想想看,一个微信机器人,能够在出现异常时,又或者每天固定时刻汇报服务器或是程序运行情况,甚至包含用matplotlib/seaborn绘制的图表,一目了然,而你对它发上简简单单一句话,即可完成对服务器的调整。

想学的童鞋可以加企鹅裙前三位是227,中间是435,后三位是450可以 视频资料免费分享交流经验和讲解行情

6桌面程序

Python也可以用于桌面软件开发(如sublime text等),甚至移动端开发(参看kivy)。Python简洁方便,各种工具包齐全的环境,能大幅度减少开发者的负担。著名的UI框架QT有Python语言的实现版本PyQT。Python简单易用的特性加上QT的优雅,可以很轻松的开发界面复杂的桌面程序,并且能轻松实现跨平台特性。

7多媒体应用

可以用Python里面的PIL、Piddle、ReportLab 等模块对图象、声音、视频、动画等进行处理,还可以用Python生成动态图表和统计分析图表。另外,还可以利用PyOpenGl模块非常快速有效的编写出三维场景。

python的用途:

Python的优势有必要作为第一步去了解,Python作为面向对象的脚本语言,优势就是数据处理和挖掘,这也注定了它和AI、互联网技术的紧密联系。

网络爬虫。顾名思义,从互联网上爬取信息的脚本,主要由urllib、requests等库编写,实用性很强,小编就曾写过爬取5w数据量的爬虫。在大数据风靡的时代,爬虫绝对是新秀。

人工智能。AI使Python一战成名,AI的实现可以通过tensorflow库。神经网络的核心在于激活函数、损失函数和数据,数据可以通过爬虫获得。训练时大量的数据运算又是Python的show time。

扩展资料:

Python开发人员尽量避开不成熟或者不重要的优化。一些针对非重要部位的加快运行速度的补丁通常不会被合并到Python内。在某些对运行速度要求很高的情况,Python设计师倾向于使用JIT技术,或者用使用C/C++语言改写这部分程序。可用的JIT技术是PyPy。

Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。

Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools, itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具。

参考资料来源:百度百科-Python

你指的 API 是给什么用的? 如果是普通的 Restful api 可以看看这两个 django 和 django-restful flask 和 flask-restful 需要异步高性能的框架,可以考虑 tornado

# -- coding:utf-8 --

import numpy as np

import pandas as pd

import matplotlibpyplot as plt

from matplotlibdates import DateFormatter, WeekdayLocator, DayLocator, MONDAY

from matplotlibfinance import quotes_historical_yahoo_ohlc, candlestick_ohlc

#从雅虎财经获取历史行情

date1 = (2017, 1, 1)

date2 = (2017, 4, 30)

quotes = quotes_historical_yahoo_ohlc('600000ss', date1, date2)

if len(quotes) == 0:

    raise SystemExit

#创建一个子图

fig, ax = pltsubplots()

figsubplots_adjust(bottom=02)

#设置主要刻度和显示格式

mondays = WeekdayLocator(MONDAY)

mondaysFormatter = DateFormatter('%Y-%m-%d')

axxaxisset_major_locator(mondays)

axxaxisset_major_formatter(mondaysFormatter)

#设置次要刻度和显示格式

alldays = DayLocator()

alldaysFormatter = DateFormatter('%d')

axxaxisset_minor_locator(alldays)

#axxaxisset_minor_formatter(alldaysFormatter)

#设置x轴为日期

axxaxis_date()

axautoscale_view()

#X轴刻度文字倾斜45度

pltsetp(pltgca()get_xticklabels(), rotation=45, horizontalalignment='right')

candlestick_ohlc(ax, quotes, width=06, colorup='r', colordown='g')

axgrid(True)

plttitle('600000')

pltshow()

以上就是关于用Python怎么做量化投资全部的内容,包括:用Python怎么做量化投资、有哪些好用的Python库、学python可以做什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9380035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存