Я столкнулся с проблемой, генерирующей денежные потоки от облигаций с полом.Использование QuantLib для расчета денежных потоков для плавающих FloatingRateBonds
У меня изначально возникла проблема, потому что я пренебрегал назначением ценника. С тех пор я установил ценник, как показано ниже.
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)
По некоторым денежным потокам я могу генерировать разумную сумму для денежного потока. Однако в то же время я сталкиваюсь с ошибкой. Значение, указанное для удара (-.0225), равно libor_floor - libor_spread. Я почти уверен, что совершу здесь явную ошибку, но не знаю, с чего начать. Если кто-либо, более знакомый с QuantLib, имеет какие-либо предложения, они были бы весьма признательны.
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
Это связано с более ранней почте я сделал Using QuantLib to compute cash flows for FloatingRateBond with Floor