diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/exploration/option_trades.py | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/python/exploration/option_trades.py b/python/exploration/option_trades.py index 733c2cfb..bfa0171e 100644 --- a/python/exploration/option_trades.py +++ b/python/exploration/option_trades.py @@ -73,20 +73,19 @@ def atm_vol_calc(df, index_type, moneyness): return df def atm_vol(index, date, series=None, moneyness=0.2): - sql_str = "SELECT * from swaption_ref_quotes JOIN swaption_quotes " \ - "USING (quotedate, index, series, expiry) WHERE index=%s " \ - "and quotedate >=%s" + extra_filter = '' params = (index.upper(), date) if series: - sql_str += ' AND series = %s' + extra_filter = ' AND series=%s' params = params + (series,) - qsrc_sql = "select distinct(quotedate), quote_source from swaption_quotes" - qsrc = pd.read_sql_query(qsrc_sql, serenitasdb, index_col=['quotedate'], parse_dates=['quotedate']) - df = pd.read_sql_query(sql_str, serenitasdb, - index_col=['quotedate', 'expiry', 'series'], - params=params, parse_dates=['quotedate']) - df = df.merge(qsrc) - df = df.groupby(df.index).filter(lambda x: len(x)>2) + sql_str = "SELECT * from swaption_ref_quotes JOIN swaption_quotes " \ + "USING (quotedate, index, series, expiry) WHERE index=%s " \ + f"and quotedate>=%s {extra_filter} ORDER BY quotedate ASC" + + df = pd.read_sql_query(sql_str, serenitasdb, params=params) + df.quotedate = pd.to_datetime(df.quotedate, utc=True).dt.tz_convert('America/New_York') + df = df.set_index(['quotedate', 'index', 'series', 'expiry']) + df = df.groupby(level=['quotedate', 'index', 'series', 'expiry']).filter(lambda x: len(x)>2) return atm_vol_calc(df, index, moneyness) def rolling_vol(df, col='atm_vol', term=[3]): |
