风控每日一问:
金融风险管理 (Financial Risk Management) 对编程的要求有多高?
权威回答:
-
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 的基本模型,基本风险因子统计分布的建模
-
掌握利用Python 和 数据库对数据进行整理和分析
-
模型拟合优化需要很强的编程功底,编程水平时时刻刻需要提升
-
提升运算效率很重要