diff options
Diffstat (limited to 'python/intex/intex_scenarios.py')
| -rw-r--r-- | python/intex/intex_scenarios.py | 28 |
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, |
