Fintech系列(四) -- 开源金融计算库 Quantlib的学习与使用

QuantLib是一个免费、开源的量化金融计算库,提供统一的软件框架,支持期权定价及固定收益产品定价等功能。该库最初用C++编写,现已扩展到Python等多种语言。本文介绍QuantLib的主要功能,并通过实例演示其在Python环境下的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开源金融计算库 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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值