diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/markit/__main__.py | 4 | ||||
| -rw-r--r-- | python/markit/rates.py | 24 |
2 files changed, 12 insertions, 16 deletions
diff --git a/python/markit/__main__.py b/python/markit/__main__.py index f20ce9ca..cacdae42 100644 --- a/python/markit/__main__.py +++ b/python/markit/__main__.py @@ -102,11 +102,12 @@ elif args.cds: insert_tranche(engine, workdate) elif args.rates: + serenitasdb = dbconn("serenitasdb") for curr in ["USD", "EUR", "JPY"]: retry = 0 while retry < 10: try: - downloadMarkitIRData(workdate, currency=curr) + downloadMarkitIRData(serenitasdb, workdate, curr, conn=serenitadb) except ValueError as e: logger.error(e) logger.error(f"Could not download {curr} rates for date {workdate}") @@ -115,3 +116,4 @@ elif args.rates: else: logger.info(f"Downloaded {curr} rates") break + serenitasdb.close() diff --git a/python/markit/rates.py b/python/markit/rates.py index 8b596217..433a8a6a 100644 --- a/python/markit/rates.py +++ b/python/markit/rates.py @@ -1,33 +1,28 @@ from . import dbconn import datetime +from env import DATA_DIR from io import BytesIO import lz4 -import os -import pandas as pd from pandas.tseries.offsets import BDay from psycopg2 import sql import requests import xml.etree.ElementTree as ET import zipfile from yieldcurve import YC, ql_to_jp -from pickle import dumps -def downloadMarkitIRData(download_date=datetime.date.today(), currency="USD"): - conn = dbconn("serenitasdb") - basedir = os.path.join(os.environ["DATA_DIR"], "Yield Curves") - filename = f"InterestRates_{currency}_{download_date:%Y%m%d}" - if not os.path.exists(os.path.join(basedir, filename + ".xml")): - r = requests.post(f"http://www.markit.com/news/{filename}.zip") +def downloadMarkitIRData(conn, download_date=datetime.date.today(), currency="USD"): + base_dir = DATA_DIR / "Yield Curves" + curve_file = base_dir / f"InterestRates_{currency}_{download_date:%Y%m%d}.xml" + if not curve_file.exists(): + r = requests.post(f"http://www.markit.com/news/{curve_file.stem}.zip") if "zip" in r.headers["content-type"]: with zipfile.ZipFile(BytesIO(r.content)) as z: - z.extractall(path=os.path.join(os.environ["DATA_DIR"], "Yield Curves")) + z.extractall(path=base_dir) else: raise ValueError(r.content.decode().rstrip()) - tree = ET.parse( - os.path.join(os.environ["DATA_DIR"], "Yield Curves", filename + ".xml") - ) + tree = ET.parse(curve_file) deposits = zip( [e.text for e in tree.findall("./deposits/*/tenor")], [float(e.text) for e in tree.findall("./deposits/*/parrate")], @@ -40,7 +35,7 @@ def downloadMarkitIRData(download_date=datetime.date.today(), currency="USD"): MarkitData = { "deposits": list(deposits), "swaps": list(swaps), - "effectiveasof": pd.Timestamp(effectiveasof).date(), + "effectiveasof": datetime.date.fromisoformat(effectiveasof), } ql_yc = YC( currency=currency, @@ -67,4 +62,3 @@ def downloadMarkitIRData(download_date=datetime.date.today(), currency="USD"): insert_str, [MarkitData["effectiveasof"]] + [r[1] for r in instruments] ) conn.commit() - conn.close() |
