aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/intex/intex_scenarios.py28
1 files changed, 15 insertions, 13 deletions
diff --git a/python/intex/intex_scenarios.py b/python/intex/intex_scenarios.py
index 576e275e..1bf98ac4 100644
--- a/python/intex/intex_scenarios.py
+++ b/python/intex/intex_scenarios.py
@@ -30,12 +30,12 @@ global_reinvfloatpercentage = 84
global_reinvfixedpercentage = 16
def get_reinv_assets(conn, dealname, workdate):
- sqlstr = 'select * from et_historicaldealinfo(%s, %s) where ReinvFlag IS TRUE'
+ sqlstr = 'SELECT * FROM et_historicaldealinfo(%s, %s) WHERE ReinvFlag IS TRUE'
d = {}
with conn.cursor() as c:
c.execute(sqlstr, (dealname, workdate))
for line in c:
- d[line['issuername']] = line['fixedorfloat']
+ d[line['issuername']] = (line['fixedorfloat'], line['liborfloor'])
conn.commit()
return d
@@ -82,8 +82,8 @@ def generate_scenarios(workdate, dealname, conn):
if reinvflag:
reinvenddate = get_reinvenddate(conn, dealname, workdate)
reinv_assets = get_reinv_assets(conn, dealname, workdate)
- n_float_assets = len([v for v in reinv_assets.values() if v == 'FLOAT'])
- n_fixed_assets = len([v for v in reinv_assets.values() if v == 'FIXED'])
+ n_float_assets = len([v for v in reinv_assets.values() if v[0] == 'FLOAT'])
+ n_fixed_assets = len([v for v in reinv_assets.values() if v[0] == 'FIXED'])
rollingmat = config['rollingmat']
if n_fixed_assets == 0:
reinvfixedpercentage = 0
@@ -138,15 +138,17 @@ def generate_scenarios(workdate, dealname, conn):
reinv_number, scen_number = m.groups()
key = "REINV_TBA" + reinv_number
if key in reinv_assets:
- if reinv_assets[key] == "FLOAT":
+ fixedorfloat, liborfloor = reinv_assets[key]
+ if fixedorfloat == "FLOAT":
coupon = 4
- elif reinv_assets[key] == "FIXED":
+ elif fixedorfloat == "FIXED":
coupon = 7
line = "REINVEST[{0}::REINV_TBA{1}][DEAL,{2}]=".format(dealname.upper(),
reinv_number,
scen_number)
- line += "COUP_SPR={0}|AMORT=Bullet|USE_REINVEST_PIP=1|MAT_DATE={1}|".format(coupon,
- rollingmat)
+ line += f"COUP_SPR={coupon}|AMORT=Bullet|USE_REINVEST_PIP=1|MAT_DATE={rollingmat}|"
+ if liborfloor is not None:
+ line += f"|ARM_LIFE_FLOOR={liborfloor}"
fhsss.write(line + "\r\n")
continue
if reinvflag and pattern2.match(line):
@@ -174,22 +176,22 @@ def generate_scenarios(workdate, dealname, conn):
if reinvflag and m:
reinv_number, scen_number = m.groups()
reinv_name = "REINV_TBA" + reinv_number
- if reinv_number=="1":
- if dealname=="litpt3":
+ if reinv_number == "1":
+ if dealname == "litpt3":
line = "STANDARD_VAR[LITPT3::#LOANREINVPCT,{0}]=100".format(scen_number)
fhsss.write(line + "\r\n")
continue
- if dealname=="flags4":
+ if dealname == "flags4":
line = "STANDARD_VAR[FLAGS4::#PCT100_TBA1,{0}]=100".format(scen_number)
fhsss.write(line + "\r\n")
continue
if reinv_name in reinv_assets:
- if reinv_assets[reinv_name] == 'FIXED':
+ if reinv_assets[reinv_name][0] == 'FIXED':
line = "STANDARD_VAR[{0}::#REINVPCT_TBA{1},{2}]={3}".format(dealname.upper(),
reinv_number,
scen_number,
reinvfixedpercentage)
- elif reinv_assets[reinv_name] == 'FLOAT':
+ elif reinv_assets[reinv_name][0] == 'FLOAT':
line = "STANDARD_VAR[{0}::#REINVPCT_TBA{1},{2}]={3}".format(dealname.upper(),
reinv_number,
scen_number,