aboutsummaryrefslogtreecommitdiffstats
path: root/python/markit/rates.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/markit/rates.py')
-rw-r--r--python/markit/rates.py24
1 files changed, 9 insertions, 15 deletions
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()