aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/calibrate_swaption.py4
-rw-r--r--python/db.py15
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'