Quant 应该学习哪些 Python 知识?

论坛 期权论坛 期权     
蕈千往   2018-10-14 16:50   13178   8
RT
分享到 :
0 人收藏

8 个回复

倒序浏览
2#
唐超斌  1级新秀 | 2018-10-14 16:50:25 发帖IP地址来自
数据分析的python软件包不能算是严格的Python知识吧?严格来说,熟练使用那些软件包更多的还是依赖于金融市场,数理统计方面的知识,因为软件包的API通常都是这些领域知识的术语。

作为一个quant, 这个问题(一个这时候的quant应该学习哪些Python知识)的必要性在于,Python在这个领域真的是很火,一句不过分的话说“华尔街以前运行在Excel上,今后会运行在Python上” (当然技术上来讲,这并非事实,要说这个可能性的基础,从编程语言上来讲,还得是C/C++,这里的说法更多是体现在Python语言作为一种最接近用户层面的语言的流行度而来的, 同时即便从这个意义上来讲,现在流行的还有R, Matlab, Q(在一些知名银行很流行)等)。

以熟练掌握Python为目标,可以这样来关注Python:

  • Python是一门什么编程语言,它的显著优势和劣势分别是什么
  • Python编程环境的快速搭建(包括包管理(现在pip正在被标准化),编辑器,以及调试工具)
  • Python最被广泛认同的编码规范和最佳实践是什么 (e.g., ('a' + 'b') VS. ''.join(['a', 'b'], 这一点被很多初学者所忽略(“为什么不呢?反正我的代码运行正确了。”),但是如果学习者最初花多一点时间来回答这个问题(“虽然有多种选择,但是哪种选择在这个时候最合适”),或者说建立起来这样一种思考方式,你将很快的超越自己,成为别人眼中的专家。)
  • Python内建的主要的数据类型(int, long, str, tuple, list, dict, heapq, deque - 内建的标准库中并不包含像C++里面那样丰富的数据结构,Search Tree, Binary Search Tree, AVL/Splay/Red Black Tree, Graph等, 不过这些非线性的数据结构都可以在PyPI中找到),以及它们的常用API(这也正是Python的闪光点之一,即最初的编程效率的来源)。
  • Python的常用标准库(Python拥有非常易用和功能完备的标准库,使得Python在安装之后就能应付大量问题,如字符处理,文件系统,HTTP, 常见数据文件处理等。语言的维护者早期应该是希望赋予Python以明朗的模块组织结构,对于某类具体问题都存在一个明确的甚至是唯一的模块,但是随着这些年Python的流行,第三方包的大量增加,这种初衷现在面临不少挑战。直观的结果是,在Python 2.X的版本里,你会找到像urllib2这样命名的模块。现在的Python 3所作出的众多努力中就包括对这些模块组织上的歧义进行整理。总的来说,用户仍然还是可以迅速的回答“我该使用哪个模块”这个通常需要不少经验的问题。)
  • Python的面向对象范式怎么使用(如何在此理解上可靠的实现封装,重用,继承,覆盖)
  • Python在处理网络编程上的常见方案,常用标准包及第三方包(这本身是一个丰富的话题,同时也几乎不可避免,熟练掌握这个话题需要多年的经验,深层次的理解更需要系统的计算机科学知识,但是你可以从其中某一个具体的方案开始。Python内建标准包提供几乎所有层次的网络编程术语,你可以工作在从IP到应用的所有层面。)
  • Python在处理CPU密集型运算时候采用的流行解决方案,以及它们的工作原理大致是什么(这个理解可以帮助你以不变应万变的从众多第三方方案中选择合适的候选者。流行的方案一般是通过Python  C/C++/Fortran互操作,可能会使用一些元编程语言(比如Cython)来进行language translation/generation,也有可能直接从C/C++/Fortran编写的软件中来生成二进制编程界面或者应用编程界面(取决于生成的过程是利用二进制文件(.lib, .so)还是源文件),甚至更新的尝试会利用到一个多阶段的源代码处理管道,从Python源代码,中间C/C++代码,再到LLVM将Python代码(目前比较成功的方案似乎支持到Python的一个理想子集)实时生成对应的机器码。理解这一原理将帮助你克服Python在CPU密集运算时所遇到的瓶颈,同时我认为如果你将为你所在的部门构建一个基于Python的数据分析平台(几个华尔街的投行有在做这件事情),理解这个是至关重要的。)

(注: 我和很多quant一起工作,我的主要工作之一是响应他们在使用Python的时候遇到的各类问题。)
3#
Kai L  3级会员 | 2018-10-14 16:50:26 发帖IP地址来自
谢邀,blpapi
4#
李爽爽  1级新秀 | 2018-10-14 16:50:28 发帖IP地址来自
推荐一门coursera的公开课 https://class.coursera.org/course/compinvesting1
佐治亚理工的公开课,主要介绍了qstk软件包, http://wiki.quantsoftware.org/index.php?title=QuantSoftware_ToolKit#Documentation

目前正在学习中。
5#
天才小笨笨  3级会员 | 2018-10-14 16:50:29 发帖IP地址来自
python相关的库/项目/数据库里,投入产出性价比在第一梯度的有numpy,pandas,vn.py;性价比第二梯度有statsmodel,scipy,pyqt,matplotlib,re,mongodb,SQL,tushare;性价比第三梯度的有zmq,pyqtgraph,redis。

建议从vn.py和pandas开始入手。
6#
BugCreater  4级常客 | 2018-10-14 16:50:30 发帖IP地址来自
我没做过量化交易,但是我隔壁的哥们在做这方面的东西,他用的R语言,用到的技术嘛,我也打听到了,非实战人员,说的不对别打我。

1.说到量化交易,肯定会用到数学,统计知识,那numpy这个包就不可少,当然像scipy也是可以用到的,还有一些你接收的网上很多公司提供的接口数据喜欢用pandas包装,所以pandas你也需要去学习一下,最近又知道一个叫numba的包也不错。

2.刚刚提到说接收网上很多公司的接口,那如果自己想做一些数据保存,你可以存到excel 中,那这时 xlrd,xlwt就必不可少了,当然csv你也需要了解。有时公司又来个新的方案,比如新闻数据的分析什么的,他们都放在非关系型数据库里让你使用,此时你需要pymongo进行读取(我司是这么放的),当然你也可以把你每天的数据存入到mongodb中。

3.然后说了这么多还没到怎么写量化算法,说到算法包,我想你应该要记住一个牛逼的scikit-learn的包,各种碉堡的算法一应俱全,省的你再去造轮子。

4.说了这么多,想给老大交差,说你的这个策略回测结果咋咋牛逼。你总不能拿个数据库,excel表给老大看吧。所以此时你需要用上matplotlib这个可视化的包,当然了seaborn这个也不错,底层是matplotlib。

可能会有遗漏,比如量化方面的专门的包,这个我没接触,所以也不是很清楚。
7#
优矿量化实验室  4级常客 | 2018-10-14 16:50:32 发帖IP地址来自
楼上大牛都写的很系统很完备了...
我来推个课:量化精英养成计划
目前在开Python基础课,Pandas、Numpy、Scipy等等..
2018.6.11更新:
课程报名人数目前已突破6000+,微信群内讨论热烈,学霸Hayden 还制作了脑图,该学哪些Python知识一目了然...




8#
邹锐  4级常客 | 2018-10-14 16:50:33 发帖IP地址来自
和python相关的就是pandas,numpy,以及talib这套写好的指标库,也可以自己写策略,或者对talib进行扩充,反正我就不太习惯talib.另外我觉得市面上还缺乏图形模式识别的库,比如headshoulder, breakout resistence line等等, 最后题外话,关键的是开发策略。工具什么的都在其次。我很好奇世上真有能用的全自动化策略?
9#
照骗  1级新秀 | 2018-10-14 16:50:34 发帖IP地址来自
python我学过最简单的计算机语言了
glue language
加油 好好学了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP