现在上有关numeric analysis的课时,都用Python,实际工作时候呢?
回复内容:
对于不同的quant岗位,使用的软件大不相同。
如果是做定价模型的,可能最经常用的是matlab,因为语言简单,扩展包优良。对于不需要对时间有要求的衍生品定价,最为适合。
如果是做高频交易,最常用的是C++,因为速度快。有很多的高频公司,都有自己写的底层包,并为此花了大量的人力和物力去维护。
如果是写盈利模型的,会更多的选择R。R里面有很多前沿的统计模型包。对于统计分析和时间序列处理非常强大。但是扩展包没有matlab的稳定。
对于Python 而言,更像是一种全能的编程需要。无论是网络抓包,统计分析,还是数值分析,都有还算不错的方案。但是,在专业领域方面,还是弱于上边提到的语言。
其实在不同的金融公司,有着不同的语言使用传统,有的喜欢C++,有的喜欢C#,有的喜欢Java。但是对于一个成熟的公司而言,需要对这些语言都提供良好的支持。毕竟一个好的trader是十分难得的,难道就因为使用语言的不同就拒绝能让他发财的人才么?
其实,软件只是一个载体,思想才是最核心的。我工作的地方,大家都用VBA。交易的时候,满屏的Excel。只要能完成工作,谁管你用什么语言。
先来结论:工具和语言不是重点。数学能力和市场理解才是。
本人去过几间国际大行,主流工具有
1. 公司自主平台上的C++
2. 公司自主平台的Python
3. Matlab
4. R
其中1和2之所以要强调自主平台 主要是因为其重要库和部分语法都是定制的,基本可以看作半个独立语言了。自己在外学习意义不大。公司内高级码农一大堆,一个quant的主要能力其实是数学能力,其他能写就可以了。
在大型基金也是一样。小型基金什么行什么上,vba都有。
先正面回答题主的问题,
在金融工程领域,Python不但在用,用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测。
也有一些例外:
1、过去形成了其他语言为主的体系,比如平台以C++编写,API都是C++的,老人也熟练C++,那么他们以C++为主。
2、有些机构以研究为主,也许他们使用Matlab,R。
3、C++、JAVA、VB等各种语言的天才Coder,我只能远距离膜拜,你们用汇编也比我的效率高十倍,你们是我心目中的神。
再描述一下自己,按照知乎上的分类,我应该算一个Trader,一个会写程序的Trader。我的工作是分析数据、发现规律、制定和验证策略,然后交易,然后优化调整,往复循环。我们用自动交易,但高频交易不是我的范围。
我个人是从C/C++转向JAVA,然后又转向Python,原因无他,效率。人的精力有限,写程序的时间多,交易赚钱的时间就少,我的团队也非常认同我的想法。
我偏好Python的原因:
1、正确就是效率。越复杂、越低级的语言,出错率越高,BUG导致数据分析错误、交易策略程序崩溃,轻则错失交易机会,重则交易策略本身导致亏损,那种欲哭无泪的感觉...
2、Python重在开发效率,设想同一个交易策略,我已经完成回测,给老板打报告申请交易额度了,而你还在调试C++,老板不会认为你勤奋,老板会认为你是某种动物,再往远想想,比如年底咱俩的红包厚度...。
3、Python的性能不差,Python还是调用C库,再考虑PVM,其实和C的性能差别基本上可以忽略不计。确实在乎相差的微小性能,建议花2万块买个最新的MAC PRO,直接秒杀。你说什么?单位不给拨预算?为了快感,自费行不行?。
4、语言不是主要性能瓶颈,网络、设备等造成的影响更大,比如C++程序快了2us,而网络延迟就耗去了1ms。
我熟悉的同行,了解Python的,有能力的都在往Python转,也有一部分是程序员说了算,转不了的,你们懂的。
再扒一扒前面几个例外情况,这部分作为娱乐,不属于内容:
第一种,就是有历史积累的那种,说的好听是知识库,说的不好听那就是历史包袱。老平台上绝大多数策略都已经失效了,早都该推倒重来了。
第二种,那些卖分析报告的,那些用Matlab,R的,也许可能还是个实习生,甚至从来就没有交易过,他的报告可靠吗。再进一步,如果报告是可靠的,他为什么不自己交易,再造一个文艺复兴,为什么要告诉你呢,他是大傻?或者买报告的是大傻?
两天没来,关注的人多,澄清一下。发这贴的时候深夜刚加完班,在车上手机草草打的,言辞草率,对兄弟不敬,先道歉。
A股行情火爆,这几天都在加班,刚睡醒,说错了请包涵。今年执行策略有几个不错,如果大家有兴趣,我可以分享两个,当然还是讨论Python在金融工程的应用为主。
======================================================================
原来写的在这:
先说排名第一的,一看你就是个外行,人家问Python,你要是懂,就直接跟人说Python,不懂还要装逼,知乎上净是你这种货色。
还有那些说工具不重要的,你干脆别用计算机了,回去用纸笔行不行,只要半辈子就能跑一条策略了,你一辈子能跑两条呢,别着急,慢慢来。
作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测,早就是各大行的首选。
都什么年代了,一台PC的性能就远超过去的大型机,谁有功夫给你c和c++,就知道瞎bb。
看看5年前的文章
Python有望成为金融语言
http://www.infoq.com/cn/news/2010/04/Python-ABS
金融行业用Python,R做研究都比较常见。
Python 配合科学数据计算模块,能做很多事了。
如果从整个美国这边quant行业来看,quant们用python应用比例还是挺高的,三四种主流语言之一吧。引用一位数学博士姐姐的话,python is the second generation language 相对于C++。工程的孩子可能用matlab更多,而医学统计等则用SAS。事实上认真学,做项目,学起来很快 一个月熟悉,三个月熟练。
Programming语言 其实就是用英文 +符号+ 数学发明的一种针对计算机的语言。如果这三个你都掌握的不错,就直接开始学吧,不要纠结啦。。。 quant的核心能力就是有什么迅速学什么,迅速掌握就好了。加油!以上~
先说排名第一的,一看你就是个外行,或许你涉及过一两个行业,但是就金融来讲,你就不要不懂装懂了,知乎上净是你这种货色。
不同的业务类型,不同的功能部分,不同的公司文化,不同的团队技能熟练度,决定着业务用什么语言开发,用什么硬件架构,选择何种数据库,选择何种开发模式。
python上手快,开发速度快,生产效率高,依然有其力所不能及的地方,不懂就别瞎bb了。
软件和工具不是重点,训练得多就能初步上手,关键还是数理基础和应用能力