金融風險管理 (Financial Risk Management) 對編程的要求有多高?
之後想打算在投行或基金公司做market risk, credit risk analysis這一塊,但現在不大明白這種工作編程運用量有多少。在linkedin上搜索倫敦的職位,有的需要編程經驗,有的不需要,很不解。在國內從事相關工作的也歡迎發表意見~
作為對@332EM37回答的補充- market risk modeling對於編程的要求亦不低。參見我以前的回答http://www.zhihu.com/question/26244691/answer/33124083。大多數情況下(這裡暫時不討論CVA), market risk的基本模型並不複雜,主要是對幾種基本風險因子統計分布的建模,主要挑戰在於處理的數據量很大,無論是時間跨度還是截面跨度,如exchange rates/equity market firm level以及index level的回報率數據(1維),interest rate/credit spread term structure time series(2維), 隱含波動率/base correlation cube time series(3維)。對於這些數據進行整理和分析,往往需要精通資料庫及Python(Excel 通常力不能及)。模型的擬合(calibration)往往要用到如分位數回歸,PCA, ICA以及優化等技術,這方面固然可以使用如Matlab, R以及Python 等現成的工具包或軟體庫,但是這些工具往往比較泛,實際應用中往往要結合具體需要做一些進一步的處理,自己寫些code是避免不了的。最後,真正在production 上用Monte Carlo生成上萬個場景,對每個場景計算投資組合里每個資產的價值,則是極其耗時的計算,通常需要採用分散式計算。即使這樣,提高運算效率依然十分重要。設計pricing或者valuation model的時候必須要儘可能地優化實現,採用合理的近似避免不必要的運算。比如某些日期的貼現因子經常用到,是否可以考慮caching. 又如計算CDO價格時,許多量可以在不同的instruments 之間共享,因此許多計算可以整合。此外對於simulation model, 採用importance sampling/antithetic variables等降低variance從而減少場景數的做法也經常採用。所有這些都需要很強的偏程功底,即使你不自己寫程序,了解這些內容對於把握模型整體效率方面依然十分有用。
對於更複雜的任務,如CVA的計算,往往牽涉cross asset和multi-step simulation, 則更需硬體方面的支持以及相關的編程技術,如GPU programming.謝邀。
說實話market risk我不太懂,業務不相關。但是credit方面或者商業銀行的risk可以稍微說一下。以下內容只對credit risk modeling/商行risk modeler/quantitative risk analyst/statistician適用。而且基本上局限於美帝,歐洲並不太懂,所以僅供參考吧。作為modeler的話基本上75% coding, 25% presenting。有的機構還得另花50%時間implementing。個人感覺對編程的要求主要集中在以下幾點:
1.能不能在有限的時間裡面隨心所欲/隨老闆的要求寫出準確無誤的code;2.有沒有自己成熟的對modeling technique/approach的思考,比如一套general approach,並且能在validation面前輕鬆站穩腳跟;當然基本上入職之後都會用組裡現成的,但是會別人不會的東西才能outstanding。舉個簡單例子,最簡單的GLM的話,假設我的variable pool里有100k個variable,variable selection你用什麼標準?怎麼控制multicollinearity?3.能不能有效開發新方法,比如以往的PD是用logistic,問題很多,能不能有效在固定時限內研究並實現新模型/新演算法;其他細碎的還有很多,時間晚了就不一一敘述了。
但是總的來說:雖然大部分時間在編程,但最重要我個人以為並不是「寫」代碼,而是你對金融工程(針對我不熟悉的領域)、對公司業務/產品和對概率and/or統計理論的理解及實現能力。至於怎麼寫代碼,怎麼debug,在我所熟知的領域主要靠的是experience,入職的時候既不會期待你已經是「代碼大神」(當然是也毫無壞處),也不會要求你現場編程(但是看看代碼還是會問的,僅僅是我所熟悉的領域,其他領域不清楚)。雖然你現在覺得financial risk management好像可能只是一類工作,其實裡面也許大概有20種完全不同的position。比如risk manager, risk officer, risk analyst, quantitative risk anaylst, data analyst, data scientist, risk modeler,model validation,etc.不同機構對崗位的劃分也不一樣。一般招聘的時候都會寫明對編程的要求,因此無法一概而論。單單從你的問題來說,可以說大部分risk崗位尤其是非傳統的崗位應該會比較傾向於編程實現能力,編程語言更是因機構和崗位而異,從python/cpp到SQL到R/SAS什麼的都有。應該說你的這些疑問,是電話面試時候跟面官溝通並體現自己的興趣和理解的好問題。以下分類是從一個做risk的學長那裡聽說的,通過自己的觀察基本屬實:
1. Risk reporting,計算每天的風險敞口(delta gamma vega theta那些),然後提交給風控。是front office的職能。我沒見過在FO有專門做這個的人,因為現在已經基本自動化了。
2. Risk management,傳說中的風控,權力很大,風險敞口變化太大她們會來找我們,PnL很大(正的或者負的)他們會來找,交易對手方有credit risk他們也會來找。可以決定一個desk能不能留有某些頭寸(一般聽了他們的「建議」都會賠錢)。不需要懂編程。
3. Risk quant,負責研究各種風控模型,就是哇那一些。需要數學建模能力好。搭建risk reporting system的也可以算risk quant。你問運用量?那是很大很大。每天的風險數據都是overnight運行出來的,還得隨時更新。analysis可能編程需求少,但是modller,strats,quants編程量很大。至少我實習的時候有什麼要做的或者想法都是程序實現。
零。我太太就是某大行的market risk manager, 她編程白痴。
我就是做Risk的。
樓至的問題屬於標準的耍流氓。
Risk在銀行是一個很大的分支。 在risk division下面有很多不同的function。 有做risk management的,有做change management, risk analytics, model validation, reporting etc. 每一個部門對於編程的要求都不一樣。 而且即使是同一個部門,有些Role需要編程,有些不需要。 有時候一個team大家都不會編程老闆就決定招一個會編程的給大家打下手的也是很經常。
所以你看清楚招聘信息最重要。 如果人家要會編程的,一定會註明的。
然後我建議你最好了解一下risk基本的演算法,如果你連VaR是什麼都不知道,會不會編程意義不大。分兩類金融機構,自建派和購買第三方派。自建派得找一個完備的團隊去開發,都是上百號人,有外包開發的有測試的。購買第三方的就是得有自己的驗證團隊,這個對編程要求比較高。目前,大部分風險指標都是eod的,但是也有個公司顛覆行業可以做到real time的,滿滿的都是技術。
不請自來,知乎首答
risk analysis可以分為quantitative和qualitative兩個方面,一般而言,前者需要編程基礎,後者不需要。
quantitative顧名思義是對內外部數據進行分析,從而計算資本金等數字,而計算的方法就是編程建模。
qualitative則是對進模型的數據進行內容質量上的分析,比如是否有遺漏或錯誤的數據,某些分類是否符合巴塞爾指引等等。
建議研究一下jd所指是哪個方面。以上看答案,感覺大部分Risk的分類都提到了,但是唯獨漏了Research。可能也是因為Research hub多在專門公司或者大銀行的歐美總部。
比較完整的模型一定是比較複雜的,只有比較簡略,估算一下,不成熟的模型才會像某些人說的那樣,不出200行code可以寫完。那種本科生作業一樣的模型,一般不會在歐美市場使用。因為比如Credit Research,最終的Price就是由產品的Risk決定的。不僅僅在二級市場,在一級市場,考慮兼容併購,發行債券,能盡量準確的量化Risk,是非常重要的。
回到問題。。。
做research的話,coding只是工具,然而這意味著要對coding很熟悉。現在的碼,和過去用計算器是一樣的。為什麼要用計算器呢?因為有些東西普通人腦算得太慢。為什麼要碼呢?因為有些東西普通人腦/計算器算不出來。
所以若是要設計前沿的模型,一定是對碼爛熟於心的,像說話一樣的去試驗自己的假設。至於用什麼語言,那就多是看公司文化和傳統了。不過無非就是R ,python,SAS, C++,C#,C,Java中的,academic 會用matlab和stata.這些語言,oop會一種,統計類的會一種,語言本身學起來就滿容易了。就信用風險管理來說,IT方面 SAS是最基本的。要會最基本的 linear regression, logistic regression,幾個假設檢驗。R也是一個很好的補充。當然,最重要的不是 code技能,而是溝通能力,以及對產品的理解。
如果要做模型建制就需要較好的SAS/R/Python編程技術並熟練掌握資料庫技術(credit risk modeling),或者C/Matlab/VBA也湊合(market risk)。如果是只做risk analysis,則不見得,有大量現成工具、渠道獲得風險量化結果,看懂這些結果並不需要編程本身,而職業發展重點可集中在風險如何管控,但是缺點是如果是計算結果有什麼問題則判斷不出來。
中國最大的風險是政策風險,搞個模型你搞得過黨和政府?
一般來說 VBA/SQL middle office 的 risk 夠用。matlab/R/SAS 會用更好。
推薦閱讀:
※在策略參數優化時,如果無法得知參數集的目標函數分布,如何判斷參數是否穩健?
※結構化(多因子)風險模型中,怎樣理解因子暴露度,在實踐中如何得到它?
※程序狗沒有金融學位申請Quant職位會遇到瓶頸么?