aboutsummaryrefslogtreecommitdiffstats
path: root/python/exploration/swaption_calendar_spread.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/exploration/swaption_calendar_spread.py')
-rw-r--r--python/exploration/swaption_calendar_spread.py38
1 files changed, 11 insertions, 27 deletions
diff --git a/python/exploration/swaption_calendar_spread.py b/python/exploration/swaption_calendar_spread.py
index f6d73848..f8df96ce 100644
--- a/python/exploration/swaption_calendar_spread.py
+++ b/python/exploration/swaption_calendar_spread.py
@@ -148,7 +148,7 @@ def dec_jan_2017_trade():
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_select = max([t for t in vs.list() if t[1] == 'BAML' and t[2] == 'payer' and t[3] == 'black'])
+ vol_select = vs.list('BAML', 'payer', 'black')[-1]
vol_surface = vs[vol_select]
df = run_portfolio_scenarios(portf, date_range, spread_shock, vol_shock, vol_surface, params=["pnl", "delta"], vol_time_roll=False)
@@ -165,27 +165,11 @@ def april_may_2017_trade():
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_select = max([t for t in vs.list() if t[1] == 'BAML' and t[2] == 'payer' and t[3] == 'black'])
+ vol_select = vs.list('BAML', 'payer', 'black')[-1]
vol_surface = vs[vol_select]
- df = run_portfolio_scenarios(portf, date_range, spread_shock, vol_shock, vol_surface, params=["pnl", "delta"], vol_time_roll=False)
- plot_time_color_map(df[round(df.vol_shock,2)==0], option_delta.spread * (1 + spread_shock), 'pnl')
-
-
-def april_may_2017_trade():
- 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') - BDay(), freq = '2B')
- 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_select = max([t for t in vs.list() if t[1] == 'BAML' and t[2] == 'payer' and t[3] == 'black'])
- vol_surface = vs[vol_select]
-
- df = run_portfolio_scenarios(portf, date_range, spread_shock, vol_shock, vol_surface, params=["pnl", "delta"], vol_time_roll=False)
+ df = run_portfolio_scenarios(portf, date_range, spread_shock, vol_shock,
+ vol_surface, params=["pnl", "delta"], vol_time_roll=False)
plot_time_color_map(df[round(df.vol_shock,2)==0], option_delta.spread * (1 + spread_shock), 'pnl')
@@ -196,10 +180,10 @@ def june_july_2017_trade():
option1_pf = BlackSwaption.from_tradeid(7, option_delta_pf)
option2_pf = BlackSwaption.from_tradeid(9, option_delta_pf)
#option_delta.notional = option_delta.notional - option_delta2.notional
- option_delta_pf.notional = 50335169
+ option_delta_pf.notional = 50_335_169
portf = Portfolio([option1_pf, option2_pf, option_delta_pf])
- portf.trade_date = datetime.date(2017,5,17)
+ portf.trade_date = datetime.date(2017, 5, 17)
portf.mark()
portf.reset_pv()
@@ -207,10 +191,11 @@ def june_july_2017_trade():
vol_shock = np.arange(-0.15, 0.3, 0.01)
spread_shock = np.arange(-0.2, 0.3, 0.01)
vs = VolatilitySurface("IG", 28, trade_date=option_delta_pf.trade_date)
- vol_select = max([t for t in vs.list() if t[1] == 'BAML' and t[2] == 'payer' and t[3] == 'black'])
+ vol_select = vs.list('BAML', 'payer', 'black')[-1]
vol_surface = vs[vol_select]
- df = run_portfolio_scenarios(portf, date_range, spread_shock, vol_shock, vol_surface, params=["pnl", "delta"], vol_time_roll=True)
+ df = run_portfolio_scenarios(portf, date_range, spread_shock, vol_shock, vol_surface,
+ params=["pnl", "delta"], vol_time_roll=True)
#period = -4
#plot_df(df.loc[date_range[period]], spread_plot_range, vol_shock_range)
@@ -242,7 +227,7 @@ def hy_trade_scenario():
vol_shock = np.arange(-0.15, 0.3, 0.01)
spread_shock = np.arange(-0.1, 0.4, 0.01)
vs = VolatilitySurface("HY", 28, trade_date=option_delta.trade_date)
- vol_select = max([t for t in vs.list() if t[1] == 'BAML' and t[2] == 'payer' and t[3] == 'black'])
+ vol_select = vs.list('BAML', 'payer', 'black')[-1]
vol_surface = vs[vol_select]
df = run_portfolio_scenarios(portf, date_range, spread_shock, vol_shock, vol_surface, params=["pnl", "delta"], vol_time_roll=True)
@@ -268,7 +253,7 @@ def portfolio():
vol_shock = np.arange(-0.15, 0.3, 0.01)
spread_shock = np.arange(-0.2, 0.3, 0.01)
vs = VolatilitySurface("IG", 28, trade_date=option_delta.trade_date)
- vol_select = max([t for t in vs.list() if t[1] == 'BAML' and t[2] == 'payer' and t[3] == 'black'])
+ vol_select = vs.list('BAML', 'payer', 'black')[-1]
vol_surface = vs[vol_select]
df = run_portfolio_scenarios(portf, date_range, spread_shock, vol_shock, vol_surface, params=["pnl", "delta"], vol_time_roll=False)
@@ -295,4 +280,3 @@ def probabilities():
curr_vols = np.maximum(vol_surface.ev(t, mon), 0)
dist = lognorm(curr_vols, scale)
lognorm.ppf(.5, curr_vols, scale = np.exp(64))
-