文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用Quantlib,通过YTM计算债券

2023-01-30 22:17

关注

债券标的为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.04245
10 calendar = ql.China(ql.China.IB)
11 frequency = ql.Semiannual
12 compounce = ql.Compounded
13 dayCounter = ql.ActualActual(ql.ActualActual.ISMA)
14 
15 accuracy=1.0e-8
16 maxNum = 500
17 today = calendar.adjust(ql.Date(14, 9, 2018))
18 ql.Settings.evaluationDate = today
19 settlementDays = 0
20 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的区别是啥?

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯