financialFoam 及其在金融衍生品定价中的应用

OpenFOAM 包含一个求解 Black–Scholes 方程的求解器 financialFoam,自带的算例是欧式看涨期权的定价问题。这篇文章特别适合 CFD 行业中对金融工程感兴趣的朋友。

看涨期权是一种合约,又被称为认购期权,顾名思义,合约持有者有权利在未来某一时间(行权日)以某一特定价格(行权价)买入一定数量的标的资产(一般为股票)。欧式期权只能在行权日当天行权,而美式期权可以在行权日后一段时间内行权。

布莱克-舒尔斯模型解决了欧式期权的定价问题,具体介绍如下

布莱克-舒尔斯模型(英语:Black-Scholes Model),简称BS模型,是一种为期权或权证等金融衍生工具定价的数学模型,由美国经济学家迈伦·舒尔斯与费雪·布莱克首先提出,并由罗伯特·C·墨顿修改模型于有派发股利时亦可使用而更完善。由此模型可以推导出布莱克-舒尔斯公式,并由此公式估算出欧式期权的理论价格。此公式问世后带来了期权市场的繁荣。该公式被广泛使用,虽然在很多情况下被使用者进行一定的改动和修正。很多经验测试表明这个公式足够贴近市场价格,然而也有会出现差异的时候,如著名的“波动率的微笑”。
该模型就是以麦伦·休斯和费雪·布莱克命名的。1997年麦伦·休斯和罗伯特·墨顿凭借该模型获得诺贝尔经济学奖。然而它假设价格的变动,会符合高斯分布(即俗称的钟形曲线),但在财务市场上经常出现符合统计学肥尾现象的事件,这影响此公式的有效性。
布莱克-舒尔斯模型 维基百科,自由的百科全书

finacialFoam 使用的方程形式为

[公式]

式中, [公式] 是未知量,代表期权价格,它是标的资产价格 [公式] 和时间 [公式] 的函数,时间 [公式] 的单位一般是年; [公式] 是年化无风险利率; [公式] 是股票收益的波动率(标准差)。方程的推导过程见维基百科 Black–Scholes equation

算例的位置是 $FOAM_TUTORIALS/financial/financialFoam/europeanCall/,目录结构和其他 CFD 算例一致,都包含 0、constant 和 system 文件夹,执行 blockMesh 和 financialFoam 运行算例,速度非常快。从上面的方程也可以看出,这个算例的“几何”是一维的,blockMeshDict 定义了一个简单的六面体,只有x方向有意义,其余两个方向只有一层网格。

计算结果在 postProcessing 里,绘制出的结果如下

两个特定时刻,期权价格随标的资产价格的变化规律

图片来源:https://www.xsim.info/articles/OpenFOAM/tutorials/financial-financialFoam-europeanCall.html

实际上,欧式看涨期权的价格有解析解,网上有很多现成的计算器,这个求解器的实际意义不大。从constant/financialProperties 文件来看,这一求解器很可能是为改进的 B-S 方程设计的,文件中有几个变量并未被求解器调用,删除后仍可正常运行。

这一求解器展现了 OpenFOAM 广阔的应用空间,也为 CFDer 指明了一条转行发财的道路 🙂

常恭

作者: 常恭

略懂 OpenFOAM

发表评论