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