def post(self): try: baseSet = self.get_argument("baseSet") destSet = self.get_argument("destSet") setDate = self.get_argument("setDate") t = xldate(datetime.strptime(setDate, '%d/%m/%Y')) self.set_header('Content-Type', 'application/json') self.write(json_encode(test_rampdiff(baseSet, t, destSet, t))) except Exception as e: self.write(e)
def spotcorrection(): tday = dateoffset(datetime.today(), 0) rampset = "OSPG TEST 6" rampdate = xldate(tday) mkt = load_market("mkt", rampset, rampdate, rampdate) ccy1ccy2 = [['USD','BRL'], ['USD','JPY'], ['USD','TRY'], ['TRY','JPY'], ['BRL','JPY']] df = DataFrame(ccy1ccy2, columns=['CCY1','CCY2']) df['Mid'] = df[['CCY1','CCY2']].apply(lambda x: west.FXGetSpot("mkt", x[0], x[1]), axis=1) df['SpotDate'] = df[['CCY1','CCY2']].apply(lambda x: west.GetFXSpotDate2(rampdate, x[0], x[1], 'X', False), axis=1) df["SpotDate"][3] = west.Add(rampdate,1,"bd",'',"TYO#IST#NYK") df['DF1'] = df[['CCY1', 'SpotDate']].apply(lambda x: west.Df(x[1],"mkt",rampdate,'-5','',x[0]), axis=1) df['DF2'] = df[['CCY2', 'SpotDate']].apply(lambda x: west.Df(x[1],"mkt",rampdate,'-5','',x[0]), axis=1) df['CashRate'] = df['Mid']*df['DF2']/df['DF1'] df['SpotRate'] = df['CashRate']*df['DF1']/df['DF2'] #df = df.set_index(['CCY1', 'CCY2']) fxspot=[] for t in ramp.RampReadCurve("SPOT FX RATES", rampset, rampdate, 2).to_tuple()[0]: if not t[0]+t[1] in ["TRYJPY", "BRLJPY"]: fxspot.append(t) fxspot.extend([('TRY', 'JPY',df["SpotRate"][3],df["SpotRate"][3]), ('BRL', 'JPY',df["SpotRate"][4],df["SpotRate"][4])]) sts = ramp.RampWriteCurve(tuple3d(fxspot), "SPOT FX RATES", rampset, rampdate, 2) if sts[:2].upper() != "OK": logger.error("SPOT FX contribution failed") #correct eurcny vol df_eurusd = read_ramp('HYB EURUSD VOL MKT VOLS', rampset, rampdate) df_eurusd = df_eurusd.ix[:14] df_usdcny = read_ramp('HYB USDCNY VOL MKT VOLS', rampset, rampdate) df_eurcny = read_ramp('HYB EURCNY VOL MKT VOLS', rampset, rampdate) df_cross = np.sqrt(np.power(df_eurusd["ATM"],2)+np.power(df_usdcny["ATM"],2)) df_check = np.abs(df_eurcny["ATM"]-df_eurusd["ATM"])>0.5*df_usdcny["ATM"] df_eurcny["ATM"] = concat([df_eurcny["ATM"], df_cross, df_check], axis=1).apply(lambda x: x.values[1] if x.values[2] else x.values[0], axis=1) df_eurcny = df_eurcny.reset_index() curvedata = [["Vols"]+df_eurcny.columns.tolist()] curvedata.extend([['']+t for t in df_eurcny.values.tolist()]) sts = write_ramp(curvedata, 'HYB EURCNY VOL MKT VOLS', rampset, rampdate) if sts[:2].upper() != "OK": console.error("EURCNY vol contribution failed")
def calcLIVE(df): calcdate = xldate(datetime.today()) mkt = load_market('mesaofficial', 'LIVE', 0, calcdate) return DataFrame({"LIVE":df.apply(getRate, axis=1, args=(mkt, calcdate))})
def calcOfficial(df, tday): calcdate = xldate(dateoffset(tday,-1)) mkt = load_market('mesaofficial', 'OFFICIAL', calcdate, calcdate) return DataFrame({"OFFICIAL":df.apply(getRate, axis=1, args=(mkt, calcdate))})