python衍生品库_「手把手教你」固定收益和衍生品分析利器QuantLib入门

本文介绍了QuantLib Python库在固定收益和衍生品分析中的应用,包括Dates模块的基础用法,如Date、Period、Calendar等,以及InterestRate类的使用,为后续的金融工具定价分析奠定了基础。
摘要由CSDN通过智能技术生成

引言

QuantLib是一个专门用于利率、债券与衍生品等金融工具定价分析的库,可以说是固定收益和金融衍生品分析的一个利器。QuantLib本身是使用C++写的,通过SWING技术封装后可以在Python调用。直接使用pip安装可能会报错,建议下载安装包的whl文件,然后再用pip进行安装。

https://www.lfd.uci.edu/~gohlke/pythonlibs/#quantlib (建议收藏,涵盖了Python大部分第三方包),找到与自己电脑和Python相对应的版本下载,如我的电脑是64位,Python3.7,选择第一个下载,将下载的文件放在当前工作目录,然后进入cmd模式(cmd模式下的地址即为当前工作目录),输入:“pip install QuantLib_Python‑1.11‑cp37‑cp37m‑win_amd64.whl”即可,如果import QuantLib没有报错说明安装成功。

如何查看系统环境、包的版本号和当前工作路径呢?

#先pip安装watermark#查看系统环境和module的版本号%load_ext watermark%watermark%watermark -p pandas,numpy,QuantLib,matplotlib

输出结果:

05129f549e0e3ee7f4877913df19913c.png
#查看当前工作目录import osos.getcwd()
#输出结果:'C:甥敳獲zjy'引入QuantLib包
#引入QuantLibimport QuantLib as ql

QuantLib基础模块:Dates

日期模块Dates包含了Date,Period,Calendar,DayCounter,Schedule,DateGeneration等,是QuantLib的基础模块,包含了时间、日期、日历等的定义、生成和逻辑运算等,是数学建模和量化分析的重要基础。

Date:日期

Date是日期格式,日期范围是1901-01-01至2199-12-31。有三种写法:(1)Date(n),与Excel类似,其中n的范围是367-109574之间的数字(含),其他超出该范围的数字都会报错;(2)Date(day,month,year),即日,月,年的输入格式,其中日和年必须是数字,而月可以是其他格式,如ql.June(相当于输入6)。(3)Date(日期,格式),如:Date('20-09-2020', '%d-%m-%Y')

应用实例:定义日期“2020年11月11日”

d1=ql.Date(11,11,2020)d2=ql.Date('2020-11-11','%Y-%m-%d')d3=ql.Date('20201111','%Y%m%d')d4=ql.Date(44146)#四种写法等价print(d1==d2==d3==d4)
#输出结果:True

日期定义与运算

today=ql.Date(11,11,2020)print('初始日期:', today)print('ISO格式:', today.ISO())#返回一周七天对应的数字:注意周日(Sunday)是1,周六(Saturday)是7print('一周中第几天:', today.weekday())print('该月的第几天:', today.dayOfMonth())print('本年的第几天:', today.dayOfYear())print('月份:', today.month())print('年份:', today.year())#相当于第一种写法的逆运算print('日期数字:', today.serialNumber())

输出结果:
初始日期: November 11th, 2020
ISO格式: 2020-11-11
一周中第几天: 4
该月的第几天: 11
本年的第几天: 316
月份: 11
年份: 2020
日期数字: 44146

#逻辑判断print(today == ql.Date(12, 11, 2020))print(today > ql.Date(11, 10, 2020))print(today 

输出结果:False、True、True、True

获取Date内置日期和运算函数

print('当前日期:', ql.Date.todaysDate())print('系统支持最小日期 :', ql.Date.minDate())print('系统支持最大日期 :', ql.Date.maxDate())#判断是否闰年print('是闰年吗? :', ql.Date.isLeap(202
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值