aboutsummaryrefslogtreecommitdiffstats
path: root/python/markit_red.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/markit_red.py')
-rw-r--r--python/markit_red.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/python/markit_red.py b/python/markit_red.py
new file mode 100644
index 00000000..3db84c2d
--- /dev/null
+++ b/python/markit_red.py
@@ -0,0 +1,42 @@
+import csv
+from lxml import etree
+import requests, io, zipfile, shutil
+from common import root
+import os
+
+user = 'GuillaumeHorel'
+password = 'password'
+
+
+for report in ['REDEntity', 'REDObligation', 'REDEntityDelta', 'REDObligationDelta',
+ 'REDObligationPreferred', 'CredIndexAnnex', 'CredIndexAnnexSplit',
+ 'REDIndexCodes']:
+ payload = {'user': user,
+ 'password': password,
+ 'report':report,
+ 'version':9}
+ if report in ['CredIndexAnnex', 'CredIndexAnnexSplit']:
+ payload['family']='CDX'
+ r = requests.get('https://www.markit.com/export.jsp', params=payload)
+ with zipfile.ZipFile(io.BytesIO(r.content)) as z:
+ for f in z.namelist():
+ if "xml" in f:
+ z.extract(f, path=os.path.join(root, "Tranche_data", "RED_reports"))
+
+
+fh = open("../../data/V9 Red Indices1403548976628.xml")
+e = etree.parse(fh)
+root = e.getroot()
+
+for c in root.findall('index'):
+ with open( c.find('indexname').text + ".csv", "w") as fh2:
+ headers = ['referenceentity', 'redentitycode', 'role', 'redpaircode', 'jurisdiction',
+ 'tier','pairiscurrent', 'pairvalidto', 'pairvalidfrom', 'ticker',
+ 'ispreferred', 'isdatransactiontype', 'docclause','recorddate','publiccomments','weight']
+ csvwriter = csv.DictWriter(fh2, fieldnames=headers)
+ csvwriter.writeheader()
+ data = []
+ for constituent in c.findall('.//originalconstituent'):
+ data.append({l.tag: l.text for l in constituent})
+ data = sorted(data, key=lambda x: x['referenceentity'])
+ csvwriter.writerows(data)