Quantlib + Python: Cible () Calendrier macro et par défaut (RuntimeError: Option expirée)
-
13-12-2019 - |
Question
J'utilise QUANTLIB pour effectuer des calculs sur les données historiques.
Après la configuration du cadre requis (courbes, etc.), lorsque j'appelle option.ImpliedVolatility()
, je reçois l'exception suivante levée (pour les options qui ont expiré):
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
Un extrait des lignes de code de configuration des courbes requises, etc. est présentée ci-dessous:
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()))
i fortement soupçonnez que la macro TARGET()
utilise les valeurs par défaut de la date du système actuel.
Comment puis-je configurer la bibliothèque pour utiliser une date historique spécifique?
La solution
La date d'évaluation est définie en exécutant, par exemple,
Settings.instance().evaluationDate = Date(14,March,2010)
Avant les calculs.Si non défini, il est par défaut à la date actuelle que vous soupçonnez.
Le calendrier cible dit simplement à la courbe quels jours sont des jours fériés, mais n'a aucun effet sur la date d'évaluation elle-même.