aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/notebooks/Option Trades.ipynb77
1 files changed, 38 insertions, 39 deletions
diff --git a/python/notebooks/Option Trades.ipynb b/python/notebooks/Option Trades.ipynb
index ff4c6525..53ceb04c 100644
--- a/python/notebooks/Option Trades.ipynb
+++ b/python/notebooks/Option Trades.ipynb
@@ -13,9 +13,8 @@
"from graphics import plot_time_color_map, plot_color_map\n",
"from analytics import Swaption, BlackSwaption, BlackSwaptionVolSurface, Index, Portfolio\n",
"from analytics.scenarios import run_swaption_scenarios, run_index_scenarios, run_portfolio_scenarios\n",
- "\n",
- "#from exploration.swaption_calendar_spread import plot_trade_scenarios\n",
- "#import swaption_calendar_spread as spread"
+ "from scipy.interpolate import SmoothBivariateSpline\n",
+ "from db import dbengine"
]
},
{
@@ -85,7 +84,7 @@
"option_delta.notional = abs(option_delta.notional)\n",
"portf = Portfolio([option1, option2, option3, option_delta])\n",
"#Plot Scenarios Inputs: Portfolio, spread shock tightening%, spread shock widening%, snapshot period)\n",
- "plot_trade_scenarios(portf, -.15, .8, -4, vol_time_roll=False)"
+ "portf"
]
},
{
@@ -94,7 +93,7 @@
"metadata": {},
"outputs": [],
"source": [
- "portf"
+ "plot_trade_scenarios(portf, -.15, .8, -4, vol_time_roll=False)"
]
},
{
@@ -108,43 +107,22 @@
"option1 = BlackSwaption.from_tradeid(3, option_delta)\n",
"option2 = BlackSwaption.from_tradeid(4, option_delta)\n",
"portf = Portfolio([option1, option2, option_delta])\n",
- "plot_trade_scenarios(portf)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
+ "#plot_trade_scenarios(portf)\n",
+ "\n",
"#Feb 2017: Sell May Buy April Calendar Trade\n",
"option_delta = Index.from_tradeid(870)\n",
"option1 = BlackSwaption.from_tradeid(5, option_delta)\n",
"option2 = BlackSwaption.from_tradeid(6, option_delta)\n",
"portf = Portfolio([option1, option2, option_delta])\n",
- "plot_trade_scenarios(portf)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
+ "#plot_trade_scenarios(portf)\n",
+ "\n",
"#April 2017: Sell May Buy June Calendar Trade\n",
"option_delta = Index.from_tradeid(874)\n",
"option1 = BlackSwaption.from_tradeid(7, option_delta)\n",
"option2 = BlackSwaption.from_tradeid(8, option_delta)\n",
"portf = Portfolio([option1, option2, option_delta])\n",
- "plot_trade_scenarios(portf)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
+ "#plot_trade_scenarios(portf)\n",
+ "\n",
"#June July 2017 Calendar Trade\n",
"option_delta_pf = Index.from_tradeid(874)\n",
"option_delta2_pf = Index.from_tradeid(879)\n",
@@ -156,7 +134,14 @@
"portf = Portfolio([option1_pf, option2_pf, option_delta_pf])\n",
"portf.value_date = datetime.date(2017, 5, 17)\n",
"portf.mark()\n",
- "plot_trade_scenarios(portf)"
+ "#plot_trade_scenarios(portf)\n",
+ "\n",
+ "#July 2017: Buy Sept HY payer spread\n",
+ "option_delta = Index.from_tradeid(891)\n",
+ "option1 = BlackSwaption.from_tradeid(10, option_delta)\n",
+ "option2 = BlackSwaption.from_tradeid(11, option_delta)\n",
+ "portf = Portfolio([option1, option2, option_delta])\n",
+ "#plot_trade_scenarios(portf)"
]
},
{
@@ -165,12 +150,26 @@
"metadata": {},
"outputs": [],
"source": [
- "#July 2017: Buy Sept HY payer spread\n",
- "option_delta = Index.from_tradeid(891)\n",
- "option1 = BlackSwaption.from_tradeid(10, option_delta)\n",
- "option2 = BlackSwaption.from_tradeid(11, option_delta)\n",
- "portf = Portfolio([option1, option2, option_delta])\n",
- "plot_trade_scenarios(portf)"
+ "#Look at steepness of volatility - 90 days, .75 vs .25 payer deltas\n",
+ "sql_str = \"select b.quotedate, b.ref, b.ref_id, b.expiry, a.delta_pay, a.vol from \" \\\n",
+ " \"swaption_quotes a join swaption_ref_quotes b on a.ref_id = b.ref_id and index = 'IG'\"\n",
+ "df = pd.read_sql_query(sql_str, dbengine('serenitasdb'), \n",
+ " index_col=['quotedate'], parse_dates={'quotedate': {'utc': True}})\n",
+ "df['days_expiry'] = (df.expiry - df.index.date).dt.days\n",
+ "r_1 = []\n",
+ "for i, g in df.groupby(pd.Grouper(freq='D', level='quotedate')):\n",
+ " r = []\n",
+ " for i_1, g_1 in g.groupby(['days_expiry', 'delta_pay']):\n",
+ " r.append([i_1[0], i_1[1], g_1['vol'].mean()])\n",
+ " if len(r) > 0:\n",
+ " temp = np.dstack(r)\n",
+ " f = SmoothBivariateSpline(temp[0][0], temp[0][1], temp[0][2])\n",
+ " r = (f(90, .75) - f(90, .25))[0][0]\n",
+ " r_1.append([i, r])\n",
+ " else:\n",
+ " pass\n",
+ "df_1 = pd.DataFrame(r_1, columns=['date', 'steepness'])\n",
+ "df_1.set_index('date').plot()"
]
},
{