1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
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'
payload['family'] = 'ITRAXX-EUROPE'
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"))
basedir = os.path.join(root, "Tranche_Data", "Red")
fh = open(os.path.join(root, "Tranche_Data", "Red_reports", "V9 Red Indices1416860143432.xml"))
e = etree.parse(fh)
root = e.getroot()
for c in root.findall('index'):
with open( os.path.join(basedir, "{0}.{1}.V{2}.csv".format(c.find('indexsubfamily').text,
c.find('series').text,
c.find('version').text)), "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)
fh.close()
|