针对Quant的Python快速入门指南
作者:用Python的交易员 (原创文章,转载请注明出处)
最近有越来越多的朋友在知乎或者QQ上问我如何学习入门Python,就目前需求来看,我需要写这么一篇指南。
针对整个vn.py框架的学习,整体上有两条不同的路线:
- 有经验的Quant学习如何使用Python语言来做策略和交易程序的开发(编程语言是学习重点)
- 有经验的程序员学习如何将自己的编程知识和经验应用在量化研究和策略开发上(金融量化是学习重点)
我自己本身是金融工程硕士,毕业后也是从Quant入行,所以这篇指南主要针对的是第一条路线,欢迎社区里从第二条路线入行的朋友写写自己的经历。
以下内容建议按照顺序一步步走,不要跳步、不要偷懒,多敲代码、多做调试,英语不好的就当顺道提高阅读水平吧。
Learn Python The Hard Way
链接:http://learnpythonthehardway.org/book/
这套教程是我进入Python世界大门的敲门砖,一共50个Exercise包含了一个Python新手需要知道的所有基础:
- 如何搭建Python环境
- 变量、注释、运算符
- 输入、输出
- 函数
- 数据结构:字典、列表、集合
- OO:类和对象
- 控制语句:条件、循环
- Python的模块
- 构建一个小型项目
- 等等
学习方法很简单:照着Introduction章节中的要求,不用IDE只用编辑器(文中推荐的是Notepad++,个人觉得Sublime Text也不错),一行一行地敲代码,敲完后用最原始的方法来运行,根据Python解释器的异常输出来做调试。
50个Exercise全部完成后,你基本就掌握Python的运行和调试方法以及基础语法了。
利用Python进行数据分析
链接:亚马逊购买页面
这本书的作者Wes McKinney在美国著名的量化对冲基金AQR工作时开发了Python在数据分析领域的主要工具pandas。这本书最大的特点之一是作者用非常多的案例来介绍numpy、matplotlib、pandas和ipython在实践中的使用方法,读者实际操作过一次后立即就可以把相关的知识应用在自己其他相关的项目上。
网上有不少建议新手直接从某个库的用户手册开始学习,我个人不赞同这种方法。原因是大部分库的用户手册主要是介绍其API的使用方法,内容写得太过抽象,对于本来就没有太多经验的新手而言就跟死记硬背英文单词差不多,看了挺久后往往还不知道如何把代码系统化的整合起来解决自己的问题。
Python Cookbook
链接:京东购买页面
有了以上两段学习的基础后,可以把Cookbook这本著名的“烹饪秘籍”买了放在书橱里以备不时之需(没完成以上两段买了也是浪费看不懂)。既然叫秘籍,内容难度高是必然的,整本书根据用户要使用Python解决的具体问题来区分章节,请了每个领域中的大牛分享了一些经验和代码。
和前两本不同的是这本书的内容不用全部掌握,可以先大概扫一遍知道每章有什么内容,后面做开发遇到相应问题时再来翻书研究。另外这本书里很多技术属于Python的“奇技淫巧”级别,如果能全部掌握对于编程水平会有非常大的提高。
PyQt4入门(ZetCode)
链接:ZetCode
PyQt4是目前Python上最为主流的GUI开发库,底层运行的是C++开发的Qt代码,上层使用Python封装的API来实现调用,运行效率足以满足开发量化交易实时监控界面的需求。
对于Python新手而言,学习PyQt4除了开发GUI外,更重要的是吸收PyQt4代码中的面向对象(OO)的设计模式相关的知识。简单的量化策略可以用过程式编程的方法来实现(如轮询价格、突破100买、跌破90卖),但是对于复杂的量化策略(如期权波动率套利、跨多市场套利等)就需要使用OO的设计模式来解耦不同功能的模块(信号生成、委托下单、风险管理),提高整个代码的健壮性和可维护性。PyQt4的OO编程风格非常简洁和清爽,掌握后用在其他的项目开发上可以大幅提高程序的编码质量。
另外推荐这本书给想要更深入学习PyQt4的朋友:Introduction to Python Programming and Developing GUI Applications with PyQT
QuantStart
链接:https://www.quantstart.com/
应该是目前全球Python量化交易领域访问量最大和内容最丰富的网站,不加之一是因为据我所知还没有更大的,而且我还喜欢经常在网上找Python量化的资料,应该算得上经验丰富。
QuantStart上的内容整体难度较高,都是直接使用Python来处理量化交易项目的知识经验和代码实例,没有老老实实学完前几个部分大概率是会看得云里雾里。
总结下网站文章的大体分类:
- 买方(P宗):
- 算法交易
- 统计建模和机器学习
- 量化策略研究
- 时间序列建模
- 卖方(Q宗):
- 二叉树模型
- 随机积分
- 偏微分方程PDE
- 代码示例:
- C++
- Python
- 外汇交易平台开发
- 统计套利平台开发
- Quant职业生涯
- 职业生涯建议
- 读书笔记
另外网站的作者也写了两本书Successful Algorithmic Trading和Advanced Algorithmic Trading,比起另外一个著名的量化博客主E.P. Chan写的两本书质量要好非常多,推荐购买。
其他学习内容
CodeCombat链接:http://codecombat.com/
写Python代码来玩RPG游戏,游戏设计的非常好,毫无基础的人也能逐步掌握Python编程(本来就是设计给孩子的),同时一些关卡对于程序员的逻辑思维能力有很好的训练。游戏难度随着关卡逐步增强,到后期还是有相当的挑战度,可能导致学习者沉迷其中,入坑前请谨慎三思……
Flask Web开发:基于Python的Web应用开发实战
链接:亚马逊购买页面
Flask是Python目前在Web开发领域人气最高的框架之一(另一个是Django),采用微框架的设计哲学,代码短小精悍,同时还有着非常好的扩展性。整本书的内容就是教会读者如何一步步从0开始搭建一个自己的博客,中间涉及的设计模式、数据库ORM、APP部署等知识在量化领域也都有相应的应用。
廖雪峰的Python教程
链接:http://www.liaoxuefeng.com/
可以作为LPTHW的中文版替代,涉及的内容相对更加丰富也带有大量的代码实例,不过整个教程中对于Python一些底层特性的讲解较多,更加适合完成了前几个阶段的学习后用来作为二次的知识巩固和提高,初学者建议还是从LPTHW开始入门。
知乎
知乎和豆瓣一样,都是国内使用Python开发的大型项目,其员工对于Python的讨论氛围非常浓厚。同时作为一个以问答为主的社区,知乎上的Python问题下汇聚了很多国内Python业界的大牛级高手的回答和文章,上下班挤地铁、买早饭排队、晚上睡不着的时候随手翻一翻,既解决了无聊又能吸收很多碎片化的知识。
vn.py项目
最后,请允许我厚着脸皮推荐一下自己的开源项目…… #^_^#
针对Quant的Python快速入门指南的更多相关文章
- web前端基础知识及快速入门指南
web前端基础知识及快速入门指南 做前端开发有几个月了,虽然说是几个月,但是中间断断续续的上课.考试以及其它杂七杂八的事情,到现在居然一直感觉自己虽然很多前端的知识很眼熟,却也感觉自己貌似也知识在门口 ...
- h5py快速入门指南
h5py是Python语言用来操作HDF5的模块.下面的文章主要介绍h5py的快速入门指南,翻译自h5py的官方文档:http://docs.h5py.org/en/latest/quick.html ...
- Python快速入门
Python快速入门 一.基础概要 命名:h.py Linux命令行运行:python h.py 注释.数字.字符串: 基本类型只有数字与字符串 #python注释是这样写的 ''' 当然也可以这样 ...
- [转] Spark快速入门指南 – Spark安装与基础使用
[From] https://blog.csdn.net/w405722907/article/details/77943331 Spark快速入门指南 – Spark安装与基础使用 2017年09月 ...
- [转] Clojure 快速入门指南:1/3
[From] http://huangz.iteye.com/blog/1325228 导读 本文的目标是为熟悉 Ruby.Python或者其他类似语言.并对 Lisp 或者函数式编程有一定程度了解的 ...
- SpringBoot2.x快速入门指南(一)
SpringBoot2.x快速入门指南(一) 准备工作 IDE: IntelliJ IDEA 2020.3 Java环境 jdk1.8 在官网快速创建SpringBoot项目 下面开始进入正题: 进入 ...
- KNIME快速入门指南
一.介绍 KNIME Analytics Platform是用于创建数据科学应用程序和服务的开源软件.KNIME直观,开放,不断整合新的开发,使人们可以理解数据,设计数据科学工作流程和可重用组件. ...
- Python快速入门PDF高清完整版免费下载|百度云盘
百度云盘:Python快速入门PDF高清完整版免费下载 提取码:w5y8 内容简介 这是一本Python快速入门书,基于Python 3.6编写.本书分为4部分,第一部分讲解Python的基础知识,对 ...
- TensorFlow 2.0 快速入门指南 | iBooker·ApacheCN
原文:TensorFlow 2.0 Quick Start Guide 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活 ...
随机推荐
- chrome 插件地址 知乎
chrome运行内存过大:https://www.zhihu.com/question/20061319 chrome扩展程序:https://www.zhihu.com/question/19594 ...
- Oracle复习(有记录才能沉淀.......)
一.Oracle准备工作 1.安装Oracle Oracle数据库产品是免费的,我们可以从Oracle的官方网站(http://www.oracle.com)下载到程序安装包,Oracle在Windo ...
- 知乎日报 API 分析
声明 下面全部 API 均由 知乎(Zhihu.Inc) 提供,本人採取非正常手段获取. 获取与共享之行为或有侵犯知乎权益的嫌疑.若被告知需停止共享与使用.本人会及时删除此页面与整个项目. 请您暸解相 ...
- 02 观察 mysql 周期性变化
()首先写一个shell 脚本 vim mysql_status.sh 脚本如下: #!bin/bash while true do mysqladmin -urooy ext|awk '/Queri ...
- python 2.7安装某些包出现错误:"libxml/xmlversion.h:没有那个文件或目录"
解决办法: 1. ubuntu系统: 首先: apt-get install libxml2-dev sudo ln -s /usr/include/libxml2/libxml /usr/inclu ...
- web 开发之nginx--- 阿里云部署nginx
http://blog.csdn.net/zhangjingyangguang/article/details/7441268 http://www.cnblogs.com/languoliang/a ...
- 【BZOJ】1610: [Usaco2008 Feb]Line连线游戏(几何)
http://www.lydsy.com/JudgeOnline/problem.php?id=1610 两种做法,一种计算几何,一种解析几何,但是计算几何的复杂度远远搞出解析集合(虽然精度最高) 计 ...
- 【BZOJ】1647: [Usaco2007 Open]Fliptile 翻格子游戏(暴力)
http://www.lydsy.com/JudgeOnline/problem.php?id=1647 自己太弱...看题解.. 竟然是枚举第一行的放法,,,因为一定要全部变0,所以将前一行1的在这 ...
- redis是如何存储对象和集合的
在项目中,缓存以及mq消息队列可以说是不可或缺的2个重要技术.前者主要是为了减轻数据库压力,大幅度提升性能.后者主要是为了提高用户的体验度,我理解的是再后端做的一个ajax请求(异步),并且像ribb ...
- CListBox自动换行显示
需要在ListBox控件中显示一些信息.为方便查看,不使用水平滚动条.当要输出的字符串占用的宽度超过ListBox的宽度时,截断字符串,剩余的在下一行显示. 1. 计算ListBox所占的宽度,用Ge ...