并行计算在 Quant 中是如何应用的？
具体的说风险资本这块吧. 经常面临的一个问题就是一个大的portfolio, 几十或上百万个instrument ,用蒙特卡罗生成数万甚至数十万场景,并在每个场景下计算每个instrument的价值变化，最终生成整个portfolio的PnL分布来计算资本率。注意很多金融产品都是复杂的exotic derivatives,因此单纯的基于delta, duration 这样的灵敏度因子是不够的，需要使用full revaluation model。这样的数据每天都需要生成，自然需要考虑并行化。 并行架构，金融机构常使用的是IBM Platform Computing 开发的Platform Symphony, 基于格点计算，通过API接口可以很方便地在Linux Cluster上实现分布式计算。开发者只需指定高端的并行策略，比如是计算任务划分是基于蒙特卡罗路径还是instrument set,而无需考虑资源调配，结点通信等的具体实现细节。 具体应用：资本计算（监管和经济资本），对手风险（CVA/FVA), Margin的计算。
首先投行的quant library 基本都是单线程的。进程级别的并行计算一般是IT的活。因为quant team 必须分清楚自己该专注的事情是 pricing, risk, calibration 这些事情。并行的问题在大多银行中都是交由 library 用户之一的 IT来解决。当然还有原因是大多数quant (虽然都以为自己编程很牛)根本不怎么懂编程，更不用说并行计算了。。。 接下来简单讲讲并行计算如何应用在quant library上 。很简单，基本就是把大任务合理地切成小任务，抛到网格中并行计算，然后再把结果收集合并起来。 portfolio可以切成trade; trade 可以切成 legs;整条利率曲线可以切成很多个基准点 ;delta 要算两个点，Gamma 要算三个点，这些点可以并行。等等等。当然你要考虑很多其他细节问题，比如，如果历史数据显示某个小任务比较慢，你因该会想到先把它抛到网格上计算。又比如果模型calibrate 需要很长时间，而trade 算起来很快，这个时候你就会考虑把同一模型的很多这样的trade打包一起算 网格系统有银行自己开发的有第三方的，第三方比较出名的比如DataSynapse(现在被收购了)。