如何提升 ETF 期权隐含波动率和希腊值的计算速度?

时间:2023-02-15 14:07:03

期权的隐含波动率可以反应市场对未来的预期,通常使用牛顿法和二分法来计算。这两种方法都需要频繁迭代,且迭代次数不能确定,核心代码无法向量化,因此只能通过循环来逼近求解。这就导致在期权相关计算中,隐含波动率往往容易成为性能的瓶颈。

DolphinDB 的计算逻辑使用脚本语言编写,但底层调用的是 C++ 代码,存在脚本解释的过程。为了提高脚本的执行效率,DolphinDB 从 1.01 版本开始支持即时编译(JIT)功能,特别适合于无法使用向量化运算但又对运行速度有极高要求的场景。

本教程将基于客户的实际需求,以二分法计算 ETF 期权的隐含波动率及希腊值为例,为大家示范如何使用 DolphinDB 的 JIT 功能给计算过程加速,并与 C++ 原生代码进行了计算性能对比测试,结果表明 DolphinDB 脚本计算耗时为 C++ 原生代码的1.5倍。

1. 数据表结构

1.1 期权日频数据表

字段

字段类型

含义

tradedate

DATE

交易日期

sym

SYMBOL

标的代码

codes

SYMBOL

期权合约代码

closeprice

DOUBLE

日收盘价格

etf

SYMBOL

期权合成价格的两个合约代码

etfprice

DOUBLE

期权合成价格