import numpy as np import pandas as pd from analytics import Index, BlackSwaption, Portfolio, BlackSwaptionVolSurface from pandas.tseries.offsets import BDay from analytics.scenarios import run_portfolio_scenarios 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], ['opt1', 'opt2', 'delta']) date_range = pd.bdate_range(option_delta.value_date, pd.Timestamp('2017-05-17') - BDay(), freq='5B') vol_shock = np.arange(-0.15, 0.3, 0.01) spread_shock = np.arange(-0.2, 0.3, 0.01) vs = BlackSwaptionVolSurface("IG", 28, value_date=option_delta.value_date) vol_surface = vs[vs.list(source="BAML")[-1]] df = run_portfolio_scenarios(portf, date_range, params=['pnl', 'delta', 'spread'], spread_shock=spread_shock, vol_shock=vol_shock, vol_surface=vol_surface)