diff options
Diffstat (limited to 'python/mark_swaptions.py')
| -rw-r--r-- | python/mark_swaptions.py | 14 |
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": |
