mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-05-06 14:03:15 +08:00
* Google Colab Install Notebook Adds example notebook for Google Colab install. * Update README.md * Update README.md Add badge -- won't work until merged into develop * point to develop for nb --------- Co-authored-by: James Maslek <jmaslek11@gmail.com>
2125 lines
106 KiB
Plaintext
Vendored
2125 lines
106 KiB
Plaintext
Vendored
{
|
||
"nbformat": 4,
|
||
"nbformat_minor": 0,
|
||
"metadata": {
|
||
"colab": {
|
||
"provenance": []
|
||
},
|
||
"kernelspec": {
|
||
"name": "python3",
|
||
"display_name": "Python 3"
|
||
},
|
||
"language_info": {
|
||
"name": "python"
|
||
},
|
||
"widgets": {
|
||
"application/vnd.jupyter.widget-state+json": {
|
||
"fc6a4747cea243f4bac6a19c43264fec": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_name": "DropdownModel",
|
||
"model_module_version": "1.5.0",
|
||
"state": {
|
||
"_dom_classes": [],
|
||
"_model_module": "@jupyter-widgets/controls",
|
||
"_model_module_version": "1.5.0",
|
||
"_model_name": "DropdownModel",
|
||
"_options_labels": [
|
||
"Total Open Interest",
|
||
"Call Open Interest",
|
||
"Put Open Interest",
|
||
"Total Volume",
|
||
"Call Volume",
|
||
"Put Volume"
|
||
],
|
||
"_view_count": null,
|
||
"_view_module": "@jupyter-widgets/controls",
|
||
"_view_module_version": "1.5.0",
|
||
"_view_name": "DropdownView",
|
||
"description": "",
|
||
"description_tooltip": null,
|
||
"disabled": false,
|
||
"index": 0,
|
||
"layout": "IPY_MODEL_bf10b4a3831f4e6595398f2d62a0f7b2",
|
||
"style": "IPY_MODEL_6095af63918f4075a891fc950c9790d3"
|
||
}
|
||
},
|
||
"bf10b4a3831f4e6595398f2d62a0f7b2": {
|
||
"model_module": "@jupyter-widgets/base",
|
||
"model_name": "LayoutModel",
|
||
"model_module_version": "1.2.0",
|
||
"state": {
|
||
"_model_module": "@jupyter-widgets/base",
|
||
"_model_module_version": "1.2.0",
|
||
"_model_name": "LayoutModel",
|
||
"_view_count": null,
|
||
"_view_module": "@jupyter-widgets/base",
|
||
"_view_module_version": "1.2.0",
|
||
"_view_name": "LayoutView",
|
||
"align_content": null,
|
||
"align_items": null,
|
||
"align_self": null,
|
||
"border": null,
|
||
"bottom": null,
|
||
"display": null,
|
||
"flex": null,
|
||
"flex_flow": null,
|
||
"grid_area": null,
|
||
"grid_auto_columns": null,
|
||
"grid_auto_flow": null,
|
||
"grid_auto_rows": null,
|
||
"grid_column": null,
|
||
"grid_gap": null,
|
||
"grid_row": null,
|
||
"grid_template_areas": null,
|
||
"grid_template_columns": null,
|
||
"grid_template_rows": null,
|
||
"height": null,
|
||
"justify_content": null,
|
||
"justify_items": null,
|
||
"left": null,
|
||
"margin": null,
|
||
"max_height": null,
|
||
"max_width": null,
|
||
"min_height": null,
|
||
"min_width": null,
|
||
"object_fit": null,
|
||
"object_position": null,
|
||
"order": null,
|
||
"overflow": null,
|
||
"overflow_x": null,
|
||
"overflow_y": null,
|
||
"padding": null,
|
||
"right": null,
|
||
"top": null,
|
||
"visibility": null,
|
||
"width": null
|
||
}
|
||
},
|
||
"6095af63918f4075a891fc950c9790d3": {
|
||
"model_module": "@jupyter-widgets/controls",
|
||
"model_name": "DescriptionStyleModel",
|
||
"model_module_version": "1.5.0",
|
||
"state": {
|
||
"_model_module": "@jupyter-widgets/controls",
|
||
"_model_module_version": "1.5.0",
|
||
"_model_name": "DescriptionStyleModel",
|
||
"_view_count": null,
|
||
"_view_module": "@jupyter-widgets/base",
|
||
"_view_module_version": "1.2.0",
|
||
"_view_name": "StyleView",
|
||
"description_width": ""
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"source": [
|
||
"# Installing the OpenBB Platform in Google Colab\n",
|
||
"\n",
|
||
"This notebook will install the OpenBB Platform, fetch some data and prepare it for display as a bar chart.\n",
|
||
"\n",
|
||
"Sign up for a free account here: https://my.openbb.co"
|
||
],
|
||
"metadata": {
|
||
"id": "xIOXTKkqBReO"
|
||
}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {
|
||
"id": "xvU65bhqKNns"
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Install the OpenBB Platform with all available extensions.\n",
|
||
"# Messages indicating package version conflicts at the end of installation can be safely ignored.\n",
|
||
"\n",
|
||
"!pip install openbb[all]\n",
|
||
"\n",
|
||
"# There is also a nightly distribution available, openbb-nightly"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"source": [
|
||
"# Before running this cell, restart the runtime by selecting, \"Restart runtime\", from the \"Runtime\" menu.\n",
|
||
"\n",
|
||
"# Import statements - for many scenarios, the only import needed will be `from openbb import obb`\n",
|
||
"from typing import Literal\n",
|
||
"from IPython.display import display\n",
|
||
"from IPython.display import clear_output\n",
|
||
"import ipywidgets as widgets\n",
|
||
"import pandas as pd\n",
|
||
"import pandas_ta as ta\n",
|
||
"from datetime import datetime\n",
|
||
"from plotly import graph_objects as go\n",
|
||
"\n",
|
||
"from openbb import obb"
|
||
],
|
||
"metadata": {
|
||
"id": "_69FIu9YKRhI"
|
||
},
|
||
"execution_count": 98,
|
||
"outputs": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"source": [
|
||
"# Login to OpenBB Hub to retrieve stored API keys.\n",
|
||
"# https://my.openbb.co/app/platform/pat\n",
|
||
"# https://my.openbb.co/app/platform/api-keys\n",
|
||
"\n",
|
||
"obb.account.login(pat=\"replace with your PAT\")\n",
|
||
"\n",
|
||
"# This is not required"
|
||
],
|
||
"metadata": {
|
||
"id": "1OLsZHDYMBSS"
|
||
},
|
||
"execution_count": 3,
|
||
"outputs": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"source": [
|
||
"# Verify that the credentials from Hub were loaded successfully.\n",
|
||
"\n",
|
||
"obb.user.credentials"
|
||
],
|
||
"metadata": {
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/"
|
||
},
|
||
"id": "gJ7FwTC6MTzv",
|
||
"outputId": "b9d4e888-7f3f-4756-b1a4-ae438e61c2b5"
|
||
},
|
||
"execution_count": 4,
|
||
"outputs": [
|
||
{
|
||
"output_type": "execute_result",
|
||
"data": {
|
||
"text/plain": [
|
||
"Credentials\n",
|
||
"\n",
|
||
"alpha_vantage_api_key: **********\n",
|
||
"benzinga_api_key: None\n",
|
||
"biztoc_api_key: None\n",
|
||
"fmp_api_key: **********\n",
|
||
"fred_api_key: **********\n",
|
||
"intrinio_api_key: **********\n",
|
||
"nasdaq_api_key: **********\n",
|
||
"polygon_api_key: **********\n",
|
||
"tiingo_token: None\n",
|
||
"tradingeconomics_api_key: None"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"execution_count": 4
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"source": [
|
||
"# Set the output preference, if desired. The examples below use Pandas DataFrames.\n",
|
||
"\n",
|
||
"obb.user.preferences.output_type = \"dataframe\""
|
||
],
|
||
"metadata": {
|
||
"id": "27JtqRAQ2HTb"
|
||
},
|
||
"execution_count": 67,
|
||
"outputs": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"source": [
|
||
"# Get Some Data\n",
|
||
"symbol = \"SPY\"\n",
|
||
"\n",
|
||
"options = obb.derivatives.options.chains(symbol, provider=\"cboe\")\n",
|
||
"\n",
|
||
"options"
|
||
],
|
||
"metadata": {
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 444
|
||
},
|
||
"id": "GWI_60zD3M3l",
|
||
"outputId": "47338fab-8ab5-467f-c26e-44148c848c63"
|
||
},
|
||
"execution_count": 88,
|
||
"outputs": [
|
||
{
|
||
"output_type": "execute_result",
|
||
"data": {
|
||
"text/plain": [
|
||
" contract_symbol expiration strike option_type volume open \\\n",
|
||
"0 SPY231130C00387000 2023-11-30 387.0 call 7.0 67.60 \n",
|
||
"1 SPY231130P00387000 2023-11-30 387.0 put 2.0 0.01 \n",
|
||
"2 SPY231130C00388000 2023-11-30 388.0 call 1.0 66.47 \n",
|
||
"3 SPY231130P00388000 2023-11-30 388.0 put 1.0 0.01 \n",
|
||
"4 SPY231130C00389000 2023-11-30 389.0 call 0.0 0.00 \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"8215 SPY260116P00670000 2026-01-16 670.0 put 0.0 0.00 \n",
|
||
"8216 SPY260116C00675000 2026-01-16 675.0 call 0.0 0.00 \n",
|
||
"8217 SPY260116P00675000 2026-01-16 675.0 put 0.0 0.00 \n",
|
||
"8218 SPY260116C00680000 2026-01-16 680.0 call 0.0 0.00 \n",
|
||
"8219 SPY260116P00680000 2026-01-16 680.0 put 0.0 0.00 \n",
|
||
"\n",
|
||
" open_interest high low implied_volatility ... last_trade_price \\\n",
|
||
"0 5.0 67.60 66.55 0.0000 ... 66.55 \n",
|
||
"1 290.0 0.01 0.01 0.0000 ... 0.01 \n",
|
||
"2 0.0 66.47 66.47 0.0000 ... 66.47 \n",
|
||
"3 1.0 0.01 0.01 0.0000 ... 0.01 \n",
|
||
"4 0.0 0.00 0.00 0.0000 ... 0.00 \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"8215 0.0 0.00 0.00 0.2367 ... 216.04 \n",
|
||
"8216 0.0 0.00 0.00 0.1387 ... 0.00 \n",
|
||
"8217 0.0 0.00 0.00 0.2385 ... 0.00 \n",
|
||
"8218 0.0 0.00 0.00 0.1411 ... 0.00 \n",
|
||
"8219 0.0 0.00 0.00 0.2432 ... 223.91 \n",
|
||
"\n",
|
||
" tick prev_close change change_percent rho \\\n",
|
||
"0 down 67.69 -1.135 -1.68 0.0003 \n",
|
||
"1 no_change 0.00 0.005 100.00 0.0000 \n",
|
||
"2 down 66.68 -0.210 -0.31 0.0003 \n",
|
||
"3 no_change 0.00 0.005 100.00 0.0000 \n",
|
||
"4 no_change 65.69 0.000 0.00 0.0003 \n",
|
||
"... ... ... ... ... ... \n",
|
||
"8215 down 215.44 0.000 0.00 -0.3427 \n",
|
||
"8216 no_change 2.50 0.000 0.00 0.4385 \n",
|
||
"8217 no_change 220.50 0.000 0.00 -0.3453 \n",
|
||
"8218 no_change 2.50 0.000 0.00 0.4078 \n",
|
||
"8219 down 225.50 0.000 0.00 -0.3478 \n",
|
||
"\n",
|
||
" last_trade_timestamp dte bid ask \n",
|
||
"0 2023-11-30 12:27:59 -1 67.77 70.67 \n",
|
||
"1 2023-11-30 09:30:12 -1 0.00 0.01 \n",
|
||
"2 2023-11-30 09:42:00 -1 67.56 68.77 \n",
|
||
"3 2023-11-30 10:16:04 -1 0.00 0.01 \n",
|
||
"4 NaT -1 65.77 68.67 \n",
|
||
"... ... ... ... ... \n",
|
||
"8215 2023-11-20 12:31:47 777 211.56 216.50 \n",
|
||
"8216 NaT 777 0.00 5.00 \n",
|
||
"8217 NaT 777 216.50 221.50 \n",
|
||
"8218 NaT 777 0.00 5.00 \n",
|
||
"8219 2023-11-27 14:07:53 777 221.50 226.50 \n",
|
||
"\n",
|
||
"[8220 rows x 27 columns]"
|
||
],
|
||
"text/html": [
|
||
"\n",
|
||
" <div id=\"df-2a8d8e0e-044c-4e66-bd79-582b5ef51f80\" class=\"colab-df-container\">\n",
|
||
" <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>contract_symbol</th>\n",
|
||
" <th>expiration</th>\n",
|
||
" <th>strike</th>\n",
|
||
" <th>option_type</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>open_interest</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>implied_volatility</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>last_trade_price</th>\n",
|
||
" <th>tick</th>\n",
|
||
" <th>prev_close</th>\n",
|
||
" <th>change</th>\n",
|
||
" <th>change_percent</th>\n",
|
||
" <th>rho</th>\n",
|
||
" <th>last_trade_timestamp</th>\n",
|
||
" <th>dte</th>\n",
|
||
" <th>bid</th>\n",
|
||
" <th>ask</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>SPY231130C00387000</td>\n",
|
||
" <td>2023-11-30</td>\n",
|
||
" <td>387.0</td>\n",
|
||
" <td>call</td>\n",
|
||
" <td>7.0</td>\n",
|
||
" <td>67.60</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>67.60</td>\n",
|
||
" <td>66.55</td>\n",
|
||
" <td>0.0000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>66.55</td>\n",
|
||
" <td>down</td>\n",
|
||
" <td>67.69</td>\n",
|
||
" <td>-1.135</td>\n",
|
||
" <td>-1.68</td>\n",
|
||
" <td>0.0003</td>\n",
|
||
" <td>2023-11-30 12:27:59</td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>67.77</td>\n",
|
||
" <td>70.67</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>SPY231130P00387000</td>\n",
|
||
" <td>2023-11-30</td>\n",
|
||
" <td>387.0</td>\n",
|
||
" <td>put</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>0.01</td>\n",
|
||
" <td>290.0</td>\n",
|
||
" <td>0.01</td>\n",
|
||
" <td>0.01</td>\n",
|
||
" <td>0.0000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.01</td>\n",
|
||
" <td>no_change</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.005</td>\n",
|
||
" <td>100.00</td>\n",
|
||
" <td>0.0000</td>\n",
|
||
" <td>2023-11-30 09:30:12</td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.01</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>SPY231130C00388000</td>\n",
|
||
" <td>2023-11-30</td>\n",
|
||
" <td>388.0</td>\n",
|
||
" <td>call</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>66.47</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>66.47</td>\n",
|
||
" <td>66.47</td>\n",
|
||
" <td>0.0000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>66.47</td>\n",
|
||
" <td>down</td>\n",
|
||
" <td>66.68</td>\n",
|
||
" <td>-0.210</td>\n",
|
||
" <td>-0.31</td>\n",
|
||
" <td>0.0003</td>\n",
|
||
" <td>2023-11-30 09:42:00</td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>67.56</td>\n",
|
||
" <td>68.77</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>SPY231130P00388000</td>\n",
|
||
" <td>2023-11-30</td>\n",
|
||
" <td>388.0</td>\n",
|
||
" <td>put</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.01</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.01</td>\n",
|
||
" <td>0.01</td>\n",
|
||
" <td>0.0000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.01</td>\n",
|
||
" <td>no_change</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.005</td>\n",
|
||
" <td>100.00</td>\n",
|
||
" <td>0.0000</td>\n",
|
||
" <td>2023-11-30 10:16:04</td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.01</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>SPY231130C00389000</td>\n",
|
||
" <td>2023-11-30</td>\n",
|
||
" <td>389.0</td>\n",
|
||
" <td>call</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>no_change</td>\n",
|
||
" <td>65.69</td>\n",
|
||
" <td>0.000</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0003</td>\n",
|
||
" <td>NaT</td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>65.77</td>\n",
|
||
" <td>68.67</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8215</th>\n",
|
||
" <td>SPY260116P00670000</td>\n",
|
||
" <td>2026-01-16</td>\n",
|
||
" <td>670.0</td>\n",
|
||
" <td>put</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.2367</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>216.04</td>\n",
|
||
" <td>down</td>\n",
|
||
" <td>215.44</td>\n",
|
||
" <td>0.000</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>-0.3427</td>\n",
|
||
" <td>2023-11-20 12:31:47</td>\n",
|
||
" <td>777</td>\n",
|
||
" <td>211.56</td>\n",
|
||
" <td>216.50</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8216</th>\n",
|
||
" <td>SPY260116C00675000</td>\n",
|
||
" <td>2026-01-16</td>\n",
|
||
" <td>675.0</td>\n",
|
||
" <td>call</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.1387</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>no_change</td>\n",
|
||
" <td>2.50</td>\n",
|
||
" <td>0.000</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.4385</td>\n",
|
||
" <td>NaT</td>\n",
|
||
" <td>777</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>5.00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8217</th>\n",
|
||
" <td>SPY260116P00675000</td>\n",
|
||
" <td>2026-01-16</td>\n",
|
||
" <td>675.0</td>\n",
|
||
" <td>put</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.2385</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>no_change</td>\n",
|
||
" <td>220.50</td>\n",
|
||
" <td>0.000</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>-0.3453</td>\n",
|
||
" <td>NaT</td>\n",
|
||
" <td>777</td>\n",
|
||
" <td>216.50</td>\n",
|
||
" <td>221.50</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8218</th>\n",
|
||
" <td>SPY260116C00680000</td>\n",
|
||
" <td>2026-01-16</td>\n",
|
||
" <td>680.0</td>\n",
|
||
" <td>call</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.1411</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>no_change</td>\n",
|
||
" <td>2.50</td>\n",
|
||
" <td>0.000</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.4078</td>\n",
|
||
" <td>NaT</td>\n",
|
||
" <td>777</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>5.00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8219</th>\n",
|
||
" <td>SPY260116P00680000</td>\n",
|
||
" <td>2026-01-16</td>\n",
|
||
" <td>680.0</td>\n",
|
||
" <td>put</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.2432</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>223.91</td>\n",
|
||
" <td>down</td>\n",
|
||
" <td>225.50</td>\n",
|
||
" <td>0.000</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>-0.3478</td>\n",
|
||
" <td>2023-11-27 14:07:53</td>\n",
|
||
" <td>777</td>\n",
|
||
" <td>221.50</td>\n",
|
||
" <td>226.50</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>8220 rows × 27 columns</p>\n",
|
||
"</div>\n",
|
||
" <div class=\"colab-df-buttons\">\n",
|
||
"\n",
|
||
" <div class=\"colab-df-container\">\n",
|
||
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-2a8d8e0e-044c-4e66-bd79-582b5ef51f80')\"\n",
|
||
" title=\"Convert this dataframe to an interactive table.\"\n",
|
||
" style=\"display:none;\">\n",
|
||
"\n",
|
||
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
|
||
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
|
||
" </svg>\n",
|
||
" </button>\n",
|
||
"\n",
|
||
" <style>\n",
|
||
" .colab-df-container {\n",
|
||
" display:flex;\n",
|
||
" gap: 12px;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-convert {\n",
|
||
" background-color: #E8F0FE;\n",
|
||
" border: none;\n",
|
||
" border-radius: 50%;\n",
|
||
" cursor: pointer;\n",
|
||
" display: none;\n",
|
||
" fill: #1967D2;\n",
|
||
" height: 32px;\n",
|
||
" padding: 0 0 0 0;\n",
|
||
" width: 32px;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-convert:hover {\n",
|
||
" background-color: #E2EBFA;\n",
|
||
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
||
" fill: #174EA6;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-buttons div {\n",
|
||
" margin-bottom: 4px;\n",
|
||
" }\n",
|
||
"\n",
|
||
" [theme=dark] .colab-df-convert {\n",
|
||
" background-color: #3B4455;\n",
|
||
" fill: #D2E3FC;\n",
|
||
" }\n",
|
||
"\n",
|
||
" [theme=dark] .colab-df-convert:hover {\n",
|
||
" background-color: #434B5C;\n",
|
||
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
|
||
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
|
||
" fill: #FFFFFF;\n",
|
||
" }\n",
|
||
" </style>\n",
|
||
"\n",
|
||
" <script>\n",
|
||
" const buttonEl =\n",
|
||
" document.querySelector('#df-2a8d8e0e-044c-4e66-bd79-582b5ef51f80 button.colab-df-convert');\n",
|
||
" buttonEl.style.display =\n",
|
||
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
||
"\n",
|
||
" async function convertToInteractive(key) {\n",
|
||
" const element = document.querySelector('#df-2a8d8e0e-044c-4e66-bd79-582b5ef51f80');\n",
|
||
" const dataTable =\n",
|
||
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
|
||
" [key], {});\n",
|
||
" if (!dataTable) return;\n",
|
||
"\n",
|
||
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
|
||
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
|
||
" + ' to learn more about interactive tables.';\n",
|
||
" element.innerHTML = '';\n",
|
||
" dataTable['output_type'] = 'display_data';\n",
|
||
" await google.colab.output.renderOutput(dataTable, element);\n",
|
||
" const docLink = document.createElement('div');\n",
|
||
" docLink.innerHTML = docLinkHtml;\n",
|
||
" element.appendChild(docLink);\n",
|
||
" }\n",
|
||
" </script>\n",
|
||
" </div>\n",
|
||
"\n",
|
||
"\n",
|
||
"<div id=\"df-9fe9272b-1929-45e6-bb98-bf3f44b552b7\">\n",
|
||
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-9fe9272b-1929-45e6-bb98-bf3f44b552b7')\"\n",
|
||
" title=\"Suggest charts\"\n",
|
||
" style=\"display:none;\">\n",
|
||
"\n",
|
||
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
|
||
" width=\"24px\">\n",
|
||
" <g>\n",
|
||
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
|
||
" </g>\n",
|
||
"</svg>\n",
|
||
" </button>\n",
|
||
"\n",
|
||
"<style>\n",
|
||
" .colab-df-quickchart {\n",
|
||
" --bg-color: #E8F0FE;\n",
|
||
" --fill-color: #1967D2;\n",
|
||
" --hover-bg-color: #E2EBFA;\n",
|
||
" --hover-fill-color: #174EA6;\n",
|
||
" --disabled-fill-color: #AAA;\n",
|
||
" --disabled-bg-color: #DDD;\n",
|
||
" }\n",
|
||
"\n",
|
||
" [theme=dark] .colab-df-quickchart {\n",
|
||
" --bg-color: #3B4455;\n",
|
||
" --fill-color: #D2E3FC;\n",
|
||
" --hover-bg-color: #434B5C;\n",
|
||
" --hover-fill-color: #FFFFFF;\n",
|
||
" --disabled-bg-color: #3B4455;\n",
|
||
" --disabled-fill-color: #666;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-quickchart {\n",
|
||
" background-color: var(--bg-color);\n",
|
||
" border: none;\n",
|
||
" border-radius: 50%;\n",
|
||
" cursor: pointer;\n",
|
||
" display: none;\n",
|
||
" fill: var(--fill-color);\n",
|
||
" height: 32px;\n",
|
||
" padding: 0;\n",
|
||
" width: 32px;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-quickchart:hover {\n",
|
||
" background-color: var(--hover-bg-color);\n",
|
||
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
||
" fill: var(--button-hover-fill-color);\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-quickchart-complete:disabled,\n",
|
||
" .colab-df-quickchart-complete:disabled:hover {\n",
|
||
" background-color: var(--disabled-bg-color);\n",
|
||
" fill: var(--disabled-fill-color);\n",
|
||
" box-shadow: none;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-spinner {\n",
|
||
" border: 2px solid var(--fill-color);\n",
|
||
" border-color: transparent;\n",
|
||
" border-bottom-color: var(--fill-color);\n",
|
||
" animation:\n",
|
||
" spin 1s steps(1) infinite;\n",
|
||
" }\n",
|
||
"\n",
|
||
" @keyframes spin {\n",
|
||
" 0% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-bottom-color: var(--fill-color);\n",
|
||
" border-left-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 20% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-left-color: var(--fill-color);\n",
|
||
" border-top-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 30% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-left-color: var(--fill-color);\n",
|
||
" border-top-color: var(--fill-color);\n",
|
||
" border-right-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 40% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-right-color: var(--fill-color);\n",
|
||
" border-top-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 60% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-right-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 80% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-right-color: var(--fill-color);\n",
|
||
" border-bottom-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 90% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-bottom-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"\n",
|
||
" <script>\n",
|
||
" async function quickchart(key) {\n",
|
||
" const quickchartButtonEl =\n",
|
||
" document.querySelector('#' + key + ' button');\n",
|
||
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
|
||
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
|
||
" try {\n",
|
||
" const charts = await google.colab.kernel.invokeFunction(\n",
|
||
" 'suggestCharts', [key], {});\n",
|
||
" } catch (error) {\n",
|
||
" console.error('Error during call to suggestCharts:', error);\n",
|
||
" }\n",
|
||
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
|
||
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
|
||
" }\n",
|
||
" (() => {\n",
|
||
" let quickchartButtonEl =\n",
|
||
" document.querySelector('#df-9fe9272b-1929-45e6-bb98-bf3f44b552b7 button');\n",
|
||
" quickchartButtonEl.style.display =\n",
|
||
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
||
" })();\n",
|
||
" </script>\n",
|
||
"</div>\n",
|
||
" </div>\n",
|
||
" </div>\n"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"execution_count": 88
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"source": [
|
||
"# Prepare A View - Volume and Open Interest by Expiration or Strike\n",
|
||
"\n",
|
||
"def filter_options_data(options, by: Literal[\"expiration\", \"strike\"] = \"expiration\"):\n",
|
||
" data = pd.DataFrame()\n",
|
||
" data[\"Total Open Interest\"] = options.groupby(by)[\"open_interest\"].sum()\n",
|
||
" data[\"Call Open Interest\"] = options[options[\"option_type\"] == \"call\"].groupby(by)[\"open_interest\"].sum()\n",
|
||
" data[\"Put Open Interest\"] = options[options[\"option_type\"] == \"put\"].groupby(by)[\"open_interest\"].sum()\n",
|
||
" data[\"Total Volume\"] = options.groupby(by)[\"volume\"].sum()\n",
|
||
" data[\"Call Volume\"] = options[options[\"option_type\"] == \"call\"].groupby(by)[\"volume\"].sum()\n",
|
||
" data[\"Put Volume\"] = options[options[\"option_type\"] == \"put\"].groupby(by)[\"volume\"].sum()\n",
|
||
"\n",
|
||
" return data\n",
|
||
"\n",
|
||
"data = filter_options_data(options, \"strike\")\n",
|
||
"\n",
|
||
"data"
|
||
],
|
||
"metadata": {
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 455
|
||
},
|
||
"id": "F-SpeJUi3l1k",
|
||
"outputId": "ee703998-297f-4831-8aad-422e16a5b3eb"
|
||
},
|
||
"execution_count": 101,
|
||
"outputs": [
|
||
{
|
||
"output_type": "execute_result",
|
||
"data": {
|
||
"text/plain": [
|
||
" Total Open Interest Call Open Interest Put Open Interest \\\n",
|
||
"strike \n",
|
||
"120.0 22821.0 74.0 22747.0 \n",
|
||
"130.0 1506.0 19.0 1487.0 \n",
|
||
"140.0 488.0 2.0 486.0 \n",
|
||
"150.0 72684.0 2072.0 70612.0 \n",
|
||
"155.0 12298.0 18.0 12280.0 \n",
|
||
"... ... ... ... \n",
|
||
"700.0 24945.0 24835.0 110.0 \n",
|
||
"705.0 478.0 478.0 0.0 \n",
|
||
"710.0 1511.0 1511.0 0.0 \n",
|
||
"715.0 981.0 981.0 0.0 \n",
|
||
"720.0 102823.0 102821.0 2.0 \n",
|
||
"\n",
|
||
" Total Volume Call Volume Put Volume \n",
|
||
"strike \n",
|
||
"120.0 78.0 0.0 78.0 \n",
|
||
"130.0 61.0 0.0 61.0 \n",
|
||
"140.0 1.0 0.0 1.0 \n",
|
||
"150.0 65.0 4.0 61.0 \n",
|
||
"155.0 21.0 1.0 20.0 \n",
|
||
"... ... ... ... \n",
|
||
"700.0 2.0 2.0 0.0 \n",
|
||
"705.0 0.0 0.0 0.0 \n",
|
||
"710.0 3.0 1.0 2.0 \n",
|
||
"715.0 0.0 0.0 0.0 \n",
|
||
"720.0 36.0 36.0 0.0 \n",
|
||
"\n",
|
||
"[272 rows x 6 columns]"
|
||
],
|
||
"text/html": [
|
||
"\n",
|
||
" <div id=\"df-02f2b63a-6a85-4d2c-b3bf-21981cfe56e6\" class=\"colab-df-container\">\n",
|
||
" <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>Total Open Interest</th>\n",
|
||
" <th>Call Open Interest</th>\n",
|
||
" <th>Put Open Interest</th>\n",
|
||
" <th>Total Volume</th>\n",
|
||
" <th>Call Volume</th>\n",
|
||
" <th>Put Volume</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>strike</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>120.0</th>\n",
|
||
" <td>22821.0</td>\n",
|
||
" <td>74.0</td>\n",
|
||
" <td>22747.0</td>\n",
|
||
" <td>78.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>78.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>130.0</th>\n",
|
||
" <td>1506.0</td>\n",
|
||
" <td>19.0</td>\n",
|
||
" <td>1487.0</td>\n",
|
||
" <td>61.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>61.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>140.0</th>\n",
|
||
" <td>488.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>486.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>150.0</th>\n",
|
||
" <td>72684.0</td>\n",
|
||
" <td>2072.0</td>\n",
|
||
" <td>70612.0</td>\n",
|
||
" <td>65.0</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>61.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>155.0</th>\n",
|
||
" <td>12298.0</td>\n",
|
||
" <td>18.0</td>\n",
|
||
" <td>12280.0</td>\n",
|
||
" <td>21.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>20.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>700.0</th>\n",
|
||
" <td>24945.0</td>\n",
|
||
" <td>24835.0</td>\n",
|
||
" <td>110.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>705.0</th>\n",
|
||
" <td>478.0</td>\n",
|
||
" <td>478.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>710.0</th>\n",
|
||
" <td>1511.0</td>\n",
|
||
" <td>1511.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>715.0</th>\n",
|
||
" <td>981.0</td>\n",
|
||
" <td>981.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>720.0</th>\n",
|
||
" <td>102823.0</td>\n",
|
||
" <td>102821.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>36.0</td>\n",
|
||
" <td>36.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>272 rows × 6 columns</p>\n",
|
||
"</div>\n",
|
||
" <div class=\"colab-df-buttons\">\n",
|
||
"\n",
|
||
" <div class=\"colab-df-container\">\n",
|
||
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-02f2b63a-6a85-4d2c-b3bf-21981cfe56e6')\"\n",
|
||
" title=\"Convert this dataframe to an interactive table.\"\n",
|
||
" style=\"display:none;\">\n",
|
||
"\n",
|
||
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
|
||
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
|
||
" </svg>\n",
|
||
" </button>\n",
|
||
"\n",
|
||
" <style>\n",
|
||
" .colab-df-container {\n",
|
||
" display:flex;\n",
|
||
" gap: 12px;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-convert {\n",
|
||
" background-color: #E8F0FE;\n",
|
||
" border: none;\n",
|
||
" border-radius: 50%;\n",
|
||
" cursor: pointer;\n",
|
||
" display: none;\n",
|
||
" fill: #1967D2;\n",
|
||
" height: 32px;\n",
|
||
" padding: 0 0 0 0;\n",
|
||
" width: 32px;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-convert:hover {\n",
|
||
" background-color: #E2EBFA;\n",
|
||
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
||
" fill: #174EA6;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-buttons div {\n",
|
||
" margin-bottom: 4px;\n",
|
||
" }\n",
|
||
"\n",
|
||
" [theme=dark] .colab-df-convert {\n",
|
||
" background-color: #3B4455;\n",
|
||
" fill: #D2E3FC;\n",
|
||
" }\n",
|
||
"\n",
|
||
" [theme=dark] .colab-df-convert:hover {\n",
|
||
" background-color: #434B5C;\n",
|
||
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
|
||
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
|
||
" fill: #FFFFFF;\n",
|
||
" }\n",
|
||
" </style>\n",
|
||
"\n",
|
||
" <script>\n",
|
||
" const buttonEl =\n",
|
||
" document.querySelector('#df-02f2b63a-6a85-4d2c-b3bf-21981cfe56e6 button.colab-df-convert');\n",
|
||
" buttonEl.style.display =\n",
|
||
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
||
"\n",
|
||
" async function convertToInteractive(key) {\n",
|
||
" const element = document.querySelector('#df-02f2b63a-6a85-4d2c-b3bf-21981cfe56e6');\n",
|
||
" const dataTable =\n",
|
||
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
|
||
" [key], {});\n",
|
||
" if (!dataTable) return;\n",
|
||
"\n",
|
||
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
|
||
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
|
||
" + ' to learn more about interactive tables.';\n",
|
||
" element.innerHTML = '';\n",
|
||
" dataTable['output_type'] = 'display_data';\n",
|
||
" await google.colab.output.renderOutput(dataTable, element);\n",
|
||
" const docLink = document.createElement('div');\n",
|
||
" docLink.innerHTML = docLinkHtml;\n",
|
||
" element.appendChild(docLink);\n",
|
||
" }\n",
|
||
" </script>\n",
|
||
" </div>\n",
|
||
"\n",
|
||
"\n",
|
||
"<div id=\"df-77122ec2-11de-4cce-a82a-480f982b0f10\">\n",
|
||
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-77122ec2-11de-4cce-a82a-480f982b0f10')\"\n",
|
||
" title=\"Suggest charts\"\n",
|
||
" style=\"display:none;\">\n",
|
||
"\n",
|
||
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
|
||
" width=\"24px\">\n",
|
||
" <g>\n",
|
||
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
|
||
" </g>\n",
|
||
"</svg>\n",
|
||
" </button>\n",
|
||
"\n",
|
||
"<style>\n",
|
||
" .colab-df-quickchart {\n",
|
||
" --bg-color: #E8F0FE;\n",
|
||
" --fill-color: #1967D2;\n",
|
||
" --hover-bg-color: #E2EBFA;\n",
|
||
" --hover-fill-color: #174EA6;\n",
|
||
" --disabled-fill-color: #AAA;\n",
|
||
" --disabled-bg-color: #DDD;\n",
|
||
" }\n",
|
||
"\n",
|
||
" [theme=dark] .colab-df-quickchart {\n",
|
||
" --bg-color: #3B4455;\n",
|
||
" --fill-color: #D2E3FC;\n",
|
||
" --hover-bg-color: #434B5C;\n",
|
||
" --hover-fill-color: #FFFFFF;\n",
|
||
" --disabled-bg-color: #3B4455;\n",
|
||
" --disabled-fill-color: #666;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-quickchart {\n",
|
||
" background-color: var(--bg-color);\n",
|
||
" border: none;\n",
|
||
" border-radius: 50%;\n",
|
||
" cursor: pointer;\n",
|
||
" display: none;\n",
|
||
" fill: var(--fill-color);\n",
|
||
" height: 32px;\n",
|
||
" padding: 0;\n",
|
||
" width: 32px;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-quickchart:hover {\n",
|
||
" background-color: var(--hover-bg-color);\n",
|
||
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
||
" fill: var(--button-hover-fill-color);\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-quickchart-complete:disabled,\n",
|
||
" .colab-df-quickchart-complete:disabled:hover {\n",
|
||
" background-color: var(--disabled-bg-color);\n",
|
||
" fill: var(--disabled-fill-color);\n",
|
||
" box-shadow: none;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-spinner {\n",
|
||
" border: 2px solid var(--fill-color);\n",
|
||
" border-color: transparent;\n",
|
||
" border-bottom-color: var(--fill-color);\n",
|
||
" animation:\n",
|
||
" spin 1s steps(1) infinite;\n",
|
||
" }\n",
|
||
"\n",
|
||
" @keyframes spin {\n",
|
||
" 0% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-bottom-color: var(--fill-color);\n",
|
||
" border-left-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 20% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-left-color: var(--fill-color);\n",
|
||
" border-top-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 30% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-left-color: var(--fill-color);\n",
|
||
" border-top-color: var(--fill-color);\n",
|
||
" border-right-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 40% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-right-color: var(--fill-color);\n",
|
||
" border-top-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 60% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-right-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 80% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-right-color: var(--fill-color);\n",
|
||
" border-bottom-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 90% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-bottom-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"\n",
|
||
" <script>\n",
|
||
" async function quickchart(key) {\n",
|
||
" const quickchartButtonEl =\n",
|
||
" document.querySelector('#' + key + ' button');\n",
|
||
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
|
||
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
|
||
" try {\n",
|
||
" const charts = await google.colab.kernel.invokeFunction(\n",
|
||
" 'suggestCharts', [key], {});\n",
|
||
" } catch (error) {\n",
|
||
" console.error('Error during call to suggestCharts:', error);\n",
|
||
" }\n",
|
||
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
|
||
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
|
||
" }\n",
|
||
" (() => {\n",
|
||
" let quickchartButtonEl =\n",
|
||
" document.querySelector('#df-77122ec2-11de-4cce-a82a-480f982b0f10 button');\n",
|
||
" quickchartButtonEl.style.display =\n",
|
||
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
||
" })();\n",
|
||
" </script>\n",
|
||
"</div>\n",
|
||
" </div>\n",
|
||
" </div>\n"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"execution_count": 101
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"source": [
|
||
"# Do not run this cell if you are following the example above.\n",
|
||
"\n",
|
||
"# In this scenario, \"data\" could be anything that would be displayed as a bar chart. Alternatively, it could be company fundamentals data.\n",
|
||
"\n",
|
||
"# Note: This requires a valid FMP API key\n",
|
||
"\n",
|
||
"\n",
|
||
"symbol=\"AAPL\"\n",
|
||
"\n",
|
||
"data = obb.equity.fundamental.ratios(symbol, limit = 100, period=\"quarter\", provider=\"fmp\")\n",
|
||
"\n",
|
||
"data.index = data.index.strftime(\"%Y-%m-%d\")\n",
|
||
"\n",
|
||
"data"
|
||
],
|
||
"metadata": {
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 649
|
||
},
|
||
"id": "2fAclYaEMVz5",
|
||
"outputId": "10413c8a-253d-4aae-c837-644f8880923b"
|
||
},
|
||
"execution_count": 93,
|
||
"outputs": [
|
||
{
|
||
"output_type": "execute_result",
|
||
"data": {
|
||
"text/plain": [
|
||
" symbol period current_ratio quick_ratio cash_ratio \\\n",
|
||
"date \n",
|
||
"1998-12-26 AAPL Q1 2.605795 2.352426 0.822776 \n",
|
||
"1999-03-27 AAPL Q2 2.650259 2.413212 0.879534 \n",
|
||
"1999-06-26 AAPL Q3 2.792723 2.600390 1.152047 \n",
|
||
"1999-09-25 AAPL Q4 2.766301 2.522272 0.856036 \n",
|
||
"2000-01-01 AAPL Q1 2.498219 2.316539 0.807125 \n",
|
||
"... ... ... ... ... ... \n",
|
||
"2022-09-24 AAPL Q4 0.879356 0.709408 0.153563 \n",
|
||
"2022-12-31 AAPL Q1 0.938020 0.768724 0.149578 \n",
|
||
"2023-04-01 AAPL Q2 0.940354 0.764281 0.205597 \n",
|
||
"2023-07-01 AAPL Q3 0.981563 0.813585 0.227331 \n",
|
||
"2023-09-30 AAPL Q4 0.988012 0.843312 0.206217 \n",
|
||
"\n",
|
||
" days_of_sales_outstanding days_of_inventory_outstanding \\\n",
|
||
"date \n",
|
||
"1998-12-26 48.052632 1.832248 \n",
|
||
"1999-03-27 47.294118 1.437445 \n",
|
||
"1999-06-26 51.758665 0.557029 \n",
|
||
"1999-09-25 45.875749 1.890756 \n",
|
||
"2000-01-01 34.263764 0.777650 \n",
|
||
"... ... ... \n",
|
||
"2022-09-24 60.833315 8.551997 \n",
|
||
"2022-12-31 41.622138 9.185598 \n",
|
||
"2023-04-01 34.068392 12.738933 \n",
|
||
"2023-07-01 43.115762 14.577604 \n",
|
||
"2023-09-30 61.327069 11.611542 \n",
|
||
"\n",
|
||
" operating_cycle days_of_payables_outstanding \\\n",
|
||
"date \n",
|
||
"1998-12-26 49.884879 48.004886 \n",
|
||
"1999-03-27 48.731562 63.167702 \n",
|
||
"1999-06-26 52.315694 63.023873 \n",
|
||
"1999-09-25 47.766505 76.764706 \n",
|
||
"2000-01-01 35.041414 60.864055 \n",
|
||
"... ... ... \n",
|
||
"2022-09-24 69.385312 110.859542 \n",
|
||
"2022-12-31 50.807736 78.007542 \n",
|
||
"2023-04-01 46.807325 73.118615 \n",
|
||
"2023-07-01 57.693367 92.607747 \n",
|
||
"2023-09-30 72.938611 114.833405 \n",
|
||
"\n",
|
||
" cash_conversion_cycle ... price_earnings_ratio \\\n",
|
||
"date ... \n",
|
||
"1998-12-26 1.879993 ... 8.732568 \n",
|
||
"1999-03-27 -14.436140 ... 8.397059 \n",
|
||
"1999-06-26 -10.708179 ... 7.484225 \n",
|
||
"1999-09-25 -28.998201 ... 23.552897 \n",
|
||
"2000-01-01 -25.822641 ... 22.618570 \n",
|
||
"... ... ... ... \n",
|
||
"2022-09-24 -41.474230 ... 29.094281 \n",
|
||
"2022-12-31 -27.199806 ... 17.208993 \n",
|
||
"2023-04-01 -26.311290 ... 26.938138 \n",
|
||
"2023-07-01 -34.914381 ... 38.288645 \n",
|
||
"2023-09-30 -41.894793 ... 29.085850 \n",
|
||
"\n",
|
||
" price_to_free_cash_flows_ratio \\\n",
|
||
"date \n",
|
||
"1998-12-26 24.355053 \n",
|
||
"1999-03-27 18.137648 \n",
|
||
"1999-06-26 75.027047 \n",
|
||
"1999-09-25 51.769733 \n",
|
||
"2000-01-01 49.423264 \n",
|
||
"... ... \n",
|
||
"2022-09-24 115.723695 \n",
|
||
"2022-12-31 68.334817 \n",
|
||
"2023-04-01 101.516990 \n",
|
||
"2023-07-01 125.370206 \n",
|
||
"2023-09-30 137.421101 \n",
|
||
"\n",
|
||
" price_to_operating_cash_flows_ratio price_cash_flow_ratio \\\n",
|
||
"date \n",
|
||
"1998-12-26 23.808976 23.808976 \n",
|
||
"1999-03-27 16.856551 16.856551 \n",
|
||
"1999-06-26 69.058986 69.058986 \n",
|
||
"1999-09-25 47.970120 47.970120 \n",
|
||
"2000-01-01 44.388186 44.388186 \n",
|
||
"... ... ... \n",
|
||
"2022-09-24 99.948206 99.948206 \n",
|
||
"2022-12-31 60.724643 60.724643 \n",
|
||
"2023-04-01 91.152020 91.152020 \n",
|
||
"2023-07-01 115.423282 115.423282 \n",
|
||
"2023-09-30 123.658630 123.658630 \n",
|
||
"\n",
|
||
" price_earnings_to_growth_ratio price_sales_ratio dividend_yield \\\n",
|
||
"date \n",
|
||
"1998-12-26 0.203760 3.104913 0.000000 \n",
|
||
"1999-03-27 -0.699755 2.963668 0.000000 \n",
|
||
"1999-06-26 0.178003 3.900636 0.000000 \n",
|
||
"1999-09-25 -0.467319 7.827460 0.000000 \n",
|
||
"2000-01-01 0.350588 7.066493 0.000000 \n",
|
||
"... ... ... ... \n",
|
||
"2022-09-24 3.879237 26.750498 0.001536 \n",
|
||
"2022-12-31 0.369993 17.625873 0.001825 \n",
|
||
"2023-04-01 -1.414252 27.450564 0.001402 \n",
|
||
"2023-07-01 -2.253139 37.224668 0.001264 \n",
|
||
"2023-09-30 1.846951 29.841774 0.001407 \n",
|
||
"\n",
|
||
" enterprise_value_multiple price_fair_value calendarYear \n",
|
||
"date \n",
|
||
"1998-12-26 28.650009 2.760999 1999 \n",
|
||
"1999-03-27 62.597153 2.084787 1999 \n",
|
||
"1999-06-26 209.281398 2.046192 1999 \n",
|
||
"1999-09-25 70.913430 3.369035 1999 \n",
|
||
"2000-01-01 58.063853 3.750973 2000 \n",
|
||
"... ... ... ... \n",
|
||
"2022-09-24 90.344514 47.589406 2022 \n",
|
||
"2022-12-31 55.366190 36.401387 2023 \n",
|
||
"2023-04-01 86.117046 41.882005 2023 \n",
|
||
"2023-07-01 135.913479 50.517075 2023 \n",
|
||
"2023-09-30 92.900618 42.975881 2023 \n",
|
||
"\n",
|
||
"[100 rows x 57 columns]"
|
||
],
|
||
"text/html": [
|
||
"\n",
|
||
" <div id=\"df-7cf38376-8f1c-43b9-9d1a-578e0f267575\" class=\"colab-df-container\">\n",
|
||
" <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>symbol</th>\n",
|
||
" <th>period</th>\n",
|
||
" <th>current_ratio</th>\n",
|
||
" <th>quick_ratio</th>\n",
|
||
" <th>cash_ratio</th>\n",
|
||
" <th>days_of_sales_outstanding</th>\n",
|
||
" <th>days_of_inventory_outstanding</th>\n",
|
||
" <th>operating_cycle</th>\n",
|
||
" <th>days_of_payables_outstanding</th>\n",
|
||
" <th>cash_conversion_cycle</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>price_earnings_ratio</th>\n",
|
||
" <th>price_to_free_cash_flows_ratio</th>\n",
|
||
" <th>price_to_operating_cash_flows_ratio</th>\n",
|
||
" <th>price_cash_flow_ratio</th>\n",
|
||
" <th>price_earnings_to_growth_ratio</th>\n",
|
||
" <th>price_sales_ratio</th>\n",
|
||
" <th>dividend_yield</th>\n",
|
||
" <th>enterprise_value_multiple</th>\n",
|
||
" <th>price_fair_value</th>\n",
|
||
" <th>calendarYear</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",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>1998-12-26</th>\n",
|
||
" <td>AAPL</td>\n",
|
||
" <td>Q1</td>\n",
|
||
" <td>2.605795</td>\n",
|
||
" <td>2.352426</td>\n",
|
||
" <td>0.822776</td>\n",
|
||
" <td>48.052632</td>\n",
|
||
" <td>1.832248</td>\n",
|
||
" <td>49.884879</td>\n",
|
||
" <td>48.004886</td>\n",
|
||
" <td>1.879993</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>8.732568</td>\n",
|
||
" <td>24.355053</td>\n",
|
||
" <td>23.808976</td>\n",
|
||
" <td>23.808976</td>\n",
|
||
" <td>0.203760</td>\n",
|
||
" <td>3.104913</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>28.650009</td>\n",
|
||
" <td>2.760999</td>\n",
|
||
" <td>1999</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-03-27</th>\n",
|
||
" <td>AAPL</td>\n",
|
||
" <td>Q2</td>\n",
|
||
" <td>2.650259</td>\n",
|
||
" <td>2.413212</td>\n",
|
||
" <td>0.879534</td>\n",
|
||
" <td>47.294118</td>\n",
|
||
" <td>1.437445</td>\n",
|
||
" <td>48.731562</td>\n",
|
||
" <td>63.167702</td>\n",
|
||
" <td>-14.436140</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>8.397059</td>\n",
|
||
" <td>18.137648</td>\n",
|
||
" <td>16.856551</td>\n",
|
||
" <td>16.856551</td>\n",
|
||
" <td>-0.699755</td>\n",
|
||
" <td>2.963668</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>62.597153</td>\n",
|
||
" <td>2.084787</td>\n",
|
||
" <td>1999</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-06-26</th>\n",
|
||
" <td>AAPL</td>\n",
|
||
" <td>Q3</td>\n",
|
||
" <td>2.792723</td>\n",
|
||
" <td>2.600390</td>\n",
|
||
" <td>1.152047</td>\n",
|
||
" <td>51.758665</td>\n",
|
||
" <td>0.557029</td>\n",
|
||
" <td>52.315694</td>\n",
|
||
" <td>63.023873</td>\n",
|
||
" <td>-10.708179</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>7.484225</td>\n",
|
||
" <td>75.027047</td>\n",
|
||
" <td>69.058986</td>\n",
|
||
" <td>69.058986</td>\n",
|
||
" <td>0.178003</td>\n",
|
||
" <td>3.900636</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>209.281398</td>\n",
|
||
" <td>2.046192</td>\n",
|
||
" <td>1999</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-09-25</th>\n",
|
||
" <td>AAPL</td>\n",
|
||
" <td>Q4</td>\n",
|
||
" <td>2.766301</td>\n",
|
||
" <td>2.522272</td>\n",
|
||
" <td>0.856036</td>\n",
|
||
" <td>45.875749</td>\n",
|
||
" <td>1.890756</td>\n",
|
||
" <td>47.766505</td>\n",
|
||
" <td>76.764706</td>\n",
|
||
" <td>-28.998201</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>23.552897</td>\n",
|
||
" <td>51.769733</td>\n",
|
||
" <td>47.970120</td>\n",
|
||
" <td>47.970120</td>\n",
|
||
" <td>-0.467319</td>\n",
|
||
" <td>7.827460</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>70.913430</td>\n",
|
||
" <td>3.369035</td>\n",
|
||
" <td>1999</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2000-01-01</th>\n",
|
||
" <td>AAPL</td>\n",
|
||
" <td>Q1</td>\n",
|
||
" <td>2.498219</td>\n",
|
||
" <td>2.316539</td>\n",
|
||
" <td>0.807125</td>\n",
|
||
" <td>34.263764</td>\n",
|
||
" <td>0.777650</td>\n",
|
||
" <td>35.041414</td>\n",
|
||
" <td>60.864055</td>\n",
|
||
" <td>-25.822641</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>22.618570</td>\n",
|
||
" <td>49.423264</td>\n",
|
||
" <td>44.388186</td>\n",
|
||
" <td>44.388186</td>\n",
|
||
" <td>0.350588</td>\n",
|
||
" <td>7.066493</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>58.063853</td>\n",
|
||
" <td>3.750973</td>\n",
|
||
" <td>2000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2022-09-24</th>\n",
|
||
" <td>AAPL</td>\n",
|
||
" <td>Q4</td>\n",
|
||
" <td>0.879356</td>\n",
|
||
" <td>0.709408</td>\n",
|
||
" <td>0.153563</td>\n",
|
||
" <td>60.833315</td>\n",
|
||
" <td>8.551997</td>\n",
|
||
" <td>69.385312</td>\n",
|
||
" <td>110.859542</td>\n",
|
||
" <td>-41.474230</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>29.094281</td>\n",
|
||
" <td>115.723695</td>\n",
|
||
" <td>99.948206</td>\n",
|
||
" <td>99.948206</td>\n",
|
||
" <td>3.879237</td>\n",
|
||
" <td>26.750498</td>\n",
|
||
" <td>0.001536</td>\n",
|
||
" <td>90.344514</td>\n",
|
||
" <td>47.589406</td>\n",
|
||
" <td>2022</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2022-12-31</th>\n",
|
||
" <td>AAPL</td>\n",
|
||
" <td>Q1</td>\n",
|
||
" <td>0.938020</td>\n",
|
||
" <td>0.768724</td>\n",
|
||
" <td>0.149578</td>\n",
|
||
" <td>41.622138</td>\n",
|
||
" <td>9.185598</td>\n",
|
||
" <td>50.807736</td>\n",
|
||
" <td>78.007542</td>\n",
|
||
" <td>-27.199806</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>17.208993</td>\n",
|
||
" <td>68.334817</td>\n",
|
||
" <td>60.724643</td>\n",
|
||
" <td>60.724643</td>\n",
|
||
" <td>0.369993</td>\n",
|
||
" <td>17.625873</td>\n",
|
||
" <td>0.001825</td>\n",
|
||
" <td>55.366190</td>\n",
|
||
" <td>36.401387</td>\n",
|
||
" <td>2023</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2023-04-01</th>\n",
|
||
" <td>AAPL</td>\n",
|
||
" <td>Q2</td>\n",
|
||
" <td>0.940354</td>\n",
|
||
" <td>0.764281</td>\n",
|
||
" <td>0.205597</td>\n",
|
||
" <td>34.068392</td>\n",
|
||
" <td>12.738933</td>\n",
|
||
" <td>46.807325</td>\n",
|
||
" <td>73.118615</td>\n",
|
||
" <td>-26.311290</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>26.938138</td>\n",
|
||
" <td>101.516990</td>\n",
|
||
" <td>91.152020</td>\n",
|
||
" <td>91.152020</td>\n",
|
||
" <td>-1.414252</td>\n",
|
||
" <td>27.450564</td>\n",
|
||
" <td>0.001402</td>\n",
|
||
" <td>86.117046</td>\n",
|
||
" <td>41.882005</td>\n",
|
||
" <td>2023</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2023-07-01</th>\n",
|
||
" <td>AAPL</td>\n",
|
||
" <td>Q3</td>\n",
|
||
" <td>0.981563</td>\n",
|
||
" <td>0.813585</td>\n",
|
||
" <td>0.227331</td>\n",
|
||
" <td>43.115762</td>\n",
|
||
" <td>14.577604</td>\n",
|
||
" <td>57.693367</td>\n",
|
||
" <td>92.607747</td>\n",
|
||
" <td>-34.914381</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>38.288645</td>\n",
|
||
" <td>125.370206</td>\n",
|
||
" <td>115.423282</td>\n",
|
||
" <td>115.423282</td>\n",
|
||
" <td>-2.253139</td>\n",
|
||
" <td>37.224668</td>\n",
|
||
" <td>0.001264</td>\n",
|
||
" <td>135.913479</td>\n",
|
||
" <td>50.517075</td>\n",
|
||
" <td>2023</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2023-09-30</th>\n",
|
||
" <td>AAPL</td>\n",
|
||
" <td>Q4</td>\n",
|
||
" <td>0.988012</td>\n",
|
||
" <td>0.843312</td>\n",
|
||
" <td>0.206217</td>\n",
|
||
" <td>61.327069</td>\n",
|
||
" <td>11.611542</td>\n",
|
||
" <td>72.938611</td>\n",
|
||
" <td>114.833405</td>\n",
|
||
" <td>-41.894793</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>29.085850</td>\n",
|
||
" <td>137.421101</td>\n",
|
||
" <td>123.658630</td>\n",
|
||
" <td>123.658630</td>\n",
|
||
" <td>1.846951</td>\n",
|
||
" <td>29.841774</td>\n",
|
||
" <td>0.001407</td>\n",
|
||
" <td>92.900618</td>\n",
|
||
" <td>42.975881</td>\n",
|
||
" <td>2023</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>100 rows × 57 columns</p>\n",
|
||
"</div>\n",
|
||
" <div class=\"colab-df-buttons\">\n",
|
||
"\n",
|
||
" <div class=\"colab-df-container\">\n",
|
||
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-7cf38376-8f1c-43b9-9d1a-578e0f267575')\"\n",
|
||
" title=\"Convert this dataframe to an interactive table.\"\n",
|
||
" style=\"display:none;\">\n",
|
||
"\n",
|
||
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
|
||
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
|
||
" </svg>\n",
|
||
" </button>\n",
|
||
"\n",
|
||
" <style>\n",
|
||
" .colab-df-container {\n",
|
||
" display:flex;\n",
|
||
" gap: 12px;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-convert {\n",
|
||
" background-color: #E8F0FE;\n",
|
||
" border: none;\n",
|
||
" border-radius: 50%;\n",
|
||
" cursor: pointer;\n",
|
||
" display: none;\n",
|
||
" fill: #1967D2;\n",
|
||
" height: 32px;\n",
|
||
" padding: 0 0 0 0;\n",
|
||
" width: 32px;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-convert:hover {\n",
|
||
" background-color: #E2EBFA;\n",
|
||
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
||
" fill: #174EA6;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-buttons div {\n",
|
||
" margin-bottom: 4px;\n",
|
||
" }\n",
|
||
"\n",
|
||
" [theme=dark] .colab-df-convert {\n",
|
||
" background-color: #3B4455;\n",
|
||
" fill: #D2E3FC;\n",
|
||
" }\n",
|
||
"\n",
|
||
" [theme=dark] .colab-df-convert:hover {\n",
|
||
" background-color: #434B5C;\n",
|
||
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
|
||
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
|
||
" fill: #FFFFFF;\n",
|
||
" }\n",
|
||
" </style>\n",
|
||
"\n",
|
||
" <script>\n",
|
||
" const buttonEl =\n",
|
||
" document.querySelector('#df-7cf38376-8f1c-43b9-9d1a-578e0f267575 button.colab-df-convert');\n",
|
||
" buttonEl.style.display =\n",
|
||
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
||
"\n",
|
||
" async function convertToInteractive(key) {\n",
|
||
" const element = document.querySelector('#df-7cf38376-8f1c-43b9-9d1a-578e0f267575');\n",
|
||
" const dataTable =\n",
|
||
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
|
||
" [key], {});\n",
|
||
" if (!dataTable) return;\n",
|
||
"\n",
|
||
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
|
||
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
|
||
" + ' to learn more about interactive tables.';\n",
|
||
" element.innerHTML = '';\n",
|
||
" dataTable['output_type'] = 'display_data';\n",
|
||
" await google.colab.output.renderOutput(dataTable, element);\n",
|
||
" const docLink = document.createElement('div');\n",
|
||
" docLink.innerHTML = docLinkHtml;\n",
|
||
" element.appendChild(docLink);\n",
|
||
" }\n",
|
||
" </script>\n",
|
||
" </div>\n",
|
||
"\n",
|
||
"\n",
|
||
"<div id=\"df-40497031-c39d-486f-975c-a6b353d3d6f1\">\n",
|
||
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-40497031-c39d-486f-975c-a6b353d3d6f1')\"\n",
|
||
" title=\"Suggest charts\"\n",
|
||
" style=\"display:none;\">\n",
|
||
"\n",
|
||
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
|
||
" width=\"24px\">\n",
|
||
" <g>\n",
|
||
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
|
||
" </g>\n",
|
||
"</svg>\n",
|
||
" </button>\n",
|
||
"\n",
|
||
"<style>\n",
|
||
" .colab-df-quickchart {\n",
|
||
" --bg-color: #E8F0FE;\n",
|
||
" --fill-color: #1967D2;\n",
|
||
" --hover-bg-color: #E2EBFA;\n",
|
||
" --hover-fill-color: #174EA6;\n",
|
||
" --disabled-fill-color: #AAA;\n",
|
||
" --disabled-bg-color: #DDD;\n",
|
||
" }\n",
|
||
"\n",
|
||
" [theme=dark] .colab-df-quickchart {\n",
|
||
" --bg-color: #3B4455;\n",
|
||
" --fill-color: #D2E3FC;\n",
|
||
" --hover-bg-color: #434B5C;\n",
|
||
" --hover-fill-color: #FFFFFF;\n",
|
||
" --disabled-bg-color: #3B4455;\n",
|
||
" --disabled-fill-color: #666;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-quickchart {\n",
|
||
" background-color: var(--bg-color);\n",
|
||
" border: none;\n",
|
||
" border-radius: 50%;\n",
|
||
" cursor: pointer;\n",
|
||
" display: none;\n",
|
||
" fill: var(--fill-color);\n",
|
||
" height: 32px;\n",
|
||
" padding: 0;\n",
|
||
" width: 32px;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-quickchart:hover {\n",
|
||
" background-color: var(--hover-bg-color);\n",
|
||
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
||
" fill: var(--button-hover-fill-color);\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-quickchart-complete:disabled,\n",
|
||
" .colab-df-quickchart-complete:disabled:hover {\n",
|
||
" background-color: var(--disabled-bg-color);\n",
|
||
" fill: var(--disabled-fill-color);\n",
|
||
" box-shadow: none;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .colab-df-spinner {\n",
|
||
" border: 2px solid var(--fill-color);\n",
|
||
" border-color: transparent;\n",
|
||
" border-bottom-color: var(--fill-color);\n",
|
||
" animation:\n",
|
||
" spin 1s steps(1) infinite;\n",
|
||
" }\n",
|
||
"\n",
|
||
" @keyframes spin {\n",
|
||
" 0% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-bottom-color: var(--fill-color);\n",
|
||
" border-left-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 20% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-left-color: var(--fill-color);\n",
|
||
" border-top-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 30% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-left-color: var(--fill-color);\n",
|
||
" border-top-color: var(--fill-color);\n",
|
||
" border-right-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 40% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-right-color: var(--fill-color);\n",
|
||
" border-top-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 60% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-right-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 80% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-right-color: var(--fill-color);\n",
|
||
" border-bottom-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" 90% {\n",
|
||
" border-color: transparent;\n",
|
||
" border-bottom-color: var(--fill-color);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"\n",
|
||
" <script>\n",
|
||
" async function quickchart(key) {\n",
|
||
" const quickchartButtonEl =\n",
|
||
" document.querySelector('#' + key + ' button');\n",
|
||
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
|
||
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
|
||
" try {\n",
|
||
" const charts = await google.colab.kernel.invokeFunction(\n",
|
||
" 'suggestCharts', [key], {});\n",
|
||
" } catch (error) {\n",
|
||
" console.error('Error during call to suggestCharts:', error);\n",
|
||
" }\n",
|
||
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
|
||
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
|
||
" }\n",
|
||
" (() => {\n",
|
||
" let quickchartButtonEl =\n",
|
||
" document.querySelector('#df-40497031-c39d-486f-975c-a6b353d3d6f1 button');\n",
|
||
" quickchartButtonEl.style.display =\n",
|
||
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
||
" })();\n",
|
||
" </script>\n",
|
||
"</div>\n",
|
||
" </div>\n",
|
||
" </div>\n"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"execution_count": 93
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"source": [
|
||
"# Create a widget for selecting the data to display.\n",
|
||
"\n",
|
||
"clear_output(wait = False)\n",
|
||
"\n",
|
||
"data_choices = data.columns.tolist()\n",
|
||
"data_selection = widgets.Dropdown(\n",
|
||
" options = data_choices,\n",
|
||
" value = None,\n",
|
||
")\n",
|
||
"output = widgets.Output()\n",
|
||
"\n",
|
||
"\n",
|
||
"def generate_figure(data, data_choice):\n",
|
||
" data = data[data[data_choice].notnull()]\n",
|
||
" fig = go.Figure()\n",
|
||
" fig.add_bar(\n",
|
||
" y = data[data_choice][data[data_choice] > 0].values,\n",
|
||
" x = data[data_choice][data[data_choice] > 0].index,\n",
|
||
" name = data_choice,\n",
|
||
" marker = dict(color = \"blue\"),\n",
|
||
" )\n",
|
||
" fig.add_bar(\n",
|
||
" y = data[data_choice][data[data_choice] < 0].values,\n",
|
||
" x = data[data_choice][data[data_choice] < 0].index,\n",
|
||
" name = data_choice,\n",
|
||
" marker = dict(color = \"red\")\n",
|
||
" )\n",
|
||
" fig.update_xaxes(type=\"category\")\n",
|
||
" fig.update_traces(width=0.98, selector=dict(type=\"bar\"))\n",
|
||
" fig.update_layout(\n",
|
||
" showlegend=False,\n",
|
||
" width=1400,\n",
|
||
" height=600,\n",
|
||
" title = dict(\n",
|
||
" text=f\"{symbol} {data_choice.replace('_', ' ').title()}\",\n",
|
||
" xanchor = \"center\",\n",
|
||
" x = 0.5,\n",
|
||
" font = dict(size = 20)\n",
|
||
" ),\n",
|
||
" barmode=\"overlay\",\n",
|
||
" bargap=0,\n",
|
||
" bargroupgap=0,\n",
|
||
" yaxis=dict(\n",
|
||
" ticklen=0,\n",
|
||
" showgrid=True,\n",
|
||
" tickfont=dict(size=14),\n",
|
||
" ),\n",
|
||
" xaxis=dict(\n",
|
||
" showgrid=False,\n",
|
||
" autorange=True,\n",
|
||
" tickangle=90,\n",
|
||
" tickfont=dict(size=11),\n",
|
||
" ),\n",
|
||
" )\n",
|
||
" return fig\n",
|
||
"\n",
|
||
"def on_value_change(change):\n",
|
||
" clear_output(wait = True)\n",
|
||
" display(data_selection)\n",
|
||
" with output:\n",
|
||
" data_selection.value\n",
|
||
"\n",
|
||
"data_selection.observe(on_value_change, names=\"value\")\n",
|
||
"display(data_selection)\n",
|
||
"\n",
|
||
"# Select from the drop-down menu below."
|
||
],
|
||
"metadata": {
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 49,
|
||
"referenced_widgets": [
|
||
"fc6a4747cea243f4bac6a19c43264fec",
|
||
"bf10b4a3831f4e6595398f2d62a0f7b2",
|
||
"6095af63918f4075a891fc950c9790d3"
|
||
]
|
||
},
|
||
"id": "jvvAtHfvMkXB",
|
||
"outputId": "6155ecd8-5bec-4fb7-ef77-52b3bb325af7"
|
||
},
|
||
"execution_count": 102,
|
||
"outputs": [
|
||
{
|
||
"output_type": "display_data",
|
||
"data": {
|
||
"text/plain": [
|
||
"Dropdown(options=('Total Open Interest', 'Call Open Interest', 'Put Open Interest', 'Total Volume', 'Call Volu…"
|
||
],
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"version_major": 2,
|
||
"version_minor": 0,
|
||
"model_id": "fc6a4747cea243f4bac6a19c43264fec"
|
||
}
|
||
},
|
||
"metadata": {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"source": [
|
||
"# Play this cell to display the choice\n",
|
||
"\n",
|
||
"if data_selection.value is not None:\n",
|
||
"\n",
|
||
" generate_figure(data, data_selection.value).show()"
|
||
],
|
||
"metadata": {
|
||
"colab": {
|
||
"base_uri": "https://localhost:8080/",
|
||
"height": 617
|
||
},
|
||
"id": "J9D5Qq0sQOwH",
|
||
"outputId": "91092fb7-c313-4305-eed2-00d6b5750a8b"
|
||
},
|
||
"execution_count": 106,
|
||
"outputs": [
|
||
{
|
||
"output_type": "display_data",
|
||
"data": {
|
||
"text/html": [
|
||
"<html>\n",
|
||
"<head><meta charset=\"utf-8\" /></head>\n",
|
||
"<body>\n",
|
||
" <div> <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script> <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
|
||
" <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.27.0.min.js\"></script> <div id=\"bd364da0-3ff3-405a-a34f-67ffc2e881f9\" class=\"plotly-graph-div\" style=\"height:600px; width:1400px;\"></div> <script type=\"text/javascript\"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"bd364da0-3ff3-405a-a34f-67ffc2e881f9\")) { Plotly.newPlot( \"bd364da0-3ff3-405a-a34f-67ffc2e881f9\", [{\"marker\":{\"color\":\"blue\"},\"name\":\"Total Open Interest\",\"x\":[120.0,130.0,140.0,150.0,155.0,160.0,165.0,170.0,175.0,180.0,185.0,190.0,195.0,200.0,205.0,210.0,215.0,220.0,225.0,230.0,235.0,240.0,245.0,250.0,255.0,260.0,265.0,270.0,275.0,280.0,285.0,290.0,295.0,300.0,305.0,310.0,315.0,320.0,325.0,326.0,327.0,328.0,329.0,330.0,331.0,332.0,333.0,334.0,335.0,336.0,337.0,338.0,339.0,340.0,341.0,342.0,343.0,344.0,345.0,346.0,347.0,348.0,349.0,350.0,351.0,352.0,353.0,354.0,355.0,356.0,357.0,358.0,359.0,360.0,361.0,362.0,363.0,364.0,365.0,366.0,367.0,368.0,369.0,370.0,371.0,372.0,373.0,374.0,375.0,376.0,377.0,378.0,379.0,380.0,381.0,382.0,383.0,384.0,385.0,386.0,387.0,388.0,389.0,390.0,391.0,392.0,393.0,394.0,395.0,396.0,397.0,398.0,399.0,400.0,401.0,402.0,403.0,404.0,405.0,406.0,407.0,407.5,408.0,409.0,410.0,411.0,412.0,412.5,413.0,414.0,415.0,416.0,417.0,417.5,418.0,419.0,420.0,421.0,422.0,422.5,423.0,424.0,425.0,426.0,427.0,427.5,428.0,429.0,430.0,431.0,432.0,432.5,433.0,434.0,435.0,436.0,437.0,437.5,438.0,439.0,440.0,441.0,442.0,442.5,443.0,444.0,445.0,446.0,447.0,447.5,448.0,449.0,450.0,451.0,452.0,452.5,453.0,454.0,455.0,456.0,457.0,457.5,458.0,459.0,460.0,461.0,462.0,462.5,463.0,464.0,465.0,466.0,467.0,468.0,469.0,470.0,471.0,472.0,473.0,474.0,475.0,476.0,477.0,478.0,479.0,480.0,481.0,482.0,483.0,484.0,485.0,486.0,487.0,488.0,489.0,490.0,491.0,492.0,493.0,494.0,495.0,496.0,497.0,498.0,499.0,500.0,501.0,505.0,510.0,515.0,520.0,525.0,530.0,535.0,540.0,545.0,550.0,555.0,560.0,565.0,570.0,575.0,580.0,585.0,590.0,595.0,600.0,605.0,610.0,615.0,620.0,625.0,630.0,635.0,640.0,645.0,650.0,655.0,660.0,665.0,670.0,675.0,680.0,685.0,690.0,695.0,700.0,705.0,710.0,715.0,720.0],\"y\":[22821.0,1506.0,488.0,72684.0,12298.0,10083.0,10038.0,8360.0,9993.0,37606.0,32521.0,29836.0,20895.0,85139.0,24243.0,36551.0,26012.0,56622.0,23829.0,33532.0,17942.0,60632.0,35338.0,56527.0,18032.0,30316.0,30396.0,50209.0,61207.0,37026.0,50770.0,45185.0,65071.0,159070.0,53484.0,60967.0,57744.0,129600.0,109020.0,2146.0,722.0,2169.0,1340.0,133922.0,1021.0,600.0,6250.0,3915.0,98360.0,2251.0,1611.0,1133.0,1853.0,233517.0,2456.0,2804.0,2161.0,1495.0,209334.0,3899.0,5856.0,2493.0,4623.0,351448.0,6703.0,3386.0,3971.0,9834.0,239268.0,11716.0,7837.0,10534.0,13891.0,346649.0,5110.0,6728.0,4857.0,6349.0,241408.0,7327.0,17883.0,5797.0,10619.0,343956.0,7276.0,10860.0,24680.0,6971.0,285228.0,34212.0,8126.0,18856.0,12456.0,396584.0,12257.0,13430.0,15293.0,8502.0,355884.0,28496.0,8962.0,18364.0,10199.0,387739.0,19228.0,26884.0,38312.0,18468.0,317318.0,17398.0,52484.0,43708.0,20780.0,837400.0,30090.0,68012.0,59031.0,37417.0,479691.0,36668.0,72792.0,6570.0,54367.0,33032.0,413051.0,52289.0,72313.0,5688.0,86823.0,85569.0,384574.0,99860.0,47672.0,2956.0,48813.0,60772.0,573979.0,58836.0,87094.0,7284.0,83241.0,86451.0,325378.0,54454.0,82792.0,8865.0,74976.0,58801.0,554627.0,78622.0,134847.0,9534.0,84599.0,98230.0,388402.0,79630.0,78821.0,16208.0,103767.0,85884.0,579060.0,84556.0,94083.0,9933.0,84010.0,107284.0,419216.0,104896.0,157843.0,13630.0,140469.0,116466.0,580880.0,103277.0,140617.0,419.0,135349.0,135063.0,464252.0,155421.0,151442.0,264.0,132704.0,86808.0,540118.0,70502.0,95487.0,464.0,47076.0,58790.0,216515.0,45784.0,43140.0,36199.0,24123.0,227538.0,41618.0,39258.0,24366.0,25858.0,149346.0,33728.0,20640.0,22863.0,13496.0,256224.0,17288.0,18526.0,13245.0,9592.0,78595.0,6223.0,10567.0,6595.0,4966.0,102532.0,7202.0,4953.0,14529.0,11969.0,59821.0,11719.0,3194.0,5977.0,5599.0,149694.0,6120.0,79019.0,83626.0,66910.0,100439.0,58070.0,82737.0,45110.0,49113.0,40460.0,101677.0,57058.0,41655.0,32809.0,32979.0,22414.0,52753.0,8495.0,8062.0,7546.0,82029.0,10335.0,6059.0,10055.0,3992.0,10612.0,12064.0,5544.0,1155.0,2855.0,11228.0,40848.0,72462.0,16886.0,38843.0,5235.0,4188.0,3506.0,2461.0,2047.0,24945.0,478.0,1511.0,981.0,102823.0],\"type\":\"bar\",\"width\":0.98},{\"marker\":{\"color\":\"red\"},\"name\":\"Total Open Interest\",\"x\":[],\"y\":[],\"type\":\"bar\",\"width\":0.98}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"type\":\"category\",\"tickfont\":{\"size\":11},\"showgrid\":false,\"autorange\":true,\"tickangle\":90},\"title\":{\"font\":{\"size\":20},\"text\":\"AAPL Total Open Interest\",\"xanchor\":\"center\",\"x\":0.5},\"yaxis\":{\"tickfont\":{\"size\":14},\"ticklen\":0,\"showgrid\":true},\"showlegend\":false,\"width\":1400,\"height\":600,\"barmode\":\"overlay\",\"bargap\":0,\"bargroupgap\":0}, {\"responsive\": true} ).then(function(){\n",
|
||
" \n",
|
||
"var gd = document.getElementById('bd364da0-3ff3-405a-a34f-67ffc2e881f9');\n",
|
||
"var x = new MutationObserver(function (mutations, observer) {{\n",
|
||
" var display = window.getComputedStyle(gd).display;\n",
|
||
" if (!display || display === 'none') {{\n",
|
||
" console.log([gd, 'removed!']);\n",
|
||
" Plotly.purge(gd);\n",
|
||
" observer.disconnect();\n",
|
||
" }}\n",
|
||
"}});\n",
|
||
"\n",
|
||
"// Listen for the removal of the full notebook cells\n",
|
||
"var notebookContainer = gd.closest('#notebook-container');\n",
|
||
"if (notebookContainer) {{\n",
|
||
" x.observe(notebookContainer, {childList: true});\n",
|
||
"}}\n",
|
||
"\n",
|
||
"// Listen for the clearing of the current output cell\n",
|
||
"var outputEl = gd.closest('.output');\n",
|
||
"if (outputEl) {{\n",
|
||
" x.observe(outputEl, {childList: true});\n",
|
||
"}}\n",
|
||
"\n",
|
||
" }) }; </script> </div>\n",
|
||
"</body>\n",
|
||
"</html>"
|
||
]
|
||
},
|
||
"metadata": {}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
} |