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


    如果未做特别说明,文中的程序都是 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 au),单利
    • Compounded((1 + r)^ au),复利
    • Continuous(e^{r au}),连续复利

    目前 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
    
    
  • 相关阅读:
    彻底理解jdbc为什么用反射创建驱动程序对象
    java反射
    hashcode(),equal()方法深入解析
    面试经验总结
    Spring安全权限管理(Spring Security)
    http认证方式
    ubuntu/linux mint 创建proc文件的三种方法(两)
    cocos2dx使用tolua关于字符串处理的一个问题
    Ubuntu——grub rescue 主引导修复
    BCM wifi分析
  • 原文地址:https://www.cnblogs.com/xuruilong100/p/9219043.html
Copyright © 2020-2023  润新知