當前位置:外匯行情大全網 - 外匯開戶 - 量化投資用python還是c++好?

量化投資用python還是c++好?

Python是壹種非常適合Quant工作的語言,它本身就是科學計算中的主導語言。現在又增加了IPython、熊貓等為quant工作量身定制的重量級神器,而且還在快速發展,未來會越來越重要。

關於其他語言,首先介紹壹下我最喜歡的壹個小眾群體,Mathematica+Java/Scala。Mathematica的優點是:提供了函數式編程語言,表達能力非常強。比如Map/Reduce就是標配,很多情況下不需要做煩人的for循環或者下標控制。排版往往可以根據數學公式直接輸入,直觀,不易出錯;代碼和輸出混合的排版方式,使得建模中的計算和推理過程非常流暢,甚至可以直接生成動畫,對於尋找直觀的理解非常有幫助(這幾點分別被IPython和R偷走)。Mathematica的缺點是對金融時間序列數據沒有很好的內置支持,使得存儲和計算效率低下。所以需要通過嵌入Java來補充,對數據格式或性能敏感的操作可以通過Java/Scala來實現。這個組合在我心目中首屈壹指,無論是快速建模還是建模到生產,都遙遙領先於其他選項。但是Mathematica的商業許可非常昂貴,如果公司本身不認可,很難得到支持。這是最致命的缺陷。另外,隨著Python系統的逐漸成熟,領先優勢也在逐漸縮小,長期來看Python的勢頭更好。

其他答案裏列舉了很多其他語言。我自己做定量分析和軟件開發。這裏我想從壹個軟件工程師的角度談談我的理解。平時工作中會和壹些有Quant背景的人合作。很容易發現,建模技術好的人,往往計算機基礎比較薄弱(因為之前的培訓重點不在這裏)。他們還可以快速學習和掌握C++和Java這樣的語言,並實現許多必要的功能。但是,壹方面,這些語言陡峭的學習曲線和繁瑣的開發步驟會給他們的實際工作增加不必要的負擔。另壹方面,壹旦涉及到性能敏感的場景,他們對計算機架構缺乏了解的缺點就很容易暴露出來。比如他們很有可能沒有計算復雜度、內存碎片、緩存缺失甚至多線程等概念,導致寫出來的程序存在相當大的隱患。

即使計算機基礎紮實,如果日常工作需要在C++、Python、R/Matlab,甚至多種腳本語言面前來回切換,思維負擔會很重,人的精力有限,很難顧及數學建模和底層代碼調試的巨大落差。長期開發最有可能的結果是要麽遠離建模專心開發生產環境,要麽遠離生產環境專心建模。這種情況顯然對個人和團隊都有很大的不利。

如果妳深入思考這個問題,相信不難得出壹個結論,C++這種相當面向機器的語言絕對不是Quant的最佳選擇。誠然,在歷史上,它已經比更面向機器的C友好得多。但是在計算機技術飛速發展的今天,如果Quant還需要用C++來做建模工作,顯然是很可惜的。假設妳得到壹個股票數據。不管妳是想分析價格走勢,還是成交量分布,還是波動性,首先要做的壹定是畫圖,有壹個直觀的認識。如果妳的工具是C++,妳必須花很多時間編譯、調試和重新編譯,這樣妳就可以很容易地解析文件。接下來如何計算均線?如何計算波動率?妳得自己寫代碼。那怎麽畫圖呢?整個工作流程簡直糟透了。這些問題浪費了妳大部分的精力,而且都與妳真正感興趣的工作無關。因此,如果妳是壹個有數學、金融等背景的新人,在決定是否投資這項重量級技術時,妳需要謹慎,即使它目前的市場定價可能仍處於頂峰。相比之下,我覺得Python會是壹個更理想的選擇,就是可以很好的完成建模工作,還可以訓練壹定的編程技巧,讓妳在必要的時候可以勝任壹些簡單的C++工作。

最後,我同意袁的觀點,不要拘泥於語言,不管妳學哪壹種,妳都應該對其他語言持開放態度。另外,世界瞬息萬變,妳會發現單壹的語言分類方法其實毫無意義。每種語言在發展過程中都會逐漸吸收其他語言的特點。比如Python本身既有C/C++/Java這樣的命令式特征,也有功能性特征。熊貓甚至提供了類似的SQL使用方法,這些方法在其他語言或系統中或多或少都有所不同,可以在學習過程中逐步實現。

  • 上一篇:金融中的計算問題
  • 下一篇:美元指數的漲跌是如何影響A股市場的走勢的
  • copyright 2024外匯行情大全網