我是QuantLib的新手,我正在尝试为信用敏感的分期偿还浮动利率债券定价。债券的最终付款可能低于票面金额。
如果我为非摊销浮动利率债券定价,我可以使用类floatingradebond和参数redemption=x来模拟最终付款。当我尝试将该参数用于分期付款floatingradebond时,它似乎不可用。我不知道这是否是在这种情况下使用的合适类别(即,本金支付任意时间的浮动利率债券和可能的无面值赎回)
这是一个代码样本,适用于PAR赎回,我基于QualLIB食谱,有什么建议用于非平价赎回?
from QuantLib import *
today = Date(1, October, 2020)
Settings.instance().evaluationDate = today
forecast_curve = RelinkableYieldTermStructureHandle()
discount_curve = RelinkableYieldTermStructureHandle()
index = USDLibor(Period('3M'), forecast_curve)
issueDate = Date(13, October, 2020)
maturityDate = Date(13, October, 2022)
schedule = Schedule(issueDate, maturityDate, Period(Quarterly), UnitedStates(), Following, Following, DateGeneration.Backward, False)
bond = AmortizingFloatingRateBond(settlementDays=3,
notional=[100,90,80],
schedule=schedule,
index=index,
accrualDayCounter=Actual360(),
spreads=[0.0])
bond.setPricingEngine(DiscountingBondEngine(discount_curve))
forecast_curve.linkTo(FlatForward(0, UnitedStates(), 0.002, Actual360()))
DM = SimpleQuote(0.0)
discount_curve.linkTo(ZeroSpreadedTermStructure(forecast_curve, QuoteHandle(DM)))
print('price',bond.cleanPrice(),'\n')
for i, cf in enumerate(bond.cashflows()):
print((i + 1), cf.date(), cf.amount())
目前没有回答
相关问题 更多 >
编程相关推荐