金融工程現在用python多嗎?

現在上有關numeric analysis的課時,都用Python,實際工作時候呢?


對於不同的quant崗位,使用的軟體大不相同。

如果是做定價模型的,可能最經常用的是matlab,因為語言簡單,擴展包優良。對於不需要對時間有要求的衍生品定價,最為適合。

如果是做高頻交易,最常用的是C++,因為速度快。有很多的高頻公司,都有自己寫的底層包,並為此花了大量的人力和物力去維護。

如果是寫盈利模型的,會更多的選擇R。R裡面有很多前沿的統計模型包。對於統計分析和時間序列處理非常強大。但是擴展包沒有matlab的穩定。

對於Python 而言,更像是一種全能的編程需要。無論是網路抓包,統計分析,還是數值分析,都有還算不錯的方案。但是,在專業領域方面,還是弱於上邊提到的語言。

其實在不同的金融公司,有著不同的語言使用傳統,有的喜歡C++,有的喜歡C#,有的喜歡Java。但是對於一個成熟的公司而言,需要對這些語言都提供良好的支持。畢竟一個好的trader是十分難得的,難道就因為使用語言的不同就拒絕能讓他發財的人才么?

其實,軟體只是一個載體,思想才是最核心的。我工作的地方,大家都用VBA。交易的時候,滿屏的Excel。只要能完成工作,誰管你用什麼語言。


金融行業用Python,R做研究都比較常見。


先正面回答題主的問題,在金融工程領域,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。


先來結論:工具和語言不是重點。數學能力和市場理解才是。

本人去過幾間國際大行,主流工具有

1. 公司自主平台上的C++

2. 公司自主平台的Python

3. Matlab

4. R

其中1和2之所以要強調自主平台 主要是因為其重要庫和部分語法都是定製的,基本可以看作半個獨立語言了。自己在外學習意義不大。公司內高級碼農一大堆,一個quant的主要能力其實是數學能力,其他能寫就可以了。

在大型基金也是一樣。小型基金什麼行什麼上,vba都有。


反正現在幾家做的不錯的量化交易平台都用python。


大數據項目實戰之Python金融應用編程(數據分析、定價與量化投資)

分享下載地址給大家——https://pan.baidu.com/s/1dFzXGUP 密碼: jbz8

本教程介紹使用Python進行數據分析和金融應用開發的基礎知識。

課程從介紹簡單的金融應用開始,帶領學員回顧Python的基礎知識,並逐步學習如何將Python應用到金融分析編程中。課程覆蓋了Python的基本數據結構、輸入輸出、效率分析、數學庫、隨機分析庫、統計分析庫等。

接著課程以專題的形式介紹了Python與Excel的結合,學習如何使用Python的相關庫生成Excel可調用的函數;Python與Hadoop和MongoDB結合進行大數據分析的基礎知識。

最後課程介紹了Python的面向對象編程並介紹了兩個案例:使用Python實現金融衍生品分析庫以及使用Python實現事件驅動的量化投資系統,使學員在實戰的環境下理解Python在金融應用開發中的具體應用方式,訓練學員獨立開發Python模塊的能力。

課程大綱

第一講、Python與金融應用概述

本講主要介紹Python的基本特性,安裝本課程所需要的Python環境,概述Python在金融數據分析中應用領域。本講將使用一個簡單的趨勢投資的例子,講解為什麼使用Python進行金融數據分析和量化投資是非常方便的。

第二講、Python的基本數據類型與數據結構

本講介紹Python的基本數據類型與數據結構,包括基礎Python和NumPy庫提供的數據結構。

1、基本數據類型(整型、浮點型、字元型)

2、基本數據結構(元組、控制結構、函數編程、列表、字典、集合)

3、NumPy數據結構(使用Python列表實現的數組、常規NumPy數組、結構數組、內存分配)

第三講、Python數據可視化

本講介紹Python的matplotlib庫提供的數據可視化技術,雖然Python還有很多其他的數據可視化方式,但是matplotlib提供了一種基準實現方式。

1、二維繪圖(一維數據集、二維數據集,其他繪圖模式,金融繪圖)

2、3D繪圖

第四講、金融時間序列分析

在金融分析中常見的一種數據類型是金融時間序列數據,本章主要介紹Python的Pandas庫對金融時間序列類型數據結構的實現——DataFrame和Series,以及如何運用這些工具進行基本的金融時間序列分析

1、Pandas基礎(DataFrame類,基本分析技術,Series類,GroupBy操作)

2、金融數據

3、數據回歸分析

4、高頻金融數據

第五講、輸入輸出操作

本講介紹Python提供的基本輸入輸出操作,以及如何在金融數據分析與投資中有效的進行使用。

1、Python的基本I/O操作(將對象寫入硬碟,讀寫文本文件、SQL資料庫、讀寫NumPy數組)

2、使用Pandas的i/O操作(基本操作,SQL資料庫,CSV文件、EXCEL文件)

3、使用PyTables進行快速I/O (使用Table,使用壓縮的Table,數組操作,內存外運算)

第六講、提升Python效率

本講介紹Python中提供的提升計算效率的一些工具以及它們在金融數據分析與投資中的基本應用。

1、Python運行效率分析

內存分配與運行效率

2、並行計算(Monte Carlo演算法、串列計算、並行計算)

3、動態編譯(介紹例子、二叉樹期權定價)

4、使用Cython靜態編譯

5、基於GPU生成隨機數

第七講、數學工具

本講介紹Python提供的用於金融數據分析的數學方法與工具及其背景知識與應用方式。

1、近似(回歸、插值)

2、凸優化(全局最優化、局部最優化、約束最優化)

3、積分(數值積分、模擬積分)

4、符號計算(基礎、方程、積分、微分)

第八講、隨機分析

對不確定性的刻畫與研究是金融研究與分析的重要方面,本講介紹隨機分析的一些知識,在金融數據分析與投資中的應用與Python實現。

1、隨機數

2、模擬(隨機變數、隨機過程)

3、方差縮小技術

4、估值(歐式期權、美式期權)

5、風險測度指標(在險價值、信用風險)

第九講、統計分析

統計分析是金融數據分析的核心,本講介紹常用的統計分析方法、金融應用及其Python實現。

1、正態性檢驗

2、資產組合優化

3、主成分分析應用

4、貝葉斯回歸分析

第十講、數值分析技術

對於一些非線性、沒有顯式解的金融和數據分析問題,需要使用數值分析的技術,本講介紹這些技術的基礎及應用,以及Python的實現。

1、求解線性方程(LU分解、Cholesky分解、QR分解、Jacobi方法、Gauss-Seidel方法)

2、金融中的非線性模型(隱含波動率、Markov regime-switching模型、門限自回歸模型、平穩轉換模型)

3、求根方法

第十一講、使用Python操作Excel

微軟的Excel是常用的辦公軟體,是數據分析和應用的重要支撐。Python提供了豐富的與Excel交互的介面,本講介紹這些介面並舉例。

1、基本的電子表格交互

2、Python中的Excel腳本

第十二講、Python面向對象編程與圖形用戶界面

本講介紹Python面向對象編程技術,這是後續章節,特別是量化投資一章的基礎,除此之外,本講還介紹了Python圖形用戶界面編程的基本方法。

1、面向對象

2、圖形用戶界面

第十三講、金融中的大數據技術概述

本講介紹大數據技術在金融中的應用以及使用Python的基本實現。

1、Hadoop概述

2、使用Hadoop實現字元統計

3、Hadoop金融應用舉例

4、NoSQL介紹

第十四講、案例1:使用Python構建期權分析系統

本案例使用之前各講介紹的Python金融應用相關知識,構建相對完整的期權分析系統,幫助學員掌握金融系統開發的要點以及Python整合應用的方式,與之前介紹相比,在案例分析中更多的使用面向對象方法。

1、估值框架(資本資產定價原理,風險中性定價,市場環境等介紹)

2、金融模型的模擬(隨機數生成模塊,泛型模擬類,幾何布朗運動,帶跳躍的擴散過程模擬模塊,平方根擴散過程模擬模塊)

3、衍生品估值模塊(泛型估值類、歐式執行類、美式執行類)

4、衍生品分析庫應用——波動率期權定價

第十五講、案例2:使用Python構建簡單的演算法交易系統

演算法與程序化交易是大數據時代計算機技術在金融領域應用的最重要方面之一。本講介紹這方面的Python實現,包括基本交易、交易策略與回測等。

1、演算法交易概述與框架

2、實現事件驅動交易引擎(事件驅動軟體,事件類,數據處理類,策略類,投資組合類,執行處理類和回測類的基本編製,事件驅動執行)

3、交易策略實現(移動平均跨越策略,SP500預測交易策略,均值回歸股票配對交易策略)

4、策略優化(參數優化,模型選擇,優化策略)


軟體和工具不是重點,訓練得多就能初步上手,關鍵還是數理基礎和應用能力


看看5年前的文章

Python有望成為金融語言

http://www.infoq.com/cn/news/2010/04/Python-ABS


如果從整個美國這邊quant行業來看,quant們用python應用比例還是挺高的,三四種主流語言之一吧。引用一位數學博士姐姐的話,python is the second generation language 相對於C++。工程的孩子可能用matlab更多,而醫學統計等則用SAS。事實上認真學,做項目,學起來很快 一個月熟悉,三個月熟練。

Programming語言 其實就是用英文 +符號+ 數學發明的一種針對計算機的語言。如果這三個你都掌握的不錯,就直接開始學吧,不要糾結啦。。。 quant的核心能力就是有什麼迅速學什麼,迅速掌握就好了。加油!以上~


先說排名第一的,一看你就是個外行,或許你涉及過一兩個行業,但是就金融來講,你就不要不懂裝懂了,知乎上凈是你這種貨色。

不同的業務類型,不同的功能部分,不同的公司文化,不同的團隊技能熟練度,決定著業務用什麼語言開發,用什麼硬體架構,選擇何種資料庫,選擇何種開發模式。

python上手快,開發速度快,生產效率高,依然有其力所不能及的地方,不懂就別瞎bb了。


  1. C++ -- 主要是傳統pricing, simulation
  2. python/R 新演算法和交易,ruby也有用的
  3. matlab主要是R/python流行以前老quant轉過來習慣了

python/r主要是便宜,快,搭建環境簡單等優勢

retail的人也用sas,spss之類的


我最開始是python ,後來老大看不懂讓我換了matlib。如果僅僅是做統計套利,多因子這些工作,語言基本沒差別,換個老大讓我寫R應該也可以很快上手


Python 配合科學數據計算模塊,能做很多事了。


推薦閱讀:

dlib人臉識別 模塊 如何 在Python 中安裝?
如何把嵌套的python list轉成一個一維的python list?
為什麼說 Python 是強類型語言?
C/C++ 這類更底層的語言,如果把平時常用的高級函數和功能都實現,能否達到 Python 的開發效率?
python 的絕對優勢在哪些方向?

TAG:Python | 寬客Quant | 金融工程學 |