diff options
Diffstat (limited to 'python/risk/portfolio.py')
| -rw-r--r-- | python/risk/portfolio.py | 9 |
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 |
