Skip to content

Instantly share code, notes, and snippets.

@AnthonyFJGarner
Created October 26, 2018 08:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save AnthonyFJGarner/d1bb036228b018ee12849ecd144d76d6 to your computer and use it in GitHub Desktop.
Save AnthonyFJGarner/d1bb036228b018ee12849ecd144d76d6 to your computer and use it in GitHub Desktop.
Rolling VIX Options
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-18T12:45:44.192244Z",
"start_time": "2018-10-18T12:45:43.850069Z"
}
},
"outputs": [],
"source": [
"#Imports\n",
"import pandas as pd\n",
"import numpy as np\n",
"from typing import Dict, List\n",
"from collections import OrderedDict\n",
"import datetime as datetime\n",
"from pandas.tseries.offsets import *\n",
"from IPython.core.debugger import set_trace\n",
"#import pixiedust\n",
"#ctrl-shift-p for the command palette\n",
"pd.set_option(\"max_colwidth\", 100)\n",
"pd.set_option(\"display.max_rows\", 100000)\n",
"pd.set_option(\"display.max_columns\", 1000)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-18T16:21:37.413860Z",
"start_time": "2018-10-18T16:21:37.351988Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>underlying_symbol</th>\n",
" <th>quote_date</th>\n",
" <th>root</th>\n",
" <th>expiration</th>\n",
" <th>strike</th>\n",
" <th>option_type</th>\n",
" <th>open</th>\n",
" <th>high</th>\n",
" <th>low</th>\n",
" <th>close</th>\n",
" <th>trade_volume</th>\n",
" <th>bid_size_1545</th>\n",
" <th>bid_1545</th>\n",
" <th>ask_size_1545</th>\n",
" <th>ask_1545</th>\n",
" <th>underlying_bid_1545</th>\n",
" <th>underlying_ask_1545</th>\n",
" <th>bid_size_eod</th>\n",
" <th>ask_size_eod</th>\n",
" <th>vwap</th>\n",
" <th>open_interest</th>\n",
" <th>delivery_code</th>\n",
" <th>futures</th>\n",
" <th>mid_eod</th>\n",
" <th>mid_underlying</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>^VIX</td>\n",
" <td>2006-02-27</td>\n",
" <td>VIX</td>\n",
" <td>2006-04-19</td>\n",
" <td>10.0</td>\n",
" <td>c</td>\n",
" <td>2.80</td>\n",
" <td>2.80</td>\n",
" <td>2.8</td>\n",
" <td>2.8</td>\n",
" <td>10.0</td>\n",
" <td>1.0</td>\n",
" <td>2.70</td>\n",
" <td>50.0</td>\n",
" <td>2.90</td>\n",
" <td>11.47</td>\n",
" <td>11.47</td>\n",
" <td>1.0</td>\n",
" <td>10.0</td>\n",
" <td>2.80</td>\n",
" <td>23.0</td>\n",
" <td>0</td>\n",
" <td>12.5</td>\n",
" <td>2.950</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>^VIX</td>\n",
" <td>2006-02-27</td>\n",
" <td>VIX</td>\n",
" <td>2006-04-19</td>\n",
" <td>10.0</td>\n",
" <td>p</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>50.0</td>\n",
" <td>0.15</td>\n",
" <td>11.47</td>\n",
" <td>11.47</td>\n",
" <td>0.0</td>\n",
" <td>50.0</td>\n",
" <td>0.00</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>12.5</td>\n",
" <td>0.075</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>^VIX</td>\n",
" <td>2006-02-27</td>\n",
" <td>VIX</td>\n",
" <td>2006-04-19</td>\n",
" <td>12.5</td>\n",
" <td>c</td>\n",
" <td>1.15</td>\n",
" <td>1.15</td>\n",
" <td>1.1</td>\n",
" <td>1.1</td>\n",
" <td>30.0</td>\n",
" <td>10.0</td>\n",
" <td>1.15</td>\n",
" <td>50.0</td>\n",
" <td>1.20</td>\n",
" <td>11.47</td>\n",
" <td>11.47</td>\n",
" <td>10.0</td>\n",
" <td>10.0</td>\n",
" <td>1.13</td>\n",
" <td>560.0</td>\n",
" <td>0</td>\n",
" <td>12.5</td>\n",
" <td>1.300</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>^VIX</td>\n",
" <td>2006-02-27</td>\n",
" <td>VIX</td>\n",
" <td>2006-04-19</td>\n",
" <td>12.5</td>\n",
" <td>p</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>50.0</td>\n",
" <td>0.75</td>\n",
" <td>1.0</td>\n",
" <td>0.90</td>\n",
" <td>11.47</td>\n",
" <td>11.47</td>\n",
" <td>10.0</td>\n",
" <td>10.0</td>\n",
" <td>0.00</td>\n",
" <td>975.0</td>\n",
" <td>0</td>\n",
" <td>12.5</td>\n",
" <td>0.875</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>^VIX</td>\n",
" <td>2006-02-27</td>\n",
" <td>VIX</td>\n",
" <td>2006-04-19</td>\n",
" <td>12.5</td>\n",
" <td>c</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>11.47</td>\n",
" <td>11.47</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>12.5</td>\n",
" <td>0.000</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" underlying_symbol quote_date root expiration strike option_type open \\\n",
"0 ^VIX 2006-02-27 VIX 2006-04-19 10.0 c 2.80 \n",
"1 ^VIX 2006-02-27 VIX 2006-04-19 10.0 p 0.00 \n",
"2 ^VIX 2006-02-27 VIX 2006-04-19 12.5 c 1.15 \n",
"3 ^VIX 2006-02-27 VIX 2006-04-19 12.5 p 0.00 \n",
"4 ^VIX 2006-02-27 VIX 2006-04-19 12.5 c 0.00 \n",
"\n",
" high low close trade_volume bid_size_1545 bid_1545 ask_size_1545 \\\n",
"0 2.80 2.8 2.8 10.0 1.0 2.70 50.0 \n",
"1 0.00 0.0 0.0 0.0 0.0 0.00 50.0 \n",
"2 1.15 1.1 1.1 30.0 10.0 1.15 50.0 \n",
"3 0.00 0.0 0.0 0.0 50.0 0.75 1.0 \n",
"4 0.00 0.0 0.0 0.0 0.0 0.00 0.0 \n",
"\n",
" ask_1545 underlying_bid_1545 underlying_ask_1545 bid_size_eod \\\n",
"0 2.90 11.47 11.47 1.0 \n",
"1 0.15 11.47 11.47 0.0 \n",
"2 1.20 11.47 11.47 10.0 \n",
"3 0.90 11.47 11.47 10.0 \n",
"4 0.00 11.47 11.47 0.0 \n",
"\n",
" ask_size_eod vwap open_interest delivery_code futures mid_eod \\\n",
"0 10.0 2.80 23.0 0 12.5 2.950 \n",
"1 50.0 0.00 0.0 0 12.5 0.075 \n",
"2 10.0 1.13 560.0 0 12.5 1.300 \n",
"3 10.0 0.00 975.0 0 12.5 0.875 \n",
"4 0.0 0.00 0.0 0 12.5 0.000 \n",
"\n",
" mid_underlying \n",
"0 11.59 \n",
"1 11.59 \n",
"2 11.59 \n",
"3 11.59 \n",
"4 11.59 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"options_data = '../data/Options/vix_w_futures.csv'\n",
"\n",
"options = pd.read_csv(\n",
" options_data,\n",
" header=0,\n",
" parse_dates=[\"quote_date\", \"expiration\"],\n",
")\n",
"options.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-18T12:45:50.874434Z",
"start_time": "2018-10-18T12:45:50.860470Z"
}
},
"outputs": [],
"source": [
"expiry_dates=options.expiration.unique()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T16:29:13.028743Z",
"start_time": "2018-10-06T16:29:12.018163Z"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>quote_date</th>\n",
" <th>expiration</th>\n",
" <th>strike</th>\n",
" <th>trade_volume</th>\n",
" <th>futures</th>\n",
" <th>mid_eod</th>\n",
" <th>mid_underlying</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>10.0</td>\n",
" <td>0.0</td>\n",
" <td>12.5</td>\n",
" <td>0.075</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>12.5</td>\n",
" <td>0.0</td>\n",
" <td>12.5</td>\n",
" <td>0.875</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>12.5</td>\n",
" <td>0.0</td>\n",
" <td>12.5</td>\n",
" <td>0.000</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>15.0</td>\n",
" <td>0.0</td>\n",
" <td>12.5</td>\n",
" <td>2.700</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>15.0</td>\n",
" <td>0.0</td>\n",
" <td>12.5</td>\n",
" <td>0.000</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" quote_date expiration strike trade_volume futures mid_eod \\\n",
"0 2006-02-27 2006-04-19 10.0 0.0 12.5 0.075 \n",
"1 2006-02-27 2006-04-19 12.5 0.0 12.5 0.875 \n",
"2 2006-02-27 2006-04-19 12.5 0.0 12.5 0.000 \n",
"3 2006-02-27 2006-04-19 15.0 0.0 12.5 2.700 \n",
"4 2006-02-27 2006-04-19 15.0 0.0 12.5 0.000 \n",
"\n",
" mid_underlying \n",
"0 11.59 \n",
"1 11.59 \n",
"2 11.59 \n",
"3 11.59 \n",
"4 11.59 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"puts_data = '../data/Options/vixPuts.csv'\n",
"#puts_data='../data/Options/vxxPuts.csv'\n",
"puts = pd.read_csv(\n",
" puts_data,\n",
" header=0,\n",
" parse_dates=[\"quote_date\", \"expiration\"],\n",
" usecols=[\n",
" \"quote_date\", \"expiration\", \"strike\", 'trade_volume',\"mid_eod\", \"mid_underlying\",\"futures\"\n",
" ])\n",
"puts.head()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T16:29:13.040391Z",
"start_time": "2018-10-06T16:29:13.031414Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"154"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(puts.expiration.unique())"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T16:29:13.126238Z",
"start_time": "2018-10-06T16:29:13.042385Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>quote_date</th>\n",
" <th>expiration</th>\n",
" <th>strike</th>\n",
" <th>trade_volume</th>\n",
" <th>futures</th>\n",
" <th>mid_eod</th>\n",
" <th>mid_underlying</th>\n",
" <th>DSame</th>\n",
" <th>MSame</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>10.0</td>\n",
" <td>0.0</td>\n",
" <td>12.5</td>\n",
" <td>0.075</td>\n",
" <td>11.59</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>12.5</td>\n",
" <td>0.0</td>\n",
" <td>12.5</td>\n",
" <td>0.875</td>\n",
" <td>11.59</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>12.5</td>\n",
" <td>0.0</td>\n",
" <td>12.5</td>\n",
" <td>0.000</td>\n",
" <td>11.59</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>15.0</td>\n",
" <td>0.0</td>\n",
" <td>12.5</td>\n",
" <td>2.700</td>\n",
" <td>11.59</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>15.0</td>\n",
" <td>0.0</td>\n",
" <td>12.5</td>\n",
" <td>0.000</td>\n",
" <td>11.59</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" quote_date expiration strike trade_volume futures mid_eod \\\n",
"0 2006-02-27 2006-04-19 10.0 0.0 12.5 0.075 \n",
"1 2006-02-27 2006-04-19 12.5 0.0 12.5 0.875 \n",
"2 2006-02-27 2006-04-19 12.5 0.0 12.5 0.000 \n",
"3 2006-02-27 2006-04-19 15.0 0.0 12.5 2.700 \n",
"4 2006-02-27 2006-04-19 15.0 0.0 12.5 0.000 \n",
"\n",
" mid_underlying DSame MSame \n",
"0 11.59 True False \n",
"1 11.59 True False \n",
"2 11.59 True False \n",
"3 11.59 True False \n",
"4 11.59 True False "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#insert some column markers so we know when days, months change\n",
"\n",
"first_filter=puts.quote_date.isin(expiry_dates)\n",
"second_filter=puts.quote_date.isin(expiry_dates).shift(1)\n",
"\n",
"puts['DSame'] = puts.quote_date.eq(puts.quote_date.shift(-1))\n",
"#puts['MSame'] = puts.quote_date.dt.month.eq(\n",
"# puts.quote_date.dt.month.shift(1))\n",
"puts['MSame']=(first_filter==True) & (second_filter==False)\n",
"\n",
"puts.head()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T16:29:14.148457Z",
"start_time": "2018-10-06T16:29:13.127157Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>quote_date</th>\n",
" <th>expiration</th>\n",
" <th>strike</th>\n",
" <th>trade_volume</th>\n",
" <th>futures</th>\n",
" <th>mid_eod</th>\n",
" <th>mid_underlying</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>10.0</td>\n",
" <td>10.0</td>\n",
" <td>12.5</td>\n",
" <td>2.95</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>12.5</td>\n",
" <td>30.0</td>\n",
" <td>12.5</td>\n",
" <td>1.30</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>12.5</td>\n",
" <td>0.0</td>\n",
" <td>12.5</td>\n",
" <td>0.00</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>15.0</td>\n",
" <td>3001.0</td>\n",
" <td>12.5</td>\n",
" <td>0.65</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>15.0</td>\n",
" <td>0.0</td>\n",
" <td>12.5</td>\n",
" <td>0.00</td>\n",
" <td>11.59</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" quote_date expiration strike trade_volume futures mid_eod \\\n",
"0 2006-02-27 2006-04-19 10.0 10.0 12.5 2.95 \n",
"1 2006-02-27 2006-04-19 12.5 30.0 12.5 1.30 \n",
"2 2006-02-27 2006-04-19 12.5 0.0 12.5 0.00 \n",
"3 2006-02-27 2006-04-19 15.0 3001.0 12.5 0.65 \n",
"4 2006-02-27 2006-04-19 15.0 0.0 12.5 0.00 \n",
"\n",
" mid_underlying \n",
"0 11.59 \n",
"1 11.59 \n",
"2 11.59 \n",
"3 11.59 \n",
"4 11.59 "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"calls_data = '../data/Options/vixCalls.csv'\n",
"#calls_data='../data/Options/vxxCalls.csv'\n",
"\n",
"calls = pd.read_csv(\n",
" calls_data,\n",
" header=0,\n",
" parse_dates=[\"quote_date\", \"expiration\"],\n",
" usecols=[\n",
" \"quote_date\", \"expiration\", \"strike\", 'trade_volume', \"mid_eod\",\n",
" \"mid_underlying\",\"futures\"\n",
" ])\n",
"calls.head()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T16:29:14.158402Z",
"start_time": "2018-10-06T16:29:14.149422Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"154"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(calls.expiration.unique())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T16:29:14.316981Z",
"start_time": "2018-10-06T16:29:14.159396Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>quote_date</th>\n",
" <th>expiration</th>\n",
" <th>strike</th>\n",
" <th>trade_volume</th>\n",
" <th>futures</th>\n",
" <th>mid_eod</th>\n",
" <th>mid_underlying</th>\n",
" <th>DSame</th>\n",
" <th>MSame</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>10.0</td>\n",
" <td>10.0</td>\n",
" <td>12.5</td>\n",
" <td>2.95</td>\n",
" <td>11.59</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>12.5</td>\n",
" <td>30.0</td>\n",
" <td>12.5</td>\n",
" <td>1.30</td>\n",
" <td>11.59</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>12.5</td>\n",
" <td>0.0</td>\n",
" <td>12.5</td>\n",
" <td>0.00</td>\n",
" <td>11.59</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>15.0</td>\n",
" <td>3001.0</td>\n",
" <td>12.5</td>\n",
" <td>0.65</td>\n",
" <td>11.59</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2006-02-27</td>\n",
" <td>2006-04-19</td>\n",
" <td>15.0</td>\n",
" <td>0.0</td>\n",
" <td>12.5</td>\n",
" <td>0.00</td>\n",
" <td>11.59</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" quote_date expiration strike trade_volume futures mid_eod \\\n",
"0 2006-02-27 2006-04-19 10.0 10.0 12.5 2.95 \n",
"1 2006-02-27 2006-04-19 12.5 30.0 12.5 1.30 \n",
"2 2006-02-27 2006-04-19 12.5 0.0 12.5 0.00 \n",
"3 2006-02-27 2006-04-19 15.0 3001.0 12.5 0.65 \n",
"4 2006-02-27 2006-04-19 15.0 0.0 12.5 0.00 \n",
"\n",
" mid_underlying DSame MSame \n",
"0 11.59 True False \n",
"1 11.59 True False \n",
"2 11.59 True False \n",
"3 11.59 True False \n",
"4 11.59 True False "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#insert some column markers so we know when days, months change\n",
"first_filter=calls.quote_date.isin(expiry_dates)\n",
"second_filter=calls.quote_date.isin(expiry_dates).shift(1)\n",
"calls['DSame'] = calls.quote_date.eq(calls.quote_date.shift(-1))\n",
"#calls['MSame'] = calls.quote_date.dt.month.eq(\n",
" #calls.quote_date.dt.month.shift(1))\n",
"calls['MSame'] =(first_filter==True) & (second_filter==False)\n",
"calls.head()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T17:11:40.171377Z",
"start_time": "2018-10-06T17:11:40.167387Z"
}
},
"outputs": [],
"source": [
"#initialise variables\n",
"#what length of option are you looking for in days?\n",
"put_Expiration = int(200)\n",
"#<1=OTM, 1=ATM, >1=ITM\n",
"put_moneyness=1.00"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T17:11:54.603705Z",
"start_time": "2018-10-06T17:11:40.897416Z"
},
"code_folding": [],
"pixiedust": {
"displayParams": {}
}
},
"outputs": [],
"source": [
"#%%pixie_debugger\n",
"#initialise variables\n",
"\n",
"temp_puts = {}\n",
"a = 0\n",
"for i, row in enumerate(puts.itertuples(), 0):\n",
"\n",
" if i == 0:\n",
" start = False\n",
" #break\n",
" if (row.MSame == True):\n",
" #reset target expiration, target strike 1st day of each month\n",
" start=True\n",
" newMonth = row.quote_date\n",
" targetExpiration = row.quote_date + put_Expiration * Day()\n",
" targetExpirationDifference = abs(row.expiration - targetExpiration)\n",
" #if row.mid_underlying <20: put_moneyness= 1.00\n",
" #if row.mid_underlying >20 and row.mid_underlying <30: put_moneyness= 1.00\n",
" #if row.mid_underlying >30: put_moneyness= 0.80\n",
" strikeTarget = row.mid_underlying * put_moneyness\n",
" myStrikeDiff = abs(row.strike - strikeTarget)\n",
" tempExpiration = row.expiration\n",
" strikeLocation = (i)\n",
" if start == True:\n",
"\n",
" if row.quote_date == newMonth and row.MSame == False:\n",
" #iterate through the many different expirations and strikes for the first day of the new month\n",
" #find the closest match to (a) targetExpiration and then (b) targetStrike\n",
"\n",
" if abs(targetExpiration -\n",
" row.expiration) < targetExpirationDifference:\n",
"\n",
" #error correction routine - when diff between target expiration and expiration continues to decline,\n",
" #algo chooses the closer expirataion and then moves onto choose closest strike\n",
" targetExpirationDifference = abs(targetExpiration -\n",
" row.expiration)\n",
" myStrikeDiff = abs(row.strike - strikeTarget)\n",
" tempExpiration = row.expiration\n",
" strikeLocation = (i)\n",
"\n",
" if tempExpiration == row.expiration:\n",
" if abs(strikeTarget - row.strike) <= myStrikeDiff:\n",
" myStrikeDiff = abs(strikeTarget - row.strike)\n",
" strikeLocation = (i)\n",
"\n",
" #closest to target expiration has been chosen. Using error correction algo now chooses\n",
" #strike nearest to target strike\n",
"\n",
" if row.quote_date == newMonth and row.DSame == False:\n",
" temp_puts[puts.quote_date[i]] = [\n",
" i,\n",
" puts.quote_date[i],\n",
" puts.expiration[strikeLocation],\n",
" puts.strike[strikeLocation],\n",
" puts.trade_volume[strikeLocation],\n",
" puts.mid_eod[strikeLocation], #today's price \n",
" newMonth,\n",
" targetExpiration,\n",
" targetExpirationDifference,\n",
" puts.mid_underlying[strikeLocation],\n",
" puts.futures[strikeLocation],\n",
" strikeTarget,\n",
" strikeLocation,\n",
" myStrikeDiff\n",
" ]\n",
"\n",
" if row.quote_date != newMonth and row.MSame == False:\n",
" if row.expiration == puts.expiration[strikeLocation] and row.strike == puts.strike[strikeLocation]:\n",
" temp_puts[puts.quote_date[i]] = [\n",
" i,\n",
" puts.quote_date[i],\n",
" puts.expiration[strikeLocation],\n",
" puts.strike[strikeLocation],\n",
" puts.trade_volume[i],\n",
" puts.mid_eod[i], #today's price \n",
" newMonth,\n",
" targetExpiration,\n",
" targetExpirationDifference,\n",
" puts.mid_underlying[i],\n",
" puts.futures[i],\n",
" strikeTarget,\n",
" strikeLocation,\n",
" myStrikeDiff\n",
" ]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T17:11:54.750309Z",
"start_time": "2018-10-06T17:11:54.604700Z"
},
"code_folding": [],
"scrolled": false
},
"outputs": [],
"source": [
"rolling_puts = pd.DataFrame(temp_puts).T.fillna(method='ffill')\n",
"rolling_puts.index.name = 'Date'\n",
"rolling_puts.columns = [\n",
" 'i', 'quote_date', 'expiration', 'strike', 'trade_volume', 'price',\n",
" 'newMonth', 'targetExpiration', 'ExpDiff', 'mid_underlying','futures',\n",
" 'strikeTarget', 'strikeLocation', 'StrikeDiff'\n",
"]\n",
"first_filter=rolling_puts.quote_date.isin(expiry_dates)\n",
"second_filter=rolling_puts.quote_date.isin(expiry_dates).shift(1)\n",
"rolling_puts['entry'] =(first_filter==True) & (second_filter==False)\n",
"rolling_puts['exit'] =rolling_puts.entry.shift(-1)\n",
"#rolling_puts['exit'] =(first_filter==True) & (second_filter==False)\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>i</th>\n",
" <th>quote_date</th>\n",
" <th>expiration</th>\n",
" <th>strike</th>\n",
" <th>trade_volume</th>\n",
" <th>price</th>\n",
" <th>newMonth</th>\n",
" <th>targetExpiration</th>\n",
" <th>ExpDiff</th>\n",
" <th>mid_underlying</th>\n",
" <th>futures</th>\n",
" <th>strikeTarget</th>\n",
" <th>strikeLocation</th>\n",
" <th>StrikeDiff</th>\n",
" <th>entry</th>\n",
" <th>exit</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2006-04-19</th>\n",
" <td>714</td>\n",
" <td>2006-04-19</td>\n",
" <td>2006-05-17</td>\n",
" <td>22.5</td>\n",
" <td>0.0</td>\n",
" <td>9.90</td>\n",
" <td>2006-04-19</td>\n",
" <td>2006-11-05</td>\n",
" <td>172 days</td>\n",
" <td>11.32</td>\n",
" <td>22.5</td>\n",
" <td>11.32</td>\n",
" <td>714</td>\n",
" <td>11.18</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006-04-20</th>\n",
" <td>721</td>\n",
" <td>2006-04-20</td>\n",
" <td>2006-05-17</td>\n",
" <td>22.5</td>\n",
" <td>0.0</td>\n",
" <td>12.55</td>\n",
" <td>2006-04-19</td>\n",
" <td>2006-11-05</td>\n",
" <td>172 days</td>\n",
" <td>11.64</td>\n",
" <td>12.5</td>\n",
" <td>11.32</td>\n",
" <td>714</td>\n",
" <td>11.18</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006-04-21</th>\n",
" <td>729</td>\n",
" <td>2006-04-21</td>\n",
" <td>2006-05-17</td>\n",
" <td>22.5</td>\n",
" <td>0.0</td>\n",
" <td>12.35</td>\n",
" <td>2006-04-19</td>\n",
" <td>2006-11-05</td>\n",
" <td>172 days</td>\n",
" <td>11.59</td>\n",
" <td>12.5</td>\n",
" <td>11.32</td>\n",
" <td>714</td>\n",
" <td>11.18</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006-04-24</th>\n",
" <td>768</td>\n",
" <td>2006-04-24</td>\n",
" <td>2006-05-17</td>\n",
" <td>22.5</td>\n",
" <td>20.0</td>\n",
" <td>12.45</td>\n",
" <td>2006-04-19</td>\n",
" <td>2006-11-05</td>\n",
" <td>172 days</td>\n",
" <td>11.75</td>\n",
" <td>12.5</td>\n",
" <td>11.32</td>\n",
" <td>714</td>\n",
" <td>11.18</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006-04-25</th>\n",
" <td>807</td>\n",
" <td>2006-04-25</td>\n",
" <td>2006-05-17</td>\n",
" <td>22.5</td>\n",
" <td>0.0</td>\n",
" <td>9.90</td>\n",
" <td>2006-04-19</td>\n",
" <td>2006-11-05</td>\n",
" <td>172 days</td>\n",
" <td>11.76</td>\n",
" <td>12.5</td>\n",
" <td>11.32</td>\n",
" <td>714</td>\n",
" <td>11.18</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" i quote_date expiration strike trade_volume price newMonth \\\n",
"Date \n",
"2006-04-19 714 2006-04-19 2006-05-17 22.5 0.0 9.90 2006-04-19 \n",
"2006-04-20 721 2006-04-20 2006-05-17 22.5 0.0 12.55 2006-04-19 \n",
"2006-04-21 729 2006-04-21 2006-05-17 22.5 0.0 12.35 2006-04-19 \n",
"2006-04-24 768 2006-04-24 2006-05-17 22.5 20.0 12.45 2006-04-19 \n",
"2006-04-25 807 2006-04-25 2006-05-17 22.5 0.0 9.90 2006-04-19 \n",
"\n",
" targetExpiration ExpDiff mid_underlying futures strikeTarget \\\n",
"Date \n",
"2006-04-19 2006-11-05 172 days 11.32 22.5 11.32 \n",
"2006-04-20 2006-11-05 172 days 11.64 12.5 11.32 \n",
"2006-04-21 2006-11-05 172 days 11.59 12.5 11.32 \n",
"2006-04-24 2006-11-05 172 days 11.75 12.5 11.32 \n",
"2006-04-25 2006-11-05 172 days 11.76 12.5 11.32 \n",
"\n",
" strikeLocation StrikeDiff entry exit \n",
"Date \n",
"2006-04-19 714 11.18 False False \n",
"2006-04-20 714 11.18 False False \n",
"2006-04-21 714 11.18 False False \n",
"2006-04-24 714 11.18 False False \n",
"2006-04-25 714 11.18 False False "
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rolling_puts.head()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T17:11:54.882955Z",
"start_time": "2018-10-06T17:11:54.751322Z"
}
},
"outputs": [],
"source": [
"#puts_file='../data/Options/vxxRolling_puts.csv'\n",
"puts_file='../data/Options/vix_rolling_puts.csv'\n",
"rolling_puts.to_csv(puts_file)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T17:13:17.875042Z",
"start_time": "2018-10-06T17:13:17.871053Z"
}
},
"outputs": [],
"source": [
"#initialise variables\n",
"#what length of option are you looking for in days?\n",
"call_Expiration = int(200)\n",
"#<1=ITM, 1=ATM, >1=OTM\n",
"call_moneyness = 2.00"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T17:13:32.295572Z",
"start_time": "2018-10-06T17:13:18.632102Z"
}
},
"outputs": [],
"source": [
"#%%pixie_debugger\n",
"#initialise variables\n",
"\n",
"temp_calls = {}\n",
"a = 0\n",
"for i, row in enumerate(calls.itertuples(), 0):\n",
"\n",
" if i == 0:\n",
" start = False\n",
" #break\n",
" if (row.MSame == True):\n",
" #reset target expiration, target strike 1st day of each month\n",
" start=True\n",
" newMonth = row.quote_date\n",
" targetExpiration = row.quote_date + call_Expiration * Day()\n",
" targetExpirationDifference = abs(row.expiration - targetExpiration)\n",
" strikeTarget = row.mid_underlying * call_moneyness\n",
" myStrikeDiff = abs(row.strike - strikeTarget)\n",
" tempExpiration = row.expiration\n",
" strikeLocation = (i)\n",
" if start == True:\n",
"\n",
" if row.quote_date == newMonth and row.MSame == False:\n",
" #iterate through the many different expirations and strikes for the first day of the new month\n",
" #find the closest match to (a) targetExpiration and then (b) targetStrike\n",
"\n",
" if abs(targetExpiration -\n",
" row.expiration) < targetExpirationDifference:\n",
"\n",
" #error correction routine - when diff between target expiration and expiration continues to decline,\n",
" #algo chooses the closer expirataion and then moves onto choose closest strike\n",
" targetExpirationDifference = abs(targetExpiration -\n",
" row.expiration)\n",
" myStrikeDiff = abs(row.strike - strikeTarget)\n",
" tempExpiration = row.expiration\n",
" strikeLocation = (i)\n",
"\n",
" if tempExpiration == row.expiration:\n",
" if abs(strikeTarget - row.strike) <= myStrikeDiff:\n",
" myStrikeDiff = abs(strikeTarget - row.strike)\n",
" strikeLocation = (i)\n",
"\n",
"# #closest to target expiration has been chosen. Using error correction algo now chooses\n",
"#strike nearest to target strike\n",
"\n",
" if row.quote_date == newMonth and row.DSame == False:\n",
"\n",
" temp_calls[calls.quote_date[i]] = [\n",
" i,\n",
" calls.quote_date[i],\n",
" calls.expiration[strikeLocation],\n",
" calls.strike[strikeLocation],\n",
" calls.trade_volume[strikeLocation],\n",
" calls.mid_eod[strikeLocation], #today's price \n",
" newMonth,\n",
" targetExpiration,\n",
" targetExpirationDifference,\n",
" calls.mid_underlying[strikeLocation],\n",
" calls.futures[strikeLocation],\n",
" strikeTarget,\n",
" strikeLocation,\n",
" myStrikeDiff\n",
" ]\n",
"\n",
" if row.quote_date != newMonth and row.MSame == False:\n",
" if row.expiration == calls.expiration[strikeLocation] and row.strike == calls.strike[strikeLocation]:\n",
" temp_calls[calls.quote_date[i]] = [\n",
" i,\n",
" calls.quote_date[i],\n",
" calls.expiration[strikeLocation],\n",
" calls.strike[strikeLocation],\n",
" calls.trade_volume[i],\n",
" calls.mid_eod[i], #today's price \n",
" newMonth,\n",
" targetExpiration,\n",
" targetExpirationDifference,\n",
" calls.mid_underlying[i],\n",
" calls.futures[i],\n",
" strikeTarget,\n",
" strikeLocation,\n",
" myStrikeDiff\n",
" ]"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T17:13:32.452118Z",
"start_time": "2018-10-06T17:13:32.297567Z"
}
},
"outputs": [],
"source": [
"rolling_calls = pd.DataFrame(temp_calls).T.fillna(method='ffill')\n",
"rolling_calls.index.name = 'Date'\n",
"rolling_calls.columns = [\n",
" 'i', 'quote_date','expiration', 'strike','trade_volume','price', 'newMonth',\n",
" 'targetExpiration', 'ExpDiff', 'mid_underlying', 'futures','strikeTarget',\n",
" 'strikeLocation', 'StrikeDiff'\n",
"]\n",
"first_filter=rolling_calls.quote_date.isin(expiry_dates)\n",
"second_filter=rolling_calls.quote_date.isin(expiry_dates).shift(1)\n",
"rolling_calls['entry'] =(first_filter==True) & (second_filter==False)\n",
"rolling_calls['exit'] =rolling_calls.entry.shift(-1)\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>i</th>\n",
" <th>quote_date</th>\n",
" <th>expiration</th>\n",
" <th>strike</th>\n",
" <th>trade_volume</th>\n",
" <th>price</th>\n",
" <th>newMonth</th>\n",
" <th>targetExpiration</th>\n",
" <th>ExpDiff</th>\n",
" <th>mid_underlying</th>\n",
" <th>futures</th>\n",
" <th>strikeTarget</th>\n",
" <th>strikeLocation</th>\n",
" <th>StrikeDiff</th>\n",
" <th>entry</th>\n",
" <th>exit</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2006-04-19</th>\n",
" <td>714</td>\n",
" <td>2006-04-19</td>\n",
" <td>2006-05-17</td>\n",
" <td>22.5</td>\n",
" <td>0.0</td>\n",
" <td>0.075</td>\n",
" <td>2006-04-19</td>\n",
" <td>2006-11-05</td>\n",
" <td>172 days</td>\n",
" <td>11.32</td>\n",
" <td>22.5</td>\n",
" <td>22.64</td>\n",
" <td>714</td>\n",
" <td>0.14</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006-04-20</th>\n",
" <td>721</td>\n",
" <td>2006-04-20</td>\n",
" <td>2006-05-17</td>\n",
" <td>22.5</td>\n",
" <td>0.0</td>\n",
" <td>0.075</td>\n",
" <td>2006-04-19</td>\n",
" <td>2006-11-05</td>\n",
" <td>172 days</td>\n",
" <td>11.64</td>\n",
" <td>12.5</td>\n",
" <td>22.64</td>\n",
" <td>714</td>\n",
" <td>0.14</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006-04-21</th>\n",
" <td>729</td>\n",
" <td>2006-04-21</td>\n",
" <td>2006-05-17</td>\n",
" <td>22.5</td>\n",
" <td>0.0</td>\n",
" <td>0.075</td>\n",
" <td>2006-04-19</td>\n",
" <td>2006-11-05</td>\n",
" <td>172 days</td>\n",
" <td>11.59</td>\n",
" <td>12.5</td>\n",
" <td>22.64</td>\n",
" <td>714</td>\n",
" <td>0.14</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006-04-24</th>\n",
" <td>768</td>\n",
" <td>2006-04-24</td>\n",
" <td>2006-05-17</td>\n",
" <td>22.5</td>\n",
" <td>0.0</td>\n",
" <td>0.075</td>\n",
" <td>2006-04-19</td>\n",
" <td>2006-11-05</td>\n",
" <td>172 days</td>\n",
" <td>11.75</td>\n",
" <td>12.5</td>\n",
" <td>22.64</td>\n",
" <td>714</td>\n",
" <td>0.14</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006-04-25</th>\n",
" <td>807</td>\n",
" <td>2006-04-25</td>\n",
" <td>2006-05-17</td>\n",
" <td>22.5</td>\n",
" <td>0.0</td>\n",
" <td>0.050</td>\n",
" <td>2006-04-19</td>\n",
" <td>2006-11-05</td>\n",
" <td>172 days</td>\n",
" <td>11.76</td>\n",
" <td>12.5</td>\n",
" <td>22.64</td>\n",
" <td>714</td>\n",
" <td>0.14</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" i quote_date expiration strike trade_volume price newMonth \\\n",
"Date \n",
"2006-04-19 714 2006-04-19 2006-05-17 22.5 0.0 0.075 2006-04-19 \n",
"2006-04-20 721 2006-04-20 2006-05-17 22.5 0.0 0.075 2006-04-19 \n",
"2006-04-21 729 2006-04-21 2006-05-17 22.5 0.0 0.075 2006-04-19 \n",
"2006-04-24 768 2006-04-24 2006-05-17 22.5 0.0 0.075 2006-04-19 \n",
"2006-04-25 807 2006-04-25 2006-05-17 22.5 0.0 0.050 2006-04-19 \n",
"\n",
" targetExpiration ExpDiff mid_underlying futures strikeTarget \\\n",
"Date \n",
"2006-04-19 2006-11-05 172 days 11.32 22.5 22.64 \n",
"2006-04-20 2006-11-05 172 days 11.64 12.5 22.64 \n",
"2006-04-21 2006-11-05 172 days 11.59 12.5 22.64 \n",
"2006-04-24 2006-11-05 172 days 11.75 12.5 22.64 \n",
"2006-04-25 2006-11-05 172 days 11.76 12.5 22.64 \n",
"\n",
" strikeLocation StrikeDiff entry exit \n",
"Date \n",
"2006-04-19 714 0.14 False False \n",
"2006-04-20 714 0.14 False False \n",
"2006-04-21 714 0.14 False False \n",
"2006-04-24 714 0.14 False False \n",
"2006-04-25 714 0.14 False False "
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rolling_calls.head()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T17:13:32.585947Z",
"start_time": "2018-10-06T17:13:32.453132Z"
}
},
"outputs": [],
"source": [
"#calls_file='../data/Options/vxxRolling_calls.csv'\n",
"calls_file = '../data/Options/vix_rolling_calls.csv'\n",
"rolling_calls.to_csv(calls_file)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T16:29:43.638088Z",
"start_time": "2018-10-06T16:29:43.634061Z"
}
},
"outputs": [],
"source": [
"calls_file='../data/Options/vix_rolling_callsL.csv'\n",
"#rolling_calls.to_csv(calls_file)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"ExecuteTime": {
"end_time": "2018-10-06T16:29:43.648046Z",
"start_time": "2018-10-06T16:29:43.639050Z"
}
},
"outputs": [],
"source": [
"calls_file='../data/Options/vix_rolling_callsS.csv'\n",
"#rolling_calls.to_csv(calls_file)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"oldHeight": 579.181818,
"position": {
"height": "601px",
"left": "1117.44px",
"right": "20px",
"top": "112px",
"width": "358px"
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"varInspector_section_display": "block",
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment