Quant 应该学习哪些 Python 知识

Quant&应该学习哪些&Python&知识?---zz
知乎搜索搜索
Quant 应该学习哪些 Python 知识?
按投票排序
.zm-item-answer"}" data-init="{"params":
{"url_token": , "pagesize": 50, "offset": 0}, "nodename":
"QuestionAnswerListV2"}" style="border-bottom-width: 1
border-bottom-style: border-bottom-color: rgb(238, 238,
399赞同反对,不会显示你的姓名
,期权 高频
、、&等人赞同
上知乎日报了,来更新点自己的Python知识体系,个人经验,欢迎拍砖。
-------------------------------------------------------------------------------------------------------------
谢青木资本龙哥邀!
答主更多应该算一个trader而不是quant(虽然对quant的一些知识也略懂),下面的答案可能更多是从一个交易员的角度来回答。
想在市场上赚钱,必须同时具备两样能力:
龙哥的答案已经覆盖了常用的库,这里就从研究的整体方向上来介绍下:
这部分是答主的主场了,主要分为两块:
1. 执行交易:对于绝大部分量化策略,都在一定程度上需要自动/半自动的下单功能。
2. 策略风控:同样一般需要自动或者半自动的风控功能.
具体需要掌握的知识:
模拟实盘交易的策略回测:将策略重新编写为可以基于数据回放(逐TICK/逐K线)的模式进行回测的程序,模拟实际交易情况,杜绝未来函数的可能性,实盘交易中使用完全相同的程序进行交易,保证实盘和回测的一致性。这块通常需要专门的框架或者程序,比如通联的优矿、掘金、vn.py框架中的vn.strategy等。
实盘交易接口:将想要下的单子通过交易接口发送到经纪商柜台,目前可以实盘直接使用的应该包括掘金(期货)、vn.py中的vn.lts(证券、期权)和vn.ctp(期货)。如果要使用其他的柜台需要自己封装,如恒生、金证等。
其他语言拓展:作为最有名的胶水语言之一,Python的拓展功能不用绝对是浪费。针对计算瓶颈可以使用cython拓展,针对API可以用boost.python和swig进行封装,调用matlab直接运行其中提供的特定算法,使用COM接口调用Excel自动生成每日交易记录和报表......
GUI程序的开发:相当数量的量化交易依旧需要交易员进行实时监控,除了在cmd中不断print一些数据外,更合理的方案是开发自己需要的GUI界面,重点推荐PyQt,比在C++中用Qt开发要来的快捷很多,底层运行的也是C++的代码,速度完全不用担心。一些有特别需求的人也可以考虑开发在浏览器中显示的界面,比如经常想用手机远程监控。
目前就想到这些,回头发现遗漏的再补充。
-----------------------------------------------------日更新----------------------------------------------
个人的Python知识体系:
期权目前国内的历史数据较少,所以整体上用万得的API就足以满足需求,做CTA策略研究会从MC导出csv格式的数据再读取到Python中,目前在研究通联的接口,原因无他:方便和性价比。
数据储存主要用MongoDB,主要原因同样是方便,既可以用来存历史的行情数据(Tick,K线),也可以存交易系统的日志,甚至用来保存交易系统参数设置等等,存取数据如同使用Python字典一样方便(MySql试过用不惯)。
数据回测,比较粗的回测一般就直接在Spyder里随手写测试脚本:读取原始数据,用矩阵的形式计算一些变量(技术指标、希腊值),然后用循环逐行跑回测,结果出来后用matplotlib绘图很方便。比较精细的回测会基于vn.py中模拟实盘交易的回测框架,在速度上会慢些,但是可以基本杜绝未来函数。
4. 建模相关:这块不是本人的主攻领域,偶尔有需求拿SciPy边看文档边写。
集成开发环境:交互式开发写策略回测一般用Spyder,开发大型程序的时候用WingIDE(朋友友情支持的正版,不得不说非常给力),智能提示、自动完成可以大幅提高开发效率。
6. 交易接口:就是答主自己开发的框架了,期货方面是CTP接口,股票和期权方面是华宝的LTS接口,熟知大部分底层开发细节(为了封装接口,没办法)。然后针对不同的交易类型、交易策略,针对性的开发一些Python函数和算法,在其中实现特殊的简化下单功能(这些上层功能没放到框架中)。
Python语言拓展:必须掌握的是cython,提升python计算性能的神器;另外为了封装API用的boost.python,和swig比起来的主要好处是封装完全使用C++语言,同时答主也没有在java/perl中调用封装模块的需求。
GUI开发:PyQt,功能强大,文档也比较全;高性能的实时绘图:pyqtgraph,一些风控分析的图表可以用matplotlib(嵌入到PyQt中),生成的图表质量更高。
最后关于Python在量化交易领域的地位:
答主认为就像Javascript现在在web领域的地位一样,Python现在可以几乎覆盖整个量化交易业务链:从研究到写交易程序,一气呵成(可以叫做全栈Quant?)。其他的语言总会有这样那样的短板:
C++/C#/Java:适合写交易程序,不适合用来做策略开发
Matlab/R:适合做策略开发,但是在交易执行方面存在不少问题:速度、不稳定等等
Python:速度不如C++,策略开发不如Matlab,但其作为胶水语言,使用这样那样的小技巧后,在两个方面都能满足需求
最后也是很多人喜欢问的:Python确实不适合开发超高频/超低延时(追求的性能提升在微秒级)的交易策略,不过:
1. 在当前时间点,这个需求已经不那么迫切了;
2. 很多资金容量大能赚大钱(不一定是超高的回报率)的策略对延时的要求并没有那么高
so it's all up to you
,Quant at Bluewood Capital
、、&等人赞同
python不熟,不敢吹牛B,以下话信一半就行,已经邀请男神&&和用python的trader&
说下自己预备的学习计划:
python基础编程,必须掌握,不仅仅是会语法,还有各种语言细节的坑(当然比C++少很多)。对于常年使用R MATLAB
SAS的研究人员来讲,python有很多更偏向程序员的表达方式,需要转换下思维适应。
然后就是各种库
pandas:原AQR资本的员工写的一个库,专门用来处理panel
data这种数据结构的,几乎是处理金融时间序列的标配了。
scipy, numpy:科学计算的库,类似于一个小型matlab或者octave
statsmodels : 看名字就知道,统计分析的包。
scikit-learn: 这个包是做python做机器学习的库,地位很高。
matplotlib : python的作图库。如果你喜欢R的ggplot, 现在也有python的版本,貌似还不成熟。
此外ipython的notebook是一个做研究的利器,类似于mathematica的notebook,可以记录自己trail and
error的过程。
对于国内来讲,有两个项目比较火一个是获取金融数据的&还有一个就是开源交易平台&,作者就是&。
此外还有若干使用python的量化平台可以尝试, 比如国内的&(用的是java,感谢&&指正),国外的和
如果要做衍生品定价, 学学swig直接在python里调用quantlib,
目前有两个项目&&和&。
27赞同反对,不会显示你的姓名
,码农一枚,爱好互联网产品,音乐,读书。
、、&等人赞同
&基本都答全了,这里补充一些偏门的玩意。
1. 如果还需要Deep
Learning方面的东西的话,可以考虑Theano或者Keras。这两个东西可能会用在分析新闻数据方面。不过不是很推荐使用这类方法去做量化模型,因为计算量实在是太大,成本很高。
交易框架方面,除了vn.py,还推荐PyAlgoTrade框架,github上可以搜到。私以为这个框架比vn.py牛逼太多了,毕竟是一个在金融IT领域混迹近20年的老妖的作品,架构设计不是一般的优秀。
国内的话,ricequant是个不错的选择,虽然使用的是Java,但是团队我见过,都是做金融IT出身的,基本上都有7、8年以上经验,底层功底非常扎实,做事情都很靠谱。现在他们也在考虑把SDK扩展到Python这边。
国内的行情和交易接口,使用的是自己的协议(比如CTP接口使用的是FTD协议),而不是国际上广泛使用的FIX协议,并且都不开源。如果需要连接行情,还需要考虑将接口SDK为python封装一下。(修改:评论中有人提到很多券商也开放了FIX接口,不过似乎是在内网使用)
有人谈到数据库了,这里我也说一下,对于高频tick级别的数据,其量级可以达到每天TB级别,普通的关系数据库是扛不住的。如果试图使用传统的关系数据库,比如Oracle之类的可以省省了。对付这种级别的数据,采用文件系统+内存索引会更好。不过这种场景,一般也就是机构里面能碰到了,个人quant可以不用考虑。
107赞同反对,不会显示你的姓名
,Software Engineer
、、&等人赞同
很荣幸Ricequant被问题中的其他大牛提到&&,的确我们的交易系统这块核心是java做的,因为速度和吞吐量的原因,我们也很快马上推出python
SDK,以及research平台,用python的数据分析便利结合java的高效率。您可以使用到我们大量的市场数据和400+的财务数据:马上也会有美股数据上线可以玩。
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/assets/zhihu/ztext/whitedot.jpg" DATA-RAWWIDTH="1453" DATA-RAWHEIGHT="518" WIDTH="1453" DATA-ORIGINAL="/b5fd6779fcab0ebe84f1ca09a01bfbea_r.png" DATA-ACTUALSRC="/b5fd6779fcab0ebe84f1ca09a01bfbea_b.png" STYLE="margin: 6px 0 display: overflow: max-width: 100%; height: 208. cursor: zoom- width: 584"
ALT="Quant&应该学习哪些&Python&知识?---zz"
TITLE="Quant&应该学习哪些&Python&知识?---zz" />
我也希望从python的模块来分类来介绍一下python在quant届的应用,你完全可以根据目前的学习情况着重一个个模块来玩,而所有这些模块都预安装在了我们的ipython
notebook research平台上,只需要登录就可以编写研究以及使用我们的大量高质量数据:
如果您有兴趣可以开始申请我们的ipython notebook research Alpha了:
预祝各位coder和quant周末愉快~!
210赞同反对,不会显示你的姓名
投资界uber
、、&等人赞同
和&两位大神都答的差不多了,过来补充一些细节的东西,为了很多Quant熟悉Python,UQER.IO团队(华尔街量化团队和本土量化团队的合体,我们也知道国内有多少老鼠洞^_^)原创了“量化分析师的Python日记系列”,
希望可以循序渐进的让大家熟悉已经在华尔街非常流行的Python在量化领域(P Quant和Q Quant)的应用
另外补充一下,UQER的基因是基于高盛的slang/secdb以及JPM的athena还有BOA的quartz,从一开始的架构就非常先进,王婆卖瓜的说这是国内很多竞品暂时很难追上的(包括某java转python平台),最多做到形似而已
量化知识篇
1. 《入门系列》
可以参考&&和&,讲了Python的基本语法、操作,以及几种主要的容器类型,以及Python的函数、循环和条件、类等,可以很快的入门这门量化领域日益重要的语言
2. 《numpy与scipy》
接下来是Python中很重要两个基础库numpy和scipy&&和&&这个两个数学的库是很多其他重要库的基础,NumPy提供了大量的数值编程工具,可以方便地处理向量、矩阵等运算,极大地便利了人们在科学计算方面的工作,SciPy基于NumPy提供了更为丰富和高级的功能扩展,在统计、优化、插值、数值积分、时频转换等方面提供了大量的可用函数,基本覆盖了基础科学计算相关的问题。
3.《数据处理的瑞士军刀pandas》
参考&&和&&pandas是Python在数据处理方面功能最为强大的扩展模块。在处理实际的金融数据时,一个条数据通常包含了多种类型的数据,例如,股票的代码是字符串,收盘价是浮点型,而成交量是整型等。在C++中可以实现为一个给定结构体作为单元的容器,如向量(vector,C++中的特定数据结构)。在Python中,pandas包含了高级的数据结构Series和DataFrame,使得在Python中处理数据变得非常方便、快速和简单。强烈推荐掌握!!!
4. 《P Quant系列》
阿尔法对冲中单一信号研究的过程&&在关于pandas的前两篇介绍中,我们已经接触了不少关于Series和DataFrame的操作以及函数。本篇将以实际的例子来介绍pandas在处理实际金融数据时的应用。因子选股是股票投资中最常用的一种分析手段,利用量化计算的因子从成百上千的股票中进行快速筛选,帮助投资者从海量的数据中快速确定符合要求的目标,我们在本篇以量化因子计算过程的实例来展示如何利用pandas处理数据
5. 《Q Quant系列》
a.&如何使用python内置的数学函数计算期权的价格,利用 numpy
加速数值计算,利用 scipy 进行仿真模拟和求解器计算隐含波动率,使用matplotlib绘制精美的图表
b.&如何在scipy中使用函数插值模块:interpolate;波动率曲面构造的原理;将interpolate运用于波动率曲面构造。
c.二叉树,偏微分方程与BSM系列:&&和&
在这里也想听听各位的反馈,我们后续会继续原创内容
量化策略篇
社区里有很多大牛的策略,在这里摘选几个有特点的
1.&&实现了一个开源的大数据指数,可以pk百度大数据和阿里大数据指数&
2.&&使用了著名的pybrain
~~~~~~~~~~~~~~~~~~~~~华丽的分割线~~~~~~~~~~~~~~~~~~~~~
码了那么多字,也该来打个广告了,quant会python以后就可以无敌的来参加国内第一个基于浏览器的众包版对冲基金了
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/assets/zhihu/ztext/whitedot.jpg" DATA-RAWWIDTH="1110" DATA-RAWHEIGHT="490" WIDTH="1110" DATA-ORIGINAL="/c7e6b04a86dc_r.jpg" DATA-ACTUALSRC="/c7e6b04a86dc_b.jpg" STYLE="margin: 6px 0 display: overflow: max-width: 100%; height: 257. cursor: zoom- width: 584"
ALT="Quant&应该学习哪些&Python&知识?---zz"
TITLE="Quant&应该学习哪些&Python&知识?---zz" />
70赞同反对,不会显示你的姓名
,我现在和过去工作中常使用它来处理企业应…
、、&等人赞同
数据分析的python软件包不能算是严格的Python知识吧?严格来说,熟练使用那些软件包更多的还是依赖于金融市场,数理统计方面的知识,因为软件包的API通常都是这些领域知识的术语。
作为一个quant,
这个问题(一个这时候的quant应该学习哪些Python知识)的必要性在于,Python在这个领域真的是很火,一句不过分的话说“华尔街以前运行在Excel上,今后会运行在Python上”
(当然技术上来讲,这并非事实,要说这个可能性的基础,从编程语言上来讲,还得是C/C++,这里的说法更多是体现在Python语言作为一种最接近用户层面的语言的流行度而来的,
同时即便从这个意义上来讲,现在流行的还有R, Matlab, Q(在一些知名银行很流行)等)。
以熟练掌握Python为目标,可以这样来关注Python:
(注: 我和很多quant一起工作,我的主要工作之一是响应他们在使用Python的时候遇到的各类问题。)
22赞同反对,不会显示你的姓名
,记住回家的路
、、&等人赞同
推荐一门coursera的公开课&
佐治亚理工的公开课,主要介绍了qstk软件包,&&
目前正在学习中。
1赞同反对,不会显示你的姓名
谢邀,blpapi
&匿名&&未经许可,禁止转载
&人关注该问题
最近活动于&昨天
被浏览&67042&次,相关话题关注者&83628&人
& 2015 知乎
309赞同反对,不会显示你的姓名
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

 

随机推荐