diff options
| -rw-r--r-- | python/markit/__main__.py | 2 | ||||
| -rw-r--r-- | python/markit/rates.py | 9 | ||||
| -rw-r--r-- | python/yieldcurve.py | 11 |
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__": |
