aboutsummaryrefslogtreecommitdiffstats
path: root/python/mark_swaptions.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/mark_swaptions.py')
-rw-r--r--python/mark_swaptions.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/python/mark_swaptions.py b/python/mark_swaptions.py
index 09b06041..7b2a1127 100644
--- a/python/mark_swaptions.py
+++ b/python/mark_swaptions.py
@@ -26,18 +26,20 @@ def get_swaptionvol(index, series, strike, expiry, date, engine):
r = engine.execute(
"SELECT ref, vol_payer AS payer, vol_receiver AS receiver, " \
"vol_payer_black AS payer_black, vol_receiver_black AS receiver_black " \
- "FROM swaption_calib JOIN swaption_ref_quotes " \
+ "FROM swaption_calib LEFT JOIN swaption_ref_quotes " \
"USING (quotedate, expiry, index, series) WHERE index = %s " \
"AND series = %s AND strike=%s AND expiry = %s AND quotedate::date=%s " \
"ORDER BY quotedate desc",
(index, series, strike, expiry, date))
try:
- return r.fetchone()
+ result = r.fetchone()
+ if result is None:
+ logging.error("No data for {}{} {}K {} expiry on date {}".
+ format(index, series, strike, expiry, date))
+ return result
except exc.DataError as e:
logging.error(e)
- except TypeError:
- logging.error("No data for {}{} {}K on date {}".format(index, series, strike, date))
- except:
+ except e:
logging.error(e)
def mark_trades(date, engine):
@@ -58,6 +60,8 @@ def mark_trades(date, engine):
trade.notional)
sigma = get_swaptionvol(trade.index, trade.series, trade.strike, trade.expiration_date.date(),
date, serenitas_engine)
+ if sigma is None:
+ continue
if trade.index == "IG":
underlying.spread = sigma.ref
elif trade.index == "HY":