Quant应该学习哪些 Python 知识?

栏目: Python · 发布时间: 7年前

Quant应该学习哪些  <a href='https://www.codercto.com/topics/20097.html'>Python</a>  知识?

答主更多应该算一个trader而不是quant(虽然对quant的一些知识也略懂),下面的答案可能更多是从一个交易员的角度来回答

想在市场上赚钱,必须同时具备两样能力:

研究:做出正确的能够获利的决策,也就是寻找Alpha的能力

交易:基于研究的结果和交易信号,执行相应的下单风控等操作,也就是将Alpha落实到你账户盈利上的能力

研究方面

龙哥的答案已经覆盖了常用的库,这里就从研究的整体方向上来介绍下:

获取数据:可以选择使用TuShare、通联、万得等数据 工具 下载数据,并将原始的数据格式转化为你自己想用的数据格式(可以用Python脚本实现),以保存到数据库中

存储数据:几乎绝大部分常用的数据库都提供了Python接口,SQLSQL/HDF5等等多种,最常用的应该是 MySql 和MongoDB,有兴趣学Q的也可以直接去用KDB+,数据库具体会应用的方向包括保存数据、读取数据、数据补全机制、数据变频(TICK变K线等)

数据回测:将数据读取到内存中后(以numpy数组或者pandas序列的形式),进行策略的回测,并对回测结果进行研究(matplotlib绘图),或者对参数进行优化(scipy等)

建模相关:对数据进行一些统计学检验(statsmodel)以及机器学习建模(scikit-learn)

集成开发环境:在有针对性的IDE中实现以上步骤会更加简便快捷(ipython/spyder)

交易方面

这部分是答主的主场了,主要分为两块:

1. 执行交易:对于绝大部分量化策略,都在一定程度上需要自动/半自动的下单功能。

CTA策略突破入场(秒级延时)

期权做市实时挂撤单(毫秒级延时)

股指期货高频(微秒级延时)

分级基金套利(批量自动下单,延时没有以上几种重要)

Alpha套利(篮子交易,一般要使用vwap等算法)

2. 策略风控:同样一般需要自动或者半自动的风控功能.

期权组合的希腊值风险实时监控对冲

分级基金套利的beta净敞口、行业暴露等实时监控对冲

Alpha套利策略的因子监控

具体需要掌握的知识:

1. 模拟实盘交易的策略回测:将策略重新编写为可以基于数据回放(逐TICK/逐K线)的模式进行回测的程序,模拟实际交易情况,杜绝未来函数的可能性,实盘交易中使用完全相同的程序进行交易,保证实盘和回测的一致性。这块通常需要专门的框架或者程序,比如通联的优矿、掘金、vn.py框架中的vn.strategy等。

2. 实盘交易接口:将想要下的单子通过交易接口发送到经纪商柜台,目前可以实盘直接使用的应该包括掘金(期货)、vn.py中的vn.lts(证券、期权)和vn.ctp(期货)。如果要使用其他的柜台需要自己封装,如恒生、金证等。

3. 其他语言拓展:作为最有名的胶水语言之一,Python的拓展功能不用绝对是浪费。针对计算瓶颈可以使用cython拓展,针对API可以用boost.python和swig进行封装,调用matlab直接运行其中提供的特定算法,使用COM接口调用Excel自动生成每日交易记录和报表......

4. GUI程序的开发:相当数量的量化交易依旧需要交易员进行实时监控,除了在cmd中不断print一些数据外,更合理的方案是开发自己需要的GUI界面,重点推荐PyQt,比在C++中用Qt开发要来的快捷很多,底层运行的也是C++的代码,速度完全不用担心。一些有特别需求的人也可以考虑开发在浏览器中显示的界面,比如经常想用手机远程监控。

个人的Python知识体系:

研究方面

1. 期权目前国内的历史数据较少,所以整体上用万得的API就足以满足需求,做CTA策略研究会从MC导出csv格式的数据再读取到Python中,目前在研究通联的接口,原因无他:方便和性价比。

2. 数据储存主要用MongoDB,主要原因同样是方便,既可以用来存历史的行情数据(Tick,K线),也可以存交易系统的日志,甚至用来保存交易系统参数设置等等,存取数据如同使用Python字典一样方便(MySql试过用不惯)。

3. 数据回测,比较粗的回测一般就直接在Spyder里随手写测试脚本:读取原始数据,用矩阵的形式计算一些变量(技术指标、希腊值),然后用循环逐行跑回测,结果出来后用matplotlib绘图很方便。比较精细的回测会基于vn.py中模拟实盘交易的回测框架,在速度上会慢些,但是可以基本杜绝未来函数。

4. 建模相关:这块不是本人的主攻领域,偶尔有需求拿SciPy边看文档边写。

5. 集成开发环境:交互式开发写策略回测一般用Spyder,开发大型程序的时候用WingIDE(朋友友情支持的正版,不得不说非常给力),智能提示、自动完成可以大幅提高开发效率。

6. 交易接口:就是答主自己开发的vn.py框架了,期货方面是CTP接口,股票和期权方面是华宝的LTS接口,熟知大部分底层开发细节(为了封装接口,没办法)。然后针对不同的交易类型、交易策略,针对性的开发一些Python函数和算法,在其中实现特殊的简化下单功能(这些上层功能没放到框架中)。

7. Python语言拓展:必须掌握的是cython,提升python计算性能的神器;另外为了封装API用的boost.python,和swig比起来的主要好处是封装完全使用C++语言,同时答主也没有在java/perl中调用封装模块的需求。

8. 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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Android编程权威指南(第3版)

Android编程权威指南(第3版)

比尔·菲利普斯 (Bill Phillips)、克里斯·斯图尔特 (Chris Stewart)、克莉丝汀·马西卡诺 (Kristin Marsicano) / 王明发 / 人民邮电出版社 / 2017-6 / 129.00元

Big Nerd Ranch 是美国一家专业的移动开发技术培训机构。本书主要以其Android 训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android 编程权威指南。全书共36 章,详细介绍了8 个Android 应用的开发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得宝贵的开发经验。 第3 版较之前版本增加了对数据绑定等新工具的介......一起来看看 《Android编程权威指南(第3版)》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具