QuantLib 金融计算——基本组件之 Schedule 类
如果未做特别说明,文中的程序都是 Python3 代码。
QuantLib 金融计算——基本组件之 Schedule 类
Schedule 类用于构造一个特定的日期列表,例如债券的付息日列表,是 QuantLib 中固定收益类产品分析最常用到的组件。
载入 QuantLib:
import QuantLib as ql
print(ql.__version__)
1.10
Schedule 对象的构造
Schedule 类对象的构造依赖于之前介绍的几个基本组件。
Schedule(effectiveDate ,
terminationDate ,
tenor,
calendar,
convention,
terminationDateConvention,
rule,
endOfMonth,
firstDate = Date (),
nextToLastDate = Date ())
这些变量的类型和解释如下:
effectiveDate、terminationDate:日期,日历列表的起始、结束日期,例如债券的起息日和到期日。tenor:Period对象,相邻两个日期的间隔,例如债券的付息频率(1 年或 6 个月)或利率互换的利息重置频率(3 个月)。calendar:日历表,生成日期所遵循的特定日历表。convention:整数,如何调整非工作日(除最后一个日期外),取值范围是 quantlib-python 的一些预留变量。terminationDateConvention:整数,如果最后一个日期是非工作日,该如何调整,取值范围是 quantlib-python 的一些预留变量。rule:DateGeneration的成员,生成日期的规则。endOfMonth:如果起始日期在月末,是否要求其他日期也要安排在月末(除最后一个日期外)。firstDate,nextToLastDate(可选):日期,专门为生成方法rule提供的起始、结束日期(不常用)。
作为“容器”的 Schedule 对象
Schedule 对象的行为和 Python 中的 list 非常相似,作为一种存储 Date 对象的序列容器存在。因此下面两个函数是可用的:
len(sch):返回Schedule对象sch内日期的个数。[i]:返回第i个日期。
作为序列容器,和 list 一样,Schedule 对象也是可迭代的。
假设想要获得 2017 年每月首个工作日的列表:
- 起始、结束日期分别是 2017-01-01 和 2017-12-01。
- 时间间隔是一个月。
- 日历表遵循中国银行间市场的规定
- 遇到非工作日就递延到下一工作日
例子 1:
def testingSchedule1():
effectiveDate = ql.Date(1, ql.January, 2017)
terminationDate = ql.Date(1, ql.December, 2017)
tenor = ql.Period(1, ql.Months)
calendar = ql.China(ql.China.IB)
convention = ql.Following
terminationDateConvention = ql.Following
rule = ql.DateGeneration.Forward
endOfMonth = False
mySched = ql.Schedule(
effectiveDate,
terminationDate,
tenor,
calendar,
convention,
terminationDateConvention,
rule,
endOfMonth)
for i in range(len(mySched)):
print(mySched[i])
print('------')
for i in mySched:
print(i)
January 3rd, 2017
February 3rd, 2017
March 1st, 2017
April 1st, 2017
May 2nd, 2017
June 1st, 2017
July 3rd, 2017
August 1st, 2017
September 1st, 2017
October 9th, 2017
November 1st, 2017
December 1st, 2017
------
January 3rd, 2017
February 3rd, 2017
March 1st, 2017
April 1st, 2017
May 2nd, 2017
June 1st, 2017
July 3rd, 2017
August 1st, 2017
September 1st, 2017
October 9th, 2017
November 1st, 2017
December 1st, 2017
一些常用的成员函数
until(d):从日期列表中截取前半部分,并保证最后一个日期是d。isRegular(i):判断第i个区间是否完整。这个概念需要解释以下:如果一个Schedule对象含有n个日期,那么这个对象就含有n-1个区间。如果第i个区间的长度和事先规定的时间间隔一致,那么这个区间就是完整的(Regular)。
例子 2:
def testingSchedule2():
effectiveDate = ql.Date(1, ql.January, 2017)
terminationDate = ql.Date(1, ql.December, 2017)
tenor = ql.Period(1, ql.Months)
calendar = ql.China(ql.China.IB)
convention = ql.Following
terminationDateConvention = ql.Following
rule = ql.DateGeneration.Forward
endOfMonth = False
mySched = ql.Schedule(
effectiveDate,
terminationDate,
tenor,
calendar,
convention,
terminationDateConvention,
rule,
endOfMonth)
mySched = mySched.until(ql.Date(15, ql.June, 2017))
for i in mySched:
print(i)
print('------')
for i in range(len(mySched) - 1):
print('{}-th internal is regular? {}'.format(
i + 1, mySched.isRegular(i + 1)))
January 3rd, 2017
February 3rd, 2017
March 1st, 2017
April 1st, 2017
May 2nd, 2017
June 1st, 2017
June 15th, 2017
------
1-th internal is regular? True
2-th internal is regular? True
3-th internal is regular? True
4-th internal is regular? True
5-th internal is regular? True
6-th internal is regular? False
最后一个区间的长度只有 15 天,所以是“不完整的”。
QuantLib 金融计算——基本组件之 Schedule 类的更多相关文章
- QuantLib 金融计算——基本组件之 Currency 类
目录 QuantLib 金融计算--基本组件之 Currency 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Cu ...
- QuantLib 金融计算——基本组件之 Date 类
目录 QuantLib 金融计算--基本组件之 Date 类 Date 对象的构造 一些常用的成员函数 一些常用的静态函数 为估值计算配置日期 如果未做特别说明,文中的程序都是 Python3 代码. ...
- QuantLib 金融计算——基本组件之 Calendar 类
目录 QuantLib 金融计算--基本组件之 Calendar 类 Calendar 对象的构造 一些常用的成员函数 自定义假期列表 工作日修正 如果未做特别说明,文中的程序都是 Python3 代 ...
- QuantLib 金融计算——基本组件之 DayCounter 类
目录 QuantLib 金融计算--基本组件之 DayCounter 类 DayCounter 对象的构造 一些常用的成员函数 如果未做特别说明,文中的程序都是 Python3 代码. QuantLi ...
- QuantLib 金融计算——基本组件之 DateGeneration 类
目录 QuantLib 金融计算--基本组件之 DateGeneration 类 QuantLib 金融计算--基本组件之 DateGeneration 类 许多产品的估值依赖于对未来现金流的分析,因 ...
- QuantLib 金融计算——基本组件之 Index 类
目录 QuantLib 金融计算--基本组件之 Index 类 QuantLib 金融计算--基本组件之 Index 类 Index 类用于表示已知的指数或者收益率,例如 Libor 或 Shibor ...
- QuantLib 金融计算——基本组件之 InterestRate 类
目录 QuantLib 金融计算--基本组件之 InterestRate 类 InterestRate 对象的构造 一些常用的成员函数 如果未做特别说明,文中的程序都是 Python3 代码. Qua ...
- QuantLib 金融计算——基本组件之 ExchangeRateManager 类
目录 QuantLib 金融计算--基本组件之 ExchangeRateManager 类 概述 Money 类中的汇率转换配置 ExchangeRateManager 函数 如果未做特别说明,文中的 ...
- QuantLib 金融计算——基本组件之 Money 类
目录 QuantLib 金融计算--基本组件之 Money 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Money ...
随机推荐
- 解决virtualbox共享文件夹没有访问权限的问题
Virtualbox是一款免费试用的虚拟机软件.基本功能完全可替代需要购买或crack的VMware. 在Windows主机上用Virtualbox搭建Linux虚拟机,虚拟机和主机之间传递文件最方便 ...
- [Selenium]计算坐标进行拖拽,重写dragAndDropOffset
//@author jzhang6 public void dragAndDropOffset(WebDriver driver,WebElement dragableEl, WebElement d ...
- MySQL 系列(三)事务
MySQL 系列(三)事务 一组要么同时执行成功,要么同时执行失败的 SQL 语句.是数据库操作的一个执行单元! 事务开始于: 连接到数据库上,并执行条 DML 语句(INSERT. UPDATE 或 ...
- 现在有很多第三方的SDK来做直播,那么我们改选择哪一种?
现在大部分的都会借助第三方的直播技术,这样可以保证直播的质量,趣拍直播就很不错,SDK很好集成,芒果直播也在用.下面来分析一下趣拍直播的一些心得. 如何快速搭建一个完整的手机直播系统 在这个直播如火如 ...
- HTML5 本地存储+layer弹层组件制作记事本
什么是 HTML5 Web 存储? 使用HTML5可以在本地存储用户的浏览数据. 早些时候,本地存储使用的是 cookie.但是Web 存储需要更加的安全与快速. 这些数据不会被保存在服务器上,但是这 ...
- GCT英语口语复试中的常见问题总汇
英语口语复试中常见的问题: 1. Where do you come from? 2. What kind of landscape surrounds your hometown? 3. What ...
- .net二纬码标签打印
在企业开发中经常用到二纬码标签,本文详细介绍.net环境下整个二纬码解决方案. 开发环境 vs2008 DevExpress8.3 ThoughtWorks.QRCode (二纬码生成组件,高版 ...
- C++中static修饰的静态成员函数、静态数据成员
1.静态成员函数.静态数据成员 在类中,用static修饰的成员函数被称为静态成员函数,而用static修饰的数据成员就称为静态数据成员:与普通的成员函数和数据成员不同, 静态成员函数和静态数据成员有 ...
- GPS原理及其应用
第一章 绪论 GPS定位原理: 卫星轨道未知情况下,通过几个已知站点观测卫星,利用卫星信号的多普勒效应,就可以确定卫星轨道. 卫星轨道已知情况下,用户观测卫星信号,就可以确定用户的位置. 这原来是在海 ...
- (二分搜索 )Strange fuction -- HDU -- 2899
链接: http://acm.hdu.edu.cn/showproblem.php?pid=2899 Time Limit: 2000/1000 MS (Java/Others) Memory ...