from analytics import (Portfolio, BlackSwaption, Index, VolatilitySurface, Swaption) from analytics.scenarios import run_portfolio_scenarios import pandas as pd from pandas.tseries.offsets import BDay import numpy as np import datetime # option_delta = Index.from_tradeid(874) # option1 = BlackSwaption.from_tradeid(7, option_delta) # option2 = BlackSwaption.from_tradeid(8, option_delta) # portf = Portfolio([option1, option2, option_delta]) # date_range = pd.bdate_range(option_delta.trade_date, # pd.Timestamp('2017-05-01'), freq = 'B') # pnl = [] # for date in date_range: # portf.trade_date = date.date() # portf.mark(source_list=["BAML", "GS"], model="black") # pnl.append(portf.pnl) # df = pd.DataFrame({'pnl': pnl}, index=date_range) option_delta = Index.from_tradeid(870) option1 = BlackSwaption.from_tradeid(5, option_delta) option2 = BlackSwaption.from_tradeid(6, option_delta) portf = Portfolio([option1, option2, option_delta]) date_range = pd.bdate_range(option_delta.trade_date, pd.Timestamp('2017-04-19'), freq = 'W') vol_shock = np.arange(-0.15, 0.3, 0.01) spread_shock = np.arange(-0.2, 0.3, 0.01) vs = VolatilitySurface("IG", 27, trade_date=option_delta.trade_date) vol_surface = vs[vs.list(model="black")[-1]] df = run_portfolio_scenarios(portf, date_range, spread_shock, vol_shock, vol_surface, ['pv', 'delta']) # pnl = [] # for date in date_range: # portf.trade_date = date.date() # try: # portf.mark(source_list=["BAML", "GS"], model="black") # except ValueError: # pnl.append(None) # continue # else: # pnl.append(portf.pnl) # df = pd.DataFrame({'pnl': pnl}, index=date_range)