aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/markit/__main__.py2
-rw-r--r--python/markit/rates.py9
-rw-r--r--python/yieldcurve.py11
3 files changed, 10 insertions, 12 deletions
diff --git a/python/markit/__main__.py b/python/markit/__main__.py
index fdf9a86e..e57bf675 100644
--- a/python/markit/__main__.py
+++ b/python/markit/__main__.py
@@ -91,5 +91,5 @@ elif args.cds:
elif args.rates:
for curr in ["USD", "EUR"]:
- downloadMarkitIRData(workdate, currency = curr)
+ downloadMarkitIRData(workdate, currency=curr)
logger.info("Downloaded {} rates".format(curr))
diff --git a/python/markit/rates.py b/python/markit/rates.py
index 25e7ad80..07d1e5f1 100644
--- a/python/markit/rates.py
+++ b/python/markit/rates.py
@@ -8,14 +8,13 @@ import requests
import xml.etree.ElementTree as ET
import zipfile
from yieldcurve import YC, ql_to_jp
-import lz4
from pickle import dumps
-def downloadMarkitIRData(download_date = datetime.date.today(),
+def downloadMarkitIRData(download_date=datetime.date.today(),
currency="USD"):
conn = dbconn("serenitasdb")
## T+1 rates are published in the evening
- effective_date = download_date + datetime.timedelta(days = 1)
+ effective_date = download_date + datetime.timedelta(days=1)
basedir = os.path.join(root, "data", "Yield Curves")
filename = "InterestRates_{0}_{1:%Y%m%d}".format(currency, effective_date)
if not os.path.exists(os.path.join(basedir, filename + '.xml')):
@@ -24,7 +23,7 @@ def downloadMarkitIRData(download_date = datetime.date.today(),
with zipfile.ZipFile(BytesIO(r.content)) as z:
z.extractall(path = os.path.join(root, "data", "Yield Curves"))
else:
- return downloadMarkitIRData(download_date-datetime.timedelta(days=1))
+ return downloadMarkitIRData(download_date - datetime.timedelta(days=1))
tree = ET.parse(os.path.join(root, "data", "Yield Curves", filename + '.xml'))
deposits = zip([e.text for e in tree.findall('./deposits/*/tenor')],
@@ -39,7 +38,7 @@ def downloadMarkitIRData(download_date = datetime.date.today(),
jp_yc = ql_to_jp(ql_yc)
sql_str = "INSERT INTO {}_curves VALUES(%s, %s) ON CONFLICT DO NOTHING".format(currency)
with conn.cursor() as c:
- c.execute(sql_str, (effective_date, lz4.block.compress(dumps(jp_yc))))
+ c.execute(sql_str, (MarkitData['effectiveasof'], jp_yc.__getstate__()))
instruments = MarkitData['deposits'] + MarkitData['swaps']
names = ",".join(['"{}"'.format(r[0]) for r in instruments])
values = ",".join(["%s"] * (len(instruments) + 1)) # +1 for effective_date
diff --git a/python/yieldcurve.py b/python/yieldcurve.py
index 3a209f1e..354da2e4 100644
--- a/python/yieldcurve.py
+++ b/python/yieldcurve.py
@@ -2,7 +2,6 @@ from common import root
from contextlib import closing
from itertools import islice
import datetime
-import lz4
import os
import pandas as pd
from quantlib.settings import Settings
@@ -19,7 +18,6 @@ from quantlib.time.date import pydate_from_qldate
import numpy as np
from quantlib.quotes import SimpleQuote
from db import dbconn, dbengine
-from pickle import dumps, loads
from pyisda.curve import YieldCurve, BadDay
import warnings
from db import dbengine, dbconn
@@ -36,13 +34,14 @@ def get_curves(currency="USD", date=None):
c.execute(sql_str, (date,))
if c:
curve, = c.fetchone()
- return loads(lz4.block.decompress(bytes(curve)))
+ return YieldCurve.from_bytes(bytes(curve))
else:
c.execute(sql_str)
- return {d: loads(lz4.block.decompress(bytes(curve)))
+ return {d: YieldCurve.from_bytes(bytes(curve))
for d, curve in c}
-_USD_curves = get_curves()
+_USD_curves = get_curves("USD")
+_EUR_curves = get_curves("EUR")
def getMarkitIRData(effective_date = datetime.date.today(),
currency = "USD"):
@@ -199,7 +198,7 @@ def build_curves(currency="USD"):
0, calendar, valid_deps + valid_swaps, Actual365Fixed())
jp_yc = ql_to_jp(ql_yc)
with conn.cursor() as c:
- c.execute(sql_str, (effective_date, lz4.block.compress(dumps(jp_yc))))
+ c.execute(sql_str, (effective_date, jp_yc.__getstate__()))
conn.commit()
if __name__=="__main__":