Instantly share code, notes, and snippets.
Created
November 19, 2025 01:32
-
Star
0
(0)
You must be signed in to star a gist -
Fork
0
(0)
You must be signed in to fork a gist
-
-
Save danwagnerco/3ecb0649c8d7eac70d9875c13147dbdd to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "id": "585e6f35", | |
| "metadata": {}, | |
| "source": [ | |
| "# Wealth Management Option Sentiment\n", | |
| "\n", | |
| "There are many ways to gauge sector sentiment but the flow of option premium is uniquely interesting because instead of yapping, you can actually see capital deployed.\n", | |
| "\n", | |
| "A dashboard that plots premium over days / weeks might signal inflection points in publicly-tradeable wealth management firms, or medtech companies, or real estate operators, etc.\n", | |
| "\n", | |
| "Scroll down past all the code to see a first-pass implementation targeting:\n", | |
| "- **LPL Financial** (ticker: `LPLA`)\n", | |
| "- **Ameriprise Financial** (ticker: `AMP`)\n", | |
| "- **Raymond James** (ticker: `RJF`)\n", | |
| "- **Stifel Financial** (ticker: `SF`)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "id": "571489bd", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "\n", | |
| " <div id=\"c9owdT\"></div>\n", | |
| " <script type=\"text/javascript\" data-lets-plot-script=\"library\">\n", | |
| " if(!window.letsPlotCallQueue) {\n", | |
| " window.letsPlotCallQueue = [];\n", | |
| " }; \n", | |
| " window.letsPlotCall = function(f) {\n", | |
| " window.letsPlotCallQueue.push(f);\n", | |
| " };\n", | |
| " (function() {\n", | |
| " var script = document.createElement(\"script\");\n", | |
| " script.type = \"text/javascript\";\n", | |
| " script.src = \"https://cdn.jsdelivr.net/gh/JetBrains/[email protected]/js-package/distr/lets-plot.min.js\";\n", | |
| " script.onload = function() {\n", | |
| " window.letsPlotCall = function(f) {f();};\n", | |
| " window.letsPlotCallQueue.forEach(function(f) {f();});\n", | |
| " window.letsPlotCallQueue = [];\n", | |
| " \n", | |
| " };\n", | |
| " script.onerror = function(event) {\n", | |
| " window.letsPlotCall = function(f) {}; // noop\n", | |
| " window.letsPlotCallQueue = [];\n", | |
| " var div = document.createElement(\"div\");\n", | |
| " div.style.color = 'darkred';\n", | |
| " div.textContent = 'Error loading Lets-Plot JS';\n", | |
| " document.getElementById(\"c9owdT\").appendChild(div);\n", | |
| " };\n", | |
| " var e = document.getElementById(\"c9owdT\");\n", | |
| " e.appendChild(script);\n", | |
| " })()\n", | |
| " </script>\n", | |
| " " | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "import os\n", | |
| "import httpx\n", | |
| "import polars as pl\n", | |
| "import lets_plot as lp\n", | |
| "lp.LetsPlot.setup_html()\n", | |
| "\n", | |
| "uw_token = os.getenv(\"UW_TOKEN\")\n", | |
| "headers = {'Accept': 'application/json, text/plain', 'Authorization': uw_token}\n", | |
| "\n", | |
| "LEON_COLOR_THEME = {\n", | |
| " \"red\": \"#dc3545\",\n", | |
| " \"teal\": \"#20c997\",\n", | |
| " \"navy\": \"#1E3A5F\",\n", | |
| " \"black\": \"#000000\",\n", | |
| " \"white\": \"#FFFFFF\",\n", | |
| " \"gray_medium\": \"#3C3C3C\",\n", | |
| " \"gray_light\": \"#D3D3D3\",\n", | |
| "}\n", | |
| "\n", | |
| "color_mapping = {\n", | |
| " \"cumsum_net_call_prem_in_mil\": LEON_COLOR_THEME[\"teal\"],\n", | |
| " \"cumsum_net_put_prem_in_mil\": LEON_COLOR_THEME[\"red\"],\n", | |
| " \"price\": LEON_COLOR_THEME[\"white\"],\n", | |
| "}\n", | |
| "\n", | |
| "def leon_theme(colors: dict, show_legend: bool = True) -> lp.theme:\n", | |
| " t = lp.theme_none() + lp.theme(\n", | |
| " plot_background=lp.element_rect(fill=colors[\"navy\"]),\n", | |
| " panel_background=lp.element_rect(fill=colors[\"navy\"]),\n", | |
| " panel_grid_major=lp.element_blank(),\n", | |
| " panel_grid_minor=lp.element_blank(),\n", | |
| " axis_ontop=True,\n", | |
| " axis_ticks=lp.element_line(color=colors[\"white\"], size=1),\n", | |
| " axis_tooltip=lp.element_rect(color=colors[\"navy\"]),\n", | |
| " tooltip=lp.element_rect(color=colors[\"gray_light\"], fill=colors[\"navy\"]),\n", | |
| " line=lp.element_line(color=colors[\"white\"], size=1),\n", | |
| " rect=lp.element_rect(color=colors[\"navy\"], fill=colors[\"navy\"], size=2),\n", | |
| " text=lp.element_text(color=colors[\"white\"], size=10),\n", | |
| " legend_background=lp.element_rect(\n", | |
| " color=colors[\"gray_light\"], fill=colors[\"navy\"], size=2\n", | |
| " ),\n", | |
| " plot_title=lp.element_text(hjust=0.5, size=16, color=colors[\"white\"]),\n", | |
| " )\n", | |
| " if show_legend:\n", | |
| " return t + lp.theme(legend_position=\"bottom\")\n", | |
| " else:\n", | |
| " return t + lp.theme(legend_position=\"none\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "id": "ad332063", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "tickers = [\"LPLA\", \"AMP\", \"RJF\", \"SF\"]\n", | |
| "target_date = \"2025-11-18\"\n", | |
| "\n", | |
| "raw_npt_dfs = {}\n", | |
| "for ticker in tickers:\n", | |
| " url = f\"https://api.unusualwhales.com/api/stock/{ticker}/net-prem-ticks\"\n", | |
| " params = {\"date\": target_date}\n", | |
| " rsp = httpx.get(url, headers=headers, params=params)\n", | |
| " if rsp.status_code == 200 and len(rsp.json()[\"data\"]) > 0:\n", | |
| " raw_npt_dfs[ticker] = pl.DataFrame(rsp.json()[\"data\"])\n", | |
| " else:\n", | |
| " print(f\"{ticker} data not found for {target_date}\")\n", | |
| "\n", | |
| "clean_npt_dfs = {}\n", | |
| "for ticker, raw_df in raw_npt_dfs.items():\n", | |
| " clean_npt_dfs[ticker] = (\n", | |
| " raw_df\n", | |
| " .with_columns(\n", | |
| " pl.col(\"net_call_premium\").cast(pl.Float64),\n", | |
| " pl.col(\"net_put_premium\").cast(pl.Float64),\n", | |
| " pl.col(\"tape_time\").cast(pl.Datetime)\n", | |
| " )\n", | |
| " .with_columns(\n", | |
| " pl.col(\"tape_time\").dt.convert_time_zone(\n", | |
| " \"America/New_York\"\n", | |
| " ).alias(\"tape_time_tz\")\n", | |
| " )\n", | |
| " .with_columns(\n", | |
| " pl.col(\"tape_time_tz\").dt.strftime(\"%H:%M\").alias(\"hms_str\")\n", | |
| " )\n", | |
| " .with_columns(\n", | |
| " (\n", | |
| " pl.col(\"net_call_premium\").cum_sum() / 1_000\n", | |
| " ).alias(\"cumsum_net_call_prem_in_k\"),\n", | |
| " (\n", | |
| " pl.col(\"net_put_premium\").cum_sum() / 1_000\n", | |
| " ).alias(\"cumsum_net_put_prem_in_k\")\n", | |
| " )\n", | |
| " )\n", | |
| "\n", | |
| "plot_ready_npt_dfs = {}\n", | |
| "for ticker, clean_df in clean_npt_dfs.items():\n", | |
| " plot_ready_npt_dfs[ticker] = (\n", | |
| " clean_df\n", | |
| " .unpivot(\n", | |
| " index=[\"hms_str\"],\n", | |
| " on=[\"cumsum_net_call_prem_in_k\", \"cumsum_net_put_prem_in_k\"],\n", | |
| " variable_name=\"flow_type\",\n", | |
| " value_name=\"cumsum_net_prem_in_k\"\n", | |
| " )\n", | |
| " )\n", | |
| "\n", | |
| "raw_ohlc_dfs = {}\n", | |
| "candle_size = \"1m\"\n", | |
| "for ticker in tickers:\n", | |
| " url = f\"https://api.unusualwhales.com/api/stock/{ticker}/ohlc/{candle_size}\"\n", | |
| " params = {\"date\": target_date}\n", | |
| " rsp = httpx.get(url, headers=headers, params=params)\n", | |
| " raw_ohlc_dfs[ticker] = pl.DataFrame(rsp.json()[\"data\"])\n", | |
| "\n", | |
| "clean_ohlc_dfs = {}\n", | |
| "for ticker, raw_df in raw_ohlc_dfs.items():\n", | |
| " start_date = clean_npt_dfs[ticker].select(pl.col(\"tape_time\").head(1)).item()\n", | |
| " end_date = clean_npt_dfs[ticker].select(pl.col(\"tape_time\").tail(1)).item()\n", | |
| " clean_ohlc_dfs[ticker] = (\n", | |
| " raw_df\n", | |
| " .with_columns(\n", | |
| " pl.col(\"open\").cast(pl.Float64),\n", | |
| " pl.col(\"high\").cast(pl.Float64),\n", | |
| " pl.col(\"low\").cast(pl.Float64),\n", | |
| " pl.col(\"close\").cast(pl.Float64),\n", | |
| " pl.col(\"start_time\").cast(pl.Datetime)\n", | |
| " )\n", | |
| " .filter(\n", | |
| " (pl.col(\"start_time\") >= start_date) & (pl.col(\"start_time\") <= end_date)\n", | |
| " )\n", | |
| " .with_columns(\n", | |
| " pl.col(\"start_time\").dt.convert_time_zone(\n", | |
| " \"America/New_York\"\n", | |
| " ).alias(\"tape_time_tz\")\n", | |
| " )\n", | |
| " .with_columns(\n", | |
| " pl.col(\"tape_time_tz\").dt.strftime(\"%H:%M\").alias(\"hms_str\")\n", | |
| " )\n", | |
| " .select(\n", | |
| " [\n", | |
| " \"start_time\",\n", | |
| " \"tape_time_tz\",\n", | |
| " \"hms_str\",\n", | |
| " \"open\",\n", | |
| " \"high\",\n", | |
| " \"low\",\n", | |
| " \"close\",\n", | |
| " ]\n", | |
| " )\n", | |
| " .sort(\"tape_time_tz\", descending=False)\n", | |
| " )" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "id": "6b1d3970", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| " <div id=\"nu8qBq\"></div>\n", | |
| " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", | |
| " \n", | |
| " (function() {\n", | |
| " // ----------\n", | |
| " \n", | |
| " const forceImmediateRender = false;\n", | |
| " const responsive = false;\n", | |
| " \n", | |
| " let sizing = {\n", | |
| " width_mode: \"MIN\",\n", | |
| " height_mode: \"SCALED\",\n", | |
| " width: null, \n", | |
| " height: null \n", | |
| " };\n", | |
| " \n", | |
| " const preferredWidth = document.body.dataset.letsPlotPreferredWidth;\n", | |
| " if (preferredWidth !== undefined) {\n", | |
| " sizing = {\n", | |
| " width_mode: 'FIXED',\n", | |
| " height_mode: 'SCALED',\n", | |
| " width: parseFloat(preferredWidth)\n", | |
| " };\n", | |
| " }\n", | |
| " \n", | |
| " const containerDiv = document.getElementById(\"nu8qBq\");\n", | |
| " let fig = null;\n", | |
| " \n", | |
| " function renderPlot() {\n", | |
| " if (fig === null) {\n", | |
| " const plotSpec = {\n", | |
| "\"ggsize\":{\n", | |
| "\"width\":900.0,\n", | |
| "\"height\":900.0\n", | |
| "},\n", | |
| "\"theme\":{\n", | |
| "\"plot_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "}\n", | |
| "},\n", | |
| "\"kind\":\"subplots\",\n", | |
| "\"layout\":{\n", | |
| "\"ncol\":2.0,\n", | |
| "\"nrow\":2.0,\n", | |
| "\"align\":true,\n", | |
| "\"name\":\"grid\"\n", | |
| "},\n", | |
| "\"figures\":[{\n", | |
| "\"theme\":{\n", | |
| "\"plot_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "}\n", | |
| "},\n", | |
| "\"kind\":\"subplots\",\n", | |
| "\"layout\":{\n", | |
| "\"ncol\":1.0,\n", | |
| "\"nrow\":2.0,\n", | |
| "\"align\":true,\n", | |
| "\"name\":\"grid\"\n", | |
| "},\n", | |
| "\"figures\":[{\n", | |
| "\"data\":{\n", | |
| "\"hms_str\":[\"09:47\",\"09:51\",\"09:57\",\"10:16\",\"10:55\",\"11:11\",\"11:14\",\"11:19\",\"11:25\",\"13:08\",\"13:09\",\"13:22\",\"13:23\",\"13:28\",\"13:29\",\"13:47\",\"14:09\",\"14:11\",\"14:13\",\"14:17\",\"14:20\",\"14:22\",\"14:24\",\"14:43\",\"15:05\",\"15:16\",\"15:30\",\"15:54\",\"15:55\",\"15:58\",\"09:47\",\"09:51\",\"09:57\",\"10:16\",\"10:55\",\"11:11\",\"11:14\",\"11:19\",\"11:25\",\"13:08\",\"13:09\",\"13:22\",\"13:23\",\"13:28\",\"13:29\",\"13:47\",\"14:09\",\"14:11\",\"14:13\",\"14:17\",\"14:20\",\"14:22\",\"14:24\",\"14:43\",\"15:05\",\"15:16\",\"15:30\",\"15:54\",\"15:55\",\"15:58\"],\n", | |
| "\"flow_type\":[\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\"],\n", | |
| "\"cumsum_net_prem_in_k\":[0.0,0.0,-1.084,-1.084,-0.124,3.236,3.236,3.236,3.236,8.211,8.211,7.932,7.7250000000000005,7.7250000000000005,7.7250000000000005,6.465,6.465,6.465,6.465,6.465,6.465,6.465,4.025,1.165,1.165,1.165,1.165,0.04,0.04,0.04,1.2,-11.35,-11.35,0.49,0.49,1.0,1.57,1.57,-2.2800000000000002,-2.2800000000000002,3.43,3.43,3.43,3.4450000000000003,3.59,3.59,3.553,13.013,13.013,6.523000000000001,5.623,8.373,9.533,9.533,8.183,6.853,5.523,10.243,10.943,11.643]\n", | |
| "},\n", | |
| "\"mapping\":{\n", | |
| "\"x\":\"hms_str\",\n", | |
| "\"y\":\"cumsum_net_prem_in_k\",\n", | |
| "\"color\":\"flow_type\"\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "\"series_annotations\":[{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"hms_str\"\n", | |
| "},{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"flow_type\"\n", | |
| "},{\n", | |
| "\"type\":\"float\",\n", | |
| "\"column\":\"cumsum_net_prem_in_k\"\n", | |
| "}]\n", | |
| "},\n", | |
| "\"ggtitle\":{\n", | |
| "\"text\":\"2025-11-18: LPLA\"\n", | |
| "},\n", | |
| "\"guides\":{\n", | |
| "\"x\":{\n", | |
| "\"title\":\"Timestamp\"\n", | |
| "},\n", | |
| "\"y\":{\n", | |
| "\"title\":\"Net Prem $K\"\n", | |
| "}\n", | |
| "},\n", | |
| "\"theme\":{\n", | |
| "\"name\":\"none\",\n", | |
| "\"line\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"rect\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"text\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":10.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"axis_ontop\":true,\n", | |
| "\"axis_ticks\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_grid_major\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"panel_grid_minor\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"plot_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"plot_title\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":16.0,\n", | |
| "\"hjust\":0.5,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"axis_tooltip\":{\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"tooltip\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_position\":\"none\",\n", | |
| "\"axis_title_x\":{\n", | |
| "\"blank\":true\n", | |
| "}\n", | |
| "},\n", | |
| "\"kind\":\"plot\",\n", | |
| "\"scales\":[{\n", | |
| "\"aesthetic\":\"color\",\n", | |
| "\"breaks\":[\"cumsum_net_call_prem_in_mil\",\"cumsum_net_put_prem_in_mil\",\"price\"],\n", | |
| "\"values\":[\"#20c997\",\"#dc3545\",\"#FFFFFF\"]\n", | |
| "}],\n", | |
| "\"layers\":[{\n", | |
| "\"geom\":\"line\",\n", | |
| "\"mapping\":{\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "},\n", | |
| "\"size\":1.0,\n", | |
| "\"data\":{\n", | |
| "}\n", | |
| "}],\n", | |
| "\"metainfo_list\":[],\n", | |
| "\"spec_id\":\"1\"\n", | |
| "},{\n", | |
| "\"data\":{\n", | |
| "\"hms_str\":[\"09:47\",\"09:48\",\"09:49\",\"09:50\",\"09:51\",\"09:52\",\"09:53\",\"09:54\",\"09:55\",\"09:56\",\"09:57\",\"09:58\",\"09:59\",\"10:00\",\"10:01\",\"10:02\",\"10:03\",\"10:04\",\"10:05\",\"10:06\",\"10:07\",\"10:08\",\"10:09\",\"10:10\",\"10:11\",\"10:12\",\"10:13\",\"10:14\",\"10:15\",\"10:16\",\"10:17\",\"10:18\",\"10:19\",\"10:20\",\"10:21\",\"10:22\",\"10:23\",\"10:24\",\"10:25\",\"10:27\",\"10:28\",\"10:29\",\"10:30\",\"10:31\",\"10:32\",\"10:33\",\"10:34\",\"10:35\",\"10:36\",\"10:37\",\"10:38\",\"10:39\",\"10:40\",\"10:41\",\"10:42\",\"10:43\",\"10:44\",\"10:45\",\"10:46\",\"10:47\",\"10:48\",\"10:49\",\"10:50\",\"10:51\",\"10:52\",\"10:53\",\"10:54\",\"10:55\",\"10:56\",\"10:57\",\"10:59\",\"11:00\",\"11:01\",\"11:03\",\"11:04\",\"11:05\",\"11:07\",\"11:08\",\"11:09\",\"11:10\",\"11:11\",\"11:12\",\"11:13\",\"11:14\",\"11:15\",\"11:16\",\"11:18\",\"11:19\",\"11:20\",\"11:23\",\"11:24\",\"11:25\",\"11:26\",\"11:27\",\"11:29\",\"11:31\",\"11:32\",\"11:33\",\"11:35\",\"11:36\",\"11:38\",\"11:39\",\"11:40\",\"11:41\",\"11:42\",\"11:44\",\"11:46\",\"11:47\",\"11:48\",\"11:49\",\"11:50\",\"11:51\",\"11:52\",\"11:53\",\"11:55\",\"11:56\",\"11:57\",\"11:58\",\"11:59\",\"12:04\",\"12:05\",\"12:07\",\"12:09\",\"12:12\",\"12:13\",\"12:14\",\"12:16\",\"12:17\",\"12:18\",\"12:20\",\"12:21\",\"12:22\",\"12:23\",\"12:24\",\"12:26\",\"12:27\",\"12:29\",\"12:30\",\"12:31\",\"12:34\",\"12:35\",\"12:36\",\"12:37\",\"12:38\",\"12:39\",\"12:40\",\"12:42\",\"12:45\",\"12:46\",\"12:47\",\"12:48\",\"12:49\",\"12:50\",\"12:51\",\"12:52\",\"12:53\",\"12:54\",\"12:56\",\"12:57\",\"12:58\",\"12:59\",\"13:00\",\"13:01\",\"13:05\",\"13:07\",\"13:08\",\"13:09\",\"13:10\",\"13:11\",\"13:13\",\"13:15\",\"13:16\",\"13:17\",\"13:18\",\"13:20\",\"13:22\",\"13:25\",\"13:26\",\"13:27\",\"13:28\",\"13:30\",\"13:31\",\"13:32\",\"13:33\",\"13:35\",\"13:36\",\"13:37\",\"13:38\",\"13:39\",\"13:40\",\"13:41\",\"13:42\",\"13:43\",\"13:48\",\"13:49\",\"13:50\",\"13:51\",\"13:52\",\"13:54\",\"13:55\",\"13:56\",\"13:57\",\"13:58\",\"13:59\",\"14:00\",\"14:01\",\"14:05\",\"14:10\",\"14:11\",\"14:12\",\"14:13\",\"14:14\",\"14:15\",\"14:16\",\"14:17\",\"14:18\",\"14:19\",\"14:20\",\"14:21\",\"14:22\",\"14:23\",\"14:25\",\"14:27\",\"14:28\",\"14:29\",\"14:30\",\"14:33\",\"14:34\",\"14:35\",\"14:36\",\"14:37\",\"14:38\",\"14:39\",\"14:40\",\"14:41\",\"14:42\",\"14:44\",\"14:45\",\"14:46\",\"14:47\",\"14:48\",\"14:49\",\"14:50\",\"14:51\",\"14:53\",\"14:54\",\"14:55\",\"14:56\",\"14:57\",\"14:58\",\"15:00\",\"15:01\",\"15:02\",\"15:03\",\"15:05\",\"15:06\",\"15:08\",\"15:09\",\"15:10\",\"15:11\",\"15:13\",\"15:14\",\"15:15\",\"15:16\",\"15:17\",\"15:18\",\"15:19\",\"15:20\",\"15:21\",\"15:22\",\"15:23\",\"15:24\",\"15:25\",\"15:26\",\"15:27\",\"15:28\",\"15:29\",\"15:30\",\"15:31\",\"15:32\",\"15:33\",\"15:35\",\"15:36\",\"15:37\",\"15:38\",\"15:39\",\"15:40\",\"15:41\",\"15:42\",\"15:43\",\"15:45\",\"15:46\",\"15:47\",\"15:48\",\"15:49\",\"15:50\",\"15:51\",\"15:52\",\"15:53\",\"15:54\",\"15:55\",\"15:56\",\"15:57\",\"15:58\"],\n", | |
| "\"price\":[359.1,359.91,359.54,359.0025,359.12,357.81,358.73,358.69,358.265,357.17,358.65,358.99,358.255,357.8075,358.59,358.2,356.545,356.545,356.38,357.14,356.71,356.525,356.18,357.62,356.83,357.02,357.33,357.66,355.875,356.03,356.115,356.4925,356.755,357.96,358.4,357.92,359.15,358.1175,358.99,358.28,358.27,358.27,359.54,359.03,360.285,359.76,359.2,359.01,359.52,358.95,359.24,359.165,359.165,359.59,359.42,359.42,359.8,359.52,360.06,360.09,359.38,359.03,357.99,358.63,359.2,359.06,359.57,359.725,359.64,360.53,359.775,359.7,359.62,359.46,358.32,359.38,358.8636,360.42,360.4,360.595,361.19,361.0,361.56,361.56,360.08,360.41,360.86,360.97,361.215,360.97,361.39,361.98,362.435,362.77,362.49,362.93,361.76,361.95,361.775,361.775,361.37,360.645,360.2975,359.64,359.43,359.3975,359.16,358.55,359.6,360.0,360.0399,359.455,359.69,359.99,360.04,359.66,359.5,359.31,359.31,357.86,357.47,357.89,358.035,358.035,358.035,358.035,358.39,358.035,358.74,357.4701,359.11,358.335,358.53,358.65,358.52,357.61,358.09,358.29,357.96,358.52,358.82,359.25,358.4701,359.6405,360.46,361.08,361.71,361.43,361.01,360.97,361.015,360.88,360.29,359.99,360.55,360.55,360.55,361.11,361.28,361.57,361.4475,361.43,361.88,361.445,361.445,361.89,361.2,361.405,361.05,361.635,361.14,361.27,360.865,361.23,361.035,361.6,360.914,361.455,362.11,361.93,361.89,362.05,362.11,361.89,361.65,361.3535,361.81,362.03,362.27,362.1025,362.02,361.625,361.02,360.96,361.055,361.055,361.055,361.65,361.99,361.2,360.88,360.8,360.5225,360.92,360.99,361.24,360.68,361.81,361.12,361.69,361.11,361.76,361.56,361.21,361.61,361.55,361.78,361.595,361.255,361.06,361.0022,360.685,360.78,360.54,360.465,361.49,361.65,361.62,361.19,361.58,361.3564,361.435,361.93,361.895,361.51,361.2933,360.89,361.15,361.155,361.68,361.44,361.16,360.65,360.29,359.88,360.1951,360.2,360.72,360.55,360.555,360.6198,360.58,360.535,360.4945,360.35,360.5,359.88,360.13,360.04,360.04,360.38,360.2275,360.49,360.67,361.17,361.2572,361.0,361.5,361.545,361.38,361.34,361.15,360.82,360.65,360.35,360.16,360.235,360.66,360.49,360.29,360.0101,360.1074,360.235,360.3,360.52,360.36,360.275,360.265,360.1,359.88,359.9,359.55,359.665,359.93,359.56,359.22,359.01,358.924,359.02,356.85,355.96,356.15,356.01,355.53]\n", | |
| "},\n", | |
| "\"mapping\":{\n", | |
| "\"x\":\"hms_str\",\n", | |
| "\"y\":\"price\"\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "\"series_annotations\":[{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"hms_str\"\n", | |
| "},{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"ohlc_type\"\n", | |
| "},{\n", | |
| "\"type\":\"float\",\n", | |
| "\"column\":\"price\"\n", | |
| "}]\n", | |
| "},\n", | |
| "\"ggtitle\":{\n", | |
| "\"text\":\"LPLA Price\"\n", | |
| "},\n", | |
| "\"guides\":{\n", | |
| "\"x\":{\n", | |
| "\"title\":\"Timestamp\"\n", | |
| "},\n", | |
| "\"y\":{\n", | |
| "\"title\":\"LPLA Price\"\n", | |
| "}\n", | |
| "},\n", | |
| "\"theme\":{\n", | |
| "\"name\":\"none\",\n", | |
| "\"line\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"rect\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"text\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":10.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"axis_ontop\":true,\n", | |
| "\"axis_ticks\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_grid_major\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"panel_grid_minor\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"plot_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"plot_title\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":16.0,\n", | |
| "\"hjust\":0.5,\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"axis_tooltip\":{\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"tooltip\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_position\":\"none\",\n", | |
| "\"axis_title_x\":{\n", | |
| "\"blank\":true\n", | |
| "}\n", | |
| "},\n", | |
| "\"kind\":\"plot\",\n", | |
| "\"scales\":[],\n", | |
| "\"layers\":[{\n", | |
| "\"geom\":\"line\",\n", | |
| "\"mapping\":{\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "},\n", | |
| "\"size\":1.0,\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"data\":{\n", | |
| "}\n", | |
| "}],\n", | |
| "\"metainfo_list\":[],\n", | |
| "\"spec_id\":\"2\"\n", | |
| "}]\n", | |
| "},{\n", | |
| "\"theme\":{\n", | |
| "\"plot_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "}\n", | |
| "},\n", | |
| "\"kind\":\"subplots\",\n", | |
| "\"layout\":{\n", | |
| "\"ncol\":1.0,\n", | |
| "\"nrow\":2.0,\n", | |
| "\"align\":true,\n", | |
| "\"name\":\"grid\"\n", | |
| "},\n", | |
| "\"figures\":[{\n", | |
| "\"data\":{\n", | |
| "\"hms_str\":[\"09:30\",\"09:32\",\"09:33\",\"09:34\",\"09:45\",\"09:46\",\"09:56\",\"09:59\",\"10:00\",\"10:05\",\"10:17\",\"10:41\",\"10:42\",\"10:51\",\"10:52\",\"10:54\",\"10:58\",\"11:01\",\"11:07\",\"11:11\",\"11:18\",\"11:50\",\"11:58\",\"12:22\",\"12:38\",\"12:55\",\"13:26\",\"13:29\",\"13:35\",\"13:36\",\"13:37\",\"13:40\",\"13:44\",\"13:55\",\"13:58\",\"13:59\",\"14:01\",\"14:10\",\"14:33\",\"14:51\",\"15:17\",\"15:43\",\"15:49\",\"15:58\",\"09:30\",\"09:32\",\"09:33\",\"09:34\",\"09:45\",\"09:46\",\"09:56\",\"09:59\",\"10:00\",\"10:05\",\"10:17\",\"10:41\",\"10:42\",\"10:51\",\"10:52\",\"10:54\",\"10:58\",\"11:01\",\"11:07\",\"11:11\",\"11:18\",\"11:50\",\"11:58\",\"12:22\",\"12:38\",\"12:55\",\"13:26\",\"13:29\",\"13:35\",\"13:36\",\"13:37\",\"13:40\",\"13:44\",\"13:55\",\"13:58\",\"13:59\",\"14:01\",\"14:10\",\"14:33\",\"14:51\",\"15:17\",\"15:43\",\"15:49\",\"15:58\"],\n", | |
| "\"flow_type\":[\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\"],\n", | |
| "\"cumsum_net_prem_in_k\":[0.0,0.0,0.0,0.0,0.0,0.0,7.0,7.0,7.0,8.25,8.25,8.25,8.25,8.25,8.25,8.25,8.25,18.928,19.598,23.07,23.07,25.2,21.66,20.412,11.412,11.412,11.412,9.737,9.737,9.737,9.737,9.737,9.737,9.737,10.362,10.362,10.362,14.442,14.442,14.442,14.442,14.442,13.282,13.282,-8.23,-8.23,-20.514,-63.398,-63.398,-60.526,-60.526,-69.316,-57.928000000000004,-60.982,-60.982,-73.418,-72.668,-78.83800000000001,-99.578,-103.71300000000001,-118.028,-118.028,-118.028,-118.028,-155.06,-155.06,-155.06,-155.06,-155.06,-153.32,-153.32,-153.32,-147.254,-147.994,-148.734,-148.014,-148.744,-124.04,-124.04,-124.81,-132.01,-132.01,-126.17,-128.22,-153.22,-162.36,-162.36,-151.56]\n", | |
| "},\n", | |
| "\"mapping\":{\n", | |
| "\"x\":\"hms_str\",\n", | |
| "\"y\":\"cumsum_net_prem_in_k\",\n", | |
| "\"color\":\"flow_type\"\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "\"series_annotations\":[{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"hms_str\"\n", | |
| "},{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"flow_type\"\n", | |
| "},{\n", | |
| "\"type\":\"float\",\n", | |
| "\"column\":\"cumsum_net_prem_in_k\"\n", | |
| "}]\n", | |
| "},\n", | |
| "\"ggtitle\":{\n", | |
| "\"text\":\"2025-11-18: AMP\"\n", | |
| "},\n", | |
| "\"guides\":{\n", | |
| "\"x\":{\n", | |
| "\"title\":\"Timestamp\"\n", | |
| "},\n", | |
| "\"y\":{\n", | |
| "\"title\":\"Net Prem $K\"\n", | |
| "}\n", | |
| "},\n", | |
| "\"theme\":{\n", | |
| "\"name\":\"none\",\n", | |
| "\"line\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"rect\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"text\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":10.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"axis_ontop\":true,\n", | |
| "\"axis_ticks\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_grid_major\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"panel_grid_minor\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"plot_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"plot_title\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":16.0,\n", | |
| "\"hjust\":0.5,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"axis_tooltip\":{\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"tooltip\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_position\":\"none\",\n", | |
| "\"axis_title_x\":{\n", | |
| "\"blank\":true\n", | |
| "}\n", | |
| "},\n", | |
| "\"kind\":\"plot\",\n", | |
| "\"scales\":[{\n", | |
| "\"aesthetic\":\"color\",\n", | |
| "\"breaks\":[\"cumsum_net_call_prem_in_mil\",\"cumsum_net_put_prem_in_mil\",\"price\"],\n", | |
| "\"values\":[\"#20c997\",\"#dc3545\",\"#FFFFFF\"]\n", | |
| "}],\n", | |
| "\"layers\":[{\n", | |
| "\"geom\":\"line\",\n", | |
| "\"mapping\":{\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "},\n", | |
| "\"size\":1.0,\n", | |
| "\"data\":{\n", | |
| "}\n", | |
| "}],\n", | |
| "\"metainfo_list\":[],\n", | |
| "\"spec_id\":\"3\"\n", | |
| "},{\n", | |
| "\"data\":{\n", | |
| "\"hms_str\":[\"09:30\",\"09:31\",\"09:32\",\"09:33\",\"09:35\",\"09:36\",\"09:37\",\"09:38\",\"09:39\",\"09:40\",\"09:41\",\"09:42\",\"09:43\",\"09:44\",\"09:45\",\"09:46\",\"09:47\",\"09:48\",\"09:49\",\"09:50\",\"09:51\",\"09:52\",\"09:53\",\"09:54\",\"09:55\",\"09:56\",\"09:57\",\"09:58\",\"09:59\",\"10:00\",\"10:01\",\"10:02\",\"10:03\",\"10:04\",\"10:05\",\"10:06\",\"10:07\",\"10:08\",\"10:09\",\"10:10\",\"10:11\",\"10:12\",\"10:13\",\"10:14\",\"10:15\",\"10:16\",\"10:17\",\"10:18\",\"10:19\",\"10:20\",\"10:21\",\"10:22\",\"10:23\",\"10:24\",\"10:25\",\"10:26\",\"10:27\",\"10:29\",\"10:30\",\"10:31\",\"10:32\",\"10:33\",\"10:34\",\"10:35\",\"10:36\",\"10:37\",\"10:38\",\"10:39\",\"10:40\",\"10:41\",\"10:42\",\"10:43\",\"10:44\",\"10:45\",\"10:46\",\"10:47\",\"10:48\",\"10:49\",\"10:50\",\"10:51\",\"10:52\",\"10:53\",\"10:55\",\"10:56\",\"10:57\",\"10:58\",\"10:59\",\"11:00\",\"11:01\",\"11:02\",\"11:03\",\"11:04\",\"11:06\",\"11:07\",\"11:08\",\"11:09\",\"11:10\",\"11:12\",\"11:13\",\"11:14\",\"11:15\",\"11:16\",\"11:17\",\"11:18\",\"11:22\",\"11:23\",\"11:24\",\"11:25\",\"11:26\",\"11:27\",\"11:29\",\"11:30\",\"11:31\",\"11:32\",\"11:33\",\"11:35\",\"11:36\",\"11:37\",\"11:38\",\"11:39\",\"11:40\",\"11:41\",\"11:42\",\"11:43\",\"11:44\",\"11:45\",\"11:46\",\"11:47\",\"11:48\",\"11:49\",\"11:50\",\"11:51\",\"11:52\",\"11:53\",\"11:55\",\"11:56\",\"11:57\",\"11:58\",\"11:59\",\"12:00\",\"12:01\",\"12:03\",\"12:04\",\"12:05\",\"12:06\",\"12:07\",\"12:08\",\"12:09\",\"12:10\",\"12:11\",\"12:12\",\"12:14\",\"12:15\",\"12:16\",\"12:17\",\"12:18\",\"12:19\",\"12:20\",\"12:21\",\"12:22\",\"12:23\",\"12:24\",\"12:25\",\"12:26\",\"12:27\",\"12:28\",\"12:29\",\"12:30\",\"12:31\",\"12:32\",\"12:33\",\"12:34\",\"12:35\",\"12:36\",\"12:37\",\"12:38\",\"12:39\",\"12:40\",\"12:41\",\"12:42\",\"12:43\",\"12:45\",\"12:46\",\"12:48\",\"12:49\",\"12:50\",\"12:51\",\"12:52\",\"12:53\",\"12:54\",\"12:55\",\"12:56\",\"12:57\",\"12:58\",\"12:59\",\"13:00\",\"13:01\",\"13:02\",\"13:03\",\"13:04\",\"13:05\",\"13:07\",\"13:08\",\"13:09\",\"13:11\",\"13:12\",\"13:13\",\"13:14\",\"13:15\",\"13:16\",\"13:17\",\"13:19\",\"13:20\",\"13:21\",\"13:22\",\"13:23\",\"13:24\",\"13:25\",\"13:26\",\"13:27\",\"13:28\",\"13:29\",\"13:31\",\"13:32\",\"13:33\",\"13:34\",\"13:35\",\"13:36\",\"13:37\",\"13:38\",\"13:39\",\"13:40\",\"13:41\",\"13:42\",\"13:43\",\"13:44\",\"13:45\",\"13:47\",\"13:48\",\"13:49\",\"13:50\",\"13:51\",\"13:52\",\"13:53\",\"13:54\",\"13:55\",\"13:56\",\"13:57\",\"13:58\",\"13:59\",\"14:00\",\"14:01\",\"14:02\",\"14:03\",\"14:04\",\"14:05\",\"14:06\",\"14:07\",\"14:08\",\"14:09\",\"14:10\",\"14:11\",\"14:12\",\"14:13\",\"14:14\",\"14:15\",\"14:16\",\"14:17\",\"14:18\",\"14:19\",\"14:20\",\"14:21\",\"14:22\",\"14:23\",\"14:24\",\"14:25\",\"14:27\",\"14:28\",\"14:29\",\"14:31\",\"14:32\",\"14:33\",\"14:34\",\"14:35\",\"14:36\",\"14:37\",\"14:38\",\"14:39\",\"14:40\",\"14:41\",\"14:42\",\"14:43\",\"14:44\",\"14:45\",\"14:46\",\"14:47\",\"14:48\",\"14:49\",\"14:50\",\"14:51\",\"14:52\",\"14:53\",\"14:54\",\"14:55\",\"14:56\",\"14:57\",\"14:58\",\"14:59\",\"15:00\",\"15:01\",\"15:02\",\"15:03\",\"15:04\",\"15:05\",\"15:06\",\"15:07\",\"15:08\",\"15:09\",\"15:10\",\"15:11\",\"15:13\",\"15:14\",\"15:15\",\"15:16\",\"15:17\",\"15:18\",\"15:19\",\"15:20\",\"15:21\",\"15:22\",\"15:23\",\"15:24\",\"15:25\",\"15:26\",\"15:27\",\"15:28\",\"15:29\",\"15:30\",\"15:31\",\"15:32\",\"15:33\",\"15:34\",\"15:35\",\"15:36\",\"15:37\",\"15:38\",\"15:39\",\"15:40\",\"15:41\",\"15:42\",\"15:43\",\"15:44\",\"15:45\",\"15:46\",\"15:47\",\"15:48\",\"15:49\",\"15:50\",\"15:51\",\"15:52\",\"15:53\",\"15:54\",\"15:55\",\"15:56\",\"15:57\",\"15:58\"],\n", | |
| "\"price\":[433.055,434.5464,437.35,438.8,438.5,439.0575,438.845,438.99,440.205,438.99,441.09,440.735,441.56,441.01,441.71,441.585,440.77,441.79,439.68,440.55,439.855,438.6686,439.58,440.0518,439.3,439.4375,440.305,440.2225,440.41,440.77,440.595,440.09,438.895,439.02,439.34,438.72,439.39,438.91,437.99,438.86,438.91,438.49,439.19,438.44,437.7,437.525,437.87,437.7401,438.085,438.07,438.73,438.7,439.81,438.85,438.84,438.79,438.06,438.0,438.56,437.75,439.0975,438.58,438.38,438.5299,438.15,438.215,438.79,438.88,438.04,438.77,438.27,438.41,438.68,438.365,438.21,438.54,439.61,439.235,439.09,439.945,440.515,440.17,440.555,440.85,441.55,441.19,441.015,440.865,441.08,441.21,440.73,441.52,441.41,442.05,442.375,442.74,442.77,442.83,442.68,442.43,442.16,441.79,441.53,441.43,441.89,442.09,442.0701,442.18,442.73,442.77,443.23,443.125,443.07,443.115,443.095,443.095,443.095,443.5,443.405,442.72,442.665,443.07,442.63,442.37,442.41,442.38,442.14,441.88,442.28,441.7001,442.285,441.59,441.37,441.545,441.75,441.13,440.68,441.095,441.09,441.11,440.53,440.17,440.28,439.84,439.38,439.72,439.95,439.415,439.65,439.47,439.59,439.8,440.22,439.55,439.39,439.94,439.72,439.76,439.995,439.37,439.36,439.6357,439.27,439.1,438.11,438.325,438.145,437.8975,437.74,438.24,438.26,438.235,438.43,438.66,438.1701,438.885,439.46,439.8775,440.11,440.675,440.72,441.17,440.77,440.8281,441.53,441.18,441.46,441.53,441.9419,441.66,441.66,442.0,442.465,442.8371,442.5925,442.14,442.23,441.99,441.82,441.655,441.97,441.84,441.815,441.49,442.135,442.66,442.14,441.96,441.78,442.19,441.76,442.145,441.533,441.62,441.62,442.06,441.725,441.525,441.375,441.645,441.42,441.07,441.2,441.375,441.38,441.21,441.4,441.1,440.95,441.41,441.7575,442.61,442.605,441.96,441.545,441.86,441.27,441.36,441.36,441.32,441.19,441.255,441.24,441.33,441.34,441.01,440.985,440.96,440.98,440.97,441.37,441.32,441.88,441.35,441.79,442.14,441.975,441.675,441.85,442.2,442.45,443.02,443.485,443.71,443.59,443.3,443.43,443.555,443.66,443.84,444.25,443.8675,443.995,443.4001,443.46,443.83,443.73,443.53,443.405,443.62,443.52,443.475,443.31,443.96,443.985,444.665,444.785,445.03,445.065,444.51,444.38,444.56,444.395,444.39,444.78,445.38,445.0,444.82,444.76,444.63,444.7855,444.54,444.36,444.7,444.595,444.59,444.805,444.94,445.5,445.495,445.31,445.51,445.355,445.06,445.18,445.14,445.3,445.2,445.455,445.37,445.46,445.34,444.715,444.92,444.8088,445.24,445.3699,445.51,445.51,445.69,445.75,445.75,444.795,444.7925,445.015,444.635,444.58,445.09,444.91,444.79,444.75,444.53,444.56,444.675,445.02,445.09,445.352,445.195,445.339,444.73,444.965,444.77,444.96,443.95,444.33,444.64,444.37,444.5496,444.7,443.95,444.235,444.025,443.84,443.64,443.26,442.78]\n", | |
| "},\n", | |
| "\"mapping\":{\n", | |
| "\"x\":\"hms_str\",\n", | |
| "\"y\":\"price\"\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "\"series_annotations\":[{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"hms_str\"\n", | |
| "},{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"ohlc_type\"\n", | |
| "},{\n", | |
| "\"type\":\"float\",\n", | |
| "\"column\":\"price\"\n", | |
| "}]\n", | |
| "},\n", | |
| "\"ggtitle\":{\n", | |
| "\"text\":\"AMP Price\"\n", | |
| "},\n", | |
| "\"guides\":{\n", | |
| "\"x\":{\n", | |
| "\"title\":\"Timestamp\"\n", | |
| "},\n", | |
| "\"y\":{\n", | |
| "\"title\":\"AMP Price\"\n", | |
| "}\n", | |
| "},\n", | |
| "\"theme\":{\n", | |
| "\"name\":\"none\",\n", | |
| "\"line\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"rect\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"text\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":10.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"axis_ontop\":true,\n", | |
| "\"axis_ticks\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_grid_major\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"panel_grid_minor\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"plot_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"plot_title\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":16.0,\n", | |
| "\"hjust\":0.5,\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"axis_tooltip\":{\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"tooltip\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_position\":\"none\",\n", | |
| "\"axis_title_x\":{\n", | |
| "\"blank\":true\n", | |
| "}\n", | |
| "},\n", | |
| "\"kind\":\"plot\",\n", | |
| "\"scales\":[],\n", | |
| "\"layers\":[{\n", | |
| "\"geom\":\"line\",\n", | |
| "\"mapping\":{\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "},\n", | |
| "\"size\":1.0,\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"data\":{\n", | |
| "}\n", | |
| "}],\n", | |
| "\"metainfo_list\":[],\n", | |
| "\"spec_id\":\"4\"\n", | |
| "}]\n", | |
| "},{\n", | |
| "\"theme\":{\n", | |
| "\"plot_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "}\n", | |
| "},\n", | |
| "\"kind\":\"subplots\",\n", | |
| "\"layout\":{\n", | |
| "\"ncol\":1.0,\n", | |
| "\"nrow\":2.0,\n", | |
| "\"align\":true,\n", | |
| "\"name\":\"grid\"\n", | |
| "},\n", | |
| "\"figures\":[{\n", | |
| "\"data\":{\n", | |
| "\"hms_str\":[\"09:30\",\"09:38\",\"09:54\",\"10:18\",\"10:19\",\"10:23\",\"10:24\",\"10:30\",\"10:33\",\"10:41\",\"10:46\",\"11:07\",\"11:11\",\"11:25\",\"11:26\",\"11:28\",\"11:31\",\"11:35\",\"11:36\",\"11:42\",\"11:47\",\"11:48\",\"12:09\",\"12:17\",\"12:18\",\"12:58\",\"13:22\",\"13:28\",\"13:34\",\"13:35\",\"13:38\",\"13:40\",\"13:47\",\"13:59\",\"14:12\",\"14:13\",\"14:24\",\"14:30\",\"14:48\",\"14:49\",\"15:06\",\"15:34\",\"15:39\",\"15:46\",\"09:30\",\"09:38\",\"09:54\",\"10:18\",\"10:19\",\"10:23\",\"10:24\",\"10:30\",\"10:33\",\"10:41\",\"10:46\",\"11:07\",\"11:11\",\"11:25\",\"11:26\",\"11:28\",\"11:31\",\"11:35\",\"11:36\",\"11:42\",\"11:47\",\"11:48\",\"12:09\",\"12:17\",\"12:18\",\"12:58\",\"13:22\",\"13:28\",\"13:34\",\"13:35\",\"13:38\",\"13:40\",\"13:47\",\"13:59\",\"14:12\",\"14:13\",\"14:24\",\"14:30\",\"14:48\",\"14:49\",\"15:06\",\"15:34\",\"15:39\",\"15:46\"],\n", | |
| "\"flow_type\":[\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\"],\n", | |
| "\"cumsum_net_prem_in_k\":[-0.051000000000000004,-0.051000000000000004,-0.053,-0.061,-0.061,-0.061,-0.061,-0.061,0.34900000000000003,-4.4510000000000005,-4.4510000000000005,-3.846,-3.846,-4.366,-5.006,-5.006,-4.466,-4.466,-5.006,-4.456,-4.966,-4.966,-4.634,12.174,12.174,12.179,29.067,29.067,28.887,31.086000000000002,32.301,32.301,33.579,33.579,33.351,31.791,31.791,31.791,31.07,29.178,46.206,46.206,45.978,45.978,6.075,4.6530000000000005,4.6530000000000005,4.6530000000000005,6.263,5.363,4.92,7.0200000000000005,7.0200000000000005,7.0200000000000005,6.4,6.4,6.675,6.855,6.855,6.855,6.495,5.875,5.875,5.875,5.875,5.525,5.525,5.525,8.675,8.675,8.675,8.792,8.792,8.792,8.792,28.192,28.192,29.482,29.482,29.482,29.382,28.122,28.122,28.122,28.122,29.742,29.742,30.212]\n", | |
| "},\n", | |
| "\"mapping\":{\n", | |
| "\"x\":\"hms_str\",\n", | |
| "\"y\":\"cumsum_net_prem_in_k\",\n", | |
| "\"color\":\"flow_type\"\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "\"series_annotations\":[{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"hms_str\"\n", | |
| "},{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"flow_type\"\n", | |
| "},{\n", | |
| "\"type\":\"float\",\n", | |
| "\"column\":\"cumsum_net_prem_in_k\"\n", | |
| "}]\n", | |
| "},\n", | |
| "\"ggtitle\":{\n", | |
| "\"text\":\"2025-11-18: RJF\"\n", | |
| "},\n", | |
| "\"guides\":{\n", | |
| "\"x\":{\n", | |
| "\"title\":\"Timestamp\"\n", | |
| "},\n", | |
| "\"y\":{\n", | |
| "\"title\":\"Net Prem $K\"\n", | |
| "}\n", | |
| "},\n", | |
| "\"theme\":{\n", | |
| "\"name\":\"none\",\n", | |
| "\"line\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"rect\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"text\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":10.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"axis_ontop\":true,\n", | |
| "\"axis_ticks\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_grid_major\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"panel_grid_minor\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"plot_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"plot_title\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":16.0,\n", | |
| "\"hjust\":0.5,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"axis_tooltip\":{\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"tooltip\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_position\":\"none\",\n", | |
| "\"axis_title_x\":{\n", | |
| "\"blank\":true\n", | |
| "}\n", | |
| "},\n", | |
| "\"kind\":\"plot\",\n", | |
| "\"scales\":[{\n", | |
| "\"aesthetic\":\"color\",\n", | |
| "\"breaks\":[\"cumsum_net_call_prem_in_mil\",\"cumsum_net_put_prem_in_mil\",\"price\"],\n", | |
| "\"values\":[\"#20c997\",\"#dc3545\",\"#FFFFFF\"]\n", | |
| "}],\n", | |
| "\"layers\":[{\n", | |
| "\"geom\":\"line\",\n", | |
| "\"mapping\":{\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "},\n", | |
| "\"size\":1.0,\n", | |
| "\"data\":{\n", | |
| "}\n", | |
| "}],\n", | |
| "\"metainfo_list\":[],\n", | |
| "\"spec_id\":\"5\"\n", | |
| "},{\n", | |
| "\"data\":{\n", | |
| "\"hms_str\":[\"09:30\",\"09:31\",\"09:32\",\"09:34\",\"09:35\",\"09:36\",\"09:37\",\"09:41\",\"09:42\",\"09:44\",\"09:45\",\"09:47\",\"09:50\",\"09:51\",\"09:52\",\"09:53\",\"09:54\",\"09:56\",\"09:57\",\"10:00\",\"10:02\",\"10:04\",\"10:05\",\"10:06\",\"10:07\",\"10:08\",\"10:09\",\"10:10\",\"10:11\",\"10:12\",\"10:13\",\"10:14\",\"10:15\",\"10:16\",\"10:17\",\"10:18\",\"10:19\",\"10:20\",\"10:21\",\"10:22\",\"10:23\",\"10:24\",\"10:26\",\"10:28\",\"10:29\",\"10:30\",\"10:31\",\"10:32\",\"10:33\",\"10:34\",\"10:36\",\"10:37\",\"10:38\",\"10:39\",\"10:40\",\"10:41\",\"10:43\",\"10:44\",\"10:45\",\"10:46\",\"10:47\",\"10:48\",\"10:49\",\"10:50\",\"10:51\",\"10:52\",\"10:54\",\"10:55\",\"10:56\",\"10:57\",\"10:58\",\"10:59\",\"11:00\",\"11:01\",\"11:02\",\"11:03\",\"11:04\",\"11:05\",\"11:06\",\"11:07\",\"11:08\",\"11:09\",\"11:10\",\"11:11\",\"11:12\",\"11:13\",\"11:15\",\"11:16\",\"11:17\",\"11:18\",\"11:19\",\"11:20\",\"11:21\",\"11:22\",\"11:23\",\"11:24\",\"11:25\",\"11:26\",\"11:27\",\"11:29\",\"11:30\",\"11:31\",\"11:32\",\"11:33\",\"11:35\",\"11:36\",\"11:37\",\"11:38\",\"11:39\",\"11:40\",\"11:41\",\"11:42\",\"11:43\",\"11:44\",\"11:45\",\"11:46\",\"11:47\",\"11:48\",\"11:49\",\"11:50\",\"11:51\",\"11:52\",\"11:53\",\"11:56\",\"11:57\",\"11:58\",\"11:59\",\"12:01\",\"12:02\",\"12:03\",\"12:04\",\"12:05\",\"12:06\",\"12:07\",\"12:08\",\"12:09\",\"12:10\",\"12:11\",\"12:12\",\"12:13\",\"12:14\",\"12:15\",\"12:16\",\"12:17\",\"12:18\",\"12:19\",\"12:20\",\"12:21\",\"12:22\",\"12:23\",\"12:24\",\"12:25\",\"12:26\",\"12:27\",\"12:28\",\"12:29\",\"12:30\",\"12:31\",\"12:32\",\"12:33\",\"12:35\",\"12:36\",\"12:37\",\"12:38\",\"12:39\",\"12:40\",\"12:41\",\"12:42\",\"12:43\",\"12:44\",\"12:45\",\"12:46\",\"12:47\",\"12:48\",\"12:49\",\"12:50\",\"12:51\",\"12:52\",\"12:53\",\"12:54\",\"12:56\",\"12:57\",\"12:58\",\"12:59\",\"13:00\",\"13:01\",\"13:02\",\"13:03\",\"13:05\",\"13:06\",\"13:07\",\"13:08\",\"13:09\",\"13:10\",\"13:11\",\"13:12\",\"13:13\",\"13:14\",\"13:15\",\"13:16\",\"13:17\",\"13:18\",\"13:19\",\"13:20\",\"13:21\",\"13:22\",\"13:23\",\"13:25\",\"13:26\",\"13:27\",\"13:29\",\"13:30\",\"13:31\",\"13:32\",\"13:33\",\"13:34\",\"13:35\",\"13:36\",\"13:37\",\"13:39\",\"13:40\",\"13:41\",\"13:42\",\"13:43\",\"13:44\",\"13:45\",\"13:46\",\"13:47\",\"13:48\",\"13:49\",\"13:50\",\"13:51\",\"13:53\",\"13:54\",\"13:55\",\"13:56\",\"13:57\",\"13:58\",\"13:59\",\"14:00\",\"14:01\",\"14:03\",\"14:05\",\"14:06\",\"14:07\",\"14:08\",\"14:09\",\"14:10\",\"14:11\",\"14:12\",\"14:13\",\"14:14\",\"14:15\",\"14:16\",\"14:17\",\"14:18\",\"14:19\",\"14:20\",\"14:21\",\"14:22\",\"14:23\",\"14:24\",\"14:25\",\"14:26\",\"14:27\",\"14:28\",\"14:30\",\"14:33\",\"14:34\",\"14:35\",\"14:36\",\"14:37\",\"14:38\",\"14:39\",\"14:40\",\"14:41\",\"14:42\",\"14:43\",\"14:44\",\"14:45\",\"14:47\",\"14:48\",\"14:49\",\"14:50\",\"14:51\",\"14:52\",\"14:54\",\"14:55\",\"14:56\",\"14:57\",\"14:58\",\"14:59\",\"15:00\",\"15:01\",\"15:02\",\"15:03\",\"15:04\",\"15:05\",\"15:06\",\"15:08\",\"15:12\",\"15:14\",\"15:15\",\"15:16\",\"15:17\",\"15:18\",\"15:19\",\"15:20\",\"15:21\",\"15:24\",\"15:25\",\"15:26\",\"15:28\",\"15:29\",\"15:30\",\"15:31\",\"15:32\",\"15:34\",\"15:35\",\"15:36\",\"15:37\",\"15:38\",\"15:39\",\"15:40\",\"15:42\",\"15:43\",\"15:44\",\"15:46\"],\n", | |
| "\"price\":[154.48,154.49,154.78,154.885,154.96,154.77,154.77,154.57,155.065,154.84,155.195,155.34,155.375,155.43,154.91,155.035,155.4103,155.05,155.435,155.48,155.44,155.14,155.0,155.07,155.15,155.155,155.16,155.39,155.345,155.31,155.56,155.35,155.02,155.045,155.045,155.16,155.1575,155.13,155.69,155.36,155.66,155.65,155.57,155.35,155.34,155.505,155.325,155.65,155.4,155.205,155.2,155.205,155.285,155.185,155.08,155.15,155.13,154.9701,154.755,154.885,154.84,154.58,155.08,155.0,155.2,155.26,155.17,155.415,155.3935,155.37,155.3125,155.205,155.25,155.27,155.14,155.13,155.25,155.08,155.09,155.405,155.4,155.4,155.41,155.6,155.5,155.43,155.21,155.23,155.11,155.08,155.17,155.51,155.4,155.44,155.445,155.4775,155.8,155.805,155.805,155.72,155.86,155.97,155.84,155.81,155.89,155.87,156.04,156.02,155.835,155.835,155.9,155.9,155.905,155.71,155.835,155.895,155.75,155.845,155.845,155.72,155.55,155.605,155.46,155.4,155.4,155.55,155.54,155.535,155.61,155.48,155.42,155.4,155.44,155.445,155.49,155.465,155.44,155.44,155.4,155.46,155.4,155.33,155.38,155.32,155.365,155.365,155.375,155.39,155.19,155.195,155.42,155.405,155.35,155.11,155.08,155.035,155.03,155.0,155.04,155.01,155.24,155.3,155.36,155.38,155.66,155.82,155.845,156.04,156.07,156.015,155.935,155.79,155.93,156.08,156.23,156.22,156.16,156.28,156.35,156.32,156.36,156.52,156.57,156.52,156.58,156.48,156.42,156.42,156.46,156.56,156.52,156.43,156.4075,156.48,156.5,156.5,156.51,156.34,156.36,156.465,156.36,156.44,156.445,156.3,156.3,156.36,156.475,156.27,156.2,156.32,156.0,156.085,156.16,156.255,156.36,156.315,156.52,156.61,156.565,156.765,156.92,156.99,156.91,156.715,156.85,156.66,156.795,156.63,156.63,156.605,156.54,156.54,156.62,156.615,156.555,156.55,156.5,156.365,156.315,156.36,156.625,156.315,156.285,156.285,156.285,156.285,156.375,156.375,156.325,156.3223,156.34,156.42,156.2568,156.125,156.125,156.25,156.41,156.31,156.225,156.04,155.89,155.81,155.9091,155.89,155.87,155.79,155.815,155.97,155.875,156.11,156.165,156.22,156.11,156.245,156.25,156.12,156.18,156.07,155.97,156.075,156.3,156.13,156.025,156.08,155.92,155.93,155.905,155.92,156.08,156.045,156.0525,156.26,156.28,156.23,156.23,156.22,156.06,156.03,156.075,155.96,156.1,156.11,156.025,156.03,156.045,156.11,156.0,156.08,156.24,156.0,155.93,155.99,155.85,155.995,156.154,156.01,156.035,155.95,156.0,156.027,156.08,156.14,156.13,156.0,155.91,155.94,155.878,155.84]\n", | |
| "},\n", | |
| "\"mapping\":{\n", | |
| "\"x\":\"hms_str\",\n", | |
| "\"y\":\"price\"\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "\"series_annotations\":[{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"hms_str\"\n", | |
| "},{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"ohlc_type\"\n", | |
| "},{\n", | |
| "\"type\":\"float\",\n", | |
| "\"column\":\"price\"\n", | |
| "}]\n", | |
| "},\n", | |
| "\"ggtitle\":{\n", | |
| "\"text\":\"RJF Price\"\n", | |
| "},\n", | |
| "\"guides\":{\n", | |
| "\"x\":{\n", | |
| "\"title\":\"Timestamp\"\n", | |
| "},\n", | |
| "\"y\":{\n", | |
| "\"title\":\"RJF Price\"\n", | |
| "}\n", | |
| "},\n", | |
| "\"theme\":{\n", | |
| "\"name\":\"none\",\n", | |
| "\"line\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"rect\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"text\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":10.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"axis_ontop\":true,\n", | |
| "\"axis_ticks\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_grid_major\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"panel_grid_minor\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"plot_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"plot_title\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":16.0,\n", | |
| "\"hjust\":0.5,\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"axis_tooltip\":{\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"tooltip\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_position\":\"none\",\n", | |
| "\"axis_title_x\":{\n", | |
| "\"blank\":true\n", | |
| "}\n", | |
| "},\n", | |
| "\"kind\":\"plot\",\n", | |
| "\"scales\":[],\n", | |
| "\"layers\":[{\n", | |
| "\"geom\":\"line\",\n", | |
| "\"mapping\":{\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "},\n", | |
| "\"size\":1.0,\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"data\":{\n", | |
| "}\n", | |
| "}],\n", | |
| "\"metainfo_list\":[],\n", | |
| "\"spec_id\":\"6\"\n", | |
| "}]\n", | |
| "},{\n", | |
| "\"theme\":{\n", | |
| "\"plot_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "}\n", | |
| "},\n", | |
| "\"kind\":\"subplots\",\n", | |
| "\"layout\":{\n", | |
| "\"ncol\":1.0,\n", | |
| "\"nrow\":2.0,\n", | |
| "\"align\":true,\n", | |
| "\"name\":\"grid\"\n", | |
| "},\n", | |
| "\"figures\":[{\n", | |
| "\"data\":{\n", | |
| "\"hms_str\":[\"09:30\",\"09:41\",\"09:52\",\"09:55\",\"10:30\",\"15:06\",\"15:43\",\"09:30\",\"09:41\",\"09:52\",\"09:55\",\"10:30\",\"15:06\",\"15:43\"],\n", | |
| "\"flow_type\":[\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_call_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\",\"cumsum_net_put_prem_in_k\"],\n", | |
| "\"cumsum_net_prem_in_k\":[0.0,-0.24,-0.615,-1.165,-0.259,0.001,-0.28700000000000003,0.27,0.27,0.27,0.27,0.27,0.27,0.27]\n", | |
| "},\n", | |
| "\"mapping\":{\n", | |
| "\"x\":\"hms_str\",\n", | |
| "\"y\":\"cumsum_net_prem_in_k\",\n", | |
| "\"color\":\"flow_type\"\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "\"series_annotations\":[{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"hms_str\"\n", | |
| "},{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"flow_type\"\n", | |
| "},{\n", | |
| "\"type\":\"float\",\n", | |
| "\"column\":\"cumsum_net_prem_in_k\"\n", | |
| "}]\n", | |
| "},\n", | |
| "\"ggtitle\":{\n", | |
| "\"text\":\"2025-11-18: SF\"\n", | |
| "},\n", | |
| "\"guides\":{\n", | |
| "\"x\":{\n", | |
| "\"title\":\"Timestamp\"\n", | |
| "},\n", | |
| "\"y\":{\n", | |
| "\"title\":\"Net Prem $K\"\n", | |
| "}\n", | |
| "},\n", | |
| "\"theme\":{\n", | |
| "\"name\":\"none\",\n", | |
| "\"line\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"rect\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"text\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":10.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"axis_ontop\":true,\n", | |
| "\"axis_ticks\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_grid_major\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"panel_grid_minor\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"plot_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"plot_title\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":16.0,\n", | |
| "\"hjust\":0.5,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"axis_tooltip\":{\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"tooltip\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_position\":\"none\",\n", | |
| "\"axis_title_x\":{\n", | |
| "\"blank\":true\n", | |
| "}\n", | |
| "},\n", | |
| "\"kind\":\"plot\",\n", | |
| "\"scales\":[{\n", | |
| "\"aesthetic\":\"color\",\n", | |
| "\"breaks\":[\"cumsum_net_call_prem_in_mil\",\"cumsum_net_put_prem_in_mil\",\"price\"],\n", | |
| "\"values\":[\"#20c997\",\"#dc3545\",\"#FFFFFF\"]\n", | |
| "}],\n", | |
| "\"layers\":[{\n", | |
| "\"geom\":\"line\",\n", | |
| "\"mapping\":{\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "},\n", | |
| "\"size\":1.0,\n", | |
| "\"data\":{\n", | |
| "}\n", | |
| "}],\n", | |
| "\"metainfo_list\":[],\n", | |
| "\"spec_id\":\"7\"\n", | |
| "},{\n", | |
| "\"data\":{\n", | |
| "\"hms_str\":[\"09:30\",\"09:32\",\"09:39\",\"09:42\",\"09:47\",\"09:48\",\"09:49\",\"09:50\",\"09:52\",\"09:53\",\"09:54\",\"09:56\",\"09:58\",\"10:00\",\"10:01\",\"10:04\",\"10:05\",\"10:06\",\"10:07\",\"10:11\",\"10:13\",\"10:16\",\"10:18\",\"10:21\",\"10:22\",\"10:24\",\"10:25\",\"10:28\",\"10:29\",\"10:31\",\"10:39\",\"10:40\",\"10:42\",\"10:45\",\"10:49\",\"10:50\",\"10:52\",\"10:53\",\"10:54\",\"10:55\",\"10:57\",\"10:59\",\"11:00\",\"11:01\",\"11:03\",\"11:06\",\"11:07\",\"11:08\",\"11:09\",\"11:10\",\"11:11\",\"11:12\",\"11:15\",\"11:17\",\"11:18\",\"11:20\",\"11:21\",\"11:24\",\"11:25\",\"11:29\",\"11:31\",\"11:33\",\"11:34\",\"11:35\",\"11:37\",\"11:39\",\"11:42\",\"11:44\",\"11:45\",\"11:47\",\"11:48\",\"11:51\",\"11:53\",\"11:57\",\"11:59\",\"12:00\",\"12:01\",\"12:02\",\"12:03\",\"12:05\",\"12:06\",\"12:07\",\"12:08\",\"12:13\",\"12:14\",\"12:15\",\"12:16\",\"12:17\",\"12:18\",\"12:19\",\"12:20\",\"12:21\",\"12:22\",\"12:23\",\"12:25\",\"12:27\",\"12:28\",\"12:29\",\"12:30\",\"12:31\",\"12:34\",\"12:35\",\"12:36\",\"12:37\",\"12:38\",\"12:39\",\"12:40\",\"12:41\",\"12:42\",\"12:43\",\"12:44\",\"12:45\",\"12:46\",\"12:47\",\"12:48\",\"12:50\",\"12:51\",\"12:53\",\"12:54\",\"12:55\",\"12:56\",\"12:57\",\"12:58\",\"12:59\",\"13:00\",\"13:01\",\"13:03\",\"13:05\",\"13:06\",\"13:07\",\"13:09\",\"13:10\",\"13:11\",\"13:12\",\"13:13\",\"13:15\",\"13:16\",\"13:18\",\"13:23\",\"13:25\",\"13:29\",\"13:33\",\"13:37\",\"13:39\",\"13:40\",\"13:42\",\"13:43\",\"13:44\",\"13:45\",\"13:47\",\"13:48\",\"13:49\",\"13:50\",\"13:52\",\"13:53\",\"13:54\",\"13:55\",\"13:56\",\"13:57\",\"13:58\",\"14:00\",\"14:01\",\"14:02\",\"14:03\",\"14:04\",\"14:05\",\"14:06\",\"14:08\",\"14:09\",\"14:10\",\"14:11\",\"14:14\",\"14:15\",\"14:16\",\"14:18\",\"14:19\",\"14:21\",\"14:22\",\"14:23\",\"14:24\",\"14:25\",\"14:26\",\"14:27\",\"14:28\",\"14:29\",\"14:31\",\"14:33\",\"14:34\",\"14:35\",\"14:36\",\"14:37\",\"14:38\",\"14:39\",\"14:40\",\"14:41\",\"14:42\",\"14:43\",\"14:44\",\"14:45\",\"14:46\",\"14:47\",\"14:48\",\"14:49\",\"14:50\",\"14:51\",\"14:52\",\"14:53\",\"14:54\",\"14:55\",\"14:56\",\"14:57\",\"14:58\",\"14:59\",\"15:00\",\"15:02\",\"15:03\",\"15:04\",\"15:05\",\"15:06\",\"15:07\",\"15:08\",\"15:09\",\"15:10\",\"15:12\",\"15:13\",\"15:14\",\"15:15\",\"15:16\",\"15:17\",\"15:18\",\"15:19\",\"15:20\",\"15:21\",\"15:23\",\"15:24\",\"15:25\",\"15:26\",\"15:28\",\"15:30\",\"15:31\",\"15:32\",\"15:33\",\"15:34\",\"15:35\",\"15:38\",\"15:39\",\"15:40\",\"15:41\",\"15:42\",\"15:43\"],\n", | |
| "\"price\":[115.445,115.44,115.56,116.36,115.62,116.265,116.195,116.35,115.29,115.675,115.71,115.64,115.935,115.895,115.895,115.65,115.3,115.265,115.27,115.67,115.6365,115.705,115.88,116.23,116.34,116.07,116.09,115.98,116.02,116.0,116.02,116.0,115.62,115.63,116.025,116.0,116.18,115.91,115.915,115.7001,116.0,115.995,115.855,115.86,115.6601,115.81,116.12,116.145,116.27,116.38,116.38,116.385,116.23,116.15,116.315,116.505,116.4685,116.64,116.685,116.775,116.775,116.81,116.8,116.725,116.805,116.6,116.46,116.41,116.51,116.37,116.53,116.34,116.535,116.6811,116.5375,116.545,116.55,116.44,116.555,116.22,116.365,116.48,116.58,116.3201,116.555,116.5,116.49,116.495,116.38,116.73,116.58,116.66,116.375,116.39,116.54,116.43,116.4,116.31,116.235,116.26,116.15,116.26,116.32,116.32,116.565,116.91,116.885,116.86,116.86,117.07,117.025,116.83,116.96,116.88,117.275,117.28,117.1,117.265,117.13,117.24,117.575,117.585,117.585,117.58,117.47,117.66,117.55,117.4889,117.61,117.75,117.4,117.47,117.5675,117.64,117.5,117.38,117.29,117.24,117.505,117.25,117.08,117.15,117.13,117.305,117.46,117.525,117.405,117.4125,117.29,117.28,117.38,117.335,117.22,117.32,117.3,117.29,117.22,117.12,117.0,116.87,117.01,117.165,117.0,116.88,116.955,116.955,116.85,116.885,116.885,116.78,116.8,117.0,116.81,116.8164,116.84,116.91,116.975,116.92,116.79,116.845,116.89,116.94,116.885,116.72,116.74,116.75,116.81,116.82,116.78,116.91,117.04,116.9301,117.08,117.01,116.87,116.92,116.9,116.8,116.795,116.83,117.035,116.92,116.945,116.9,116.92,116.83,116.73,116.64,116.82,116.845,116.995,117.02,117.01,117.135,117.07,117.07,116.99,117.115,117.115,117.0,117.115,117.11,117.06,117.15,117.13,117.24,117.21,117.205,117.32,117.195,117.18,117.26,117.4,117.31,117.43,117.24,117.21,117.11,117.2,117.13,117.0717,117.1,117.12,117.26,117.31,117.265,117.19,117.18,117.15,117.19]\n", | |
| "},\n", | |
| "\"mapping\":{\n", | |
| "\"x\":\"hms_str\",\n", | |
| "\"y\":\"price\"\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "\"series_annotations\":[{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"hms_str\"\n", | |
| "},{\n", | |
| "\"type\":\"str\",\n", | |
| "\"column\":\"ohlc_type\"\n", | |
| "},{\n", | |
| "\"type\":\"float\",\n", | |
| "\"column\":\"price\"\n", | |
| "}]\n", | |
| "},\n", | |
| "\"ggtitle\":{\n", | |
| "\"text\":\"SF Price\"\n", | |
| "},\n", | |
| "\"guides\":{\n", | |
| "\"x\":{\n", | |
| "\"title\":\"Timestamp\"\n", | |
| "},\n", | |
| "\"y\":{\n", | |
| "\"title\":\"SF Price\"\n", | |
| "}\n", | |
| "},\n", | |
| "\"theme\":{\n", | |
| "\"name\":\"none\",\n", | |
| "\"line\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"rect\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"text\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":10.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"axis_ontop\":true,\n", | |
| "\"axis_ticks\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":1.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"size\":2.0,\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"panel_grid_major\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"panel_grid_minor\":{\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"plot_background\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"plot_title\":{\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"size\":16.0,\n", | |
| "\"hjust\":0.5,\n", | |
| "\"blank\":true\n", | |
| "},\n", | |
| "\"axis_tooltip\":{\n", | |
| "\"color\":\"#1E3A5F\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"tooltip\":{\n", | |
| "\"fill\":\"#1E3A5F\",\n", | |
| "\"color\":\"#D3D3D3\",\n", | |
| "\"blank\":false\n", | |
| "},\n", | |
| "\"legend_position\":\"none\",\n", | |
| "\"axis_title_x\":{\n", | |
| "\"blank\":true\n", | |
| "}\n", | |
| "},\n", | |
| "\"kind\":\"plot\",\n", | |
| "\"scales\":[],\n", | |
| "\"layers\":[{\n", | |
| "\"geom\":\"line\",\n", | |
| "\"mapping\":{\n", | |
| "},\n", | |
| "\"data_meta\":{\n", | |
| "},\n", | |
| "\"size\":1.0,\n", | |
| "\"color\":\"#FFFFFF\",\n", | |
| "\"data\":{\n", | |
| "}\n", | |
| "}],\n", | |
| "\"metainfo_list\":[],\n", | |
| "\"spec_id\":\"8\"\n", | |
| "}]\n", | |
| "}]\n", | |
| "};\n", | |
| " window.letsPlotCall(function() { fig = LetsPlot.buildPlotFromProcessedSpecs(plotSpec, containerDiv, sizing); });\n", | |
| " } else {\n", | |
| " fig.updateView({});\n", | |
| " }\n", | |
| " }\n", | |
| " \n", | |
| " const renderImmediately = \n", | |
| " forceImmediateRender || (\n", | |
| " sizing.width_mode === 'FIXED' && \n", | |
| " (sizing.height_mode === 'FIXED' || sizing.height_mode === 'SCALED')\n", | |
| " );\n", | |
| " \n", | |
| " if (renderImmediately) {\n", | |
| " renderPlot();\n", | |
| " }\n", | |
| " \n", | |
| " if (!renderImmediately || responsive) {\n", | |
| " // Set up observer for initial sizing or continuous monitoring\n", | |
| " var observer = new ResizeObserver(function(entries) {\n", | |
| " for (let entry of entries) {\n", | |
| " if (entry.contentBoxSize && \n", | |
| " entry.contentBoxSize[0].inlineSize > 0) {\n", | |
| " if (!responsive && observer) {\n", | |
| " observer.disconnect();\n", | |
| " observer = null;\n", | |
| " }\n", | |
| " renderPlot();\n", | |
| " if (!responsive) {\n", | |
| " break;\n", | |
| " }\n", | |
| " }\n", | |
| " }\n", | |
| " });\n", | |
| " \n", | |
| " observer.observe(containerDiv);\n", | |
| " }\n", | |
| " \n", | |
| " // ----------\n", | |
| " })();\n", | |
| " \n", | |
| " </script>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "plot_ready_ohlc_dfs = {}\n", | |
| "for ticker, clean_df in clean_ohlc_dfs.items():\n", | |
| " plot_ready_ohlc_dfs[ticker] = (\n", | |
| " clean_df\n", | |
| " .unpivot(\n", | |
| " index=[\"hms_str\"],\n", | |
| " on=[\"close\"],\n", | |
| " variable_name=\"ohlc_type\",\n", | |
| " value_name=\"price\"\n", | |
| " )\n", | |
| " )\n", | |
| "\n", | |
| "grouped_plots = {}\n", | |
| "for ticker, plot_ready_npt_df in plot_ready_npt_dfs.items():\n", | |
| " npt_plot = (\n", | |
| " lp.ggplot(plot_ready_npt_df)\n", | |
| " + lp.aes(x=\"hms_str\", y=\"cumsum_net_prem_in_k\", color=\"flow_type\")\n", | |
| " + lp.geom_line(size=1)\n", | |
| " + lp.scale_color_manual(values=color_mapping)\n", | |
| " + lp.ggtitle(f\"{target_date}: {ticker}\")\n", | |
| " + lp.xlab(\"Timestamp\")\n", | |
| " + lp.ylab(\"Net Prem $K\")\n", | |
| " + leon_theme(LEON_COLOR_THEME, show_legend=False)\n", | |
| " + lp.theme(axis_title_x=lp.element_blank())\n", | |
| " )\n", | |
| "\n", | |
| " price_plot = (\n", | |
| " lp.ggplot(plot_ready_ohlc_dfs[ticker])\n", | |
| " + lp.aes(x=\"hms_str\", y=\"price\")\n", | |
| " + lp.geom_line(size=1, color=color_mapping[\"price\"])\n", | |
| " + lp.ggtitle(f\"{ticker} Price\")\n", | |
| " + lp.xlab(\"Timestamp\")\n", | |
| " + lp.ylab(f\"{ticker} Price\")\n", | |
| " + leon_theme(LEON_COLOR_THEME, show_legend=False)\n", | |
| " + lp.theme(\n", | |
| " axis_title_x=lp.element_blank(),\n", | |
| " plot_title=lp.element_blank(),\n", | |
| " )\n", | |
| " )\n", | |
| "\n", | |
| " plots = [npt_plot, price_plot]\n", | |
| " plot_grid = (\n", | |
| " lp.gggrid(\n", | |
| " plots,\n", | |
| " ncol=1,\n", | |
| " align=True\n", | |
| " )\n", | |
| " + lp.theme(plot_background=lp.element_rect(fill=LEON_COLOR_THEME[\"navy\"]))\n", | |
| " )\n", | |
| "\n", | |
| " grouped_plots[ticker] = plot_grid\n", | |
| "\n", | |
| "final_plots = []\n", | |
| "for _, plot_grid in grouped_plots.items():\n", | |
| " final_plots.append(plot_grid)\n", | |
| "\n", | |
| "dashboard = (\n", | |
| " lp.gggrid(final_plots, ncol=2, align=True)\n", | |
| " + lp.ggsize(900, 900)\n", | |
| " + lp.theme(plot_background=lp.element_rect(fill=LEON_COLOR_THEME[\"navy\"]))\n", | |
| ")\n", | |
| "dashboard.show()" | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "leon-cap-demo", | |
| "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.11.11" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 5 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment