diff options
Diffstat (limited to 'python/markit_red.py')
| -rw-r--r-- | python/markit_red.py | 42 |
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) |
