QuantLib + Python:Макрос TARGET() и календарь по умолчанию (RuntimeError:срок действия истек)
-
13-12-2019 - |
Вопрос
Я использую Quantlib для выполнения расчетов на исторических данных.
После настройки необходимой структуры (кривые и т. д.), когда я звоню option.ImpliedVolatility()
Я получаю следующее исключение (для опций, срок действия которых истек):
File "/usr/local/lib/python2.6/dist-packages/QuantLib/QuantLib.py", line 3683, in impliedVolatility
def impliedVolatility(self, *args): return _QuantLib.VanillaOption_impliedVolatility(self, *args)
RuntimeError: option expired
Ниже показан фрагмент кода для настройки необходимых кривых и т. д.:
dividend_yield = YieldTermStructureHandle(FlatForward(0, TARGET(), div_yield, Actual365Fixed()))
risk_free_rate = YieldTermStructureHandle(FlatForward(0, TARGET(), rf_rate, Actual365Fixed()))
volatility = BlackVolTermStructureHandle(BlackConstantVol(0, TARGET(), annualized_histvol, Actual360()))
я СИЛЬНО подозреваю, что TARGET()
Используемый макрос по умолчанию соответствует текущей системной дате.
Как я могу настроить библиотеку на использование определенной исторической даты?
Решение
Дата оценки устанавливается путем запуска, скажем,
Settings.instance().evaluationDate = Date(14,March,2010)
перед расчетами.Если не установлено, по умолчанию используется текущая дата, как вы и подозревали.
Календарь TARGET просто сообщает кривой, какие дни являются выходными, но не влияет на саму дату оценки.