diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/intex_scenarios.py | 144 |
1 files changed, 74 insertions, 70 deletions
diff --git a/python/intex_scenarios.py b/python/intex_scenarios.py index 047f9942..f675b07d 100644 --- a/python/intex_scenarios.py +++ b/python/intex_scenarios.py @@ -8,6 +8,7 @@ import re import psycopg2
import common
import sys
+import ConfigParser
pattern11 = re.compile("(REINVEST\[)\w+(::REINV_TBA1\]\[DEAL,\d+\]=)(.*$)")
pattern12 = re.compile("(REINVEST\[)\w+(::REINV_TBA2\]\[DEAL,\d+\]=)(.*$)")
@@ -22,7 +23,7 @@ pattern5 = re.compile("(STANDARD_VAR\[)\w+(::#REINVPCT_TBA1,\d+\]=)(.*$)") # reinv fixed percentage
pattern6 = re.compile("(STANDARD_VAR\[)\w+(::#REINVPCT_TBA2,\d+\]=)(.*$)")
pattern7 = re.compile("GOLDL3")
-
+pattern8 = re.compile("(#COLLATREINV_REINV_PCT_EXT\[)\w+(::\*\]\[DEAL,\d+\])=100")
reinvfloatpercentage = 85
reinvfixedpercentage = 15
@@ -54,23 +55,25 @@ def convert_reinvtoperct(d): def generate_scenarios(workdate, dealnames, conn, cursor):
prometheus = os.path.join(common.root, "Scenarios", "prometheus.sss")
n_scenarios = 100
+ basedir = os.path.join(common.root, "Scenarios", "Intex curves_" + workdate)
+ config = ConfigParser.ConfigParser()
for dealname in dealnames:
cursor.execute('SELECT \"Reinv End Date\" from latest_clo_universe where dealname=%s', (dealname,))
reinvenddate = cursor.fetchone()[0]
+ config.read(os.path.join(basedir, "csv", dealname + ".config"))
if reinvenddate:
reinvenddate = reinvenddate.strftime("%Y%m%d")
reinvflag = True
else:
print "missing reinvestment end date"
reinvflag = False
+ reinvflag = config.getboolean('config', 'reinvflag')
+ rollingmat = config.getint('config', 'rollingmat')
reinv_assets = get_reinv_assets(dealname, workdate, cursor)
perct_reinv_assets = convert_reinvtoperct(reinv_assets)
- basedir = os.path.join(common.root, "Scenarios", "Intex curves_" + workdate)
floatreinvprices = []
fixedreinvprices = []
try:
- with open(os.path.join(basedir, "csv", dealname + "-rollingmat"), "rb") as fh:
- rollingmat = fh.readline().rstrip()
# with open(os.path.join(basedir, "csv", dealname + "-floatreinvprices.csv"), "rb") as fhreinv:
# for line in fhreinv:
# floatreinvprices.append(line.rstrip("\n").split(","))
@@ -79,11 +82,11 @@ def generate_scenarios(workdate, dealnames, conn, cursor): # fixedreinvprices.append(line.rstrip("\n").split(","))
with open(os.path.join(basedir, "csv", dealname + "-reinvprices.csv"), "rb") as fh:
for line in fh:
- a, b = line.split(",")
+ a, b = line.rstrip().split(",")
floatreinvprices.append(a)
fixedreinvprices.append(b)
- floatreinvprices = [floatreinvprices] * 100
- fixedreinvprices = [fixedreinvprices] * 100
+ floatreinvprices = ["{0:.3f}".format(float(p))for p in floatreinvprices]
+ fixedreinvprices = ["{0:.3f}".format(float(p)) for p in fixedreinvprices]
except IOError:
reinvflag = False
@@ -110,71 +113,72 @@ def generate_scenarios(workdate, dealnames, conn, cursor): newline = "DEAL_NAME=" + dealname.upper() + "\r\n"
fh2.write(newline)
continue
- if not reinvflag and "DO_REINV" in line:
- fh2.write("DO_REINV[DEAL]=0\r\n")
+ if not reinvflag and pattern8.match(line):
+ line = re.sub(pattern8, r"\1{0}\2=0".format(dealname.upper()), line)
+ fh2.write(line + "\r\n")
continue
- if reinvflag:
- if pattern11.match(line):
- line = re.sub(pattern11, r"\1{0}\2", line).format(dealname.upper())
+ if pattern11.match(line):
+ # pdb.set_trace()
+ line = re.sub(pattern11, r"\1{0}\2", line).format(dealname.upper())
- if reinv_assets["REINV_TBA1"] == "FLOAT":
- coupon = 4
- elif reinv_assets["REINV_TBA1"] == "FIXED":
- coupon = 7
- line = line + \
- "COUP_SPR={0}|AMORT=Bullet|USE_REINVEST_PIP=1|MAT_DATE={1}|".format(coupon,
- rollingmat)
- fh2.write(line + "\r\n")
- continue
- if pattern12.match(line):
- line = re.sub(pattern12, r"\1{0}\2", line).format(dealname.upper())
- if reinv_assets["REINV_TBA2"] == "FLOAT":
- coupon = 4
- elif reinv_assets["REINV_TBA2"] == "FIXED":
- coupon = 7
- line = line + \
- "COUP_SPR={0}|AMORT=Bullet|USE_REINVEST_PIP=1|MAT_DATE={1}|".format(coupon,
- rollingmat)
- fh2.write(line + "\r\n")
- continue
- if pattern2.match(line):
- line = re.sub(pattern2, r"\1{0}\2{1}", line).format(dealname.upper(), reinvenddate)
- fh2.write(line + "\r\n")
- continue
- if pattern3.match(line):
- if reinv_assets['REINV_TBA1'] == 'FIXED':
- line = re.sub(pattern3, r"\1{0}\2{1}", line).format(dealname.upper(),
- " ".join(fixedreinvprices[i-2]))
- elif reinv_assets['REINV_TBA1'] == 'FLOAT':
- line = re.sub(pattern3, r"\1{0}\2{1}", line).format(dealname.upper(),
- " ".join(floatreinvprices[i-2]))
- fh2.write(line + "\r\n")
- continue
- if pattern4.match(line):
- if reinv_assets['REINV_TBA2'] == 'FIXED':
- line = re.sub(pattern4, r"\1{0}\2{1}", line).format(dealname.upper(),
- " ".join(fixedreinvprices[i-2]))
- elif reinv_assets['REINV_TBA2'] == 'FLOAT':
- line = re.sub(pattern4, r"\1{0}\2{1}", line).format(dealname.upper(),
- " ".join(floatreinvprices[i-2]))
- fh2.write(line + "\r\n")
- continue
- if pattern5.match(line):
- if reinv_assets['REINV_TBA1']:
- line = re.sub(pattern5, r"\1{0}\2{1}", line).format(
- dealname.upper(), perct_reinv_assets['REINV_TBA1']).rstrip()
- fh2.write(line + "\r\n")
- continue
- if pattern6.match(line):
- if reinv_assets['REINV_TBA2']:
- line = re.sub(pattern6, r"\1{0}\2{1}", line).format(
- dealname.upper(), perct_reinv_assets['REINV_TBA2']).rstrip()
- fh2.write(line + "\r\n")
- continue
- if pattern7.search(line):
- line = re.sub(pattern7, dealname.upper(), line)
- fh2.write(line + "\r\n")
- continue
+ if reinv_assets["REINV_TBA1"] == "FLOAT":
+ coupon = 4
+ elif reinv_assets["REINV_TBA1"] == "FIXED":
+ coupon = 7
+ line = line + \
+ "COUP_SPR={0}|AMORT=Bullet|USE_REINVEST_PIP=1|MAT_DATE={1}|".format(coupon,
+ rollingmat)
+ fh2.write(line + "\r\n")
+ continue
+ if pattern12.match(line):
+ line = re.sub(pattern12, r"\1{0}\2", line).format(dealname.upper())
+ if reinv_assets["REINV_TBA2"] == "FLOAT":
+ coupon = 4
+ elif reinv_assets["REINV_TBA2"] == "FIXED":
+ coupon = 7
+ line = line + \
+ "COUP_SPR={0}|AMORT=Bullet|USE_REINVEST_PIP=1|MAT_DATE={1}|".format(coupon,
+ rollingmat)
+ fh2.write(line + "\r\n")
+ continue
+ if pattern2.match(line):
+ line = re.sub(pattern2, r"\1{0}\2{1}", line).format(dealname.upper(), reinvenddate)
+ fh2.write(line + "\r\n")
+ continue
+ if pattern3.match(line):
+ if reinv_assets['REINV_TBA1'] == 'FIXED':
+ line = re.sub(pattern3, r"\1{0}\2{1}", line).format(dealname.upper(),
+ " ".join(fixedreinvprices))
+ elif reinv_assets['REINV_TBA1'] == 'FLOAT':
+ line = re.sub(pattern3, r"\1{0}\2{1}", line).format(dealname.upper(),
+ " ".join(floatreinvprices))
+ fh2.write(line + "\r\n")
+ continue
+ if pattern4.match(line):
+ if reinv_assets['REINV_TBA2'] == 'FIXED':
+ line = re.sub(pattern4, r"\1{0}\2{1}", line).format(dealname.upper(),
+ " ".join(fixedreinvprices))
+ elif reinv_assets['REINV_TBA2'] == 'FLOAT':
+ line = re.sub(pattern4, r"\1{0}\2{1}", line).format(dealname.upper(),
+ " ".join(floatreinvprices))
+ fh2.write(line + "\r\n")
+ continue
+ if pattern5.match(line):
+ if reinv_assets['REINV_TBA1']:
+ line = re.sub(pattern5, r"\1{0}\2{1}", line).format(
+ dealname.upper(), perct_reinv_assets['REINV_TBA1']).rstrip()
+ fh2.write(line + "\r\n")
+ continue
+ if pattern6.match(line):
+ if reinv_assets['REINV_TBA2']:
+ line = re.sub(pattern6, r"\1{0}\2{1}", line).format(
+ dealname.upper(), perct_reinv_assets['REINV_TBA2']).rstrip()
+ fh2.write(line + "\r\n")
+ continue
+ if pattern7.search(line):
+ line = re.sub(pattern7, dealname.upper(), line)
+ fh2.write(line + "\r\n")
+ continue
# if "STANDARD_VAR" in line:
# newline = "STANDARD_VAR[REINVEST_PRICE,1]=" + " ".join(reinvprices)
# fh2.write(newline)
|
