aboutsummaryrefslogtreecommitdiffstats
path: root/python/intex_scenarios.py
blob: abdc9b4922ee9fa5f309a30dba97c10201c7f0d3 (plain)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import os
import os.path
import datetime
from datetime import date
from csv import reader
import json
import codecs
import pdb

if os.name =='nt':
    root = "//WDsentinel/share/CorpCDOs/Scenarios"
elif os.name == 'posix':
    root = '/home/share/CorpCDOs/Scenarios'
input = os.path.join(root, "prometheus.sss")

for dealname in ["oceant2", "atr4cdo"]:
    reinvprices = os.path.join(root, "Intex curves", "csv", dealname + "-reinvprices.csv")
    with open(reinvprices, "r") as fhreinv:
        reinvprices = [line.rstrip("\n") for line in fhreinv]
    output = os.path.join(root, "Intex curves", "sss", dealname + ".sss")
    cdrscenarios = os.path.join(root, "Intex curves", "csv", dealname + "-cdr.csv")
    recoveryscenarios = os.path.join(root, "Intex curves", "csv", dealname + "-recovery.csv")
    fh2 = open(output, "w")
    fhcdr = open(cdrscenarios, "r")
    fhrecovery = open(recoveryscenarios, "r")
    csvcdr = reader(fhcdr)
    csvrecovery = reader(fhrecovery)
    cdrline = csvcdr.next()
    cdrline = "\t".join(["{0:.3f}".format(float(cdr)) for cdr in cdrline]) +"\n"
    recoveryline = csvrecovery.next()
    recoveryline = "\t".join(["{0:.3f}".format(float(recovery)) for recovery in recoveryline]) + "\n"

    i=1
    with open(input) as fh:
        for line in fh:
            if "STANDARD_VAR" in line:
                newline = "STANDARD_VAR[REINVEST_PRICE,1]=" + " ".join(reinvprices)
                continue
            if "LOSS_RATE[DEAL,{0}]".format(i) in line:
                newcdrline = "LOSS_RATE[DEAL,{0}]=".format(i) + cdrline
                fh2.write(newcdrline)
                continue
            if "LOSS_SEVERITY[DEAL,{0}]".format(i) in line:
                newrecoveryline = "LOSS_SEVERITY[DEAL,{0}]=".format(i) + recoveryline
                fh2.write(newrecoveryline)
                i=i+1
                if i<=100:
                    cdrline = csvcdr.next()
                    cdrline = "\t".join(["{0:.3f}".format(float(cdr)) for cdr in cdrline]) + "\n"
                    recoveryline = csvrecovery.next()
                    recoveryline = "\t".join(["{0:.3f}".format(float(recovery)) \
                                                  for recovery in recoveryline]) + "\n"
                    continue
            if "REINV_GLOBAL" in line:
                jsondict = line.split("=")[1]
                reinvdict = json.loads(jsondict)
                reinvdict['STANDARD_VAR[REINVEST_PRICE]']['value'] = \
                    ' '.join(["{0:.3f}".format(float(price)) for price in reinvprices])
                fh2.write("=".join(["REINV_GLOBAL", json.dumps(reinvdict)]) + "\n")
                continue
            fh2.write(line)
    fh2.close()
    fhrecovery.close()
    fhcdr.close()

# sed -i -e "s/\(LOSS_NONPERF_SEVERITY\\[DEAL,[0-9]*\\]\)=.*$/\1=mkt(70)/g" stonln1_100.sss