使用Quantlib计算债券净值的几个疑问点

今天使用Quantlib计算债券净值,发现了如下几个问题:

1、我针对的债券是170005,我的python代码如下,输出结果为:

  92.26311173758944
  92.19722044465708

  但是使用其他工具,计算出的结果为92.1588

  使用到期收益率计算净价的方法是错的嘛?

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

3、NPV和cleanprice的区别是啥?

 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 today = calendar.adjust(ql.Date(13, 9, 2018))
12 ql.Settings.evaluationDate = today
13 settlementDays = 0
14 settlementDate = calendar.advance(
15         today,
16         ql.Period(settlementDays, ql.Days))
17 
18 discountingTermStructure = ql.RelinkableYieldTermStructureHandle()
19 flatTermStructure = ql.FlatForward(settlementDate,
20                                    ytm,
21                                    ql.ActualActual(ql.ActualActual.ISMA),
22                                    ql.Compounded,
23                                    ql.Semiannual)
24 discountingTermStructure.linkTo(flatTermStructure)
25 bondEngin = ql.DiscountingBondEngine(discountingTermStructure)
26 
27 schedule = ql.Schedule(issueDate,
28                           maturity,
29                           ql.Period(ql.Semiannual),
30                           ql.China(ql.China.IB),
31                           ql.Following,
32                           ql.Following,
33                           ql.DateGeneration.Backward,
34                           False)
35 fixedRateBond = ql.FixedRateBond(settlementDays,
36                        faceAmount,
37                        schedule,
38                        coupons,
39                        ql.ActualActual(ql.ActualActual.ISMA),
40                        ql.Following,
41                        redemption,
42                        issueDate)
43 fixedRateBond.setPricingEngine(bondEngin)
44 
45 print(fixedRateBond.cleanPrice())
46 print(fixedRateBond.cleanPrice(0.04245,ql.ActualActual(ql.ActualActual.ISMA),ql.Compounded,ql.Semiannual,ql.Date(13,9,2018)))

猜你喜欢

转载自www.cnblogs.com/howieRookie/p/9642750.html