diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/calibrate_swaption.py | 4 | ||||
| -rw-r--r-- | python/db.py | 15 |
2 files changed, 18 insertions, 1 deletions
diff --git a/python/calibrate_swaption.py b/python/calibrate_swaption.py index 7ab64176..6ae82745 100644 --- a/python/calibrate_swaption.py +++ b/python/calibrate_swaption.py @@ -1,13 +1,15 @@ import pandas as pd import argparse from analytics import Index, Swaption +import datetime from db import dbconn from joblib import Parallel, delayed from pickle import loads, dumps +from psycopg2.extensions import register_adapter serenitasdb = dbconn('serenitasdb') -def get_data(index, series, date = "'-infinity'::date"): +def get_data(index, series, date = datetime.date.min): df = pd.read_sql("SELECT * from swaption_ref_quotes JOIN swaption_quotes " \ "USING (quotedate, index, series, expiry) WHERE index=%s and series=%s " \ "and quotedate >=%s ORDER BY quotedate", diff --git a/python/db.py b/python/db.py index 32c4ea38..96b8ca61 100644 --- a/python/db.py +++ b/python/db.py @@ -1,9 +1,24 @@ +import datetime import psycopg2 from psycopg2.extras import DictCursor from psycopg2 import IntegrityError +from psycopg2.extensions import register_adapter from sqlalchemy import create_engine import numpy as np +class InfDateAdapter: + def __init__(self, wrapped): + self.wrapped = wrapped + def getquoted(self): + if self.wrapped == datetime.date.max: + return b"'infinity'::date" + elif self.wrapped == datetime.date.min: + return b"'-infinity'::date" + else: + return psycopg2.extensions.DateFromPy(self.wrapped).getquoted() + +register_adapter(datetime.date, InfDateAdapter) + def dbconn(dbname): if dbname == 'etdb': dbname = 'ET' |
