债券现金流量仅从评估日期开始

时间:2019-07-05 15:23:30

标签: python quantlib

假设评估日期为今天,并且有一个浮动利率债券,且其发行日期为过去的任何日期。我想使用cashflows()类(或Bond)的FloatingRateBond方法来仅从评估之日起计算现金流量 。问题是,我既没有过去的市场数据(用于固定利率),也没有对过去发生的利率现金流感兴趣。
我知道hasOccurred的{​​{1}}方法,但这无济于事,因为QuantLib会引发一个错误,即我调用CashFlow时会错过过去的市场数据。
我可以告诉cashflows()仅计算在特定日期之后发生的现金流量吗?

以下代码重现错误
cashflows()

RuntimeError: Missing EoniaON Actual/360 fixing for December 29th, 2017

1 个答案:

答案 0 :(得分:1)

不是cashflows()会引起错误;您可以将最后一行改写为

cfs = bond_leg.cashflows()
print([(c.date(), c.amount()) for c in cfs])

错误发生在第二行,而不是第一行。

cashflows()方法不会按日期过滤结果,但是您可以在调用amount()之前执行此操作。像

cfs = bond_leg.cashflows()
min_date = referenceDate + ql.Period("6M")
print([(c.date(), c.amount()) for c in cfs if c.date() >= min_date])

将基于CashFlow接口工作。如果您想了解更多信息,可以使用一种向下转换现金流量的功能;但是在这种情况下,如果现金流量不是浮动利率,您还必须检查是否有可能导致转换失败(例如,发生赎回的情况):

for cf in bond_leg.cashflows():
    c = ql.as_floating_rate_coupon(cf)
    if c and c.fixingDate() >= referenceDate:
        print(c.date(), c.amount())

if c检查有效的演员表)。