Quant 和程序員到底有什麼差別?
是不是那些學金融工程的出來做quant,就是在金融領域做程序猿?
初期其實區別不大,都是寫簡單代碼,基本都是單線程問題,老闆怎麼說怎麼寫,書上怎麼說怎麼做。
成長期開始關注不同的東西。
程序員更關注系統的效率,並行演算法、多線程演算法、系統架構設計,比如高吞吐架構、低延遲架構等等。還有很多時候涉及多模塊協作,系統穩定性也是其關注的重點。
礦工則開始關注更多的數學模型、實驗方法和市場規律,對產品的本質和行業的運作模式有更深的了解。開始喜歡與從前討厭的交易員和銷售們交流,也開始重視以前不懂事忽略的IT大拿。
後期的狀態則有顯著不同。
高級程序員通常精通一個領域的系統架構設計、什麼技術是該用的、什麼技術就是添亂的,哪些可以買那些需要自己做,可靠的技術供應商是哪些等等。他們密切與礦工、交易員、銷售合作,思考的老產品系統如何優化、成本如何降低,新產品需要什麼樣的技術支持,如何在有限的技術資源下達成這個技術支持。
高級礦工到後來會精通一類、一大類產品的定價原則和商業模型,他們和交易員一起商量怎麼更好的對老產品地定價和測算風險,也和銷售一起設計新的產品,思考對新的產品如何設計模型和定價策略等等。
--最後安利一個我的live
理工生如何進投行交易部門
這是一個自嘲的說法。我有一些 Quant 朋友會自稱為碼農,因為日常大部分工作的確就是在寫代碼。事實上對於 Quant,有一個和碼農對應的叫法是礦工。在美國的朋友大概都聽說過在東海岸就去花街當礦工,在西海岸就去矽谷做碼農的說法,也說明兩者的確有一些相似性。
如果說區別呢,Quant 的工作主要還是和數字打交道,寫程序的目的是為了用計算機去解決數字計算的問題,不論是Q宗定價還是P宗統計。相比之下,他們不會去關心 Web 開發有多少種框架, PHP 是不是最好的編程語言,MySQL 和 PostgreSQL 哪個性能更好這種一般意義上的程序員更可能關注的問題,很多時候也不需要深入理解編譯器的工作原理,操作系統的 kernel space 和 user space 有什麼不同,CPU 裡面有幾級緩存等純計算機專業的知識。
如果這個描述還不夠形象的話,建議看看這幾個問題下的討論,感受一下真正的程序員的世界。都是我隨便找的,主要是幫助非計算機科班的朋友理解下碼農們平時都在為什麼而戰,這些東西又是離 Quant 的工作多麼遙遠:
怎麼樣才算是精通 C++?
C++ 的什麼是 Java 不能取代的?
Java 和 C# 最大的不同是什麼?
CPU 的分支預測器是怎樣工作的?
jmp 和 call 會打亂 CPU 流水線,那是不是應該盡量少用函數調用?
對於工科背景的朋友,可以看看這幾個問題,感受一下 Quant 主要在做什麼。當然區區幾個問題無法覆蓋全部,不過你可以和上面那幾個對比一下,應該能感覺出區別來:
如何系統地學習隨機過程?
隨機過程、機器學習和蒙特卡洛在金融應用中都有哪些關係?
為什麼歐式股票期權的價值與股票的期望收益率無關?
如何系統地自學金融工程,有哪些優質的書籍推薦?都有哪些學習方法心得?
至於題目中提到的金融工程,這是一門非常具體的學科,一般是培訓Q宗 Quant 的,但 Quant 並不都是學這個出身。如果除此外沒有接受過計算機專業的訓練(不論科班還是自學),那麼此專業畢業的學生是不太可能去找軟體或互聯網公司的工作的,技能上差別很大。
評論中有人問到青春飯的問題,說說我的理解。
Quant 的工作始終是為金融業服務,相比於普通的軟體開發,有門檻高,專業方向明確的特點。像是互聯網那種做個小網站或是開發 iPhone App 這種一個人買台電腦,在網上看看免費文檔,再花幾百塊租個伺服器就能從設計到開發到運營全包的風格,做 Quant 工作是不太可能想像的。
Quant 的業務,比如說做衍生品定價,只能在投行里才有平台讓你做這種工作,否則你自己設計一個衍生品出來,賣給誰?或者說交易策略研發,那就算你做純個人的 Quant Trader,也需要拿出幾萬塊錢來去股市開戶練手,可能什麼還沒學到這點錢就打水漂了,足以打消大部分人的熱情。高頻交易更是需要 colocation,交易資金等高端要求,不是普通人消費得起的,只能在專業公司里做。
這些因素決定了進入 Quant 行業的門檻很高。但一旦你入行了,會發現世界一下子變小了,和你競爭的都是那些和你一樣費了九牛二虎之力爬進來的人,不會說某一天突然發現一些黃毛小子擺弄了一些你沒玩過的設備,做出了超出你理解範圍的事,然後把你淘汰掉(不理解的話,可以回顧一下 Google 是怎麼革微軟的命,Facebook 又是怎麼革 Google 的命)。
所以在礦工這麼個小圈子裡,不愛折騰的大可以慢慢學慢慢做。你會發現你的上級領導就是那個有十幾二十年從業經驗,對行業的理解,各方面技能都完爆你的大叔,而不太可能是一個有著天才頭腦和想像力的年輕人。從職業發展的角度上說是一條比較穩定的路線。高技能前輩的存在,也讓你對前進的方向看的更清楚,對專業技能的積累有更深刻的認識。我自己從 IT 業轉過來,就明顯感覺到合作或接觸的人平均年齡和資歷都比以前高了很多;入行時間久了也漸漸搞明白難度在哪裡,不會擔心哪個年輕人能僅靠天賦或運氣就後來居上,這是很有安全感的。
當然凡事各有利弊,門檻高發展穩定的同時也意味著機會相對變少。的確也有人弄出一些天才策略而一夜暴富,但相比互聯網行業五花八門的創業奇蹟,這種情況的比例我感覺是比較少的,大多數人也就是天天干著這麼一份絞殺腦細胞的工作換取一份穩定的收入。特別是像我這種從 IT 行業轉過來的,回頭看看,小夥伴們可能都在玩什麼天使A輪B輪幾百幾千萬的融資了,身邊的 Trader 大叔還在為了今天交易賠了幾百磅而鬱悶,對比還挺強烈的。
所以對於想要入行的同學,我一向的建議是把你自己的興趣放在第一位,如果對數字(學)對交易感興趣,那麼入這行沒錯;如果是為了掙大錢征服市場,名片上的職位高端大氣上檔次,現實大概可能一定會給你看看他骨感的那一面。雙方都以為自己可以做對方的工作。
quant developer和程序員區別很小,可以看做是程序員進一步分化的結果。相比於網路公司程序員關注數據吞吐量而言,quant developer跟關注交易系統設計,系統峰值性能和實時性。
quant researcher和程序員聯繫很小,更像是phd學生進一步分化的結果。編程側重點也在科學計算方向。
但是這兩者是相互滲透的,當然,大部分見到的是researcher有很強的system方面的能力。
就說寫程序而言,developer 有80%時間在寫程序,20%時間想該怎麼寫;researcher 有20%時間在寫程序,80%時間在想該寫什麼。小亮是一家小私募的Quant,早早地來到了交易室,檢查了所有的策略,統計了下昨晚的商品期貨的收益,泡了杯咖啡,再看看時間才8點半,離期貨的開盤還有半個小時,股票市場還有一個小時才開盤,於是打開wind隨便看了看研報。
開盤以後,領導把小亮叫到辦公室,問了下面幾個問題:
- 昨天的策略回撤大嗎?為什麼創業板大漲,你的小市值策略大跌呢?沒有暴露在市值因子上嗎?
- 廣發證券出了一篇《深度學習之股指期貨日內交易策略》你今天研究下,下午收盤後給我們講講思想。
- 螺紋鋼現在頭寸多少?是否達到策略設計的單品種上限?今天我們賬戶里可用資金多嗎?是不是要做點逆回購?
- 分級A今天表現如何?衝擊成本咋樣?該策略回測對交易費用敏感嗎?
- 找個技術分享會,把布萊克-斯科爾斯期權定價定理的思想和推導過程給大家簡單講講?以及delta對沖的原理和邏輯?
- 最近機器學習、深度學習在量化中運用越來越多,咱們公司是不是也要開始接觸AI量化策略了?
小亮走出辦公室,回到了自己座位上,桌子上全是各種研報、書籍,其中包括《以交易為生》、《通往財務自由之路》、《量化投資策略與技術》、《海龜交易策略》、《寬客人生》、《高頻交易》、《主動投資組合管理》、《制勝交易系統》、《利用Python進行數據分析》、《Python基礎教程》。小亮不用實時盯盤,因為策略在雲端伺服器自動交易,頂多偶爾檢查下是否有bug。時間過得很快,一下子就到11.30,於是小亮就下樓吃飯去了。
小明是小亮的同事,是一個標準的程序員。小明和往常一樣,還是9.30才到公司,到公司以後也是被領導叫到辦公室了。領導問了以下幾個問題:
- 咱們現在只能做期貨和股票策略,策略太單一,最近的回撤有點扛不住啊,還是得開發一下固收策略,你最近先把債券資料庫建立起來吧。
- 昨天見了個朋友用輿情因子做alpha策略,收益曲線看起不錯,輿情數據估計只有網上爬取,你開發一個爬蟲project。
- 剛剛小亮反映跑一個多因子策略時間要10分鐘,你檢查下時間開銷,看能不能縮短下策略運行時間?
- 今天伺服器連不上了,你看下什麼原因?思考下備選方案,以後遇到同樣問題看能不能手機或郵箱收到報警信號?
- 小亮之前的那個CTA策略,還是得做參數尋優,你支持一下?看能不能開發個相關模塊以後他們直接拿來就用?
- BigQuant人工智慧量化平台、京東量化平台、RaQuant量化平台,你調研調研,我們後面試用一下,看看能不能開發一套類似的平台,搭建平台的時候要考慮好擴展性,比如以後開發機器學習、深度學習策略,最好要能兼容目前流行的開源AI框架。
小明回到了自己的座位,前台小妹正好送水果拼盤過來,開頭第一句話「小明,怎麼今天又是格子衫呢?」,小明沒有說話,靦腆地一笑,低頭開始干起活來,清脆的鍵盤敲擊聲音一直持續到12點50,等小明興奮地說道:終於搞定了,先在測試環境部署一下吧。聲音一下子弄醒了正在午休的小亮,小明連忙說道不好意思,小亮揉了揉惺忪的眼睛說道,沒事,反正要開盤了,該起來了。
小明懶得下樓,點了個外賣,戴上耳機又開始追劇了, 《矽谷》、《IT狂人》、《黑客軍團》、《奔騰年代》都在他的電腦硬碟里。
開盤之前小亮按慣例都會去一趟衛生間,出門的時候看見領導和前台小妹都在會客廳,又來了一位投資人,投資人正在耐心聽領導介紹(huyou),不時點點頭。小亮快步經過門口,生怕領導看到以後把自己叫進去,因為有時遇到特別專業比較懂策略的投資人想深入了解產品具體運行的策略,這種時候領導總會讓小亮來介紹,畢竟他是策略的開發人員和交易的執行人員,沒誰比他還懂。每次小亮和投資人聊天的時候,有些投資人總想深挖小亮的策略,但是小亮也不傻,介紹地比較模糊,一些細節也是隻字不提,畢竟領導也叮囑過,策略私密性必須保證。有時候,小亮介紹地比較高深,引用的都是金融經典理論和模型,特別學術范,投資人聽得雲里霧裡,前台小妹眼睛裡則充滿了欽佩和崇拜。
下午三點收盤了,小亮長舒一口氣,看了看賬戶,發現今天還賺了不少,這時候每天都是固定的工作,撰寫當日交易統計、賬戶風險分析和產品凈值簡報,一般10分鐘就能搞定,都有既定的模板,而且小明還將其封裝成代碼,每天運行下就可以,再人工檢查下,沒有問題的話就在公司群里簡單報告一下。
小明每天主要就是完成領導吩咐的工作,一旦完成的話就沒啥事了,更多時間花在quora、stackoverflow、github等社區溜達上,他在這些社區比較活躍,積累了不少粉絲。在公司里也非常熱情,經常幫助同事解決一些小問題,前幾天還幫小亮重裝了win10系統。但也有幫倒忙的時候,上次列印產品合同的時候,基金產品合同其實特別厚,還得一式三份,所以印表機卡紙,前台小妹覺得IT男肯定能修好印表機、電腦啊,於是找到了小明。卡紙本身是個小事情,但小明興奮地搗鼓了半天,印表機也被被拆了個零碎,最後也沒弄好,公司重新買了台印表機。這事還被領導說了幾句,那次雖然幫了倒忙但小明好像並不是很氣餒。今天小明任務很重,中午吃了飯以後簡單休息了下,就開始領導上午吩咐的事情,直到給小亮策略做性能優化的時候,才發現公司其他人都下班了。小明將今天的成果截了幾張圖發到群里,領導一頓表揚,告訴小明早點去吃飯,不要一味工作,也要勞逸結合。小明就回復了個笑臉,站起來看了看窗外,刷了會微博,又回到了座位上寫起代碼來。
很不一樣,量化主要包括衍生品定價、二級市場量化交易、下單執行、投資組合優化與風險管理等幾塊,每一塊需要的技能有重合也有不同。定價偏重於蒙特卡羅數值解這些numerical computing,二級市場偏predictive modeling,statistical learning/machine learning,execution是algorithmic trading,偏重於optimization,也會有short-term prediction,投資組合那些portfolio optimization。
程序員的skill set很不一樣,你幾乎不可能在計算機系學上面這些內容。程序員需求大的如網頁設計、資料庫管理等,當然現在machine learning比較火,它其實跟統計裡頭預測模型部分高度重疊,互相鄙視,互相撕逼,其實都差不多。總體而言計算機系偏重於數據量很大、結構很複雜的分析,比如互聯網、下圍棋等,統計偏重於數據量很小但因子很多的分析,比如基因與疾病的分析,50個病人樣本,5萬個因子,計算機系的圖像處理是1000億幅圖1已個因子,簡單對比Andrew Ng和斯坦福統計系那幫人的工作就知道了。多數時候Quant和程序員的區別很大。
首先需要明確程序員的定義。我們說的程序員並不是指的寫程序的人,而通常指的是主要工作為開發軟體的人。很多工作都會涉及到寫程序,甚至處理一下表格也要編下excel,但這都不算程序員。
如果是普通交易機構,銀行等Quant,更多時候他們會寫一些程序去處理數據。他們的目的是處理數據而不是開發軟體,寫程序只是處理數據所需的手段。他們通常不需要特別深刻的計算機知識,而更多的需要建模能力和統計能力。
在高頻交易公司中,軟體技術的重要性相比普通交易機構及銀行要高很多。除了通常的交易員(Trader),和Quant,甚至Quant Trader之外,基礎設施開發者(Infrastructure Developer)佔了很大的比重,這一部分人是標準的程序員,他們精通低延遲高性能相關的知識,有較完整的軟體開發方法,開發出的軟體是交易系統,而較少涉及到策略,軟體會直接放到Colocation(似乎沒有相應的中文詞)的伺服器上跑。另一部分是Quant Developer,這類程序員主要任務是用程序實現研究出來的策略。由於高頻交易對低延遲的高要求,這類程序也一般由精通低延遲的開發者來寫,而通常不會由純Quant兼任,以使得總體的延遲接近最低。這種程序員可能是Quant和程序員界限最模糊的職業了。同時做過轉瓦工和礦工的飄過:
我覺得最大的區別是礦工在紐約有些需要上夜班。我有同學在華爾街夜班每年30萬美元,這樣還辭職不幹了。
而非金融行業的程序員上夜班的幾乎沒有。
華爾街python緊急夜班處理的工資,都是按分鐘算的,與此相比,同傳翻譯都是低收入。
不過給老闆打工沒意思,無論礦工還是磚瓦工自己隨便承包工程就發財了。
在北美,和中國不一樣,只有初創期的公司才會吸引人才,因為可以分股票。大公司的普通職位不是很有吸引力。據說quant工資是cs的3-4倍。但據說quant turnover rate 很高,就是要不斷裁員。所以高票答案說的,比較安穩,我不知道是為什麼。。難道不是一類公司?難道你不是quant?難道你是碩士?難道你在英國或者大陸?
quant的bar非常高,我不知道國內如何,這邊主要是quantitative field做理論的phd 比較好,再不濟也是applied math, stats phd。一般只要top 6甚至top 4的名校(例如某fund只要mit,這是有道理的,人家課難)
然後turnover rate比較高。我知道有人拿到offer不去的。因為考慮到實際的pay/hour和工作的穩定性。
不知道國內什麼情況,請指教~
start up ipo是要看時機的。錢不都來自華爾街么。。要是fund沒錢,誰去投資啊。請不要把本末倒置了。
有追求的人我建議你去quant
Quant和Quant的區別比Quant和碼農還大,那麼多人還答得振振有詞,攤手
做電子演算法交易的通常:
工作內容:
礦工負責搞研究,模型開發,模型校準,數據分析。
碼工負責具體實現礦工寫出來的演算法投入生產,優化,debug。
工作時間:
礦工散養。
碼工24小時待命。
薪資:
礦工很高。
好的碼工比礦工高,不好的呵呵。
壓力:
礦工壓力來自PnL。
碼工壓力來自效率。
學業背景:
礦工數學物理。
碼工數學CS。
收入吧
物理老師和電子工程師有啥區別?~
Quant和碼農雖然教育背景可能類似,每天工作的日常和成功需要的技能還是有不少差別的。最近採訪了我的兩位朋友,感興趣的朋友可以看看這兩期聊天
碼農們的舒適生活 What it"s like to be a programmer
清華麻省之驕子漫談量化研究員(Quant Researcher)的日常
簡單來說,Quant除了要碼code,還有很多和客戶打交道的必要,要回答客戶問題,幫客戶做test,發表研究請客戶投票,出差去和客戶會談,等等等等離不開「客戶」二字。還有重要的一點就是Quant和碼農所在的金融行業與科技行業企業文化和工作環境也大大不一樣哈!
先說觀點,Quant和程序猿應該是各有偏重的。
Quant的主要工作應該在於策略研究上,而程序猿重在量化系統的開發上。這一點從很多招聘需求上可以看出來。一種招的是Quant,要求有金融工程背景,有量化策略的研究經驗,會基本的編程技能;另一種招的是開發(程序猿),要求有紮實的編程基礎,會寫C或者C++的更好,有能力搭建一套系統,當然了熟悉量化業務的當然最好,不懂也關係不大。
對應到公司內部的分工,Quant的主要工作往往是用Python做策略研究,有了好的策略,就可以在公司內部的回測平台、模擬平台做驗證,最後上實盤;而程序猿的工作是保障回測平台、模擬交易平台和實盤介面的可用性和穩定性。
以為自己 cqtpsm可以做對方的工作
說到底還是哲學的問題
數學家跟物理學家的區別
推薦閱讀: