安装实例:以Python为QuantDeal入门语言

[复制链接]
澈水清泉 发表于 2017-8-4 13:11 | 显示全部楼层 |阅读模式

这位同学,关注了这么久,何不注册享用更多功能?

您需要 登录 才可以下载或查看,没有帐号?注册学籍

x
从今天起,我们先从Python开始学习。我虽然是一个不那么愿意授受新事物的人,但我仍然觉得学习Python是非常值得的。首先,让我们来看一看Python的百度指数。

1.webp.jpg

图中蓝色的就是Python(读音:拍死俺?)了,从开始的不为人知,一路攀升。这门语言有着广泛的用武之地。关于学了Python可以干什么,清泉在这里参考了一些培训机构的海报。

2.webp.jpg

Web应用开发
  • 服务器端编程,具有丰富的Web开发框架,如Django和TurboGears,快速完成一个网站的开发和Web服务。典型如国内的豆瓣、果壳网等;国外的Google、Dropbox等。


3.webp.jpg

系统网络运维
  • 在运维的工作中,有大量重复性工作的地方,并需要做管理系统、监控系统、发布系统等,将工作自动化起来,提高工作效率,这样的场景Python是一门非常合适的语言。


4.webp.jpg

科学与数字计算
  • Python被广泛的运用于科学和数字计算中,例如生物信息学、物理、建筑、地理信息系统、图像可视化分析、生命科学等,常用numpy、SciPy、Biopython、SunPy等。


5.webp.jpg

3D游戏开发
  • Python有很好的3D渲染库和游戏开发框架,有很多使用Python开发的游戏,如迪斯尼卡通城、黑暗之刃。常用PyGame、Pykyra等和一个PyWeek的比赛。


6.webp.jpg

图形界面开发
  • Python可编写桌面图形用户界面,还可以扩展微软的Windows,常用Tk、GTK+、PyQt、win32等。



网络编程
  • 除了网络和互联网的支持,Python还提供了对底层网络的支持,有易于使用的Socket接口和一个异步的网络编程框架Twisted Python。


实际上,Python远远不止这些。至少我们要用Python从事量化交易这上没没提到。下面摘自知乎上的问答。

编程基础薄弱,做高频会很吃亏。但如果你数学很牛逼,另说。
mq最多做类似炒单的频率,国内的高频交易者,基本都是c++。
mq用的是c#平台,适合中小团队或个人。盛立和国泰安是c++平台,适合中大型团队。
tb文华mc金字塔,脚本语言,适合没有编程经验的个人。
其实你可以考虑易盛极星,vnpy,都是免费的,前者使用c语言风格,后者用python,功能不会比收费平台差。

上面的重点在最后。再加上清泉在网络上多方对比和向明师请教后发现,Python语言在量化交易中的需求是相当大的。可以说,想要做一名专业的Quant,一定要掌握一门专业的计算机语言,Python当然正是这不二之选。

好了,Pyhton是选定了(还有意志不坚定的同学,可以自己在网上找找信息,相信最终你也会和我做同样的决定的)。下一步,进入学习。

为了学习这玩艺儿,清泉找了两块儿教材,一块儿是在淘宝买了本叫《量化投资 以 Pyhton为工具》这本书,另一块是廖雪峰的博客。下面是博客的相关页面地址:

http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

按照上面的教程,我们开始第一课,安装Python。我把源程序放在了自己的网盘,方便下载:
.
https://pan.baidu.com/s/1skYwgUT

640.png

以后我会以这个版本为例展开学习,因为廖雪峰是以这个版本做的教程。

640.jpg

在安的时候要注意全选上。然后再Next。安装完毕后,键盘win徽标+R键打开运行。输入cmd然后回车。再在里面输入python,得到以下界面。

8.webp.jpg

大功告成。据说我已经进入了pyhton交互式环境。

好,这节课挺简单的吧?快去动手试试吧。参考教程:

http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738150500472fd5785c194ebea336061163a8a974000



附:

问:Quant 对 python 的需求高吗

答:你好,很高兴为你解答

1、需求高

2、还有:Python, Java, Matlab, R, Q和某些公司内部自有语言(如高盛的自有语言)但是我不希望敷衍了事,如果回答就展开了说,说说我心中最重要的五类语言。这不仅仅是对于一个Quant必须的,而是一个丰满的程序员所必备的。在艺术中,艺永远比术重要;在Quant相关知识中,intuition永远比纯technique更加重要。

两年前在Princeton,我和一位研究计算机语言的PhD两人吃饭聊天。他的主要研究方向就是新的计算机语言,及相关的逻辑学。大神如他一顿饭下来80%的时间处于放空状态,基本没在关注我,但我得到了我自以为深刻的理念:一种计算机语言是一种对应哲学的体现。

因此,在我看来,有五类语言构建了一个丰满的编程能力强的Quant的一切,它们分别是:效率类语言(C、C++、Java等)、胶水类语言(Python、Ruby等)、科学类语言(Matlab、R、S等)、Alpha演算类语言(Lisp、Clojure等)、查询类语言(SQL、Q等)。这是基于我理解浅薄的分类,完全与计算机科学的规范化分类(如面对对象语言、函数类语言)不相容。持不同意见者大可付之一笑。

1、效率类语言(C、C++、Java等):老派的Quant很多都是C++高手,特别是80年代涌入华尔街的那帮MIT的高能物理博士们。在那个年代,可以选择的语言不多。要么就Fortan,要么就C/C++了。所以在当时基本上这些语言同时充当着基础架构(infrastructure)和数值计算(比如Monte Carlo)的双重目的。但是现在各种胶水类语言、科学类语言多了起来,而且由于单机性能越发强悍,效率再也不是唯一的诉求了,因此目前C++、Java大量应用于金融系统级的开发,和对于效率要求极高的实时定价等领域。从一个Quant的角度来看,这类语言最大的特点是快,编程复杂度高,维护难,同时原生语言普遍不支持向量运算。

2、胶水类语言(Python、Ruby等):我必须承认,这些语言是新世代Quant的福音。在国内工作的时候我目睹并参与了一个将原有的C++框架全部用Python重写的项目,而现在JP Morgan这边利率类产品的定价软件也在从Java像Python转移。实现同样的代码,Python、Ruby的实现速度比效率类语言快很多,而且在机器速度越来越快的今天,差距已经不是不可接受。这些语言最大的特点是比较快,编程复杂度高,维护相对简单,同时大量的包(比如Numpy+Scipy)可以轻松实现向量运算。

3、科学类语言(Matlab、R、S等):一般而言,科学类语言最大的特点是支持向量运算,同时各种附加数学、统计包极其丰富,但运算速度无法与前两类相比。在一个具体的投资/交易策略、模型投入实际使用前,你需要快速的去实现(Implement)和验证(Back-testing)你的想法。这个时候,科学类语言就有绝对的优势。验证思路有效后,再用效率类语言或胶水类语言开发成系统级组件。你可以理解为科学类语言是用来造概念车的,而前两类语言是用来量产的。而在具体的职业角度,造概念车的这帮人一般是Pure Quant,而实现量产的很多是Quant Developer。当然也有两者合一的集大成者。

4、Alpha演算类语言(Lisp、Clojure等):我第一次对这类语言感兴趣,是12年冬天接触硅谷一家科技公司时(Prismatic,人工智能新闻App),发现他们在用Clojure,也极力向我推荐Clojure。Clojure是基于Java封装的语言,可以用Java虚拟机执行。但归根结底,Clojure是Lisp这类语言。之前我长期沉迷于过程编程与面对对象等概念之中,第一次接触Lisp很不习惯,但后面开始感叹于这类语言之美。我个人感觉目前Quant界用这种语言偏少,但是不排除以后流行的可能。

5、查询类语言(SQL、Q等):SQL就不必说了,金融公司很多时候都是使用Oracle等关系型数据库,SQL是基础。而我之前几次面试也遇到了SQL的问题。Q是Morgan Stanley为了应对金融中的海量数据而采用的一种非关系型查询语言,特点是极快,有SQL的基础可以很快掌握。

全面的说:如果你是做Pure Quant,整天与交易策略和模型睡觉,那么2、3是必须的;如果你是开发为主,或者是Quant Developer,那么1、2、5是必须的;如果你立志让编程不成为你做Quant的障碍,那么1-5全都是必须掌握或至少了解其思想的。

不管是作为Quant还是Coder,都不可拘泥于语言。语言只是其背后设计哲学的体现。这就等同一个数量金融从业者不可拘泥于产品一样。数量金融的根基永远是供给需求、金钱时间价值这些基本的经济学理论以及现金流的相关概率这些基本的统计学思想。如果拘泥于术而非艺,那路就会越走越窄。

联线中国微信ID:nlinechina
回复

使用道具 举报

湘ICP备15011473号


快速回复 返回顶部 返回列表