aboutsummaryrefslogtreecommitdiffstats
path: root/python/risk/portfolio.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/risk/portfolio.py')
-rw-r--r--python/risk/portfolio.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/python/risk/portfolio.py b/python/risk/portfolio.py
index 8f438287..8ea8001e 100644
--- a/python/risk/portfolio.py
+++ b/python/risk/portfolio.py
@@ -90,7 +90,7 @@ def build_portfolio(position_date, value_date, fund="SERCGMAST"):
return portf, syn_portf
-def generate_vol_surface(portf, lookback=5, source="MS"):
+def generate_vol_surface(portf, lookback=5, source_list=["MS"]):
vol_surface = {}
for trade in portf.swaptions:
@@ -115,6 +115,13 @@ def generate_vol_surface(portf, lookback=5, source="MS"):
logger.info(f"Trying {portf.value_date - BDay(i)}")
else:
break
+ for source in source_list:
+ if len(vs.list(source, option_type)) >= 1:
+ break
+ else:
+ raise MissingDataError(
+ f"{type(vs).__name__}: No quote for type {option_type} and date {portf.value_date}"
+ )
vol_surface[k] = vs[vs.list(source=source, option_type=option_type)[-1]]
return vol_surface