From df94bc9aa6f2a94f83329a3c2da36e67c28e9fd5 Mon Sep 17 00:00:00 2001 From: Dane Isburgh Date: Tue, 23 Jan 2024 08:21:51 -0500 Subject: [PATCH] chore: update notebooks --- .../aapl-options-data-etl-and-eda-test.ipynb | 2 +- notebooks/aapl-options-test.ipynb | 891 ++++++++++++++++++ 2 files changed, 892 insertions(+), 1 deletion(-) create mode 100644 notebooks/aapl-options-test.ipynb diff --git a/notebooks/aapl-options-data-etl-and-eda-test.ipynb b/notebooks/aapl-options-data-etl-and-eda-test.ipynb index 75297f1..e15730e 100644 --- a/notebooks/aapl-options-data-etl-and-eda-test.ipynb +++ b/notebooks/aapl-options-data-etl-and-eda-test.ipynb @@ -1329,7 +1329,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.10.5" }, "papermill": { "default_parameters": {}, diff --git a/notebooks/aapl-options-test.ipynb b/notebooks/aapl-options-test.ipynb new file mode 100644 index 0000000..b220c04 --- /dev/null +++ b/notebooks/aapl-options-test.ipynb @@ -0,0 +1,891 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "id": "563c124a", + "metadata": { + "_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19", + "_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5", + "papermill": { + "duration": 0.037344, + "end_time": "2023-02-27T05:31:50.171956", + "exception": false, + "start_time": "2023-02-27T05:31:50.134612", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "data/aapl-options-data-2020-2023/aapl_2016_2020.csv\n", + "data/aapl-options-data-2020-2023/aapl_2021_2023.csv\n" + ] + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "import os\n", + "\n", + "for dirname, _, filenames in os.walk(\"data/aapl-options-data-2020-2023\"):\n", + " for filename in filenames:\n", + " print(os.path.join(dirname, filename))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0300e44e", + "metadata": { + "papermill": { + "duration": 12.35202, + "end_time": "2023-02-27T05:32:02.543282", + "exception": false, + "start_time": "2023-02-27T05:31:50.191262", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/86/qt4jnsg167j7h7mqgbpp44kh0000gn/T/ipykernel_17513/1462759882.py:1: DtypeWarning: Columns (15,17,18,20,21,23) have mixed types. Specify dtype option on import or set low_memory=False.\n", + " df_raw = pd.read_csv(\"data/aapl-options-data-2020-2023/aapl_2021_2023.csv\")\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
QUOTE_UNIXTIMEQUOTE_READTIMEQUOTE_DATEQUOTE_TIME_HOURSUNDERLYING_LASTEXPIRE_DATEEXPIRE_UNIXDTEC_DELTAC_GAMMA...P_LASTP_DELTAP_GAMMAP_VEGAP_THETAP_RHOP_IVP_VOLUMESTRIKE_DISTANCESTRIKE_DISTANCE_PCT
016567056002022-07-01 16:002022-07-0116.0138.902022-07-0116567056000.001.000000.00000...0.020000-0.000930.000040.00011-0.005470.04.8894600.00000068.90.496
116567056002022-07-01 16:002022-07-0116.0138.902022-07-0116567056000.001.000000.00000...0.010000-0.000660.000010.00061-0.004910.04.4220800.00000063.90.460
216567056002022-07-01 16:002022-07-0116.0138.902022-07-0116567056000.001.000000.00000...0.010000-0.001080.00009-0.00012-0.004550.03.9842200.00000058.90.424
316567056002022-07-01 16:002022-07-0116.0138.902022-07-0116567056000.001.000000.00000...0.010000-0.001000.00015-0.00018-0.005250.03.5717900.00000053.90.388
416567056002022-07-01 16:002022-07-0116.0138.902022-07-0116567056000.000.994040.00067...0.010000-0.001380.000140.00025-0.004530.03.1808200.00000048.90.352
..................................................................
54815816645680002022-09-30 16:002022-09-3016.0138.092025-01-171737147600840.040.140590.00348...112.2-1.000000.000000.000000.000000.00.000000131.90.955
54815916645680002022-09-30 16:002022-09-3016.0138.092025-01-171737147600840.040.125150.00325...122.0-1.000000.000000.000000.000000.00.000000141.91.028
54816016645680002022-09-30 16:002022-09-3016.0138.092025-01-171737147600840.040.108930.00298...132.24-1.000000.000000.000000.000000.00.000000151.91.100
54816116645680002022-09-30 16:002022-09-3016.0138.092025-01-171737147600840.040.091470.00260...149.28-1.000000.000000.000000.000000.00.000000161.91.173
54816216645680002022-09-30 16:002022-09-3016.0138.092025-01-171737147600840.040.085050.00246...162.2-1.000000.000000.000000.000000.00.000000171.91.245
\n", + "

548163 rows × 33 columns

\n", + "
" + ], + "text/plain": [ + " QUOTE_UNIXTIME QUOTE_READTIME QUOTE_DATE QUOTE_TIME_HOURS \\\n", + "0 1656705600 2022-07-01 16:00 2022-07-01 16.0 \n", + "1 1656705600 2022-07-01 16:00 2022-07-01 16.0 \n", + "2 1656705600 2022-07-01 16:00 2022-07-01 16.0 \n", + "3 1656705600 2022-07-01 16:00 2022-07-01 16.0 \n", + "4 1656705600 2022-07-01 16:00 2022-07-01 16.0 \n", + "... ... ... ... ... \n", + "548158 1664568000 2022-09-30 16:00 2022-09-30 16.0 \n", + "548159 1664568000 2022-09-30 16:00 2022-09-30 16.0 \n", + "548160 1664568000 2022-09-30 16:00 2022-09-30 16.0 \n", + "548161 1664568000 2022-09-30 16:00 2022-09-30 16.0 \n", + "548162 1664568000 2022-09-30 16:00 2022-09-30 16.0 \n", + "\n", + " UNDERLYING_LAST EXPIRE_DATE EXPIRE_UNIX DTE C_DELTA C_GAMMA \\\n", + "0 138.90 2022-07-01 1656705600 0.00 1.00000 0.00000 \n", + "1 138.90 2022-07-01 1656705600 0.00 1.00000 0.00000 \n", + "2 138.90 2022-07-01 1656705600 0.00 1.00000 0.00000 \n", + "3 138.90 2022-07-01 1656705600 0.00 1.00000 0.00000 \n", + "4 138.90 2022-07-01 1656705600 0.00 0.99404 0.00067 \n", + "... ... ... ... ... ... ... \n", + "548158 138.09 2025-01-17 1737147600 840.04 0.14059 0.00348 \n", + "548159 138.09 2025-01-17 1737147600 840.04 0.12515 0.00325 \n", + "548160 138.09 2025-01-17 1737147600 840.04 0.10893 0.00298 \n", + "548161 138.09 2025-01-17 1737147600 840.04 0.09147 0.00260 \n", + "548162 138.09 2025-01-17 1737147600 840.04 0.08505 0.00246 \n", + "\n", + " ... P_LAST P_DELTA P_GAMMA P_VEGA P_THETA P_RHO P_IV \\\n", + "0 ... 0.020000 -0.00093 0.00004 0.00011 -0.00547 0.0 4.889460 \n", + "1 ... 0.010000 -0.00066 0.00001 0.00061 -0.00491 0.0 4.422080 \n", + "2 ... 0.010000 -0.00108 0.00009 -0.00012 -0.00455 0.0 3.984220 \n", + "3 ... 0.010000 -0.00100 0.00015 -0.00018 -0.00525 0.0 3.571790 \n", + "4 ... 0.010000 -0.00138 0.00014 0.00025 -0.00453 0.0 3.180820 \n", + "... ... ... ... ... ... ... ... ... \n", + "548158 ... 112.2 -1.00000 0.00000 0.00000 0.00000 0.0 \n", + "548159 ... 122.0 -1.00000 0.00000 0.00000 0.00000 0.0 \n", + "548160 ... 132.24 -1.00000 0.00000 0.00000 0.00000 0.0 \n", + "548161 ... 149.28 -1.00000 0.00000 0.00000 0.00000 0.0 \n", + "548162 ... 162.2 -1.00000 0.00000 0.00000 0.00000 0.0 \n", + "\n", + " P_VOLUME STRIKE_DISTANCE STRIKE_DISTANCE_PCT \n", + "0 0.000000 68.9 0.496 \n", + "1 0.000000 63.9 0.460 \n", + "2 0.000000 58.9 0.424 \n", + "3 0.000000 53.9 0.388 \n", + "4 0.000000 48.9 0.352 \n", + "... ... ... ... \n", + "548158 0.000000 131.9 0.955 \n", + "548159 0.000000 141.9 1.028 \n", + "548160 0.000000 151.9 1.100 \n", + "548161 0.000000 161.9 1.173 \n", + "548162 0.000000 171.9 1.245 \n", + "\n", + "[548163 rows x 33 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_raw = pd.read_csv(\"data/aapl-options-data-2020-2023/aapl_2021_2023.csv\")\n", + "columns = df_raw.columns\n", + "columns = [s.replace(\"[\", \"\") for s in columns]\n", + "columns = [s.replace(\"]\", \"\") for s in columns]\n", + "columns = [s.replace(\" \", \"\") for s in columns]\n", + "df_raw.columns = columns\n", + "df_raw" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "31aedd04", + "metadata": { + "papermill": { + "duration": 1.093856, + "end_time": "2023-02-27T05:32:03.657002", + "exception": false, + "start_time": "2023-02-27T05:32:02.563146", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 548163 entries, 0 to 548162\n", + "Data columns (total 33 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 QUOTE_UNIXTIME 548163 non-null int64 \n", + " 1 QUOTE_READTIME 548163 non-null object \n", + " 2 QUOTE_DATE 548163 non-null object \n", + " 3 QUOTE_TIME_HOURS 548163 non-null float64\n", + " 4 UNDERLYING_LAST 548163 non-null float64\n", + " 5 EXPIRE_DATE 548163 non-null object \n", + " 6 EXPIRE_UNIX 548163 non-null int64 \n", + " 7 DTE 548163 non-null float64\n", + " 8 C_DELTA 548163 non-null float64\n", + " 9 C_GAMMA 548163 non-null float64\n", + " 10 C_VEGA 548163 non-null float64\n", + " 11 C_THETA 548163 non-null float64\n", + " 12 C_RHO 548163 non-null float64\n", + " 13 C_IV 548163 non-null object \n", + " 14 C_VOLUME 548163 non-null object \n", + " 15 C_LAST 548163 non-null object \n", + " 16 C_SIZE 548163 non-null object \n", + " 17 C_BID 548163 non-null object \n", + " 18 C_ASK 548163 non-null object \n", + " 19 STRIKE 548163 non-null float64\n", + " 20 P_BID 548163 non-null object \n", + " 21 P_ASK 548163 non-null object \n", + " 22 P_SIZE 548163 non-null object \n", + " 23 P_LAST 548163 non-null object \n", + " 24 P_DELTA 548163 non-null float64\n", + " 25 P_GAMMA 548163 non-null float64\n", + " 26 P_VEGA 548163 non-null float64\n", + " 27 P_THETA 548163 non-null float64\n", + " 28 P_RHO 548163 non-null float64\n", + " 29 P_IV 548163 non-null object \n", + " 30 P_VOLUME 548163 non-null object \n", + " 31 STRIKE_DISTANCE 548163 non-null float64\n", + " 32 STRIKE_DISTANCE_PCT 548163 non-null float64\n", + "dtypes: float64(16), int64(2), object(15)\n", + "memory usage: 138.0+ MB\n" + ] + } + ], + "source": [ + "df_raw.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "4e199f2c", + "metadata": { + "papermill": { + "duration": 10.257179, + "end_time": "2023-02-27T05:32:14.035264", + "exception": false, + "start_time": "2023-02-27T05:32:03.778085", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 548163 entries, 0 to 548162\n", + "Data columns (total 28 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 QUOTE_UNIXTIME 548163 non-null int64 \n", + " 1 QUOTE_TIME_HOURS 548163 non-null float64\n", + " 2 UNDERLYING_LAST 548163 non-null float64\n", + " 3 EXPIRE_UNIX 548163 non-null int64 \n", + " 4 DTE 548163 non-null float64\n", + " 5 C_DELTA 548163 non-null float64\n", + " 6 C_GAMMA 548163 non-null float64\n", + " 7 C_VEGA 548163 non-null float64\n", + " 8 C_THETA 548163 non-null float64\n", + " 9 C_RHO 548163 non-null float64\n", + " 10 C_IV 518320 non-null float64\n", + " 11 C_VOLUME 493453 non-null float64\n", + " 12 C_LAST 547968 non-null float64\n", + " 13 C_BID 547968 non-null float64\n", + " 14 C_ASK 547968 non-null float64\n", + " 15 STRIKE 548163 non-null float64\n", + " 16 P_BID 547968 non-null float64\n", + " 17 P_ASK 547968 non-null float64\n", + " 18 P_LAST 547968 non-null float64\n", + " 19 P_DELTA 548163 non-null float64\n", + " 20 P_GAMMA 548163 non-null float64\n", + " 21 P_VEGA 548163 non-null float64\n", + " 22 P_THETA 548163 non-null float64\n", + " 23 P_RHO 548163 non-null float64\n", + " 24 P_IV 503463 non-null float64\n", + " 25 P_VOLUME 472008 non-null float64\n", + " 26 STRIKE_DISTANCE 548163 non-null float64\n", + " 27 STRIKE_DISTANCE_PCT 548163 non-null float64\n", + "dtypes: float64(26), int64(2)\n", + "memory usage: 117.1 MB\n" + ] + } + ], + "source": [ + "date_columns = [\"QUOTE_READTIME\", \"QUOTE_DATE\", \"EXPIRE_DATE\"]\n", + "numeric_cols = df_raw.columns.to_list()\n", + "numeric_cols.remove(\"QUOTE_READTIME\")\n", + "numeric_cols.remove(\"QUOTE_DATE\")\n", + "numeric_cols.remove(\"EXPIRE_DATE\")\n", + "\n", + "df_numeric = df_raw.drop(columns=date_columns)\n", + "\n", + "for i in numeric_cols:\n", + " df_numeric[i] = pd.to_numeric(numeric_df[i], errors=\"coerce\")\n", + "\n", + "df_final = df_numeric.drop(columns=[\"C_SIZE\", \"P_SIZE\"])\n", + "# df_final = df_final.drop(columns=date_columns)\n", + "df_final.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "cf05b943", + "metadata": { + "papermill": { + "duration": 0.52688, + "end_time": "2023-02-27T05:32:16.245318", + "exception": false, + "start_time": "2023-02-27T05:32:15.718438", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[]], dtype=object)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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azAeGRnZLL9kb12YvLX/Djmh+BeptWmu31VbRk+bB30NPnoafKHa0wtdc0BPV9144406cOCA39hf/vIX9ezZU9L/vQk5MTFRZWVl5rzH49HWrVvlcDgkSQ6HQ9XV1aqoqDBr1q9fr7q6Og0dOtSs2bRpk989N5fLpWuuucZ8ksvhcPgdp76m/jgAAKBtCyjkTJo0SVu2bNGvfvUrffrpp1q6dKlefvll5eTkSJLCwsKUl5enX/7yl3r77be1e/du/eQnP1FSUpJGjRol6f+u/Nxxxx2aMGGCtm3bpv/3//6fcnNz9cADDygpKUmS9KMf/UhRUVEaP3689u7dqzfffFOLFi3yu9X0+OOPa+3atZo3b57279+v6dOna8eOHcrNzQ1SawAAQCgL6HbV9ddfr7feeksFBQWaOXOmUlJStHDhQo0ZM8asmTJlik6ePKlHHnlE1dXVuummm7R27VpFR0ebNW+88YZyc3N1++23Kzw8XKNHj9Zzzz1nznfs2FGlpaXKyclRWlqaunbtqsLCQr/P0rnhhhu0dOlSTZ06VU899ZSuvvpqrVy5Uv369buUfgAAAIsIKORI0ve//319//vfP+d8WFiYZs6cqZkzZ56zpnPnzlq6dGmTxxkwYIDef//9Jmvuu+8+3XfffU0vGAAAtEl8dxUAALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALAkQg4AALCkgELO9OnTFRYW5vfTp08fc/706dPKyclRly5d1KFDB40ePVpVVVV++zh06JCysrIUGxur+Ph4TZ48WWfOnPGr2bBhg6677jrZbDb17t1bJSUlDdZSVFSkXr16KTo6WkOHDtW2bdsCORUAAGBxAV/Jufbaa/XVV1+ZPx988IE5N2nSJL3zzjtasWKFNm7cqC+//FL33HOPOV9bW6usrCzV1NRo8+bNeu2111RSUqLCwkKz5uDBg8rKytJtt92myspK5eXl6eGHH9a6devMmjfffFP5+fmaNm2adu7cqYEDB8rpdOrw4cMX2wcAAGAxAYecdu3aKTEx0fzp2rWrJOnYsWN69dVXNX/+fA0fPlxpaWlasmSJNm/erC1btkiSSktLtW/fPr3++usaNGiQRo4cqVmzZqmoqEg1NTWSpOLiYqWkpGjevHnq27evcnNzde+992rBggXmGubPn68JEyZo3LhxSk1NVXFxsWJjY7V48eJg9AQAAFhAu0A3+OSTT5SUlKTo6Gg5HA7Nnj1bPXr0UEVFhXw+nzIyMszaPn36qEePHiovL9ewYcNUXl6u/v37KyEhwaxxOp2aOHGi9u7dq8GDB6u8vNxvH/U1eXl5kqSamhpVVFSooKDAnA8PD1dGRobKy8ubXLvX65XX6zVfezweSZLP55PP5wu0FedUvy9buNHoOAJX3zt6GDz0tHnQ1+Cjp8EX6j290HUHFHKGDh2qkpISXXPNNfrqq680Y8YM3XzzzdqzZ4/cbreioqIUFxfnt01CQoLcbrckye12+wWc+vn6uaZqPB6PvvnmGx09elS1tbWN1uzfv7/J9c+ePVszZsxoMF5aWqrY2NjzNyBAs9Lr/F6vWbMm6Mdoa1wuV0svwXLoafOgr8FHT4MvVHt66tSpC6oLKOSMHDnS/POAAQM0dOhQ9ezZU8uXL1dMTExgK2wBBQUFys/PN197PB4lJycrMzNTdrs9aMfx+XxyuVx6eke4vHVh5vie6c6gHaOtqe/piBEjFBkZ2dLLsQR62jzoa/DR0+AL9Z7W34k5n4BvV50tLi5O3/3ud/Xpp59qxIgRqqmpUXV1td/VnKqqKiUmJkqSEhMTGzwFVf/01dk1334iq6qqSna7XTExMYqIiFBERESjNfX7OBebzSabzdZgPDIysll+yd66MHlr/x1yvn2MXk+ubrDN53Oygr4OK2mu31VbRk+bB30NPnoafKHa0wtd8yV9Ts6JEyf017/+Vd26dVNaWpoiIyNVVlZmzh84cECHDh2Sw+GQJDkcDu3evdvvKSiXyyW73a7U1FSz5ux91NfU7yMqKkppaWl+NXV1dSorKzNrAAAAAgo5//mf/6mNGzfq888/1+bNm3X33XcrIiJCDz74oDp27Kjx48crPz9f7733nioqKjRu3Dg5HA4NGzZMkpSZmanU1FSNHTtWH374odatW6epU6cqJyfHvMLy6KOP6rPPPtOUKVO0f/9+vfjii1q+fLkmTZpkriM/P1+/+93v9Nprr+njjz/WxIkTdfLkSY0bNy6IrQEAAKEsoNtVf//73/Xggw/qX//6l6688krddNNN2rJli6688kpJ0oIFCxQeHq7Ro0fL6/XK6XTqxRdfNLePiIjQqlWrNHHiRDkcDrVv317Z2dmaOXOmWZOSkqLVq1dr0qRJWrRokbp3765XXnlFTue/389y//336+uvv1ZhYaHcbrcGDRqktWvXNngzMgAAaLsCCjnLli1rcj46OlpFRUUqKio6Z03Pnj3P+5TRrbfeql27djVZk5ubq9zc3CZrAABA28V3VwEAAEsi5AAAAEsi5AAAAEsi5AAAAEsi5AAAAEsi5AAAAEsi5AAAAEu6pO+uQmAa+64qAADQPLiSAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALImQAwAALOmSQs6cOXMUFhamvLw8c+z06dPKyclRly5d1KFDB40ePVpVVVV+2x06dEhZWVmKjY1VfHy8Jk+erDNnzvjVbNiwQdddd51sNpt69+6tkpKSBscvKipSr169FB0draFDh2rbtm2XcjoAAMBCLjrkbN++Xb/97W81YMAAv/FJkybpnXfe0YoVK7Rx40Z9+eWXuueee8z52tpaZWVlqaamRps3b9Zrr72mkpISFRYWmjUHDx5UVlaWbrvtNlVWViovL08PP/yw1q1bZ9a8+eabys/P17Rp07Rz504NHDhQTqdThw8fvthTAgAAFnJRIefEiRMaM2aMfve736lTp07m+LFjx/Tqq69q/vz5Gj58uNLS0rRkyRJt3rxZW7ZskSSVlpZq3759ev311zVo0CCNHDlSs2bNUlFRkWpqaiRJxcXFSklJ0bx589S3b1/l5ubq3nvv1YIFC8xjzZ8/XxMmTNC4ceOUmpqq4uJixcbGavHixZfS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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_numeric.hist(column=\"DTE\", bins=100)" + ] + }, + { + "cell_type": "markdown", + "id": "5b2a841a", + "metadata": { + "papermill": { + "duration": 0.007752, + "end_time": "2023-02-27T05:32:16.261145", + "exception": false, + "start_time": "2023-02-27T05:32:16.253393", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### As we can see, there is a heavy skew towards shorter contracts in this dataset. \n", + "\n", + "In order to use this data for a viable trading strategy, we may want to consider truncating some longer duration contracts. The strategy proposed by https://tastytrade.com/, an options trading brokerage, recommends staying in the 45-60 day range when using the majority of trading strategies. We will explore the statistical backing behind this recommendation.\n", + "\n", + "P.S. - I have no affiliation with TastyTrade, just a fan of their work and free learning materials!" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "e80657df", + "metadata": { + "papermill": { + "duration": 0.045043, + "end_time": "2023-02-27T05:32:16.314224", + "exception": false, + "start_time": "2023-02-27T05:32:16.269181", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
count
DTE
3.08103
1.08097
2.08070
0.07887
8.07483
9.07410
7.07279
4.07268
10.07241
15.06422
17.06316
16.06295
14.06160
11.06138
22.05657
24.05620
23.05598
18.05476
21.05459
29.05084
\n", + "
" + ], + "text/plain": [ + " count\n", + "DTE \n", + "3.0 8103\n", + "1.0 8097\n", + "2.0 8070\n", + "0.0 7887\n", + "8.0 7483\n", + "9.0 7410\n", + "7.0 7279\n", + "4.0 7268\n", + "10.0 7241\n", + "15.0 6422\n", + "17.0 6316\n", + "16.0 6295\n", + "14.0 6160\n", + "11.0 6138\n", + "22.0 5657\n", + "24.0 5620\n", + "23.0 5598\n", + "18.0 5476\n", + "21.0 5459\n", + "29.0 5084" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.DataFrame(df_numeric.DTE.value_counts()).head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "72577f12", + "metadata": { + "papermill": { + "duration": 4.461252, + "end_time": "2023-02-27T05:32:20.784217", + "exception": false, + "start_time": "2023-02-27T05:32:16.322965", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'AAPL Stock Price - 2021 to 2023')" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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s2dPeHnZPrZ69uyJ0NBQu9d2Vc2bNwcAh6/nyJwYCJFhpaWlYciQIahTpw5GjBiB48ePY9++fXa3LS4uxr///W+MGDECADBixAhkZGQgNzdX0nedPHkSABAWFuZ2ups1a4bt27fj3LlzDrcJDw/HRx99BODWw+Wzzz7DZ599Zn3Abtu2Df369cPFixcxa9YsTJkyBV9//TV69OiBX375xbqf8+fPo0uXLli+fDmGDRuGefPmYdSoUdi1axeuXbtm97svX76M+++/HxcuXMCuXbvQqlUrp/Po6Hg9+uijuHbtGt58802MHz/e4d+npqZi1KhR8PX1xauvvorU1FQ0bdoUGRkZ1m0+++wzPPjgg6hXrx7mzJmDGTNmIDs7G/fee6/NMVBKbm4u6tati7p161qXHThwAPfcc0+1h3mXLl1w7do1HDt2rNZ9AqgWeLnq//7v//DAAw8AgPUa+uyzzwAAQggMHDgQ7733HpKSkvDuu++iVatWeO655zBlyhSXvs9e+g8cOAAA6NSpk822UVFRaNKkiXW9I4WFhSgsLLR7TIQQuHz5MnJzc7F792489dRT8Pb2thukkYmpWyFFpIz9+/cLACI9PV0I8Xv7n6efftru9hVV5hXtiAoKCoS/v7947733bLareDWWmpoqLl26JHJzc8XOnTtFhw4dBADx73//27otXHw19sknnwgAok6dOiIhIUHMmDFD7N69u9orgZpejbVv315ERESI3377zbrs+++/F15eXmL06NHWZaNHjxZeXl52X3uVl5cLIWxfjeXk5Ig2bdqIli1bVnt1Y0/Fq7HFixeLS5cuifPnz4uvvvpKNG/eXFgsFuv3zpw509r2qqqKdRWOHz8uvLy8xMMPP1ztmFSk+erVqyIkJESMHz/eZn1ubq4IDg6utlxux48fF/7+/mLUqFE2ywMDA8UTTzxRbfuvvvpKABCbN292uM/ffvtNREREiPvuu8/hNnK+Glu7dq0AIF5//XWb5Y888oiwWCzixIkTkr+jwrhx44S3t7dNe6i5c+cKAOLMmTPVtu/cubPo1q1bjft87bXXBACxffv2autycnIEAOunSZMmYsWKFU6nm4yNNUJkSGlpaWjUqBESEhIAwNoTbPny5SgrK7O7fadOnXDHHXcAgPU1iqPXYzNnzkR4eDgiIyPRu3dvnDx5EnPmzLF55eGqJ554Aps3b0bv3r2xZ88evPbaa7jvvvtw55134uuvv67173NycnDw4EGMHTsWoaGh1uV33303HnjgAWzcuBEAUF5ejrVr1yI5Obnar3EA1V5HnTt3Dr169UJJSQkyMzOrvbqpLU/h4eGIiorCgw8+iKKiInz66afVvvfJJ5+sdV9r165FeXk5XnnllWo1KxVpTk9PR15eHkaMGIHLly9bP97e3ujatSt27NghOe3OunbtGh599FEEBATgrbfesll3/fp1+Pn5Vfsbf39/63p7ysvLMXLkSOTl5WH+/PnyJ9qOjRs3wtvbG0899ZTN8qlTp0IIgU2bNjm1v2XLluGTTz7B1KlTceedd1qXV+TZ0XFxdEwAIDMzE6mpqXjsscesr1srCw0NRXp6OtavX49XX30VDRs2RGFhoVPpJuPzqX0TIn0pKyvD8uXLkZCQYNNmp2vXrnjnnXewfft29O3b17o8Ly8PGzduREpKCk6cOGFd3qNHD/z73//GsWPHcNddd9l8x4QJE/Doo4/Cy8sLISEhaNOmjd2C3FX9+vVDv379cO3aNWRlZWHFihVYtGgRHnroIRw5csTaVsie06dPA4DdV1atW7fGli1bUFRUhMLCQhQUFKBt27aS0jRq1Cj4+Pjg8OHDTrdJeeWVV3DffffB29sbDRs2ROvWrW3ag1Ro0aJFrfs6efIkvLy8EBsb63Cb48ePA4DdhyMABAUFOfzbsrKyal2sQ0ND7bbZsve3w4cPR3Z2NjZt2oSoqCib9QEBAdZ2QJXduHHDut6eSZMmYfPmzfjnP/+JuLi4WtMhh9OnTyMqKgr169e3Wd66dWvreql2796NcePGoV+/fnjjjTds1lXk2dFxcXRMjhw5gocffhht27bFP/7xD7vb1KlTB4mJiQCAhx56CH369EGPHj0QERGBhx56SHL6ydgYCJHhZGRkICcnB8uXL8fy5currU9LS7MJhFauXIni4mK88847eOedd+xun5qaarPszjvvtBawSqpbty7uu+8+3HfffWjYsCFSU1OxadMmjBkzRvHvrmrIkCH45z//iQ8++ACzZ8926m/btWsn6Xg5eug5q7y8HMCtdi/2gjZ7QViFs2fPVgvIduzYIaldyfjx47FhwwakpaXZDcIaN25sd8ybimVVAyfgVnuoDz/8EG+99RZGjRpVaxq05vvvv8fAgQPR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+MMf/iAOHDggDh06VGP6li9fLvz8/MTSpUtFdna2mDBhgggJCRG5ubnWbXJycsSjjz4qAgICrA+09PR0kZ2drat8VD0fAMTixYt1dz6EEOL48eMCgAgMDNTstXX16lXr3wEQ7777rjhw4IA4ffq0dZu33npLhISEiP79+4v69euLHj16iKZNm4pTp04pkpe0tDTh4+MjFi5caLNNXl5ejXmpSOeXX34pfvjhBzFo0CDRokULcf36des2p0+fFo8++qjw9/cXAQEBIj09XaSnp4sTJ07oKh9C/H6ffPHFFwKASE9P1935EEKIbdu2CQCifv36it8nrublt99+EwcOHBBfffWVACCWL18uDhw4IHJycqqlb+DAgaJevXoiNjZWdOzYUbG8LFiwQKxbt04cO3ZMHDt2TPzjH/8Q9evXF9OnT3f7vHjyPlEyH5U5CmJrY5pACIDdz5IlS6zbXL9+XfzlL38RDRo0EHXr1hUPP/ywzU0wc+ZMu/uoGtVK2cae+fPni+joaFGnTh3RpUsX8c0339isd/T9esuHo33rMR/Tpk3TfF4qhluo+hkzZox1m/LycjFjxgyP5aVXr161psmeinQ2atRI+Pn5iT59+oijR4/abDNmzBhD5EMIz90nSudjxIgRms/LkiVL7P7dzJkzq6XPU3mZN2+eaNOmjahbt64ICgoSHTp0EB9++KEoKytz+7x48j5RMh+VuRoIWYQQAkREREQmZMpeY0REREQAAyEiIiIyMQZCREREZFoMhIiIiMi0GAgRERGRaTEQIiIiItNiIERERESmxUCIiIiITIuBEBFp3tixY2GxWGCxWODr64tGjRrhgQcewOLFi60TkkqxdOlSm8kjiYgYCBGRLiQlJSEnJwe//PILNm3ahISEBDz99NN46KGHUFpaqnbyiEinGAgRkS74+fkhMjISt912G+655x689NJL+PLLL7Fp0yYsXboUAPDuu++iXbt2CAwMRNOmTfGXv/wFhYWFAICdO3fij3/8I/Lz8621S7NmzQIAFBcX49lnn8Vtt92GwMBAdO3aFTt37lQno0TkUQyEiEi37r//fsTFxWH16tUAAC8vL8ybNw+HDh3Cp59+ioyMDDz//PMAgO7du+P9999HUFAQcnJykJOTg2effRYAkJKSgr1792L58uX44Ycf8OijjyIpKQnHjx9XLW9E5BmcdJWING/s2LHIy8vD2rVrq60bPnw4fvjhB2RnZ1dbt2rVKjz55JO4fPkygFtthCZPnoy8vDzrNmfOnEHLli1x5swZREVFWZcnJiaiS5cuePPNN2XPDxFph4/aCSAicocQAhaLBQCwbds2zJ49G0eOHEFBQQFKS0tx48YNXLt2DXXr1rX79z/++CPKyspw11132SwvLi5GWFiY4uknInUxECIiXTt8+DBatGiBX375BQ899BD+/Oc/44033kBoaCj27NmDcePG4ebNmw4DocLCQnh7eyMrKwve3t426+rVq+eJLBCRihgIEZFuZWRk4Mcff8QzzzyDrKwslJeX45133oGX163mj//6179stq9Tpw7KyspslnXo0AFlZWW4ePEi7rvvPo+lnYi0gYEQEelCcXExcnNzUVZWhgsXLmDz5s2YPXs2HnroIYwePRo//fQTSkpKMH/+fCQnJ+M///kPFi1aZLOP5s2bo7CwENu3b0dcXBzq1q2Lu+66CyNHjsTo0aPxzjvvoEOHDrh06RK2b9+Ou+++Gw8++KBKOSYiT2CvMSLShc2bN6Nx48Zo3rw5kpKSsGPHDsybNw9ffvklvL29ERcXh3fffRdz5sxB27ZtkZaWhtmzZ9vso3v37njyyScxbNgwhIeH469//SsAYMmSJRg9ejSmTp2KVq1aYfDgwdi3bx+io6PVyCoReRB7jREREZFpsUaIiIiITIuBEBEREZkWAyEiIiIyLQZCREREZFoMhIiIiMi0GAgRERGRaTEQIiIiItNiIERERESmxUCIiIiITIuBEBEREZkWAyEiIiIyLQZCREREZFr/D6Ej/1W7n4fMAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(\n", + " pd.to_datetime(df_numeric[\"QUOTE_UNIXTIME\"], unit=\"s\"), df_numeric[\"UNDERLYING_LAST\"], color=\"black\", alpha=0.003\n", + ")\n", + "plt.ylabel(\"Price in USD\")\n", + "plt.xlabel(\"Date\")\n", + "plt.title(\"AAPL Stock Price - 2021 to 2023\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.5" + }, + "papermill": { + "default_parameters": {}, + "duration": 42.448071, + "end_time": "2023-02-27T05:32:21.988648", + "environment_variables": {}, + "exception": null, + "input_path": "__notebook__.ipynb", + "output_path": "__notebook__.ipynb", + "parameters": {}, + "start_time": "2023-02-27T05:31:39.540577", + "version": "2.4.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}