Расчеты с наличными в swaptions в QuantLib-Python - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь оценить свопсион с денежным расчетом в QuantLib, используя версию python, код которой выглядит следующим образом:

import QuantLib as ql
# QL session
today = ql.Date(2, ql.January, 2019)
ql.Settings.instance().evaluationDate = today
# Underlying swap definition
curve = ql.YieldTermStructureHandle(ql.FlatForward(today, 0.03, ql.Actual365Fixed()))
libor_3m = ql.USDLibor(ql.Period('3M'), curve)
calendar = ql.UnitedStates()
effective = calendar.advance(today, 1, ql.Years)
maturity = calendar.advance(effective, 4, ql.Years)
fixed_schedule = ql.Schedule(effective, maturity, ql.Period('6M'), calendar,
                             ql.ModifiedFollowing, ql.ModifiedFollowing,
                             ql.DateGeneration.Forward, False)
float_schedule = ql.Schedule (effective, maturity, ql.Period('3M'), calendar,
                              ql.ModifiedFollowing, ql.ModifiedFollowing,
                              ql.DateGeneration.Forward, False)
notional = 1e6
swap = ql.VanillaSwap(ql.VanillaSwap.Payer, notional, fixed_schedule, 0.03,
                      ql.Actual365Fixed(), float_schedule, libor_3m, 0.,
                      ql.Actual360())
# Swaption definition
swaption = ql.Swaption(swap, ql.EuropeanExercise(effective), ql.Settlement.Cash)
engine = ql.BlackSwaptionEngine(curve, ql.QuoteHandle(ql.SimpleQuote(0.1)))
swaption.setPricingEngine(engine)
swaption.NPV()

Код завершается с ошибкой Settlement::checkTypeAndMethodConsistency в случае с наличными, исключение:

"invalid settlement method for cash settlement"

Тот же код работает нормально, если вы замените ql.Settlement.Cash на ql.Settlement.Physical в экземпляре swaption.

Есть ли способ установить метод расчета из Python? Я вижу только два конструктора, доступных из Python, и ни один не принимает аргумент settlementMethod:

Possible C/C++ prototypes are:
   SwaptionPtr::SwaptionPtr(VanillaSwapPtr const &,boost::shared_ptr<Exercise > const &,Settlement::Type)
   SwaptionPtr::SwaptionPtr(VanillaSwapPtr const &,boost::shared_ptr<Exercise > const &)

1 Ответ

0 голосов
/ 03 января 2019

Интерфейс SWIG еще не обновлен, чтобы отражать изменения в базовой библиотеке (для этого вы можете открыть вопрос на https://github.com/lballabio/QuantLib-SWIG/issues).

Тем временем использование QuantLib 1.13 должно работать.

...