如果未做特别说明,文中的程序都是 Python3 代码。

QuantLib 金融计算——基本组件之 InterestRate

围绕收益率展开的若干计算(如计算贴现因子)是固定收益分析中最基础的部分。同时,由于固定收益产品在付息频率、计息方式、天数计算规则等细节方面的多样性,这一块的计算显得更加复杂繁琐。QuantLib 将与收益率有关的计算整合封装在 InterestRate 类,用户所作的只是按照规定配置特定的参数。

载入 QuantLib:

import QuantLib as ql

print(ql.__version__)
1.12

InterestRate 对象的构造

InterestRate 对象的构造需要四个参数,

InterestRate(r,
dc,
comp,
freq)

这些变量的类型和解释如下:

  • r,浮点数,收益率大小;
  • dcDayCounter 对象,配置天数计算规则;
  • comp,整数,配置计息方式,取值范围是 quantlib-python 的一些预留变量;
  • freq,整数,配置付息频率,取值范围是 quantlib-python 的一些预留变量。

目前 quantlib-python 支持的计息方式有:

  • Simple,\(1 + r\tau\),单利
  • Compounded,\((1 + r)^\tau\),复利
  • Continuous,\(e^{r\tau}\),连续复利

目前 quantlib-python 支持的计息方式有很多:

  • NoFrequency,无付息;
  • Once,付息一次,常见于零息债券;
  • Annual,每年付息一次;
  • Semiannual,每半年付息一次;
  • EveryFourthMonth,每 4 个月年付息一次;
  • Quarterly,每季度付息一次;
  • Bimonthly,每两个月付息一次;
  • Monthly,每月付息一次;
  • EveryFourthWeek,每 4 周付息一次;
  • Biweekly,每两周付息一次;
  • Weekly,每周付息一次;
  • Daily,每天付息一次。

一些常用的成员函数

下面是一些常用的成员函数:

  • rate():浮点数,返回收益率的值;
  • dayCounter()DayCounter 对象,返回控制天数计算规则的成员变量;
  • compounding():整数,返回计息方式;
  • frequency():整数,返回付息频率。
  • discountFactor(d1, d2):浮点数,d1d2 都是 Date 型对象(d1 < d2),返回 d1d2 的贴现因子大小;
  • compoundFactor(d1, d2):浮点数,d1d2 都是 Date 型对象(d1 < d2),返回 d1d2 的付息因子大小;
  • equivalentRate(resultDC, comp, freq, d1, d2)InterestRate 对象,返回某个与当前对象等价的 InterestRate 对象,该对象的配置参数包括 resultDCcompfreq
    • d1d2 都是 Date 型对象(d1 < d2
    • resultDCDayCounter 对象,配置天数计算规则;
    • comp,整数,配置计息方式,取值范围是 quantlib-python 的一些预留变量;
    • freq,整数,配置付息频率,取值范围是 quantlib-python 的一些预留变量。

某些情况下需要根据付息因子的大小逆算收益率,InterestRate 类提供了函数 impliedRate 实现这一功能:

  • impliedRate(compound, resultDC, comp, freq, d1, d2)InterestRate 对象,返回逆算出的 InterestRate 对象,该对象的配置参数包括 resultDCcompfreq

    • d1d2 都是 Date 型对象(d1 < d2
    • resultDCDayCounter 对象,配置天数计算规则;
    • comp,整数,配置计息方式,取值范围是 quantlib-python 的一些预留变量;
    • freq,整数,配置付息频率,取值范围是 quantlib-python 的一些预留变量。

例子1:

def InterestRate1():
dc = ql.ActualActual()
myRate = ql.InterestRate(
0.0341, dc, ql.Simple, ql.Annual) print('Rate:', myRate) d1 = ql.Date(10, ql.September, 2009)
d2 = d1 + ql.Period(3, ql.Months)
compFact = myRate.compoundFactor(d1, d2) print('Compound Factor: ', compFact)
print('Discount Factor: ', myRate.discountFactor(d1, d2))
print(
'Equivalent Rate: ',
myRate.equivalentRate(
dc, ql.Continuous, ql.Semiannual, d1, d2)) implRate = ql.InterestRate.impliedRate(
compFact, dc, ql.Simple, ql.Annual, d1, d2) print('Implied Rate from Comp Fact : ', implRate) InterestRate1()
Rate: 3.410000 % Actual/Actual (ISDA) simple compounding
Compound Factor: 1.0085016438356165
Discount Factor: 0.9915700248109837
Equivalent Rate: 3.395586 % Actual/Actual (ISDA) continuous compounding
Implied Rate from Comp Fact : 3.410000 % Actual/Actual (ISDA) simple compounding

QuantLib 金融计算——基本组件之 InterestRate 类的更多相关文章

  1. QuantLib 金融计算——基本组件之 Currency 类

    目录 QuantLib 金融计算--基本组件之 Currency 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Cu ...

  2. QuantLib 金融计算——基本组件之 Date 类

    目录 QuantLib 金融计算--基本组件之 Date 类 Date 对象的构造 一些常用的成员函数 一些常用的静态函数 为估值计算配置日期 如果未做特别说明,文中的程序都是 Python3 代码. ...

  3. QuantLib 金融计算——基本组件之 Calendar 类

    目录 QuantLib 金融计算--基本组件之 Calendar 类 Calendar 对象的构造 一些常用的成员函数 自定义假期列表 工作日修正 如果未做特别说明,文中的程序都是 Python3 代 ...

  4. QuantLib 金融计算——基本组件之 DayCounter 类

    目录 QuantLib 金融计算--基本组件之 DayCounter 类 DayCounter 对象的构造 一些常用的成员函数 如果未做特别说明,文中的程序都是 Python3 代码. QuantLi ...

  5. QuantLib 金融计算——基本组件之 DateGeneration 类

    目录 QuantLib 金融计算--基本组件之 DateGeneration 类 QuantLib 金融计算--基本组件之 DateGeneration 类 许多产品的估值依赖于对未来现金流的分析,因 ...

  6. QuantLib 金融计算——基本组件之 Schedule 类

    目录 QuantLib 金融计算--基本组件之 Schedule 类 Schedule 对象的构造 作为"容器"的 Schedule 对象 一些常用的成员函数 如果未做特别说明,文 ...

  7. QuantLib 金融计算——基本组件之 Index 类

    目录 QuantLib 金融计算--基本组件之 Index 类 QuantLib 金融计算--基本组件之 Index 类 Index 类用于表示已知的指数或者收益率,例如 Libor 或 Shibor ...

  8. QuantLib 金融计算——基本组件之 ExchangeRateManager 类

    目录 QuantLib 金融计算--基本组件之 ExchangeRateManager 类 概述 Money 类中的汇率转换配置 ExchangeRateManager 函数 如果未做特别说明,文中的 ...

  9. QuantLib 金融计算——基本组件之 Money 类

    目录 QuantLib 金融计算--基本组件之 Money 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Money ...

随机推荐

  1. 有关jQuery valid 验证多个同name属性的input的问题

    今天遇到需要动态添加多个同name属性的input框,用jQuery valid进行验证时,没有指定不同的id,验证只会在第一个显示提示信息,因为jQuery valid显示的提示信息是根据每个inp ...

  2. 映射文件中增删改查标签中的parameterType和resultType

    parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中. resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射 ...

  3. [Python]利用type()动态创建类

    Python作为动态语言,可以动态地创建函数和类定义.比如说定义一个Hello类,就写一个hello.py模块: #! /usr/bin/env python #coding=utf-8 class ...

  4. open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory 解决方案

    方法一.  yum安装 yum install *rhsm* 方法二 (我是用这方法解决的) 执行命令: ①   wget http://mirror.centos.org/centos/7/os/x ...

  5. spark yarn 集群提交kafka代码

    配置好hadoop的环境,具体根据http://blog.csdn.net/u010638969/article/details/51283216博客所写的进行配置. 运行start-dfs.sh启动 ...

  6. jQuery自定义动画

    $(function(){ $(".btn1").click(function(){ $(','opacity':'toggle'}); }); $(".btn2&quo ...

  7. canvas里调用getImageData的报security的问题

    canvas元素支持绘制任意图片元素: var ctx = document.getElementById("canvas").getContext("2d") ...

  8. (广搜) Find a way -- hdu -- 2612

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=2612 Find a way Time Limit: 3000/1000 MS (Java/Others) ...

  9. windows下 git+tortoiseGit的使用【转】

    一定要自己写出来才能牢记,所以我来写一下 git确实比svn好用的多了,最起码只有一个文件夹用来标记版本信息比svn所有文件夹下都要放一个文件夹来标记版本信息先进多了,不然你不想要版本管理这些文件的时 ...

  10. Java程序中做字符串拼接时可以使用的MessageFormat.format

    Java里从来少不了字符串拼接的活,Java程序员也肯定用到过StringBuffer,StringBuilder,以及被编译器优化掉的+=.但这些都和下文要谈的无关. 比如有这样的字符串: 张三将去 ...