바닥이있는 채권에서 현금 흐름을 생성하는 중 문제가 발생했습니다.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
이것은 내가 문제는 QuantLib 자체하지 Using QuantLib to compute cash flows for FloatingRateBond with Floor