{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "celkovy optimalizacni backtest na vetsim oknu 1 - 300\n",
    "a možná take to udělat jako parametr\n",
    "zkusit CV\n",
    "zobrazit nejak robustnost parametru"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Activating profile profile1\n",
       "</pre>\n"
      ],
      "text/plain": [
       "Activating profile profile1\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Profile profile1 loaded successfully.\n",
       "</pre>\n"
      ],
      "text/plain": [
       "Profile profile1 loaded successfully.\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Current values:\n",
       "<span style=\"font-weight: bold\">{</span>\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'AGG_EXCLUDED_TRADES'</span>: <span style=\"font-weight: bold\">[</span><span style=\"color: #008000; text-decoration-color: #008000\">'C'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'O'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'4'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'B'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'7'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'V'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'P'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'W'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'U'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'Z'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'F'</span><span style=\"font-weight: bold\">]</span>,\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'BT_DELAYS'</span>: <span style=\"font-weight: bold\">{</span>\n",
       "        <span style=\"color: #008000; text-decoration-color: #008000\">'trigger_to_strat'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.02</span>,\n",
       "        <span style=\"color: #008000; text-decoration-color: #008000\">'strat_to_sub'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.023</span>,\n",
       "        <span style=\"color: #008000; text-decoration-color: #008000\">'sub_to_fill'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.008</span>,\n",
       "        <span style=\"color: #008000; text-decoration-color: #008000\">'fill_to_not'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.023</span>,\n",
       "        <span style=\"color: #008000; text-decoration-color: #008000\">'limit_order_offset'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0</span>\n",
       "    <span style=\"font-weight: bold\">}</span>,\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'BT_FILL_CONDITION_BUY_LIMIT'</span>: <span style=\"font-weight: bold\">&lt;</span><span style=\"color: #ff00ff; text-decoration-color: #ff00ff; font-weight: bold\">FillCondition.SLOW:</span><span style=\"color: #000000; text-decoration-color: #000000\"> </span><span style=\"color: #008000; text-decoration-color: #008000\">'slow'</span><span style=\"color: #000000; text-decoration-color: #000000\">&gt;,</span>\n",
       "<span style=\"color: #000000; text-decoration-color: #000000\">    </span><span style=\"color: #008000; text-decoration-color: #008000\">'BT_FILL_CONDITION_SELL_LIMIT'</span><span style=\"color: #000000; text-decoration-color: #000000\">: &lt;FillCondition.SLOW: </span><span style=\"color: #008000; text-decoration-color: #008000\">'slow'</span><span style=\"font-weight: bold\">&gt;</span>,\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'BT_FILL_CONS_TRADES_REQUIRED'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">2</span>,\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'BT_FILL_LOG_SURROUNDING_TRADES'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">10</span>,\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'BT_FILL_PRICE_MARKET_ORDER_PREMIUM'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.005</span>,\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'COUNT_API_REQUESTS'</span>: <span style=\"color: #ff0000; text-decoration-color: #ff0000; font-style: italic\">False</span>,\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'GROUP_TRADES_WITH_TIMESTAMP_LESS_THAN'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.003</span>,\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'ILOG_SAVE_LEVEL_FROM'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">1</span>,\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'LIVE_DATA_FEED'</span>: <span style=\"color: #008000; text-decoration-color: #008000\">'sip'</span>,\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'NORMALIZED_TICK_BASE_PRICE'</span>: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">30.0</span>,\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'OFFLINE_MODE'</span>: <span style=\"color: #ff0000; text-decoration-color: #ff0000; font-style: italic\">False</span>,\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'PROD_SERVER_HOSTNAMES'</span>: <span style=\"font-weight: bold\">[</span><span style=\"color: #008000; text-decoration-color: #008000\">'tradingeastcoast'</span>, <span style=\"color: #008000; text-decoration-color: #008000\">'David-MacBook-Pro.local'</span><span style=\"font-weight: bold\">]</span>,\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'QUIET_MODE'</span>: <span style=\"color: #00ff00; text-decoration-color: #00ff00; font-style: italic\">True</span>,\n",
       "    <span style=\"color: #008000; text-decoration-color: #008000\">'TEST_SERVER_HOSTNAMES'</span>: <span style=\"font-weight: bold\">[</span><span style=\"color: #008000; text-decoration-color: #008000\">'tradingtest'</span><span style=\"font-weight: bold\">]</span>\n",
       "<span style=\"font-weight: bold\">}</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "Current values:\n",
       "\u001b[1m{\u001b[0m\n",
       "    \u001b[32m'AGG_EXCLUDED_TRADES'\u001b[0m: \u001b[1m[\u001b[0m\u001b[32m'C'\u001b[0m, \u001b[32m'O'\u001b[0m, \u001b[32m'4'\u001b[0m, \u001b[32m'B'\u001b[0m, \u001b[32m'7'\u001b[0m, \u001b[32m'V'\u001b[0m, \u001b[32m'P'\u001b[0m, \u001b[32m'W'\u001b[0m, \u001b[32m'U'\u001b[0m, \u001b[32m'Z'\u001b[0m, \u001b[32m'F'\u001b[0m\u001b[1m]\u001b[0m,\n",
       "    \u001b[32m'BT_DELAYS'\u001b[0m: \u001b[1m{\u001b[0m\n",
       "        \u001b[32m'trigger_to_strat'\u001b[0m: \u001b[1;36m0.02\u001b[0m,\n",
       "        \u001b[32m'strat_to_sub'\u001b[0m: \u001b[1;36m0.023\u001b[0m,\n",
       "        \u001b[32m'sub_to_fill'\u001b[0m: \u001b[1;36m0.008\u001b[0m,\n",
       "        \u001b[32m'fill_to_not'\u001b[0m: \u001b[1;36m0.023\u001b[0m,\n",
       "        \u001b[32m'limit_order_offset'\u001b[0m: \u001b[1;36m0\u001b[0m\n",
       "    \u001b[1m}\u001b[0m,\n",
       "    \u001b[32m'BT_FILL_CONDITION_BUY_LIMIT'\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mFillCondition.SLOW:\u001b[0m\u001b[39m \u001b[0m\u001b[32m'slow'\u001b[0m\u001b[39m>,\u001b[0m\n",
       "\u001b[39m    \u001b[0m\u001b[32m'BT_FILL_CONDITION_SELL_LIMIT'\u001b[0m\u001b[39m: <FillCondition.SLOW: \u001b[0m\u001b[32m'slow'\u001b[0m\u001b[1m>\u001b[0m,\n",
       "    \u001b[32m'BT_FILL_CONS_TRADES_REQUIRED'\u001b[0m: \u001b[1;36m2\u001b[0m,\n",
       "    \u001b[32m'BT_FILL_LOG_SURROUNDING_TRADES'\u001b[0m: \u001b[1;36m10\u001b[0m,\n",
       "    \u001b[32m'BT_FILL_PRICE_MARKET_ORDER_PREMIUM'\u001b[0m: \u001b[1;36m0.005\u001b[0m,\n",
       "    \u001b[32m'COUNT_API_REQUESTS'\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
       "    \u001b[32m'GROUP_TRADES_WITH_TIMESTAMP_LESS_THAN'\u001b[0m: \u001b[1;36m0.003\u001b[0m,\n",
       "    \u001b[32m'ILOG_SAVE_LEVEL_FROM'\u001b[0m: \u001b[1;36m1\u001b[0m,\n",
       "    \u001b[32m'LIVE_DATA_FEED'\u001b[0m: \u001b[32m'sip'\u001b[0m,\n",
       "    \u001b[32m'NORMALIZED_TICK_BASE_PRICE'\u001b[0m: \u001b[1;36m30.0\u001b[0m,\n",
       "    \u001b[32m'OFFLINE_MODE'\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
       "    \u001b[32m'PROD_SERVER_HOSTNAMES'\u001b[0m: \u001b[1m[\u001b[0m\u001b[32m'tradingeastcoast'\u001b[0m, \u001b[32m'David-MacBook-Pro.local'\u001b[0m\u001b[1m]\u001b[0m,\n",
       "    \u001b[32m'QUIET_MODE'\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n",
       "    \u001b[32m'TEST_SERVER_HOSTNAMES'\u001b[0m: \u001b[1m[\u001b[0m\u001b[32m'tradingtest'\u001b[0m\u001b[1m]\u001b[0m\n",
       "\u001b[1m}\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">config_handler.<span style=\"color: #808000; text-decoration-color: #808000\">active_profile</span>=<span style=\"color: #008000; text-decoration-color: #008000\">'profile1'</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "config_handler.\u001b[33mactive_profile\u001b[0m=\u001b[32m'profile1'\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">config handler initialized\n",
       "</pre>\n"
      ],
      "text/plain": [
       "config handler initialized\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Realtime Websocket connection will use FEED: sip and credential of ACCOUNT1\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<script>\n",
       "    if (document.body.dataset.jpThemeLight == \"false\" || // Jupyter Lab\n",
       "        document.body.dataset.vscodeThemeKind == \"vscode-dark\" || // VS Code\n",
       "        document.documentElement.dataset.theme == \"dark\" || // Jupyter Book\n",
       "        window.matchMedia('(prefers-color-scheme: dark)').matches) {\n",
       "        document.documentElement.classList.add('dark');\n",
       "    }\n",
       "    else {\n",
       "        document.documentElement.classList.remove('dark');\n",
       "    }\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<style>:root{--dt-row-selected: 13, 110, 253;--dt-row-selected-text: 255, 255, 255;--dt-row-selected-link: 9, 10, 11;--dt-row-stripe: 0, 0, 0;--dt-row-hover: 0, 0, 0;--dt-column-ordering: 0, 0, 0;--dt-html-background: white}:root.dark{--dt-html-background: rgb(33, 37, 41)}table.dataTable td.dt-control{text-align:center;cursor:pointer}table.dataTable td.dt-control:before{display:inline-block;box-sizing:border-box;content:\"\";border-top:5px solid transparent;border-left:10px solid rgba(0,0,0,.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable tr.dt-hasChild td.dt-control:before{border-top:10px solid rgba(0,0,0,.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}html.dark table.dataTable td.dt-control:before,:root[data-bs-theme=dark] table.dataTable td.dt-control:before{border-left-color:#ffffff80}html.dark table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before{border-top-color:#ffffff80;border-left-color:transparent}div.dt-scroll-body thead tr,div.dt-scroll-body tfoot tr{height:0}div.dt-scroll-body thead tr th,div.dt-scroll-body thead tr td,div.dt-scroll-body tfoot tr th,div.dt-scroll-body tfoot tr td{height:0!important;padding-top:0!important;padding-bottom:0!important;border-top-width:0px!important;border-bottom-width:0px!important}div.dt-scroll-body thead tr th div.dt-scroll-sizing,div.dt-scroll-body thead tr td div.dt-scroll-sizing,div.dt-scroll-body tfoot tr th div.dt-scroll-sizing,div.dt-scroll-body tfoot tr td div.dt-scroll-sizing{height:0!important;overflow:hidden!important}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before{position:absolute;display:block;bottom:50%;content:\"\\25b2\";content:\"\\25b2\"/\"\"}table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{position:absolute;display:block;top:50%;content:\"\\25bc\";content:\"\\25bc\"/\"\"}table.dataTable thead>tr>th.dt-orderable-asc,table.dataTable thead>tr>th.dt-orderable-desc,table.dataTable thead>tr>th.dt-ordering-asc,table.dataTable thead>tr>th.dt-ordering-desc,table.dataTable thead>tr>td.dt-orderable-asc,table.dataTable thead>tr>td.dt-orderable-desc,table.dataTable thead>tr>td.dt-ordering-asc,table.dataTable thead>tr>td.dt-ordering-desc{position:relative;padding-right:30px}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order{position:absolute;right:12px;top:0;bottom:0;width:12px}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:after,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:before,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{left:0;opacity:.125;line-height:9px;font-size:.8em}table.dataTable thead>tr>th.dt-orderable-asc,table.dataTable thead>tr>th.dt-orderable-desc,table.dataTable thead>tr>td.dt-orderable-asc,table.dataTable thead>tr>td.dt-orderable-desc{cursor:pointer}table.dataTable thead>tr>th.dt-orderable-asc:hover,table.dataTable thead>tr>th.dt-orderable-desc:hover,table.dataTable thead>tr>td.dt-orderable-asc:hover,table.dataTable thead>tr>td.dt-orderable-desc:hover{outline:2px solid rgba(0,0,0,.05);outline-offset:-2px}table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{opacity:.6}table.dataTable thead>tr>th.sorting_desc_disabled span.dt-column-order:after,table.dataTable thead>tr>th.sorting_asc_disabled span.dt-column-order:before,table.dataTable thead>tr>td.sorting_desc_disabled span.dt-column-order:after,table.dataTable thead>tr>td.sorting_asc_disabled span.dt-column-order:before{display:none}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}div.dt-scroll-body>table.dataTable>thead>tr>th,div.dt-scroll-body>table.dataTable>thead>tr>td{overflow:hidden}:root.dark table.dataTable thead>tr>th.dt-orderable-asc:hover,:root.dark table.dataTable thead>tr>th.dt-orderable-desc:hover,:root.dark table.dataTable thead>tr>td.dt-orderable-asc:hover,:root.dark table.dataTable thead>tr>td.dt-orderable-desc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>th.dt-orderable-asc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>th.dt-orderable-desc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>td.dt-orderable-asc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>td.dt-orderable-desc:hover{outline:2px solid rgba(255,255,255,.05)}div.dt-processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-22px;text-align:center;padding:2px;z-index:10}div.dt-processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dt-processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:#0d6efd;background:rgb(var(--dt-row-selected));animation-timing-function:cubic-bezier(0,1,1,0)}div.dt-processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dt-processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dt-processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dt-processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0)}to{transform:translate(24px)}}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable th,table.dataTable td{box-sizing:border-box}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable th.dt-empty,table.dataTable td.dt-empty{text-align:center;vertical-align:top}table.dataTable th.dt-type-numeric,table.dataTable th.dt-type-date,table.dataTable td.dt-type-numeric,table.dataTable td.dt-type-date{text-align:right}table.dataTable thead th,table.dataTable thead td,table.dataTable tfoot th,table.dataTable tfoot td,table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable{width:100%;margin:0 auto;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:700}table.dataTable>thead>tr>th,table.dataTable>thead>tr>td{padding:10px;border-bottom:1px solid rgba(0,0,0,.3)}table.dataTable>thead>tr>th:active,table.dataTable>thead>tr>td:active{outline:none}table.dataTable>tfoot>tr>th,table.dataTable>tfoot>tr>td{border-top:1px solid rgba(0,0,0,.3);padding:10px 10px 6px}table.dataTable>tbody>tr{background-color:transparent}table.dataTable>tbody>tr:first-child>*{border-top:none}table.dataTable>tbody>tr:last-child>*{border-bottom:none}table.dataTable>tbody>tr.selected>*{box-shadow:inset 0 0 0 9999px #0d6efde6;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.9);color:#fff;color:rgb(var(--dt-row-selected-text))}table.dataTable>tbody>tr.selected a{color:#090a0b;color:rgb(var(--dt-row-selected-link))}table.dataTable>tbody>tr>th,table.dataTable>tbody>tr>td{padding:8px 10px}table.dataTable.row-border>tbody>tr>*,table.dataTable.display>tbody>tr>*{border-top:1px solid rgba(0,0,0,.15)}table.dataTable.row-border>tbody>tr:first-child>*,table.dataTable.display>tbody>tr:first-child>*{border-top:none}table.dataTable.row-border>tbody>tr.selected+tr.selected>td,table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:#0d6efda6;border-top-color:rgba(var(--dt-row-selected),.65)}table.dataTable.cell-border>tbody>tr>*{border-top:1px solid rgba(0,0,0,.15);border-right:1px solid rgba(0,0,0,.15)}table.dataTable.cell-border>tbody>tr>*:first-child{border-left:1px solid rgba(0,0,0,.15)}table.dataTable.cell-border>tbody>tr:first-child>*{border-top:1px solid rgba(0,0,0,.3)}table.dataTable.stripe>tbody>tr:nth-child(odd)>*,table.dataTable.display>tbody>tr:nth-child(odd)>*{box-shadow:inset 0 0 0 9999px #00000006;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-stripe),.023)}table.dataTable.stripe>tbody>tr:nth-child(odd).selected>*,table.dataTable.display>tbody>tr:nth-child(odd).selected>*{box-shadow:inset 0 0 0 9999px #0d6efdeb;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.923)}table.dataTable.hover>tbody>tr:hover>*,table.dataTable.display>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px #00000009;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover),.035)}table.dataTable.hover>tbody>tr.selected:hover>*,table.dataTable.display>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px #0d6efd!important;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),1)!important}table.dataTable.order-column>tbody tr>.sorting_1,table.dataTable.order-column>tbody tr>.sorting_2,table.dataTable.order-column>tbody tr>.sorting_3,table.dataTable.display>tbody tr>.sorting_1,table.dataTable.display>tbody tr>.sorting_2,table.dataTable.display>tbody tr>.sorting_3{box-shadow:inset 0 0 0 9999px #00000005;box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering),.019)}table.dataTable.order-column>tbody tr.selected>.sorting_1,table.dataTable.order-column>tbody tr.selected>.sorting_2,table.dataTable.order-column>tbody tr.selected>.sorting_3,table.dataTable.display>tbody tr.selected>.sorting_1,table.dataTable.display>tbody tr.selected>.sorting_2,table.dataTable.display>tbody tr.selected>.sorting_3{box-shadow:inset 0 0 0 9999px #0d6efdea;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.919)}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_1,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_1{box-shadow:inset 0 0 0 9999px #0000000e;box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering),.054)}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_2,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_2{box-shadow:inset 0 0 0 9999px #0000000c;box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering),.047)}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_3,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_3{box-shadow:inset 0 0 0 9999px #0000000a;box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering),.039)}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_1,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_1{box-shadow:inset 0 0 0 9999px #0d6efdf3;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.954)}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_2,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_2{box-shadow:inset 0 0 0 9999px #0d6efdf1;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.947)}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_3,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_3{box-shadow:inset 0 0 0 9999px #0d6efdef;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.939)}table.dataTable.display>tbody>tr.even>.sorting_1,table.dataTable.order-column.stripe>tbody>tr.even>.sorting_1{box-shadow:inset 0 0 0 9999px #00000005;box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering),.019)}table.dataTable.display>tbody>tr.even>.sorting_2,table.dataTable.order-column.stripe>tbody>tr.even>.sorting_2{box-shadow:inset 0 0 0 9999px #00000003;box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering),.011)}table.dataTable.display>tbody>tr.even>.sorting_3,table.dataTable.order-column.stripe>tbody>tr.even>.sorting_3{box-shadow:inset 0 0 0 9999px #00000001;box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering),.003)}table.dataTable.display>tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_1{box-shadow:inset 0 0 0 9999px #0d6efdea;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.919)}table.dataTable.display>tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_2{box-shadow:inset 0 0 0 9999px #0d6efde8;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.911)}table.dataTable.display>tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_3{box-shadow:inset 0 0 0 9999px #0d6efde6;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.903)}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{box-shadow:inset 0 0 0 9999px #00000015;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover),.082)}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{box-shadow:inset 0 0 0 9999px #00000013;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover),.074)}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{box-shadow:inset 0 0 0 9999px #00000010;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover),.062)}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{box-shadow:inset 0 0 0 9999px #0d6efdfa;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.982)}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{box-shadow:inset 0 0 0 9999px #0d6efdf8;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.974)}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{box-shadow:inset 0 0 0 9999px #0d6efdf5;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected),.962)}table.dataTable.compact thead th,table.dataTable.compact thead td,table.dataTable.compact tfoot th,table.dataTable.compact tfoot td,table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}div.dt-container{position:relative;clear:both}div.dt-container div.dt-layout-row{display:table;clear:both;width:100%}div.dt-container div.dt-layout-row.dt-layout-table,div.dt-container div.dt-layout-row.dt-layout-table div.dt-layout-cell{display:block}div.dt-container div.dt-layout-cell{display:table-cell;vertical-align:middle;padding:5px 0}div.dt-container div.dt-layout-cell.dt-full{text-align:center}div.dt-container div.dt-layout-cell.dt-start{text-align:left}div.dt-container div.dt-layout-cell.dt-end{text-align:right}div.dt-container div.dt-layout-cell:empty{display:none}div.dt-container .dt-search input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit;margin-left:3px}div.dt-container .dt-input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit}div.dt-container select.dt-input{padding:4px}div.dt-container .dt-paging .dt-paging-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none!important;cursor:pointer;color:inherit!important;border:1px solid transparent;border-radius:2px;background:transparent}div.dt-container .dt-paging .dt-paging-button.current,div.dt-container .dt-paging .dt-paging-button.current:hover{color:inherit!important;border:1px solid rgba(0,0,0,.3);background-color:#0000000d;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,rgba(230,230,230,.05)),color-stop(100%,rgba(0,0,0,.05)));background:-webkit-linear-gradient(top,rgba(230,230,230,.05) 0%,rgba(0,0,0,.05) 100%);background:-moz-linear-gradient(top,rgba(230,230,230,.05) 0%,rgba(0,0,0,.05) 100%);background:-ms-linear-gradient(top,rgba(230,230,230,.05) 0%,rgba(0,0,0,.05) 100%);background:-o-linear-gradient(top,rgba(230,230,230,.05) 0%,rgba(0,0,0,.05) 100%);background:linear-gradient(to bottom,#e6e6e60d,#0000000d)}div.dt-container .dt-paging .dt-paging-button.disabled,div.dt-container .dt-paging .dt-paging-button.disabled:hover,div.dt-container .dt-paging .dt-paging-button.disabled:active{cursor:default;color:#00000080!important;border:1px solid transparent;background:transparent;box-shadow:none}div.dt-container .dt-paging .dt-paging-button:hover{color:#fff!important;border:1px solid #111;background-color:#111;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#585858),color-stop(100%,#111));background:-webkit-linear-gradient(top,#585858 0%,#111 100%);background:-moz-linear-gradient(top,#585858 0%,#111 100%);background:-ms-linear-gradient(top,#585858 0%,#111 100%);background:-o-linear-gradient(top,#585858 0%,#111 100%);background:linear-gradient(to bottom,#585858,#111)}div.dt-container .dt-paging .dt-paging-button:active{outline:none;background-color:#0c0c0c;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#2b2b2b),color-stop(100%,#0c0c0c));background:-webkit-linear-gradient(top,#2b2b2b 0%,#0c0c0c 100%);background:-moz-linear-gradient(top,#2b2b2b 0%,#0c0c0c 100%);background:-ms-linear-gradient(top,#2b2b2b 0%,#0c0c0c 100%);background:-o-linear-gradient(top,#2b2b2b 0%,#0c0c0c 100%);background:linear-gradient(to bottom,#2b2b2b,#0c0c0c);box-shadow:inset 0 0 3px #111}div.dt-container .dt-paging .ellipsis{padding:0 1em}div.dt-container .dt-length,div.dt-container .dt-search,div.dt-container .dt-info,div.dt-container .dt-processing,div.dt-container .dt-paging{color:inherit}div.dt-container .dataTables_scroll{clear:both}div.dt-container .dataTables_scroll div.dt-scroll-body{-webkit-overflow-scrolling:touch}div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>th,div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>td,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>th,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>td{vertical-align:middle}div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>th>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>td>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>th>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}div.dt-container.dt-empty-footer tbody>tr:last-child>*{border-bottom:1px solid rgba(0,0,0,.3)}div.dt-container.dt-empty-footer .dt-scroll-body{border-bottom:1px solid rgba(0,0,0,.3)}div.dt-container.dt-empty-footer .dt-scroll-body tbody>tr:last-child>*{border-bottom:none}@media screen and (max-width: 767px){div.dt-container div.dt-layout-row,div.dt-container div.dt-layout-cell{display:block}div.dt-container div.dt-layout-cell.dt-full,div.dt-container div.dt-layout-cell.dt-start,div.dt-container div.dt-layout-cell.dt-end{text-align:center}}@media screen and (max-width: 640px){.dt-container .dt-length,.dt-container .dt-search{float:none;text-align:center}.dt-container .dt-search{margin-top:.5em}}html.dark{--dt-row-hover: 255, 255, 255;--dt-row-stripe: 255, 255, 255;--dt-column-ordering: 255, 255, 255}html.dark table.dataTable>thead>tr>th,html.dark table.dataTable>thead>tr>td{border-bottom:1px solid rgb(89,91,94)}html.dark table.dataTable>thead>tr>th:active,html.dark table.dataTable>thead>tr>td:active{outline:none}html.dark table.dataTable>tfoot>tr>th,html.dark table.dataTable>tfoot>tr>td{border-top:1px solid rgb(89,91,94)}html.dark table.dataTable.row-border>tbody>tr>*,html.dark table.dataTable.display>tbody>tr>*{border-top:1px solid rgb(64,67,70)}html.dark table.dataTable.row-border>tbody>tr:first-child>*,html.dark table.dataTable.display>tbody>tr:first-child>*{border-top:none}html.dark table.dataTable.row-border>tbody>tr.selected+tr.selected>td,html.dark table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:#0d6efda6;border-top-color:rgba(var(--dt-row-selected),.65)}html.dark table.dataTable.cell-border>tbody>tr>th,html.dark table.dataTable.cell-border>tbody>tr>td{border-top:1px solid rgb(64,67,70);border-right:1px solid rgb(64,67,70)}html.dark table.dataTable.cell-border>tbody>tr>th:first-child,html.dark table.dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid rgb(64,67,70)}html.dark .dt-container.dt-empty-footer table.dataTable{border-bottom:1px solid rgb(89,91,94)}html.dark .dt-container .dt-search input,html.dark .dt-container .dt-length select{border:1px solid rgba(255,255,255,.2);background-color:var(--dt-html-background)}html.dark .dt-container .dt-paging .dt-paging-button.current,html.dark .dt-container .dt-paging .dt-paging-button.current:hover{border:1px solid rgb(89,91,94);background:#ffffff26}html.dark .dt-container .dt-paging .dt-paging-button.disabled,html.dark .dt-container .dt-paging .dt-paging-button.disabled:hover,html.dark .dt-container .dt-paging .dt-paging-button.disabled:active{color:#666!important}html.dark .dt-container .dt-paging .dt-paging-button:hover{border:1px solid rgb(53,53,53);background:#353535}html.dark .dt-container .dt-paging .dt-paging-button:active{background:#3a3a3a}*[dir=rtl] table.dataTable thead th,*[dir=rtl] table.dataTable thead td,*[dir=rtl] table.dataTable tfoot th,*[dir=rtl] table.dataTable tfoot td{text-align:right}*[dir=rtl] table.dataTable th.dt-type-numeric,*[dir=rtl] table.dataTable th.dt-type-date,*[dir=rtl] table.dataTable td.dt-type-numeric,*[dir=rtl] table.dataTable td.dt-type-date{text-align:left}*[dir=rtl] div.dt-container div.dt-layout-cell.dt-start{text-align:right}*[dir=rtl] div.dt-container div.dt-layout-cell.dt-end{text-align:left}*[dir=rtl] div.dt-container div.dt-search input{margin:0 3px 0 0}@keyframes dtb-spinner{to{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{to{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{to{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{to{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dataTables_wrapper{position:relative}div.dt-buttons{position:initial}div.dt-buttons .dt-button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:#fff;border-radius:.75em;box-shadow:3px 4px 10px 1px #000c;text-align:center;z-index:2003;overflow:hidden}div.dt-button-info h2{padding:2rem 2rem 1rem;margin:0;font-weight:400}div.dt-button-info>div{padding:1em 2em 2em}div.dtb-popover-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:2003}button.dtb-hide-drop{display:none!important}div.dt-button-collection-title{text-align:center;padding:.3em .5em .5em;margin-left:.5em;margin-right:.5em;font-size:.9em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection-title:empty{display:none}span.dt-button-spacer{display:inline-block;margin:.5em;white-space:nowrap}span.dt-button-spacer.bar{border-left:1px solid rgba(0,0,0,.3);vertical-align:middle;padding-left:.5em}span.dt-button-spacer.bar:empty{height:1em;width:1px;padding-left:0}div.dt-button-collection .dt-button-active{padding-right:3em}div.dt-button-collection .dt-button-active:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:\"\\2713\";color:inherit}div.dt-button-collection .dt-button-active.dt-button-split{padding-right:0}div.dt-button-collection .dt-button-active.dt-button-split:after{display:none}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child{padding-right:3em}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:\"\\2713\";color:inherit}div.dt-button-collection .dt-button-active-a a{padding-right:3em}div.dt-button-collection .dt-button-active-a a:after{position:absolute;right:1em;display:inline-block;content:\"\\2713\";color:inherit}div.dt-button-collection span.dt-button-spacer{width:100%;font-size:.9em;text-align:center;margin:.5em 0}div.dt-button-collection span.dt-button-spacer:empty{height:0;width:100%}div.dt-button-collection span.dt-button-spacer.bar{border-left:none;border-bottom:1px solid rgba(0,0,0,.1);padding-left:0}@media print{table.dataTable tr>*{box-shadow:none!important}}html.dark div.dt-button-info{background-color:var(--dt-html-background);border:1px solid rgba(255,255,255,.15)}div.dt-buttons>.dt-button,div.dt-buttons>div.dt-button-split .dt-button{position:relative;display:inline-block;box-sizing:border-box;margin-left:.167em;margin-right:.167em;margin-bottom:.333em;padding:.5em 1em;border:1px solid rgba(0,0,0,.3);border-radius:2px;cursor:pointer;font-size:.88em;line-height:1.6em;color:inherit;white-space:nowrap;overflow:hidden;background-color:#0000001a;background:linear-gradient(to bottom,#e6e6e61a,#0000001a);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr=\"rgba(230, 230, 230, 0.1)\",EndColorStr=\"rgba(0, 0, 0, 0.1)\");-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;outline:none;text-overflow:ellipsis}div.dt-buttons>.dt-button:first-child,div.dt-buttons>div.dt-button-split .dt-button:first-child{margin-left:0}div.dt-buttons>.dt-button.disabled,div.dt-buttons>div.dt-button-split .dt-button.disabled{cursor:default;opacity:.4}div.dt-buttons>.dt-button.dt-button-active:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background-color:#0000001a;background:linear-gradient(to bottom,#b3b3b31a,#0000001a);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr=\"rgba(179, 179, 179, 0.1)\",EndColorStr=\"rgba(0, 0, 0, 0.1)\");box-shadow:inset 1px 1px 3px #999}div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){box-shadow:inset 1px 1px 3px #999;background-color:#0000001a;background:linear-gradient(to bottom,#8080801a,#0000001a);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr=\"rgba(128, 128, 128, 0.1)\",EndColorStr=\"rgba(0, 0, 0, 0.1)\")}div.dt-buttons>.dt-button:hover,div.dt-buttons>div.dt-button-split .dt-button:hover{text-decoration:none}div.dt-buttons>.dt-button:hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){border:1px solid #666;background-color:#0000001a;background:linear-gradient(to bottom,#9999991a,#0000001a);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr=\"rgba(153, 153, 153, 0.1)\",EndColorStr=\"rgba(0, 0, 0, 0.1)\")}div.dt-buttons>.dt-button:focus:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(53,132,228)}div.dt-buttons>.dt-button embed,div.dt-buttons>div.dt-button-split .dt-button embed{outline:none}div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(0,0,0,.15);border-top-right-radius:0;border-bottom-right-radius:0}div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid #666}div.dt-buttons>div.dt-button-split .dt-button:last-child{border-left:1px solid transparent;border-top-left-radius:0;border-bottom-left-radius:0}div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid #666}div.dt-buttons span.dt-button-down-arrow{position:relative;top:-2px;font-size:10px;padding-left:10px;line-height:1em;opacity:.6}div.dt-buttons div.dt-button-split{display:inline-block}div.dt-buttons div.dt-button-split .dt-button:first-child{margin-right:0}div.dt-buttons div.dt-button-split .dt-button:last-child{margin-left:-1px;padding-left:.75em;padding-right:.75em;z-index:2}div.dt-buttons div.dt-button-split .dt-button:last-child span{padding-left:0}div.dt-button-collection{position:absolute;top:0;left:0;width:200px;margin-top:3px;margin-bottom:3px;padding:.75em 0;border:1px solid rgba(0,0,0,.4);background-color:#fff;overflow:hidden;z-index:2002;border-radius:5px;box-shadow:3px 4px 10px 1px #0000004d;box-sizing:border-box}div.dt-button-collection .dt-button{position:relative;left:0;right:0;width:100%;display:block;float:none;background:none;margin:0;padding:.5em 1em;border:none;text-align:left;cursor:pointer;color:inherit}div.dt-button-collection .dt-button.dt-button-active{background:none;box-shadow:none}div.dt-button-collection .dt-button.disabled{cursor:default;opacity:.4}div.dt-button-collection .dt-button:hover:not(.disabled){border:none;background:#9999991a;box-shadow:none}div.dt-button-collection div.dt-button-split{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:stretch}div.dt-button-collection div.dt-button-split button.dt-button{margin:0;display:inline-block;width:0;flex-grow:1;flex-shrink:0;flex-basis:50px}div.dt-button-collection div.dt-button-split button.dt-button-split-drop{min-width:33px;flex:0}div.dt-button-collection.fixed .dt-button{border-radius:.25em;background:#ffffff1a}div.dt-button-collection.fixed{position:fixed;display:block;top:50%;left:50%;margin-left:-75px;border-radius:5px;background-color:#fff;padding:.5em}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection.fixed.columns{margin-left:-409px}@media screen and (max-width: 1024px){div.dt-button-collection.fixed.columns{margin-left:-308px}}@media screen and (max-width: 640px){div.dt-button-collection.fixed.columns{margin-left:-203px}}@media screen and (max-width: 460px){div.dt-button-collection.fixed.columns{margin-left:-100px}}div.dt-button-collection.fixed>:last-child{max-height:100vh;overflow:auto}div.dt-button-collection.two-column>:last-child,div.dt-button-collection.three-column>:last-child,div.dt-button-collection.four-column>:last-child{display:block!important;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}div.dt-button-collection.two-column>:last-child>*,div.dt-button-collection.three-column>:last-child>*,div.dt-button-collection.four-column>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-collection.columns{width:auto}div.dt-button-collection.columns>:last-child{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:6px;width:818px;padding-bottom:1px}div.dt-button-collection.columns>:last-child .dt-button{min-width:200px;flex:0 1;margin:0}div.dt-button-collection.columns.dtb-b3>:last-child,div.dt-button-collection.columns.dtb-b2>:last-child,div.dt-button-collection.columns.dtb-b1>:last-child{justify-content:space-between}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:1 1 32%}div.dt-button-collection.columns.dtb-b2 .dt-button{flex:1 1 48%}div.dt-button-collection.columns.dtb-b1 .dt-button{flex:1 1 100%}@media screen and (max-width: 1024px){div.dt-button-collection.columns>:last-child{width:612px}}@media screen and (max-width: 640px){div.dt-button-collection.columns>:last-child{width:406px}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:0 1 32%}}@media screen and (max-width: 460px){div.dt-button-collection.columns>:last-child{width:200px}}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000b3;background:radial-gradient(ellipse farthest-corner at center,#0000004d,#000000b3);z-index:2001}.dt-button.processing{color:#0003}.dt-button.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:\" \";border:2px solid rgb(40,40,40);border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1.5s infinite linear;-o-animation:dtb-spinner 1.5s infinite linear;-ms-animation:dtb-spinner 1.5s infinite linear;-webkit-animation:dtb-spinner 1.5s infinite linear;-moz-animation:dtb-spinner 1.5s infinite linear}@media screen and (max-width: 640px){div.dt-buttons{float:none!important;text-align:center}}html.dark div.dt-buttons>.dt-button,html.dark div.dt-buttons>div.dt-button-split .dt-button{border:1px solid rgb(89,91,94);background:#ffffff26}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background:#b3b3b326;box-shadow:inset 1px 1px 2px #000}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){background:#80808026;box-shadow:inset 1px 1px 3px #000}html.dark div.dt-buttons>.dt-button:hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){background:#b3b3b326}html.dark div.dt-buttons>.dt-button:focus:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(110,168,254)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(255,255,255,.1)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid rgb(89,91,94)}html.dark div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid rgb(89,91,94)}html.dark div.dt-button-collection{border:1px solid rgba(255,255,255,.15);background-color:#212529;box-shadow:3px 4px 10px 1px #000c}table.dataTable thead tr>.dtfc-fixed-start,table.dataTable thead tr>.dtfc-fixed-end,table.dataTable tfoot tr>.dtfc-fixed-start,table.dataTable tfoot tr>.dtfc-fixed-end{top:0;bottom:0;z-index:3;background-color:#fff}table.dataTable tbody tr>.dtfc-fixed-start,table.dataTable tbody tr>.dtfc-fixed-end{z-index:1;background-color:#fff}table.dataTable tr>.dtfc-fixed-left:after,table.dataTable tr>.dtfc-fixed-right:after{position:absolute;top:0;bottom:0;width:10px;transition:box-shadow .3s;content:\"\";pointer-events:none}table.dataTable tr>.dtfc-fixed-left:after{right:0;transform:translate(100%)}table.dataTable tr>.dtfc-fixed-right:after{left:0;transform:translate(-80%)}table.dataTable.dtfc-scrolling-left tr>.dtfc-fixed-left:after{box-shadow:inset 10px 0 8px -8px #0003}table.dataTable.dtfc-scrolling-right tr>.dtfc-fixed-right:after{box-shadow:inset -10px 0 8px -8px #0003}table.dataTable.dtfc-scrolling-right tr>.dtfc-fixed-right+.dtfc-fixed-right:after{box-shadow:none}div.dt-scroll,div.dtfh-floatingparent{position:relative}div.dt-scroll div.dtfc-top-blocker,div.dt-scroll div.dtfc-bottom-blocker,div.dtfh-floatingparent div.dtfc-top-blocker,div.dtfh-floatingparent div.dtfc-bottom-blocker{position:absolute;background-color:#fff}html.dark table.dataTable thead tr>.dtfc-fixed-start,html.dark table.dataTable thead tr>.dtfc-fixed-end,html.dark table.dataTable tfoot tr>.dtfc-fixed-start,html.dark table.dataTable tfoot tr>.dtfc-fixed-end{background-color:var(--dt-html-background)}html.dark table.dataTable tbody tr>.dtfc-fixed-start,html.dark table.dataTable tbody tr>.dtfc-fixed-end{background-color:var(--dt-html-background)}html.dark table.dataTable.dtfc-scrolling-left tbody>tr>.dtfc-fixed-left:after{box-shadow:inset 10px 0 8px -8px #0000004d}html.dark table.dataTable.dtfc-scrolling-right tbody>tr>.dtfc-fixed-right:after{box-shadow:inset -10px 0 8px -8px #0000004d}html.dark table.dataTable.dtfc-scrolling-right tbody>tr>.dtfc-fixed-right+.dtfc-fixed-right:after{box-shadow:none}html.dark div.dtfc-top-blocker,html.dark div.dtfc-bottom-blocker{background-color:var(--dt-html-background)}table.dataTable tbody th.focus,table.dataTable tbody td.focus{outline:2px solid #36f;outline-offset:-2px}table.dataTable tbody tr.selected th.focus,table.dataTable tbody tr.selected td.focus{outline-color:#03c}div.dtk-focus-alt table.dataTable tbody th.focus,div.dtk-focus-alt table.dataTable tbody td.focus{outline:2px solid #ff8b33;outline-offset:-2px}html.dark table.dataTable tbody th.focus,html.dark table.dataTable tbody td.focus{outline-color:#0d6efd}html.dark table.dataTable tbody tr.selected th.focus,html.dark table.dataTable tbody tr.selected td.focus{outline-color:#0143a3}html.dark div.dtk-focus-alt table.dataTable tbody th.focus,html.dark div.dtk-focus-alt table.dataTable tbody td.focus{outline-color:#ff8b33}table.dataTable tr.dtrg-group th{background-color:#0000001a;text-align:left}table.dataTable tr.dtrg-group.dtrg-level-0 th{font-weight:700}table.dataTable tr.dtrg-group.dtrg-level-1 th,table.dataTable tr.dtrg-group.dtrg-level-2 th,table.dataTable tr.dtrg-group.dtrg-level-3 th,table.dataTable tr.dtrg-group.dtrg-level-4 th,table.dataTable tr.dtrg-group.dtrg-level-5 th{background-color:#0000000d;padding-top:.25em;padding-bottom:.25em;padding-left:2em;font-size:.9em}table.dataTable tr.dtrg-group.dtrg-level-2 th{background-color:#00000003;padding-left:2.5em}table.dataTable tr.dtrg-group.dtrg-level-3 th{background-color:#00000003;padding-left:3em}table.dataTable tr.dtrg-group.dtrg-level-4 th{background-color:#00000003;padding-left:3.5em}table.dataTable tr.dtrg-group.dtrg-level-5 th{background-color:#00000003;padding-left:4em}html.dark table.dataTable tr.dtrg-group th{background-color:#ffffff1a}html.dark table.dataTable tr.dtrg-group.dtrg-level-1 th{background-color:#ffffff0d}html.dark table.dataTable tr.dtrg-group.dtrg-level-2 th,html.dark table.dataTable tr.dtrg-group.dtrg-level-3 th,html.dark table.dataTable tr.dtrg-group.dtrg-level-4 th,html.dark table.dataTable tr.dtrg-group.dtrg-level-5 th{background-color:#ffffff03}div.dt-button-collection{overflow:visible!important;z-index:2002!important}div.dt-button-collection div.dtsb-searchBuilder{padding-left:1em!important;padding-right:1em!important}div.dt-button-collection.dtb-collection-closeable div.dtsb-titleRow{padding-right:40px}.dtsb-greyscale{border:1px solid #cecece!important}div.dtsb-logicContainer .dtsb-greyscale{border:none!important}div.dtsb-searchBuilder{justify-content:space-evenly;cursor:default;margin-bottom:1em;text-align:left}div.dtsb-searchBuilder button.dtsb-button,div.dtsb-searchBuilder select{font-size:1em}div.dtsb-searchBuilder div.dtsb-titleRow{justify-content:space-evenly;margin-bottom:.5em}div.dtsb-searchBuilder div.dtsb-titleRow div.dtsb-title{display:inline-block;padding-top:14px}div.dtsb-searchBuilder div.dtsb-titleRow div.dtsb-title:empty{display:inline}div.dtsb-searchBuilder div.dtsb-titleRow button.dtsb-clearAll{float:right;margin-bottom:.8em}div.dtsb-searchBuilder div.dtsb-vertical .dtsb-value,div.dtsb-searchBuilder div.dtsb-vertical .dtsb-data,div.dtsb-searchBuilder div.dtsb-vertical .dtsb-condition{display:block}div.dtsb-searchBuilder div.dtsb-group{position:relative;clear:both;margin-bottom:.8em}div.dtsb-searchBuilder div.dtsb-group button.dtsb-search{float:right}div.dtsb-searchBuilder div.dtsb-group button.dtsb-clearGroup{margin:2px;text-align:center;padding:0}div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);position:absolute;margin-top:.8em;margin-right:.8em}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria{margin-bottom:.8em;display:flex;justify-content:start;flex-flow:row wrap}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-dropDown,div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria input.dtsb-input{padding:.4em;margin-right:.8em;min-width:5em;max-width:20em;color:inherit;font-size:1em}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-dropDown option.dtsb-notItalic,div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria input.dtsb-input option.dtsb-notItalic{font-style:normal}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-italic{font-style:italic}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont{flex:1;white-space:nowrap}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont span.dtsb-joiner{margin-right:.8em}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont input.dtsb-value{width:33%}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont select,div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont input{height:100%;box-sizing:border-box}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer{margin-left:auto;display:inline-block}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-delete,div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-right,div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-left{margin-right:.8em}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-delete:last-child,div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-right:last-child,div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-left:last-child{margin-right:0}@media screen and (max-width: 550px){div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria{display:flex;flex-flow:none;flex-direction:column;justify-content:start;padding-right:calc(35px + .8em);margin-bottom:0}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:not(:first-child),div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:not(:nth-child(2)),div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:not(:last-child){padding-top:.8em}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:first-child,div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:nth-child(2),div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:last-child{padding-top:0}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-dropDown,div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria input.dtsb-input{max-width:none;width:100%;margin-bottom:.8em;margin-right:.8em}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont{margin-right:.8em}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer{position:absolute;width:35px;display:flex;flex-wrap:wrap-reverse;right:0}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button{margin-right:0!important}}div.dtsb-searchBuilder button,div.dtsb-searchBuilder select.dtsb-dropDown,div.dtsb-searchBuilder input{background-color:#f9f9f9}div.dtsb-searchBuilder button.dtsb-button{position:relative;display:inline-block;box-sizing:border-box;padding:.5em 1em;border:1px solid rgba(0,0,0,.3);border-radius:2px;cursor:pointer;font-size:.88em;line-height:1.6em;color:inherit;white-space:nowrap;overflow:hidden;background-color:#0000001a;background:linear-gradient(to bottom,#e6e6e61a,#0000001a);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;outline:none;text-overflow:ellipsis}div.dtsb-searchBuilder button.dtsb-button:hover{background-color:#cecece;cursor:pointer}div.dtsb-searchBuilder div.dtsb-logicContainer{border:1px solid rgba(0,0,0,.3);background-color:#0000001a;background:linear-gradient(to right,#e6e6e61a,#0000001a)}div.dtsb-searchBuilder div.dtsb-logicContainer button{border:1px solid transparent;background:transparent}div.dtsb-searchBuilder button.dtsb-clearGroup{min-width:2em;padding:0}div.dtsb-searchBuilder button.dtsb-iptbtn{min-width:100px;text-align:left}div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer{border:1px solid;border-color:#cecece;border-radius:3px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer button.dtsb-logic{border:none;border-radius:0;flex-grow:1;flex-shrink:0;flex-basis:3em;margin:0}div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer button.dtsb-clearGroup{border:none;border-radius:0;width:2em;margin:0}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-dropDown,div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria input.dtsb-input{border:1px solid;border-radius:3px}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-condition{border-color:#48b13c}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-data{border-color:#e70f00}div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-value,div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria input.dtsb-value{border-color:#0069ba}html.dark div.dtsb-searchBuilder button.dtsb-button,html.dark div.dtsb-searchBuilder select.dtsb-dropDown,html.dark div.dtsb-searchBuilder input.dtsb-input{background-color:#424549!important;color-scheme:dark}html.dark div.dtsb-searchBuilder button.dtsb-button{border:1px solid rgb(89,91,94);background:#ffffff26}html.dark div.dtsb-searchBuilder button.dtsb-button:hover{background:#b3b3b326}html.dark div.dtsb-searchBuilder div.dtsb-logicContainer{border:1px solid rgb(89,91,94)}html.dark div.dtsb-searchBuilder .dtsb-greyscale{border-color:#fff3!important}div.dtsp-topRow{display:flex;flex-direction:row;flex-wrap:nowrap;border:2px solid rgba(0,0,0,0);border-radius:3px;justify-content:space-around;align-content:flex-start;align-items:flex-start}div.dtsp-topRow input.dtsp-search{text-overflow:ellipsis;min-width:50px;flex-basis:90px;max-width:none}div.dtsp-topRow input.dtsp-search::placeholder{color:inherit}div.dtsp-topRow div.dtsp-subRow1{display:flex;flex-direction:row;flex-wrap:nowrap;flex:1 1 auto}div.dtsp-topRow div.dtsp-subRow1 div.dtsp-searchCont{position:relative;width:100%}div.dtsp-topRow div.dtsp-subRow1 input{padding-right:2em;width:100%!important;box-sizing:border-box;font-size:1em}div.dtsp-topRow div.dtsp-subRow1 input[disabled=disabled]{background-color:transparent;border:none;cursor:initial;box-shadow:none;padding-bottom:0;padding-top:0;min-height:1em;height:fit-content;box-sizing:content-box}div.dtsp-topRow div.dtsp-subRow1 input[disabled=disabled]::placeholder{color:initial;opacity:1}div.dtsp-topRow div.dtsp-subRow1 button.dtsp-searchIcon{position:absolute;top:0;right:0;bottom:0}div.dtsp-topRow div.dtsp-subRow1 button.dtsp-searchIcon span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABbmlDQ1BpY2MAACiRdZE7SwNBFIU/EyWikRRaiFhsoWKhEBREO42FTZAQFYza7G5eQhKX3QQJtoKNhWAh2vgq/AfaCrYKgqAIIhb+Al+NhPVOEkiQZJbZ+3FmzmXmDHjCGTPrtAYhm8vb0bmQthxb0Xzv+PHRxRSabjrWTCQSpun4eaRF1YdR1av5voajM55wTGhpF54wLTsvPC0c3sxbineFe8y0Hhc+ER6x5YDCt0o3KvymOFXhL8X2YnQWPKqnlqpjo47NtJ0VHhYeyGYKZvU86ib+RG5pQWqfzH4coswRQsOgwDoZ8oxKzUlmjX3Bsm+eDfGY8rcoYosjRVq8I6IWpGtCalL0hHwZiir3/3k6yfGxSnd/CNpeXfdzEHz7UNpz3d9T1y2dgfcFrnM1/4bkNPkt+l5NGziGwDZc3tQ04wCudqD32dJtvSx5ZXqSSfi4gK4YdN9Dx2olq+o650+wuCVPdAeHRzAk+wNrfw8JaBFXEnV+AAAACXBIWXMAAA9hAAAPYQGoP6dpAAABMUlEQVQoU6XRr0vDQRjH8akoM4iIjqGoOIZ5oIjB5XWxajaYDGLSIhhNYjcPRDSJwbQNw+L+BNGgYYo/5pT5/shz8vDlBgMPXux7z3N3z+25VOofYyCyd4ZYCavI4gXPsRp9LqiDdrEMH+8wv8Vh8gBfWclFPOEUN3hAHjlMoRa7wTzBS5xgKLFglPkZLjDic6HyDsEMNvGR2Nxifoci3tEI+X770JU0XmPXIlax+LTPh83fFox1X6kxyzdjm9UcdXi9S+Vti6svfyNULhNR9TVsYNhW6Ff9KKCNR7/Zv6eeaQ+6+qcdpu9BqGlp1HFgud+FYdzzUcUExu0Q/cdzHGEFetIlXKPjK/sbqYoOftMiS+j9jzEJPd1Wt+5+kdR/9EM9ucIC5jCbyPc01Q32kfsBppYz3hYFcCwAAAAASUVORK5CYII=)!important;background-repeat:no-repeat;background-position:center;background-size:12px}div.dtsp-topRow div.dtsp-subRow2{white-space:nowrap;flex:0 0 auto}div.dtsp-topRow button>span{display:inline-block;height:100%;width:100%}div.dtsp-topRow button.dtsp-nameButton span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC)!important;background-repeat:no-repeat;background-position:center;background-size:23px;vertical-align:bottom}div.dtsp-topRow button.dtsp-countButton span{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=)!important;background-repeat:no-repeat;background-position:center;background-size:18px;vertical-align:bottom}div.dtsp-topRow button.dtsp-collapseButton span.dtsp-caret{position:relative;top:9px;display:inline-block}div.dtsp-topRow button.dtsp-collapseButton.dtsp-rotated{transform:rotate(180deg)}div.dtsp-searchPane table thead th,div.dtsp-searchPane table thead td{width:100%!important}div.dt-button-collection{z-index:2002}div.dt-button-collection.dtb-collection-closeable div.dtsp-titleRow{padding-right:25px}div.dtsp-columns-1{max-width:100%;min-width:100%;margin:0!important}div.dtsp-columns-2{max-width:49%;min-width:49%;margin:0!important}div.dtsp-columns-3{max-width:32%;min-width:32%;margin:0!important}div.dtsp-columns-4{max-width:24%;min-width:24%;margin:0!important}div.dtsp-columns-5{max-width:19%;min-width:19%;margin:0!important}div.dtsp-columns-6{max-width:16%;min-width:16%;margin:0!important}div.dtsp-columns-7{max-width:14%;min-width:14%;margin:0!important}div.dtsp-columns-8{max-width:12%;min-width:12%;margin:0!important}div.dtsp-columns-9{max-width:10.5%;min-width:10.5%;margin:0!important}div.dtsp-narrow{flex-direction:column!important}div.dtsp-narrow div.dtsp-subRow1,div.dtsp-narrow div.dtsp-subRow2{width:100%}div.dtsp-narrow div.dtsp-subRow2 button{margin:0!important;width:25%!important}div.dt-button-collection div.dtsp-panesContainer{padding-left:1em;padding-right:1em;margin-bottom:0}div.dtsp-panesContainer{margin-bottom:1em}div.dtsp-searchPane div.dt-container,div.dtsp-searchPane div.dataTables_wrapper{width:100%}div.dtsp-searchPane div.dt-container div.dataTables_layout_cell,div.dtsp-searchPane div.dataTables_wrapper div.dataTables_layout_cell{padding:0}div.dtsp-searchPane div.dt-container div.dt-scroll-head,div.dtsp-searchPane div.dt-container div.dataTables_scrollHead,div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-head,div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollHead{display:none!important}div.dtsp-searchPane div.dt-container div.dt-scroll-body,div.dtsp-searchPane div.dt-container div.dataTables_scrollBody,div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body,div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody{background:#fff!important;border:none}div.dtsp-searchPane div.dt-container div.dt-scroll-body thead,div.dtsp-searchPane div.dt-container div.dataTables_scrollBody thead,div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body thead,div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody thead{display:none}div.dtsp-searchPane div.dt-container div.dt-scroll-body table tr>th,div.dtsp-searchPane div.dt-container div.dt-scroll-body table tr>td,div.dtsp-searchPane div.dt-container div.dataTables_scrollBody table tr>th,div.dtsp-searchPane div.dt-container div.dataTables_scrollBody table tr>td,div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body table tr>th,div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body table tr>td,div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody table tr>th,div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody table tr>td{padding:5px 10px}div.dtsp-searchPane div.dt-container div.dt-scroll-body td.dtsp-nameColumn,div.dtsp-searchPane div.dt-container div.dataTables_scrollBody td.dtsp-nameColumn,div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body td.dtsp-nameColumn,div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody td.dtsp-nameColumn{width:100%!important}div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont,div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont,div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont,div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont{width:100%;display:flex;flex-direction:row;justify-content:flex-start;align-content:flex-start;align-items:flex-start}div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-name,div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill,div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-name,div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill,div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-name,div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill,div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-name,div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill{cursor:default}div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-name,div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-name,div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-name,div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-name{text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:middle;white-space:nowrap;flex-grow:1;text-align:left}div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill,div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill,div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill,div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill{display:inline-block;background-color:#cfcfcf;text-align:center;border-radius:10px;width:auto;min-width:30px;color:#000;font-size:.9em;padding:0 4px}div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill:empty,div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill:empty,div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill:empty,div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill:empty{display:none}div.dtsp-panesContainer{clear:both;padding-left:0;padding-right:0;text-align:center}div.dtsp-panesContainer div.dtsp-searchPanes{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-content:flex-start;align-items:stretch;clear:both;text-align:left}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane{flex-grow:1;flex-shrink:0;font-size:.9em;margin-top:15px!important}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dt-container,div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper{flex:1;box-sizing:border-box}div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dt-container div.dt-search,div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dt-container div.dataTables_filter,div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.dt-search,div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter{display:none}div.dtsp-panesContainer div.dtsp-title{float:left;padding:10px 0}div.dtsp-panesContainer button.dtsp-clearAll,div.dtsp-panesContainer button.dtsp-collapseAll,div.dtsp-panesContainer button.dtsp-showAll{float:right}div.dtsp-hidden{display:none!important}html.dark div.dtsp-topRow div.dtsp-subRow1 div.dtsp-searchCont input[disabled=disabled]::placeholder,html[data-bs-theme=dark] div.dtsp-topRow div.dtsp-subRow1 div.dtsp-searchCont input[disabled=disabled]::placeholder{color:#fff}div.dtsp-searchPane div.dt-container,div.dtsp-searchPane div.dataTables_wrapper{border:1px solid #f0f0f0;border-radius:4px;overflow:hidden}div.dtsp-searchPane div.dt-container:hover,div.dtsp-searchPane div.dataTables_wrapper:hover{border:1px solid #cfcfcf}div.dtsp-searchPane div.dt-container div.dt-scroll,div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll{margin:-5px 0}div.dtsp-searchPane div.dt-container table.dataTable,div.dtsp-searchPane div.dataTables_wrapper table.dataTable{border-bottom:none!important}div.dtsp-searchPane div.dtsp-topRow{border:1px solid transparent}div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRow1 input[disabled=disabled]{padding-bottom:5px}div.dtsp-searchPane div.dtsp-topRow div.dtsp-searchCont input.dtsp-search{border:none;padding-left:3px}div.dtsp-searchPane div.dtsp-topRow.dtsp-bordered{border:1px solid #f0f0f0;border-radius:3px}div.dtsp-searchPane div.dtsp-topRow.dtsp-bordered:hover{background-color:#f0f0f0}div.dtsp-searchPane input.dtsp-paneInputButton,div.dtsp-searchPane button.dtsp-paneButton{height:35px;width:35px;min-width:0;display:inline-block;margin:2px 2px 0;border:0px solid transparent;background-color:transparent}div.dtsp-searchPane input.dtsp-paneInputButton:hover,div.dtsp-searchPane button.dtsp-paneButton:hover{background-color:#f0f0f0;border-radius:2px;cursor:pointer}div.dtsp-searchPane button.dtsp-paneButton{vertical-align:middle;opacity:.6}div.dtsp-panesContainer button.dtsp-clearAll,div.dtsp-panesContainer button.dtsp-collapseAll,div.dtsp-panesContainer button.dtsp-showAll{border:1px solid transparent;background-color:transparent}div.dtsp-panesContainer button.dtsp-clearAll:hover,div.dtsp-panesContainer button.dtsp-collapseAll:hover,div.dtsp-panesContainer button.dtsp-showAll:hover{background-color:#f0f0f0;border-radius:2px;cursor:pointer}div.dtsp-panesContainer button.dtsp-disabledButton{cursor:default!important;color:#7c7c7c}div.dtsp-panesContainer button.dtsp-disabledButton:hover{background-color:transparent}div.dtsp-panesContainer button.dtsp-disabledButton:focus{outline:none}@media screen and (max-width: 767px){div.dtsp-columns-4,div.dtsp-columns-5,div.dtsp-columns-6{max-width:31%!important;min-width:31%!important}}@media screen and (max-width: 640px){div.dtsp-searchPanes{flex-direction:column!important}div.dtsp-searchPane{max-width:98%!important;min-width:98%!important}}html.dark div.dtsp-topRow div.dtsp-subRow1 button.dtsp-searchIcon span,html.dark div.dtsp-topRow button.dtsp-nameButton span,html.dark div.dtsp-topRow button.dtsp-countButton span{filter:invert(1)}html.dark div.dtsp-topRow input.dtsp-paneInputButton,html.dark div.dtsp-topRow button.dtsp-paneButton{color:inherit}html.dark div.dtsp-topRow input.dtsp-paneInputButton:hover,html.dark div.dtsp-topRow button.dtsp-paneButton:hover{background-color:#404549}html.dark div.dtsp-topRow.dtsp-bordered{border:1px solid rgba(255,255,255,.2);background:#2f3438!important}html.dark div.dtsp-topRow.dtsp-bordered:hover{border:1px solid rgba(255,255,255,.3)}html.dark div.dtsp-panesContainer button.dtsp-clearAll,html.dark div.dtsp-panesContainer button.dtsp-collapseAll,html.dark div.dtsp-panesContainer button.dtsp-showAll{color:inherit}html.dark div.dtsp-panesContainer button.dtsp-clearAll:hover,html.dark div.dtsp-panesContainer button.dtsp-collapseAll:hover,html.dark div.dtsp-panesContainer button.dtsp-showAll:hover{background-color:#404549}html.dark div.dtsp-panesContainer button.dtsp-disabledButton{color:#7c7c7c}html.dark div.dtsp-searchPane div.dt-container,html.dark div.dtsp-searchPane div.dataTables_wrapper{border:1px solid rgba(255,255,255,.2)}html.dark div.dtsp-searchPane div.dt-container:hover,html.dark div.dtsp-searchPane div.dataTables_wrapper:hover{border:1px solid rgba(255,255,255,.3)}html.dark div.dtsp-searchPane div.dt-container div.dt-scroll-body,html.dark div.dtsp-searchPane div.dt-container div.dataTables_scrollBody,html.dark div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body,html.dark div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody{background:#2f3438!important}html.dark div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill,html.dark div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill,html.dark div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill,html.dark div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill{background-color:#212529;color:inherit}table.dataTable>tbody>tr>.selected{background-color:#0d6efde6;color:#fff}table.dataTable>tbody>tr>.dt-select{text-align:center;vertical-align:middle}table.dataTable>thead>tr>.dt-select{text-align:center}table.dataTable input.dt-select-checkbox{appearance:none;position:relative;display:inline-block;width:12px;height:12px;border:1px solid;border-radius:3px;vertical-align:middle;margin-top:1px;color:inherit;font-size:20px;line-height:1em}table.dataTable input.dt-select-checkbox:checked:after{display:block;content:\"\\2713\";margin-top:-8px}table.dataTable input.dt-select-checkbox:indeterminate:after{display:block;position:absolute;content:\" \";top:3px;left:3px;height:4px;width:4px;background-color:#000;border-radius:2px}table.dataTable>tbody>tr.selected input.dt-select-checkbox:checked{border:1px solid}table.dataTable>tbody>tr>td.select-checkbox,table.dataTable>tbody>tr>th.select-checkbox{position:relative}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:before{display:block;position:absolute;top:50%;left:50%;width:12px;height:12px;box-sizing:border-box;content:\" \";margin-top:-6px;margin-left:-6px;border:1px solid;border-radius:3px}table.dataTable>tbody>tr.selected>td.select-checkbox:before,table.dataTable>tbody>tr.selected>th.select-checkbox:before{border:1px solid;content:\"\\2713\";font-size:20px;line-height:6px;text-align:center}table.dataTable.compact>tbody>tr>td.select-checkbox:before,table.dataTable.compact>tbody>tr>th.select-checkbox:before{margin-top:-12px}table.dataTable.compact>tbody>tr.selected>td.select-checkbox:after,table.dataTable.compact>tbody>tr.selected>th.select-checkbox:after{margin-top:-16px}div.dt-container span.select-info,div.dt-container span.select-item{margin-left:.5em}html.dark table.dataTable input.dt-select-checkbox:indeterminate:after,html[data-bs-theme=dark] table.dataTable input.dt-select-checkbox:indeterminate:after{background-color:#fff}@media screen and (max-width: 640px){div.dt-container span.select-info,div.dt-container span.select-item{margin-left:0;display:block}}\n",
       "</style>\n",
       "<div id=\"itables_init_notebook_mode_5a4fa55b_29ad_4e5a_96af_81f5be952b36\" style=\"vertical-align:middle; text-align:left\">\n",
       "<div style=\"float:left; margin-right: 10px;\">\n",
       "<a href=https://mwouts.github.io/itables/><svg class=\"main-svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
       "width=\"64\" viewBox=\"0 0 500 400\" style=\"font-family: 'Droid Sans', sans-serif;\">\n",
       "    <g style=\"fill:#d9d7fc\">\n",
       "        <path d=\"M100,400H500V357H100Z\" />\n",
       "        <path d=\"M100,300H400V257H100Z\" />\n",
       "        <path d=\"M0,200H400V157H0Z\" />\n",
       "        <path d=\"M100,100H500V57H100Z\" />\n",
       "        <path d=\"M100,350H500V307H100Z\" />\n",
       "        <path d=\"M100,250H400V207H100Z\" />\n",
       "        <path d=\"M0,150H400V107H0Z\" />\n",
       "        <path d=\"M100,50H500V7H100Z\" />\n",
       "    </g>\n",
       "    <g style=\"fill:#1a1366;stroke:#1a1366;\">\n",
       "   <rect x=\"100\" y=\"7\" width=\"400\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;400;0\"\n",
       "      dur=\"5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "      <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"100;100;500\"\n",
       "      dur=\"5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <rect x=\"0\" y=\"107\" width=\"400\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;400;0\"\n",
       "      dur=\"3.5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "    <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"0;0;400\"\n",
       "      dur=\"3.5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <rect x=\"100\" y=\"207\" width=\"300\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;300;0\"\n",
       "      dur=\"3s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "    <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"100;100;400\"\n",
       "      dur=\"3s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <rect x=\"100\" y=\"307\" width=\"400\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;400;0\"\n",
       "      dur=\"4s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "      <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"100;100;500\"\n",
       "      dur=\"4s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <g style=\"fill:transparent;stroke-width:8; stroke-linejoin:round\" rx=\"5\">\n",
       "            <g transform=\"translate(45 50) rotate(-45)\">\n",
       "                <circle r=\"33\" cx=\"0\" cy=\"0\" />\n",
       "                <rect x=\"-8\" y=\"32\" width=\"16\" height=\"30\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(450 152)\">\n",
       "                <polyline points=\"-15,-20 -35,-20 -35,40 25,40 25,20\" />\n",
       "                <rect x=\"-15\" y=\"-40\" width=\"60\" height=\"60\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(50 352)\">\n",
       "                <polygon points=\"-35,-5 0,-40 35,-5\" />\n",
       "                <polygon points=\"-35,10 0,45 35,10\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(75 250)\">\n",
       "                <polyline points=\"-30,30 -60,0 -30,-30\" />\n",
       "                <polyline points=\"0,30 -30,0 0,-30\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(425 250) rotate(180)\">\n",
       "                <polyline points=\"-30,30 -60,0 -30,-30\" />\n",
       "                <polyline points=\"0,30 -30,0 0,-30\" />\n",
       "            </g>\n",
       "        </g>\n",
       "    </g>\n",
       "</svg>\n",
       "</a>\n",
       "</div>\n",
       "<div>\n",
       "This is the <code>init_notebook_mode</code> cell from ITables v2.0.1<br>\n",
       "(you should not see this message - is your notebook <it>trusted</it>?)\n",
       "</div>\n",
       "</div>\n",
       "<script>\n",
       "window._datatables_src_for_itables_2_0_1 = \"data:text/javascript;base64,[encoded data, 674164 characters]\";\n",
       "document.querySelectorAll(\"#itables_init_notebook_mode_5a4fa55b_29ad_4e5a_96af_81f5be952b36\").forEach(e => e.remove());\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from v2realbot.tools.loadbatch import load_batch\n",
    "from v2realbot.utils.utils import zoneNY\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import vectorbtpro as vbt\n",
    "from itables import init_notebook_mode, show\n",
    "import datetime\n",
    "from itertools import product\n",
    "\n",
    "init_notebook_mode(all_interactive=True)\n",
    "\n",
    "vbt.settings.set_theme(\"dark\")\n",
    "vbt.settings['plotting']['layout']['width'] = 1280\n",
    "vbt.settings.plotting.auto_rangebreaks = True\n",
    "# Set the option to display with pagination\n",
    "pd.set_option('display.notebook_repr_html', True)\n",
    "pd.set_option('display.max_rows', 10)  # Number of rows per page\n",
    "\n",
    "# Define the market open and close times\n",
    "market_open = datetime.time(9, 30)\n",
    "market_close = datetime.time(16, 0)\n",
    "entry_window_opens = 1\n",
    "entry_window_closes = 370\n",
    "\n",
    "forced_exit_start = 380\n",
    "forced_exit_end = 390\n",
    "\n",
    "res, df = load_batch(batch_id=\"f1ac6651\", #138170bc 0fb5043a  bde6d0be f1ac6651\n",
    "                     space_resolution_evenly=False,\n",
    "                     indicators_columns=[\"Rsi14\"],\n",
    "                     main_session_only=True,\n",
    "                     verbose = False)\n",
    "if res < 0:\n",
    "    print(\"Error\" + str(res) + str(df))\n",
    "df = df[\"bars\"]\n",
    "\n",
    "df\n",
    "\n",
    "basic_data = vbt.Data.from_data(vbt.symbol_dict({\"BAC\": df}), tz_convert=zoneNY)\n",
    "#m1_data = basic_data[['Open', 'High', 'Low', 'Close', 'Volume']]\n",
    "basic_data = basic_data.transform(lambda df: df.between_time('09:30', '16:00'))\n",
    "#basic_data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<module 'vectorbtpro' from '/Users/davidbrazda/Documents/Development/python/v2trading/.venv/lib/python3.10/site-packages/vectorbtpro/__init__.py'>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vbt.open_api_ref(vbt.base)\n",
    "\n",
    "vbt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table id=\"itables_db05bf21_2bf5_4532_aaa7_fdddf3e8dd5f\" class=\"display nowrap\" data-quarto-disable-processing=\"true\" style=\"table-layout:auto;width:auto;margin:auto;caption-side:bottom\">\n",
       "<thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "    </tr>\n",
       "  </thead><tbody><tr>\n",
       "<td style=\"vertical-align:middle; text-align:left\">\n",
       "<div style=\"float:left; margin-right: 10px;\">\n",
       "<a href=https://mwouts.github.io/itables/><svg class=\"main-svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
       "width=\"64\" viewBox=\"0 0 500 400\" style=\"font-family: 'Droid Sans', sans-serif;\">\n",
       "    <g style=\"fill:#d9d7fc\">\n",
       "        <path d=\"M100,400H500V357H100Z\" />\n",
       "        <path d=\"M100,300H400V257H100Z\" />\n",
       "        <path d=\"M0,200H400V157H0Z\" />\n",
       "        <path d=\"M100,100H500V57H100Z\" />\n",
       "        <path d=\"M100,350H500V307H100Z\" />\n",
       "        <path d=\"M100,250H400V207H100Z\" />\n",
       "        <path d=\"M0,150H400V107H0Z\" />\n",
       "        <path d=\"M100,50H500V7H100Z\" />\n",
       "    </g>\n",
       "    <g style=\"fill:#1a1366;stroke:#1a1366;\">\n",
       "   <rect x=\"100\" y=\"7\" width=\"400\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;400;0\"\n",
       "      dur=\"5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "      <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"100;100;500\"\n",
       "      dur=\"5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <rect x=\"0\" y=\"107\" width=\"400\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;400;0\"\n",
       "      dur=\"3.5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "    <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"0;0;400\"\n",
       "      dur=\"3.5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <rect x=\"100\" y=\"207\" width=\"300\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;300;0\"\n",
       "      dur=\"3s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "    <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"100;100;400\"\n",
       "      dur=\"3s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <rect x=\"100\" y=\"307\" width=\"400\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;400;0\"\n",
       "      dur=\"4s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "      <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"100;100;500\"\n",
       "      dur=\"4s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <g style=\"fill:transparent;stroke-width:8; stroke-linejoin:round\" rx=\"5\">\n",
       "            <g transform=\"translate(45 50) rotate(-45)\">\n",
       "                <circle r=\"33\" cx=\"0\" cy=\"0\" />\n",
       "                <rect x=\"-8\" y=\"32\" width=\"16\" height=\"30\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(450 152)\">\n",
       "                <polyline points=\"-15,-20 -35,-20 -35,40 25,40 25,20\" />\n",
       "                <rect x=\"-15\" y=\"-40\" width=\"60\" height=\"60\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(50 352)\">\n",
       "                <polygon points=\"-35,-5 0,-40 35,-5\" />\n",
       "                <polygon points=\"-35,10 0,45 35,10\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(75 250)\">\n",
       "                <polyline points=\"-30,30 -60,0 -30,-30\" />\n",
       "                <polyline points=\"0,30 -30,0 0,-30\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(425 250) rotate(180)\">\n",
       "                <polyline points=\"-30,30 -60,0 -30,-30\" />\n",
       "                <polyline points=\"0,30 -30,0 0,-30\" />\n",
       "            </g>\n",
       "        </g>\n",
       "    </g>\n",
       "</svg>\n",
       "</a>\n",
       "</div>\n",
       "<div>\n",
       "Loading ITables v2.0.1 from the <code>init_notebook_mode</code> cell...\n",
       "(need <a href=https://mwouts.github.io/itables/troubleshooting.html>help</a>?)</td>\n",
       "</div>\n",
       "</tr></tbody>\n",
       "\n",
       "</table>\n",
       "<script type=\"module\">\n",
       "    const { DataTable, jQuery: $ } = await import(window._datatables_src_for_itables_2_0_1);\n",
       "\n",
       "    document.querySelectorAll(\"#itables_db05bf21_2bf5_4532_aaa7_fdddf3e8dd5f:not(.dataTable)\").forEach(table => {\n",
       "        // Define the table data\n",
       "        const data = [[\"Start\", \"2024-01-02 09:30:00-05:00\"], [\"End\", \"2024-02-28 15:59:59-05:00\"], [\"Period\", \"5 days 18:15:46\"], [\"Start Value\", \" 100.0\"], [\"Min Value\", \" 99.766637\"], [\"Max Value\", \" 100.317184\"], [\"End Value\", \" 99.766637\"], [\"Total Return [%]\", \"-0.233363\"], [\"Benchmark Return [%]\", \" 2.631579\"], [\"Total Time Exposure [%]\", \" 0.014465\"], [\"Max Gross Exposure [%]\", \" 100.0\"], [\"Max Drawdown [%]\", \" 0.548806\"], [\"Max Drawdown Duration\", \"4 days 13:12:33\"], [\"Total Orders\", \"8\"], [\"Total Fees Paid\", \" 0.13358\"], [\"Total Trades\", \"4\"], [\"Win Rate [%]\", \" 25.0\"], [\"Best Trade [%]\", \" 0.296545\"], [\"Worst Trade [%]\", \"-0.313353\"], [\"Avg Winning Trade [%]\", \" 0.296545\"], [\"Avg Losing Trade [%]\", \"-0.176382\"], [\"Avg Winning Trade Duration\", \"0 days 00:00:20\"], [\"Avg Losing Trade Duration\", \"0 days 00:00:17.333333333\"], [\"Profit Factor\", \" 0.559181\"], [\"Expectancy\", \"-0.058341\"], [\"Sharpe Ratio\", \"-3.597608\"], [\"Calmar Ratio\", \"-2.69309\"], [\"Omega Ratio\", \" 0.867176\"], [\"Sortino Ratio\", \"-4.934545\"]];\n",
       "\n",
       "        // Define the dt_args\n",
       "        let dt_args = {\"layout\": {\"topStart\": \"pageLength\", \"topEnd\": \"search\", \"bottomStart\": \"info\", \"bottomEnd\": \"paging\"}, \"order\": [], \"warn_on_dom\": true};\n",
       "        dt_args[\"data\"] = data;\n",
       "\n",
       "        \n",
       "        new DataTable(table, dt_args);\n",
       "    });\n",
       "</script>\n"
      ],
      "text/plain": [
       "Start            2024-01-02 09:30:00-05:00\n",
       "End              2024-02-28 15:59:59-05:00\n",
       "Period                     5 days 18:15:46\n",
       "Start Value                          100.0\n",
       "Min Value                        99.766637\n",
       "                           ...            \n",
       "Expectancy                       -0.058341\n",
       "Sharpe Ratio                     -3.597608\n",
       "Calmar Ratio                      -2.69309\n",
       "Omega Ratio                       0.867176\n",
       "Sortino Ratio                    -4.934545\n",
       "Length: 29, dtype: object"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "##na toto udelat crosssvalidationu nebo alespon na testovacim ci jinem obdobi\n",
    "#take udelat long leg - tato je shortovaci\n",
    "\n",
    "#8\t-0.06\t-0.2\t0.0028\t0.0048\t4.156254\n",
    "\n",
    "#short combination ok for train(4)/test(0.1) (window 1-90, fe 95-100)\n",
    "#2,\t-0.02,\t-0.25,\t0.0018,\t0.0068\n",
    "\n",
    "#dalsi ok hodnota shortu for train/test 4/1\n",
    "#70,\t8,\t-0.06,\t-0.2,\t0.0013,\t0.0053\t\n",
    "\n",
    "\n",
    "#kombinace bez roc_th, train/test 7/-1.5\n",
    "#70\t7\t-0.07\t0.0033\t0.0063\n",
    "\n",
    "#opet bez roc_th, train(5.77)/test 0.9 - spolus tsl_stop + tsl_th\n",
    "#29\t7\t-0.09\t0.0033\t0.0068\n",
    "\n",
    "#bez roc_th a s trailing sl train/test 8.1/-0.8 \n",
    "#70\t2\t-0.05\t0.0018\t0.0068\n",
    "\n",
    "\n",
    "# TODO:\n",
    "#- vyzkouset zda nejvyhodnejsi kombinace krom train/testu funguje i na nasledujicich dnech po trainu\n",
    "# -zkusit najit v short datasetu neco vyhodneho co funguji i na testu\n",
    "# - dodelat kombinace pro long signaly\n",
    "# - zkusit walk forward\n",
    "# - vytvorit vysledkove totoznou na v2realbot\n",
    "# - podivat se jak detailne funguji tsl_stop a tsl_th\n",
    "\n",
    "#70,\t4,\t-0.07,\t0.0048,\t0.0068\t\n",
    "\n",
    "\n",
    "entry_window_closes, mom_timeperiod, mom_th, sl_stop, tp_stop = 8,\t3,\t0.07,\t0.0028,\t0.0033\t\n",
    "roc_th  = 0\n",
    "momshort = vbt.indicator(\"talib:MOM\").run(basic_data.close, timeperiod=mom_timeperiod, short_name = \"slope_short\")\n",
    "rocp = vbt.indicator(\"talib:ROC\").run(basic_data.close, short_name = \"rocp\")\n",
    "#rate of change + momentum\n",
    "\n",
    "#momshort.plot rocp.real_crossed_below(roc_th) & \n",
    "short_signal = momshort.real_crossed_below(mom_th)\n",
    "\n",
    "long_signal = momshort.real_crossed_above(mom_th)\n",
    "\n",
    "# print(\"short signal\")\n",
    "# print(short_signal.value_counts())\n",
    "\n",
    "#forced_exit = pd.Series(False, index=close.index)\n",
    "forced_exit = basic_data.symbol_wrapper.fill(False)\n",
    "#entry_window_open = pd.Series(False, index=close.index)\n",
    "entry_window_open=  basic_data.symbol_wrapper.fill(False)\n",
    "\n",
    "# Calculate the time difference in minutes from market open for each timestamp\n",
    "elapsed_min_from_open = (forced_exit.index.hour - market_open.hour) * 60 + (forced_exit.index.minute - market_open.minute)\n",
    "\n",
    "entry_window_open[(elapsed_min_from_open >= entry_window_opens) & (elapsed_min_from_open < entry_window_closes)] = True\n",
    "\n",
    "#print(entry_window_open.value_counts())\n",
    "\n",
    "forced_exit[(elapsed_min_from_open >= forced_exit_start) & (elapsed_min_from_open < forced_exit_end)] = True\n",
    "short_entries = (short_signal & entry_window_open)\n",
    "short_exits = forced_exit\n",
    "\n",
    "entries = (long_signal & entry_window_open)\n",
    "exits = forced_exit\n",
    "#long_entries.info()\n",
    "#number of trues and falses in long_entries\n",
    "# print(short_exits.value_counts())\n",
    "# print(short_entries.value_counts())\n",
    "\n",
    "#fig = plot_2y_close([],[momshort, rocp], close)\n",
    "#short_signal.vbt.signals.plot_as_entries(close, fig=fig, add_trace_kwargs=dict(secondary_y=False))\n",
    "#print(sl_stop)\n",
    "#short_entries=short_entries, short_exits=short_exits,\n",
    "pf = vbt.Portfolio.from_signals(close=basic_data, entries=entries, exits=exits, tsl_stop=sl_stop, tp_stop = tp_stop, fees=0.0167/100, freq=\"1s\") #sl_stop=sl_stop, tp_stop = sl_stop,\n",
    "\n",
    "pf.stats()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "848b9b38239f4f10b8be10f60265ab6f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "FigureWidget({\n",
       "    'data': [{'close': array([33.44 , 33.445, 33.42 , ..., 34.325, 34.33 , 34.32 ]),\n",
       "              'decreasing': {'fillcolor': '#ee534f', 'line': {'color': '#ee534f'}},\n",
       "              'high': array([33.44 , 33.465, 33.45 , ..., 34.325, 34.33 , 34.33 ]),\n",
       "              'increasing': {'fillcolor': '#26a69a', 'line': {'color': '#26a69a'}},\n",
       "              'low': array([33.39, 33.44, 33.42, ..., 34.32, 34.32, 34.32]),\n",
       "              'name': 'OHLC',\n",
       "              'opacity': 0.5,\n",
       "              'open': array([33.39 , 33.46 , 33.45 , ..., 34.32 , 34.325, 34.325]),\n",
       "              'type': 'candlestick',\n",
       "              'uid': '62d2f920-d109-44ec-9c98-0def8e4b29b0',\n",
       "              'x': array([datetime.datetime(2024, 1, 2, 9, 30, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 1, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 2, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          ...,\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 57, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 58, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 59, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)],\n",
       "                         dtype=object),\n",
       "              'xaxis': 'x',\n",
       "              'yaxis': 'y'},\n",
       "             {'customdata': array([['0', '2024-01-03 09:31:27-05:00', '2024-01-03 09:31:27-05:00',\n",
       "                                    '2024-01-03 09:31:27-05:00', 2.978352778922679, 33.57,\n",
       "                                    0.0166972115656705, 'Market', 'None'],\n",
       "                                   ['2', '2024-01-04 09:31:16-05:00', '2024-01-04 09:31:16-05:00',\n",
       "                                    '2024-01-04 09:31:16-05:00', 2.96735984866213, 33.62,\n",
       "                                    0.016660360564713983, 'Market', 'None'],\n",
       "                                   ['4', '2024-01-10 09:32:44-05:00', '2024-01-10 09:32:44-05:00',\n",
       "                                    '2024-01-10 09:32:44-05:00', 3.0083218731755443, 33.36,\n",
       "                                    0.016759722154091605, 'Market', 'None'],\n",
       "                                   ['6', '2024-01-12 09:31:01-05:00', '2024-01-12 09:31:01-05:00',\n",
       "                                    '2024-01-12 09:31:01-05:00', 3.1068615104873154, 32.31,\n",
       "                                    0.01676391013243972, 'Market', 'None'],\n",
       "                                   ['8', '2024-01-12 09:32:02-05:00', '2024-01-12 09:32:02-05:00',\n",
       "                                    '2024-01-12 09:32:02-05:00', 3.100441294836864, 32.57,\n",
       "                                    0.016863889286469202, 'Market', 'None'],\n",
       "                                   ['10', '2024-01-12 09:32:52-05:00', '2024-01-12 09:32:52-05:00',\n",
       "                                    '2024-01-12 09:32:52-05:00', 3.092952048475304, 32.8484,\n",
       "                                    0.0169669538535544, 'Market', 'None'],\n",
       "                                   ['12', '2024-01-16 09:31:40-05:00', '2024-01-16 09:31:40-05:00',\n",
       "                                    '2024-01-16 09:31:40-05:00', 3.1376689038339736, 32.44,\n",
       "                                    0.016998258533149624, 'Market', 'None'],\n",
       "                                   ['14', '2024-01-17 09:31:11-05:00', '2024-01-17 09:31:11-05:00',\n",
       "                                    '2024-01-17 09:31:11-05:00', 3.225768247933234, 31.4927,\n",
       "                                    0.016965221334189096, 'Market', 'None'],\n",
       "                                   ['16', '2024-01-19 09:31:17-05:00', '2024-01-19 09:31:17-05:00',\n",
       "                                    '2024-01-19 09:31:17-05:00', 3.1852624849523656, 31.82,\n",
       "                                    0.016926293729284225, 'Market', 'None'],\n",
       "                                   ['18', '2024-01-22 09:32:07-05:00', '2024-01-22 09:32:07-05:00',\n",
       "                                    '2024-01-22 09:32:07-05:00', 3.1147021490903066, 32.43,\n",
       "                                    0.01686863504606606, 'Market', 'None'],\n",
       "                                   ['20', '2024-01-30 09:32:47-05:00', '2024-01-30 09:32:47-05:00',\n",
       "                                    '2024-01-30 09:32:47-05:00', 2.9763388468118293, 34.14,\n",
       "                                    0.016969238774436235, 'Market', 'None'],\n",
       "                                   ['22', '2024-01-31 09:31:26-05:00', '2024-01-31 09:31:26-05:00',\n",
       "                                    '2024-01-31 09:31:26-05:00', 2.914727712984091, 34.735,\n",
       "                                    0.016907592207459743, 'Market', 'None'],\n",
       "                                   ['24', '2024-02-05 09:32:00-05:00', '2024-02-05 09:32:00-05:00',\n",
       "                                    '2024-02-05 09:32:00-05:00', 3.071377439535155, 33.16,\n",
       "                                    0.01700842827446536, 'Market', 'None'],\n",
       "                                   ['26', '2024-02-08 09:31:08-05:00', '2024-02-08 09:31:08-05:00',\n",
       "                                    '2024-02-08 09:31:08-05:00', 3.068071063787448, 33.13,\n",
       "                                    0.016974747455336114, 'Market', 'None'],\n",
       "                                   ['28', '2024-02-15 09:31:17-05:00', '2024-02-15 09:31:17-05:00',\n",
       "                                    '2024-02-15 09:31:17-05:00', 3.0289452905084406, 33.4708,\n",
       "                                    0.016930664078941504, 'Market', 'None'],\n",
       "                                   ['30', '2024-02-21 09:31:03-05:00', '2024-02-21 09:31:03-05:00',\n",
       "                                    '2024-02-21 09:31:03-05:00', 3.0364974627410586, 33.59,\n",
       "                                    0.017033323612167806, 'Market', 'None'],\n",
       "                                   ['32', '2024-02-21 09:32:53-05:00', '2024-02-21 09:32:53-05:00',\n",
       "                                    '2024-02-21 09:32:53-05:00', 3.0264384972281606, 33.56,\n",
       "                                    0.016961735086482577, 'Market', 'None'],\n",
       "                                   ['34', '2024-02-22 09:31:10-05:00', '2024-02-22 09:31:10-05:00',\n",
       "                                    '2024-02-22 09:31:10-05:00', 3.014546202965763, 33.59,\n",
       "                                    0.01691018736192973, 'Market', 'None'],\n",
       "                                   ['36', '2024-02-26 09:32:23-05:00', '2024-02-26 09:32:23-05:00',\n",
       "                                    '2024-02-26 09:32:23-05:00', 2.97661511133949, 33.955,\n",
       "                                    0.01687885133962652, 'Market', 'None'],\n",
       "                                   ['38', '2024-02-27 09:32:14-05:00', '2024-02-27 09:32:14-05:00',\n",
       "                                    '2024-02-27 09:32:14-05:00', 2.981567760303421, 33.86,\n",
       "                                    0.01685963268876378, 'Market', 'None'],\n",
       "                                   ['40', '2024-02-28 09:32:46-05:00', '2024-02-28 09:32:46-05:00',\n",
       "                                    '2024-02-28 09:32:46-05:00', 2.942546727531348, 34.25,\n",
       "                                    0.016830631644793925, 'Market', 'None']], dtype=object),\n",
       "              'hovertemplate': ('<br>Order Id: %{customdata[0]}' ... 'br>Stop Type: %{customdata[8]}'),\n",
       "              'marker': {'color': '#37B13F',\n",
       "                         'line': {'color': 'rgb(38,123,44)', 'width': 1},\n",
       "                         'size': 8,\n",
       "                         'symbol': 'triangle-up'},\n",
       "              'mode': 'markers',\n",
       "              'name': 'Buy',\n",
       "              'type': 'scatter',\n",
       "              'uid': '7d55d406-e8fc-4c82-b901-1efe2cc01e8a',\n",
       "              'x': array([datetime.datetime(2024, 1, 3, 9, 31, 27, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 4, 9, 31, 16, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 10, 9, 32, 44, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 12, 9, 31, 1, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 12, 9, 32, 2, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 12, 9, 32, 52, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 16, 9, 31, 40, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 17, 9, 31, 11, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 19, 9, 31, 17, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 22, 9, 32, 7, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 30, 9, 32, 47, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 31, 9, 31, 26, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 5, 9, 32, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 8, 9, 31, 8, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 15, 9, 31, 17, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 21, 9, 31, 3, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 21, 9, 32, 53, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 22, 9, 31, 10, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 26, 9, 32, 23, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 27, 9, 32, 14, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 9, 32, 46, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)],\n",
       "                         dtype=object),\n",
       "              'xaxis': 'x',\n",
       "              'y': array([33.57  , 33.62  , 33.36  , 32.31  , 32.57  , 32.8484, 32.44  , 31.4927,\n",
       "                          31.82  , 32.43  , 34.14  , 34.735 , 33.16  , 33.13  , 33.4708, 33.59  ,\n",
       "                          33.56  , 33.59  , 33.955 , 33.86  , 34.25  ]),\n",
       "              'yaxis': 'y'},\n",
       "             {'customdata': array([['1', '2024-01-03 09:31:27-05:00', '2024-01-03 09:33:15-05:00',\n",
       "                                    '2024-01-03 09:33:15-05:00', 2.978352778922679, 33.5071,\n",
       "                                    0.016665926054572896, 'Market', 'TSL'],\n",
       "                                   ['3', '2024-01-04 09:31:16-05:00', '2024-01-04 09:33:03-05:00',\n",
       "                                    '2024-01-04 09:33:03-05:00', 2.96735984866213, 33.83180599999999,\n",
       "                                    0.01676532083626513, 'Market', 'TP'],\n",
       "                                   ['5', '2024-01-10 09:32:44-05:00', '2024-01-10 09:38:22-05:00',\n",
       "                                    '2024-01-10 09:38:22-05:00', 3.0083218731755443, 33.379483,\n",
       "                                    0.016769510213639937, 'Market', 'TSL'],\n",
       "                                   ['7', '2024-01-12 09:31:01-05:00', '2024-01-12 09:31:54-05:00',\n",
       "                                    '2024-01-12 09:31:54-05:00', 3.1068615104873154, 32.513553,\n",
       "                                    0.016869522766276526, 'Market', 'TP'],\n",
       "                                   ['9', '2024-01-12 09:32:02-05:00', '2024-01-12 09:32:35-05:00',\n",
       "                                    '2024-01-12 09:32:35-05:00', 3.100441294836864, 32.78,\n",
       "                                    0.01697262176267365, 'Market', 'TP'],\n",
       "                                   ['11', '2024-01-12 09:32:52-05:00', '2024-01-12 09:34:39-05:00',\n",
       "                                    '2024-01-12 09:34:39-05:00', 3.092952048475304, 32.92,\n",
       "                                    0.017003936899779772, 'Market', 'TSL'],\n",
       "                                   ['13', '2024-01-16 09:31:40-05:00', '2024-01-16 09:33:22-05:00',\n",
       "                                    '2024-01-16 09:33:22-05:00', 3.1376689038339736, 32.3877665,\n",
       "                                    0.016970888664551508, 'Market', 'TSL'],\n",
       "                                   ['15', '2024-01-17 09:31:11-05:00', '2024-01-17 09:33:03-05:00',\n",
       "                                    '2024-01-17 09:33:03-05:00', 3.225768247933234, 31.4309345,\n",
       "                                    0.01693194805566586, 'Market', 'TSL'],\n",
       "                                   ['17', '2024-01-19 09:31:17-05:00', '2024-01-19 09:33:56-05:00',\n",
       "                                    '2024-01-19 09:33:56-05:00', 3.1852624849523656, 31.7222,\n",
       "                                    0.016874270111226043, 'Market', 'TSL'],\n",
       "                                   ['19', '2024-01-22 09:32:07-05:00', '2024-01-22 09:34:31-05:00',\n",
       "                                    '2024-01-22 09:34:31-05:00', 3.1147021490903066, 32.634309,\n",
       "                                    0.01697490744685498, 'Market', 'TP'],\n",
       "                                   ['21', '2024-01-30 09:32:47-05:00', '2024-01-30 09:33:40-05:00',\n",
       "                                    '2024-01-30 09:33:40-05:00', 2.9763388468118293, 34.027338,\n",
       "                                    0.016913240286480388, 'Market', 'TSL'],\n",
       "                                   ['23', '2024-01-31 09:31:26-05:00', '2024-01-31 09:38:35-05:00',\n",
       "                                    '2024-01-31 09:38:35-05:00', 2.914727712984091, 34.953830499999995,\n",
       "                                    0.01701411003836086, 'Market', 'TP'],\n",
       "                                   ['25', '2024-02-05 09:32:00-05:00', '2024-02-05 09:39:03-05:00',\n",
       "                                    '2024-02-05 09:39:03-05:00', 3.071377439535155, 33.105390500000006,\n",
       "                                    0.016980417967953142, 'Market', 'TSL'],\n",
       "                                   ['27', '2024-02-08 09:31:08-05:00', '2024-02-08 09:34:25-05:00',\n",
       "                                    '2024-02-08 09:34:25-05:00', 3.068071063787448, 33.055,\n",
       "                                    0.016936319865253513, 'Market', 'TSL'],\n",
       "                                   ['29', '2024-02-15 09:31:17-05:00', '2024-02-15 09:33:50-05:00',\n",
       "                                    '2024-02-15 09:33:50-05:00', 3.0289452905084406, 33.685,\n",
       "                                    0.01703901369249973, 'Market', 'TP'],\n",
       "                                   ['31', '2024-02-21 09:31:03-05:00', '2024-02-21 09:32:43-05:00',\n",
       "                                    '2024-02-21 09:32:43-05:00', 3.0364974627410586, 33.46,\n",
       "                                    0.016967401252253742, 'Market', 'TSL'],\n",
       "                                   ['33', '2024-02-21 09:32:53-05:00', '2024-02-21 09:33:18-05:00',\n",
       "                                    '2024-02-21 09:33:18-05:00', 3.0264384972281606, 33.469186,\n",
       "                                    0.016915836307875395, 'Market', 'TSL'],\n",
       "                                   ['35', '2024-02-22 09:31:10-05:00', '2024-02-22 09:32:42-05:00',\n",
       "                                    '2024-02-22 09:32:42-05:00', 3.014546202965763, 33.538955,\n",
       "                                    0.016884489817597163, 'Market', 'TSL'],\n",
       "                                   ['37', '2024-02-26 09:32:23-05:00', '2024-02-26 09:39:15-05:00',\n",
       "                                    '2024-02-26 09:39:15-05:00', 2.97661511133949, 33.927668,\n",
       "                                    0.01686526474663864, 'Market', 'TSL'],\n",
       "                                   ['39', '2024-02-27 09:32:14-05:00', '2024-02-27 09:34:52-05:00',\n",
       "                                    '2024-02-27 09:34:52-05:00', 2.981567760303421, 33.813047499999996,\n",
       "                                    0.016836254014702564, 'Market', 'TSL'],\n",
       "                                   ['41', '2024-02-28 09:32:46-05:00', '2024-02-28 09:44:36-05:00',\n",
       "                                    '2024-02-28 09:44:36-05:00', 2.942546727531348, 34.465775,\n",
       "                                    0.01693666462415965, 'Market', 'TP']], dtype=object),\n",
       "              'hovertemplate': ('<br>Order Id: %{customdata[0]}' ... 'br>Stop Type: %{customdata[8]}'),\n",
       "              'marker': {'color': '#EA4335',\n",
       "                         'line': {'color': 'rgb(181,31,18)', 'width': 1},\n",
       "                         'size': 8,\n",
       "                         'symbol': 'triangle-down'},\n",
       "              'mode': 'markers',\n",
       "              'name': 'Sell',\n",
       "              'type': 'scatter',\n",
       "              'uid': '5f8e0347-ebd1-49e0-8fdf-adbf25f7f974',\n",
       "              'x': array([datetime.datetime(2024, 1, 3, 9, 33, 15, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 4, 9, 33, 3, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 10, 9, 38, 22, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 12, 9, 31, 54, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 12, 9, 32, 35, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 12, 9, 34, 39, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 16, 9, 33, 22, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 17, 9, 33, 3, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 19, 9, 33, 56, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 22, 9, 34, 31, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 30, 9, 33, 40, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 31, 9, 38, 35, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 5, 9, 39, 3, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 8, 9, 34, 25, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 15, 9, 33, 50, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 21, 9, 32, 43, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 21, 9, 33, 18, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 22, 9, 32, 42, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 26, 9, 39, 15, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 27, 9, 34, 52, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 9, 44, 36, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)],\n",
       "                         dtype=object),\n",
       "              'xaxis': 'x',\n",
       "              'y': array([33.5071   , 33.831806 , 33.379483 , 32.513553 , 32.78     , 32.92     ,\n",
       "                          32.3877665, 31.4309345, 31.7222   , 32.634309 , 34.027338 , 34.9538305,\n",
       "                          33.1053905, 33.055    , 33.685    , 33.46     , 33.469186 , 33.538955 ,\n",
       "                          33.927668 , 33.8130475, 34.465775 ]),\n",
       "              'yaxis': 'y'},\n",
       "             {'customdata': array([['1', '1', '2024-01-04 09:33:03-05:00', 0.5950789387047365,\n",
       "                                    0.0059649478999997795],\n",
       "                                   ['2', '2', '2024-01-10 09:38:22-05:00', 0.025081902687342218,\n",
       "                                    0.000249925249969912],\n",
       "                                   ['3', '3', '2024-01-12 09:31:54-05:00', 0.5987775481455146,\n",
       "                                    0.0059649479000000874],\n",
       "                                   ['4', '4', '2024-01-12 09:32:35-05:00', 0.6172561608666053,\n",
       "                                    0.00611257445501997],\n",
       "                                   ['5', '5', '2024-01-12 09:34:39-05:00', 0.18748447591751835,\n",
       "                                    0.0018453464156550673],\n",
       "                                   ['9', '9', '2024-01-22 09:34:31-05:00', 0.6025181388855818,\n",
       "                                    0.0059649479000001004],\n",
       "                                   ['11', '11', '2024-01-31 09:38:35-05:00', 0.6039096205503393,\n",
       "                                    0.0059649478999998905],\n",
       "                                   ['14', '14', '2024-02-15 09:33:50-05:00', 0.6148304034554822,\n",
       "                                    0.006064539282001115],\n",
       "                                   ['20', '20', '2024-02-28 09:44:36-05:00', 0.6011607238641207,\n",
       "                                    0.00596494790000001]], dtype=object),\n",
       "              'hovertemplate': ('<br>Exit Trade Id: %{customdat' ... 'br>Return: %{customdata[4]:,%}'),\n",
       "              'marker': {'color': '#37B13F',\n",
       "                         'line': {'color': 'rgb(38,123,44)', 'width': 1},\n",
       "                         'opacity': array([0.89622287, 0.75      , 0.89622287, 0.9       , 0.79081997, 0.89622287,\n",
       "                                           0.89622287, 0.89877099, 0.89622287]),\n",
       "                         'size': array([13.82373397,  7.        , 13.82373397, 14.        ,  8.90493201,\n",
       "                                        13.82373397, 13.82373397, 13.94264603, 13.82373397]),\n",
       "                         'symbol': 'circle'},\n",
       "              'mode': 'markers',\n",
       "              'name': 'Closed - Profit',\n",
       "              'type': 'scatter',\n",
       "              'uid': '20d3a161-d4fc-47e6-bf90-8819c520dfb6',\n",
       "              'x': array([datetime.datetime(2024, 1, 4, 9, 33, 3, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 10, 9, 38, 22, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 12, 9, 31, 54, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 12, 9, 32, 35, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 12, 9, 34, 39, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 22, 9, 34, 31, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 31, 9, 38, 35, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 15, 9, 33, 50, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 9, 44, 36, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)],\n",
       "                         dtype=object),\n",
       "              'xaxis': 'x2',\n",
       "              'y': array([0.00596495, 0.00024993, 0.00596495, 0.00611257, 0.00184535, 0.00596495,\n",
       "                          0.00596495, 0.00606454, 0.00596495]),\n",
       "              'yaxis': 'y2'},\n",
       "             {'customdata': array([['0', '0', '2024-01-03 09:33:15-05:00', -0.22070152741447807,\n",
       "                                    -0.002207383845695563],\n",
       "                                   ['6', '6', '2024-01-16 09:33:22-05:00', -0.1978605758861028,\n",
       "                                    -0.0019438883170622393],\n",
       "                                   ['7', '7', '2024-01-17 09:33:03-05:00', -0.2331383581075762,\n",
       "                                    -0.0022949365078733363],\n",
       "                                   ['8', '8', '2024-01-19 09:33:56-05:00', -0.34531923486884847,\n",
       "                                    -0.0034070253739785636],\n",
       "                                   ['10', '10', '2024-01-30 09:33:40-05:00', -0.3692027662204353,\n",
       "                                    -0.0036334489000000446],\n",
       "                                   ['12', '12', '2024-02-05 09:39:03-05:00', -0.20171523252669066,\n",
       "                                    -0.001980573589067957],\n",
       "                                   ['13', '13', '2024-02-08 09:34:25-05:00', -0.26401639710465635,\n",
       "                                    -0.00259743118019938],\n",
       "                                   ['15', '15', '2024-02-21 09:32:43-05:00', -0.42874539502076375,\n",
       "                                    -0.004203553140815744],\n",
       "                                   ['16', '16', '2024-02-21 09:33:18-05:00', -0.30872055708164403,\n",
       "                                    -0.0030395671651371197],\n",
       "                                   ['17', '17', '2024-02-22 09:32:42-05:00', -0.18767218810991249,\n",
       "                                    -0.0018533949236380408],\n",
       "                                   ['18', '18', '2024-02-26 09:39:15-05:00', -0.11510096030940233,\n",
       "                                    -0.0011388132986600787],\n",
       "                                   ['19', '19', '2024-02-27 09:34:52-05:00', -0.17368794696912138,\n",
       "                                    -0.0017204341090520333]], dtype=object),\n",
       "              'hovertemplate': ('<br>Exit Trade Id: %{customdat' ... 'br>Return: %{customdata[4]:,%}'),\n",
       "              'marker': {'color': '#EA4335',\n",
       "                         'line': {'color': 'rgb(181,31,18)', 'width': 1},\n",
       "                         'opacity': array([0.80008295, 0.79334124, 0.80232305, 0.83077663, 0.83656983, 0.79427985,\n",
       "                                           0.81006259, 0.85115635, 0.82137495, 0.7910259 , 0.77274283, 0.787624  ]),\n",
       "                         'size': array([ 9.33720451,  9.02259099,  9.44174234, 10.76957585, 11.03992542,\n",
       "                                         9.06639319,  9.80292082, 11.72062958, 10.33083095,  8.91454193,\n",
       "                                         8.06133185,  8.75578679]),\n",
       "                         'symbol': 'circle'},\n",
       "              'mode': 'markers',\n",
       "              'name': 'Closed - Loss',\n",
       "              'type': 'scatter',\n",
       "              'uid': '38ec9cd1-8a39-4443-b9de-94b6ce3de315',\n",
       "              'x': array([datetime.datetime(2024, 1, 3, 9, 33, 15, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 16, 9, 33, 22, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 17, 9, 33, 3, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 19, 9, 33, 56, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 30, 9, 33, 40, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 5, 9, 39, 3, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 8, 9, 34, 25, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 21, 9, 32, 43, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 21, 9, 33, 18, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 22, 9, 32, 42, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 26, 9, 39, 15, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 27, 9, 34, 52, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)],\n",
       "                         dtype=object),\n",
       "              'xaxis': 'x2',\n",
       "              'y': array([-0.00220738, -0.00194389, -0.00229494, -0.00340703, -0.00363345,\n",
       "                          -0.00198057, -0.00259743, -0.00420355, -0.00303957, -0.00185339,\n",
       "                          -0.00113881, -0.00172043]),\n",
       "              'yaxis': 'y2'},\n",
       "             {'legendgroup': '0',\n",
       "              'line': {'color': '#7f7f7f'},\n",
       "              'mode': 'lines',\n",
       "              'name': 'Benchmark',\n",
       "              'showlegend': True,\n",
       "              'type': 'scatter',\n",
       "              'uid': 'b3f84fa4-cb7f-41f1-b96c-9c24f5aa46da',\n",
       "              'x': array([datetime.datetime(2024, 1, 2, 9, 30, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 1, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 2, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          ...,\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 57, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 58, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 59, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)],\n",
       "                         dtype=object),\n",
       "              'xaxis': 'x3',\n",
       "              'y': array([1.        , 1.00014952, 0.99940191, ..., 1.02646531, 1.02661483,\n",
       "                          1.02631579]),\n",
       "              'yaxis': 'y3'},\n",
       "             {'hoverinfo': 'skip',\n",
       "              'line': {'color': 'rgba(0, 0, 0, 0)', 'width': 0},\n",
       "              'mode': 'lines',\n",
       "              'opacity': 0,\n",
       "              'showlegend': False,\n",
       "              'type': 'scatter',\n",
       "              'uid': 'bb8dec5c-74b0-482b-a783-9272535513e5',\n",
       "              'x': array([datetime.datetime(2024, 1, 2, 9, 30, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 1, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 2, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          ...,\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 57, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 58, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 59, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)],\n",
       "                         dtype=object),\n",
       "              'xaxis': 'x3',\n",
       "              'y': array([1, 1, 1, ..., 1, 1, 1]),\n",
       "              'yaxis': 'y3'},\n",
       "             {'connectgaps': False,\n",
       "              'fill': 'tonexty',\n",
       "              'fillcolor': 'rgba(0, 128, 0, 0.25)',\n",
       "              'hoverinfo': 'skip',\n",
       "              'line': {'color': 'rgba(0, 0, 0, 0)', 'width': 0},\n",
       "              'mode': 'lines',\n",
       "              'opacity': 0,\n",
       "              'showlegend': False,\n",
       "              'type': 'scatter',\n",
       "              'uid': '4bc24efb-89ee-450f-a511-aa169477de90',\n",
       "              'x': array([datetime.datetime(2024, 1, 2, 9, 30, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 1, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 2, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          ...,\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 57, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 58, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 59, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)],\n",
       "                         dtype=object),\n",
       "              'xaxis': 'x3',\n",
       "              'y': array([1.        , 1.        , 1.        , ..., 1.01400217, 1.01400217,\n",
       "                          1.01400217]),\n",
       "              'yaxis': 'y3'},\n",
       "             {'hoverinfo': 'skip',\n",
       "              'line': {'color': 'rgba(0, 0, 0, 0)', 'width': 0},\n",
       "              'mode': 'lines',\n",
       "              'opacity': 0,\n",
       "              'showlegend': False,\n",
       "              'type': 'scatter',\n",
       "              'uid': '1c409fe2-0526-4777-adf2-b287135a36b9',\n",
       "              'x': array([datetime.datetime(2024, 1, 2, 9, 30, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 1, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 2, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          ...,\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 57, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 58, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 59, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)],\n",
       "                         dtype=object),\n",
       "              'xaxis': 'x3',\n",
       "              'y': array([1, 1, 1, ..., 1, 1, 1]),\n",
       "              'yaxis': 'y3'},\n",
       "             {'connectgaps': False,\n",
       "              'fill': 'tonexty',\n",
       "              'fillcolor': 'rgba(255, 0, 0, 0.25)',\n",
       "              'hoverinfo': 'skip',\n",
       "              'line': {'color': 'rgba(0, 0, 0, 0)', 'width': 0},\n",
       "              'mode': 'lines',\n",
       "              'opacity': 0,\n",
       "              'showlegend': False,\n",
       "              'type': 'scatter',\n",
       "              'uid': '19e679ec-6091-4d93-930e-7269833d92a3',\n",
       "              'x': array([datetime.datetime(2024, 1, 2, 9, 30, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 1, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 2, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          ...,\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 57, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 58, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 59, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)],\n",
       "                         dtype=object),\n",
       "              'xaxis': 'x3',\n",
       "              'y': array([1., 1., 1., ..., 1., 1., 1.]),\n",
       "              'yaxis': 'y3'},\n",
       "             {'legendgroup': '1',\n",
       "              'line': {'color': '#9467bd'},\n",
       "              'mode': 'lines',\n",
       "              'name': 'Value',\n",
       "              'showlegend': True,\n",
       "              'type': 'scatter',\n",
       "              'uid': 'f8a1d4e0-d6f3-46ce-9d3e-df09f8d7a206',\n",
       "              'x': array([datetime.datetime(2024, 1, 2, 9, 30, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 1, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 2, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          ...,\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 57, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 58, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 59, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)],\n",
       "                         dtype=object),\n",
       "              'xaxis': 'x3',\n",
       "              'y': array([1.        , 1.        , 1.        , ..., 1.01400217, 1.01400217,\n",
       "                          1.01400217]),\n",
       "              'yaxis': 'y3'},\n",
       "             {'hoverinfo': 'skip',\n",
       "              'line': {'color': 'rgba(0, 0, 0, 0)', 'width': 0},\n",
       "              'mode': 'lines',\n",
       "              'opacity': 0.0,\n",
       "              'showlegend': False,\n",
       "              'type': 'scatter',\n",
       "              'uid': 'fcc468a9-d6f9-416b-abbe-d59fcd5e9118',\n",
       "              'x': array([datetime.datetime(2024, 1, 2, 9, 30, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 1, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 1, 2, 9, 30, 2, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          ...,\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 57, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 58, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>),\n",
       "                          datetime.datetime(2024, 2, 28, 15, 59, 59, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)],\n",
       "                         dtype=object),\n",
       "              'xaxis': 'x3',\n",
       "              'y': array([1, 1, 1, ..., 1, 1, 1]),\n",
       "              'yaxis': 'y3'}],\n",
       "    'layout': {'annotations': [{'font': {'size': 16},\n",
       "                                'showarrow': False,\n",
       "                                'text': 'Orders',\n",
       "                                'x': 0.5,\n",
       "                                'xanchor': 'center',\n",
       "                                'xref': 'paper',\n",
       "                                'y': 1.0,\n",
       "                                'yanchor': 'bottom',\n",
       "                                'yref': 'paper'},\n",
       "                               {'font': {'size': 16},\n",
       "                                'showarrow': False,\n",
       "                                'text': 'Trade PnL',\n",
       "                                'x': 0.5,\n",
       "                                'xanchor': 'center',\n",
       "                                'xref': 'paper',\n",
       "                                'y': 0.6527777777777777,\n",
       "                                'yanchor': 'bottom',\n",
       "                                'yref': 'paper'},\n",
       "                               {'font': {'size': 16},\n",
       "                                'showarrow': False,\n",
       "                                'text': 'Cumulative Returns',\n",
       "                                'x': 0.5,\n",
       "                                'xanchor': 'center',\n",
       "                                'xref': 'paper',\n",
       "                                'y': 0.3055555555555555,\n",
       "                                'yanchor': 'bottom',\n",
       "                                'yref': 'paper'}],\n",
       "               'height': 960,\n",
       "               'legend': {'orientation': 'h',\n",
       "                          'traceorder': 'normal',\n",
       "                          'x': 1,\n",
       "                          'xanchor': 'right',\n",
       "                          'y': 1.0416666666666667,\n",
       "                          'yanchor': 'bottom'},\n",
       "               'margin': {'b': 30, 'l': 30, 'r': 30, 't': 30},\n",
       "               'shapes': [{'line': {'color': 'gray', 'dash': 'dash'},\n",
       "                           'type': 'line',\n",
       "                           'x0': 0.0,\n",
       "                           'x1': 1.0,\n",
       "                           'xref': 'paper',\n",
       "                           'y0': 0,\n",
       "                           'y1': 0,\n",
       "                           'yref': 'y2'},\n",
       "                          {'line': {'color': 'gray', 'dash': 'dash'},\n",
       "                           'type': 'line',\n",
       "                           'x0': 0.0,\n",
       "                           'x1': 1.0,\n",
       "                           'xref': 'paper',\n",
       "                           'y0': 1,\n",
       "                           'y1': 1,\n",
       "                           'yref': 'y3'}],\n",
       "               'showlegend': True,\n",
       "               'template': '...',\n",
       "               'width': 1330,\n",
       "               'xaxis': {'anchor': 'y',\n",
       "                         'domain': [0.0, 1.0],\n",
       "                         'matches': 'x3',\n",
       "                         'rangeslider': {'visible': False},\n",
       "                         'showticklabels': False},\n",
       "               'xaxis2': {'anchor': 'y2', 'domain': [0.0, 1.0], 'matches': 'x3', 'showticklabels': False},\n",
       "               'xaxis3': {'anchor': 'y3', 'domain': [0.0, 1.0], 'title': {'text': 'Index'}},\n",
       "               'yaxis': {'anchor': 'x', 'domain': [0.6944444444444444, 1.0], 'title': {'text': 'Price'}},\n",
       "               'yaxis2': {'anchor': 'x2',\n",
       "                          'domain': [0.3472222222222222, 0.6527777777777777],\n",
       "                          'tickformat': '.2%',\n",
       "                          'title': {'text': 'Trade PnL'}},\n",
       "               'yaxis3': {'anchor': 'x3', 'domain': [0.0, 0.3055555555555555], 'title': {'text': 'Cumulative returns'}}}\n",
       "})"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pf.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table id=\"itables_e4d04317_1afd_463d_aafd_3eb13377e854\" class=\"display nowrap\" data-quarto-disable-processing=\"true\" style=\"table-layout:auto;width:auto;margin:auto;caption-side:bottom\">\n",
       "<thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      \n",
       "      <th>Drawdown Id</th>\n",
       "      <th>Column</th>\n",
       "      <th>Start Index</th>\n",
       "      <th>Valley Index</th>\n",
       "      <th>End Index</th>\n",
       "      <th>Start Value</th>\n",
       "      <th>Valley Value</th>\n",
       "      <th>End Value</th>\n",
       "      <th>Status</th>\n",
       "    </tr>\n",
       "  </thead><tbody><tr>\n",
       "<td style=\"vertical-align:middle; text-align:left\">\n",
       "<div style=\"float:left; margin-right: 10px;\">\n",
       "<a href=https://mwouts.github.io/itables/><svg class=\"main-svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
       "width=\"64\" viewBox=\"0 0 500 400\" style=\"font-family: 'Droid Sans', sans-serif;\">\n",
       "    <g style=\"fill:#d9d7fc\">\n",
       "        <path d=\"M100,400H500V357H100Z\" />\n",
       "        <path d=\"M100,300H400V257H100Z\" />\n",
       "        <path d=\"M0,200H400V157H0Z\" />\n",
       "        <path d=\"M100,100H500V57H100Z\" />\n",
       "        <path d=\"M100,350H500V307H100Z\" />\n",
       "        <path d=\"M100,250H400V207H100Z\" />\n",
       "        <path d=\"M0,150H400V107H0Z\" />\n",
       "        <path d=\"M100,50H500V7H100Z\" />\n",
       "    </g>\n",
       "    <g style=\"fill:#1a1366;stroke:#1a1366;\">\n",
       "   <rect x=\"100\" y=\"7\" width=\"400\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;400;0\"\n",
       "      dur=\"5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "      <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"100;100;500\"\n",
       "      dur=\"5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <rect x=\"0\" y=\"107\" width=\"400\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;400;0\"\n",
       "      dur=\"3.5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "    <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"0;0;400\"\n",
       "      dur=\"3.5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <rect x=\"100\" y=\"207\" width=\"300\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;300;0\"\n",
       "      dur=\"3s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "    <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"100;100;400\"\n",
       "      dur=\"3s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <rect x=\"100\" y=\"307\" width=\"400\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;400;0\"\n",
       "      dur=\"4s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "      <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"100;100;500\"\n",
       "      dur=\"4s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <g style=\"fill:transparent;stroke-width:8; stroke-linejoin:round\" rx=\"5\">\n",
       "            <g transform=\"translate(45 50) rotate(-45)\">\n",
       "                <circle r=\"33\" cx=\"0\" cy=\"0\" />\n",
       "                <rect x=\"-8\" y=\"32\" width=\"16\" height=\"30\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(450 152)\">\n",
       "                <polyline points=\"-15,-20 -35,-20 -35,40 25,40 25,20\" />\n",
       "                <rect x=\"-15\" y=\"-40\" width=\"60\" height=\"60\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(50 352)\">\n",
       "                <polygon points=\"-35,-5 0,-40 35,-5\" />\n",
       "                <polygon points=\"-35,10 0,45 35,10\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(75 250)\">\n",
       "                <polyline points=\"-30,30 -60,0 -30,-30\" />\n",
       "                <polyline points=\"0,30 -30,0 0,-30\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(425 250) rotate(180)\">\n",
       "                <polyline points=\"-30,30 -60,0 -30,-30\" />\n",
       "                <polyline points=\"0,30 -30,0 0,-30\" />\n",
       "            </g>\n",
       "        </g>\n",
       "    </g>\n",
       "</svg>\n",
       "</a>\n",
       "</div>\n",
       "<div>\n",
       "Loading ITables v2.0.1 from the <code>init_notebook_mode</code> cell...\n",
       "(need <a href=https://mwouts.github.io/itables/troubleshooting.html>help</a>?)</td>\n",
       "</div>\n",
       "</tr></tbody>\n",
       "\n",
       "</table>\n",
       "<script type=\"module\">\n",
       "    const { DataTable, jQuery: $ } = await import(window._datatables_src_for_itables_2_0_1);\n",
       "\n",
       "    document.querySelectorAll(\"#itables_e4d04317_1afd_463d_aafd_3eb13377e854:not(.dataTable)\").forEach(table => {\n",
       "        // Define the table data\n",
       "        const data = [[0, \"(0.0018, 0.0068)\", \"2024-01-03 09:31:04-05:00\", \"2024-01-03 09:31:05-05:00\", \"2024-01-03 09:31:06-05:00\", 100.0, 99.983303, 100.057784, \"Recovered\"], [1, \"(0.0018, 0.0068)\", \"2024-01-03 09:31:07-05:00\", \"2024-01-03 09:31:10-05:00\", \"2024-01-03 09:31:11-05:00\", 100.057784, 100.042888, 100.102472, \"Recovered\"], [2, \"(0.0018, 0.0068)\", \"2024-01-03 09:31:11-05:00\", \"2024-01-03 09:31:13-05:00\", \"2024-01-03 09:31:16-05:00\", 100.102472, 100.057784, 100.102472, \"Recovered\"], [3, \"(0.0018, 0.0068)\", \"2024-01-03 09:31:18-05:00\", \"2024-01-03 09:32:39-05:00\", \"2024-01-03 09:48:05-05:00\", 100.162057, 99.650958, 100.171522, \"Recovered\"], [4, \"(0.0018, 0.0068)\", \"2024-01-03 09:48:07-05:00\", \"2024-01-03 09:48:08-05:00\", \"2024-01-03 09:48:11-05:00\", 100.186396, 100.171522, 100.201269, \"Recovered\"], [5, \"(0.0018, 0.0068)\", \"2024-01-03 09:48:11-05:00\", \"2024-01-03 09:48:19-05:00\", \"2024-01-03 09:48:21-05:00\", 100.201269, 100.156947, 100.245591, \"Recovered\"], [6, \"(0.0018, 0.0068)\", \"2024-01-03 09:48:21-05:00\", \"2024-01-03 09:48:25-05:00\", \"2024-01-03 09:48:28-05:00\", 100.245591, 100.201269, 100.245889, \"Recovered\"], [7, \"(0.0018, 0.0068)\", \"2024-01-03 09:48:30-05:00\", \"2024-01-03 09:48:34-05:00\", \"2024-01-03 09:48:35-05:00\", 100.251541, 100.233693, 100.260465, \"Recovered\"], [8, \"(0.0018, 0.0068)\", \"2024-01-03 09:48:35-05:00\", \"2024-01-03 09:48:37-05:00\", \"2024-01-03 09:48:39-05:00\", 100.260465, 100.245889, 100.299433, \"Recovered\"], [9, \"(0.0018, 0.0068)\", \"2024-01-03 09:48:41-05:00\", \"2024-01-03 09:48:46-05:00\", \"2024-01-03 09:48:59-05:00\", 100.335129, 100.275635, 100.350002, \"Recovered\"], [10, \"(0.0018, 0.0068)\", \"2024-01-03 09:49:00-05:00\", \"2024-01-03 09:49:01-05:00\", \"2024-01-03 09:49:07-05:00\", 100.364875, 100.325015, 100.364875, \"Recovered\"], [11, \"(0.0018, 0.0068)\", \"2024-01-03 09:49:07-05:00\", \"2024-01-03 09:49:10-05:00\", \"2024-01-03 09:49:12-05:00\", 100.364875, 100.32442, 100.364875, \"Recovered\"], [12, \"(0.0018, 0.0068)\", \"2024-01-03 09:49:13-05:00\", \"2024-01-03 10:06:10-05:00\", \"2024-01-03 10:45:27-05:00\", 100.424368, 99.833899, 100.424368, \"Recovered\"], [13, \"(0.0018, 0.0068)\", \"2024-01-03 10:45:29-05:00\", \"2024-01-11 09:35:47-05:00\", \"2024-01-11 09:35:50-05:00\", 100.439241, 100.420797, 100.451035, \"Recovered\"], [14, \"(0.0018, 0.0068)\", \"2024-01-11 09:35:51-05:00\", \"2024-01-11 09:35:54-05:00\", \"2024-01-11 09:36:03-05:00\", 100.496392, 100.451035, 100.496392, \"Recovered\"], [15, \"(0.0018, 0.0068)\", \"2024-01-11 09:36:03-05:00\", \"2024-01-11 09:36:04-05:00\", \"2024-01-11 09:36:05-05:00\", 100.496392, 100.481273, 100.503347, \"Recovered\"], [16, \"(0.0018, 0.0068)\", \"2024-01-11 09:36:05-05:00\", \"2024-01-11 09:36:06-05:00\", \"2024-01-11 09:36:08-05:00\", 100.503347, 100.481576, 100.511512, \"Recovered\"], [17, \"(0.0018, 0.0068)\", \"2024-01-11 09:36:10-05:00\", \"2024-01-11 09:36:11-05:00\", \"2024-01-11 09:36:12-05:00\", 100.556869, 100.544773, 100.556869, \"Recovered\"], [18, \"(0.0018, 0.0068)\", \"2024-01-11 09:36:16-05:00\", \"2024-01-11 09:36:20-05:00\", \"2024-01-11 09:36:21-05:00\", 100.617345, 100.603133, 100.632464, \"Recovered\"], [19, \"(0.0018, 0.0068)\", \"2024-01-11 09:36:21-05:00\", \"2024-01-11 09:36:32-05:00\", \"2024-01-11 09:36:38-05:00\", 100.632464, 100.54175, 100.662702, \"Recovered\"], [20, \"(0.0018, 0.0068)\", \"2024-01-11 09:36:39-05:00\", \"2024-01-11 09:36:40-05:00\", \"2024-01-11 09:36:46-05:00\", 100.69294, 100.662702, 100.69294, \"Recovered\"], [21, \"(0.0018, 0.0068)\", \"2024-01-11 09:36:47-05:00\", \"2024-01-11 09:36:48-05:00\", \"2024-01-11 09:36:50-05:00\", 100.69294, 100.676007, 100.69294, \"Recovered\"], [22, \"(0.0018, 0.0068)\", \"2024-01-11 09:36:51-05:00\", \"2024-01-11 09:36:52-05:00\", \"2024-01-11 09:36:53-05:00\", 100.69294, 100.691126, 100.69294, \"Recovered\"], [23, \"(0.0018, 0.0068)\", \"2024-01-11 09:36:53-05:00\", \"2024-01-12 09:50:59-05:00\", \"2024-01-12 10:04:15-05:00\", 100.69294, 99.943925, 100.698305, \"Recovered\"], [24, \"(0.0018, 0.0068)\", \"2024-01-12 10:04:15-05:00\", \"2024-01-12 10:04:18-05:00\", \"2024-01-12 10:04:21-05:00\", 100.698305, 100.675913, 100.729403, \"Recovered\"], [25, \"(0.0018, 0.0068)\", \"2024-01-12 10:04:24-05:00\", \"2024-01-12 10:04:25-05:00\", \"2024-01-12 10:04:26-05:00\", 100.752417, 100.744953, 100.760502, \"Recovered\"], [26, \"(0.0018, 0.0068)\", \"2024-01-12 10:04:26-05:00\", \"2024-01-12 11:36:51-05:00\", \"2024-01-12 11:37:51-05:00\", 100.760502, 100.145357, 100.762396, \"Recovered\"], [27, \"(0.0018, 0.0068)\", \"2024-01-12 11:37:51-05:00\", \"2024-01-12 11:39:37-05:00\", \"2024-01-12 11:40:41-05:00\", 100.762396, 100.299617, 100.793248, \"Recovered\"], [28, \"(0.0018, 0.0068)\", \"2024-01-12 11:40:42-05:00\", \"2024-01-12 11:40:43-05:00\", \"2024-01-12 11:40:44-05:00\", 100.870378, 100.854952, 100.870378, \"Recovered\"], [29, \"(0.0018, 0.0068)\", \"2024-01-12 11:40:44-05:00\", \"2024-01-12 11:40:45-05:00\", \"2024-01-12 11:40:46-05:00\", 100.870378, 100.859888, 100.870378, \"Recovered\"], [30, \"(0.0018, 0.0068)\", \"2024-01-12 12:20:52-05:00\", \"2024-01-12 12:20:56-05:00\", \"2024-01-12 12:20:59-05:00\", 100.871849, 100.827231, 100.888952, \"Recovered\"], [31, \"(0.0018, 0.0068)\", \"2024-01-12 12:21:06-05:00\", \"2024-01-12 12:21:10-05:00\", \"2024-01-12 12:21:12-05:00\", 100.919813, 100.897285, 100.919813, \"Recovered\"], [32, \"(0.0018, 0.0068)\", \"2024-01-12 12:21:17-05:00\", \"2024-01-12 12:21:50-05:00\", \"2024-01-12 12:23:23-05:00\", 100.981534, 100.75008, 100.981534, \"Recovered\"], [33, \"(0.0018, 0.0068)\", \"2024-01-12 12:23:23-05:00\", \"2024-01-12 12:23:25-05:00\", \"2024-01-12 12:23:26-05:00\", 100.981534, 100.935243, 100.981534, \"Recovered\"], [34, \"(0.0018, 0.0068)\", \"2024-01-12 12:23:26-05:00\", \"2024-01-12 12:23:28-05:00\", \"2024-01-12 12:23:29-05:00\", 100.981534, 100.968881, 101.043254, \"Recovered\"], [35, \"(0.0018, 0.0068)\", \"2024-01-12 12:23:31-05:00\", \"2024-01-12 12:26:27-05:00\", \"2024-01-12 12:32:23-05:00\", 101.089545, 100.858092, 101.089545, \"Recovered\"], [36, \"(0.0018, 0.0068)\", \"2024-01-12 12:32:23-05:00\", \"2024-01-12 12:32:24-05:00\", \"2024-01-12 12:32:25-05:00\", 101.089545, 101.074115, 101.089545, \"Recovered\"], [37, \"(0.0018, 0.0068)\", \"2024-01-12 12:32:27-05:00\", \"2024-01-12 12:32:28-05:00\", \"2024-01-12 12:32:36-05:00\", 101.104975, 101.089545, 101.104975, \"Recovered\"], [38, \"(0.0018, 0.0068)\", \"2024-01-12 12:32:36-05:00\", \"2024-02-21 09:35:15-05:00\", \"2024-02-28 15:59:59-05:00\", 101.104975, 99.788058, 99.788058, \"Active\"]];\n",
       "\n",
       "        // Define the dt_args\n",
       "        let dt_args = {\"layout\": {\"topStart\": \"pageLength\", \"topEnd\": \"search\", \"bottomStart\": \"info\", \"bottomEnd\": \"paging\"}, \"order\": [], \"warn_on_dom\": true};\n",
       "        dt_args[\"data\"] = data;\n",
       "\n",
       "        \n",
       "        new DataTable(table, dt_args);\n",
       "    });\n",
       "</script>\n"
      ],
      "text/plain": [
       "    Drawdown Id            Column               Start Index  \\\n",
       "0             0  (0.0018, 0.0068) 2024-01-03 09:31:04-05:00   \n",
       "1             1  (0.0018, 0.0068) 2024-01-03 09:31:07-05:00   \n",
       "2             2  (0.0018, 0.0068) 2024-01-03 09:31:11-05:00   \n",
       "3             3  (0.0018, 0.0068) 2024-01-03 09:31:18-05:00   \n",
       "4             4  (0.0018, 0.0068) 2024-01-03 09:48:07-05:00   \n",
       "..          ...               ...                       ...   \n",
       "34           34  (0.0018, 0.0068) 2024-01-12 12:23:26-05:00   \n",
       "35           35  (0.0018, 0.0068) 2024-01-12 12:23:31-05:00   \n",
       "36           36  (0.0018, 0.0068) 2024-01-12 12:32:23-05:00   \n",
       "37           37  (0.0018, 0.0068) 2024-01-12 12:32:27-05:00   \n",
       "38           38  (0.0018, 0.0068) 2024-01-12 12:32:36-05:00   \n",
       "\n",
       "                Valley Index                 End Index  Start Value  \\\n",
       "0  2024-01-03 09:31:05-05:00 2024-01-03 09:31:06-05:00   100.000000   \n",
       "1  2024-01-03 09:31:10-05:00 2024-01-03 09:31:11-05:00   100.057784   \n",
       "2  2024-01-03 09:31:13-05:00 2024-01-03 09:31:16-05:00   100.102472   \n",
       "3  2024-01-03 09:32:39-05:00 2024-01-03 09:48:05-05:00   100.162057   \n",
       "4  2024-01-03 09:48:08-05:00 2024-01-03 09:48:11-05:00   100.186396   \n",
       "..                       ...                       ...          ...   \n",
       "34 2024-01-12 12:23:28-05:00 2024-01-12 12:23:29-05:00   100.981534   \n",
       "35 2024-01-12 12:26:27-05:00 2024-01-12 12:32:23-05:00   101.089545   \n",
       "36 2024-01-12 12:32:24-05:00 2024-01-12 12:32:25-05:00   101.089545   \n",
       "37 2024-01-12 12:32:28-05:00 2024-01-12 12:32:36-05:00   101.104975   \n",
       "38 2024-02-21 09:35:15-05:00 2024-02-28 15:59:59-05:00   101.104975   \n",
       "\n",
       "    Valley Value   End Value     Status  \n",
       "0      99.983303  100.057784  Recovered  \n",
       "1     100.042888  100.102472  Recovered  \n",
       "2     100.057784  100.102472  Recovered  \n",
       "3      99.650958  100.171522  Recovered  \n",
       "4     100.171522  100.201269  Recovered  \n",
       "..           ...         ...        ...  \n",
       "34    100.968881  101.043254  Recovered  \n",
       "35    100.858092  101.089545  Recovered  \n",
       "36    101.074115  101.089545  Recovered  \n",
       "37    101.089545  101.104975  Recovered  \n",
       "38     99.788058   99.788058     Active  \n",
       "\n",
       "[39 rows x 9 columns]"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pf.get_drawdowns().records_readable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table id=\"itables_ceb9c24f_67be_409c_b1d3_5103df9521ed\" class=\"display nowrap\" data-quarto-disable-processing=\"true\" style=\"table-layout:auto;width:auto;margin:auto;caption-side:bottom\">\n",
       "<thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      \n",
       "      <th>Order Id</th>\n",
       "      <th>Column</th>\n",
       "      <th>Signal Index</th>\n",
       "      <th>Creation Index</th>\n",
       "      <th>Fill Index</th>\n",
       "      <th>Size</th>\n",
       "      <th>Price</th>\n",
       "      <th>Fees</th>\n",
       "      <th>Side</th>\n",
       "      <th>Type</th>\n",
       "      <th>Stop Type</th>\n",
       "    </tr>\n",
       "  </thead><tbody><tr>\n",
       "<td style=\"vertical-align:middle; text-align:left\">\n",
       "<div style=\"float:left; margin-right: 10px;\">\n",
       "<a href=https://mwouts.github.io/itables/><svg class=\"main-svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
       "width=\"64\" viewBox=\"0 0 500 400\" style=\"font-family: 'Droid Sans', sans-serif;\">\n",
       "    <g style=\"fill:#d9d7fc\">\n",
       "        <path d=\"M100,400H500V357H100Z\" />\n",
       "        <path d=\"M100,300H400V257H100Z\" />\n",
       "        <path d=\"M0,200H400V157H0Z\" />\n",
       "        <path d=\"M100,100H500V57H100Z\" />\n",
       "        <path d=\"M100,350H500V307H100Z\" />\n",
       "        <path d=\"M100,250H400V207H100Z\" />\n",
       "        <path d=\"M0,150H400V107H0Z\" />\n",
       "        <path d=\"M100,50H500V7H100Z\" />\n",
       "    </g>\n",
       "    <g style=\"fill:#1a1366;stroke:#1a1366;\">\n",
       "   <rect x=\"100\" y=\"7\" width=\"400\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;400;0\"\n",
       "      dur=\"5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "      <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"100;100;500\"\n",
       "      dur=\"5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <rect x=\"0\" y=\"107\" width=\"400\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;400;0\"\n",
       "      dur=\"3.5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "    <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"0;0;400\"\n",
       "      dur=\"3.5s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <rect x=\"100\" y=\"207\" width=\"300\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;300;0\"\n",
       "      dur=\"3s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "    <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"100;100;400\"\n",
       "      dur=\"3s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <rect x=\"100\" y=\"307\" width=\"400\" height=\"43\">\n",
       "    <animate\n",
       "      attributeName=\"width\"\n",
       "      values=\"0;400;0\"\n",
       "      dur=\"4s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "      <animate\n",
       "      attributeName=\"x\"\n",
       "      values=\"100;100;500\"\n",
       "      dur=\"4s\"\n",
       "      repeatCount=\"indefinite\" />\n",
       "  </rect>\n",
       "        <g style=\"fill:transparent;stroke-width:8; stroke-linejoin:round\" rx=\"5\">\n",
       "            <g transform=\"translate(45 50) rotate(-45)\">\n",
       "                <circle r=\"33\" cx=\"0\" cy=\"0\" />\n",
       "                <rect x=\"-8\" y=\"32\" width=\"16\" height=\"30\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(450 152)\">\n",
       "                <polyline points=\"-15,-20 -35,-20 -35,40 25,40 25,20\" />\n",
       "                <rect x=\"-15\" y=\"-40\" width=\"60\" height=\"60\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(50 352)\">\n",
       "                <polygon points=\"-35,-5 0,-40 35,-5\" />\n",
       "                <polygon points=\"-35,10 0,45 35,10\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(75 250)\">\n",
       "                <polyline points=\"-30,30 -60,0 -30,-30\" />\n",
       "                <polyline points=\"0,30 -30,0 0,-30\" />\n",
       "            </g>\n",
       "\n",
       "            <g transform=\"translate(425 250) rotate(180)\">\n",
       "                <polyline points=\"-30,30 -60,0 -30,-30\" />\n",
       "                <polyline points=\"0,30 -30,0 0,-30\" />\n",
       "            </g>\n",
       "        </g>\n",
       "    </g>\n",
       "</svg>\n",
       "</a>\n",
       "</div>\n",
       "<div>\n",
       "Loading ITables v2.0.1 from the <code>init_notebook_mode</code> cell...\n",
       "(need <a href=https://mwouts.github.io/itables/troubleshooting.html>help</a>?)</td>\n",
       "</div>\n",
       "</tr></tbody>\n",
       "\n",
       "</table>\n",
       "<script type=\"module\">\n",
       "    const { DataTable, jQuery: $ } = await import(window._datatables_src_for_itables_2_0_1);\n",
       "\n",
       "    document.querySelectorAll(\"#itables_ceb9c24f_67be_409c_b1d3_5103df9521ed:not(.dataTable)\").forEach(table => {\n",
       "        // Define the table data\n",
       "        const data = [[0, 0, \"2024-01-03 09:31:06-05:00\", \"2024-01-03 09:31:06-05:00\", \"2024-01-03 09:31:06-05:00\", 2.981461, 33.535, 0.016697, \"Sell\", \"Market\", \"None\"], [1, 0, \"2024-01-03 09:31:06-05:00\", \"2024-01-03 09:48:40-05:00\", \"2024-01-03 09:48:40-05:00\", 2.981461, 33.357264, 0.016609, \"Buy\", \"Market\", \"TP\"], [2, 0, \"2024-01-04 09:33:14-05:00\", \"2024-01-04 09:33:14-05:00\", \"2024-01-04 09:33:14-05:00\", 2.976739, 33.755, 0.01678, \"Sell\", \"Market\", \"None\"], [3, 0, \"2024-01-04 09:33:14-05:00\", \"2024-01-04 09:43:31-05:00\", \"2024-01-04 09:43:31-05:00\", 2.976739, 33.821568, 0.016813, \"Buy\", \"Market\", \"TSL\"], [4, 0, \"2024-01-05 09:31:23-05:00\", \"2024-01-05 09:31:23-05:00\", \"2024-01-05 09:31:23-05:00\", 2.972516, 33.725, 0.016741, \"Sell\", \"Market\", \"None\"], [5, 0, \"2024-01-05 09:31:23-05:00\", \"2024-01-05 09:33:05-05:00\", \"2024-01-05 09:33:05-05:00\", 2.972516, 33.871808, 0.016814, \"Buy\", \"Market\", \"TSL\"], [6, 0, \"2024-01-11 09:32:06-05:00\", \"2024-01-11 09:32:06-05:00\", \"2024-01-11 09:32:06-05:00\", 3.010356, 33.145, 0.016663, \"Sell\", \"Market\", \"None\"], [7, 0, \"2024-01-11 09:32:06-05:00\", \"2024-01-11 09:33:15-05:00\", \"2024-01-11 09:33:15-05:00\", 3.010356, 33.273952, 0.016728, \"Buy\", \"Market\", \"TSL\"], [8, 0, \"2024-01-11 09:35:42-05:00\", \"2024-01-11 09:35:42-05:00\", \"2024-01-11 09:35:42-05:00\", 2.988173, 33.25, 0.016593, \"Sell\", \"Market\", \"None\"], [9, 0, \"2024-01-11 09:35:42-05:00\", \"2024-01-11 09:44:59-05:00\", \"2024-01-11 09:44:59-05:00\", 2.988173, 33.278976, 0.016607, \"Buy\", \"Market\", \"TSL\"], [10, 0, \"2024-01-12 09:31:21-05:00\", \"2024-01-12 09:31:21-05:00\", \"2024-01-12 09:31:21-05:00\", 3.06287, 32.4, 0.016573, \"Sell\", \"Market\", \"None\"], [11, 0, \"2024-01-12 09:31:21-05:00\", \"2024-01-12 09:32:02-05:00\", \"2024-01-12 09:32:02-05:00\", 3.06287, 32.55, 0.016649, \"Buy\", \"Market\", \"TSL\"], [12, 0, \"2024-01-12 09:32:44-05:00\", \"2024-01-12 09:32:44-05:00\", \"2024-01-12 09:32:44-05:00\", 3.016017, 32.74, 0.01649, \"Sell\", \"Market\", \"None\"], [13, 0, \"2024-01-12 09:32:44-05:00\", \"2024-01-12 09:34:03-05:00\", \"2024-01-12 09:34:03-05:00\", 3.016017, 32.897152, 0.016569, \"Buy\", \"Market\", \"TSL\"], [14, 0, \"2024-01-12 09:34:36-05:00\", \"2024-01-12 09:34:36-05:00\", \"2024-01-12 09:34:36-05:00\", 2.983221, 32.93, 0.016406, \"Sell\", \"Market\", \"None\"], [15, 0, \"2024-01-12 09:34:36-05:00\", \"2024-01-12 09:38:14-05:00\", \"2024-01-12 09:38:14-05:00\", 2.983221, 33.017728, 0.016449, \"Buy\", \"Market\", \"TSL\"], [16, 0, \"2024-01-12 09:38:39-05:00\", \"2024-01-12 09:38:39-05:00\", \"2024-01-12 09:38:39-05:00\", 2.960557, 33.0826, 0.016356, \"Sell\", \"Market\", \"None\"], [17, 0, \"2024-01-12 09:38:39-05:00\", \"2024-01-12 09:40:56-05:00\", \"2024-01-12 09:40:56-05:00\", 2.960557, 33.148955, 0.016389, \"Buy\", \"Market\", \"TSL\"], [18, 0, \"2024-01-12 09:41:00-05:00\", \"2024-01-12 09:41:00-05:00\", \"2024-01-12 09:41:00-05:00\", 2.952078, 33.1, 0.016318, \"Sell\", \"Market\", \"None\"], [19, 0, \"2024-01-12 09:41:00-05:00\", \"2024-01-12 09:43:42-05:00\", \"2024-01-12 09:43:42-05:00\", 2.952078, 32.92457, 0.016232, \"Buy\", \"Market\", \"TP\"], [20, 0, \"2024-01-16 09:34:33-05:00\", \"2024-01-16 09:34:33-05:00\", \"2024-01-16 09:34:33-05:00\", 3.035988, 32.345, 0.016399, \"Sell\", \"Market\", \"None\"], [21, 0, \"2024-01-16 09:34:33-05:00\", \"2024-01-16 09:36:46-05:00\", \"2024-01-16 09:36:46-05:00\", 3.035988, 32.17, 0.016311, \"Buy\", \"Market\", \"TP\"], [22, 0, \"2024-01-16 09:40:22-05:00\", \"2024-01-16 09:40:22-05:00\", \"2024-01-16 09:40:22-05:00\", 3.074211, 32.105, 0.016482, \"Sell\", \"Market\", \"None\"], [23, 0, \"2024-01-16 09:40:22-05:00\", \"2024-01-16 09:45:13-05:00\", \"2024-01-16 09:45:13-05:00\", 3.074211, 31.934843, 0.016395, \"Buy\", \"Market\", \"TP\"], [24, 0, \"2024-01-17 09:32:12-05:00\", \"2024-01-17 09:32:12-05:00\", \"2024-01-17 09:32:12-05:00\", 3.151817, 31.47, 0.016564, \"Sell\", \"Market\", \"None\"], [25, 0, \"2024-01-17 09:32:12-05:00\", \"2024-01-17 09:37:19-05:00\", \"2024-01-17 09:37:19-05:00\", 3.151817, 31.303209, 0.016477, \"Buy\", \"Market\", \"TP\"], [26, 0, \"2024-01-19 09:31:31-05:00\", \"2024-01-19 09:31:31-05:00\", \"2024-01-19 09:31:31-05:00\", 3.139535, 31.75, 0.016647, \"Sell\", \"Market\", \"None\"], [27, 0, \"2024-01-19 09:31:31-05:00\", \"2024-01-19 09:43:10-05:00\", \"2024-01-19 09:43:10-05:00\", 3.139535, 31.581725, 0.016558, \"Buy\", \"Market\", \"TP\"], [28, 0, \"2024-01-30 09:33:28-05:00\", \"2024-01-30 09:33:28-05:00\", \"2024-01-30 09:33:28-05:00\", 2.943734, 34.03, 0.016729, \"Sell\", \"Market\", \"None\"], [29, 0, \"2024-01-30 09:33:28-05:00\", \"2024-01-30 09:35:20-05:00\", \"2024-01-30 09:35:20-05:00\", 2.943734, 34.133056, 0.01678, \"Buy\", \"Market\", \"TSL\"], [30, 0, \"2024-01-30 09:36:19-05:00\", \"2024-01-30 09:36:19-05:00\", \"2024-01-30 09:36:19-05:00\", 2.925669, 34.125, 0.016673, \"Sell\", \"Market\", \"None\"], [31, 0, \"2024-01-30 09:36:19-05:00\", \"2024-01-30 09:43:13-05:00\", \"2024-01-30 09:43:13-05:00\", 2.925669, 34.223488, 0.016721, \"Buy\", \"Market\", \"TSL\"], [32, 0, \"2024-02-01 09:41:00-05:00\", \"2024-02-01 09:41:00-05:00\", \"2024-02-01 09:41:00-05:00\", 2.91326, 34.16, 0.016619, \"Sell\", \"Market\", \"None\"], [33, 0, \"2024-02-01 09:41:00-05:00\", \"2024-02-01 09:46:42-05:00\", \"2024-02-01 09:46:42-05:00\", 2.91326, 33.971, 0.016527, \"Buy\", \"Market\", \"TP\"], [34, 0, \"2024-02-02 09:32:14-05:00\", \"2024-02-02 09:32:14-05:00\", \"2024-02-02 09:32:14-05:00\", 2.983428, 33.53, 0.016706, \"Sell\", \"Market\", \"None\"], [35, 0, \"2024-02-02 09:32:14-05:00\", \"2024-02-02 09:35:01-05:00\", \"2024-02-02 09:35:01-05:00\", 2.983428, 33.352291, 0.016617, \"Buy\", \"Market\", \"TP\"], [36, 0, \"2024-02-13 09:37:41-05:00\", \"2024-02-13 09:37:41-05:00\", \"2024-02-13 09:37:41-05:00\", 3.049632, 32.965, 0.016789, \"Sell\", \"Market\", \"None\"], [37, 0, \"2024-02-13 09:37:41-05:00\", \"2024-02-13 09:40:34-05:00\", \"2024-02-13 09:40:34-05:00\", 3.049632, 32.790286, 0.0167, \"Buy\", \"Market\", \"TP\"], [38, 0, \"2024-02-14 09:31:05-05:00\", \"2024-02-14 09:31:05-05:00\", \"2024-02-14 09:31:05-05:00\", 3.058282, 33.035, 0.016872, \"Sell\", \"Market\", \"None\"], [39, 0, \"2024-02-14 09:31:05-05:00\", \"2024-02-14 09:35:03-05:00\", \"2024-02-14 09:35:03-05:00\", 3.058282, 33.03, 0.01687, \"Buy\", \"Market\", \"TSL\"], [40, 0, \"2024-02-14 09:35:21-05:00\", \"2024-02-14 09:35:21-05:00\", \"2024-02-14 09:35:21-05:00\", 3.064217, 32.965, 0.016869, \"Sell\", \"Market\", \"None\"], [41, 0, \"2024-02-14 09:35:21-05:00\", \"2024-02-14 09:46:12-05:00\", \"2024-02-14 09:46:12-05:00\", 3.064217, 33.10816, 0.016942, \"Buy\", \"Market\", \"TSL\"], [42, 0, \"2024-02-15 09:34:23-05:00\", \"2024-02-15 09:34:23-05:00\", \"2024-02-15 09:34:23-05:00\", 2.982925, 33.705, 0.01679, \"Sell\", \"Market\", \"None\"], [43, 0, \"2024-02-15 09:34:23-05:00\", \"2024-02-15 09:43:03-05:00\", \"2024-02-15 09:43:03-05:00\", 2.982925, 33.835, 0.016855, \"Buy\", \"Market\", \"TSL\"], [44, 0, \"2024-02-16 09:31:07-05:00\", \"2024-02-16 09:31:07-05:00\", \"2024-02-16 09:31:07-05:00\", 2.959449, 33.83, 0.01672, \"Sell\", \"Market\", \"None\"], [45, 0, \"2024-02-16 09:31:07-05:00\", \"2024-02-16 09:35:32-05:00\", \"2024-02-16 09:35:32-05:00\", 2.959449, 33.650701, 0.016631, \"Buy\", \"Market\", \"TP\"], [46, 0, \"2024-02-20 09:31:08-05:00\", \"2024-02-20 09:31:08-05:00\", \"2024-02-20 09:31:08-05:00\", 2.973266, 33.84, 0.016803, \"Sell\", \"Market\", \"None\"], [47, 0, \"2024-02-20 09:31:08-05:00\", \"2024-02-20 09:33:57-05:00\", \"2024-02-20 09:33:57-05:00\", 2.973266, 33.936115, 0.01685, \"Buy\", \"Market\", \"TSL\"], [48, 0, \"2024-02-21 09:31:16-05:00\", \"2024-02-21 09:31:16-05:00\", \"2024-02-21 09:31:16-05:00\", 2.993909, 33.5, 0.016749, \"Sell\", \"Market\", \"None\"], [49, 0, \"2024-02-21 09:31:16-05:00\", \"2024-02-21 09:33:55-05:00\", \"2024-02-21 09:33:55-05:00\", 2.993909, 33.32245, 0.016661, \"Buy\", \"Market\", \"TP\"], [50, 0, \"2024-02-21 09:34:52-05:00\", \"2024-02-21 09:34:52-05:00\", \"2024-02-21 09:34:52-05:00\", 3.023216, 33.34, 0.016833, \"Sell\", \"Market\", \"None\"], [51, 0, \"2024-02-21 09:34:52-05:00\", \"2024-02-21 09:45:00-05:00\", \"2024-02-21 09:45:00-05:00\", 3.023216, 33.33424, 0.01683, \"Buy\", \"Market\", \"TSL\"], [52, 0, \"2024-02-22 09:31:22-05:00\", \"2024-02-22 09:31:22-05:00\", \"2024-02-22 09:31:22-05:00\", 3.001125, 33.58, 0.01683, \"Sell\", \"Market\", \"None\"], [53, 0, \"2024-02-22 09:31:22-05:00\", \"2024-02-22 09:38:13-05:00\", \"2024-02-22 09:38:13-05:00\", 3.001125, 33.62, 0.01685, \"Buy\", \"Market\", \"TSL\"], [54, 0, \"2024-02-23 09:31:25-05:00\", \"2024-02-23 09:31:25-05:00\", \"2024-02-23 09:31:25-05:00\", 2.990315, 33.65, 0.016804, \"Sell\", \"Market\", \"None\"], [55, 0, \"2024-02-23 09:31:25-05:00\", \"2024-02-23 09:35:02-05:00\", \"2024-02-23 09:35:02-05:00\", 2.990315, 33.6541, 0.016806, \"Buy\", \"Market\", \"TSL\"]];\n",
       "\n",
       "        // Define the dt_args\n",
       "        let dt_args = {\"layout\": {\"topStart\": \"pageLength\", \"topEnd\": \"search\", \"bottomStart\": \"info\", \"bottomEnd\": \"paging\"}, \"order\": [], \"warn_on_dom\": true};\n",
       "        dt_args[\"data\"] = data;\n",
       "\n",
       "        \n",
       "        new DataTable(table, dt_args);\n",
       "    });\n",
       "</script>\n"
      ],
      "text/plain": [
       "    Order Id  Column              Signal Index            Creation Index  \\\n",
       "0          0       0 2024-01-03 09:31:06-05:00 2024-01-03 09:31:06-05:00   \n",
       "1          1       0 2024-01-03 09:31:06-05:00 2024-01-03 09:48:40-05:00   \n",
       "2          2       0 2024-01-04 09:33:14-05:00 2024-01-04 09:33:14-05:00   \n",
       "3          3       0 2024-01-04 09:33:14-05:00 2024-01-04 09:43:31-05:00   \n",
       "4          4       0 2024-01-05 09:31:23-05:00 2024-01-05 09:31:23-05:00   \n",
       "..       ...     ...                       ...                       ...   \n",
       "51        51       0 2024-02-21 09:34:52-05:00 2024-02-21 09:45:00-05:00   \n",
       "52        52       0 2024-02-22 09:31:22-05:00 2024-02-22 09:31:22-05:00   \n",
       "53        53       0 2024-02-22 09:31:22-05:00 2024-02-22 09:38:13-05:00   \n",
       "54        54       0 2024-02-23 09:31:25-05:00 2024-02-23 09:31:25-05:00   \n",
       "55        55       0 2024-02-23 09:31:25-05:00 2024-02-23 09:35:02-05:00   \n",
       "\n",
       "                  Fill Index      Size      Price      Fees  Side    Type  \\\n",
       "0  2024-01-03 09:31:06-05:00  2.981461  33.535000  0.016697  Sell  Market   \n",
       "1  2024-01-03 09:48:40-05:00  2.981461  33.357264  0.016609   Buy  Market   \n",
       "2  2024-01-04 09:33:14-05:00  2.976739  33.755000  0.016780  Sell  Market   \n",
       "3  2024-01-04 09:43:31-05:00  2.976739  33.821568  0.016813   Buy  Market   \n",
       "4  2024-01-05 09:31:23-05:00  2.972516  33.725000  0.016741  Sell  Market   \n",
       "..                       ...       ...        ...       ...   ...     ...   \n",
       "51 2024-02-21 09:45:00-05:00  3.023216  33.334240  0.016830   Buy  Market   \n",
       "52 2024-02-22 09:31:22-05:00  3.001125  33.580000  0.016830  Sell  Market   \n",
       "53 2024-02-22 09:38:13-05:00  3.001125  33.620000  0.016850   Buy  Market   \n",
       "54 2024-02-23 09:31:25-05:00  2.990315  33.650000  0.016804  Sell  Market   \n",
       "55 2024-02-23 09:35:02-05:00  2.990315  33.654100  0.016806   Buy  Market   \n",
       "\n",
       "   Stop Type  \n",
       "0       None  \n",
       "1         TP  \n",
       "2       None  \n",
       "3        TSL  \n",
       "4       None  \n",
       "..       ...  \n",
       "51       TSL  \n",
       "52      None  \n",
       "53       TSL  \n",
       "54      None  \n",
       "55       TSL  \n",
       "\n",
       "[56 rows x 11 columns]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pf.orders.records_readable"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
