Ich stoße auf ein Problem, das Cash Flows aus Anleihen mit einem Floor generiert.Verwenden von QuantLib zum Berechnen von Cashflows für floored FloatingRateBonds
Ich hatte zunächst ein Problem, weil ich es versäumte, einen Pricer einzustellen. Ich habe seitdem einen Pricer wie folgt festgelegt.
ql_bond = QuantLib.FloatingRateBond(settlement_days, #settlementDays
face_amount, # faceAmount
ql_schedule,
ql_index,
QuantLib.Thirty360(),
gearings = [],
spreads = [libor_spread],
caps = [],
floors = [libor_floor]
)
volatility = 0
vol = QuantLib.ConstantOptionletVolatility(settlement_days,
QuantLib.UnitedKingdom(),
QuantLib.Unadjusted,
volatility,
QuantLib.Thirty360())
pricer = QuantLib.BlackIborCouponPricer(QuantLib.OptionletVolatilityStructureHandle(vol))
QuantLib.setCouponPricer(ql_bond.cashflows(), pricer)
Auf bestimmten Cash Flows, ich bin in der Lage, eine angemessene Menge für den Cash-Flow zu generieren. In anderen Fällen stoße ich jedoch auf einen Fehler. Der angegebene Wert für den strike (-.0225) entspricht libor_floor - libor_spread. Ich bin mir ziemlich sicher, dass ich hier einen offensichtlichen Fehler mache, bin mir aber nicht sicher, wo ich anfangen soll. Wenn jemand, der mit QuantLib vertrauter ist, irgendwelche Vorschläge hat, würden sie sehr geschätzt werden. Diese
Traceback (most recent call last):
File "C:\Users\Ryan\git\optimizer\src\calcs\cashflow_calcs.py", line 161, in generate_cashflow
cashflows.append(utils.cashflow.InterestCashflow(cf_date, cf.amount(), cf_fixing_date, c.indexFixing(), c.accrualDays()))
File "C:\Users\Ryan\Anaconda3\lib\site-packages\QuantLib\QuantLib.py", line 8844, in amount
return _QuantLib.CashFlow_amount(self)
RuntimeError: strike + displacement (-0.0225 + 0) must be non-negative
bezieht sich auf einen früheren Beitrag habe ich gemacht Using QuantLib to compute cash flows for FloatingRateBond with Floor