雪球(Snow Ball)定价实作:使用Heston模型与GPU加速运算

文章探讨了在金融工程中,使用GPU加速对雪球结构产品定价的计算效率提升。通过对比固定波动性的GBM模型和随机波动性的Heston模型,展示了GPU计算在大量路径模拟下的优势。作者指出,虽然Heston模型理论上更精确,但在交易员要求的高速计算下,局部波动性模型结合有限差分法成为实际操作的选择。此外,CPU并行计算在某些情况下甚至优于GPU,且GPU能在1秒内完成13万条路径的模拟,满足交易需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

去年底到苏州待了两个多月,与一些使用QuantLib的朋友在上海见面,聊了一些程序开发的问题。我就问了一位朋友,他是如何实作雪球的定价?因为我在他的部落格看到他最近写了不少有关Heston模型的文章,以为他会实作Heston的模拟法来定价,想跟他讨论模拟上的一些细节。没想到他的回答出乎我意料之外,竟然是在使用局部波动性(Local Volatility, LV)的模型在定价。

他跟我说,如果使用仿真法,交易员要求在10万条路径的仿真下,要在1秒钟完成计算,以Snow Ball需要逐日模拟的条件,无法达成这个要求。即使是固定波动性(Constant Volatility, CV)的几何布朗运动过程(GBM)中,只有一个随机变量都做不到这样的要求。当然也不用去考虑Heston的随机波动(Stochastic Volatility, SV)模型,因为Heston模型有两个随机变量,仿真的运算量更大,想都别想。他跟我说,他最后是用有限差分法,搭配Local Volatility模型来进行计算的。

我心中觉得这似乎是亚洲华人地区金工人员的通病,大家的理论模型能力都很强,但是实作的IT能力却明显不足。而实作能力的不足,最终将限制理论实际应用的范围。现在国际投行在开发外汇、股票相关的结构商品,大都使用随机波动性(SV)模型。固定波动(CV)与局部波动(LV)模型已经很少使用了,因为前者(CV)无法解释波动性Smile的现象,后者(LV)在动态避险上会产生反效果,甚至比前者的效果还差。但是在实务上,我发现真正会使用SV来定价的金工人员还很少见。

为了比较模型上的差异,也为了展示高能运算的成效,我就自己拟了一笔雪球的契约规格,以沪深300指数为标的,进行定价的计算。我打算以五个小范例,来进行相关的讨论。

范例一:固定波动性的GBM过程,CPU单线程计算

范例二:固定波动性的GBM过程,GPU计算

范例三:随机波动性的Heson过程,CPU单线程计算

范例四:随机波动性的Heson过程,CPU平行12线程计算

范例五:随机波动性的Heson过程,GPU计算

我首先整理了2023/3/24的沪深300指数期权报价资料,建构出波动性曲面(图一)。然后将以此数据求得ATM的波动性曲线,这条曲线是进行范例一与范例二中计算时,配合BS模型GBM过程定价之用。

接下来我以图一的波动性曲面数据,进行Heston模型参数的校正,我使用2023/3/24的Shibor一年内的报价利率,来建构利率期限结构。使用非线性最适化算法,Levenberg-Marquardt法,校正出五个Heston模型参数(图二)。LM法是欧美专业金融软件,如NumeriX、FinCAD等使用的标准方法。校正速度非常快,比Simplex法效率高10倍以上。

然后我就撰写了这五个范例的计算程序(图三),其中CPU单线程的BS模拟定价,MTM = 97.073,Time = 2.472(1X)。GPU的BS模拟定价,MTM = 97.103,Time = 0.603(4.1X)。CPU单线程的Heston模拟定价,MTM = 95.426,Time = 4.251(0.58X)。我也使用CPU的12线程平行运算来模拟定价,MTM = 95.300,Time = 0.536(4.6X)。另外,GPU的Heston模拟定价,MTM = 95.538,Time = 0.683(3.6X)。

首先,令人意外的是BS模型与Heston模型价格差异不小,在单线程CPU上,97.072 vs. 95.426,这表示BS与Heston的权利定价比为(100-97.072) vs. (100-95.426),亦即2.928 vs. 4.574。Heston模型的计算时间约为BS模型的1.7倍。

其次,CPU的平行运算效果相当不错,我使用12个线程来平行处理,Heston的模拟时间(0.536)竟然小于GPU的模拟时间(0.683)。

最后,13万条的路径仿真,不论是固定波动性还是随机波动性的模拟,在GPU下都能在1.0秒内完成,达成交易员的速度要求。

我使用的机器规格为,Windows 11 专业版,32 GB RAM,CPU为AMD R5 7600X (6 Cores, 12 Threads),GPU为NVIDIA Geforce RTX 2060 12GB RAM。CPU平行运算是使用.Net Framework的TPL链接库。开发工具为Visual Studio 2022,开发语言为C#。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值