博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Quantlib,通过YTM计算债券净值
阅读量:6093 次
发布时间:2019-06-20

本文共 2363 字,大约阅读时间需要 7 分钟。

债券标的为170005,我的python代码如下:

1 import QuantLib as ql 2  3 faceAmount = 100.0 4 redemption = 100.0 5 issueDate = ql.Date(20, 2, 2017) 6 maturity = ql.Date(20, 2, 2047) 7 couponRate = 0.0377 8 coupons = [couponRate] 9 ytm = 0.0424510 calendar = ql.China(ql.China.IB)11 frequency = ql.Semiannual12 compounce = ql.Compounded13 dayCounter = ql.ActualActual(ql.ActualActual.ISMA)14 15 accuracy=1.0e-816 maxNum = 50017 today = calendar.adjust(ql.Date(14, 9, 2018))18 ql.Settings.evaluationDate = today19 settlementDays = 020 settlementDate = calendar.advance(21         today,22         ql.Period(settlementDays, ql.Days))23 24 discountingTermStructure = ql.RelinkableYieldTermStructureHandle()25 flatTermStructure = ql.FlatForward(settlementDate,26                                    ytm,27                                    dayCounter,28                                    compounce,29                                    frequency)30 31 discountingTermStructure.linkTo(flatTermStructure)32 bondEngin = ql.DiscountingBondEngine(discountingTermStructure)33 34 schedule = ql.Schedule(issueDate,35                           maturity,36                           ql.Period(frequency),37                           ql.China(ql.China.IB),38                           ql.Following,39                           ql.Following,40                           ql.DateGeneration.Backward,41                           False)42 fixedRateBond = ql.FixedRateBond(settlementDays,43                        faceAmount,44                        schedule,45                        coupons,46                        dayCounter,47                        ql.Following,48                        redemption,49                        issueDate)50 fixedRateBond.setPricingEngine(bondEngin)51 52 print(fixedRateBond.cleanPrice())53 print(fixedRateBond.cleanPrice(0.04245,dayCounter,compounce,frequency,ql.Date(14,9,2018)))54 print(fixedRateBond.dirtyPrice(0.04245,dayCounter,compounce,frequency))55 print(fixedRateBond.bondYield(95,dayCounter,compounce,frequency,ql.Date(14,9,2018),accuracy,maxNum))56 print(flatTermStructure.zeroRate(ql.Date(14,9,2018),dayCounter,compounce, frequency).rate())

输出结果为: 

92.25734945596061

92.19752850225078
92.45364263268556
0.04068211793899536
0.0424500000008563

1、两种pricevalue的计算结果不一样,是我理解错了嘛?

2、NPV和cleanprice的区别是啥?

转载于:https://www.cnblogs.com/howieRookie/p/9642750.html

你可能感兴趣的文章
PHP下使用Redis消息队列发布微博
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
执行存储过程返回游标集合转换成List
查看>>
(SQL)比较一个集合是否在另一个集合里存在的方法
查看>>
8. 多态——编译时类型&运行时类型
查看>>
逻辑运算
查看>>
Load Balanced 2
查看>>
Angular : 响应式编程, 组件间通信, 表单
查看>>
Python 软件开发目录规范
查看>>
修改OEM SYSMAN密码
查看>>
eclipse的maven、Scala环境搭建
查看>>
Redis配置集群二(window)
查看>>
window.top.location的作用
查看>>
11--PHP中的类和对象
查看>>
. ../ ./ /的意义
查看>>
架构师之路(一)- 什么是软件架构
查看>>
第十二周项目4-点、圆的关系
查看>>
团队项目计划会议
查看>>
使用C3P0连接池
查看>>
iOS汉字中提取首字母
查看>>