开源金融计算库 Quantlib的学习与使用
Quantlib介绍
对于金融行业,有太多的金融模型和金融策略。对于不是金融行业出身的人来讲,Quantlib提供了一个开源工具库。
QuantLib 是一个免费、开源的软件库,旨在为量化金融计算提供一个统一的、综合的软件框架。QuantLib 的源代码由 C++ 编写,得利于 C++ 在面向对象和泛型编程方面强大的表现力,以及C++对贴近底层所带来的出众执行效率,QuantLib 一方面可以清晰地描述各种复杂的金融产品,同时兼顾了计算速度。
QuantLib官网
鉴于 C++ 版的 QuantLib 取得了巨大的成功,许多开源爱好者把 QuantLib 拓展到了其他语言和软件环境下,在 C#、Java、Perl、Python、Julia、Ruby 和 R 等语言中都可以找到对 QuantLib 的封装;在 Microsoft Excel 和 LibreOffice Calc 中也有 QuantLib 的插件。
Quantlib for python
QuantLib本身是使用C++写的,通过SWING技术封装后可以在Python调用。
Quant-Python Documentation
QuantLib-Python 尽可能的移植了 C++ 版本的架构和使用方法,提供的功能也是最多的。可以按照下面命令进行quantlib-python 的安装:
pip install QuantLib
QualLib的主要功能
QuantLib 所提供的功能聚焦在两大领域:
-
期权定价以及相关计算;
-
固定收益产品定价以及相关计算。
与期权相关的主要内容有:
表示亚式期权、欧式期权、美式期权、百慕大期权等等不同种类期权的数据结构;
基于解析法、有限差分法、二(三)叉树法和 Monte Carlo 的定价引擎;
多种波动率模型,例如 Heston 模型、GARCH 模型和局部波动率模型;
校准波动率期限结构的方法。
…
与固定收益相关的主要内容有:
表示固息债、浮息债、零息债、通胀挂钩债券、利率互换、可转债等等不同种类固定收益产品的数据结构;
表示收益率期限结构的数据结构;
现金流分析;
若干种收益率曲线的插值方法;
若干种计息方法,例如 Actual / 365、Actual / 360、30 / 360 等等。
…
使用举例
import QuantLib as ql
import pandas as pd
yts = ql.YieldTermStructureHandle(ql.FlatForward(2, ql.TARGET(), 0.05, ql.Actual360()))
engine = ql.DiscountingSwapEngine(yts)
index = ql.USDLibor(ql.Period('6M'), yts)
schedule = ql.MakeSchedule(ql.Date(15,6,2021), ql.Date(15,6,2023), ql.Period('6M'))
nominal = [10e6]
fixedLeg = ql.FixedRateLeg(schedule, index.dayCounter(), nominal, [0.05])
floatingLeg = ql.IborLeg(nominal, schedule, index)
swap = ql.Swap(fixedLeg, floatingLeg)
swap.setPricingEngine(engine)
print(f"Floating leg NPV: {swap.legNPV(1):,.2f}\n")
pd.DataFrame([{
'fixingDate': cf.fixingDate().ISO(),
'accrualStart': cf.accrualStartDate().ISO(),
'accrualEnd': cf.accrualEndDate().ISO(),
"paymentDate": cf.date().ISO(),
'gearing': cf.gearing(),
'forward': cf.indexFixing(),
'rate': cf.rate(),
"amount": cf.amount()
} for cf in map(ql.as_floating_rate_coupon, swap.leg(1))])
Output:
Floating leg NPV: 933,741.01
当然,可以把QuantLib,pandas, matplotlib.pyplot,结合起来使用。
import QuantLib as ql
import pandas as pd
import matplotlib.pyplot as plt
参考资料:
金融计算的开源库–QuantLib 学习入门
QuantLib官网
Quant-Python Documentation
Luigi Ballabio and Goutham Balaraman,2017,《QuantLib Python Cookbook》
https://blog.csdn.net/u012234115/article/details/81194675
https://blog.csdn.net/ndhtou222/article/details/109634642