《quantitative finance with cpp》阅读笔记1
作者:yunjinqi   类别:    日期:2023-11-23 15:47:07    阅读:161 次   消耗积分:0 分    

本系列文章来自于很多金工和cpp相关的英文资料,并使用chatgpt翻译成中文,以便快速理解文中的含义,仅供学习参考。


在自Black和Scholes(1973)的开创性文章以来的四十年里,定量方法在金融风险评估、定价和对冲中已经变得不可或缺。这在定价衍生金融工具所使用的技术中最为明显,但也渗透到金融的所有领域。实际上,期权定价范 paradigm 越来越多地应用于超越传统认购和认沽的情况。除了更复杂的衍生品和结构化金融产品,这些产品结合了多个风险来源,期权定价技术也被用于从信用风险评估到对实际(例如工厂)投资替代方案的估值等各种情况。

随着量化金融的发展变得更加复杂,计算工作量也变得更加庞大。要使大多数技术实际上有用,就需要进行高效的计算机实现。模型,特别是那些融合了多个风险来源的模型,也变得更加复杂。然而,它们通常在底层方法和方法中表现出令人惊讶的模块化和共性。理想情况下,我们希望在实现这些模型时能够利用这一点。

C++ 是量化金融的事实上的行业标准,可能是由于这两个原因。特别是在主要金融机构内部实现的模型,计算密集型算法通常是用 C++ 编写的,并链接到充当前端的电子表格软件包。C++ 的面向对象和泛型编程特性在正确使用时,允许在不同模型之间高度重用代码,并且将算法和数据封装在定义良好的接口下使得实施模型更加容易。

面向对象编程(OOP)是一个载入的概念,已经有很多关于其优点和缺点的文章,伴随着学术努力来划定这种范 paradigm 与其他编程范 paradigm(如泛型编程)之间的界限。这本书不是一份意识形态宣言。如果在这里的方法中有任何教条,那可能就是追求“一次实现”,这意味着软件中的任何特定功能都应该在代码中的一个地方实现 —— 其他一切都从实用主义的角度来处理,遵循“因地制宜”的原则。虽然在本书中呈现的代码中当然有许多传统的“对象”,例如 C++ 的抽象基类 TermStructure的实现是以 C++ 为基础的,因此可以用两种方式之一来阅读。


一方面,它是一本教科书,以实用的方式介绍计算金融,重点放在实际实现上。除了包含完全功能的 C++ 代码外,还包括额外的 C++ 源文件和更多的示例,本书的配套网站2还包括每一章的一套实际练习,涵盖了各种难度和问题复杂度。虽然代码的呈现是为了传达概念,而不是作为一个成品软件产品,但它仍然可以编译、运行,并处理完整而非“玩具”问题。

基于 C++ 类和模板的方法突显了各种方法和模型共同的基本原则,而实际的算法实现则引导学生更深入地理解。通过从纯理论处理转向使用事实上的行业标准编程语言实施模型,学生还极大地增强了她在该领域的职业机会。

另一方面,本书还可以作为希望在交易或研究环境中实现模型的人的参考。在这个功能中,它为风险管理和期权定价中一些最常见的方法提供了配方和可扩展的代码构建块。

本书分为八章。

第一章介绍了 C++ 编程语言的必要元素。目标是尽可能地使本书自给自足,尽管没有先前接触 C++ 的读者也可能希望参考这个主题上的众多优秀教科书之一。

第二章提供了一些基本的构建模块,这些模块将在后续章节中用于实现金融模型。更通用(即非金融)的构建模块在很大程度上借鉴了优秀的开源项目,特别是 Boost 库和用于数值数组的 Blitz++。数值积分、优化和根搜索也在本章中讨论(并实现),以在后续章节中需要的程度上。本章的其余部分涉及表示和操作利率期限结构。在这个机会上,讨论了期限结构拟合、插值和基本固定收益工具的定价。


几乎所有期权定价的基本结果都可以在格模型中进行说明,并且它们本身也是有效的数值方法。这是第3章的主题。在统一的框架中考虑了两类广泛的格模型:单一基础资产的二项模型和利率期限结构模型。

转向连续时间框架,第4章介绍了 Black/Scholes 模型,对于大范围的应用仍然是主导范式。关键假设是基础资产具有确定的比例波动率。每当这一假设成立时,通常会得到类似 Black/Scholes 的衍生品定价公式。这些定价公式是针对每种期权支付的,但具有很强的共性,可以利用它们在单个("典型")公式中定价大类支付的特性。从确定性比例波动率的具体函数形式抽象出来是一个重要的面向对象的特性。

正如第4章所示,衍生金融工具的无套利价格可以表达为偏微分方程的解。在这些方程不能通过解析方法求解的情况下,有限差分方案提供了一组备用的数值方法。第5章在一个共同的接口下介绍了一些这样的方法。

第6章注意到,现在市场上许多期权合同都在进行活跃交易,因此它们已成为信息的传递者,模型需要校准到这些合同。在极端情况下,对于一系列行权价的(市场报价的)期权价格,可以提取未来基础资产价格的隐含风险中性分布。实际上,构建这样的隐含分布与隐含波动率的无套利插值相关联。隐含波动率因期权的货币性而异,这使得 Black/Scholes 对确定性比例波动率的假设无效,因此考虑了随机波动率作为一种替代。

第7章介绍了蒙特卡洛模拟方法。在许多情况下,MC 模拟是最容易实现的数值方法,而对于高维问题,它通常是最有效的。各种方差缩减技术可以显著提高效率。我们还将考虑通过模拟进行估值不简单的情况,即具有提前行权可能性的期权。该章节以对拟随机方法的讨论作为对伪随机蒙特卡洛的替代结束。

作为压轴,第8章涵盖了一个可行的多因子连续时间利率期限结构模型的实现,即 Heath、Jarrow 和 Morton(1992)的 Gauss/Markov 案例。它广泛借用了前几章介绍的构建模块,例如第2章中的利率期限结构,第4章中的确定性比例波动率解析解,以及第7章的蒙特卡洛模拟引擎。

在附录中,读者将找到有用的补充信息。附录 A 展示了如何使用 Microsoft Excel 作为实现的模型的前端,从而使实施者免除了编写图形用户界面的繁琐任务。在附录 B 中,演示了如何使用免费可用的软件工具,从适当注释的 C++ 源代码生成 HTML 文档。

量化金融已经成为一个非常广泛的领域,而本书涵盖的模型和方法只是一个入门子集。在这个子集之外,还有无疑非常重要的关键模型和方法。仅举几例,这包括更复杂的有限差分方法、本地波动模型、早期行权溢价的上限蒙特卡洛估计和 LIBOR 市场模型。尽管如特别是第8章所示,本书采用的基于 C++ 类和模板的方法允许在更复杂的背景中重用在较简单的背景中引入的内容,以解决类似问题。


版权所有,转载本站文章请注明出处:云子量化, http://www.woniunote.com/article/366
上一篇:arrow系列32---环境变量
下一篇:《quantitative finance with cpp》阅读笔记2-为什么你应该学习CPP?