二十三、QuantLib与GPU金融高速运算(1)CUDA & OpenCL
发布网友
发布时间:2024-10-01 23:38
我来回答
共1个回答
热心网友
时间:2024-12-09 21:01
在金融市场中,效率性市场假说是一个关键概念,其中一个关键点是市场能够有效地反应讯息。金融资产的价值依赖于投资者对未来现金流量的预期,这需要通过信息分析来判断。然而,在实务中,投资者进行信息判断通常需要大量的运算来完成。例如,使用时间序列分析方法或机器学习算法进行分析,都需要计算机进行大量的运算才能得到结果。
随着市场的竞争日益激烈,交易的节奏已经从以往的一天一次的低频交易转变为一天多次的中频交易,甚至以秒为单位的高频交易。想要提前一步反应市场信息的变动,就需要强大的运算能力。传统上,要获取大量的运算能力,一种方式是使用大型主机系统,例如超级计算机天河一号、天河二号、太湖之光等。但这些资源可能并不适合一般投资者。而如今,越来越多的超级计算机使用多核CPU和众核GPU作为高速运算的组件,以达到超高的运算目标。
金融市场是一个对运算力永远都无法满足的市场,为了获得信息处理的优势,它对运算力一直处于饥渴状态。如何调度更多的运算力,一直是金融工程师的烦恼。以我当年在银行交易室开发结构商品系统为例,会计处每日结账的时间压力就是一项直接的挑战。当时银行帐上有4,000多笔的Target Redemption Forward(TRF)结构商品部位,每笔交易都需要使用模拟法进行大量的计算,才能产生正确的价格和风险参数。平均而言,一笔交易需要产生4亿个随机数并进行后续计算。如果不能有效处理,会计部同仁每天可能都要工作到凌晨才能回家。
这个问题对于大型银行只会越来越严重,因为财富管理业务在银行的营收比重日益上升,结构商品在理财业务的重要性不言而喻。随着Basel III的上线,监管的计算要求日益提升,金融工程师必须打破旧思维,寻求新方法,否则大家岂不都不用下班了。
早在2008年,我在书局闲逛时发现了一本关于GPU期权定价的专书,回家研究后发现绘图卡竟然可以用于金融运算。我打算购买一张NVIDIA的绘图卡来试试效果,却发现相关教学资料并不充足。
当我认真学习QuantLib时,发现Mark Joshi的网站上有一个项目正在进行。该项目旨在将GPU运算能力导入衍生商品的模型计算中。当我看到这个项目时,我深知这是解决金融运算痛点的可行方案。我将他的技术文章和程序代码下载到计算机上开始测试和练习。
我将Joshi编写的程序代码逐一在我的计算机上测试,发现有些片段无法在我的GPU上执行。可能的原因是他使用的是高级的专业运算卡,而我使用的是Geforce绘图卡。我逐一修改,最终都能在我的机器上顺利执行。
Joshi使用NVIDIA的CUDA开发GPU代码,CUDA是NV的专属架构,其他公司的硬件加速组件无法使用。为了学习CUDA,我在网上发现牛津大学Mike Giles教授的CUDA课程教材。Mike Giles教授的讲义除了有CUDA的介绍,还有OpenCL的介绍。OpenCL是由Apple主导推出的另一个高速运算架构,包括Intel、AMD、IBM都有加入这个非NV联盟。
通过这些文件和NV开发工具CUDA的官方文件,我自学了GPU的程序开发,并将其与QuantLib结合起来,完成了金融高速运算的要求。
------------------------------------------------------
这一系列关于QuantLib使用的文章在网上引起了广泛关注。我计划在明年(2024年)四月和七月分别安排Python和C++的计算机实操演练班,课程以网络录制视频播放为主,部分时间为在线直播。让大家有机会深入了解QuantLib,发挥它的价值。此课程以实作开发见长,不会以理论模型推导教学为主,而是简单交代模型的使用重点。
课程分为三阶段,第一阶段以QuantLib的使用到BS模型所有相关的计算为主,会涵盖解析解、二叉树、有限差分法、与模拟法的应用。除了Vanilla期权,还会包含其他常见的Exotic期权的使用,如Barrier、Binary、Asian、Lookback、Double Barrier等。第二阶段以局部波动率(LV)、随机波动率(SV)、随机局部波动率(SLV)模型的使用为主。第三阶段以GPU金融程序的开发为主,交代如何开发出像本文提到的CUDA与C++/CLI开发技术。预计第一阶段课程33小时,第二阶段课程30小时,第三阶段课程30小时。此课程的听众是以硕士学历的业界工作人士为对象。
Python班以Python为主要开发工具,进行衍生品的定价与交易应用,进阶的课程会混用PyCUDA与CUDA C语言来开发GPU程序,但深度比C++班稍浅。C++班需要有基本的C++使用经验,如果没有经验,还有半年时间可以自学。C++课程会混用C#、C++与CUDA C语言来开发。课程大纲将在12月15日前公布,并开始接受报名。
据我所知,内地很少举办这类金工技术开发的实作课程。如果你对这个课程感兴趣,可以将联络方式发送到我的电子邮箱,我会通知你来报名参加。我的电子邮箱:andydong1209@gmail.com,来信请注明有兴趣QuantLib开发实作班即可。我的WeChat ID:andydong3137,也可以联系,也请注明有兴趣QuantLib开发实作班。