aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/analytics/option.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/python/analytics/option.py b/python/analytics/option.py
index 0908e854..899ec07e 100644
--- a/python/analytics/option.py
+++ b/python/analytics/option.py
@@ -4,6 +4,7 @@ import logging
import math
import numpy as np
import pandas as pd
+import warnings
from .black import black, Nx
from .exceptions import MissingDataError
@@ -74,7 +75,12 @@ class BlackSwaption(ForwardIndex):
)
def __init__(
- self, index, exercise_date, strike, option_type="payer", direction="Long"
+ self,
+ index: CreditIndex,
+ exercise_date: datetime.date,
+ strike: float,
+ option_type="payer",
+ direction="Long",
):
ForwardIndex.__init__(self, index, exercise_date, False)
self._T = None
@@ -124,9 +130,13 @@ class BlackSwaption(ForwardIndex):
ind = self.index
ind.mark()
if kwargs.pop("use_external", False):
- self.pv = get_external_nav(
- dawn_engine, self._trade_id, self.value_date, "swaptions"
- )
+ try:
+ self.pv = get_external_nav(
+ dawn_engine, self._trade_id, self.value_date, "swaptions"
+ )
+ except ValueError as e:
+ warnings.warn(str(e))
+ self.sigma = 0
return
# add None so that we always try everything
source_list = source_list + [None]