针对Quant的Python快速入门指南

最近有越来越多的朋友在知乎或者QQ上问我如何学习入门Python,就目前需求来看,我需要写这么一篇指南。

针对整个vn.py框架的学习,整体上有两条不同的路线:

1. 有经验的Quant学习如何使用Python语言来做策略和交易程序的开发(编程语言是学习重点)

2. 有经验的程序员学习如何将自己的编程知识和经验应用在量化研究和策略开发上(金融量化是学习重点)

我自己本身是金融工程硕士,毕业后也是从Quant入行,所以这篇指南主要针对的是第一条路线,欢迎社区里从第二条路线入行的朋友写写自己的经历。

以下内容建议按照顺序一步步走,不要跳步、不要偷懒,多敲代码、多做调试,英语不好的就当顺道提高阅读水平吧。

python教程

1. Learn Python The Hard Way

链接:learnpythonthehardway.org/book/

这套教程是我进入Python世界大门的敲门砖,一共50个Exercise包含了一个Python新手需要知道的所有基础:

  • 如何搭建Python环境
  • 变量、注释、运算符
  • 输入、输出
  • 函数
  • 数据结构:字典、列表、集合
  • OO:类和对象
  • 控制语句:条件、循环
  • Python的模块
  • 构建一个小型项目
  • 等。

学习方法很简单:照着Introduction章节中的要求,不用IDE只用编辑器(文中推荐的是Notepad++,个人觉得Sublime Text也不错),一行一行地敲代码,敲完后用最原始的方法来运行,根据Python解释器的异常输出来做调试。50个Exercise全部完成后,你基本就掌握Python的运行和调试方法以及基础语法了。

2. 利用Python进行数据分析

链接:https://item.jd.com/11352441.html

这本书的作者Wes McKinney在美国著名的量化对冲基金AQR工作时开发了Python在数据分析领域的主要工具pandas。这本书最大的特点之一是作者用非常多的案例来介绍numpy、matplotlib、pandas和ipython在实践中的使用方法,读者实际操作过一次后立即就可以把相关的知识应用在自己其他相关的项目上。

网上有不少建议新手直接从某个库的用户手册开始学习,我个人不赞同这种方法。原因是大部分库的用户手册主要是介绍其API的使用方法,内容写得太过抽象,对于本来就没有太多经验的新手而言就跟死记硬背英文单词差不多,看了挺久后往往还不知道如何把代码系统化的整合起来解决自己的问题。

3. Python Cookbook

链接:http://item.jd.com/11681561.html

有了以上两段学习的基础后,可以把cookbook这本著名的“烹饪秘籍”买了放在书橱里以备不时之需(没完成以上两段买了也是浪费看不懂)。既然叫秘籍,内容难度高是必然的,整本书根据用户要使用Python解决的具体问题来区分章节,请了每个领域中的大牛分享了一些经验和代码。和前两本不同的是这本书的内容不用全部掌握,可以先大概扫一遍知道每章有什么内容,后面做开发遇到相应问题时再来翻书研究。另外这本书里很多技术属于Python的“奇技淫巧”级别,如果能全部掌握对于编程水平会有非常大的提高。

4. PyQt4入门(ZetCode)

链接:zetcode.com/gui/pyqt4/

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》

链接:https://item.jd.com/19173556.html

金融量化教程

QuantStart

链接:https://www.quantstart.com/

应该是目前全球Python量化交易领域访问量最大和内容最丰富的网站,不加之一是因为据我所知还没有更大的,而且我还喜欢经常在网上找Python量化的资料,应该算得上经验丰富。

QuantStart上的内容整体难度较高,都是直接使用Python来处理量化交易项目的知识经验和代码实例,没有老老实实学完前几个部分大概率是会看得云里雾里。

总结下网站文章的大体分类:

  • 买方(P宗)

算法交易

统计建模和机器学习

量化策略研究

时间序列建模

  • 卖方(Q宗)

二叉树模型

随机积分

偏微分方程PDE

  • 代码示例

C++

Python

外汇交易平台开发

统计套利平台开发

  • Quant职业生涯

职业生涯建议

读书笔记

另外网站的作者也写了两本书《Successful Algorithmic Trading》和《Advanced Algorithmic Trading》,比起另外一个著名的量化博客主E.P. Chan写的两本书质量要好非常多,推荐购买。

其他学习内容

1. CodeCombat

链接:https://codecombat.com/

写Python代码来玩RPG游戏,游戏设计的非常好,毫无基础的人也能逐步掌握Python编程(本来就是设计给孩子的),同时一些关卡对于程序员的逻辑思维能力有很好的训练。游戏难度随着关卡逐步增强,到后期还是有相当的挑战度,可能导致学习者沉迷其中,入坑前请谨慎三思……

2. Flask Web开发:基于Python的Web应用开发实战

链接:https://item.jd.com/11594082.html

Flask是Python目前在Web开发领域人气最高的框架之一(另一个是Django),采用微框架的设计哲学,代码短小精悍,同时还有着非常好的扩展性。整本书的内容就是教会读者如何一步步从0开始搭建一个自己的博客,中间涉及的设计模式、数据库ORM、APP部署等知识在量化领域也都有相应的应用。

3. 廖雪峰的Python教程

链接:https://www.liaoxuefeng.com/

可以作为LPTHW的中文版替代,涉及的内容相对更加丰富也带有大量的代码实例,不过整个教程中对于Python一些底层特性的讲解较多,更加适合完成了前几个阶段的学习后用来作为二次的知识巩固和提高,初学者建议还是从LPTHW开始入门。

4. 知乎

链接:https://www.zhihu.com

知乎和豆瓣一样,都是国内使用Python开发的大型项目,其员工对于Python的讨论氛围非常浓厚。同时作为一个以问答为主的社区,知乎上的Python问题下汇聚了很多国内Python业界的大牛级高手的回答和文章,上下班挤地铁、买早饭排队、晚上睡不着的时候随手翻一翻,既解决了无聊又能吸收很多碎片化的知识。

vn.py项目

项目官网:http://www.vnpy.org

论坛地址:www.vnpie.com

知乎专栏:https://zhuanlan.zhihu.com/vn-py

基于python的开源交易平台开发框架。截止目前,vn.py项目在Github上的Star已经达到5563,量化交易类开源项目第1,量化类项目第3(1、2依旧分别是Zipline和TuShare)。

Developed by Traders,

for Traders

原文发布于微信公众号 - 维恩的派VNPIE(vn-pie)

原文发表时间:2018-05-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Sign

太吾绘卷多分支选择的一些代码实现方式

最近有一款国产游戏『太吾绘卷』很火。这个游戏怎么归类比较麻烦,从整体上来说,这是款『文字冒险类』游戏,而它的文案数值以及系统水平很高。

34920
来自专栏AI科技大本营的专栏

CS 就业寒冬?这里有一份面试必备基础知识

作者 | 阿司匹林 2017 年国家统计局发布消息称,2016 年信息传输、软件和信息技术服务业的平均工资为 122478 元,首次打败金融业成为新霸主,是全...

50060
来自专栏老九学堂

【秘籍】程序员高薪面试技巧

面试就像高考,分数优异,不一定能进入好大学,面试亦是如此,能力强不一定能进入到自己心仪的公司,因为这个不仅和技术有关,还和自己的综合素质与临场发挥有关。今天老九...

35740
来自专栏马哥教育

学不好Python?我们分析看看正确的学习方法是什么-马哥教育

提起对Python的印象,除了全能之外恐怕就是简单易学了。很多人都在推荐新手学Python入门,毕竟语法简单、语句简洁,所谓“人生苦短我用Python”绝不是一...

40250
来自专栏包子铺里聊IT

跟花和尚学系统设计:System Design 101

谁是花和尚? 花和尚是一个定居西雅图的程序员,喜欢研究和总结System Design, 并传授给大家。花和尚在MITBBS一篇 "我的SystemDesign...

49260
来自专栏Vamei实验室

Python简史

Python是我喜欢的语言,简洁,优美,容易使用。前两天,我很激昂的向朋友宣传Python的好处。 听过之后,朋友问我:好吧,我承认Python不错,但它为什么...

24080
来自专栏Java学习网

精通型程序员的特点

你知道有能力胜任和精通之间的区别是什么吗? 这听起来像一个很难回答的问题,因为这两者似乎意味着同样的事情。但它们之间的微妙区别至关重要。 有能力胜任是指有足够的...

32760
来自专栏程序员的知识天地

优秀程序员的10条黄金法则!

这是一条非常值得遵循的伟大原则。我很习惯于回过头去检查自己写下的代码,重构那些被多次使用的部分。虽然在将一个长方法分解为若干个短方法时,会遇到一些困难。Ctrl...

11740
来自专栏企鹅号快讯

糟糕程序员和优秀程序员的区别?

壹 实验是本能 作为一个优秀的程序员,独立永远是你自己最重要的武器。在遇到困难的时候多问问自己为什么,多进行实验来进行测试,这远比你直接去问更牛叉的老大哥们好不...

23750
来自专栏java一日一条

关于烂代码的那些事(上)

最近写了不少代码,review了不少代码,也做了不少重构,总之是对着烂代码工作了几周。为了抒发一下这几周里好几次到达崩溃边缘的情绪,我决定写一篇文章谈一谈烂代码...

16420

扫码关注云+社区

领取腾讯云代金券