From dc3409ac40a13e5c2fc336fee6b1d70597e43282 Mon Sep 17 00:00:00 2001 From: stevekeyharvey Date: Wed, 29 Apr 2026 16:18:42 +0000 Subject: [PATCH] refactor algo orchestrator and hedge ratio bug fix --- _On_Ice/algo_config_backup.json | 34 +- algo.ipynb | 37 +- algo_config.json | 36 +- algo_orchestrator.py | 12 +- docker-compose.yml | 2 +- engine_best_funding_rate.ipynb | 3061 +++-------- engine_best_funding_rate.py | 172 + engine_dispersion.ipynb | 8716 +------------------------------ extended.ipynb | 79 +- main.py | 176 +- modules/structs.py | 32 +- requirements.txt | 3 +- ws_aster_fund_rate_all.py | 110 + ws_extended_fund_rate_all.py | 133 + 14 files changed, 1475 insertions(+), 11128 deletions(-) create mode 100644 engine_best_funding_rate.py create mode 100644 ws_aster_fund_rate_all.py create mode 100644 ws_extended_fund_rate_all.py diff --git a/_On_Ice/algo_config_backup.json b/_On_Ice/algo_config_backup.json index 6f9bf52..45d33c5 100644 --- a/_On_Ice/algo_config_backup.json +++ b/_On_Ice/algo_config_backup.json @@ -1,13 +1,25 @@ { - "Config_Updated_Timestamp": 1777098091913, - "Allow_Ordering_Aster": false, - "Allow_Ordering_Extend": false, - "Loop_Sleep_Sec": 5.00, - "Max_Target_Notional": 0.00, - "Min_Time_To_Funding_Minutes": 10, - "Price_Worsener_Aster": 0.0, - "Price_Worsener_Extend": 0.0, - "Target_Open_Cash_Position": 10, - "Print_Summary_Each_Loop" : true, - "Flip_Side_For_Testing": false + "Updated_Timestamp": 1777433705326, + "Config": { + "Loop_Sleep_Sec": 0.0, + "Max_Order_Over_Notional_Ratio": 1.05, + "Max_Target_Notional": 0.0, + "Min_Time_To_Funding_Minutes": 60, + "Min_Fund_Rate_Pct_To_Trade": 0.0, + "Price_Worsener_Aster": 0.0, + "Price_Worsener_Extend": -0.1, + "Switch_To_Taker_Seconds": 1, + "Target_Open_Cash_Position": 10 + }, + "Logging": { + "Log_Summary_Each_Loop": false, + "Print_Summary_Each_Loop": false + }, + "Overrides": { + "Allow_Ordering_Aster": true, + "Allow_Ordering_Extend": true, + "Flatten_Open_Positions": false, + "Flip_Side_For_Testing": false + } + } \ No newline at end of file diff --git a/algo.ipynb b/algo.ipynb index 5d468f0..9c2d0cd 100644 --- a/algo.ipynb +++ b/algo.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 4, + "execution_count": 22, "id": "d1eed397", "metadata": {}, "outputs": [], @@ -13,12 +13,13 @@ "import valkey\n", "\n", "with open('algo_config.json', 'r', encoding='utf-8') as file:\n", - " ALGO_CONFIG = json.load(file, object_hook=lambda d: structs.Algo_Config(**d))" + " ALGO_CONFIG = json.load(file)\n", + " ALGO_CONFIG = structs.Algo_Config(**ALGO_CONFIG)" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 23, "id": "c6151613", "metadata": {}, "outputs": [], @@ -38,23 +39,31 @@ "1" ] }, - "execution_count": 12, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "config_update = {\n", - " # 'Min_Time_To_Funding_Minutes': 60,\n", - " # 'Allow_Ordering_Aster': True,\n", - " # 'Allow_Ordering_Extend': True,\n", - " # 'Loop_Sleep_Sec': 0.00,\n", - " # 'Min_Fund_Rate_Pct_To_Trade': 0.001,\n", - " # 'Flip_Side_For_Testing': False,\n", - " # 'Price_Worsener_Extend': 0.0,\n", - " # 'Log_Summary_Each_Loop': False,\n", - " 'Print_Summary_Each_Loop': True,\n", - " 'Flatten_Open_Positions': False,\n", + " # 'Config': {\n", + " # 'Loop_Sleep_Sec': 0.00,\n", + " # 'Min_Time_To_Funding_Minutes': 60,\n", + " # 'Min_Fund_Rate_Pct_To_Trade': 0.001,\n", + " # 'Price_Worsener_Extend': 0.0,\n", + " # 'Price_Worsener_Aster': 0.0,\n", + " # 'Switch_To_Taker_Seconds': 1,\n", + " # },\n", + " 'Logging': {\n", + " 'Log_Summary_Each_Loop': False,\n", + " 'Print_Summary_Each_Loop': True,\n", + " },\n", + " # 'Overrides': {\n", + " # 'Allow_Ordering_Aster': True,\n", + " # 'Allow_Ordering_Extend': True,\n", + " # 'Flip_Side_For_Testing': False,\n", + " # 'Flatten_Open_Positions': False,\n", + " # },\n", "}\n", "VAL_KEY.publish('fr_orchestrator_input', json.dumps(config_update))" ] diff --git a/algo_config.json b/algo_config.json index 39b370f..874d047 100644 --- a/algo_config.json +++ b/algo_config.json @@ -1,16 +1,24 @@ { - "Config_Updated_Timestamp": 1777411434591, - "Allow_Ordering_Aster": true, - "Allow_Ordering_Extend": true, - "Loop_Sleep_Sec": 0.0, - "Max_Target_Notional": 0.0, - "Min_Time_To_Funding_Minutes": 60, - "Min_Fund_Rate_Pct_To_Trade": 0.0, - "Price_Worsener_Aster": 0.0, - "Price_Worsener_Extend": -0.1, - "Target_Open_Cash_Position": 10, - "Log_Summary_Each_Loop": false, - "Print_Summary_Each_Loop": true, - "Flatten_Open_Positions": false, - "Flip_Side_For_Testing": false + "Updated_Timestamp": 1777478176165, + "Config": { + "Loop_Sleep_Sec": 0.0, + "Max_Order_Over_Notional_Ratio": 1.05, + "Max_Target_Notional": 0.0, + "Min_Time_To_Funding_Minutes": 60, + "Min_Fund_Rate_Pct_To_Trade": 0.0, + "Price_Worsener_Aster": 0.0, + "Price_Worsener_Extend": -0.1, + "Switch_To_Taker_Seconds": 1, + "Target_Open_Cash_Position": 10 + }, + "Logging": { + "Log_Summary_Each_Loop": false, + "Print_Summary_Each_Loop": true + }, + "Overrides": { + "Allow_Ordering_Aster": true, + "Allow_Ordering_Extend": true, + "Flatten_Open_Positions": false, + "Flip_Side_For_Testing": false + } } \ No newline at end of file diff --git a/algo_orchestrator.py b/algo_orchestrator.py index 12969ec..6de9cd6 100644 --- a/algo_orchestrator.py +++ b/algo_orchestrator.py @@ -26,7 +26,6 @@ load_dotenv() LOG_FILEPATH: str = os.getenv("LOGS_PATH") + '/Fund_Rate_Algo_Orchestrator.log' ALGO_CONFIG: None | dict -# ALGO_CONFIG: None | Algo_Config = None async def orchestrator() -> None: global ALGO_CONFIG @@ -35,7 +34,7 @@ async def orchestrator() -> None: VK_PUBSUB = VAL_KEY.pubsub() VK_PUBSUB.subscribe(VK_IN) - print(f"Subscribed to '{VK_IN}'. Waiting for messages...") + logging.info(f"Subscribed to '{VK_IN}'. Waiting for messages...") for message in VK_PUBSUB.listen(): if message['type'] == 'message': @@ -46,7 +45,7 @@ async def orchestrator() -> None: with open('/algo_local_drive/algo_config.json', 'r', encoding='utf-8') as f: # ALGO_CONFIG = json.load(f, object_hook=lambda d: Algo_Config(**d)) ALGO_CONFIG = json.load(f) - ALGO_CONFIG['Config_Updated_Timestamp'] = timestamp + ALGO_CONFIG['Updated_Timestamp'] = timestamp for k, v in data.items(): if ALGO_CONFIG.get(k, None) is not None: @@ -54,12 +53,11 @@ async def orchestrator() -> None: VAL_KEY.set(VK_OUT, json.dumps(ALGO_CONFIG)) with open('/algo_local_drive/algo_config.json', 'w', encoding='utf-8') as f: - # print('SAVING FILE') json.dump(ALGO_CONFIG, f, indent=4) - print(f"Algo Config Updated @ {timestamp}; {data}") + logging.info(f"Algo Config Updated @ {timestamp}; {data}") except valkey.exceptions.ConnectionError as e: - print(f"Could not connect to Valkey. Please check the publish server is up; {e}") + logging.info(f"Could not connect to Valkey. Please check the publish server is up; {e}") except KeyboardInterrupt: logging.info('ORCHESTRATOR SHUTTING DOWN...') except Exception as e: @@ -78,7 +76,7 @@ async def main() -> None: with open('/algo_local_drive/algo_config.json', 'r', encoding='utf-8') as f: # ALGO_CONFIG = json.load(f, object_hook=lambda d: Algo_Config(**d)) ALGO_CONFIG = json.load(f) - ALGO_CONFIG['Config_Updated_Timestamp'] = round(datetime.now().timestamp()*1000) + ALGO_CONFIG['Updated_Timestamp'] = round(datetime.now().timestamp()*1000) # async with engine.connect() as CON: await orchestrator() diff --git a/docker-compose.yml b/docker-compose.yml index cfa8096..2473da0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -# tail -f Fund_Rate_Algo.log Fund_Rate_Aster_User.log Fund_Rate_Aster.log Fund_Rate_Extended_FR.log Fund_Rate_Extended_OB.log Fund_Rate_Extended_Trades.log Fund_Rate_Extended_User.log +# tail -f Fund_Rate_Algo_Orchestrator.log Fund_Rate_Algo.log Fund_Rate_Aster_User.log Fund_Rate_Aster.log Fund_Rate_Extended_FR.log Fund_Rate_Extended_OB.log Fund_Rate_Extended_Trades.log Fund_Rate_Extended_User.log services: # algo: diff --git a/engine_best_funding_rate.ipynb b/engine_best_funding_rate.ipynb index c7d80a9..d5c1eba 100644 --- a/engine_best_funding_rate.ipynb +++ b/engine_best_funding_rate.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 38, + "execution_count": 28, "id": "0b5ca901", "metadata": {}, "outputs": [], @@ -12,34 +12,26 @@ "import numpy as np\n", "from datetime import datetime\n", "import time\n", - "import json\n" + "import json\n", + "import valkey\n", + "from dataclasses import dataclass, field\n", + "\n", + "VAL_KEY = valkey.Valkey(host='localhost', port=6379, db=0, decode_responses=True)" ] }, { "cell_type": "code", - "execution_count": 93, - "id": "e33ec721", + "execution_count": 29, + "id": "20665e82", "metadata": {}, "outputs": [], "source": [ - "### Extended Current FR ###\n", - "r = json.loads(requests.get('https://api.starknet.extended.exchange/api/v1/info/markets').text)\n", - "df_extend_current_mkt_stats = pd.DataFrame(r['data'])\n", - "\n", - "df_extend_current_mkt_stats['funding_rate'] = df_extend_current_mkt_stats['marketStats'].apply(lambda x: x.get('fundingRate',{}))\n", - "df_extend_current_mkt_stats['funding_rate_ts'] = df_extend_current_mkt_stats['marketStats'].apply(lambda x: x.get('nextFundingRate',{}))\n", - "df_extend_current_mkt_stats['min_order_size'] = df_extend_current_mkt_stats['tradingConfig'].apply(lambda x: x.get('minOrderSize',{}))\n", - "df_extend_current_mkt_stats['min_price_change'] = df_extend_current_mkt_stats['tradingConfig'].apply(lambda x: x.get('minPriceChange',{}))\n", - "df_extend_current_mkt_stats['max_leverage'] = df_extend_current_mkt_stats['tradingConfig'].apply(lambda x: x.get('maxLeverage',{}))\n", - "\n", - "df_extend_current_fr = df_extend_current_mkt_stats[['status','name','assetName','collateralAssetName','category','min_order_size','min_price_change','max_leverage','funding_rate','funding_rate_ts']]\n", - "df_extend_current_fr['funding_rate_ts_dt'] = pd.to_datetime(df_extend_current_fr['funding_rate_ts'], unit='ms')\n", - "df_extend_current_fr = df_extend_current_fr.loc[df_extend_current_fr['status']=='ACTIVE',:]" + "### ********** TODO: ADD IN VOLUME DATA TO FILTER MKTS ###" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "id": "53647b40", "metadata": {}, "outputs": [], @@ -56,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "id": "1f3b65ee", "metadata": {}, "outputs": [], @@ -70,27 +62,173 @@ }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 32, + "id": "e33ec721", + "metadata": {}, + "outputs": [], + "source": [ + "### Extended Current FR ###\n", + "r = json.loads(requests.get('https://api.starknet.extended.exchange/api/v1/info/markets').text)\n", + "df_extend_current_mkt_stats = pd.DataFrame(r['data'])\n", + "\n", + "df_extend_current_mkt_stats['funding_rate'] = df_extend_current_mkt_stats['marketStats'].apply(lambda x: x.get('fundingRate',{}))\n", + "df_extend_current_mkt_stats['funding_rate_ts'] = df_extend_current_mkt_stats['marketStats'].apply(lambda x: x.get('nextFundingRate',{}))\n", + "df_extend_current_mkt_stats['min_order_size'] = df_extend_current_mkt_stats['tradingConfig'].apply(lambda x: x.get('minOrderSize',{}))\n", + "df_extend_current_mkt_stats['min_price_change'] = df_extend_current_mkt_stats['tradingConfig'].apply(lambda x: x.get('minPriceChange',{}))\n", + "df_extend_current_mkt_stats['max_leverage'] = df_extend_current_mkt_stats['tradingConfig'].apply(lambda x: x.get('maxLeverage',{}))\n", + "\n", + "\n", + "# df_extend_current_fr = df_extend_current_mkt_stats[['status','name','assetName','collateralAssetName','category','min_order_size','min_price_change','max_leverage','funding_rate','funding_rate_ts']]\n", + "# df_extend_current_fr['funding_rate_ts_dt'] = pd.to_datetime(df_extend_current_fr['funding_rate_ts'], unit='ms')\n", + "# df_extend_current_fr = df_extend_current_fr.loc[df_extend_current_fr['status']=='ACTIVE',:]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "782a5d56", + "metadata": {}, + "outputs": [], + "source": [ + "@dataclass(kw_only=False)\n", + "class Asset_Leverage:\n", + " exchange: str\n", + " lh_asset: str\n", + " rh_asset: str\n", + " max_leverage: int\n", + " max_notional: float\n", + " # max_leverage_notional: list = field(default_factory=list)\n", + "\n", + "### MANUAL LEVERAGE DATA ###\n", + "LEVERAGE_BY_EXCH: list[Asset_Leverage] = [\n", + " Asset_Leverage('ASTER', 'ASTER', 'USDT', 75 , 20_000 ), Asset_Leverage('EXTEND', 'ASTER', 'USDT', 25, 400_000 ),\n", + " Asset_Leverage('ASTER', 'AAVE' , 'USDT', 10 , 115_290), Asset_Leverage('EXTEND', 'AAVE' , 'USDT', 50, 500_000 ),\n", + " Asset_Leverage('ASTER', '4' , 'USDT', 50 , 5_000 ), Asset_Leverage('EXTEND', '4' , 'USDT', 5 , 100_000 ),\n", + " Asset_Leverage('ASTER', 'BNB' , 'USDT', 100, 10_000 ), Asset_Leverage('EXTEND', 'BNB' , 'USDT', 50, 500_000 ),\n", + " Asset_Leverage('ASTER', 'BTC' , 'USDT', 150, 300_000), Asset_Leverage('EXTEND', 'BTC' , 'USDT', 50, 4_000_000),\n", + " Asset_Leverage('ASTER', 'CHIP' , 'USDT', 50 , 5_000 ), Asset_Leverage('EXTEND', 'CHIP' , 'USDT', 5 , 100_000 ),\n", + " Asset_Leverage('ASTER', 'CLU' , 'USDT', 50 , 10_000 ), Asset_Leverage('EXTEND', 'WTI' , 'USDT', 5 , 1_000_000),\n", + " Asset_Leverage('ASTER', 'DOGE' , 'USDT', 75 , 80_000 ), Asset_Leverage('EXTEND', 'DOGE' , 'USDT', 50, 500_000 ),\n", + " Asset_Leverage('ASTER', 'ENA' , 'USDT', 25 , 30_473 ), Asset_Leverage('EXTEND', 'ENA' , 'USDT', 50, 500_000 ),\n", + " Asset_Leverage('ASTER', 'ETH' , 'USDT', 150, 300_000), Asset_Leverage('EXTEND', 'ETH' , 'USDT', 50, 4_000_000),\n", + " Asset_Leverage('ASTER', 'HYPE' , 'USDT', 300, 1_000 ), Asset_Leverage('EXTEND', 'HYPE' , 'USDT', 50, 1_000_000),\n", + " Asset_Leverage('ASTER', 'INIT' , 'USDT', 50 , 5_000 ), Asset_Leverage('EXTEND', 'INIT' , 'USDT', 5 , 100_000 ),\n", + " Asset_Leverage('ASTER', 'LIT' , 'USDT', 50 , 2_500 ), Asset_Leverage('EXTEND', 'LIT' , 'USDT', 25, 400_000 ),\n", + " Asset_Leverage('ASTER', 'SOL' , 'USDT', 100, 50_000 ), Asset_Leverage('EXTEND', 'SOL' , 'USDT', 50, 1_000_000),\n", + " Asset_Leverage('ASTER', 'SUI' , 'USDT', 75 , 5_416 ), Asset_Leverage('EXTEND', 'SUI' , 'USDT', 50, 500_000 ),\n", + " Asset_Leverage('ASTER', 'TRUMP', 'USDT', 50 , 5_567 ), Asset_Leverage('EXTEND', 'TRUMP', 'USDT', 25, 400_000 ),\n", + " Asset_Leverage('ASTER', 'WLFI' , 'USDT', 25 , 104_869), Asset_Leverage('EXTEND', 'WLFI' , 'USDT', 10, 250_000 ),\n", + " Asset_Leverage('ASTER', 'XAG' , 'USDT', 100, 50_000 ), Asset_Leverage('EXTEND', 'XAG' , 'USDT', 10, 1_000_000),\n", + " Asset_Leverage('ASTER', 'XAU' , 'USDT', 75 , 2_500 ), Asset_Leverage('EXTEND', 'XAU' , 'USDT', 25, 2_000_000),\n", + " Asset_Leverage('ASTER', 'XMR' , 'USDT', 50 , 10_000 ), Asset_Leverage('EXTEND', 'XMR' , 'USDT', 25, 400_000 ),\n", + " Asset_Leverage('ASTER', 'XPT' , 'USDT', 3 , 30_000 ), Asset_Leverage('EXTEND', 'XPT' , 'USDT', 5 , 1_000_000),\n", + " Asset_Leverage('ASTER', 'XRP' , 'USDT', 100, 40_000 ), Asset_Leverage('EXTEND', 'XRP' , 'USDT', 50, 500_000 ),\n", + " Asset_Leverage('ASTER', 'ZEC' , 'USDT', 75 , 6_250 ), Asset_Leverage('EXTEND', 'ZEC' , 'USDT', 10, 250_000 ),\n", + " Asset_Leverage('ASTER', 'ZORA' , 'USDT', 5 , 100_000), Asset_Leverage('EXTEND', 'ZORA' , 'USDT', 5 , 100_000 ),\n", + "]\n", + "df_leverage_by_exch = pd.DataFrame(LEVERAGE_BY_EXCH)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, "id": "62815940", "metadata": {}, "outputs": [], "source": [ "### ASTER Current FR from Mark Price Req ###\n", - "r = json.loads(requests.get('https://fapi.asterdex.com/fapi/v3/premiumIndex').text)\n", - "df_aster_current_mkt_stats = pd.DataFrame(r)" + "# r = json.loads(requests.get('https://fapi.asterdex.com/fapi/v3/exchangeInfo').text)\n", + "# df_aster_current_mkt_stats = pd.DataFrame(r)\n", + "# ### ASTER Current FR from Mark Price Req ###\n", + "# r = json.loads(requests.get('https://fapi.asterdex.com/fapi/v3/premiumIndex').text)\n", + "# df_aster_current_mkt_stats = pd.DataFrame(r)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, + "id": "271a67c1", + "metadata": {}, + "outputs": [], + "source": [ + "### ASTER CURRENT FR - WS ###\n", + "df_aster_current_fr = pd.DataFrame(json.loads(VAL_KEY.get('fund_rate_aster_all')))\n", + "df_aster_current_fr = df_aster_current_fr[['s','E','r','T']].rename({'s':'symbol','E':'funding_rate_updated_ts_ms','r':'funding_rate','T':'next_funding_ts'}, axis=1)\n", + "df_aster_current_fr['funding_rate_updated_dt'] = pd.to_datetime(df_aster_current_fr['funding_rate_updated_ts_ms'], unit='ms')\n", + "df_aster_current_fr['funding_rate'] = df_aster_current_fr['funding_rate'].astype(float)\n", + "df_aster_current_fr['time_delta_to_next_funding'] = pd.to_datetime(df_aster_current_fr['next_funding_ts'], unit='ms') - pd.Timestamp.now()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, "id": "1ce2fde4", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "### EXTEND CURRENT FR - WS ###\n", + "df_extended_current_fr = pd.DataFrame(json.loads(VAL_KEY.get('fund_rate_extended_all')))\n", + "df_extended_current_fr = df_extended_current_fr[['symbol','funding_rate_updated_ts_ms','funding_rate']]\n", + "df_extended_current_fr['funding_rate_updated_dt'] = pd.to_datetime(df_extended_current_fr['funding_rate_updated_ts_ms'], unit='ms')\n", + "df_extended_current_fr['funding_rate'] = df_extended_current_fr['funding_rate'].astype(float)\n", + "\n", + "# df_extended_current_fr = df_extended_current_fr.merge(df_extend_current_mkt_stats[['name','assetName','status', 'funding_rate_ts','max_leverage']].rename({'name':'symbol','funding_rate_ts':'next_funding_ts'}, axis=1), on='symbol', how='left')\n", + "df_extended_current_fr = df_extended_current_fr.merge(df_extend_current_mkt_stats[['name','assetName','status', 'funding_rate_ts']].rename({'name':'symbol','funding_rate_ts':'next_funding_ts'}, axis=1), on='symbol', how='left')\n", + "df_extended_current_fr = df_extended_current_fr.loc[df_extended_current_fr['status']=='ACTIVE',:]\n", + "df_extended_current_fr['USDT_Symbol'] = df_extended_current_fr['assetName'] + 'USDT'\n", + "df_extended_current_fr['time_delta_to_next_funding'] = pd.to_datetime(df_extended_current_fr['next_funding_ts'], unit='ms') - pd.Timestamp.now()" + ] }, { "cell_type": "code", - "execution_count": 95, + "execution_count": 37, + "id": "ff88b413", + "metadata": {}, + "outputs": [], + "source": [ + "### COMBINED CURRENT FR - WS ###\n", + "df_comb_current_fr = df_extended_current_fr.merge(df_aster_current_fr, left_on='USDT_Symbol', right_on='symbol', how='inner', suffixes=('_ext', '_ast'))\n", + "df_comb_current_fr['next_funding_at_same_time'] = (abs(df_comb_current_fr['time_delta_to_next_funding_ext'].dt.total_seconds() - df_comb_current_fr['time_delta_to_next_funding_ast'].dt.total_seconds()) / 60) < 1\n", + "df_comb_current_fr['net_funding_rate'] = (df_comb_current_fr[['funding_rate_ext', 'funding_rate_ast']].max(axis=1) - df_comb_current_fr[['funding_rate_ext', 'funding_rate_ast']].min(axis=1)).where(df_comb_current_fr['next_funding_at_same_time'], df_comb_current_fr['funding_rate_ext'])\n", + "df_comb_current_fr['net_funding_rate_abs'] = df_comb_current_fr['net_funding_rate'].abs()\n", + "\n", + "### NET MULT ###\n", + "df_comb_current_fr = df_comb_current_fr.merge(df_leverage_by_exch.loc[df_leverage_by_exch['exchange']=='EXTEND'], left_on='assetName', right_on='lh_asset').merge(df_leverage_by_exch.loc[df_leverage_by_exch['exchange']=='ASTER'], left_on='assetName', right_on='lh_asset', suffixes=('_ext', '_ast'))\n", + "df_comb_current_fr['net_mult'] = 1 / ( ( 0.5 / df_comb_current_fr['max_leverage_ext'] ) + ( 0.5 / df_comb_current_fr['max_leverage_ast'] ) )\n", + "df_comb_current_fr['net_mult'] = df_comb_current_fr['net_mult'].round(2)\n", + "df_comb_current_fr['net_mult_x_net_fr_abs'] = df_comb_current_fr['net_funding_rate_abs'] * df_comb_current_fr['net_mult']" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "f5ade993", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'symbol_ast': 'CHIPUSDT', 'symbol_extended': 'CHIP-USD'}" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_best_fr_rate = df_comb_current_fr[['symbol_ext','symbol_ast','net_mult_x_net_fr_abs','net_funding_rate_abs','net_funding_rate','next_funding_at_same_time']].sort_values(by='net_mult_x_net_fr_abs', ascending=False).reset_index(drop=True)\n", + "df_best_fr_rate['hourly_dollars_per_1k'] = df_best_fr_rate['net_mult_x_net_fr_abs'] * 1000\n", + "df_best_fr_rate['hourly_dollars_per_1k'] = df_best_fr_rate['hourly_dollars_per_1k'].round(2)\n", + "\n", + "best_next_funding_pair = {'symbol_ast':df_best_fr_rate['symbol_ast'][0],'symbol_extended':df_best_fr_rate['symbol_ext'][0]}\n", + "best_next_funding_pair" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "0972d5f4", "metadata": {}, "outputs": [ { @@ -103,2413 +241,277 @@ "type": "integer" }, { - "name": "symbol", + "name": "symbol_ext", "rawType": "str", "type": "string" }, { - "name": "markPrice", + "name": "symbol_ast", "rawType": "str", "type": "string" }, { - "name": "indexPrice", - "rawType": "str", - "type": "string" + "name": "net_mult_x_net_fr_abs", + "rawType": "float64", + "type": "float" }, { - "name": "estimatedSettlePrice", - "rawType": "str", - "type": "string" + "name": "net_funding_rate_abs", + "rawType": "float64", + "type": "float" }, { - "name": "lastFundingRate", - "rawType": "str", - "type": "string" + "name": "net_funding_rate", + "rawType": "float64", + "type": "float" }, { - "name": "interestRate", - "rawType": "str", - "type": "string" + "name": "next_funding_at_same_time", + "rawType": "bool", + "type": "boolean" }, { - "name": "nextFundingTime", - "rawType": "int64", - "type": "integer" - }, - { - "name": "time", - "rawType": "int64", - "type": "integer" + "name": "hourly_dollars_per_1k", + "rawType": "float64", + "type": "float" } ], - "ref": "913c6dcd-9dae-469b-b650-2f6d0f0daf1b", + "ref": "33130419-3234-458e-82da-43648a261793", "rows": [ [ "0", - "GNSUSD", - "0.65303424", - "0.65303424", - "0.65605033", - "0", - "0", - "1777420800000", - "1777395861000" - ], - [ - "1", - "TRUTHUSDT", - "0.00951097", - "0.00948349", - "0.00943109", - "0.00003339", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "2", - "SHIELDAMZNUSDT", - "258.94240937", - "258.93119846", - "259.90487776", - "0.00010000", - "0.00010000", - "1777420800000", - "1777395861000" - ], - [ - "3", - "SBETUSDT", - "7.05523038", - "7.07923467", - "0", - "0.00005000", - "0.00005000", - "1777420800000", - "1777395861000" - ], - [ - "4", - "BANKUSDT", - "0.03394185", - "0.03391230", - "0.03407309", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "5", - "EVAAUSDT", - "0.59697429", - "0.59611547", - "0.59649345", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "6", - "USD1USD", - "0.99984196", - "0.99983617", - "0.99989566", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "7", - "XAIUSDT", - "0.01088548", - "0.01088974", - "0.01089328", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "8", - "TSLAUSDT", - "376.93647937", - "376.50759300", - "375.76013057", - "0.00002135", - "0", - "1777420800000", - "1777395861000" - ], - [ - "9", - "MONUSDT", - "0.02835699", - "0.02839655", - "0.02839121", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "10", - "PNUTUSDT", - "0.05509410", - "0.05510162", - "0.05544837", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "11", - "PENDLEUSDT", - "1.32385179", - "1.32524854", - "1.32049891", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "12", - "DEXEUSDT", - "13.58197532", - "13.58181786", - "13.51136894", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "13", - "AAPLUSD", - "270.01252500", - "270.01252500", - "269.76349859", - "0", - "0", - "1777420800000", - "1777395861000" - ], - [ - "14", - "RVVUSDT", - "0.00073491", - "0.00073491", - "0", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "15", - "AWEUSDT", - "0.05753650", - "0.05754627", - "0.05748942", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "16", - "SHELLUSDT", - "0.03519629", - "0.03519588", - "0.03538944", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "17", - "NIGHTUSDT", - "0.03381847", - "0.03385350", - "0.03391296", - "-0.00007949", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "18", - "WHITEWHALEUSDT", - "0.00704723", - "0.00730400", - "0", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "19", + "CHIP-USD", "CHIPUSDT", - "0.07014219", - "0.07044074", - "0.07094450", - "-0.00040874", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "20", - "SHIELDSTXUSDT", - "575.60191163", - "575.57699095", - "570.57478535", - "0.00010000", - "0.00010000", - "1777420800000", - "1777395861000" - ], - [ - "21", - "1000BONKUSDT", - "0.00620074", - "0.00620051", - "0.00621260", - "0.00005000", - "0.00010000", - "1777406400000", - "1777395861000" - ], - [ - "22", - "ESPUSDT", - "0.06855055", - "0.06855200", - "0.06847629", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "23", - "GRIFFAINUSDT", - "0.01795996", - "0.01795975", - "0.01794169", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "24", - "TRXUSDT", - "0.32315147", - "0.32338588", - "0.32340194", - "0.00010000", - "0.00010000", - "1777420800000", - "1777395861000" - ], - [ - "25", - "FHEUSDT", - "0.01829450", - "0.01829429", - "0.01815341", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "26", - "CHILLGUYUSDT", - "0.01110104", - "0.01107164", - "0.01109427", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "27", - "BROCCOLI714USDT", - "0.01941361", - "0.01941338", - "0.01833491", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "28", - "龙虾USDT", - "0.00796043", - "0.00795695", - "0.00793653", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "29", - "SAPIENUSDT", - "0.08997373", - "0.08997044", - "0.09021955", - "0.00005000", - "0.00010000", - "1777406400000", - "1777395861000" - ], - [ - "30", - "SOMIUSDT", - "0.18102200", - "0.18124696", - "0.18026999", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "31", - "EULUSDT", - "1.36165066", - "1.36145556", - "1.35192316", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "32", - "BREVUSDT", - "0.12533478", - "0.12533333", - "0.12536001", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "33", - "POLUSDT", - "0.09120000", - "0.09126500", - "0.09103969", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "34", - "BRKBUSDT", - "477.84225287", - "477.82156469", - "478.65998965", - "0.00010000", - "0.00010000", - "1777420800000", - "1777395861000" - ], - [ - "35", - "OKBUSDT", - "82.54935311", - "82.54870000", - "82.51664231", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "36", - "UMAUSDT", - "0.45218283", - "0.45239647", - "0.45280201", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "37", - "APEUSDT", - "0.16610000", - "0.16632824", - "0.16906922", - "-0.00052190", - "0.00010000", - "1777420800000", - "1777395861000" - ], - [ - "38", - "SHIELDAUDUSDT", - "0.71810836", - "0.71807727", - "0.71800285", - "0.00010000", - "0.00010000", - "1777420800000", - "1777395861000" - ], - [ - "39", - "AIOTUSDT", - "0.12762810", - "0.12762664", - "0.10564967", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "40", - "B2USDT", - "0.49570000", - "0.49536073", - "0.49410042", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "41", - "ZEREBROUSDT", - "0.01918084", - "0.01914622", - "0.01900181", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "42", - "OPENUSDT", - "0.25796574", - "0.25829302", - "0.24899328", - "-0.00001118", - "0.00010000", - "1777406400000", - "1777395861000" - ], - [ - "43", - "RECALLUSDT", - "0.05203046", - "0.05202986", - "0.05220656", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "44", - "SKYAIUSDT", - "0.18775044", - "0.18575818", - "0.17313396", - "0.00086555", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "45", - "VIRTUALUSDT", - "0.68739669", - "0.68777297", - "0.68797940", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "46", - "PROMUSDT", - "2.10289179", - "2.10206429", - "2.09985186", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ], - [ - "47", - "AFEEUSDT", - "1.00004330", - "1", - "1", - "0.00010000", - "0.00010000", - "1777420800000", - "1777395861000" - ], - [ - "48", - "ORDIUSD", - "4.43254760", - "4.43254760", - "4.43414974", - "0", - "0", - "1777420800000", - "1777395861000" - ], - [ - "49", - "GUSDT", - "0.00361557", - "0.00361648", - "0.00360877", - "0.00001250", - "0.00010000", - "1777399200000", - "1777395861000" - ] - ], - "shape": { - "columns": 8, - "rows": 522 - } - }, - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
symbolmarkPriceindexPriceestimatedSettlePricelastFundingRateinterestRatenextFundingTimetime
0GNSUSD0.653034240.653034240.656050330017774208000001777395861000
1TRUTHUSDT0.009510970.009483490.009431090.000033390.0001000017773992000001777395861000
2SHIELDAMZNUSDT258.94240937258.93119846259.904877760.000100000.0001000017774208000001777395861000
3SBETUSDT7.055230387.0792346700.000050000.0000500017774208000001777395861000
4BANKUSDT0.033941850.033912300.034073090.000012500.0001000017773992000001777395861000
...........................
517BLESSUSDT0.005996190.005995970.005898930.000050000.0001000017774064000001777395861000
518UNIUSD3.234153773.234153773.228809360017774208000001777395861000
519DYDXUSDT0.157561380.157547740.158820180.000100000.0001000017774208000001777395861000
520AMZNUSD258.86770000258.86770000259.864696410017774208000001777395861000
521DUSKUSDT0.126410530.126413770.12682210-0.000025900.0001000017773992000001777395861000
\n", - "

522 rows × 8 columns

\n", - "
" - ], - "text/plain": [ - " symbol markPrice indexPrice estimatedSettlePrice \\\n", - "0 GNSUSD 0.65303424 0.65303424 0.65605033 \n", - "1 TRUTHUSDT 0.00951097 0.00948349 0.00943109 \n", - "2 SHIELDAMZNUSDT 258.94240937 258.93119846 259.90487776 \n", - "3 SBETUSDT 7.05523038 7.07923467 0 \n", - "4 BANKUSDT 0.03394185 0.03391230 0.03407309 \n", - ".. ... ... ... ... \n", - "517 BLESSUSDT 0.00599619 0.00599597 0.00589893 \n", - "518 UNIUSD 3.23415377 3.23415377 3.22880936 \n", - "519 DYDXUSDT 0.15756138 0.15754774 0.15882018 \n", - "520 AMZNUSD 258.86770000 258.86770000 259.86469641 \n", - "521 DUSKUSDT 0.12641053 0.12641377 0.12682210 \n", - "\n", - " lastFundingRate interestRate nextFundingTime time \n", - "0 0 0 1777420800000 1777395861000 \n", - "1 0.00003339 0.00010000 1777399200000 1777395861000 \n", - "2 0.00010000 0.00010000 1777420800000 1777395861000 \n", - "3 0.00005000 0.00005000 1777420800000 1777395861000 \n", - "4 0.00001250 0.00010000 1777399200000 1777395861000 \n", - ".. ... ... ... ... \n", - "517 0.00005000 0.00010000 1777406400000 1777395861000 \n", - "518 0 0 1777420800000 1777395861000 \n", - "519 0.00010000 0.00010000 1777420800000 1777395861000 \n", - "520 0 0 1777420800000 1777395861000 \n", - "521 -0.00002590 0.00010000 1777399200000 1777395861000 \n", - "\n", - "[522 rows x 8 columns]" - ] - }, - "execution_count": 95, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_aster_current_mkt_stats" - ] - }, - { - "cell_type": "markdown", - "id": "68a91c34", - "metadata": {}, - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "77c46298", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "715bdb76", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.microsoft.datawrangler.viewer.v0+json": { - "columns": [ - { - "name": "index", - "rawType": "int64", - "type": "integer" - }, - { - "name": "status", - "rawType": "str", - "type": "string" - }, - { - "name": "name", - "rawType": "str", - "type": "string" - }, - { - "name": "assetName", - "rawType": "str", - "type": "string" - }, - { - "name": "collateralAssetName", - "rawType": "str", - "type": "string" - }, - { - "name": "category", - "rawType": "str", - "type": "string" - }, - { - "name": "min_order_size", - "rawType": "str", - "type": "string" - }, - { - "name": "min_price_change", - "rawType": "str", - "type": "string" - }, - { - "name": "max_leverage", - "rawType": "str", - "type": "string" - }, - { - "name": "funding_rate", - "rawType": "str", - "type": "string" - }, - { - "name": "funding_rate_ts", - "rawType": "int64", - "type": "integer" - }, - { - "name": "funding_rate_ts_dt", - "rawType": "datetime64[ms]", - "type": "datetime" - }, - { - "name": "USDT_Symbol", - "rawType": "str", - "type": "string" - } - ], - "ref": "4420b413-3494-473e-89c5-69a1ecce5e9d", - "rows": [ - [ - "0", - "ACTIVE", - "ENA-USD", - "ENA", - "USD", - "Crypto", - "100", - "0.00001", - "50.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "ENAUSDT" + "0.00352692", + "0.000388", + "-0.000388", + "False", + "3.53" ], [ "1", - "ACTIVE", - "AVNT-USD", - "AVNT", - "USD", - "Crypto", - "10", - "0.0001", - "10.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "AVNTUSDT" - ], - [ - "2", - "ACTIVE", - "EUR-USD", - "EUR", - "USD", - "TradFi", - "10", - "0.00001", - "100.00", - "0.000015", - "1777395600000", - "2026-04-28 17:00:00", - "EURUSDT" - ], - [ - "3", - "ACTIVE", - "SUI-USD", - "SUI", - "USD", - "Crypto", - "10", - "0.0001", - "50.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "SUIUSDT" - ], - [ - "4", - "ACTIVE", - "WIF-USD", - "WIF", - "USD", - "Crypto", - "10", - "0.0001", - "25.00", - "-0.000035", - "1777395600000", - "2026-04-28 17:00:00", - "WIFUSDT" - ], - [ - "5", - "ACTIVE", - "CAKE-USD", - "CAKE", - "USD", - "Crypto", - "10", - "0.0001", - "10.00", - "-0.000057", - "1777395600000", - "2026-04-28 17:00:00", - "CAKEUSDT" - ], - [ - "6", - "ACTIVE", - "MEGA-USD", - "MEGA", - "USD", - "Crypto", - "10", - "0.00001", - "5.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "MEGAUSDT" - ], - [ - "7", - "ACTIVE", - "AVAX-USD", - "AVAX", - "USD", - "Crypto", - "1", - "0.001", - "25.00", - "-0.000022", - "1777395600000", - "2026-04-28 17:00:00", - "AVAXUSDT" - ], - [ - "8", - "ACTIVE", "HYPE-USD", - "HYPE", - "USD", - "Crypto", - "0.1", - "0.001", - "50.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "HYPEUSDT" - ], - [ - "9", - "ACTIVE", - "WLFI-USD", - "WLFI", - "USD", - "Crypto", - "100", - "0.00001", - "10.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "WLFIUSDT" - ], - [ - "10", - "ACTIVE", - "INTC_24_5-USD", - "INTC_24_5", - "USD", - "TradFi", - "0.1", - "0.001", - "10.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "INTC_24_5USDT" - ], - [ - "11", - "ACTIVE", - "MSTR_24_5-USD", - "MSTR_24_5", - "USD", - "TradFi", - "0.1", - "0.01", - "10.00", - "-0.000005", - "1777395600000", - "2026-04-28 17:00:00", - "MSTR_24_5USDT" - ], - [ - "12", - "ACTIVE", - "XRP-USD", - "XRP", - "USD", - "Crypto", - "10", - "0.0001", - "50.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "XRPUSDT" - ], - [ - "13", - "ACTIVE", - "1000SHIB-USD", - "1000SHIB", - "USD", - "Crypto", - "1000", - "0.000001", - "25.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "1000SHIBUSDT" - ], - [ - "14", - "ACTIVE", - "SPX-USD", - "SPX", - "USD", - "Crypto", - "10", - "0.00001", - "10.00", - "0.000009", - "1777395600000", - "2026-04-28 17:00:00", - "SPXUSDT" - ], - [ - "15", - "ACTIVE", - "LTC-USD", - "LTC", - "USD", - "Crypto", - "0.1", - "0.01", - "25.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "LTCUSDT" - ], - [ - "16", - "ACTIVE", - "KAITO-USD", - "KAITO", - "USD", - "Crypto", - "10", - "0.0001", - "10.00", - "-0.000069", - "1777395600000", - "2026-04-28 17:00:00", - "KAITOUSDT" - ], - [ - "17", - "ACTIVE", - "MU_24_5-USD", - "MU_24_5", - "USD", - "TradFi", - "0.01", - "0.01", - "10.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "MU_24_5USDT" - ], - [ - "18", - "ACTIVE", - "MELANIA-USD", - "MELANIA", - "USD", - "Crypto", - "100", - "0.00001", - "5.00", - "0.000074", - "1777395600000", - "2026-04-28 17:00:00", - "MELANIAUSDT" - ], - [ - "19", - "ACTIVE", - "XPT-USD", - "XPT", - "USD", - "TradFi", - "0.01", - "0.1", - "5.00", - "0.000054", - "1777395600000", - "2026-04-28 17:00:00", - "XPTUSDT" - ], - [ - "20", - "ACTIVE", - "USDJPY-USD", - "USDJPY", - "USD", - "TradFi", - "0.1", - "0.001", - "25.00", - "0.000000", - "1777395600000", - "2026-04-28 17:00:00", - "USDJPYUSDT" - ], - [ - "21", - "ACTIVE", - "AZTEC-USD", - "AZTEC", - "USD", - "Crypto", - "1000", - "0.000001", - "5.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "AZTECUSDT" - ], - [ - "22", - "ACTIVE", - "AMZN_24_5-USD", - "AMZN_24_5", - "USD", - "TradFi", - "0.1", - "0.01", - "10.00", - "0.000000", - "1777395600000", - "2026-04-28 17:00:00", - "AMZN_24_5USDT" - ], - [ - "23", - "ACTIVE", - "AAVE-USD", - "AAVE", - "USD", - "Crypto", - "0.1", - "0.01", - "50.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "AAVEUSDT" - ], - [ - "24", - "ACTIVE", - "SNDK_24_5-USD", - "SNDK_24_5", - "USD", - "TradFi", - "0.01", - "0.01", - "10.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "SNDK_24_5USDT" - ], - [ - "25", - "ACTIVE", - "POPCAT-USD", - "POPCAT", - "USD", - "Crypto", - "10", - "0.00001", - "10.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "POPCATUSDT" - ], - [ - "26", - "ACTIVE", - "APT-USD", - "APT", - "USD", - "Crypto", - "1", - "0.0001", - "25.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "APTUSDT" - ], - [ - "27", - "ACTIVE", - "PUMP-USD", - "PUMP", - "USD", - "Crypto", - "1000", - "0.000001", - "50.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "PUMPUSDT" - ], - [ - "28", - "ACTIVE", - "SOL-USD", - "SOL", - "USD", - "Crypto", - "0.1", - "0.01", - "50.00", - "0.000000", - "1777395600000", - "2026-04-28 17:00:00", - "SOLUSDT" - ], - [ - "29", - "ACTIVE", - "OP-USD", - "OP", - "USD", - "Crypto", - "10", - "0.0001", - "25.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "OPUSDT" - ], - [ - "31", - "ACTIVE", - "PLTR_24_5-USD", - "PLTR_24_5", - "USD", - "TradFi", - "0.1", - "0.01", - "10.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "PLTR_24_5USDT" - ], - [ - "32", - "ACTIVE", - "TIA-USD", - "TIA", - "USD", - "Crypto", - "10", - "0.0001", - "25.00", - "-0.000032", - "1777395600000", - "2026-04-28 17:00:00", - "TIAUSDT" - ], - [ - "33", - "ACTIVE", - "VVV-USD", - "VVV", - "USD", - "Crypto", - "1", - "0.0001", - "5.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "VVVUSDT" - ], - [ - "34", - "ACTIVE", - "S-USD", - "S", - "USD", - "Crypto", - "100", - "0.00001", - "10.00", - "-0.000030", - "1777395600000", - "2026-04-28 17:00:00", - "SUSDT" - ], - [ - "35", - "ACTIVE", - "BABA_24_5-USD", - "BABA_24_5", - "USD", - "TradFi", - "0.1", - "0.01", - "10.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "BABA_24_5USDT" - ], - [ - "36", - "ACTIVE", - "UNI-USD", - "UNI", - "USD", - "Crypto", - "1", - "0.0001", - "25.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "UNIUSDT" - ], - [ - "37", - "ACTIVE", - "XLM-USD", - "XLM", - "USD", - "Crypto", - "100", - "0.00001", - "10.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "XLMUSDT" - ], - [ - "38", - "ACTIVE", - "HOOD_24_5-USD", - "HOOD_24_5", - "USD", - "TradFi", - "0.1", - "0.001", - "10.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "HOOD_24_5USDT" - ], - [ - "40", - "ACTIVE", - "EDEN-USD", - "EDEN", - "USD", - "Crypto", - "100", - "0.00001", - "10.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "EDENUSDT" - ], - [ - "41", - "ACTIVE", - "SNX-USD", - "SNX", - "USD", - "Crypto", - "10", - "0.0001", - "10.00", - "-0.000025", - "1777395600000", - "2026-04-28 17:00:00", - "SNXUSDT" - ], - [ - "42", - "ACTIVE", - "TSLA_24_5-USD", - "TSLA_24_5", - "USD", - "TradFi", - "0.1", - "0.01", - "10.00", - "0.000000", - "1777395600000", - "2026-04-28 17:00:00", - "TSLA_24_5USDT" - ], - [ - "43", - "ACTIVE", - "CRV-USD", - "CRV", - "USD", - "Crypto", - "10", - "0.00001", - "25.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "CRVUSDT" - ], - [ - "44", - "ACTIVE", - "ETH-USD", - "ETH", - "USD", - "Crypto", - "0.01", - "0.1", - "50.00", - "0.000001", - "1777395600000", - "2026-04-28 17:00:00", - "ETHUSDT" - ], - [ - "45", - "ACTIVE", - "MNT-USD", - "MNT", - "USD", - "Crypto", - "10", - "0.00001", - "10.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "MNTUSDT" - ], - [ - "46", - "ACTIVE", - "CC-USD", - "CC", - "USD", - "Crypto", - "100", - "0.00001", - "5.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "CCUSDT" - ], - [ - "47", - "ACTIVE", - "PENGU-USD", - "PENGU", - "USD", - "Crypto", - "1000", - "0.000001", - "10.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "PENGUUSDT" - ], - [ - "49", - "ACTIVE", - "WLD-USD", - "WLD", - "USD", - "Crypto", - "10", - "0.0001", - "10.00", - "-0.000050", - "1777395600000", - "2026-04-28 17:00:00", - "WLDUSDT" - ], - [ - "50", - "ACTIVE", - "MON-USD", - "MON", - "USD", - "Crypto", - "100", - "0.00001", - "10.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "MONUSDT" - ], - [ - "51", - "ACTIVE", - "GOOG_24_5-USD", - "GOOG_24_5", - "USD", - "TradFi", - "0.1", - "0.01", - "10.00", - "0.000058", - "1777395600000", - "2026-04-28 17:00:00", - "GOOG_24_5USDT" - ], - [ - "52", - "ACTIVE", - "NEAR-USD", - "NEAR", - "USD", - "Crypto", - "10", - "0.0001", - "25.00", - "0.000013", - "1777395600000", - "2026-04-28 17:00:00", - "NEARUSDT" - ] - ], - "shape": { - "columns": 12, - "rows": 112 - } - }, - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
statusnameassetNamecollateralAssetNamecategorymin_order_sizemin_price_changemax_leveragefunding_ratefunding_rate_tsfunding_rate_ts_dtUSDT_Symbol
0ACTIVEENA-USDENAUSDCrypto1000.0000150.000.00001317773956000002026-04-28 17:00:00ENAUSDT
1ACTIVEAVNT-USDAVNTUSDCrypto100.000110.000.00001317773956000002026-04-28 17:00:00AVNTUSDT
2ACTIVEEUR-USDEURUSDTradFi100.00001100.000.00001517773956000002026-04-28 17:00:00EURUSDT
3ACTIVESUI-USDSUIUSDCrypto100.000150.000.00001317773956000002026-04-28 17:00:00SUIUSDT
4ACTIVEWIF-USDWIFUSDCrypto100.000125.00-0.00003517773956000002026-04-28 17:00:00WIFUSDT
.......................................
112ACTIVEFARTCOIN-USDFARTCOINUSDCrypto100.0000125.000.00001317773956000002026-04-28 17:00:00FARTCOINUSDT
113ACTIVEZORA-USDZORAUSDCrypto10000.0000015.000.00001317773956000002026-04-28 17:00:00ZORAUSDT
114ACTIVEAPEX-USDAPEXUSDCrypto100.0000110.000.00001317773956000002026-04-28 17:00:00APEXUSDT
117ACTIVEZRO-USDZROUSDCrypto100.000110.000.00001317773956000002026-04-28 17:00:00ZROUSDT
118ACTIVEAMD_24_5-USDAMD_24_5USDTradFi0.10.0110.000.00000017773956000002026-04-28 17:00:00AMD_24_5USDT
\n", - "

112 rows × 12 columns

\n", - "
" - ], - "text/plain": [ - " status name assetName collateralAssetName category \\\n", - "0 ACTIVE ENA-USD ENA USD Crypto \n", - "1 ACTIVE AVNT-USD AVNT USD Crypto \n", - "2 ACTIVE EUR-USD EUR USD TradFi \n", - "3 ACTIVE SUI-USD SUI USD Crypto \n", - "4 ACTIVE WIF-USD WIF USD Crypto \n", - ".. ... ... ... ... ... \n", - "112 ACTIVE FARTCOIN-USD FARTCOIN USD Crypto \n", - "113 ACTIVE ZORA-USD ZORA USD Crypto \n", - "114 ACTIVE APEX-USD APEX USD Crypto \n", - "117 ACTIVE ZRO-USD ZRO USD Crypto \n", - "118 ACTIVE AMD_24_5-USD AMD_24_5 USD TradFi \n", - "\n", - " min_order_size min_price_change max_leverage funding_rate \\\n", - "0 100 0.00001 50.00 0.000013 \n", - "1 10 0.0001 10.00 0.000013 \n", - "2 10 0.00001 100.00 0.000015 \n", - "3 10 0.0001 50.00 0.000013 \n", - "4 10 0.0001 25.00 -0.000035 \n", - ".. ... ... ... ... \n", - "112 10 0.00001 25.00 0.000013 \n", - "113 1000 0.000001 5.00 0.000013 \n", - "114 10 0.00001 10.00 0.000013 \n", - "117 10 0.0001 10.00 0.000013 \n", - "118 0.1 0.01 10.00 0.000000 \n", - "\n", - " funding_rate_ts funding_rate_ts_dt USDT_Symbol \n", - "0 1777395600000 2026-04-28 17:00:00 ENAUSDT \n", - "1 1777395600000 2026-04-28 17:00:00 AVNTUSDT \n", - "2 1777395600000 2026-04-28 17:00:00 EURUSDT \n", - "3 1777395600000 2026-04-28 17:00:00 SUIUSDT \n", - "4 1777395600000 2026-04-28 17:00:00 WIFUSDT \n", - ".. ... ... ... \n", - "112 1777395600000 2026-04-28 17:00:00 FARTCOINUSDT \n", - "113 1777395600000 2026-04-28 17:00:00 ZORAUSDT \n", - "114 1777395600000 2026-04-28 17:00:00 APEXUSDT \n", - "117 1777395600000 2026-04-28 17:00:00 ZROUSDT \n", - "118 1777395600000 2026-04-28 17:00:00 AMD_24_5USDT \n", - "\n", - "[112 rows x 12 columns]" - ] - }, - "execution_count": 62, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_extend_current_fr['USDT_Symbol'] = df_extend_current_fr['assetName'] + 'USDT'\n", - "df_extend_current_fr[['USDT_Symbol','funding_rate_ts_dt','funding_rate']]" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "9bba65de", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.microsoft.datawrangler.viewer.v0+json": { - "columns": [ - { - "name": "index", - "rawType": "int64", - "type": "integer" - }, - { - "name": "USDT_Symbol", - "rawType": "str", - "type": "string" - }, - { - "name": "funding_rate_ts_dt_ex", - "rawType": "datetime64[ms]", - "type": "datetime" - }, - { - "name": "funding_rate_ex", - "rawType": "str", - "type": "string" - }, - { - "name": "symbol", - "rawType": "str", - "type": "string" - }, - { - "name": "funding_rate_ts_dt_as", - "rawType": "datetime64[ms]", - "type": "datetime" - }, - { - "name": "funding_rate_as", - "rawType": "str", - "type": "string" - } - ], - "ref": "53abeb1d-c6eb-4ba9-a9d7-54c0004f0dec", - "rows": [ - [ - "0", - "ENAUSDT", - "2026-04-28 17:00:00", - "0.000013", - "ENAUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "1", - "AVNTUSDT", - "2026-04-28 17:00:00", - "0.000013", - "AVNTUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "HYPEUSDT", + "0.00111423", + "1.3e-05", + "1.3e-05", + "False", + "1.11" ], [ "2", - "EURUSDT", - "2026-04-28 17:00:00", - "0.000015", - null, - null, - null + "BTC-USD", + "BTCUSDT", + "0.000975", + "1.3e-05", + "1.3e-05", + "False", + "0.98" ], [ "3", - "SUIUSDT", - "2026-04-28 17:00:00", - "0.000013", - "SUIUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "ETH-USD", + "ETHUSDT", + "0.000975", + "1.3e-05", + "1.3e-05", + "False", + "0.98" ], [ "4", - "WIFUSDT", - "2026-04-28 17:00:00", - "-0.000035", - "WIFUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "BNB-USD", + "BNBUSDT", + "0.0008667099999999999", + "1.3e-05", + "1.3e-05", + "False", + "0.87" ], [ "5", - "CAKEUSDT", - "2026-04-28 17:00:00", - "-0.000057", - "CAKEUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "XAU-USD", + "XAUUSDT", + "0.0008625", + "2.3e-05", + "2.3e-05", + "False", + "0.86" ], [ "6", - "MEGAUSDT", - "2026-04-28 17:00:00", - "0.000013", - "MEGAUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "DOGE-USD", + "DOGEUSDT", + "0.00078", + "1.3e-05", + "1.3e-05", + "False", + "0.78" ], [ "7", - "AVAXUSDT", - "2026-04-28 17:00:00", - "-0.000022", - "AVAXUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "XMR-USD", + "XMRUSDT", + "0.0007332599999999999", + "2.2e-05", + "2.2e-05", + "False", + "0.73" ], [ "8", - "HYPEUSDT", - "2026-04-28 17:00:00", - "0.000013", - "HYPEUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "XPT-USD", + "XPTUSDT", + "0.0006299999999999999", + "0.000168", + "0.000168", + "False", + "0.63" ], [ "9", - "WLFIUSDT", - "2026-04-28 17:00:00", - "0.000013", - "WLFIUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "SUI-USD", + "SUIUSDT", + "0.00054", + "9e-06", + "-9e-06", + "False", + "0.54" ], [ "10", - "INTC_24_5USDT", - "2026-04-28 17:00:00", - "0.000013", - null, - null, - null + "ASTER-USD", + "ASTERUSDT", + "0.0004875", + "1.3e-05", + "1.3e-05", + "False", + "0.49" ], [ "11", - "MSTR_24_5USDT", - "2026-04-28 17:00:00", - "-0.000005", - null, - null, - null + "ENA-USD", + "ENAUSDT", + "0.00043328999999999997", + "1.3e-05", + "1.3e-05", + "False", + "0.43" ], [ "12", - "XRPUSDT", - "2026-04-28 17:00:00", - "0.000013", - "XRPUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "LIT-USD", + "LITUSDT", + "0.00043328999999999997", + "1.3e-05", + "1.3e-05", + "False", + "0.43" ], [ "13", - "1000SHIBUSDT", - "2026-04-28 17:00:00", - "0.000013", - "1000SHIBUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "ZEC-USD", + "ZECUSDT", + "0.00038829999999999995", + "2.2e-05", + "-2.2e-05", + "False", + "0.39" ], [ "14", - "SPXUSDT", - "2026-04-28 17:00:00", - "0.000009", - "SPXUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "SOL-USD", + "SOLUSDT", + "0.00033335000000000005", + "5e-06", + "-5e-06", + "False", + "0.33" ], [ "15", - "LTCUSDT", - "2026-04-28 17:00:00", - "0.000013", - "LTCUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "WLFI-USD", + "WLFIUSDT", + "0.00018576999999999998", + "1.3e-05", + "-1.3e-05", + "False", + "0.19" ], [ "16", - "KAITOUSDT", - "2026-04-28 17:00:00", - "-0.000069", - null, - null, - null + "XRP-USD", + "XRPUSDT", + "0.00013334", + "2e-06", + "2e-06", + "False", + "0.13" ], [ "17", - "MU_24_5USDT", - "2026-04-28 17:00:00", - "0.000013", - null, - null, - null + "INIT-USD", + "INITUSDT", + "0.00011816999999999999", + "1.3e-05", + "1.3e-05", + "False", + "0.12" ], [ "18", - "MELANIAUSDT", - "2026-04-28 17:00:00", - "0.000074", - "MELANIAUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "4-USD", + "4USDT", + "0.00011816999999999999", + "1.3e-05", + "1.3e-05", + "False", + "0.12" ], [ "19", - "XPTUSDT", - "2026-04-28 17:00:00", - "0.000054", - "XPTUSDT", - "2026-04-28 16:47:59", - "0" + "AAVE-USD", + "AAVEUSDT", + "0.00010002000000000001", + "6e-06", + "6e-06", + "False", + "0.1" ], [ "20", - "USDJPYUSDT", - "2026-04-28 17:00:00", - "0.000000", - null, - null, - null + "ZORA-USD", + "ZORAUSDT", + "6.5e-05", + "1.3e-05", + "1.3e-05", + "False", + "0.06" ], [ "21", - "AZTECUSDT", - "2026-04-28 17:00:00", - "0.000013", - "AZTECUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "XAG-USD", + "XAGUSDT", + "5.454e-05", + "3e-06", + "3e-06", + "False", + "0.05" ], [ "22", - "AMZN_24_5USDT", - "2026-04-28 17:00:00", - "0.000000", - null, - null, - null - ], - [ - "23", - "AAVEUSDT", - "2026-04-28 17:00:00", - "0.000013", - "AAVEUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "24", - "SNDK_24_5USDT", - "2026-04-28 17:00:00", - "0.000013", - null, - null, - null - ], - [ - "25", - "POPCATUSDT", - "2026-04-28 17:00:00", - "0.000013", - null, - null, - null - ], - [ - "26", - "APTUSDT", - "2026-04-28 17:00:00", - "0.000013", - "APTUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "27", - "PUMPUSDT", - "2026-04-28 17:00:00", - "0.000013", - "PUMPUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "28", - "SOLUSDT", - "2026-04-28 17:00:00", - "0.000000", - "SOLUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "29", - "OPUSDT", - "2026-04-28 17:00:00", - "0.000013", - "OPUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "30", - "PLTR_24_5USDT", - "2026-04-28 17:00:00", - "0.000013", - null, - null, - null - ], - [ - "31", - "TIAUSDT", - "2026-04-28 17:00:00", - "-0.000032", - "TIAUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "32", - "VVVUSDT", - "2026-04-28 17:00:00", - "0.000013", - "VVVUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "33", - "SUSDT", - "2026-04-28 17:00:00", - "-0.000030", - "SUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "34", - "BABA_24_5USDT", - "2026-04-28 17:00:00", - "0.000013", - null, - null, - null - ], - [ - "35", - "UNIUSDT", - "2026-04-28 17:00:00", - "0.000013", - "UNIUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "36", - "XLMUSDT", - "2026-04-28 17:00:00", - "0.000013", - "XLMUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "37", - "HOOD_24_5USDT", - "2026-04-28 17:00:00", - "0.000013", - null, - null, - null - ], - [ - "38", - "EDENUSDT", - "2026-04-28 17:00:00", - "0.000013", - "EDENUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "39", - "SNXUSDT", - "2026-04-28 17:00:00", - "-0.000025", - "SNXUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "40", - "TSLA_24_5USDT", - "2026-04-28 17:00:00", - "0.000000", - null, - null, - null - ], - [ - "41", - "CRVUSDT", - "2026-04-28 17:00:00", - "0.000013", - "CRVUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "42", - "ETHUSDT", - "2026-04-28 17:00:00", - "0.000001", - "ETHUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "43", - "MNTUSDT", - "2026-04-28 17:00:00", - "0.000013", - null, - null, - null - ], - [ - "44", - "CCUSDT", - "2026-04-28 17:00:00", - "0.000013", - "CCUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "45", - "PENGUUSDT", - "2026-04-28 17:00:00", - "0.000013", - "PENGUUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "46", - "WLDUSDT", - "2026-04-28 17:00:00", - "-0.000050", - "WLDUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "47", - "MONUSDT", - "2026-04-28 17:00:00", - "0.000013", - "MONUSDT", - "2026-04-28 16:47:59", - "0.00010000" - ], - [ - "48", - "GOOG_24_5USDT", - "2026-04-28 17:00:00", - "0.000058", - null, - null, - null - ], - [ - "49", - "NEARUSDT", - "2026-04-28 17:00:00", - "0.000013", - "NEARUSDT", - "2026-04-28 16:47:59", - "0.00010000" + "TRUMP-USD", + "TRUMPUSDT", + "3.3329999999999994e-05", + "1e-06", + "-1e-06", + "False", + "0.03" ] ], "shape": { - "columns": 6, - "rows": 112 + "columns": 7, + "rows": 23 } }, "text/html": [ @@ -2531,162 +533,322 @@ " \n", " \n", " \n", - " USDT_Symbol\n", - " funding_rate_ts_dt_ex\n", - " funding_rate_ex\n", - " symbol\n", - " funding_rate_ts_dt_as\n", - " funding_rate_as\n", + " symbol_ext\n", + " symbol_ast\n", + " net_mult_x_net_fr_abs\n", + " net_funding_rate_abs\n", + " net_funding_rate\n", + " next_funding_at_same_time\n", + " hourly_dollars_per_1k\n", " \n", " \n", " \n", " \n", " 0\n", - " ENAUSDT\n", - " 2026-04-28 17:00:00\n", - " 0.000013\n", - " ENAUSDT\n", - " 2026-04-28 16:47:59\n", - " 0.00010000\n", + " CHIP-USD\n", + " CHIPUSDT\n", + " 0.003527\n", + " 0.000388\n", + " -0.000388\n", + " False\n", + " 3.53\n", " \n", " \n", " 1\n", - " AVNTUSDT\n", - " 2026-04-28 17:00:00\n", + " HYPE-USD\n", + " HYPEUSDT\n", + " 0.001114\n", " 0.000013\n", - " AVNTUSDT\n", - " 2026-04-28 16:47:59\n", - " 0.00010000\n", + " 0.000013\n", + " False\n", + " 1.11\n", " \n", " \n", " 2\n", - " EURUSDT\n", - " 2026-04-28 17:00:00\n", - " 0.000015\n", - " NaN\n", - " NaT\n", - " NaN\n", + " BTC-USD\n", + " BTCUSDT\n", + " 0.000975\n", + " 0.000013\n", + " 0.000013\n", + " False\n", + " 0.98\n", " \n", " \n", " 3\n", - " SUIUSDT\n", - " 2026-04-28 17:00:00\n", + " ETH-USD\n", + " ETHUSDT\n", + " 0.000975\n", " 0.000013\n", - " SUIUSDT\n", - " 2026-04-28 16:47:59\n", - " 0.00010000\n", + " 0.000013\n", + " False\n", + " 0.98\n", " \n", " \n", " 4\n", - " WIFUSDT\n", - " 2026-04-28 17:00:00\n", - " -0.000035\n", - " WIFUSDT\n", - " 2026-04-28 16:47:59\n", - " 0.00010000\n", - " \n", - " \n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " \n", - " \n", - " 107\n", - " FARTCOINUSDT\n", - " 2026-04-28 17:00:00\n", + " BNB-USD\n", + " BNBUSDT\n", + " 0.000867\n", " 0.000013\n", - " FARTCOINUSDT\n", - " 2026-04-28 16:47:59\n", - " 0.00010000\n", + " 0.000013\n", + " False\n", + " 0.87\n", " \n", " \n", - " 108\n", + " 5\n", + " XAU-USD\n", + " XAUUSDT\n", + " 0.000862\n", + " 0.000023\n", + " 0.000023\n", + " False\n", + " 0.86\n", + " \n", + " \n", + " 6\n", + " DOGE-USD\n", + " DOGEUSDT\n", + " 0.000780\n", + " 0.000013\n", + " 0.000013\n", + " False\n", + " 0.78\n", + " \n", + " \n", + " 7\n", + " XMR-USD\n", + " XMRUSDT\n", + " 0.000733\n", + " 0.000022\n", + " 0.000022\n", + " False\n", + " 0.73\n", + " \n", + " \n", + " 8\n", + " XPT-USD\n", + " XPTUSDT\n", + " 0.000630\n", + " 0.000168\n", + " 0.000168\n", + " False\n", + " 0.63\n", + " \n", + " \n", + " 9\n", + " SUI-USD\n", + " SUIUSDT\n", + " 0.000540\n", + " 0.000009\n", + " -0.000009\n", + " False\n", + " 0.54\n", + " \n", + " \n", + " 10\n", + " ASTER-USD\n", + " ASTERUSDT\n", + " 0.000487\n", + " 0.000013\n", + " 0.000013\n", + " False\n", + " 0.49\n", + " \n", + " \n", + " 11\n", + " ENA-USD\n", + " ENAUSDT\n", + " 0.000433\n", + " 0.000013\n", + " 0.000013\n", + " False\n", + " 0.43\n", + " \n", + " \n", + " 12\n", + " LIT-USD\n", + " LITUSDT\n", + " 0.000433\n", + " 0.000013\n", + " 0.000013\n", + " False\n", + " 0.43\n", + " \n", + " \n", + " 13\n", + " ZEC-USD\n", + " ZECUSDT\n", + " 0.000388\n", + " 0.000022\n", + " -0.000022\n", + " False\n", + " 0.39\n", + " \n", + " \n", + " 14\n", + " SOL-USD\n", + " SOLUSDT\n", + " 0.000333\n", + " 0.000005\n", + " -0.000005\n", + " False\n", + " 0.33\n", + " \n", + " \n", + " 15\n", + " WLFI-USD\n", + " WLFIUSDT\n", + " 0.000186\n", + " 0.000013\n", + " -0.000013\n", + " False\n", + " 0.19\n", + " \n", + " \n", + " 16\n", + " XRP-USD\n", + " XRPUSDT\n", + " 0.000133\n", + " 0.000002\n", + " 0.000002\n", + " False\n", + " 0.13\n", + " \n", + " \n", + " 17\n", + " INIT-USD\n", + " INITUSDT\n", + " 0.000118\n", + " 0.000013\n", + " 0.000013\n", + " False\n", + " 0.12\n", + " \n", + " \n", + " 18\n", + " 4-USD\n", + " 4USDT\n", + " 0.000118\n", + " 0.000013\n", + " 0.000013\n", + " False\n", + " 0.12\n", + " \n", + " \n", + " 19\n", + " AAVE-USD\n", + " AAVEUSDT\n", + " 0.000100\n", + " 0.000006\n", + " 0.000006\n", + " False\n", + " 0.10\n", + " \n", + " \n", + " 20\n", + " ZORA-USD\n", " ZORAUSDT\n", - " 2026-04-28 17:00:00\n", + " 0.000065\n", " 0.000013\n", - " ZORAUSDT\n", - " 2026-04-28 16:47:59\n", - " 0.00010000\n", + " 0.000013\n", + " False\n", + " 0.06\n", " \n", " \n", - " 109\n", - " APEXUSDT\n", - " 2026-04-28 17:00:00\n", - " 0.000013\n", - " NaN\n", - " NaT\n", - " NaN\n", + " 21\n", + " XAG-USD\n", + " XAGUSDT\n", + " 0.000055\n", + " 0.000003\n", + " 0.000003\n", + " False\n", + " 0.05\n", " \n", " \n", - " 110\n", - " ZROUSDT\n", - " 2026-04-28 17:00:00\n", - " 0.000013\n", - " ZROUSDT\n", - " 2026-04-28 16:47:59\n", - " 0.00010000\n", - " \n", - " \n", - " 111\n", - " AMD_24_5USDT\n", - " 2026-04-28 17:00:00\n", - " 0.000000\n", - " NaN\n", - " NaT\n", - " NaN\n", + " 22\n", + " TRUMP-USD\n", + " TRUMPUSDT\n", + " 0.000033\n", + " 0.000001\n", + " -0.000001\n", + " False\n", + " 0.03\n", " \n", " \n", "\n", - "

112 rows × 6 columns

\n", "" ], "text/plain": [ - " USDT_Symbol funding_rate_ts_dt_ex funding_rate_ex symbol \\\n", - "0 ENAUSDT 2026-04-28 17:00:00 0.000013 ENAUSDT \n", - "1 AVNTUSDT 2026-04-28 17:00:00 0.000013 AVNTUSDT \n", - "2 EURUSDT 2026-04-28 17:00:00 0.000015 NaN \n", - "3 SUIUSDT 2026-04-28 17:00:00 0.000013 SUIUSDT \n", - "4 WIFUSDT 2026-04-28 17:00:00 -0.000035 WIFUSDT \n", - ".. ... ... ... ... \n", - "107 FARTCOINUSDT 2026-04-28 17:00:00 0.000013 FARTCOINUSDT \n", - "108 ZORAUSDT 2026-04-28 17:00:00 0.000013 ZORAUSDT \n", - "109 APEXUSDT 2026-04-28 17:00:00 0.000013 NaN \n", - "110 ZROUSDT 2026-04-28 17:00:00 0.000013 ZROUSDT \n", - "111 AMD_24_5USDT 2026-04-28 17:00:00 0.000000 NaN \n", + " symbol_ext symbol_ast net_mult_x_net_fr_abs net_funding_rate_abs \\\n", + "0 CHIP-USD CHIPUSDT 0.003527 0.000388 \n", + "1 HYPE-USD HYPEUSDT 0.001114 0.000013 \n", + "2 BTC-USD BTCUSDT 0.000975 0.000013 \n", + "3 ETH-USD ETHUSDT 0.000975 0.000013 \n", + "4 BNB-USD BNBUSDT 0.000867 0.000013 \n", + "5 XAU-USD XAUUSDT 0.000862 0.000023 \n", + "6 DOGE-USD DOGEUSDT 0.000780 0.000013 \n", + "7 XMR-USD XMRUSDT 0.000733 0.000022 \n", + "8 XPT-USD XPTUSDT 0.000630 0.000168 \n", + "9 SUI-USD SUIUSDT 0.000540 0.000009 \n", + "10 ASTER-USD ASTERUSDT 0.000487 0.000013 \n", + "11 ENA-USD ENAUSDT 0.000433 0.000013 \n", + "12 LIT-USD LITUSDT 0.000433 0.000013 \n", + "13 ZEC-USD ZECUSDT 0.000388 0.000022 \n", + "14 SOL-USD SOLUSDT 0.000333 0.000005 \n", + "15 WLFI-USD WLFIUSDT 0.000186 0.000013 \n", + "16 XRP-USD XRPUSDT 0.000133 0.000002 \n", + "17 INIT-USD INITUSDT 0.000118 0.000013 \n", + "18 4-USD 4USDT 0.000118 0.000013 \n", + "19 AAVE-USD AAVEUSDT 0.000100 0.000006 \n", + "20 ZORA-USD ZORAUSDT 0.000065 0.000013 \n", + "21 XAG-USD XAGUSDT 0.000055 0.000003 \n", + "22 TRUMP-USD TRUMPUSDT 0.000033 0.000001 \n", "\n", - " funding_rate_ts_dt_as funding_rate_as \n", - "0 2026-04-28 16:47:59 0.00010000 \n", - "1 2026-04-28 16:47:59 0.00010000 \n", - "2 NaT NaN \n", - "3 2026-04-28 16:47:59 0.00010000 \n", - "4 2026-04-28 16:47:59 0.00010000 \n", - ".. ... ... \n", - "107 2026-04-28 16:47:59 0.00010000 \n", - "108 2026-04-28 16:47:59 0.00010000 \n", - "109 NaT NaN \n", - "110 2026-04-28 16:47:59 0.00010000 \n", - "111 NaT NaN \n", - "\n", - "[112 rows x 6 columns]" + " net_funding_rate next_funding_at_same_time hourly_dollars_per_1k \n", + "0 -0.000388 False 3.53 \n", + "1 0.000013 False 1.11 \n", + "2 0.000013 False 0.98 \n", + "3 0.000013 False 0.98 \n", + "4 0.000013 False 0.87 \n", + "5 0.000023 False 0.86 \n", + "6 0.000013 False 0.78 \n", + "7 0.000022 False 0.73 \n", + "8 0.000168 False 0.63 \n", + "9 -0.000009 False 0.54 \n", + "10 0.000013 False 0.49 \n", + "11 0.000013 False 0.43 \n", + "12 0.000013 False 0.43 \n", + "13 -0.000022 False 0.39 \n", + "14 -0.000005 False 0.33 \n", + "15 -0.000013 False 0.19 \n", + "16 0.000002 False 0.13 \n", + "17 0.000013 False 0.12 \n", + "18 0.000013 False 0.12 \n", + "19 0.000006 False 0.10 \n", + "20 0.000013 False 0.06 \n", + "21 0.000003 False 0.05 \n", + "22 -0.000001 False 0.03 " ] }, - "execution_count": 70, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "df_extend_current_fr[['USDT_Symbol','funding_rate_ts_dt','funding_rate']].merge(df_aster_current_fr[['symbol','funding_rate_ts_dt','funding_rate']], how='left', left_on='USDT_Symbol', right_on='symbol', suffixes=('_ex','_as'))" + "df_best_fr_rate" ] }, { "cell_type": "code", "execution_count": null, - "id": "63226c64", + "id": "73db21ae", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": {}, "outputs": [], "source": [] @@ -2701,7 +863,6 @@ { "cell_type": "code", "execution_count": null, - "id": "37275f59", "metadata": {}, "outputs": [], "source": [] diff --git a/engine_best_funding_rate.py b/engine_best_funding_rate.py new file mode 100644 index 0000000..dd639b3 --- /dev/null +++ b/engine_best_funding_rate.py @@ -0,0 +1,172 @@ +import asyncio +import json +import logging +import os +import time +import traceback +from dataclasses import dataclass, field +from datetime import datetime +from typing import AsyncContextManager + +import pandas as pd +import requests +import valkey +from dotenv import load_dotenv + +# from sqlalchemy.ext.asyncio import create_async_engine + +### Structs ### +@dataclass(kw_only=False) +class Asset_Leverage: + exchange: str + lh_asset: str + rh_asset: str + max_leverage: int + max_notional: float + # max_leverage_notional: list = field(default_factory=list) + +### MANUAL LEVERAGE DATA ### +LEVERAGE_BY_EXCH: list[Asset_Leverage] = [ + Asset_Leverage('ASTER', 'BTC' , 'USDT', 150, 300_000), Asset_Leverage('EXTEND', 'BTC' , 'USD', 50, 4_000_000), + Asset_Leverage('ASTER', 'ETH' , 'USDT', 150, 300_000), Asset_Leverage('EXTEND', 'ETH' , 'USD', 50, 4_000_000), + Asset_Leverage('ASTER', 'LIT' , 'USDT', 50 , 2_500 ), Asset_Leverage('EXTEND', 'LIT' , 'USD', 25, 400_000 ), + Asset_Leverage('ASTER', 'CHIP' , 'USDT', 50 , 5_000 ), Asset_Leverage('EXTEND', 'CHIP' , 'USD', 5 , 100_000 ), + Asset_Leverage('ASTER', 'XAG' , 'USDT', 100, 50_000 ), Asset_Leverage('EXTEND', 'XAG' , 'USD', 10, 1_000_000), + Asset_Leverage('ASTER', '4' , 'USDT', 50 , 5_000 ), Asset_Leverage('EXTEND', '4' , 'USD', 5 , 100_000 ), + Asset_Leverage('ASTER', 'XPT' , 'USDT', 3 , 30_000 ), Asset_Leverage('EXTEND', 'XPT' , 'USD', 5 , 1_000_000), + Asset_Leverage('ASTER', 'XMR' , 'USDT', 50 , 10_000 ), Asset_Leverage('EXTEND', 'XMR' , 'USD', 25, 400_000 ), + Asset_Leverage('ASTER', 'WLFI' , 'USDT', 25 , 104_869), Asset_Leverage('EXTEND', 'WLFI' , 'USD', 10, 250_000 ), + Asset_Leverage('ASTER', 'TRUMP', 'USDT', 50 , 5_567 ), Asset_Leverage('EXTEND', 'TRUMP', 'USD', 25, 400_000 ), + Asset_Leverage('ASTER', 'INIT' , 'USDT', 50 , 5_000 ), Asset_Leverage('EXTEND', 'INIT' , 'USD', 5 , 100_000 ), + Asset_Leverage('ASTER', 'ZORA' , 'USDT', 5 , 100_000), Asset_Leverage('EXTEND', 'ZORA' , 'USD', 5 , 100_000 ), + Asset_Leverage('ASTER', 'ZEC' , 'USDT', 75 , 6_250 ), Asset_Leverage('EXTEND', 'ZEC' , 'USD', 10, 250_000 ), +] +df_leverage_by_exch = pd.DataFrame(LEVERAGE_BY_EXCH) + +### Database ### +# CON: AsyncContextManager | None = None +VAL_KEY = None +VK_OUT = 'fr_engine_best_fund_rate_output' + +### Logging ### +load_dotenv() +LOG_FILEPATH: str = os.getenv("LOGS_PATH") + '/Fund_Rate_Engine_BFR.log' + +### CONSTANTS ### +LOOP_SLEEP_SEC: int = 5 +REFRESH_MKT_INFO_EVERY_SEC: int = 90 +REFRESH_MKT_VOLUME_EVERY_SEC: int = 30 + +### GLOBALS ### +Mkt_Info_Last_Refresh_TS_ms: int +Mkt_Volume_Last_Refresh_TS_ms: int + +### Funcs - Load Data ### +def get_extended_markets_info() -> pd.DataFrame: + global Mkt_Info_Last_Refresh_TS_ms + + r = json.loads(requests.get('https://api.starknet.extended.exchange/api/v1/info/markets').text) + + df = pd.DataFrame(r['data']) + df['funding_rate'] = df['marketStats'].apply(lambda x: x.get('fundingRate',{})) + df['funding_rate_ts'] = df['marketStats'].apply(lambda x: x.get('nextFundingRate',{})) + df['min_order_size'] = df['tradingConfig'].apply(lambda x: x.get('minOrderSize',{})) + df['min_price_change'] = df['tradingConfig'].apply(lambda x: x.get('minPriceChange',{})) + df['max_leverage'] = df['tradingConfig'].apply(lambda x: x.get('maxLeverage',{})) + + Mkt_Info_Last_Refresh_TS_ms = round(datetime.now().timestamp() * 1000) + + print('Extend markets info refreshed successfully') + + return df + +def load_aster_current_fr() -> pd.DataFrame: + df = pd.DataFrame(json.loads(VAL_KEY.get('fund_rate_aster_all'))) + + df = df[['s','E','r','T']].rename({'s':'symbol','E':'funding_rate_updated_ts_ms','r':'funding_rate','T':'next_funding_ts'}, axis=1) + df['funding_rate_updated_dt'] = pd.to_datetime(df['funding_rate_updated_ts_ms'], unit='ms') + df['funding_rate'] = df['funding_rate'].astype(float) + df['time_delta_to_next_funding'] = pd.to_datetime(df['next_funding_ts'], unit='ms') - pd.Timestamp.now() + + return df + +def load_extend_current_fr(df_mkt_stats: pd.DataFrame) -> pd.DataFrame: + df = pd.DataFrame(json.loads(VAL_KEY.get('fund_rate_extended_all'))) + + df = df[['symbol','funding_rate_updated_ts_ms','funding_rate']] + df['funding_rate_updated_dt'] = pd.to_datetime(df['funding_rate_updated_ts_ms'], unit='ms') + df['funding_rate'] = df['funding_rate'].astype(float) + + df = df.merge(df_mkt_stats[['name','assetName','status', 'funding_rate_ts','max_leverage']].rename({'name':'symbol','funding_rate_ts':'next_funding_ts'}, axis=1), on='symbol', how='left') + df = df.loc[df['status']=='ACTIVE',:] + df['USDT_Symbol'] = df['assetName'] + 'USDT' + + df['time_delta_to_next_funding'] = pd.to_datetime(df['next_funding_ts'], unit='ms') - pd.Timestamp.now() + + return df + +async def loop() -> None: + global Mkt_Info_Last_Refresh_TS_ms + + df_extend_mkt_stats = get_extended_markets_info() + try: + while True: + ts_arrival = round(datetime.now().timestamp() * 1000) + if ( ts_arrival - Mkt_Info_Last_Refresh_TS_ms ) > ( REFRESH_MKT_INFO_EVERY_SEC * 1000 ): + df_extend_mkt_stats = get_extended_markets_info() + + df_aster_fr = load_aster_current_fr() + df_extend_fr = load_extend_current_fr(df_mkt_stats=df_extend_mkt_stats) + + df_comb_fr = df_extend_fr.merge(df_aster_fr, left_on='USDT_Symbol', right_on='symbol', how='inner', suffixes=('_ext', '_ast')) + df_comb_fr['next_funding_at_same_time'] = (abs(df_comb_fr['time_delta_to_next_funding_ext'].dt.total_seconds() - df_comb_fr['time_delta_to_next_funding_ast'].dt.total_seconds()) / 60) < 1 + df_comb_fr['net_funding_rate'] = (df_comb_fr[['funding_rate_ext', 'funding_rate_ast']].max(axis=1) - df_comb_fr[['funding_rate_ext', 'funding_rate_ast']].min(axis=1)).where(df_comb_fr['next_funding_at_same_time'], df_comb_fr['funding_rate_ext']) + df_comb_fr['net_funding_rate_abs'] = df_comb_fr['net_funding_rate'].abs() + + ### NET MULT ### + df_comb_fr = df_comb_fr.merge(df_leverage_by_exch.loc[df_leverage_by_exch['exchange']=='EXTEND'], left_on='assetName', right_on='lh_asset').merge(df_leverage_by_exch.loc[df_leverage_by_exch['exchange']=='ASTER'], left_on='assetName', right_on='lh_asset', suffixes=('_ext', '_ast')) + df_comb_fr['net_mult'] = 1 / ( ( 0.5 / df_comb_fr['max_leverage_ext'] ) + ( 0.5 / df_comb_fr['max_leverage_ast'] ) ) + df_comb_fr['net_mult'] = df_comb_fr['net_mult'].round(2) + df_comb_fr['net_mult_x_net_fr_abs'] = df_comb_fr['net_funding_rate_abs'] * df_comb_fr['net_mult'] + + df_best_fr_rate = df_comb_fr[['symbol_ext','symbol_ast','net_mult_x_net_fr_abs','net_funding_rate_abs','net_funding_rate','next_funding_at_same_time']].sort_values(by='net_mult_x_net_fr_abs', ascending=False).reset_index(drop=True) + best_next_funding_pair = {'symbol_aster':df_best_fr_rate['symbol_ast'][0],'symbol_extended':df_best_fr_rate['symbol_ext'][0]} + + VAL_KEY.set(VK_OUT, json.dumps(best_next_funding_pair)) + print(best_next_funding_pair) + time.sleep(LOOP_SLEEP_SEC) + continue + except valkey.exceptions.ConnectionError as e: + logging.info(f"Could not connect to Valkey. Please check the publish server is up; {e}") + except KeyboardInterrupt: + logging.info('ORCHESTRATOR SHUTTING DOWN...') + except Exception as e: + logging.error(traceback.format_exc()) + logging.critical(f'*** ORCHESTRATOR CRASHED: {e}') + + +### STARTUP ### +async def main() -> None: + global VAL_KEY + # global CON + + VAL_KEY = valkey.Valkey(host='localhost', port=6379, db=0, decode_responses=True) + # engine = create_async_engine('mysql+asyncmy://root:pwd@localhost/fund_rate') + + await loop() + +if __name__ == '__main__': + START_TIME = round(datetime.now().timestamp()*1000) + + logging.info(f'Log FilePath: {LOG_FILEPATH}') + + logging.basicConfig( + force=True, + filename=LOG_FILEPATH, + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s', + filemode='w' + ) + logging.info(f"STARTED: {START_TIME}") + + asyncio.run(main()) \ No newline at end of file diff --git a/engine_dispersion.ipynb b/engine_dispersion.ipynb index 8084eee..ef7cbed 100644 --- a/engine_dispersion.ipynb +++ b/engine_dispersion.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 97, "id": "25697582", "metadata": {}, "outputs": [], @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 98, "id": "cd9ecfde", "metadata": {}, "outputs": [ @@ -46,7 +46,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 99, "id": "60cc2366", "metadata": {}, "outputs": [], @@ -63,7 +63,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 100, "id": "55ae5271", "metadata": {}, "outputs": [], @@ -79,7 +79,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 101, "id": "2b7232e5", "metadata": {}, "outputs": [], @@ -106,8475 +106,70 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 102, "id": "f1174bae", "metadata": {}, "outputs": [], "source": [ "df_fr = funding_rate_hist_extend(market='ETH-USD')\n", "df_fr = pd.DataFrame(df_fr['data']).rename({'m':'market','f':'funding_rate','T':'timestamp'}, axis=1)\n", - "df_fr['timestamp_dt'] = pd.to_datetime(df_fr['timestamp'], unit='ms')" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "068a54b6", - "metadata": {}, - "outputs": [], - "source": [ + "df_fr['timestamp_dt'] = pd.to_datetime(df_fr['timestamp'], unit='ms')\n", + "\n", "df_aster_trades_by_sec_maker, df_aster_trades_by_sec_taker = get_24hrs_midbars(\n", " table_name='fr_aster_mkt_trades',\n", ")\n", "\n", "df_extend_trades_by_sec_maker, df_extend_trades_by_sec_taker = get_24hrs_midbars(\n", " table_name='fr_extended_mkt_trades',\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "2862e7e3", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "hovertemplate": "timestamp_trade_dt=%{x}
qty_sum=%{y}", - "legendgroup": "", - "line": { - "color": "#636efa", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "", - "showlegend": false, - "type": "scattergl", - "x": [ - "2026-04-27T15:18:00", - "2026-04-27T15:19:00", - "2026-04-27T15:20:00", - "2026-04-27T15:21:00", - "2026-04-27T15:22:00", - "2026-04-27T15:23:00", - "2026-04-27T15:24:00", - "2026-04-27T15:25:00", - "2026-04-27T15:26:00", - "2026-04-27T15:27:00", - "2026-04-27T15:28:00", - "2026-04-27T15:29:00", - "2026-04-27T15:30:00", - "2026-04-27T15:31:00", - "2026-04-27T15:32:00", - "2026-04-27T15:33:00", - "2026-04-27T15:34:00", - "2026-04-27T15:35:00", - "2026-04-27T15:36:00", - "2026-04-27T15:37:00", - "2026-04-27T15:38:00", - "2026-04-27T15:39:00", - "2026-04-27T15:40:00", - "2026-04-27T15:41:00", - "2026-04-27T15:42:00", - "2026-04-27T15:43:00", - "2026-04-27T15:44:00", - "2026-04-27T15:45:00", - "2026-04-27T15:46:00", - "2026-04-27T15:47:00", - "2026-04-27T15:48:00", - "2026-04-27T15:49:00", - "2026-04-27T15:50:00", - "2026-04-27T15:51:00", - "2026-04-27T15:52:00", - "2026-04-27T15:53:00", - "2026-04-27T15:54:00", - "2026-04-27T15:55:00", - "2026-04-27T15:56:00", - "2026-04-27T15:57:00", - "2026-04-27T15:58:00", - "2026-04-27T15:59:00", - "2026-04-27T16:00:00", - "2026-04-27T16:01:00", - "2026-04-27T16:02:00", - "2026-04-27T16:03:00", - "2026-04-27T16:04:00", - "2026-04-27T16:05:00", - "2026-04-27T16:06:00", - "2026-04-27T16:07:00", - "2026-04-27T16:08:00", - "2026-04-27T16:09:00", - "2026-04-27T16:10:00", - "2026-04-27T16:11:00", - "2026-04-27T16:12:00", - "2026-04-27T16:13:00", - "2026-04-27T16:14:00", - "2026-04-27T16:15:00", - "2026-04-27T16:16:00", - "2026-04-27T16:17:00", - "2026-04-27T16:18:00", - "2026-04-27T16:19:00", - "2026-04-27T16:20:00", - "2026-04-27T16:21:00", - "2026-04-27T16:22:00", - "2026-04-27T16:23:00", - "2026-04-27T16:24:00", - "2026-04-27T16:25:00", - "2026-04-27T16:26:00", - "2026-04-27T16:27:00", - "2026-04-27T16:28:00", - "2026-04-27T16:29:00", - "2026-04-27T16:30:00", - "2026-04-27T16:31:00", - "2026-04-27T16:32:00", - "2026-04-27T16:33:00", - "2026-04-27T16:34:00", - "2026-04-27T16:35:00", - "2026-04-27T16:36:00", - "2026-04-27T16:37:00", - "2026-04-27T16:38:00", - "2026-04-27T16:39:00", - "2026-04-27T16:40:00", - "2026-04-27T16:41:00", - "2026-04-27T16:42:00", - "2026-04-27T16:43:00", - "2026-04-27T16:44:00", - "2026-04-27T16:45:00", - "2026-04-27T16:46:00", - "2026-04-27T16:47:00", - "2026-04-27T16:48:00", - "2026-04-27T16:49:00", - "2026-04-27T16:50:00", - "2026-04-27T16:51:00", - "2026-04-27T16:52:00", - "2026-04-27T16:53:00", - "2026-04-27T16:54:00", - "2026-04-27T16:55:00", - "2026-04-27T16:56:00", - "2026-04-27T16:57:00", - "2026-04-27T16:58:00", - "2026-04-27T16:59:00", - "2026-04-27T17:00:00", - "2026-04-27T17:01:00", - "2026-04-27T17:02:00", - "2026-04-27T17:03:00", - "2026-04-27T17:04:00", - "2026-04-27T17:05:00", - "2026-04-27T17:06:00", - "2026-04-27T17:07:00", - "2026-04-27T17:08:00", - "2026-04-27T17:09:00", - "2026-04-27T17:10:00", - "2026-04-27T17:11:00", - "2026-04-27T17:12:00", - "2026-04-27T17:13:00", - "2026-04-27T17:14:00", - "2026-04-27T17:15:00", - "2026-04-27T17:16:00", - "2026-04-27T17:17:00", - "2026-04-27T17:18:00", - "2026-04-27T17:19:00", - "2026-04-27T17:20:00", - "2026-04-27T17:21:00", - "2026-04-27T17:22:00", - "2026-04-27T17:23:00", - "2026-04-27T17:24:00", - "2026-04-27T17:25:00", - "2026-04-27T17:26:00", - "2026-04-27T17:27:00", - "2026-04-27T17:28:00", - "2026-04-27T17:29:00", - "2026-04-27T17:30:00", - "2026-04-27T17:31:00", - "2026-04-27T17:32:00", - "2026-04-27T17:33:00", - "2026-04-27T17:34:00", - "2026-04-27T17:35:00", - "2026-04-27T17:36:00", - "2026-04-27T17:37:00", - "2026-04-27T17:38:00", - "2026-04-27T17:39:00", - "2026-04-27T17:40:00", - "2026-04-27T17:41:00", - "2026-04-27T17:42:00", - "2026-04-27T17:43:00", - "2026-04-27T17:44:00", - "2026-04-27T17:45:00", - "2026-04-27T17:46:00", - "2026-04-27T17:47:00", - "2026-04-27T17:48:00", - "2026-04-27T17:49:00", - "2026-04-27T17:50:00", - "2026-04-27T17:51:00", - "2026-04-27T17:52:00", - "2026-04-27T17:53:00", - "2026-04-27T17:54:00", - "2026-04-27T17:55:00", - "2026-04-27T17:56:00", - "2026-04-27T17:57:00", - "2026-04-27T17:58:00", - "2026-04-27T17:59:00", - "2026-04-27T18:00:00", - "2026-04-27T18:01:00", - "2026-04-27T18:02:00", - "2026-04-27T18:03:00", - "2026-04-27T18:04:00", - "2026-04-27T18:05:00", - "2026-04-27T18:06:00", - "2026-04-27T18:07:00", - "2026-04-27T18:08:00", - "2026-04-27T18:09:00", - "2026-04-27T18:10:00", - "2026-04-27T18:11:00", - "2026-04-27T18:12:00", - "2026-04-27T18:13:00", - "2026-04-27T18:14:00", - "2026-04-27T18:15:00", - "2026-04-27T18:16:00", - "2026-04-27T18:17:00", - "2026-04-27T18:18:00", - "2026-04-27T18:19:00", - "2026-04-27T18:20:00", - "2026-04-27T18:21:00", - "2026-04-27T18:22:00", - "2026-04-27T18:23:00", - "2026-04-27T18:24:00", - "2026-04-27T18:25:00", - "2026-04-27T18:26:00", - "2026-04-27T18:27:00", - "2026-04-27T18:28:00", - "2026-04-27T18:29:00", - "2026-04-27T18:30:00", - "2026-04-27T18:31:00", - "2026-04-27T18:32:00", - "2026-04-27T18:33:00", - "2026-04-27T18:34:00", - "2026-04-27T18:35:00", - "2026-04-27T18:36:00", - "2026-04-27T18:37:00", - "2026-04-27T18:38:00", - "2026-04-27T18:39:00", - "2026-04-27T18:40:00", - "2026-04-27T18:41:00", - "2026-04-27T18:42:00", - "2026-04-27T18:43:00", - "2026-04-27T18:44:00", - "2026-04-27T18:45:00", - "2026-04-27T18:46:00", - "2026-04-27T18:47:00", - "2026-04-27T18:48:00", - "2026-04-27T18:49:00", - "2026-04-27T18:50:00", - "2026-04-27T18:51:00", - "2026-04-27T18:52:00", - "2026-04-27T18:53:00", - "2026-04-27T18:54:00", - "2026-04-27T18:55:00", - "2026-04-27T18:56:00", - "2026-04-27T18:57:00", - "2026-04-27T18:58:00", - "2026-04-27T18:59:00", - "2026-04-27T19:00:00", - "2026-04-27T19:01:00", - "2026-04-27T19:02:00", - "2026-04-27T19:03:00", - "2026-04-27T19:04:00", - "2026-04-27T19:05:00", - "2026-04-27T19:06:00", - "2026-04-27T19:07:00", - "2026-04-27T19:08:00", - "2026-04-27T19:09:00", - "2026-04-27T19:10:00", - "2026-04-27T19:11:00", - "2026-04-27T19:12:00", - "2026-04-27T19:13:00", - "2026-04-27T19:14:00", - "2026-04-27T19:15:00", - "2026-04-27T19:16:00", - "2026-04-27T19:17:00", - "2026-04-27T19:18:00", - "2026-04-27T19:19:00", - "2026-04-27T19:20:00", - "2026-04-27T19:21:00", - "2026-04-27T19:22:00", - "2026-04-27T19:23:00", - "2026-04-27T19:24:00", - "2026-04-27T19:25:00", - "2026-04-27T19:26:00", - "2026-04-27T19:27:00", - "2026-04-27T19:28:00", - "2026-04-27T19:29:00", - "2026-04-27T19:30:00", - "2026-04-27T19:31:00", - "2026-04-27T19:32:00", - "2026-04-27T19:33:00", - "2026-04-27T19:34:00", - "2026-04-27T19:35:00", - "2026-04-27T19:36:00", - "2026-04-27T19:37:00", - "2026-04-27T19:38:00", - "2026-04-27T19:39:00", - "2026-04-27T19:40:00", - "2026-04-27T19:41:00", - "2026-04-27T19:42:00", - "2026-04-27T19:43:00", - "2026-04-27T19:44:00", - "2026-04-27T19:45:00", - "2026-04-27T19:46:00", - "2026-04-27T19:47:00", - "2026-04-27T19:48:00", - "2026-04-27T19:49:00", - "2026-04-27T19:50:00", - "2026-04-27T19:51:00", - "2026-04-27T19:52:00", - "2026-04-27T19:53:00", - "2026-04-27T19:54:00", - "2026-04-27T19:55:00", - "2026-04-27T19:56:00", - "2026-04-27T19:57:00", - "2026-04-27T19:58:00", - "2026-04-27T19:59:00", - "2026-04-27T20:00:00", - "2026-04-27T20:01:00", - "2026-04-27T20:02:00", - "2026-04-27T20:03:00", - "2026-04-27T20:04:00", - "2026-04-27T20:05:00", - "2026-04-27T20:06:00", - "2026-04-27T20:07:00", - "2026-04-27T20:08:00", - "2026-04-27T20:09:00", - "2026-04-27T20:10:00", - "2026-04-27T20:11:00", - "2026-04-27T20:12:00", - "2026-04-27T20:13:00", - "2026-04-27T20:14:00", - "2026-04-27T20:15:00", - "2026-04-27T20:16:00", - "2026-04-27T20:17:00", - "2026-04-27T20:18:00", - "2026-04-27T20:19:00", - "2026-04-27T20:20:00", - "2026-04-27T20:21:00", - "2026-04-27T20:22:00", - "2026-04-27T20:23:00", - "2026-04-27T20:24:00", - "2026-04-27T20:25:00", - "2026-04-27T20:26:00", - "2026-04-27T20:27:00", - "2026-04-27T20:28:00", - "2026-04-27T20:29:00", - "2026-04-27T20:30:00", - "2026-04-27T20:31:00", - "2026-04-27T20:32:00", - "2026-04-27T20:33:00", - "2026-04-27T20:34:00", - "2026-04-27T20:35:00", - "2026-04-27T20:36:00", - "2026-04-27T20:37:00", - "2026-04-27T20:38:00", - "2026-04-27T20:39:00", - "2026-04-27T20:40:00", - "2026-04-27T20:41:00", - "2026-04-27T20:42:00", - "2026-04-27T20:43:00", - "2026-04-27T20:44:00", - "2026-04-27T20:45:00", - "2026-04-27T20:46:00", - "2026-04-27T20:47:00", - "2026-04-27T20:48:00", - "2026-04-27T20:49:00", - "2026-04-27T20:50:00", - "2026-04-27T20:51:00", - "2026-04-27T20:52:00", - "2026-04-27T20:53:00", - "2026-04-27T20:54:00", - "2026-04-27T20:55:00", - "2026-04-27T20:56:00", - "2026-04-27T20:57:00", - "2026-04-27T20:58:00", - "2026-04-27T20:59:00", - "2026-04-27T21:00:00", - "2026-04-27T21:01:00", - "2026-04-27T21:02:00", - "2026-04-27T21:03:00", - "2026-04-27T21:04:00", - "2026-04-27T21:05:00", - "2026-04-27T21:06:00", - "2026-04-27T21:07:00", - "2026-04-27T21:08:00", - "2026-04-27T21:09:00", - "2026-04-27T21:10:00", - "2026-04-27T21:11:00", - "2026-04-27T21:12:00", - "2026-04-27T21:13:00", - "2026-04-27T21:14:00", - "2026-04-27T21:15:00", - "2026-04-27T21:16:00", - "2026-04-27T21:17:00", - "2026-04-27T21:18:00", - "2026-04-27T21:19:00", - "2026-04-27T21:20:00", - "2026-04-27T21:29:00", - "2026-04-27T21:30:00", - "2026-04-27T21:31:00", - "2026-04-27T21:32:00", - "2026-04-27T21:33:00", - "2026-04-27T21:34:00", - "2026-04-27T21:35:00", - "2026-04-27T21:36:00", - "2026-04-27T21:37:00", - "2026-04-27T21:38:00", - "2026-04-27T21:39:00", - "2026-04-27T21:40:00", - "2026-04-27T21:41:00", - "2026-04-27T21:42:00", - "2026-04-27T21:43:00", - "2026-04-27T21:44:00", - "2026-04-27T21:45:00", - "2026-04-27T21:46:00", - "2026-04-27T21:47:00", - "2026-04-27T21:48:00", - "2026-04-27T21:49:00", - "2026-04-27T21:50:00", - "2026-04-27T21:51:00", - "2026-04-27T21:52:00", - "2026-04-27T21:53:00", - "2026-04-27T21:54:00", - "2026-04-27T21:55:00", - "2026-04-27T21:56:00", - "2026-04-27T21:57:00", - "2026-04-27T21:58:00", - "2026-04-27T21:59:00", - "2026-04-27T22:00:00", - "2026-04-27T22:01:00", - "2026-04-27T22:02:00", - "2026-04-27T22:03:00", - "2026-04-27T22:04:00", - "2026-04-27T22:05:00", - "2026-04-27T22:06:00", - "2026-04-27T22:07:00", - "2026-04-27T22:08:00", - "2026-04-27T22:09:00", - "2026-04-27T22:10:00", - "2026-04-27T22:11:00", - "2026-04-27T22:12:00", - "2026-04-27T22:13:00", - "2026-04-27T22:14:00", - "2026-04-27T22:15:00", - "2026-04-27T22:16:00", - "2026-04-27T22:17:00", - "2026-04-27T22:18:00", - "2026-04-27T22:19:00", - "2026-04-27T22:20:00", - "2026-04-27T22:21:00", - "2026-04-27T22:22:00", - "2026-04-27T22:23:00", - "2026-04-27T22:24:00", - "2026-04-27T22:25:00", - "2026-04-27T22:26:00", - "2026-04-27T22:27:00", - "2026-04-27T22:28:00", - "2026-04-27T22:29:00", - "2026-04-27T22:30:00", - "2026-04-27T22:31:00", - "2026-04-27T22:32:00", - "2026-04-27T22:33:00", - "2026-04-27T22:34:00", - "2026-04-27T22:35:00", - "2026-04-27T22:36:00", - "2026-04-27T22:37:00", - "2026-04-27T22:38:00", - "2026-04-27T22:39:00", - "2026-04-27T22:40:00", - "2026-04-27T22:41:00", - "2026-04-27T22:42:00", - "2026-04-27T22:43:00", - "2026-04-27T22:44:00", - "2026-04-27T22:45:00", - "2026-04-27T22:46:00", - "2026-04-27T22:47:00", - "2026-04-27T22:48:00", - "2026-04-27T22:49:00", - "2026-04-27T22:50:00", - "2026-04-27T22:51:00", - "2026-04-27T22:52:00", - "2026-04-27T22:53:00", - "2026-04-27T22:54:00", - "2026-04-27T22:55:00", - "2026-04-27T22:56:00", - "2026-04-27T22:57:00", - "2026-04-27T22:58:00", - "2026-04-27T22:59:00", - "2026-04-27T23:00:00", - "2026-04-27T23:01:00", - "2026-04-27T23:02:00", - "2026-04-27T23:03:00", - "2026-04-27T23:04:00", - "2026-04-27T23:05:00", - "2026-04-27T23:06:00", - "2026-04-27T23:07:00", - "2026-04-27T23:08:00", - "2026-04-27T23:09:00", - "2026-04-27T23:10:00", - "2026-04-27T23:11:00", - "2026-04-27T23:12:00", - "2026-04-27T23:13:00", - "2026-04-27T23:14:00", - "2026-04-27T23:15:00", - "2026-04-27T23:16:00", - "2026-04-27T23:17:00", - "2026-04-27T23:18:00", - "2026-04-27T23:19:00", - "2026-04-27T23:20:00", - "2026-04-27T23:21:00", - "2026-04-27T23:22:00", - "2026-04-27T23:23:00", - "2026-04-27T23:24:00", - "2026-04-27T23:25:00", - "2026-04-27T23:26:00", - "2026-04-27T23:27:00", - "2026-04-27T23:28:00", - "2026-04-27T23:29:00", - "2026-04-27T23:30:00", - "2026-04-27T23:31:00", - "2026-04-27T23:32:00", - "2026-04-27T23:33:00", - "2026-04-27T23:34:00", - "2026-04-27T23:35:00", - "2026-04-27T23:36:00", - "2026-04-27T23:37:00", - "2026-04-27T23:38:00", - "2026-04-27T23:39:00", - "2026-04-27T23:40:00", - "2026-04-27T23:41:00", - "2026-04-27T23:42:00", - "2026-04-27T23:43:00", - "2026-04-27T23:44:00", - "2026-04-27T23:45:00", - "2026-04-27T23:46:00", - "2026-04-27T23:47:00", - "2026-04-27T23:48:00", - "2026-04-27T23:49:00", - "2026-04-27T23:50:00", - "2026-04-27T23:51:00", - "2026-04-27T23:52:00", - "2026-04-27T23:53:00", - "2026-04-27T23:54:00", - "2026-04-27T23:55:00", - "2026-04-27T23:56:00", - "2026-04-27T23:57:00", - "2026-04-27T23:58:00", - "2026-04-27T23:59:00", - "2026-04-28T00:00:00", - "2026-04-28T00:01:00", - "2026-04-28T00:02:00", - "2026-04-28T00:03:00", - "2026-04-28T00:04:00", - "2026-04-28T00:05:00", - "2026-04-28T00:06:00", - "2026-04-28T00:07:00", - "2026-04-28T00:08:00", - "2026-04-28T00:09:00", - "2026-04-28T00:10:00", - "2026-04-28T00:11:00", - "2026-04-28T00:12:00", - "2026-04-28T00:13:00", - "2026-04-28T00:14:00", - "2026-04-28T00:15:00", - "2026-04-28T00:16:00", - "2026-04-28T00:17:00", - "2026-04-28T00:18:00", - "2026-04-28T00:19:00", - "2026-04-28T00:20:00", - "2026-04-28T00:21:00", - "2026-04-28T00:22:00", - "2026-04-28T00:23:00", - "2026-04-28T00:24:00", - "2026-04-28T00:25:00", - "2026-04-28T00:26:00", - "2026-04-28T00:27:00", - "2026-04-28T00:28:00", - "2026-04-28T00:29:00", - "2026-04-28T00:30:00", - "2026-04-28T00:31:00", - "2026-04-28T00:32:00", - "2026-04-28T00:33:00", - "2026-04-28T00:34:00", - "2026-04-28T00:35:00", - "2026-04-28T00:36:00", - "2026-04-28T00:37:00", - "2026-04-28T00:38:00", - "2026-04-28T00:39:00", - "2026-04-28T00:40:00", - "2026-04-28T00:41:00", - "2026-04-28T00:42:00", - "2026-04-28T00:43:00", - "2026-04-28T00:44:00", - "2026-04-28T00:45:00", - "2026-04-28T00:46:00", - "2026-04-28T00:47:00", - "2026-04-28T00:48:00", - "2026-04-28T00:49:00", - "2026-04-28T00:50:00", - "2026-04-28T00:51:00", - "2026-04-28T00:52:00", - "2026-04-28T00:53:00", - "2026-04-28T00:54:00", - "2026-04-28T00:55:00", - "2026-04-28T00:56:00", - "2026-04-28T00:57:00", - "2026-04-28T00:58:00", - "2026-04-28T00:59:00", - "2026-04-28T01:00:00", - "2026-04-28T01:01:00", - "2026-04-28T01:02:00", - "2026-04-28T01:03:00", - "2026-04-28T01:04:00", - "2026-04-28T01:05:00", - "2026-04-28T01:06:00", - "2026-04-28T01:07:00", - "2026-04-28T01:08:00", - "2026-04-28T01:09:00", - "2026-04-28T01:10:00", - "2026-04-28T01:11:00", - "2026-04-28T01:12:00", - "2026-04-28T01:13:00", - "2026-04-28T01:14:00", - "2026-04-28T01:15:00", - "2026-04-28T01:16:00", - "2026-04-28T01:17:00", - "2026-04-28T01:18:00", - "2026-04-28T01:19:00", - "2026-04-28T01:20:00", - "2026-04-28T01:21:00", - "2026-04-28T01:22:00", - "2026-04-28T01:23:00", - "2026-04-28T01:24:00", - "2026-04-28T01:25:00", - "2026-04-28T01:26:00", - "2026-04-28T01:27:00", - "2026-04-28T01:28:00", - "2026-04-28T01:29:00", - "2026-04-28T01:30:00", - "2026-04-28T01:31:00", - "2026-04-28T01:32:00", - "2026-04-28T01:33:00", - "2026-04-28T01:34:00", - "2026-04-28T01:35:00", - "2026-04-28T01:36:00", - "2026-04-28T01:37:00", - "2026-04-28T01:38:00", - "2026-04-28T01:39:00", - "2026-04-28T01:40:00", - "2026-04-28T01:41:00", - "2026-04-28T01:42:00", - "2026-04-28T01:43:00", - "2026-04-28T01:44:00", - "2026-04-28T01:45:00", - "2026-04-28T01:46:00", - "2026-04-28T01:47:00", - "2026-04-28T01:48:00", - "2026-04-28T01:49:00", - "2026-04-28T01:50:00", - "2026-04-28T01:51:00", - "2026-04-28T01:52:00", - "2026-04-28T01:53:00", - "2026-04-28T01:54:00", - "2026-04-28T01:55:00", - "2026-04-28T01:56:00", - "2026-04-28T01:57:00", - "2026-04-28T01:58:00", - "2026-04-28T01:59:00", - "2026-04-28T02:00:00", - "2026-04-28T02:01:00", - "2026-04-28T02:02:00", - "2026-04-28T02:03:00", - "2026-04-28T02:04:00", - "2026-04-28T02:05:00", - "2026-04-28T02:06:00", - "2026-04-28T02:07:00", - "2026-04-28T02:08:00", - "2026-04-28T02:09:00", - "2026-04-28T02:10:00", - "2026-04-28T02:11:00", - "2026-04-28T02:12:00", - "2026-04-28T02:13:00", - "2026-04-28T02:14:00", - "2026-04-28T02:15:00", - "2026-04-28T02:16:00", - "2026-04-28T02:17:00", - "2026-04-28T02:18:00", - "2026-04-28T02:19:00", - "2026-04-28T02:20:00", - "2026-04-28T02:21:00", - "2026-04-28T02:22:00", - "2026-04-28T02:23:00", - "2026-04-28T02:24:00", - "2026-04-28T02:25:00", - "2026-04-28T02:26:00", - "2026-04-28T02:27:00", - "2026-04-28T02:28:00", - "2026-04-28T02:29:00", - "2026-04-28T02:30:00", - "2026-04-28T02:31:00", - "2026-04-28T02:32:00", - "2026-04-28T02:33:00", - "2026-04-28T02:34:00", - "2026-04-28T02:35:00", - "2026-04-28T02:36:00", - "2026-04-28T02:37:00", - "2026-04-28T02:38:00", - "2026-04-28T02:39:00", - "2026-04-28T02:40:00", - "2026-04-28T02:41:00", - "2026-04-28T02:42:00", - "2026-04-28T02:43:00", - "2026-04-28T02:44:00", - "2026-04-28T02:45:00", - "2026-04-28T02:46:00", - "2026-04-28T02:47:00", - "2026-04-28T02:48:00", - "2026-04-28T02:49:00", - "2026-04-28T02:50:00", - "2026-04-28T02:51:00", - "2026-04-28T02:52:00", - "2026-04-28T02:53:00", - "2026-04-28T02:54:00", - "2026-04-28T02:55:00", - "2026-04-28T02:56:00", - "2026-04-28T02:57:00", - "2026-04-28T02:58:00", - "2026-04-28T02:59:00", - "2026-04-28T03:00:00", - "2026-04-28T03:01:00", - "2026-04-28T03:02:00", - "2026-04-28T03:03:00", - "2026-04-28T03:04:00", - "2026-04-28T03:05:00", - "2026-04-28T03:06:00", - "2026-04-28T03:07:00", - "2026-04-28T03:08:00", - "2026-04-28T03:09:00", - "2026-04-28T03:10:00", - "2026-04-28T03:11:00", - "2026-04-28T03:12:00", - "2026-04-28T03:13:00", - "2026-04-28T03:14:00", - "2026-04-28T03:15:00", - "2026-04-28T03:16:00", - "2026-04-28T03:17:00", - "2026-04-28T03:18:00", - "2026-04-28T03:19:00", - "2026-04-28T03:20:00", - "2026-04-28T03:21:00", - "2026-04-28T03:22:00", - "2026-04-28T03:23:00", - "2026-04-28T03:24:00", - "2026-04-28T03:25:00", - "2026-04-28T03:26:00", - "2026-04-28T03:27:00", - "2026-04-28T03:28:00", - "2026-04-28T03:29:00", - "2026-04-28T03:30:00", - "2026-04-28T03:31:00", - "2026-04-28T03:32:00", - "2026-04-28T03:33:00", - "2026-04-28T03:34:00", - "2026-04-28T03:35:00", - "2026-04-28T03:36:00", - "2026-04-28T03:37:00", - "2026-04-28T03:38:00", - "2026-04-28T03:39:00", - "2026-04-28T03:40:00", - "2026-04-28T03:41:00", - "2026-04-28T03:42:00", - "2026-04-28T03:43:00", - "2026-04-28T03:44:00", - "2026-04-28T03:45:00", - "2026-04-28T03:46:00", - "2026-04-28T03:47:00", - "2026-04-28T03:48:00", - "2026-04-28T03:49:00", - "2026-04-28T03:50:00", - "2026-04-28T03:51:00", - "2026-04-28T03:52:00", - "2026-04-28T03:53:00", - "2026-04-28T03:54:00", - "2026-04-28T03:55:00", - "2026-04-28T03:56:00", - "2026-04-28T03:57:00", - "2026-04-28T03:58:00", - "2026-04-28T03:59:00", - "2026-04-28T04:00:00", - "2026-04-28T04:01:00", - "2026-04-28T04:02:00", - "2026-04-28T04:03:00", - "2026-04-28T04:04:00", - "2026-04-28T04:05:00", - "2026-04-28T04:06:00", - "2026-04-28T04:07:00", - "2026-04-28T04:08:00", - "2026-04-28T04:09:00", - "2026-04-28T04:10:00", - "2026-04-28T04:11:00", - "2026-04-28T04:12:00", - "2026-04-28T04:13:00", - "2026-04-28T04:14:00", - "2026-04-28T04:15:00", - "2026-04-28T04:16:00", - "2026-04-28T04:17:00", - "2026-04-28T04:18:00", - "2026-04-28T04:19:00", - "2026-04-28T04:20:00", - "2026-04-28T04:21:00", - "2026-04-28T04:22:00", - "2026-04-28T04:23:00", - "2026-04-28T04:24:00", - "2026-04-28T04:25:00", - "2026-04-28T04:26:00", - "2026-04-28T04:27:00", - "2026-04-28T04:28:00", - "2026-04-28T04:29:00", - "2026-04-28T04:30:00", - "2026-04-28T04:31:00", - "2026-04-28T04:32:00", - "2026-04-28T04:33:00", - "2026-04-28T04:34:00", - "2026-04-28T04:35:00", - "2026-04-28T04:36:00", - "2026-04-28T04:37:00", - "2026-04-28T04:38:00", - "2026-04-28T04:39:00", - "2026-04-28T04:40:00", - "2026-04-28T04:41:00", - "2026-04-28T04:42:00", - "2026-04-28T04:43:00", - "2026-04-28T04:44:00", - "2026-04-28T04:45:00", - "2026-04-28T04:46:00", - "2026-04-28T04:47:00", - "2026-04-28T04:48:00", - "2026-04-28T04:49:00", - "2026-04-28T04:50:00", - "2026-04-28T04:51:00", - "2026-04-28T04:52:00", - "2026-04-28T04:53:00", - "2026-04-28T04:54:00", - "2026-04-28T04:55:00", - "2026-04-28T04:56:00", - "2026-04-28T04:57:00", - "2026-04-28T04:58:00", - "2026-04-28T04:59:00", - "2026-04-28T05:00:00", - "2026-04-28T05:01:00", - "2026-04-28T05:02:00", - "2026-04-28T05:03:00", - "2026-04-28T05:04:00", - "2026-04-28T05:05:00", - "2026-04-28T05:06:00", - "2026-04-28T05:07:00", - "2026-04-28T05:08:00", - "2026-04-28T05:09:00", - "2026-04-28T05:10:00", - "2026-04-28T05:11:00", - "2026-04-28T05:12:00", - "2026-04-28T05:13:00", - "2026-04-28T05:14:00", - "2026-04-28T05:15:00", - "2026-04-28T05:16:00", - "2026-04-28T05:17:00", - "2026-04-28T05:18:00", - "2026-04-28T05:19:00", - "2026-04-28T05:20:00", - "2026-04-28T05:21:00", - "2026-04-28T05:22:00", - "2026-04-28T05:23:00", - "2026-04-28T05:24:00", - "2026-04-28T05:25:00", - "2026-04-28T05:26:00", - "2026-04-28T05:27:00", - "2026-04-28T05:28:00", - "2026-04-28T05:29:00", - "2026-04-28T05:30:00", - "2026-04-28T05:31:00", - "2026-04-28T05:32:00", - "2026-04-28T05:33:00", - "2026-04-28T05:34:00", - "2026-04-28T05:35:00", - "2026-04-28T05:36:00", - "2026-04-28T05:37:00", - "2026-04-28T05:38:00", - "2026-04-28T05:39:00", - "2026-04-28T05:40:00", - "2026-04-28T05:41:00", - "2026-04-28T05:42:00", - "2026-04-28T05:43:00", - "2026-04-28T05:44:00", - "2026-04-28T05:45:00", - "2026-04-28T05:46:00", - "2026-04-28T05:47:00", - "2026-04-28T05:48:00", - "2026-04-28T05:49:00", - "2026-04-28T05:50:00", - "2026-04-28T05:51:00", - "2026-04-28T05:52:00", - "2026-04-28T05:53:00", - "2026-04-28T05:54:00", - "2026-04-28T05:55:00", - "2026-04-28T05:56:00", - "2026-04-28T05:57:00", - "2026-04-28T05:58:00", - "2026-04-28T05:59:00", - "2026-04-28T06:00:00", - "2026-04-28T06:01:00", - "2026-04-28T06:02:00", - "2026-04-28T06:03:00", - "2026-04-28T06:04:00", - "2026-04-28T06:05:00", - "2026-04-28T06:06:00", - "2026-04-28T06:07:00", - "2026-04-28T06:08:00", - "2026-04-28T06:09:00", - "2026-04-28T06:10:00", - "2026-04-28T06:11:00", - "2026-04-28T06:12:00", - "2026-04-28T06:13:00", - "2026-04-28T06:14:00", - "2026-04-28T06:15:00", - "2026-04-28T06:16:00", - "2026-04-28T06:17:00", - "2026-04-28T06:18:00", - "2026-04-28T06:19:00", - "2026-04-28T06:20:00", - "2026-04-28T06:21:00", - "2026-04-28T06:22:00", - "2026-04-28T06:23:00", - "2026-04-28T06:24:00", - "2026-04-28T06:25:00", - "2026-04-28T06:26:00", - "2026-04-28T06:27:00", - "2026-04-28T06:28:00", - "2026-04-28T06:29:00", - "2026-04-28T06:30:00", - "2026-04-28T06:31:00", - "2026-04-28T06:32:00", - "2026-04-28T06:33:00", - "2026-04-28T06:34:00", - "2026-04-28T06:35:00", - "2026-04-28T06:36:00", - "2026-04-28T06:37:00", - "2026-04-28T06:38:00", - "2026-04-28T06:39:00", - "2026-04-28T06:40:00", - "2026-04-28T06:41:00", - "2026-04-28T06:42:00", - "2026-04-28T06:43:00", - "2026-04-28T06:44:00", - "2026-04-28T06:45:00", - "2026-04-28T06:46:00", - "2026-04-28T06:47:00", - "2026-04-28T06:48:00", - "2026-04-28T06:49:00", - "2026-04-28T06:50:00", - "2026-04-28T06:51:00", - "2026-04-28T06:52:00", - "2026-04-28T06:53:00", - "2026-04-28T06:54:00", - "2026-04-28T06:55:00", - "2026-04-28T06:56:00", - "2026-04-28T06:57:00", - "2026-04-28T06:58:00", - "2026-04-28T06:59:00", - "2026-04-28T07:00:00", - "2026-04-28T07:01:00", - "2026-04-28T07:02:00", - "2026-04-28T07:03:00", - "2026-04-28T07:04:00", - "2026-04-28T07:05:00", - "2026-04-28T07:06:00", - "2026-04-28T07:07:00", - "2026-04-28T07:08:00", - "2026-04-28T07:09:00", - "2026-04-28T07:10:00", - "2026-04-28T07:11:00", - "2026-04-28T07:12:00", - "2026-04-28T07:13:00", - "2026-04-28T07:14:00", - "2026-04-28T07:15:00", - "2026-04-28T07:16:00", - "2026-04-28T07:17:00", - "2026-04-28T07:18:00", - "2026-04-28T07:19:00", - "2026-04-28T07:20:00", - "2026-04-28T07:21:00", - "2026-04-28T07:22:00", - "2026-04-28T07:23:00", - "2026-04-28T07:24:00", - "2026-04-28T07:25:00", - "2026-04-28T07:26:00", - "2026-04-28T07:27:00", - "2026-04-28T07:28:00", - "2026-04-28T07:29:00", - "2026-04-28T07:30:00", - "2026-04-28T07:31:00", - "2026-04-28T07:32:00", - "2026-04-28T07:33:00", - "2026-04-28T07:34:00", - "2026-04-28T07:35:00", - "2026-04-28T07:36:00", - "2026-04-28T07:37:00", - "2026-04-28T07:38:00", - "2026-04-28T07:39:00", - "2026-04-28T07:40:00", - "2026-04-28T07:41:00", - "2026-04-28T07:42:00", - "2026-04-28T07:43:00", - "2026-04-28T07:44:00", - "2026-04-28T07:45:00", - "2026-04-28T07:46:00", - "2026-04-28T07:47:00", - "2026-04-28T07:48:00", - "2026-04-28T07:49:00", - "2026-04-28T07:50:00", - "2026-04-28T07:51:00", - "2026-04-28T07:52:00", - "2026-04-28T07:53:00", - "2026-04-28T07:54:00", - "2026-04-28T07:55:00", - "2026-04-28T07:56:00", - "2026-04-28T07:57:00", - "2026-04-28T07:58:00", - "2026-04-28T07:59:00", - "2026-04-28T08:00:00", - "2026-04-28T08:01:00", - "2026-04-28T08:02:00", - "2026-04-28T08:03:00", - "2026-04-28T08:04:00", - "2026-04-28T08:05:00", - "2026-04-28T08:06:00", - "2026-04-28T08:07:00", - "2026-04-28T08:08:00", - "2026-04-28T08:09:00", - "2026-04-28T08:10:00", - "2026-04-28T08:11:00", - "2026-04-28T08:12:00", - "2026-04-28T08:13:00", - "2026-04-28T08:14:00", - "2026-04-28T08:15:00", - "2026-04-28T08:16:00", - "2026-04-28T08:17:00", - "2026-04-28T08:18:00", - "2026-04-28T08:19:00", - "2026-04-28T08:20:00", - "2026-04-28T08:21:00", - "2026-04-28T08:22:00", - "2026-04-28T08:23:00", - "2026-04-28T08:24:00", - "2026-04-28T08:25:00", - "2026-04-28T08:26:00", - "2026-04-28T08:27:00", - "2026-04-28T08:28:00", - "2026-04-28T08:29:00", - "2026-04-28T08:30:00", - "2026-04-28T08:31:00", - "2026-04-28T08:32:00", - "2026-04-28T08:33:00", - "2026-04-28T08:34:00", - "2026-04-28T08:35:00", - "2026-04-28T08:36:00", - "2026-04-28T08:37:00", - "2026-04-28T08:38:00", - "2026-04-28T08:39:00", - "2026-04-28T08:40:00", - "2026-04-28T08:41:00", - "2026-04-28T08:42:00", - "2026-04-28T08:43:00", - "2026-04-28T08:44:00", - "2026-04-28T08:45:00", - "2026-04-28T08:46:00", - "2026-04-28T08:47:00", - "2026-04-28T08:48:00", - "2026-04-28T08:49:00", - "2026-04-28T08:50:00", - "2026-04-28T08:51:00", - "2026-04-28T08:52:00", - "2026-04-28T08:53:00", - "2026-04-28T08:54:00", - "2026-04-28T08:55:00", - "2026-04-28T08:56:00", - "2026-04-28T08:57:00", - "2026-04-28T08:58:00", - "2026-04-28T08:59:00", - "2026-04-28T09:00:00", - "2026-04-28T09:01:00", - "2026-04-28T09:02:00", - "2026-04-28T09:03:00", - "2026-04-28T09:04:00", - "2026-04-28T09:05:00", - "2026-04-28T09:06:00", - "2026-04-28T09:07:00", - "2026-04-28T09:08:00", - "2026-04-28T09:09:00", - "2026-04-28T09:10:00", - "2026-04-28T09:11:00", - "2026-04-28T09:12:00", - "2026-04-28T09:13:00", - "2026-04-28T09:14:00", - "2026-04-28T09:15:00", - "2026-04-28T09:16:00", - "2026-04-28T09:17:00", - "2026-04-28T09:18:00", - "2026-04-28T09:19:00", - "2026-04-28T09:20:00", - "2026-04-28T09:21:00", - "2026-04-28T09:22:00", - "2026-04-28T09:23:00", - "2026-04-28T09:24:00", - "2026-04-28T09:25:00", - "2026-04-28T09:26:00", - "2026-04-28T09:27:00", - "2026-04-28T09:28:00", - "2026-04-28T09:29:00", - "2026-04-28T09:30:00", - "2026-04-28T09:31:00", - "2026-04-28T09:32:00", - "2026-04-28T09:33:00", - "2026-04-28T09:34:00", - "2026-04-28T09:35:00", - "2026-04-28T09:36:00", - "2026-04-28T09:37:00", - "2026-04-28T09:38:00", - "2026-04-28T09:39:00", - "2026-04-28T09:40:00", - "2026-04-28T09:41:00", - "2026-04-28T09:42:00", - "2026-04-28T09:43:00", - "2026-04-28T09:44:00", - "2026-04-28T09:45:00", - "2026-04-28T09:46:00", - "2026-04-28T09:47:00", - "2026-04-28T09:48:00", - "2026-04-28T09:49:00", - "2026-04-28T09:50:00", - "2026-04-28T09:51:00", - "2026-04-28T09:52:00", - "2026-04-28T09:53:00", - "2026-04-28T09:54:00", - "2026-04-28T09:55:00", - "2026-04-28T09:56:00", - "2026-04-28T09:57:00", - "2026-04-28T09:58:00", - "2026-04-28T09:59:00", - "2026-04-28T10:00:00", - "2026-04-28T10:01:00", - "2026-04-28T10:02:00", - "2026-04-28T10:03:00", - "2026-04-28T10:04:00", - "2026-04-28T10:05:00", - "2026-04-28T10:06:00", - "2026-04-28T10:07:00", - "2026-04-28T10:08:00", - "2026-04-28T10:09:00", - "2026-04-28T10:10:00", - "2026-04-28T10:11:00", - "2026-04-28T10:12:00", - "2026-04-28T10:13:00", - "2026-04-28T10:14:00", - "2026-04-28T10:15:00", - "2026-04-28T10:16:00", - "2026-04-28T10:17:00", - "2026-04-28T10:18:00", - "2026-04-28T10:19:00", - "2026-04-28T10:20:00", - "2026-04-28T10:21:00", - "2026-04-28T10:22:00", - "2026-04-28T10:23:00", - "2026-04-28T10:24:00", - "2026-04-28T10:25:00", - "2026-04-28T10:26:00", - "2026-04-28T10:27:00", - "2026-04-28T10:28:00", - "2026-04-28T10:29:00", - "2026-04-28T10:30:00", - "2026-04-28T10:31:00", - "2026-04-28T10:32:00", - "2026-04-28T10:33:00", - "2026-04-28T10:34:00", - "2026-04-28T10:35:00", - "2026-04-28T10:36:00", - "2026-04-28T10:37:00", - "2026-04-28T10:38:00", - "2026-04-28T10:39:00", - "2026-04-28T10:40:00", - "2026-04-28T10:41:00", - "2026-04-28T10:42:00", - "2026-04-28T10:43:00", - "2026-04-28T10:44:00", - "2026-04-28T10:45:00", - "2026-04-28T10:46:00", - "2026-04-28T10:47:00", - "2026-04-28T10:48:00", - "2026-04-28T10:49:00", - "2026-04-28T10:50:00", - "2026-04-28T10:51:00", - "2026-04-28T10:52:00", - "2026-04-28T10:53:00", - "2026-04-28T10:54:00", - "2026-04-28T10:55:00", - "2026-04-28T10:56:00", - "2026-04-28T10:57:00", - "2026-04-28T10:58:00", - "2026-04-28T10:59:00", - "2026-04-28T11:00:00", - "2026-04-28T11:01:00", - "2026-04-28T11:02:00", - "2026-04-28T11:03:00", - "2026-04-28T11:04:00", - "2026-04-28T11:05:00", - "2026-04-28T11:06:00", - "2026-04-28T11:07:00", - "2026-04-28T11:08:00", - "2026-04-28T11:09:00", - "2026-04-28T11:10:00", - "2026-04-28T11:11:00", - "2026-04-28T11:12:00", - "2026-04-28T11:13:00", - "2026-04-28T11:14:00", - "2026-04-28T11:15:00", - "2026-04-28T11:16:00", - "2026-04-28T11:17:00", - "2026-04-28T11:18:00", - "2026-04-28T11:19:00", - "2026-04-28T11:20:00", - "2026-04-28T11:21:00", - "2026-04-28T11:22:00", - "2026-04-28T11:23:00", - "2026-04-28T11:24:00", - "2026-04-28T11:25:00", - "2026-04-28T11:26:00", - "2026-04-28T11:27:00", - "2026-04-28T11:28:00", - "2026-04-28T11:29:00", - "2026-04-28T11:30:00", - "2026-04-28T11:31:00", - "2026-04-28T11:32:00", - "2026-04-28T11:33:00", - "2026-04-28T11:34:00", - "2026-04-28T11:35:00", - "2026-04-28T11:36:00", - "2026-04-28T11:37:00", - "2026-04-28T11:38:00", - "2026-04-28T11:39:00", - "2026-04-28T11:40:00", - "2026-04-28T11:41:00", - "2026-04-28T11:42:00", - "2026-04-28T11:43:00", - "2026-04-28T11:44:00", - "2026-04-28T11:45:00", - "2026-04-28T11:46:00", - "2026-04-28T11:47:00", - "2026-04-28T11:48:00", - "2026-04-28T11:49:00", - "2026-04-28T11:50:00", - "2026-04-28T11:51:00", - "2026-04-28T11:52:00", - "2026-04-28T11:53:00", - "2026-04-28T11:54:00", - "2026-04-28T11:55:00", - "2026-04-28T11:56:00", - "2026-04-28T11:57:00", - "2026-04-28T11:58:00", - "2026-04-28T11:59:00", - "2026-04-28T12:00:00", - "2026-04-28T12:01:00", - "2026-04-28T12:02:00", - "2026-04-28T12:03:00", - "2026-04-28T12:04:00", - "2026-04-28T12:05:00", - "2026-04-28T12:06:00", - "2026-04-28T12:07:00", - "2026-04-28T12:08:00", - "2026-04-28T12:09:00", - "2026-04-28T12:10:00", - "2026-04-28T12:11:00", - "2026-04-28T12:12:00", - "2026-04-28T12:13:00", - "2026-04-28T12:14:00", - "2026-04-28T12:15:00", - "2026-04-28T12:16:00", - "2026-04-28T12:17:00", - "2026-04-28T12:18:00", - "2026-04-28T12:19:00", - "2026-04-28T12:20:00", - "2026-04-28T12:21:00", - "2026-04-28T12:22:00", - "2026-04-28T12:23:00", - "2026-04-28T12:24:00", - "2026-04-28T12:25:00", - "2026-04-28T12:26:00", - "2026-04-28T12:27:00", - "2026-04-28T12:28:00", - "2026-04-28T12:29:00", - "2026-04-28T12:30:00", - "2026-04-28T12:31:00", - "2026-04-28T12:32:00", - "2026-04-28T12:33:00", - "2026-04-28T12:34:00", - "2026-04-28T12:35:00", - "2026-04-28T12:36:00", - "2026-04-28T12:37:00", - "2026-04-28T12:38:00", - "2026-04-28T12:39:00", - "2026-04-28T12:40:00", - "2026-04-28T12:41:00", - "2026-04-28T12:42:00", - "2026-04-28T12:43:00", - "2026-04-28T12:44:00", - "2026-04-28T12:45:00", - "2026-04-28T12:46:00", - "2026-04-28T12:47:00", - "2026-04-28T12:48:00", - "2026-04-28T12:49:00", - "2026-04-28T12:50:00", - "2026-04-28T12:51:00", - "2026-04-28T12:52:00", - "2026-04-28T12:53:00", - "2026-04-28T12:54:00", - "2026-04-28T12:55:00", - "2026-04-28T12:56:00", - "2026-04-28T12:57:00", - "2026-04-28T12:58:00", - "2026-04-28T12:59:00", - "2026-04-28T13:00:00", - "2026-04-28T13:01:00", - "2026-04-28T13:02:00", - "2026-04-28T13:03:00", - "2026-04-28T13:04:00", - "2026-04-28T13:05:00", - "2026-04-28T13:06:00", - "2026-04-28T13:07:00", - "2026-04-28T13:08:00", - "2026-04-28T13:09:00", - "2026-04-28T13:10:00", - "2026-04-28T13:11:00", - "2026-04-28T13:12:00", - "2026-04-28T13:13:00", - "2026-04-28T13:14:00", - "2026-04-28T13:15:00", - "2026-04-28T13:16:00", - "2026-04-28T13:17:00", - "2026-04-28T13:18:00", - "2026-04-28T13:19:00", - "2026-04-28T13:20:00", - "2026-04-28T13:21:00", - "2026-04-28T13:22:00", - "2026-04-28T13:23:00", - "2026-04-28T13:24:00", - "2026-04-28T13:25:00", - "2026-04-28T13:26:00", - "2026-04-28T13:27:00", - "2026-04-28T13:28:00", - "2026-04-28T13:29:00", - "2026-04-28T13:30:00", - "2026-04-28T13:31:00", - "2026-04-28T13:32:00", - "2026-04-28T13:33:00", - "2026-04-28T13:34:00", - "2026-04-28T13:35:00", - "2026-04-28T13:36:00", - "2026-04-28T13:37:00", - "2026-04-28T13:38:00", - "2026-04-28T13:39:00", - "2026-04-28T13:40:00", - "2026-04-28T13:41:00", - "2026-04-28T13:42:00", - "2026-04-28T13:43:00", - "2026-04-28T13:44:00", - "2026-04-28T13:45:00", - "2026-04-28T13:46:00", - "2026-04-28T13:47:00", - "2026-04-28T13:48:00", - "2026-04-28T13:49:00", - "2026-04-28T13:50:00", - "2026-04-28T13:51:00", - "2026-04-28T13:52:00", - "2026-04-28T13:53:00", - "2026-04-28T13:54:00", - "2026-04-28T13:55:00", - "2026-04-28T13:56:00", - "2026-04-28T13:57:00", - "2026-04-28T13:58:00", - "2026-04-28T13:59:00", - "2026-04-28T14:00:00", - "2026-04-28T14:01:00", - "2026-04-28T14:02:00", - "2026-04-28T14:03:00", - "2026-04-28T14:04:00", - "2026-04-28T14:05:00", - "2026-04-28T14:06:00", - "2026-04-28T14:07:00", - "2026-04-28T14:08:00", - "2026-04-28T14:09:00", - "2026-04-28T14:10:00", - "2026-04-28T14:11:00", - "2026-04-28T14:12:00", - "2026-04-28T14:13:00", - "2026-04-28T14:14:00", - "2026-04-28T14:15:00", - "2026-04-28T14:16:00", - "2026-04-28T14:17:00", - "2026-04-28T14:18:00", - "2026-04-28T14:19:00", - "2026-04-28T14:20:00", - "2026-04-28T14:21:00", - "2026-04-28T14:22:00", - "2026-04-28T14:23:00", - "2026-04-28T14:24:00", - "2026-04-28T14:25:00", - "2026-04-28T14:26:00", - "2026-04-28T14:27:00", - "2026-04-28T14:28:00", - "2026-04-28T14:29:00", - "2026-04-28T14:30:00", - "2026-04-28T14:31:00", - "2026-04-28T14:32:00", - "2026-04-28T14:33:00", - "2026-04-28T14:34:00", - "2026-04-28T14:35:00", - "2026-04-28T14:36:00", - "2026-04-28T14:37:00", - "2026-04-28T14:38:00", - "2026-04-28T14:39:00", - "2026-04-28T14:40:00", - "2026-04-28T14:41:00", - "2026-04-28T14:42:00", - "2026-04-28T14:43:00", - "2026-04-28T14:44:00", - "2026-04-28T14:45:00", - "2026-04-28T14:46:00", - "2026-04-28T14:47:00", - "2026-04-28T14:48:00", - "2026-04-28T14:49:00", - "2026-04-28T14:50:00", - "2026-04-28T14:51:00", - "2026-04-28T14:52:00", - "2026-04-28T14:53:00", - "2026-04-28T14:54:00", - "2026-04-28T14:55:00", - "2026-04-28T14:56:00", - "2026-04-28T14:57:00", - "2026-04-28T14:58:00", - "2026-04-28T14:59:00", - "2026-04-28T15:00:00", - "2026-04-28T15:01:00", - "2026-04-28T15:02:00", - "2026-04-28T15:03:00", - "2026-04-28T15:04:00", - "2026-04-28T15:05:00", - "2026-04-28T15:06:00", - "2026-04-28T15:07:00", - "2026-04-28T15:08:00", - "2026-04-28T15:09:00", - "2026-04-28T15:10:00", - "2026-04-28T15:11:00", - "2026-04-28T15:12:00", - "2026-04-28T15:13:00", - "2026-04-28T15:14:00", - "2026-04-28T15:15:00", - "2026-04-28T15:16:00", - "2026-04-28T15:17:00", - "2026-04-28T15:18:00", - "2026-04-28T15:19:00", - "2026-04-28T15:20:00", - "2026-04-28T15:21:00", - "2026-04-28T15:22:00", - "2026-04-28T15:23:00", - "2026-04-28T15:24:00", - "2026-04-28T15:25:00", - "2026-04-28T15:26:00", - "2026-04-28T15:27:00", - "2026-04-28T15:28:00", - "2026-04-28T15:29:00", - "2026-04-28T15:30:00", - "2026-04-28T15:31:00", - "2026-04-28T15:32:00", - "2026-04-28T15:33:00", - "2026-04-28T15:34:00", - "2026-04-28T15:35:00", - "2026-04-28T15:36:00", - "2026-04-28T15:37:00", - "2026-04-28T15:38:00", - "2026-04-28T15:39:00", - "2026-04-28T15:40:00", - "2026-04-28T15:41:00", - "2026-04-28T15:42:00", - "2026-04-28T15:43:00", - "2026-04-28T15:44:00", - "2026-04-28T15:45:00", - "2026-04-28T15:46:00", - "2026-04-28T15:47:00", - "2026-04-28T15:48:00", - "2026-04-28T15:49:00", - "2026-04-28T15:50:00", - "2026-04-28T15:51:00", - "2026-04-28T15:52:00", - "2026-04-28T15:53:00", - "2026-04-28T15:54:00", - "2026-04-28T15:55:00", - "2026-04-28T15:56:00", - "2026-04-28T15:57:00", - "2026-04-28T15:58:00", - "2026-04-28T15:59:00", - "2026-04-28T16:00:00", - "2026-04-28T16:01:00", - "2026-04-28T16:02:00", - "2026-04-28T16:03:00", - "2026-04-28T16:04:00", - "2026-04-28T16:05:00", - "2026-04-28T16:06:00", - "2026-04-28T16:07:00", - "2026-04-28T16:08:00", - "2026-04-28T16:09:00", - "2026-04-28T16:10:00", - "2026-04-28T16:11:00", - "2026-04-28T16:12:00", - "2026-04-28T16:13:00", - "2026-04-28T16:14:00", - "2026-04-28T16:15:00", - "2026-04-28T16:16:00", - "2026-04-28T16:17:00", - "2026-04-28T16:18:00", - "2026-04-28T16:19:00", - "2026-04-28T16:20:00", - "2026-04-28T16:21:00", - "2026-04-28T16:22:00", - "2026-04-28T16:23:00", - "2026-04-28T16:24:00", - "2026-04-28T16:25:00", - "2026-04-28T16:26:00", - "2026-04-28T16:27:00", - "2026-04-28T16:28:00", - "2026-04-28T16:29:00", - "2026-04-28T16:30:00", - "2026-04-28T16:31:00", - "2026-04-28T16:32:00", - "2026-04-28T16:33:00", - "2026-04-28T16:34:00", - "2026-04-28T16:35:00", - "2026-04-28T16:36:00", - "2026-04-28T16:37:00", - "2026-04-28T16:38:00", - "2026-04-28T16:39:00", - "2026-04-28T16:40:00", - "2026-04-28T16:41:00", - "2026-04-28T16:42:00", - "2026-04-28T16:43:00", - "2026-04-28T16:44:00", - "2026-04-28T16:45:00", - "2026-04-28T16:46:00", - "2026-04-28T16:47:00", - "2026-04-28T16:48:00", - "2026-04-28T16:49:00", - "2026-04-28T16:50:00", - "2026-04-28T16:51:00", - "2026-04-28T16:52:00", - "2026-04-28T16:53:00", - "2026-04-28T16:54:00", - "2026-04-28T16:55:00", - "2026-04-28T16:56:00", - "2026-04-28T16:57:00", - "2026-04-28T16:58:00", - "2026-04-28T16:59:00", - "2026-04-28T17:00:00", - "2026-04-28T17:01:00", - "2026-04-28T17:02:00", - "2026-04-28T17:03:00", - "2026-04-28T17:04:00", - "2026-04-28T17:05:00", - "2026-04-28T17:06:00", - "2026-04-28T17:07:00", - "2026-04-28T17:08:00", - "2026-04-28T17:09:00", - "2026-04-28T17:10:00", - "2026-04-28T17:11:00", - "2026-04-28T17:12:00", - "2026-04-28T17:13:00", - "2026-04-28T17:14:00", - "2026-04-28T17:15:00", - "2026-04-28T17:16:00", - "2026-04-28T17:17:00", - "2026-04-28T17:18:00", - "2026-04-28T17:19:00", - "2026-04-28T17:20:00", - "2026-04-28T17:21:00", - "2026-04-28T17:22:00", - "2026-04-28T17:23:00", - "2026-04-28T17:24:00", - "2026-04-28T17:25:00", - "2026-04-28T17:26:00", - "2026-04-28T17:27:00", - "2026-04-28T17:28:00", - "2026-04-28T17:29:00", - "2026-04-28T17:30:00", - "2026-04-28T17:31:00", - "2026-04-28T17:32:00", - "2026-04-28T17:33:00", - "2026-04-28T17:34:00", - "2026-04-28T17:35:00", - "2026-04-28T17:36:00", - "2026-04-28T17:37:00", - "2026-04-28T17:38:00", - "2026-04-28T17:39:00", - "2026-04-28T17:40:00", - "2026-04-28T17:41:00", - "2026-04-28T17:42:00", - "2026-04-28T17:43:00", - "2026-04-28T17:44:00", - "2026-04-28T17:45:00", - "2026-04-28T17:46:00", - "2026-04-28T17:47:00", - "2026-04-28T17:48:00", - "2026-04-28T17:49:00", - "2026-04-28T17:50:00", - "2026-04-28T17:51:00", - "2026-04-28T17:52:00", - "2026-04-28T17:53:00", - "2026-04-28T17:54:00", - "2026-04-28T17:55:00", - "2026-04-28T17:56:00", - "2026-04-28T17:57:00", - "2026-04-28T17:58:00", - "2026-04-28T17:59:00", - "2026-04-28T18:00:00", - "2026-04-28T18:01:00", - "2026-04-28T18:02:00", - "2026-04-28T18:03:00", - "2026-04-28T18:04:00", - "2026-04-28T18:05:00", - "2026-04-28T18:06:00", - "2026-04-28T18:07:00", - "2026-04-28T18:08:00", - "2026-04-28T18:09:00", - "2026-04-28T18:10:00", - "2026-04-28T18:11:00", - "2026-04-28T18:12:00", - "2026-04-28T18:13:00", - "2026-04-28T18:14:00", - "2026-04-28T18:15:00", - "2026-04-28T18:16:00", - "2026-04-28T18:17:00", - "2026-04-28T18:18:00", - "2026-04-28T18:19:00", - "2026-04-28T18:20:00", - "2026-04-28T18:21:00", - "2026-04-28T18:22:00", - "2026-04-28T18:23:00", - "2026-04-28T18:24:00", - "2026-04-28T18:25:00", - "2026-04-28T18:26:00", - "2026-04-28T18:27:00", - "2026-04-28T18:28:00", - "2026-04-28T18:29:00", - "2026-04-28T18:30:00", - "2026-04-28T18:31:00", - "2026-04-28T18:32:00", - "2026-04-28T18:33:00", - "2026-04-28T18:34:00", - "2026-04-28T18:35:00", - "2026-04-28T18:36:00", - "2026-04-28T18:37:00", - "2026-04-28T18:38:00", - "2026-04-28T18:39:00", - "2026-04-28T18:40:00", - "2026-04-28T18:41:00", - "2026-04-28T18:42:00", - "2026-04-28T18:43:00", - "2026-04-28T18:44:00", - "2026-04-28T18:45:00", - "2026-04-28T18:46:00", - "2026-04-28T18:47:00", - "2026-04-28T18:48:00", - "2026-04-28T18:49:00", - "2026-04-28T18:50:00", - "2026-04-28T18:51:00", - "2026-04-28T18:52:00", - "2026-04-28T18:53:00", - "2026-04-28T18:54:00", - "2026-04-28T18:55:00", - "2026-04-28T18:56:00", - "2026-04-28T18:57:00", - "2026-04-28T18:58:00", - "2026-04-28T18:59:00", - "2026-04-28T19:00:00", - "2026-04-28T19:01:00", - "2026-04-28T19:02:00", - "2026-04-28T19:03:00", - "2026-04-28T19:04:00", - "2026-04-28T19:05:00", - "2026-04-28T19:06:00", - "2026-04-28T19:07:00", - "2026-04-28T19:08:00", - "2026-04-28T19:09:00", - "2026-04-28T19:10:00", - "2026-04-28T19:11:00", - "2026-04-28T19:12:00", - "2026-04-28T19:13:00", - "2026-04-28T19:14:00", - "2026-04-28T19:15:00", - "2026-04-28T19:16:00", - "2026-04-28T19:17:00", - "2026-04-28T19:18:00", - "2026-04-28T19:19:00", - "2026-04-28T19:20:00", - "2026-04-28T19:21:00", - "2026-04-28T19:22:00", - "2026-04-28T19:23:00", - "2026-04-28T19:24:00", - "2026-04-28T19:25:00", - "2026-04-28T19:26:00", - "2026-04-28T19:27:00", - "2026-04-28T19:28:00", - "2026-04-28T19:29:00", - "2026-04-28T19:30:00", - "2026-04-28T19:31:00", - "2026-04-28T19:32:00", - "2026-04-28T19:33:00", - "2026-04-28T19:34:00", - "2026-04-28T19:35:00", - "2026-04-28T19:36:00", - "2026-04-28T19:37:00", - "2026-04-28T19:38:00", - "2026-04-28T19:39:00", - "2026-04-28T19:40:00", - "2026-04-28T19:41:00", - "2026-04-28T19:42:00", - "2026-04-28T19:43:00", - "2026-04-28T19:44:00", - "2026-04-28T19:45:00", - "2026-04-28T19:46:00", - "2026-04-28T19:47:00", - "2026-04-28T19:48:00", - "2026-04-28T19:49:00", - "2026-04-28T19:50:00", - "2026-04-28T19:51:00", - "2026-04-28T19:52:00", - "2026-04-28T19:53:00", - "2026-04-28T19:54:00", - "2026-04-28T19:55:00", - "2026-04-28T19:56:00", - "2026-04-28T19:57:00", - "2026-04-28T19:58:00", - "2026-04-28T19:59:00", - "2026-04-28T20:00:00", - "2026-04-28T20:01:00", - "2026-04-28T20:02:00", - "2026-04-28T20:03:00" - ], - "xaxis": "x", - "y": { - "bdata": "7Xw/NV7QcEDLoUW2852BQJMYBFYOtVlAiUFg5dBKc0ApXI/C9c2IQKWbxCCw9m9AJzEIrBw6TUAlBoGVQ8tiQJzEILByQF5AMzMzMzPHcUBYObTIdsR3QLbz/dR4T3RAFtnO91PFckA+CtejcD1uQKjGSzeJXWJAL90kBoFVbkACK4cW2T5PQIlBYOXQIklAUI2XbhLzT0Bs5/up8UJNQDeJQWDlsElArkfhehSGUkASg8DKoT1RQMdLN4lBiFFARIts5/vFaEC8dJMYBKZLQPT91HjpRkpAI9v5fmpsZUBiEFg5tNhEQEFg5dAia0VATmIQWDmMUECNl24Sg6BSQHNoke1871hA7nw/NV4aSEAv3SQGgfVWQAAAAAAAUEZATmIQWDnkTUDNzMzMzMxLQJqZmZmZsV1AYhBYObSAUkCgGi/dJF5RQA4tsp3vt0hA001iEFhrckCyne+nxhtfQJqZmZmZFWZA7FG4HoUbU0CamZmZmXlDQAisHFpkK0tA8KfGSzfpR0D8qfHSTTJKQKjGSzeJEUBA6SYxCKzcNkAehetRuP49QL6fGi/dBDJA8KfGSzcJMkC4HoXrUbguQPp+arx0UyVAF9nO91PDNEC28/3UeGlHQFTjpZvE4D5AFa5H4Xq0N0AEVg4tsj0wQG3n+6nxcjBA3SQGgZXDJ0BDi2zn++krQBbZzvdTozVAjZduEoOAP0CWQ4ts5xszQP7UeOkmMSxAy6FFtvOtQUCoxks3iSFMQM73U+OlmwdAUI2XbhIDFUBeukkMAis2QIPAyqFFtjtA16NwPQp3OEB3vp8aL10wQIPAyqFF9ipAXrpJDAKrM0AxCKwcWgQ9QB1aZDvfbz9ACtejcD0KGEDP91PjpVswQE5iEFg5NDNA46WbxCCwNUDl0CLb+eJtQLbz/dR4KSRAvp8aL93EOUD3U+Olm0RJQGiR7Xw/NUNAXI/C9SicQkDD9ShcjwJBQFyPwvUoXCxAgZVDi2znMUDJdr6fGu8pQHsUrkfh+ilA2c73U+PlKkCYbhKDwAo1QKjGSzeJQRtA/Knx0k1CNUDFILByaHFHQNEi2/l+KjlAxks3iUFQSkASg8DKocVMQFpkO99PjT5AmpmZmZn5OUA9CtejcHVUQFCNl24Sg0VAl24Sg8A6QECyne+nxhtIQE5iEFg5CGFAke18PzVePEArhxbZzvc8QKRwPQrX80RA+FPjpZs0QUA1XrpJDEI5QO18PzVeujtAcT0K16NwMEBzaJHtfP8wQKJFtvP9VDdAL90kBoHFSUB1kxgEVo46QHE9CtejMC1Ac2iR7XwfNUC7SQwCK8cwQJzEILByUFVAMQisHFq8ZECcxCCwcgRlQNV46SYxjGNAUrgehevxWUBqvHSTGCxdQOXQItv5HlNAnMQgsHIYWUBCYOXQImdtQKJFtvP97FhA2/l+ary8UEAj2/l+agRUQGzn+6nxOmRAxSCwcmiZWkAK16NwPVpOQMP1KFyP4j5ARrbz/dRYMkArhxbZzj9aQI2XbhKD4FJACtejcD1qS0BmZmZmZk5UQCUGgZVDO1ZAXrpJDAILNkDx0k1iEMhGQEw3iUFgzV5AOIlBYOXwP0D0/dR46S5QQH9qvHST2FJAKVyPwvU4QkCR7Xw/NY5EQIcW2c73Q1NASOF6FK73RUDP91PjpXs1QBgEVg4tYk5A+FPjpZvEOEC8dJMYBJYxQNv5fmq8ZEFARIts5/tJR0AIrBxaZFtLQKjGSzeJcUBACKwcWmT7LUCgGi/dJOY8QNnO91PjhTlAJQaBlUNrPkC0yHa+n9osQBgEVg4tMi9AhxbZzvdzQED+1HjpJlE0QHWTGARWTktARIts5/sJNkAdWmQ7388zQBgEVg4tkjVAItv5fmo8LUBeukkMAqsoQDvfT42X3kBAYOXQIts5UkAGgZVDi2wrQClcj8L1qBtAsp3vp8ZLLUBg5dAi23kfQHsUrkfh+hNAxSCwcmjRIUBANV66SdxPQD4K16NwLUpA2c73U+PlLUBg5dAi2zlFQGu8dJMYhCNAWmQ7309NOECJQWDl0OI7QJhuEoPAKjxAI9v5fmo8KUAj2/l+ahxGQPhT46WbRCZAqMZLN4lBE0C28/3UeOklQJMYBFYO7SJAN4lBYOVQGUAv3SQGgZUfQKAaL90kpjJAmG4Sg8BKJ0DHSzeJQUA2QIcW2c73kyFAeekmMQgcQUAnMQisHNosQJzEILByKChArBxaZDsfJkCDwMqhRfYkQOJ6FK5HoSZAvp8aL90kE0DTTWIQWLkhQCcxCKwc2hpA7nw/NV56I0DrUbgehWsfQFyPwvUo3BFA+n5qvHSTJ0C+nxov3SQhQEFg5dAiezlAYhBYObRIF0Dy0k1iEJggQKRwPQrX4yBATDeJQWAVRUAIrBxaZLslQCcxCKwc2iZA46WbxCAwLUAMAiuHFtkVQN9PjZduEhVAIbByaJHtDUDTTWIQWDkZQLgehetRuA1A30+Nl26SIUCMbOf7qXEqQPhT46WbhCpAFtnO91MjJkDn+6nx0s0nQHNoke18vxZA+FPjpZvEGEDpJjEIrDw+QPT91Hjp5jRAfT81XrqpNEAMAiuHFmlGQJVDi2znex1Abef7qfHSO0AVrkfhetRBQPLSTWIQ0FJAsHJoke28Q0Bg5dAi2/k4QGIQWDm0NGtAvHSTGARackAxCKwcWsRlQDm0yHa+D0RAexSuR+FKRUAnMQisHDo5QOF6FK5HQTdAw/UoXI9CMED0/dR46WYwQPT91HjpZjxA7FG4HoULSkAdWmQ73w9RQJMYBFYO7T5AEFg5tMj2QUB7FK5H4QpIQEA1XrpJzClAI9v5fmpcNEBSuB6F64FIQJzEILByKEBA7nw/NV56J0CHFtnO99McQKabxCCwMi1AFtnO91NDOkBpke18P9UwQPp+arx0EzFAAAAAAABAIEACK4cW2U4jQLByaJHtHDxAyXa+nxpPOEBQjZduEoMmQHE9CtejsFFAd76fGi/BZkAfhetRuM5SQFTjpZvE9GhAJzEIrByCakAX2c73U/dqQJZDi2znb2tA30+Nl260cUBYObTIdsZoQKjGSzeJVWJA9P3UeOkmQ0CiRbbz/RQ2QAIrhxbZLkxAukkMAitnVEAj2/l+akxWQL6fGi/d1EJAFK5H4XrUJUAZBFYOLXIkQIts5/up8RxAYhBYObRINUCHFtnO99MyQGZmZmZm5i5Ai2zn+6mxJkACK4cW2Y5BQAAAAAAAwCBAaJHtfD+1GUDVeOkmMYgWQAwCK4cWWTBAd76fGi/dB0Coxks3icETQGZmZmZmpi1ARrbz/dQ4JECgGi/dJAYZQHnpJjEIDDZAx0s3iUEgIUBvEoPAyuEmQMqhRbbz/Q9AO99PjZcuIUCuR+F6FFZXQIGVQ4tshz1Av58aL91kIUA/NV66Scw2QEw3iUFgRTJAiUFg5dCiIkD0/dR46UYyQNv5fmq89C9A8tJNYhA4QUAfhetRuC5QQKJFtvP9VDRA001iEFi5QEAUrkfhepQaQMuhRbbz/RtAexSuR+EaMUAv3SQGgdUnQKJFtvP9VCtAxSCwcmiRJECR7Xw/Na5AQBSuR+F6NDFAqMZLN4lBLkA830+Nl44yQCPb+X5q/EBAUI2XbhKDOUBoke18P5U5QI/C9ShcDzRAjZduEoOAIkAtsp3vp7ZQQBkEVg4tEkBA7nw/NV66M0AUrkfhehQgQM3MzMzMTCJArkfhehRuIED4U+Olm8RMQKwcWmQ7fzFAI9v5fmocPkDAyqFFthM4QJmZmZmZiUJAppvEILAyPkATg8DKocUdQDeJQWDlUCBAMQisHFpkGUCNl24SgxBQQIPAyqFFVj9AzczMzMxMGkCPwvUoXO83QFCNl24SAxdA/Knx0k3iK0C0yHa+n9ovQMUgsHJoETFAarx0kxgEIkBQjZduEoMGQGdmZmZmZhJA8KfGSzeJDkC0yHa+n5oTQMP1KFyPAiNA+n5qvHQjTkDfT42XbnI/QF66SQwCqxpA0SLb+X4qLUBANV66SQwWQN9PjZdu8jBAbxKDwMohJ0CgGi/dJIZAQB1aZDvfzyFAaJHtfD+1IEBvEoPAyuEiQDEIrBxaZCJAu0kMAitnYUBGtvP91Fg1QMP1KFyPoj5Ag8DKoUX2I0B7FK5H4forQCuHFtnO9x5AbOf7qfGSLEAbL90kBnFLQGZmZmZmFkBAZmZmZmYmJ0B3vp8aLx0wQO58PzVeWjxARrbz/dQwU0Dn+6nx0u1FQIXrUbgexShAdZMYBFaOHUBkO99PjZckQPLSTWIQeDFA/tR46SYxDkCyne+nxoslQNejcD0KFyNAIbByaJFtEkBQjZduEgMQQKwcWmQ73xdASOF6FK7HKUAhsHJoke0jQDzfT42XrjRAN4lBYOXwP0C28/3UeMk7QAAAAAAAABRAy6FFtvN9JUCoxks3iUH+Pzm0yHa+n/o/DAIrhxbZC0Coxks3iUEBQGIQWDm0iChAcmiR7XxXUECZmZmZmSlHQEoMAiuHNkJAke18PzXeKUD8qfHSTaInQL6fGi/dJChA8KfGSzdpP0ASg8DKoUUaQJ7vp8ZLtx1Asp3vp8aLLkB9PzVeuqlAQLgehetRaEtADi2yne9nNUAMAiuHFlkZQN0kBoGVwxBAJQaBlUNLTEDAyqFFttM/QFTjpZvEwEVA2/l+arwUPEBU46WbxGA2QAwCK4cW+TJASOF6FK5HJkDEILByaPE+QAwCK4cWGStAx0s3iUFgE0BEi2zn+ykWQClcj8L1qClApHA9CtfjIEAdWmQ7348gQOF6FK5HYRVAAAAAAACAQUBYObTIdr4yQFg5tMh2PiNAvp8aL93kNkD4U+Olm4QzQB+F61G4nh1AQWDl0CIbJEDAyqFFtnMvQClcj8L1KCVAJzEIrBxaBkDJdr6fGm8nQJHtfD813i1AWmQ7308NJEAUrkfhelQlQHWTGARWllFACtejcD0KFUCwcmiR7fwfQM/3U+Olmx5ALbKd76dGSUDjpZvEIIBBQFK4HoXrURZAd76fGi8dNUDNzMzMzHxEQFg5tMh2PhVAEoPAyqFFEkDP91PjpRs8QObQItv5/hxA7Xw/NV46FEDfT42XbhIRQOF6FK5H4RtAg8DKoUW2H0DTTWIQWDkaQHE9Ctej8BtAlUOLbOc7JUA5tMh2vh8uQMHKoUW20zxAw/UoXI/KYkDNzMzMzOw7QFYOLbKdD0VAdZMYBFbOPUCsHFpkO58oQNR46SYx+EVA2c73U+N1UUDfT42XbrJbQDMzMzMzd25AAAAAAABAT0DP91PjpVtNQBfZzvdTZ2FAexSuR+GaQ0AMAiuHFslGQL+fGi/dVFpAzczMzMw0UEC28/3UeOlFQNnO91PjDVRAdZMYBFYmVED+1HjpJgVyQM/3U+OlC2FAmZmZmZlJWECJQWDl0DJoQIPAyqFF3lZAJQaBlUPbRkBeukkMAktDQLByaJHtnFdAQ4ts5/vRUUAhsHJokT1WQEJg5dAiq1xAKVyPwvWoOUAQWDm0yHY3QBKDwMqhhS9AGARWDi3yNEA+CtejcG1CQFTjpZvEkExAKVyPwvXoQEDHSzeJQUhQQI/C9ShcbzdAa7x0kxjENEDy0k1iEBhWQBKDwMqhBS9AokW28/20PECWQ4ts5/tCQLKd76fGC0VA+FPjpZukPECcxCCwcrhEQDMzMzMzsy5AXI/C9ShcOUBMN4lBYHVHQB+F61G4njlA16NwPQrXNUAcWmQ7388mQMuhRbbz/SNAxSCwcmhxQ0AzMzMzM3MsQBSuR+F6VCxA1XjpJjGIM0DXo3A9CndFQPYoXI/CtSxAvHSTGATWL0D6fmq8dBMoQEw3iUFgZSJADi2yne+nJ0BaZDvfT51FQGq8dJMYhC9A7Xw/NV46NEDy0k1iEGhVQAwCK4cWyUJAuB6F61EIUECF61G4HmUwQBov3SQGAUlA16NwPQpPVUAEVg4tsvVRQGiR7Xw/dTNAvHSTGAQmQUB+PzVeugljQGDl0CLb1W1AyXa+nxrvLUCgGi/dJAYfQPT91HjpJiNAbef7qfHyOkCq8dJNYpAiQMuhRbbzfRpAYOXQItv5N0DAyqFFtvMxQHWTGARWfkFASgwCK4e2SkC0yHa+n3owQJZDi2znmzFA76fGSzcJRkAwCKwcWsQ8QPP91HjpRjFAPgrXo3DdPEAzMzMzMwNJQJLtfD81XhtARIts5/tpPEAzMzMzMzMXQAwCK4cWWRtAF9nO91NLUEC0yHa+n7owQIts5/up8R5A8KfGSzeJF0AbL90kBoEiQAAAAAAAwDVAAiuHFtnuMUCgGi/dJMYjQAaBlUOLLDtAVg4tsp3vJED6fmq8dFMjQBBYObTIdidA5/up8dLNFkDZzvdT46UXQH9qvHST2DVASOF6FK43SUAv3SQGgbU3QPT91Hjp5ixAg8DKoUWWMUDAyqFFtuNJQIts5/upsUBAYOXQItupRUBMN4lBYCU5QEa28/3UGDJAqMZLN4nBLEAIrBxaZDsaQIts5/upMSRA2/l+arw0MEBnZmZmZmYhQDEIrBxaTFlAj8L1KFzPQ0D4U+Olm8xSQHE9CtejsENAL90kBoGVM0C28/3UeKk0QN9PjZdusjJAFtnO91PjJEDRItv5fmpIQH5qvHST+EhAPzVeuklMIUAIrBxaZDshQH9qvHST2C1Avp8aL90kGkB56SYxCOwsQOOlm8QgsCJABoGVQ4vsJUAMAiuHFhkmQOOlm8QgcClABoGVQ4tMNkDJdr6fGk81QH0/NV66mUNAokW28/2ERkBWDi2ynS9LQFyPwvUo5FxAI9v5fmp8JEDdJAaBlaM9QJDC9ShcjxtAJAaBlUOrN0Bs5/up8VIoQKabxCCwckZAlUOLbOd7KEBOYhBYOVQ6QJ7vp8ZLN0dA9P3UeOnGMEBzaJHtfP8qQA4tsp3vpz9A+FPjpZuEMkD2KFyPwvUfQClcj8L1qDNARIts5/spFkAnMQisHDpQQN0kBoGV+1VAokW28/3MVkDIdr6fGv9JQLx0kxgEVjFAlkOLbOd7K0AAAAAAALBBQI2XbhKDAC9AK4cW2c43KEDLoUW2830aQMl2vp8ax2RAMzMzMzOzMEDLoUW28z1MQGDl0CLbWTNATmIQWDkEWECamZmZmXV1QN9PjZduMlxAj8L1KFw/QEDXo3A9CjdEQHWTGARW/ktAqvHSTWLwREDrUbgehS9pQEJg5dAiU1VArkfhehQuQkDJdr6fGs86QG3n+6nxEkdAmG4Sg8D6WUAcWmQ733dYQArXo3A9ClVAIbByaJFtQEAOLbKd79dCQCPb+X5qrERAWmQ730/NKkDLoUW28/1QQPCnxks3iSxAPzVeukm8UUAv3SQGgVVLQD81XrpJrD5AObTIdr4vUUBCYOXQIts9QCPb+X5qfDBAYOXQItv5LED6fmq8dNM0QL+fGi/dxDdA9P3UeOn+UED6fmq8dDM7QEjhehSuxyRARrbz/dQYMUCYbhKDwAooQIPAyqFFNilAlBgEVg4tIEBg5dAi27koQOSlm8Qg0DhABoGVQ4tEWEAZBFYOLSJAQL10kxgEFiJAZDvfT42XJkCWQ4ts5/snQIGVQ4tspyVA16NwPQoHQUAtsp3vp3ZSQGZmZmZmhjBAhetRuB5FJ0A5tMh2vj80QPCnxks3STZAarx0kxgEP0C/nxov3eQ0QDvfT42XrkNAsp3vp8arOEDn+6nx0i0xQHnpJjEIvFlA0iLb+X4qSEA/NV66ScwmQC2yne+nRihAuB6F61EoQkAX2c73UyNHQLpJDAIrByhAc2iR7Xw/LUCuR+F6FO4vQPLSTWIQ2BlAexSuR+GaRkBKDAIrh3ZJQL6fGi/dhE1AaJHtfD+1G0B1kxgEVo4TQMuhRbbzfTBA2c73U+NFSkDfT42XblIoQPp+arx0EyNAg8DKoUW2EkB1kxgEVv5AQKRwPQrXk1NAfT81XrqJJ0CamZmZmclAQMqhRbbz3UZAqvHSTWJAU0Dm0CLb+c5EQARWDi2yvU5AAAAAAAAwSkCyne+nxks1QCcxCKwcWjVA6iYxCKwcJUCHFtnO9yNEQNNNYhBYORhAEoPAyqEFIUCiRbbz/ZQrQNNNYhBYOSRALbKd76fWTEBkO99PjWdcQM73U+OlGz5Az/dT46X7NECWQ4ts59syQMl2vp8aX1FA1XjpJjHoTUCiRbbz/ZQlQNnO91PjVURAGy/dJAYBJkAlBoGVQ0smQFg5tMh23jhA30+Nl26SIECsHFpkOxthQGIQWDm0qDZAf2q8dJPIQkA5tMh2vg9GQOkmMQisfDFAYOXQItspTUAUrkfhejQwQC/dJAaBFUFABoGVQ4tsHkCNl24Sg8AtQCuHFtnOV0FAcmiR7XxfQUBEi2zn+wk0QJzEILByiDxAEoPAyqElOEDhehSuR2ElQOOlm8Qg8D9Aw/UoXI/SZkCF61G4HhFuQCPb+X5qXDdATmIQWDl0JUDfT42XblIyQMl2vp8arzZAvp8aL90ES0D0/dR46UY7QEw3iUFgpURAqvHSTWJwO0C28/3UeGk+QNnO91PjBTRA16NwPQq3P0APLbKd76cWQNNNYhBYOR5A4XoUrkfhFkAhsHJokW0ZQEa28/3UOCdA7nw/NV76I0AxCKwcWoxZQOxRuB6F/2BAx0s3iUHQSEDXo3A9CjdWQJzEILByiDhAMQisHFqsY0BmZmZmZmpsQBfZzvdTI1hAxSCwcmihSkCiRbbz/VQ3QGQ730+NFzVAQDVeuklMNkDufD81XrpBQNv5fmq8pERA8tJNYhCoQUCPwvUoXE87QIgW2c73kytAbef7qfHSIEDrUbgehasnQNV46SYxiBtA7nw/NV76IkA3iUFg5VAXQGmR7Xw/tSlAiUFg5dCiHUCQwvUoXA8fQMUgsHJokVRAnu+nxkt/VUCuR+F6FCJhQLgehetRzGtADi2yne+vVEArhxbZzndEQArXo3A9ykpA/tR46SaxP0Ausp3vp+Y9QArXo3A9CkpAJQaBlUOrPkC+nxov3YRGQC2yne+nhkpAsHJoke2sRUBxPQrXo2BQQLgehetR+DpAf2q8dJM4NEB3vp8aL905QNnO91PjxT9AIbByaJGtMEDGSzeJQeAgQESLbOf7uUFA7FG4HoVrIECF61G4HsUnQGDl0CLbeS9Avp8aL92kH0C9dJMYBJY5QM3MzMzMzEVAlBgEVg6tKEDsUbgehesuQPLSTWIQWDRATDeJQWB1TEC8dJMYBGZFQK5H4XoUbjdAYOXQItt5MEBaZDvfTz1BQPCnxks3iUJA46WbxCBgQkDiehSuR8E7QMDKoUW2o0JARrbz/dS4Q0DQItv5ftJSQK5H4XoUfkhAsp3vp8arT0CYbhKDwApNQEw3iUFgxTBABFYOLbLdJkCkcD0K1wMwQCGwcmiRLSZASgwCK4e2MUDJdr6fGg8xQGIQWDm0aDNA2/l+arxUOUCwcmiR7dw6QBsv3SQGATVAQDVeukmML0CiRbbz/bQzQDvfT42XbjRA8tJNYhDwWEB/arx0kzhQQH9qvHSTWERAE4PAyqHVRkCQwvUoXF9GQEjhehSupzNAeekmMQgMQECq8dJNYjAyQI/C9ShczzFA2c73U+OFSUB7FK5H4Zo8QFYOLbKdT0NA8tJNYhDIQEBMN4lBYHVcQIXrUbgeUWxAMQisHFpcZkBKDAIrhy5qQD81XrpJzEhAH4XrUbgOS0CPwvUoXINmQOkmMQisToBA2c73U+NBhkDhehSuRxVuQLKd76fGw2xA3SQGgZVrbkDP91PjpTtZQGMQWDm0UFNAtvP91HgZVUAIrBxaZJtNQArXo3A9MldAMQisHFrkREBH4XoUrrdZQCcxCKwcmk9Ay6FFtvOdPECWQ4ts5wtTQC2yne+nZjlAXI/C9SgcNECq8dJNYjBFQJ7vp8ZLZ1FAQ4ts5/tpNkDWeOkmMag/QEjhehSu/1RAUrgehetBR0AxCKwcWrRMQGZmZmZmJjhACKwcWmTbPkCYbhKDwEoqQMl2vp8ajzNAYhBYObQILED6fmq8dBMbQC/dJAaB1SNAnMQgsHJ4TUDXo3A9Chc2QKJFtvP9ZFNAsHJoke2sR0BeukkMAqs7QNNNYhBYgVxAbxKDwMopXkDLoUW285VXQJZDi2znZ2NAuB6F61FQX0BzaJHtfF9EQA4tsp3vF0ZAMQisHFrEQUB9PzVeuulJQJZDi2znWzBAbef7qfGSRECWQ4ts53tCQJVDi2znmzxACtejcD3KT0C+nxov3dxQQC/dJAaBRVNABoGVQ4tMOUDb+X5qvJxUQAwCK4cWiUdAZDvfT40HQ0Bg5dAi27FRQJMYBFYODUVARrbz/dRAUECyne+nxsNTQLKd76fGi0BAbhKDwMohP0AdWmQ7399AQFYOLbKdTz1Asp3vp8ZLLkCJQWDl0OI/QDeJQWDlsDdAtMh2vp8aMkCe76fGSxczQGZmZmZmfltA5tAi2/kePkB56SYxCBxBQJQYBFYORWVA9P3UeOkWVEDn+6nx0m03QGDl0CLbeTJA2/l+arw0MUDHSzeJQeBKQBxaZDvfv01A9ihcj8IVO0A5tMh2vi9BQNejcD0K10VAYhBYObQoP0AMAiuHFtlLQDVeukkM0khAHVpkO99PNUApXI/C9Sg3QN9PjZduMkFAEoPAyqElOEDn+6nx0s01QHe+nxovnSxAf2q8dJP4NkDRItv5fkoxQCcxCKwc+mJAEoPAyqFhYEAK16NwPbpSQBbZzvdTA0JAEFg5tMh2K0CNl24Sg0AhQI2XbhKDwCFAa7x0kxgEHUACK4cW2c4gQGiR7Xw/tR9A2c73U+PlPkDLoUW2830lQCPb+X5qfCdASgwCK4eWNkCPwvUoXDdYQC2yne+nRi1A7nw/NV56NUBpke18PzU7QNejcD0KF0RAcD0K16OQMkD6fmq8dJMNQBSuR+F6dDlAIbByaJHtGEBSuB6F69EWQDQzMzMzMzpAfT81XrrJPEDwp8ZLN+kyQD81XrpJDDpAlBgEVg7tLkACK4cW2S4wQK5H4XoUTjNAj8L1KFyPLkCJQWDl0AIwQHsUrkfhOjFAAiuHFtlOPkA5tMh2vn84QHWTGARWTitAdZMYBFbOIUB56SYxCKwpQDvfT42XbihAc2iR7Xz/LECmm8QgsHIqQIPAyqFFth1AexSuR+F6I0AK16NwPcolQFTjpZvE4CVAGQRWDi1yOkBxPQrXo/AlQOF6FK5HYSxAuB6F61E4HED+1HjpJnEgQDeJQWDlUDBAGi/dJAZhR0DC9Shcj1JCQIGVQ4tsBzhAvHSTGAQWKEDufD81XroFQKAaL90kBghA4XoUrkdhHkCkcD0K1+MlQMdLN4lB4CdAN4lBYOXQBEAv3SQGgZUoQCuHFtnOdxlABoGVQ4vsJEBoke18PzUSQAwCK4cW2QlAeekmMQisKEAIrBxaZFs3QBgEVg4tsh1AhxbZzvfTKkB/arx0kxgUQEoMAiuHFhNAvp8aL90kFEBYObTIdj4qQKRwPQrX4yJAXI/C9Si8M0DRItv5fspOQLgehetReCtAXI/C9ShcOEDwp8ZLN7lBQEW28/3UeDRA2c73U+MlIEB56SYxCCwbQIpBYOXQ4i9AoBov3STmMUDXo3A9CtcdQNnO91PjJR1Ai2zn+6lxLUBSuB6F6zFLQKrx0k1iEDpAexSuR+E6O0DJdr6fGgdQQAisHFpkO0FAKVyPwvX4SkAGgZVDi2xFQBsv3SQGQUhAEVg5tMg2YkCmm8QgsIpQQNV46SYxKD9AiUFg5dCSUUBaZDvfTw0gQL6fGi/d5CtAWmQ730/NLUAOLbKd7wc7QFCNl24Sw0tA2/l+arz0QEDqJjEIrLRVQIXrUbge1VJAQmDl0CIbO0CuR+F6FN5AQB1aZDvfTzxAjZduEoNgSkBqvHSTGCRLQJ7vp8ZLtyVA0SLb+X5qRUD+1HjpJrFIQG3n+6nxUh9A/tR46SaxGkDHSzeJQaAyQNEi2/l+CjRAcT0K16OwP0BQjZduEnNSQM73U+Oluz1AoBov3STmREBU46WbxNBIQPHSTWIQ2CpAIbByaJENRUBANV66SYwSQLbz/dR4aRVAtch2vp/SXEDZzvdT4yUaQCUGgZVDqzJAqMZLN4nBGEDsUbgehas5QGu8dJMYBCZAyXa+nxrvJEBI4XoUrscWQPLSTWIQWCxANV66SQwSRUAdWmQ7308zQLByaJHt/BRAO99PjZduDEBqvHSTGGQxQJ7vp8ZLNxlA2c73U+PFM0B3vp8aL50hQEjhehSuRyBAyXa+nxrvKkBeukkMAisxQLx0kxgEliNA2/l+arw0NEDP91PjpTs4QGQ730+NVytAYhBYObSoN0DAyqFFtjMrQCPb+X5qPBxA4noUrkdhHkAMAiuHFtkqQClcj8L1aCBANDMzMzNTNEB/arx0k/gyQJ7vp8ZLtx5AKocW2c73PkDLoUW2881BQI/C9ShcP0BAAAAAAABgNUCTGARWDlVQQN9PjZdu0kBAtMh2vp86OUBeukkMAmtGQHe+nxovrUVAvHSTGATGQUAAAAAAAIAxQIts5/upcStAjZduEoP2eUCiRbbz/fQ4QHsUrkfhSktAK4cW2c6XPkArhxbZzhdIQH9qvHSTaFBAnu+nxkuXRUCYbhKDwCpVQHE9Ctej0FRA4noUrkexQ0DdJAaBlXNLQIlBYOXQIlNA30+Nl27yQkDo+6nx0k1JQIcW2c73E0FA8tJNYhCIUUCF61G4HmU/QCuHFtnOZ0hAQmDl0CLbPUCBlUOLbCcwQI6XbhKD8FBAJzEIrBzKQkAzMzMzM3M+QPLSTWIQGDFAwMqhRbbTO0ApXI/C9VhKQGZmZmZmtlhAcT0K16P4VUAtsp3vp8ZMQGzn+6nxUkxApHA9CtcDQUCq8dJNYqBDQDMzMzMz8zNAVOOlm8QgLUAgsHJoke0+QMP1KFyPYj5A8tJNYhBoQ0AnMQisHDpHQK5H4XoUpl9AlBgEVg7dVkCYbhKDwMpNQFpkO99PbTxAarx0kxgkY0CR7Xw/NZ45QARWDi2ybUVAlBgEVg7dQEBmZmZmZmZBQAwCK4cWmTZAv58aL93ETEDD9Shcj2JNQGmR7Xw/1UVAYOXQItu5PECJQWDl0KI+QIGVQ4tsBzxAGi/dJAZRTEBg5dAi27lJQC2yne+nFkdAUI2XbhIjNUDZzvdT46U/QDeJQWDlsDdAObTIdr7fO0AQWDm0yJZSQPLSTWIQuFJAzczMzMxMRUAlBoGVQ4s1QPhT46WbJDJAd76fGi/9MkBWDi2yne8zQLgehetR+DZAi2zn+6mRXUA9CtejcK1eQCPb+X5qLE5AwvUoXI9iOkBMN4lBYIUwQFK4HoXrsTVA2/l+arzUOEDP91PjpRsoQP7UeOkmsSRAdZMYBFYOKkDm0CLb+f4rQHnpJjEIDDtA76fGSzcJNkBcj8L1KJwuQKJFtvP9BENAarx0kxikQ0A5tMh2vo9CQAwCK4cWuTFAYhBYObSkY0ArhxbZzldDQJLtfD81nkZAkxgEVg7NTkAhsHJoka0zQD81XrpJnEJA5tAi2/n+PECiRbbz/VQ9QD0K16NwHTRAukkMAisXTUD0/dR46e5WQP7UeOkmcUhAgZVDi2xnQEBWDi2ynU80QKAaL90khi9AcmiR7Xx/NkA+CtejcH0pQPLSTWIQWClA9P3UeOkmHEBQjZduEoMyQNejcD0KNzdAfT81XrqZQED+1HjpJjFMQHnpJjEITDtAnMQgsHJ4RUBWDi2yne9HQEJg5dAiWypAwcqhRbazMUDwp8ZLN5lCQJ7vp8bLVaRARrbz/dRNk0DNzMzMzNpyQBBYObRIKZdAXrpJDAJZf0AAAAAAAMp3QMUgsHJoXWJArkfhehTmYECNl24Sg9Z9QG8Sg8DKQVdA3SQGgZVLUkCwcmiR7QxHQCUGgZVDa0lAAiuHFtl2UkDl0CLb+U5BQMl2vp8aL0RAnMQgsHIoSUDtfD81Xho8QGiR7Xw/VUNAexSuR+E6RUAGgZVDi3xIQLx0kxgEJkVAtMh2vp9sc0BkO99PjRd4QDvfT42Xam5A6iYxCKzwZkCJQWDl0NZiQClcj8L1YFdAf2q8dJNcZEAAAAAAAARoQPYoXI/CcWJAqvHSTWIQZ0DFILByaAFRQMl2vp8aE2lAhetRuB79UUDwp8ZLN8lTQM/3U+Olu1xAmpmZmZmZcUAIrBxaZHdiQCcxCKwcjYBAEoPAyqFggkBI4XoUrl11QPp+arx0W2dA1XjpJjFYZEA730+Nlw5ZQKRwPQrXY19AUI2XbhIXckD8qfHSTYJJQB1aZDvfn1pAFK5H4XqMXUBYObTIdv5IQJ7vp8ZLVzpAmG4Sg8CaQUC0yHa+n1pAQOXQItv5jmFAHVpkO99/SkA5tMh2vkdTQDm0yHa+R1VAhxbZzveTKEDfT42XbiJBQKrx0k1isDFAaJHtfD81IUCR7Xw/NRZQQDvfT42XrilAa7x0kxikQUAVrkfhetQuQPhT46WbBDRAK4cW2c4nQEC6SQwCK+c3QFyPwvUowGpACKwcWmSrT0C28/3UeGk/QMDKoUW28ztAd76fGi89NkBqvHSTGOQ2QEoMAiuH1kZAQmDl0CKrQED4U+Olm+RcQGDl0CLbeUpAHVpkO9+3UUDy0k1iEChVQLByaJHtDExA001iEFhRUkD8qfHSTcJAQKabxCCwgkBAQWDl0CLLRkDfT42XbvI9QHWTGARW/kBAXI/C9SjUW0D4U+Olm6hvQKrx0k1igFpAXrpJDAIrTUA/NV66SZRYQIcW2c73G3FA30+Nl25KWEBkO99PjVdCQDzfT42XDkhAPQrXo3DtTkAW2c73U3NIQNEi2/l+WkBAeekmMQhcQEAIrBxaZKtEQESLbOf7KTpAoBov3SS2REAOLbKd70cyQHWTGARWTjVAQWDl0CLbK0CkcD0K10NSQFg5tMh2vk9ApHA9CtdLUUAnMQisHNpFQMDKoUW2w0FA4XoUrkepVkD8qfHSTdpeQNv5fmq8/GlAgZVDi2w3VUCPwvUoXB9OQLByaJHtnEJA2c73U+NRckCF61G4HmVFQH0/NV66CU1AyXa+nxpfQkBg5dAi22lDQDEIrBxaxERA6SYxCKwEXkDb+X5qvARCQB1aZDvfDzNA/tR46SYxHUCWQ4ts5/sjQAaBlUOLXENAJzEIrBxaKEDAyqFFtlMwQDq0yHa+HylA8tJNYhC4VED0/dR46aY/QAisHFpkmzdAtMh2vp/KQEBaZDvfT003QBODwMqhBS5AxSCwcmjxN0C0yHa+nzozQJmZmZmZvWBAObTIdr7fNUAbL90kBk1qQGQ730+NFzlAObTIdr6fMUBI4XoUrsc1QEjhehSuF0FADAIrhxb5O0BI4XoUrmc3QLByaJHtvDJAZ2ZmZmYGO0BkO99PjQdEQB1aZDvfj0NA+FPjpZvER0BeukkMAgsxQGIQWDm0KDxAHVpkO98vOECq8dJNYhhQQAIrhxbZ7kpAPQrXo3DdNEBoke18P2VBQPLSTWIQeDNAsp3vp8ZLPEB9PzVeumFSQPyp8dJNYkRAAiuHFtlONUC0yHa+n9pPQI/C9ShcD0FAEFg5tMj2JkArhxbZzjc1QKJFtvP9nF1A2/l+arx0OEAQWDm0yJZHQFYOLbKdt1hA001iEFgxVECiRbbz/bQ3QARWDi2yXS9AVOOlm8QAM0DJdr6fGo88QKrx0k1iyFxA3SQGgZUrUUBcj8L1KBwjQIts5/up8RVAVOOlm8TgLUAdWmQ7308uQOF6FK5HoS5A0SLb+X7qHkC4HoXrUXgwQJqZmZmZmTNAOrTIdr4fF0Dy0k1iENgSQAisHFpkOxpAxCCwcmgRHUB/arx0kxglQC/dJAaBlTxAMzMzMzPzI0CQwvUoXA8XQLpJDAIrhyBAppvEILAyM0BU46WbxKAxQKAaL90khhlATDeJQWDlMkCF61G4HoUfQHNoke18PxhAVOOlm8TgJUDXo3A9Clc/QLByaJHtnDJAoBov3ST2QED6fmq8dBMrQBkEVg4tsiZAexSuR+E6JEBSuB6F61EgQBgEVg4tciJAcT0K16PwGkA5tMh2vltpQEoMAiuHliVAhetRuB6FN0DVeOkmMcgoQMuhRbbz/TRAxks3iUEANUDb+X5qvHQwQIcW2c73EyRAGQRWDi3qUECiRbbz/XQ3QBKDwMqhBTZAZTvfT41HfUAOLbKd7zV/QKAaL90kimRAbhKDwMoRTUApXI/C9ShIQL6fGi/dpD5AxSCwcmjBQkCe76fGS9dDQN9PjZduIlVAqvHSTWKQUUAUrkfhemOFQO58PzVe0lpAGy/dJAbRR0B1kxgEVmZxQGu8dJMYpD5AQmDl0CKrRUAQWDm0yLYzQEjhehSupzRARIts5/tJTUC6SQwCKwcqQHe+nxovzUBAEoPAyqEFKUDl0CLb+f4xQLpJDAIrd0FAjZduEoPAQEB/arx0k1hCQPT91HjpxkhAFK5H4XqUKEAdWmQ73w8zQBkEVg4tMiBAAAAAAACAN0BSuB6F62FBQFyPwvUonDpA9P3UeOlmJUDP91PjpbswQKjGSzeJ8UJAku18PzW+NUD0/dR46aZDQPYoXI/CdTZA16NwPQqXOEBmZmZmZqZKQJhuEoPAmkFA16NwPQpbbUA9CtejcI1bQC/dJAaBfVFA/Knx0k0qVUDTTWIQWLlFQKRwPQrXw0NABoGVQ4ssN0B/arx0kxg2QAaBlUOLjDNApHA9CtfDMEAj2/l+atxCQAisHFpkm1NAke18PzUeOEAlBoGVQ4s3QESLbOf7iTNAbef7qfESJUBoke18PzUqQDeJQWDl0CtA2c73U+NlPkDD9Shcj9JFQHE9CtejcDpA+FPjpZu0RkBGtvP91Hg0QLKd76fGiyNA2c73U+MlIECYbhKDwEorQLpJDAIrhy1AZDvfT43nTUBBYOXQImNTQPyp8dJNimFAppvEILDCXUB/arx0k7hSQClcj8L1SENAjZduEoMgQ0CcxCCwcohCQEW28/3U+EdAWmQ7309NNkDufD81XnovQJ7vp8ZLtzVASOF6FK4XQEAOLbKd76cqQNV46SYxmENAYOXQItvRUUBYObTIdn5CQJMYBFYODUFA16NwPQo3QUCiRbbz/VQxQDvfT42X7iJA2/l+arxUREB/arx0k5hLQIXrUbgedUBAZmZmZmamNEDsUbgehYs3QBKDwMqhJTFAVg4tsp1vI0CDwMqhRbYwQOj7qfHSbTFAH4XrUbhmUEAW2c73UyNFQC2yne+nRjBAsHJoke28LUBoke18PzUnQPCnxks3yTpACKwcWmRbNUD6fmq8dNMmQG3n+6nxskVA6SYxCKzcI0BQjZduEsMiQL6fGi/dZCxATDeJQWDlLEDwp8ZLN4k9QH0/NV66WUdA8KfGSzcFfkCLbOf7qVE5QIGVQ4tsZxlA6SYxCKycEECR7Xw/NV4UQPp+arx0kxVAI9v5fmo8L0Cmm8QgsBIwQEw3iUFgBT5AiUFg5dC6aEBuEoPAyqE/QH9qvHST2ChAR+F6FK53TkDXo3A9Cnc9QKabxCCwUjFALbKd76cWV0DXo3A9CjcwQMuhRbbzvSpAvp8aL93kPEArhxbZzjctQFg5tMh2TkFAqMZLN4nhPkDhehSuR+E1QGIQWDm0yB1Aku18PzUeI0DP91PjpZtMQMdLN4lBICdAxSCwcmhhUEDNzMzMzNRbQLgehetR2DpAku18PzXeJUCmm8QgsBI2QE5iEFg5ZERANV66SQyCI0CDwMqhRTYbQGIQWDm0iCpA+FPjpZskOUCNl24Sg4AjQJLtfD81XhhAVOOlm8QAP0Bg5dAi2/knQFpkO99PjQxA4XoUrkfhE0A5tMh2vl8iQJDC9Shcjw5Asp3vp8ZLC0B3vp8aL30xQIPAyqFFNhZAhetRuB6FDUDRItv5fuoYQAaBlUOL7BBADi2yne+nBkCyne+nxssZQAIrhxbZDkNAj8L1KFyvOUA0MzMzM5M9QIXrUbgehR9ArkfhehSaYECJQWDl0F5gQOF6FK5Hu3RAz/dT46ULTkDTTWIQWJk4QIlBYOXQAjRAN4lBYOUwPUAtsp3vp4ZeQLgehetRHnFAqvHSTWJYWUA730+Nl25PQL6fGi/dHFJAVg4tsp1JdkCBlUOLbK9WQG3n+6nxskhA8KfGSzdJS0BaZDvfT1VQQJzEILByOEBAsHJoke18MUBt5/up8fI5QA==", - "dtype": "f8" - }, - "yaxis": "y" - } - ], - "layout": { - "legend": { - "tracegroupgap": 0 - }, - "margin": { - "t": 60 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#f2f5fa" - }, - "error_y": { - "color": "#f2f5fa" - }, - "marker": { - "line": { - "color": "rgb(17,17,17)", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "rgb(17,17,17)", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#A2B1C6", - "gridcolor": "#506784", - "linecolor": "#506784", - "minorgridcolor": "#506784", - "startlinecolor": "#A2B1C6" - }, - "baxis": { - "endlinecolor": "#A2B1C6", - "gridcolor": "#506784", - "linecolor": "#506784", - "minorgridcolor": "#506784", - "startlinecolor": "#A2B1C6" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "marker": { - "line": { - "color": "#283442" - } - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "line": { - "color": "#283442" - } - }, - "type": "scattergl" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermap" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#506784" - }, - "line": { - "color": "rgb(17,17,17)" - } - }, - "header": { - "fill": { - "color": "#2a3f5f" - }, - "line": { - "color": "rgb(17,17,17)" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#f2f5fa", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#f2f5fa" - }, - "geo": { - "bgcolor": "rgb(17,17,17)", - "lakecolor": "rgb(17,17,17)", - "landcolor": "rgb(17,17,17)", - "showlakes": true, - "showland": true, - "subunitcolor": "#506784" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "dark" - }, - "paper_bgcolor": "rgb(17,17,17)", - "plot_bgcolor": "rgb(17,17,17)", - "polar": { - "angularaxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - }, - "bgcolor": "rgb(17,17,17)", - "radialaxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "rgb(17,17,17)", - "gridcolor": "#506784", - "gridwidth": 2, - "linecolor": "#506784", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#C8D4E3" - }, - "yaxis": { - "backgroundcolor": "rgb(17,17,17)", - "gridcolor": "#506784", - "gridwidth": 2, - "linecolor": "#506784", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#C8D4E3" - }, - "zaxis": { - "backgroundcolor": "rgb(17,17,17)", - "gridcolor": "#506784", - "gridwidth": 2, - "linecolor": "#506784", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#C8D4E3" - } - }, - "shapedefaults": { - "line": { - "color": "#f2f5fa" - } - }, - "sliderdefaults": { - "bgcolor": "#C8D4E3", - "bordercolor": "rgb(17,17,17)", - "borderwidth": 1, - "tickwidth": 0 - }, - "ternary": { - "aaxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - }, - "baxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - }, - "bgcolor": "rgb(17,17,17)", - "caxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "updatemenudefaults": { - "bgcolor": "#506784", - "borderwidth": 0 - }, - "xaxis": { - "automargin": true, - "gridcolor": "#283442", - "linecolor": "#506784", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "#283442", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "#283442", - "linecolor": "#506784", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "#283442", - "zerolinewidth": 2 - } - } - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "title": { - "text": "timestamp_trade_dt" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "qty_sum" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "px.line(df_aster_trades_by_sec_maker, y='qty_sum', template='plotly_dark')" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "b4de9867", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "hovertemplate": "timestamp_trade_dt=%{x}
qty_sum=%{y}", - "legendgroup": "", - "line": { - "color": "#636efa", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "", - "showlegend": false, - "type": "scattergl", - "x": [ - "2026-04-27T15:24:00", - "2026-04-27T15:25:00", - "2026-04-27T15:26:00", - "2026-04-27T15:27:00", - "2026-04-27T15:28:00", - "2026-04-27T15:29:00", - "2026-04-27T15:30:00", - "2026-04-27T15:31:00", - "2026-04-27T15:32:00", - "2026-04-27T15:33:00", - "2026-04-27T15:34:00", - "2026-04-27T15:35:00", - "2026-04-27T15:36:00", - "2026-04-27T15:37:00", - "2026-04-27T15:38:00", - "2026-04-27T15:39:00", - "2026-04-27T15:40:00", - "2026-04-27T15:41:00", - "2026-04-27T15:42:00", - "2026-04-27T15:43:00", - "2026-04-27T15:44:00", - "2026-04-27T15:45:00", - "2026-04-27T15:46:00", - "2026-04-27T15:47:00", - "2026-04-27T15:48:00", - "2026-04-27T15:49:00", - "2026-04-27T15:50:00", - "2026-04-27T15:51:00", - "2026-04-27T15:52:00", - "2026-04-27T15:53:00", - "2026-04-27T15:54:00", - "2026-04-27T15:55:00", - "2026-04-27T15:56:00", - "2026-04-27T15:57:00", - "2026-04-27T15:58:00", - "2026-04-27T15:59:00", - "2026-04-27T16:00:00", - "2026-04-27T16:01:00", - "2026-04-27T16:02:00", - "2026-04-27T16:03:00", - "2026-04-27T16:04:00", - "2026-04-27T16:05:00", - "2026-04-27T16:06:00", - "2026-04-27T16:07:00", - "2026-04-27T16:08:00", - "2026-04-27T16:09:00", - "2026-04-27T16:10:00", - "2026-04-27T16:11:00", - "2026-04-27T16:12:00", - "2026-04-27T16:13:00", - "2026-04-27T16:14:00", - "2026-04-27T16:15:00", - "2026-04-27T16:16:00", - "2026-04-27T16:17:00", - "2026-04-27T16:18:00", - "2026-04-27T16:19:00", - "2026-04-27T16:20:00", - "2026-04-27T16:21:00", - "2026-04-27T16:22:00", - "2026-04-27T16:23:00", - "2026-04-27T16:24:00", - "2026-04-27T16:25:00", - "2026-04-27T16:26:00", - "2026-04-27T16:27:00", - "2026-04-27T16:28:00", - "2026-04-27T16:29:00", - "2026-04-27T16:30:00", - "2026-04-27T16:31:00", - "2026-04-27T16:32:00", - "2026-04-27T16:33:00", - "2026-04-27T16:34:00", - "2026-04-27T16:35:00", - "2026-04-27T16:36:00", - "2026-04-27T16:38:00", - "2026-04-27T16:39:00", - "2026-04-27T16:40:00", - "2026-04-27T16:41:00", - "2026-04-27T16:43:00", - "2026-04-27T16:44:00", - "2026-04-27T16:45:00", - "2026-04-27T16:46:00", - "2026-04-27T16:47:00", - "2026-04-27T16:48:00", - "2026-04-27T16:49:00", - "2026-04-27T16:50:00", - "2026-04-27T16:51:00", - "2026-04-27T16:52:00", - "2026-04-27T16:53:00", - "2026-04-27T16:54:00", - "2026-04-27T16:55:00", - "2026-04-27T16:56:00", - "2026-04-27T16:57:00", - "2026-04-27T16:58:00", - "2026-04-27T17:00:00", - "2026-04-27T17:01:00", - "2026-04-27T17:02:00", - "2026-04-27T17:03:00", - "2026-04-27T17:04:00", - "2026-04-27T17:05:00", - "2026-04-27T17:06:00", - "2026-04-27T17:07:00", - "2026-04-27T17:08:00", - "2026-04-27T17:09:00", - "2026-04-27T17:10:00", - "2026-04-27T17:11:00", - "2026-04-27T17:12:00", - "2026-04-27T17:13:00", - "2026-04-27T17:14:00", - "2026-04-27T17:15:00", - "2026-04-27T17:16:00", - "2026-04-27T17:18:00", - "2026-04-27T17:19:00", - "2026-04-27T17:20:00", - "2026-04-27T17:23:00", - "2026-04-27T17:24:00", - "2026-04-27T17:25:00", - "2026-04-27T17:26:00", - "2026-04-27T17:27:00", - "2026-04-27T17:28:00", - "2026-04-27T17:29:00", - "2026-04-27T17:30:00", - "2026-04-27T17:31:00", - "2026-04-27T17:32:00", - "2026-04-27T17:33:00", - "2026-04-27T17:34:00", - "2026-04-27T17:35:00", - "2026-04-27T17:36:00", - "2026-04-27T17:37:00", - "2026-04-27T17:38:00", - "2026-04-27T17:39:00", - "2026-04-27T17:40:00", - "2026-04-27T17:41:00", - "2026-04-27T17:42:00", - "2026-04-27T17:43:00", - "2026-04-27T17:44:00", - "2026-04-27T17:45:00", - "2026-04-27T17:46:00", - "2026-04-27T17:47:00", - "2026-04-27T17:48:00", - "2026-04-27T17:49:00", - "2026-04-27T17:50:00", - "2026-04-27T17:51:00", - "2026-04-27T17:53:00", - "2026-04-27T17:54:00", - "2026-04-27T17:55:00", - "2026-04-27T17:56:00", - "2026-04-27T17:58:00", - "2026-04-27T18:00:00", - "2026-04-27T18:01:00", - "2026-04-27T18:02:00", - "2026-04-27T18:03:00", - "2026-04-27T18:04:00", - "2026-04-27T18:05:00", - "2026-04-27T18:06:00", - "2026-04-27T18:07:00", - "2026-04-27T18:08:00", - "2026-04-27T18:09:00", - "2026-04-27T18:10:00", - "2026-04-27T18:11:00", - "2026-04-27T18:12:00", - "2026-04-27T18:13:00", - "2026-04-27T18:14:00", - "2026-04-27T18:17:00", - "2026-04-27T18:18:00", - "2026-04-27T18:19:00", - "2026-04-27T18:20:00", - "2026-04-27T18:21:00", - "2026-04-27T18:23:00", - "2026-04-27T18:24:00", - "2026-04-27T18:25:00", - "2026-04-27T18:26:00", - "2026-04-27T18:28:00", - "2026-04-27T18:30:00", - "2026-04-27T18:31:00", - "2026-04-27T18:32:00", - "2026-04-27T18:33:00", - "2026-04-27T18:34:00", - "2026-04-27T18:35:00", - "2026-04-27T18:38:00", - "2026-04-27T18:39:00", - "2026-04-27T18:40:00", - "2026-04-27T18:41:00", - "2026-04-27T18:42:00", - "2026-04-27T18:43:00", - "2026-04-27T18:45:00", - "2026-04-27T18:46:00", - "2026-04-27T18:47:00", - "2026-04-27T18:48:00", - "2026-04-27T18:49:00", - "2026-04-27T18:50:00", - "2026-04-27T18:51:00", - "2026-04-27T18:52:00", - "2026-04-27T18:53:00", - "2026-04-27T18:54:00", - "2026-04-27T18:55:00", - "2026-04-27T18:56:00", - "2026-04-27T18:57:00", - "2026-04-27T18:58:00", - "2026-04-27T19:00:00", - "2026-04-27T19:01:00", - "2026-04-27T19:02:00", - "2026-04-27T19:03:00", - "2026-04-27T19:04:00", - "2026-04-27T19:05:00", - "2026-04-27T19:06:00", - "2026-04-27T19:07:00", - "2026-04-27T19:13:00", - "2026-04-27T19:14:00", - "2026-04-27T19:15:00", - "2026-04-27T19:16:00", - "2026-04-27T19:17:00", - "2026-04-27T19:18:00", - "2026-04-27T19:19:00", - "2026-04-27T19:20:00", - "2026-04-27T19:21:00", - "2026-04-27T19:22:00", - "2026-04-27T19:23:00", - "2026-04-27T19:24:00", - "2026-04-27T19:25:00", - "2026-04-27T19:26:00", - "2026-04-27T19:27:00", - "2026-04-27T19:28:00", - "2026-04-27T19:29:00", - "2026-04-27T19:30:00", - "2026-04-27T19:31:00", - "2026-04-27T19:32:00", - "2026-04-27T19:33:00", - "2026-04-27T19:35:00", - "2026-04-27T19:36:00", - "2026-04-27T19:37:00", - "2026-04-27T19:38:00", - "2026-04-27T19:39:00", - "2026-04-27T19:40:00", - "2026-04-27T19:41:00", - "2026-04-27T19:42:00", - "2026-04-27T19:43:00", - "2026-04-27T19:44:00", - "2026-04-27T19:45:00", - "2026-04-27T19:46:00", - "2026-04-27T19:47:00", - "2026-04-27T19:48:00", - "2026-04-27T19:49:00", - "2026-04-27T19:50:00", - "2026-04-27T19:51:00", - "2026-04-27T19:52:00", - "2026-04-27T19:55:00", - "2026-04-27T19:56:00", - "2026-04-27T19:57:00", - "2026-04-27T19:59:00", - "2026-04-27T20:00:00", - "2026-04-27T20:01:00", - "2026-04-27T20:03:00", - "2026-04-27T20:04:00", - "2026-04-27T20:05:00", - "2026-04-27T20:06:00", - "2026-04-27T20:07:00", - "2026-04-27T20:08:00", - "2026-04-27T20:09:00", - "2026-04-27T20:10:00", - "2026-04-27T20:11:00", - "2026-04-27T20:12:00", - "2026-04-27T20:13:00", - "2026-04-27T20:14:00", - "2026-04-27T20:15:00", - "2026-04-27T20:16:00", - "2026-04-27T20:17:00", - "2026-04-27T20:20:00", - "2026-04-27T20:21:00", - "2026-04-27T20:22:00", - "2026-04-27T20:26:00", - "2026-04-27T20:27:00", - "2026-04-27T20:30:00", - "2026-04-27T20:31:00", - "2026-04-27T20:32:00", - "2026-04-27T20:33:00", - "2026-04-27T20:34:00", - "2026-04-27T20:35:00", - "2026-04-27T20:36:00", - "2026-04-27T20:37:00", - "2026-04-27T20:38:00", - "2026-04-27T20:39:00", - "2026-04-27T20:40:00", - "2026-04-27T20:44:00", - "2026-04-27T20:45:00", - "2026-04-27T20:46:00", - "2026-04-27T20:52:00", - "2026-04-27T20:54:00", - "2026-04-27T20:58:00", - "2026-04-27T20:59:00", - "2026-04-27T21:00:00", - "2026-04-27T21:01:00", - "2026-04-27T21:02:00", - "2026-04-27T21:03:00", - "2026-04-27T21:04:00", - "2026-04-27T21:05:00", - "2026-04-27T21:06:00", - "2026-04-27T21:07:00", - "2026-04-27T21:08:00", - "2026-04-27T21:09:00", - "2026-04-27T21:10:00", - "2026-04-27T21:11:00", - "2026-04-27T21:12:00", - "2026-04-27T21:15:00", - "2026-04-27T21:16:00", - "2026-04-27T21:17:00", - "2026-04-27T21:18:00", - "2026-04-27T21:19:00", - "2026-04-27T21:20:00", - "2026-04-27T21:29:00", - "2026-04-27T21:30:00", - "2026-04-27T21:32:00", - "2026-04-27T21:33:00", - "2026-04-27T21:34:00", - "2026-04-27T21:36:00", - "2026-04-27T21:37:00", - "2026-04-27T21:38:00", - "2026-04-27T21:40:00", - "2026-04-27T21:41:00", - "2026-04-27T21:42:00", - "2026-04-27T21:43:00", - "2026-04-27T21:44:00", - "2026-04-27T21:45:00", - "2026-04-27T21:46:00", - "2026-04-27T21:47:00", - "2026-04-27T21:48:00", - "2026-04-27T21:50:00", - "2026-04-27T21:51:00", - "2026-04-27T21:52:00", - "2026-04-27T21:53:00", - "2026-04-27T21:54:00", - "2026-04-27T21:55:00", - "2026-04-27T21:56:00", - "2026-04-27T21:59:00", - "2026-04-27T22:00:00", - "2026-04-27T22:01:00", - "2026-04-27T22:02:00", - "2026-04-27T22:03:00", - "2026-04-27T22:04:00", - "2026-04-27T22:05:00", - "2026-04-27T22:06:00", - "2026-04-27T22:07:00", - "2026-04-27T22:08:00", - "2026-04-27T22:09:00", - "2026-04-27T22:10:00", - "2026-04-27T22:11:00", - "2026-04-27T22:12:00", - "2026-04-27T22:15:00", - "2026-04-27T22:16:00", - "2026-04-27T22:17:00", - "2026-04-27T22:20:00", - "2026-04-27T22:21:00", - "2026-04-27T22:23:00", - "2026-04-27T22:24:00", - "2026-04-27T22:28:00", - "2026-04-27T22:29:00", - "2026-04-27T22:30:00", - "2026-04-27T22:31:00", - "2026-04-27T22:32:00", - "2026-04-27T22:33:00", - "2026-04-27T22:34:00", - "2026-04-27T22:35:00", - "2026-04-27T22:36:00", - "2026-04-27T22:38:00", - "2026-04-27T22:44:00", - "2026-04-27T22:45:00", - "2026-04-27T22:48:00", - "2026-04-27T22:49:00", - "2026-04-27T22:50:00", - "2026-04-27T22:51:00", - "2026-04-27T22:52:00", - "2026-04-27T22:55:00", - "2026-04-27T22:56:00", - "2026-04-27T22:58:00", - "2026-04-27T22:59:00", - "2026-04-27T23:00:00", - "2026-04-27T23:02:00", - "2026-04-27T23:04:00", - "2026-04-27T23:05:00", - "2026-04-27T23:06:00", - "2026-04-27T23:07:00", - "2026-04-27T23:09:00", - "2026-04-27T23:10:00", - "2026-04-27T23:11:00", - "2026-04-27T23:12:00", - "2026-04-27T23:13:00", - "2026-04-27T23:16:00", - "2026-04-27T23:17:00", - "2026-04-27T23:18:00", - "2026-04-27T23:19:00", - "2026-04-27T23:20:00", - "2026-04-27T23:23:00", - "2026-04-27T23:24:00", - "2026-04-27T23:25:00", - "2026-04-27T23:26:00", - "2026-04-27T23:28:00", - "2026-04-27T23:29:00", - "2026-04-27T23:31:00", - "2026-04-27T23:32:00", - "2026-04-27T23:33:00", - "2026-04-27T23:35:00", - "2026-04-27T23:36:00", - "2026-04-27T23:37:00", - "2026-04-27T23:38:00", - "2026-04-27T23:39:00", - "2026-04-27T23:40:00", - "2026-04-27T23:41:00", - "2026-04-27T23:42:00", - "2026-04-27T23:43:00", - "2026-04-27T23:44:00", - "2026-04-27T23:45:00", - "2026-04-27T23:46:00", - "2026-04-27T23:47:00", - "2026-04-27T23:48:00", - "2026-04-27T23:49:00", - "2026-04-27T23:50:00", - "2026-04-27T23:51:00", - "2026-04-27T23:52:00", - "2026-04-27T23:53:00", - "2026-04-27T23:54:00", - "2026-04-27T23:55:00", - "2026-04-27T23:56:00", - "2026-04-27T23:57:00", - "2026-04-27T23:58:00", - "2026-04-28T00:00:00", - "2026-04-28T00:01:00", - "2026-04-28T00:03:00", - "2026-04-28T00:04:00", - "2026-04-28T00:05:00", - "2026-04-28T00:06:00", - "2026-04-28T00:07:00", - "2026-04-28T00:09:00", - "2026-04-28T00:10:00", - "2026-04-28T00:11:00", - "2026-04-28T00:12:00", - "2026-04-28T00:13:00", - "2026-04-28T00:14:00", - "2026-04-28T00:15:00", - "2026-04-28T00:16:00", - "2026-04-28T00:17:00", - "2026-04-28T00:18:00", - "2026-04-28T00:19:00", - "2026-04-28T00:20:00", - "2026-04-28T00:21:00", - "2026-04-28T00:23:00", - "2026-04-28T00:24:00", - "2026-04-28T00:26:00", - "2026-04-28T00:27:00", - "2026-04-28T00:28:00", - "2026-04-28T00:30:00", - "2026-04-28T00:33:00", - "2026-04-28T00:34:00", - "2026-04-28T00:35:00", - "2026-04-28T00:37:00", - "2026-04-28T00:39:00", - "2026-04-28T00:40:00", - "2026-04-28T00:41:00", - "2026-04-28T00:42:00", - "2026-04-28T00:43:00", - "2026-04-28T00:44:00", - "2026-04-28T00:45:00", - "2026-04-28T00:46:00", - "2026-04-28T00:47:00", - "2026-04-28T00:48:00", - "2026-04-28T00:49:00", - "2026-04-28T00:50:00", - "2026-04-28T00:51:00", - "2026-04-28T00:52:00", - "2026-04-28T00:56:00", - "2026-04-28T00:57:00", - "2026-04-28T00:58:00", - "2026-04-28T00:59:00", - "2026-04-28T01:00:00", - "2026-04-28T01:02:00", - "2026-04-28T01:04:00", - "2026-04-28T01:06:00", - "2026-04-28T01:07:00", - "2026-04-28T01:08:00", - "2026-04-28T01:09:00", - "2026-04-28T01:10:00", - "2026-04-28T01:11:00", - "2026-04-28T01:12:00", - "2026-04-28T01:13:00", - "2026-04-28T01:14:00", - "2026-04-28T01:15:00", - "2026-04-28T01:16:00", - "2026-04-28T01:17:00", - "2026-04-28T01:18:00", - "2026-04-28T01:19:00", - "2026-04-28T01:20:00", - "2026-04-28T01:21:00", - "2026-04-28T01:22:00", - "2026-04-28T01:23:00", - "2026-04-28T01:24:00", - "2026-04-28T01:25:00", - "2026-04-28T01:26:00", - "2026-04-28T01:27:00", - "2026-04-28T01:28:00", - "2026-04-28T01:29:00", - "2026-04-28T01:30:00", - "2026-04-28T01:31:00", - "2026-04-28T01:32:00", - "2026-04-28T01:33:00", - "2026-04-28T01:34:00", - "2026-04-28T01:35:00", - "2026-04-28T01:36:00", - "2026-04-28T01:37:00", - "2026-04-28T01:38:00", - "2026-04-28T01:39:00", - "2026-04-28T01:40:00", - "2026-04-28T01:41:00", - "2026-04-28T01:42:00", - "2026-04-28T01:43:00", - "2026-04-28T01:44:00", - "2026-04-28T01:45:00", - "2026-04-28T01:46:00", - "2026-04-28T01:47:00", - "2026-04-28T01:48:00", - "2026-04-28T01:49:00", - "2026-04-28T01:50:00", - "2026-04-28T01:51:00", - "2026-04-28T01:52:00", - "2026-04-28T01:53:00", - "2026-04-28T01:54:00", - "2026-04-28T01:55:00", - "2026-04-28T01:56:00", - "2026-04-28T01:57:00", - "2026-04-28T01:58:00", - "2026-04-28T01:59:00", - "2026-04-28T02:00:00", - "2026-04-28T02:01:00", - "2026-04-28T02:02:00", - "2026-04-28T02:03:00", - "2026-04-28T02:04:00", - "2026-04-28T02:05:00", - "2026-04-28T02:06:00", - "2026-04-28T02:07:00", - "2026-04-28T02:09:00", - "2026-04-28T02:10:00", - "2026-04-28T02:12:00", - "2026-04-28T02:15:00", - "2026-04-28T02:16:00", - "2026-04-28T02:17:00", - "2026-04-28T02:19:00", - "2026-04-28T02:20:00", - "2026-04-28T02:22:00", - "2026-04-28T02:24:00", - "2026-04-28T02:25:00", - "2026-04-28T02:26:00", - "2026-04-28T02:27:00", - "2026-04-28T02:28:00", - "2026-04-28T02:29:00", - "2026-04-28T02:30:00", - "2026-04-28T02:31:00", - "2026-04-28T02:32:00", - "2026-04-28T02:33:00", - "2026-04-28T02:34:00", - "2026-04-28T02:35:00", - "2026-04-28T02:36:00", - "2026-04-28T02:37:00", - "2026-04-28T02:38:00", - "2026-04-28T02:39:00", - "2026-04-28T02:40:00", - "2026-04-28T02:41:00", - "2026-04-28T02:42:00", - "2026-04-28T02:43:00", - "2026-04-28T02:44:00", - "2026-04-28T02:45:00", - "2026-04-28T02:46:00", - "2026-04-28T02:48:00", - "2026-04-28T02:49:00", - "2026-04-28T02:50:00", - "2026-04-28T02:51:00", - "2026-04-28T02:52:00", - "2026-04-28T02:53:00", - "2026-04-28T02:54:00", - "2026-04-28T02:55:00", - "2026-04-28T02:57:00", - "2026-04-28T02:58:00", - "2026-04-28T02:59:00", - "2026-04-28T03:00:00", - "2026-04-28T03:01:00", - "2026-04-28T03:02:00", - "2026-04-28T03:03:00", - "2026-04-28T03:04:00", - "2026-04-28T03:05:00", - "2026-04-28T03:06:00", - "2026-04-28T03:07:00", - "2026-04-28T03:08:00", - "2026-04-28T03:09:00", - "2026-04-28T03:10:00", - "2026-04-28T03:11:00", - "2026-04-28T03:12:00", - "2026-04-28T03:13:00", - "2026-04-28T03:15:00", - "2026-04-28T03:17:00", - "2026-04-28T03:18:00", - "2026-04-28T03:19:00", - "2026-04-28T03:20:00", - "2026-04-28T03:22:00", - "2026-04-28T03:23:00", - "2026-04-28T03:24:00", - "2026-04-28T03:26:00", - "2026-04-28T03:28:00", - "2026-04-28T03:29:00", - "2026-04-28T03:30:00", - "2026-04-28T03:31:00", - "2026-04-28T03:34:00", - "2026-04-28T03:35:00", - "2026-04-28T03:36:00", - "2026-04-28T03:37:00", - "2026-04-28T03:38:00", - "2026-04-28T03:39:00", - "2026-04-28T03:40:00", - "2026-04-28T03:41:00", - "2026-04-28T03:44:00", - "2026-04-28T03:45:00", - "2026-04-28T03:46:00", - "2026-04-28T03:50:00", - "2026-04-28T03:51:00", - "2026-04-28T03:54:00", - "2026-04-28T03:57:00", - "2026-04-28T04:01:00", - "2026-04-28T04:02:00", - "2026-04-28T04:06:00", - "2026-04-28T04:08:00", - "2026-04-28T04:10:00", - "2026-04-28T04:11:00", - "2026-04-28T04:12:00", - "2026-04-28T04:14:00", - "2026-04-28T04:15:00", - "2026-04-28T04:16:00", - "2026-04-28T04:17:00", - "2026-04-28T04:18:00", - "2026-04-28T04:19:00", - "2026-04-28T04:20:00", - "2026-04-28T04:21:00", - "2026-04-28T04:23:00", - "2026-04-28T04:24:00", - "2026-04-28T04:25:00", - "2026-04-28T04:26:00", - "2026-04-28T04:30:00", - "2026-04-28T04:32:00", - "2026-04-28T04:33:00", - "2026-04-28T04:34:00", - "2026-04-28T04:35:00", - "2026-04-28T04:36:00", - "2026-04-28T04:37:00", - "2026-04-28T04:40:00", - "2026-04-28T04:41:00", - "2026-04-28T04:42:00", - "2026-04-28T04:43:00", - "2026-04-28T04:46:00", - "2026-04-28T04:50:00", - "2026-04-28T04:51:00", - "2026-04-28T04:56:00", - "2026-04-28T04:57:00", - "2026-04-28T04:58:00", - "2026-04-28T04:59:00", - "2026-04-28T05:00:00", - "2026-04-28T05:03:00", - "2026-04-28T05:04:00", - "2026-04-28T05:05:00", - "2026-04-28T05:06:00", - "2026-04-28T05:07:00", - "2026-04-28T05:08:00", - "2026-04-28T05:09:00", - "2026-04-28T05:10:00", - "2026-04-28T05:11:00", - "2026-04-28T05:12:00", - "2026-04-28T05:13:00", - "2026-04-28T05:14:00", - "2026-04-28T05:17:00", - "2026-04-28T05:18:00", - "2026-04-28T05:19:00", - "2026-04-28T05:23:00", - "2026-04-28T05:24:00", - "2026-04-28T05:26:00", - "2026-04-28T05:28:00", - "2026-04-28T05:29:00", - "2026-04-28T05:30:00", - "2026-04-28T05:31:00", - "2026-04-28T05:32:00", - "2026-04-28T05:34:00", - "2026-04-28T05:35:00", - "2026-04-28T05:36:00", - "2026-04-28T05:38:00", - "2026-04-28T05:39:00", - "2026-04-28T05:40:00", - "2026-04-28T05:41:00", - "2026-04-28T05:42:00", - "2026-04-28T05:45:00", - "2026-04-28T05:48:00", - "2026-04-28T05:49:00", - "2026-04-28T05:51:00", - "2026-04-28T05:52:00", - "2026-04-28T05:54:00", - "2026-04-28T05:56:00", - "2026-04-28T05:59:00", - "2026-04-28T06:00:00", - "2026-04-28T06:02:00", - "2026-04-28T06:03:00", - "2026-04-28T06:04:00", - "2026-04-28T06:06:00", - "2026-04-28T06:08:00", - "2026-04-28T06:09:00", - "2026-04-28T06:10:00", - "2026-04-28T06:11:00", - "2026-04-28T06:12:00", - "2026-04-28T06:13:00", - "2026-04-28T06:14:00", - "2026-04-28T06:15:00", - "2026-04-28T06:16:00", - "2026-04-28T06:18:00", - "2026-04-28T06:20:00", - "2026-04-28T06:21:00", - "2026-04-28T06:22:00", - "2026-04-28T06:23:00", - "2026-04-28T06:24:00", - "2026-04-28T06:25:00", - "2026-04-28T06:26:00", - "2026-04-28T06:27:00", - "2026-04-28T06:28:00", - "2026-04-28T06:30:00", - "2026-04-28T06:31:00", - "2026-04-28T06:32:00", - "2026-04-28T06:34:00", - "2026-04-28T06:36:00", - "2026-04-28T06:37:00", - "2026-04-28T06:38:00", - "2026-04-28T06:39:00", - "2026-04-28T06:40:00", - "2026-04-28T06:41:00", - "2026-04-28T06:42:00", - "2026-04-28T06:43:00", - "2026-04-28T06:44:00", - "2026-04-28T06:45:00", - "2026-04-28T06:46:00", - "2026-04-28T06:47:00", - "2026-04-28T06:48:00", - "2026-04-28T06:49:00", - "2026-04-28T06:50:00", - "2026-04-28T06:52:00", - "2026-04-28T06:54:00", - "2026-04-28T06:55:00", - "2026-04-28T06:56:00", - "2026-04-28T06:57:00", - "2026-04-28T06:58:00", - "2026-04-28T06:59:00", - "2026-04-28T07:00:00", - "2026-04-28T07:01:00", - "2026-04-28T07:02:00", - "2026-04-28T07:03:00", - "2026-04-28T07:04:00", - "2026-04-28T07:05:00", - "2026-04-28T07:06:00", - "2026-04-28T07:07:00", - "2026-04-28T07:09:00", - "2026-04-28T07:10:00", - "2026-04-28T07:12:00", - "2026-04-28T07:13:00", - "2026-04-28T07:14:00", - "2026-04-28T07:15:00", - "2026-04-28T07:16:00", - "2026-04-28T07:17:00", - "2026-04-28T07:18:00", - "2026-04-28T07:19:00", - "2026-04-28T07:20:00", - "2026-04-28T07:21:00", - "2026-04-28T07:22:00", - "2026-04-28T07:23:00", - "2026-04-28T07:24:00", - "2026-04-28T07:27:00", - "2026-04-28T07:28:00", - "2026-04-28T07:29:00", - "2026-04-28T07:31:00", - "2026-04-28T07:34:00", - "2026-04-28T07:36:00", - "2026-04-28T07:37:00", - "2026-04-28T07:39:00", - "2026-04-28T07:41:00", - "2026-04-28T07:42:00", - "2026-04-28T07:43:00", - "2026-04-28T07:45:00", - "2026-04-28T07:46:00", - "2026-04-28T07:47:00", - "2026-04-28T07:48:00", - "2026-04-28T07:49:00", - "2026-04-28T07:54:00", - "2026-04-28T07:55:00", - "2026-04-28T07:58:00", - "2026-04-28T08:00:00", - "2026-04-28T08:01:00", - "2026-04-28T08:02:00", - "2026-04-28T08:03:00", - "2026-04-28T08:04:00", - "2026-04-28T08:06:00", - "2026-04-28T08:09:00", - "2026-04-28T08:10:00", - "2026-04-28T08:11:00", - "2026-04-28T08:13:00", - "2026-04-28T08:14:00", - "2026-04-28T08:16:00", - "2026-04-28T08:17:00", - "2026-04-28T08:18:00", - "2026-04-28T08:19:00", - "2026-04-28T08:21:00", - "2026-04-28T08:22:00", - "2026-04-28T08:23:00", - "2026-04-28T08:24:00", - "2026-04-28T08:25:00", - "2026-04-28T08:26:00", - "2026-04-28T08:29:00", - "2026-04-28T08:30:00", - "2026-04-28T08:32:00", - "2026-04-28T08:33:00", - "2026-04-28T08:34:00", - "2026-04-28T08:35:00", - "2026-04-28T08:38:00", - "2026-04-28T08:39:00", - "2026-04-28T08:40:00", - "2026-04-28T08:41:00", - "2026-04-28T08:42:00", - "2026-04-28T08:43:00", - "2026-04-28T08:45:00", - "2026-04-28T08:46:00", - "2026-04-28T08:47:00", - "2026-04-28T08:48:00", - "2026-04-28T08:49:00", - "2026-04-28T08:50:00", - "2026-04-28T08:51:00", - "2026-04-28T08:54:00", - "2026-04-28T08:58:00", - "2026-04-28T08:59:00", - "2026-04-28T09:00:00", - "2026-04-28T09:01:00", - "2026-04-28T09:02:00", - "2026-04-28T09:03:00", - "2026-04-28T09:07:00", - "2026-04-28T09:10:00", - "2026-04-28T09:11:00", - "2026-04-28T09:12:00", - "2026-04-28T09:13:00", - "2026-04-28T09:15:00", - "2026-04-28T09:16:00", - "2026-04-28T09:19:00", - "2026-04-28T09:20:00", - "2026-04-28T09:21:00", - "2026-04-28T09:22:00", - "2026-04-28T09:23:00", - "2026-04-28T09:25:00", - "2026-04-28T09:26:00", - "2026-04-28T09:30:00", - "2026-04-28T09:31:00", - "2026-04-28T09:32:00", - "2026-04-28T09:33:00", - "2026-04-28T09:34:00", - "2026-04-28T09:35:00", - "2026-04-28T09:36:00", - "2026-04-28T09:38:00", - "2026-04-28T09:40:00", - "2026-04-28T09:42:00", - "2026-04-28T09:43:00", - "2026-04-28T09:44:00", - "2026-04-28T09:45:00", - "2026-04-28T09:46:00", - "2026-04-28T09:47:00", - "2026-04-28T09:48:00", - "2026-04-28T09:49:00", - "2026-04-28T09:50:00", - "2026-04-28T09:51:00", - "2026-04-28T09:52:00", - "2026-04-28T09:55:00", - "2026-04-28T09:56:00", - "2026-04-28T09:57:00", - "2026-04-28T10:01:00", - "2026-04-28T10:02:00", - "2026-04-28T10:03:00", - "2026-04-28T10:04:00", - "2026-04-28T10:05:00", - "2026-04-28T10:06:00", - "2026-04-28T10:07:00", - "2026-04-28T10:08:00", - "2026-04-28T10:09:00", - "2026-04-28T10:10:00", - "2026-04-28T10:11:00", - "2026-04-28T10:13:00", - "2026-04-28T10:14:00", - "2026-04-28T10:15:00", - "2026-04-28T10:16:00", - "2026-04-28T10:17:00", - "2026-04-28T10:18:00", - "2026-04-28T10:19:00", - "2026-04-28T10:20:00", - "2026-04-28T10:21:00", - "2026-04-28T10:22:00", - "2026-04-28T10:23:00", - "2026-04-28T10:24:00", - "2026-04-28T10:25:00", - "2026-04-28T10:27:00", - "2026-04-28T10:31:00", - "2026-04-28T10:32:00", - "2026-04-28T10:34:00", - "2026-04-28T10:35:00", - "2026-04-28T10:38:00", - "2026-04-28T10:39:00", - "2026-04-28T10:40:00", - "2026-04-28T10:42:00", - "2026-04-28T10:43:00", - "2026-04-28T10:47:00", - "2026-04-28T10:48:00", - "2026-04-28T10:51:00", - "2026-04-28T10:56:00", - "2026-04-28T10:57:00", - "2026-04-28T11:00:00", - "2026-04-28T11:01:00", - "2026-04-28T11:02:00", - "2026-04-28T11:03:00", - "2026-04-28T11:04:00", - "2026-04-28T11:05:00", - "2026-04-28T11:06:00", - "2026-04-28T11:07:00", - "2026-04-28T11:08:00", - "2026-04-28T11:09:00", - "2026-04-28T11:10:00", - "2026-04-28T11:11:00", - "2026-04-28T11:12:00", - "2026-04-28T11:13:00", - "2026-04-28T11:15:00", - "2026-04-28T11:16:00", - "2026-04-28T11:17:00", - "2026-04-28T11:18:00", - "2026-04-28T11:19:00", - "2026-04-28T11:21:00", - "2026-04-28T11:22:00", - "2026-04-28T11:23:00", - "2026-04-28T11:24:00", - "2026-04-28T11:25:00", - "2026-04-28T11:26:00", - "2026-04-28T11:27:00", - "2026-04-28T11:28:00", - "2026-04-28T11:29:00", - "2026-04-28T11:30:00", - "2026-04-28T11:31:00", - "2026-04-28T11:32:00", - "2026-04-28T11:33:00", - "2026-04-28T11:35:00", - "2026-04-28T11:36:00", - "2026-04-28T11:37:00", - "2026-04-28T11:38:00", - "2026-04-28T11:39:00", - "2026-04-28T11:40:00", - "2026-04-28T11:41:00", - "2026-04-28T11:44:00", - "2026-04-28T11:45:00", - "2026-04-28T11:46:00", - "2026-04-28T11:47:00", - "2026-04-28T11:48:00", - "2026-04-28T11:49:00", - "2026-04-28T11:50:00", - "2026-04-28T11:51:00", - "2026-04-28T11:52:00", - "2026-04-28T11:53:00", - "2026-04-28T11:54:00", - "2026-04-28T11:55:00", - "2026-04-28T11:56:00", - "2026-04-28T11:57:00", - "2026-04-28T11:59:00", - "2026-04-28T12:00:00", - "2026-04-28T12:01:00", - "2026-04-28T12:02:00", - "2026-04-28T12:03:00", - "2026-04-28T12:04:00", - "2026-04-28T12:05:00", - "2026-04-28T12:06:00", - "2026-04-28T12:07:00", - "2026-04-28T12:09:00", - "2026-04-28T12:10:00", - "2026-04-28T12:11:00", - "2026-04-28T12:12:00", - "2026-04-28T12:13:00", - "2026-04-28T12:14:00", - "2026-04-28T12:15:00", - "2026-04-28T12:16:00", - "2026-04-28T12:18:00", - "2026-04-28T12:19:00", - "2026-04-28T12:20:00", - "2026-04-28T12:21:00", - "2026-04-28T12:22:00", - "2026-04-28T12:23:00", - "2026-04-28T12:24:00", - "2026-04-28T12:25:00", - "2026-04-28T12:26:00", - "2026-04-28T12:29:00", - "2026-04-28T12:30:00", - "2026-04-28T12:31:00", - "2026-04-28T12:33:00", - "2026-04-28T12:34:00", - "2026-04-28T12:35:00", - "2026-04-28T12:36:00", - "2026-04-28T12:38:00", - "2026-04-28T12:40:00", - "2026-04-28T12:41:00", - "2026-04-28T12:42:00", - "2026-04-28T12:43:00", - "2026-04-28T12:44:00", - "2026-04-28T12:45:00", - "2026-04-28T12:46:00", - "2026-04-28T12:48:00", - "2026-04-28T12:49:00", - "2026-04-28T12:51:00", - "2026-04-28T12:52:00", - "2026-04-28T12:53:00", - "2026-04-28T12:54:00", - "2026-04-28T12:57:00", - "2026-04-28T13:00:00", - "2026-04-28T13:01:00", - "2026-04-28T13:02:00", - "2026-04-28T13:03:00", - "2026-04-28T13:04:00", - "2026-04-28T13:05:00", - "2026-04-28T13:06:00", - "2026-04-28T13:07:00", - "2026-04-28T13:08:00", - "2026-04-28T13:09:00", - "2026-04-28T13:10:00", - "2026-04-28T13:11:00", - "2026-04-28T13:12:00", - "2026-04-28T13:13:00", - "2026-04-28T13:14:00", - "2026-04-28T13:15:00", - "2026-04-28T13:16:00", - "2026-04-28T13:17:00", - "2026-04-28T13:18:00", - "2026-04-28T13:19:00", - "2026-04-28T13:20:00", - "2026-04-28T13:21:00", - "2026-04-28T13:22:00", - "2026-04-28T13:23:00", - "2026-04-28T13:24:00", - "2026-04-28T13:25:00", - "2026-04-28T13:26:00", - "2026-04-28T13:27:00", - "2026-04-28T13:28:00", - "2026-04-28T13:29:00", - "2026-04-28T13:30:00", - "2026-04-28T13:31:00", - "2026-04-28T13:32:00", - "2026-04-28T13:33:00", - "2026-04-28T13:34:00", - "2026-04-28T13:35:00", - "2026-04-28T13:36:00", - "2026-04-28T13:37:00", - "2026-04-28T13:38:00", - "2026-04-28T13:39:00", - "2026-04-28T13:40:00", - "2026-04-28T13:41:00", - "2026-04-28T13:42:00", - "2026-04-28T13:43:00", - "2026-04-28T13:44:00", - "2026-04-28T13:45:00", - "2026-04-28T13:46:00", - "2026-04-28T13:47:00", - "2026-04-28T13:48:00", - "2026-04-28T13:49:00", - "2026-04-28T13:50:00", - "2026-04-28T13:51:00", - "2026-04-28T13:52:00", - "2026-04-28T13:53:00", - "2026-04-28T13:54:00", - "2026-04-28T13:55:00", - "2026-04-28T13:56:00", - "2026-04-28T13:57:00", - "2026-04-28T13:58:00", - "2026-04-28T13:59:00", - "2026-04-28T14:00:00", - "2026-04-28T14:01:00", - "2026-04-28T14:02:00", - "2026-04-28T14:04:00", - "2026-04-28T14:05:00", - "2026-04-28T14:06:00", - "2026-04-28T14:07:00", - "2026-04-28T14:08:00", - "2026-04-28T14:09:00", - "2026-04-28T14:10:00", - "2026-04-28T14:11:00", - "2026-04-28T14:12:00", - "2026-04-28T14:13:00", - "2026-04-28T14:14:00", - "2026-04-28T14:15:00", - "2026-04-28T14:16:00", - "2026-04-28T14:17:00", - "2026-04-28T14:18:00", - "2026-04-28T14:19:00", - "2026-04-28T14:21:00", - "2026-04-28T14:22:00", - "2026-04-28T14:23:00", - "2026-04-28T14:24:00", - "2026-04-28T14:25:00", - "2026-04-28T14:26:00", - "2026-04-28T14:27:00", - "2026-04-28T14:28:00", - "2026-04-28T14:29:00", - "2026-04-28T14:30:00", - "2026-04-28T14:31:00", - "2026-04-28T14:32:00", - "2026-04-28T14:33:00", - "2026-04-28T14:34:00", - "2026-04-28T14:35:00", - "2026-04-28T14:36:00", - "2026-04-28T14:37:00", - "2026-04-28T14:38:00", - "2026-04-28T14:39:00", - "2026-04-28T14:40:00", - "2026-04-28T14:41:00", - "2026-04-28T14:42:00", - "2026-04-28T14:43:00", - "2026-04-28T14:44:00", - "2026-04-28T14:45:00", - "2026-04-28T14:46:00", - "2026-04-28T14:47:00", - "2026-04-28T14:48:00", - "2026-04-28T14:49:00", - "2026-04-28T14:50:00", - "2026-04-28T14:51:00", - "2026-04-28T14:52:00", - "2026-04-28T14:53:00", - "2026-04-28T14:54:00", - "2026-04-28T14:55:00", - "2026-04-28T14:56:00", - "2026-04-28T14:57:00", - "2026-04-28T14:58:00", - "2026-04-28T14:59:00", - "2026-04-28T15:00:00", - "2026-04-28T15:01:00", - "2026-04-28T15:02:00", - "2026-04-28T15:03:00", - "2026-04-28T15:05:00", - "2026-04-28T15:06:00", - "2026-04-28T15:07:00", - "2026-04-28T15:08:00", - "2026-04-28T15:09:00", - "2026-04-28T15:10:00", - "2026-04-28T15:11:00", - "2026-04-28T15:12:00", - "2026-04-28T15:13:00", - "2026-04-28T15:14:00", - "2026-04-28T15:15:00", - "2026-04-28T15:16:00", - "2026-04-28T15:17:00", - "2026-04-28T15:18:00", - "2026-04-28T15:19:00", - "2026-04-28T15:20:00", - "2026-04-28T15:21:00", - "2026-04-28T15:22:00", - "2026-04-28T15:23:00", - "2026-04-28T15:24:00", - "2026-04-28T15:25:00", - "2026-04-28T15:26:00", - "2026-04-28T15:27:00", - "2026-04-28T15:28:00", - "2026-04-28T15:29:00", - "2026-04-28T15:30:00", - "2026-04-28T15:31:00", - "2026-04-28T15:33:00", - "2026-04-28T15:34:00", - "2026-04-28T15:35:00", - "2026-04-28T15:37:00", - "2026-04-28T15:38:00", - "2026-04-28T15:39:00", - "2026-04-28T15:41:00", - "2026-04-28T15:42:00", - "2026-04-28T15:43:00", - "2026-04-28T15:44:00", - "2026-04-28T15:45:00", - "2026-04-28T15:46:00", - "2026-04-28T15:47:00", - "2026-04-28T15:48:00", - "2026-04-28T15:49:00", - "2026-04-28T15:50:00", - "2026-04-28T15:51:00", - "2026-04-28T15:52:00", - "2026-04-28T15:53:00", - "2026-04-28T15:54:00", - "2026-04-28T15:55:00", - "2026-04-28T15:56:00", - "2026-04-28T15:57:00", - "2026-04-28T15:58:00", - "2026-04-28T15:59:00", - "2026-04-28T16:00:00", - "2026-04-28T16:01:00", - "2026-04-28T16:02:00", - "2026-04-28T16:03:00", - "2026-04-28T16:04:00", - "2026-04-28T16:05:00", - "2026-04-28T16:06:00", - "2026-04-28T16:07:00", - "2026-04-28T16:08:00", - "2026-04-28T16:09:00", - "2026-04-28T16:10:00", - "2026-04-28T16:11:00", - "2026-04-28T16:12:00", - "2026-04-28T16:14:00", - "2026-04-28T16:15:00", - "2026-04-28T16:16:00", - "2026-04-28T16:18:00", - "2026-04-28T16:20:00", - "2026-04-28T16:21:00", - "2026-04-28T16:23:00", - "2026-04-28T16:24:00", - "2026-04-28T16:25:00", - "2026-04-28T16:26:00", - "2026-04-28T16:27:00", - "2026-04-28T16:28:00", - "2026-04-28T16:29:00", - "2026-04-28T16:30:00", - "2026-04-28T16:31:00", - "2026-04-28T16:32:00", - "2026-04-28T16:33:00", - "2026-04-28T16:34:00", - "2026-04-28T16:35:00", - "2026-04-28T16:36:00", - "2026-04-28T16:37:00", - "2026-04-28T16:39:00", - "2026-04-28T16:42:00", - "2026-04-28T16:43:00", - "2026-04-28T16:45:00", - "2026-04-28T16:46:00", - "2026-04-28T16:47:00", - "2026-04-28T16:48:00", - "2026-04-28T16:49:00", - "2026-04-28T16:50:00", - "2026-04-28T16:51:00", - "2026-04-28T16:52:00", - "2026-04-28T16:53:00", - "2026-04-28T16:54:00", - "2026-04-28T16:55:00", - "2026-04-28T16:56:00", - "2026-04-28T16:57:00", - "2026-04-28T16:58:00", - "2026-04-28T16:59:00", - "2026-04-28T17:00:00", - "2026-04-28T17:01:00", - "2026-04-28T17:02:00", - "2026-04-28T17:03:00", - "2026-04-28T17:04:00", - "2026-04-28T17:05:00", - "2026-04-28T17:06:00", - "2026-04-28T17:08:00", - "2026-04-28T17:10:00", - "2026-04-28T17:11:00", - "2026-04-28T17:12:00", - "2026-04-28T17:13:00", - "2026-04-28T17:14:00", - "2026-04-28T17:15:00", - "2026-04-28T17:16:00", - "2026-04-28T17:18:00", - "2026-04-28T17:19:00", - "2026-04-28T17:21:00", - "2026-04-28T17:22:00", - "2026-04-28T17:23:00", - "2026-04-28T17:24:00", - "2026-04-28T17:25:00", - "2026-04-28T17:27:00", - "2026-04-28T17:28:00", - "2026-04-28T17:29:00", - "2026-04-28T17:30:00", - "2026-04-28T17:31:00", - "2026-04-28T17:33:00", - "2026-04-28T17:34:00", - "2026-04-28T17:35:00", - "2026-04-28T17:36:00", - "2026-04-28T17:37:00", - "2026-04-28T17:38:00", - "2026-04-28T17:39:00", - "2026-04-28T17:40:00", - "2026-04-28T17:41:00", - "2026-04-28T17:42:00", - "2026-04-28T17:43:00", - "2026-04-28T17:44:00", - "2026-04-28T17:45:00", - "2026-04-28T17:46:00", - "2026-04-28T17:47:00", - "2026-04-28T17:48:00", - "2026-04-28T17:49:00", - "2026-04-28T17:50:00", - "2026-04-28T17:51:00", - "2026-04-28T17:52:00", - "2026-04-28T17:53:00", - "2026-04-28T17:54:00", - "2026-04-28T17:55:00", - "2026-04-28T17:56:00", - "2026-04-28T17:57:00", - "2026-04-28T17:58:00", - "2026-04-28T17:59:00", - "2026-04-28T18:00:00", - "2026-04-28T18:01:00", - "2026-04-28T18:02:00", - "2026-04-28T18:03:00", - "2026-04-28T18:04:00", - "2026-04-28T18:05:00", - "2026-04-28T18:06:00", - "2026-04-28T18:07:00", - "2026-04-28T18:08:00", - "2026-04-28T18:09:00", - "2026-04-28T18:10:00", - "2026-04-28T18:11:00", - "2026-04-28T18:12:00", - "2026-04-28T18:13:00", - "2026-04-28T18:14:00", - "2026-04-28T18:15:00", - "2026-04-28T18:16:00", - "2026-04-28T18:17:00", - "2026-04-28T18:18:00", - "2026-04-28T18:19:00", - "2026-04-28T18:20:00", - "2026-04-28T18:21:00", - "2026-04-28T18:22:00", - "2026-04-28T18:23:00", - "2026-04-28T18:24:00", - "2026-04-28T18:25:00", - "2026-04-28T18:26:00", - "2026-04-28T18:27:00", - "2026-04-28T18:28:00", - "2026-04-28T18:29:00", - "2026-04-28T18:30:00", - "2026-04-28T18:31:00", - "2026-04-28T18:32:00", - "2026-04-28T18:33:00", - "2026-04-28T18:34:00", - "2026-04-28T18:35:00", - "2026-04-28T18:36:00", - "2026-04-28T18:37:00", - "2026-04-28T18:38:00", - "2026-04-28T18:39:00", - "2026-04-28T18:40:00", - "2026-04-28T18:41:00", - "2026-04-28T18:42:00", - "2026-04-28T18:43:00", - "2026-04-28T18:44:00", - "2026-04-28T18:45:00", - "2026-04-28T18:46:00", - "2026-04-28T18:47:00", - "2026-04-28T18:48:00", - "2026-04-28T18:49:00", - "2026-04-28T18:50:00", - "2026-04-28T18:51:00", - "2026-04-28T18:52:00", - "2026-04-28T18:53:00", - "2026-04-28T18:54:00", - "2026-04-28T18:55:00", - "2026-04-28T18:56:00", - "2026-04-28T18:57:00", - "2026-04-28T18:58:00", - "2026-04-28T18:59:00", - "2026-04-28T19:00:00", - "2026-04-28T19:01:00", - "2026-04-28T19:02:00", - "2026-04-28T19:03:00", - "2026-04-28T19:04:00", - "2026-04-28T19:05:00", - "2026-04-28T19:06:00", - "2026-04-28T19:07:00", - "2026-04-28T19:08:00", - "2026-04-28T19:09:00", - "2026-04-28T19:10:00", - "2026-04-28T19:11:00", - "2026-04-28T19:12:00", - "2026-04-28T19:13:00", - "2026-04-28T19:14:00", - "2026-04-28T19:15:00", - "2026-04-28T19:18:00", - "2026-04-28T19:20:00", - "2026-04-28T19:21:00", - "2026-04-28T19:22:00", - "2026-04-28T19:23:00", - "2026-04-28T19:24:00", - "2026-04-28T19:26:00", - "2026-04-28T19:28:00", - "2026-04-28T19:29:00", - "2026-04-28T19:31:00", - "2026-04-28T19:32:00", - "2026-04-28T19:33:00", - "2026-04-28T19:40:00", - "2026-04-28T19:41:00", - "2026-04-28T19:42:00", - "2026-04-28T19:43:00", - "2026-04-28T19:44:00", - "2026-04-28T19:45:00", - "2026-04-28T19:46:00", - "2026-04-28T19:47:00", - "2026-04-28T19:48:00", - "2026-04-28T19:50:00", - "2026-04-28T19:51:00", - "2026-04-28T19:52:00", - "2026-04-28T19:53:00", - "2026-04-28T19:54:00", - "2026-04-28T19:55:00", - "2026-04-28T19:56:00", - "2026-04-28T19:57:00", - "2026-04-28T19:58:00", - "2026-04-28T19:59:00", - "2026-04-28T20:00:00", - "2026-04-28T20:01:00", - "2026-04-28T20:02:00", - "2026-04-28T20:03:00" - ], - "xaxis": "x", - "y": { - "bdata": "UrgehevxMEBt5/up8TpTQPp+arx0ExpASQwCK4c2OkCgGi/dJGZDQDq0yHa+PzdAR+F6FK4HO0A3iUFg5ZBAQAIrhxbZ7jtATmIQWDkUQ0DtfD81XlpNQL+fGi/d9EFA/tR46SaRP0Av3SQGgTU6QArXo3A9OkRAvp8aL90kBkCF61G4HuUwQOf7qfHSbUhAAAAAAACoUEDfT42XblIlQG8Sg8DKoQtAK4cW2c53H0AfhetRuN5LQGmR7Xw/rIJAx0s3iUHQTUDRItv5fio8QPyp8dJN4hdAfT81XrpJB0B56SYxCHxAQA4tsp3vB0RAWDm0yHYuXUCWQ4ts5/v9P8L1KFyPIjdAsHJoke18MkAfhetRuH5IQCLb+X5qvBpAGy/dJAahOkAlBoGVQ4sZQI2XbhKDwAxAokW28/3UCkDVeOkmMYg0QAisHFpkuxpA16NwPQrXA0CsHFpkO18WQIGVQ4tsZzlArkfhehSuBUBSuB6F61HkPzvfT42XbvI/6SYxCKwc2j99PzVeuknkP9ejcD0KVxxA46WbxCCw5j+0yHa+nxoJQC/dJAaBlQVAhetRuB4FLkAnMQisHFomQM/3U+OlWyZApHA9CtdDRkB7FK5H4XqEP7bz/dR46QpAd76fGi/dF0DXo3A9CtfbP30/NV66Scw/jZduEoPAyj9oke18P7URQCGwcmiR7f4/pHA9Ctej8D9iEFg5tMjyP+f7qfHSTSRAXI/C9ShcBEAZBFYOLbIsQL6fGi/dZCFAg8DKoUW2CEDZzvdT46UFQO58PzVeuhRAd76fGi+dNUAOLbKd72c7QBSuR+F6FAhA/Knx0k0CPkD8qfHSTWJQP4cW2c73UyBArBxaZDvf7z+mm8QgsHIcQNejcD0K18M/pHA9Ctej4D8hsHJokW0tQDzfT42XnmRAbOf7qfFyM0B7FK5H4foYQAAAAAAAwCVA9ihcj8L1IkDl0CLb+Y5OQOf7qfHSDS9AYxBYObTIQEAnMQisHFoXQG3n+6nxEidA30+Nl26SEkDAyqFFtvMAQAAAAAAAIDVABFYOLbJdI0Dn+6nx0k3CP+xRuB6F6xpAvHSTGATWJ0AbL90kBgE2QCcxCKwcWtQ/+n5qvHSTuD97FK5H4XqEP2IQWDm0SBtAMQisHFpk4z+sHFpkOx8mQNnO91PjZTJAmpmZmZmZuT8+CtejcL0fQGu8dJMYZDtAg8DKoUW2wz9/arx0kxgAQFK4HoXrUbg/0SLb+X5qLkBANV66SQwUQCGwcmiRrS5AWDm0yHa+vz8UrkfhepQSQClcj8L1KLw/exSuR+F6hD+8dJMYBFYDQIGVQ4tshzpAtvP91HhpHECyne+nxkvzPzvfT42XbtI/6SYxCKwcEkDTTWIQWLk+QFpkO99PjRBAUrgehetRuD+BlUOLbOcGQOF6FK5H4bo/g8DKoUW2F0AAAAAAAEA6QDeJQWDl0ARAlkOLbOc7JUAAAAAAAAAAQIlBYOXQYjJAAAAAAAAA4D8Sg8DKoYUsQObQItv5fuY/7Xw/NV667T9YObTIdr4UQHsUrkfhOi5Ay6FFtvP9CUDGSzeJQWD1P2ZmZmZmZg5AexSuR+F6hD/Jdr6fGk8zQI2XbhKDwAVAK4cW2c736z8QWDm0yHb2P/7UeOkmcS1Ake18PzVeF0BKDAIrhxb3PzVeukkMAhhATmIQWDm06D97FK5H4XqEP1pkO99PjQtA1XjpJjEIzD+iRbbz/dQLQJhuEoPAqjhAukkMAiuHE0BxPQrXo7AiQHsUrkfheoQ/JzEIrBxaEEDwp8ZLN6k3QFCNl24SAx9A2c73U+OlC0CamZmZmZkRQCPb+X5qvLQ/4noUrkdhEEB7FK5H4XqEP0jhehSuRxZA0SLb+X5qJEAAAAAAAADAPwaBlUOLbABAj8L1KFyP4j8bL90kBoGlP4cW2c73U/U/MQisHFpk4z/TTWIQWDn+P1g5tMh2vr8/GARWDi1yIUDLoUW2870xQAAAAAAAAOA/ZmZmZmZmCUA730+Nl26iPwrXo3A9Cqc/9ihcj8L18j+LbOf7qTEiQEjhehSu10dAZmZmZmZmHkAxCKwcWmQiQL10kxgEtkJApHA9Ctej4D/b+X5qvHQBQOOlm8QgMCRARIts5/upAkD6fmq8dJPoPzEIrBxaZBRAWmQ7309NIkAAAAAAAAAgQHnpJjEIrIw/AAAAAAAAEEBEi2zn+ykZQPhT46WbRBxA001iEFg5tD+yne+nxssRQPp+arx0o0dARrbz/dR4RkDfT42XbhIQQKabxCCwcv4/+FPjpZvEwD9qvHSTGMQtQE5iEFg5tBVADAIrhxbZC0B1kxgEVg4EQM3MzMzMzDlAWmQ7309NIEC28/3UeIFSQARWDi2yne8/AAAAAAAAJEBQjZduEoMJQIts5/up8do/arx0kxgEtj9qvHSTGAS2P39qvHSTGOQ/vp8aL90k+D+iRbbz/dTsPwAAAAAAADVAWDm0yHa+1z/P91PjpZsDQJDC9ShcjxZAcT0K16NwvT91kxgEVg77P58aL90kRiZAAAAAAAAAFEDqJjEIrByqP7Kd76fGS7c/ObTIdr6f6j+28/3UeOkVQGu8dJMYBMY/5KWbxCCwwj+YbhKDwMrBP3oUrkfh+h1AnMQgsHLoK0BaZDvfT423P2IQWDm0yPI/ukkMAiuHhj8730+Nl27wPzm0yHa+n5o/3SQGgZUDK0DrUbgehbtCQCPb+X5qvOw/9ihcj8L1AEBYObTIdn4mQF66SQwCKxhAzczMzMxMHUAAAAAAAADwPx+F61G4HsU/WmQ730+Ntz9t5/up8dLhP3sUrkfheoQ/Gy/dJAaBpT8OLbKd72cqQP7UeOkmMfA/SQwCK4cWyT+cxCCwcmjRP24Sg8DKocU//Knx0k1ikD/+1HjpJnEiQPyp8dJNYlA/m8QgsHJo7T8xCKwcWmT5P76fGi/dJMY/5KWbxCAwLED8qfHSTWLgPwAAAAAAABZAH4XrUbieEkCgGi/dJAYEQOXQItv5fhNAF9nO91Pj3T9/arx0kxj2P83MzMzMDEdARbbz/dR4EEBU46WbxOAlQDMzMzMzUzFAukkMAiuHhj8zMzMzM3MoQAAAAAAAwCVAi2zn+6lxJUC6SQwCK4eGP9v5fmq8dNM/ukkMAiuHhj82XrpJDNpUQC/dJAaBlec/ZTvfT42X7j8CK4cW2c7zP3e+nxovnSxAN4lBYOXQ9D9oke18PzW+P7pJDAIrh4Y/Gy/dJAaBF0C+nxov3SQCQEjhehSuR/k/+n5qvHSTiD+6SQwCK4eGP/p+arx0k7g/hetRuB6Fyz+6SQwCK4eGP2U730+Nl/w/hetRuB4FJkD8qfHSTWLgP90kBoGVQxpAAiuHFtmOI0AAAAAAAAAYQF66SQwCKzZAnu+nxkv3JEB/arx0kxglQGiR7Xw/9TBA+n5qvHSTiD+6SQwCK4eGP57vp8ZLN/0/qvHSTWKQEEB56SYxCOwnQKrx0k1ikC5Ad76fGi/dAEBiEFg5tMgAQIGVQ4ts5w5AmpmZmZm5PkD4U+Olm8TgP8P1KFyP4jZAz/dT46VbI0AdWmQ7388TQPHSTWIQGDBAqvHSTWIQ8j/hehSuR+G6PwAAAAAAACRAVOOlm8SgGUCiRbbz/dQTQHNoke18PxBALbKd76fG5z8dWmQ730/9P+Olm8QgsBZAAAAAAAAA8D/y0k1iEFgWQAAAAAAAABRAaJHtfD+1JEAAAAAAAAAUQClcj8L1KCpAwcqhRbbz1T+Ol24Sg8DKP2q8dJMY5DVAbxKDwMrhQUD2KFyPwnUVQHnpJjEILCVAWDm0yHY+LkAAAAAAAADwPwAAAAAAAPA/2/l+arx0wz/6fmq8dJPkPwisHFpk+yFAAAAAAAAA4D+Nl24Sg8DiPwAAAAAAAPA/qvHSTWIQ6D97FK5H4XqEP3sUrkfherQ/7FG4HoXroT++nxov3aQsQCuHFtnO9+M/EFg5tMh2JkB7FK5H4Xr0Pzq0yHa+nxFAvXSTGASWJ0A5tMh2vp+KP1K4HoXrkSpASgwCK4cW4T85tMh2vp+KP2ZmZmZmZgJAexSuR+F6hD/8qfHSTWJQP9V46SYxqDlAeekmMQisnD+6SQwCK4emPzvfT42XbqI/O99PjZdu0j/ByqFFtnMhQClcj8L1qBFAO99PjZdusj9xPQrXo3DlPxsv3SQGgfk/YOXQItv5vj9aZDvfT42nP6wcWmQ73+M/UrgehesRMECcxCCwciguQC2yne+nBiRAMzMzMzMTNEAAAAAAAAAkQHNoke18P7U/+n5qvHSTiD8pXI/C9SisP9ijcD0K1+s/TDeJQWDFMUAQWDm0yDY1QLpJDAIrh5Y/AAAAAAAAJED8qfHSTWKgP9v5fmq8dJM/9ihcj8I1JED2KFyPwvUUQPLSTWIQGC9AkML1KFyP9j9eukkMAgs4QAIrhxbZXkNAXrpJDAI7QEA1XrpJDAI3QO+nxks3iQhAku18PzVeKUAhsHJoka01QAIrhxbZzg9AAiuHFtnO1z/VeOkmMQgIQAAAAAAAAARA+n5qvHSTmD/P91PjpZvUP2q8dJMYhBFAokW28/10MUDm0CLb+R4xQN9PjZduEhxA/Knx0k1ikD956SYxCKzcPwAAAAAAAARAUrgehetRuD/dJAaBlYMnQPT91Hjp5idAWmQ7308NFUD6fmq8dJOoP24Sg8DKoRpAc2iR7Xz/MkBWDi2yne/nP5zEILBy6ChAZmZmZmZmEUD4U+Olm8TAP/p+arx0k9g/cT0K16PwLUBaZDvfT43rP9V46SYxqDBAUrgehetRDkCOl24Sg8DwP0w3iUFg5aA/OrTIdr6fHEDHSzeJQWAJQP///////98/DAIrhxZZE0Dm0CLb+X7SP8HKoUW2870/aJHtfD81K0Cq8dJNYhCoPzvfT42XbhpAw/UoXI/CB0ArhxbZzvcIQEw3iUFg5eA/okW28/2UKkA+CtejcD30P3sUrkfheug/QDVeukkME0D+1HjpJjEFQPLSTWIQWLk/aJHtfD+1FkDHSzeJQWAyQPyp8dJNYqA/8tJNYhBYyT/EILByaJH7P/yp8dJNYqA//Knx0k1ioD/8qfHSTWKgP8uhRbbz/RRAUI2XbhKD8D/8qfHSTWKgP6wcWmQ73xtAO99PjZduCEDHSzeJQeAhQFCNl24Sg+A//Knx0k1ioD9pke18P7UTQPyp8dJNYqA/sp3vp8ZL6z/8qfHSTWKgP1+6SQwCqxFAjGzn+6nxoj8fhetRuP4zQJzEILByaKE//Knx0k1i5D+e76fGSzf9P+58PzVeuhJAmG4Sg8DKEUCPwvUoXI8DQKrx0k1iEOw/BFYOLbKd8z8xCKwcWmTxP5zEILByaKE/SgwCK4cWqT/Xo3A9CpciQClcj8L1KBlAnMQgsHJooT+YbhKDwAonQBxaZDvfjylAjZduEoMgNkCLbOf7qfEPQJzEILByaKE/4E+Nl24Swz9MN4lBYOUNQPYoXI/C9Q1AUI2XbhKD6D/+1HjpJrE2QJzEILByaKE/nMQgsHJooT/hehSuR+G6P5zEILByaKE/cT0K16PwGECOl24SgwAkQMuhRbbz/RVAx0s3iUEANkDJdr6fGi+9P/T91HjpJhZAnMQgsHJooT81XrpJDAL1PwAAAAAAABVATmIQWDm0+D8lBoGVQ4vgPwwCK4cWWSBAAAAAAAAA8D/n+6nx0k0OQIGVQ4ts5/s/30+Nl24SH0AUrkfhehQQQGq8dJMYBKY/xSCwcmhRIEB3vp8aL10uQBgEVg4tMidA5KWbxCDAQ0AlBoGVQ2s4QDeJQWDlUChAE4PAyqHBe0Aj2/l+apxNQG3n+6nx6lZAexSuR+EaQkD4U+Olm9RAQI/C9ShcjyZAYhBYObToPEBI4XoUrkcZQMUgsHJoIUdABFYOLbLdJEBoke18P1U2QG8Sg8DKsVpAGi/dJAaB/T/dJAaBlcMZQNV46SYxCPo/Di2yne+n9j/LoUW28z0pQM3MzMzMzAZAarx0kxgExj8rhxbZznccQPYoXI/C9fg/+n5qvHSTuD8MAiuHFtkCQB1aZDvfzxVA2/l+arz0EUBnZmZmZmb+PxKDwMqhxRJA/Knx0k1i9j+28/3UeGkRQPp+arx0k7g/QmDl0CLb8T9g5dAi2zkrQAIrhxbZLjBAAAAAAAAAAEBANV66SQwFQHe+nxov3QhADy2yne+n4j90kxgEVm4/QFK4HoXrURZAAAAAAAAA8D+amZmZmZnJPyGwcmiR7eA/KVyPwvUoCEArhxbZzvejP4ts5/up8aI/RIts5/spbEDdJAaBlX9uQJqZmZmZ6UBAy6FFtvP98j9KDAIrh1YuQA4tsp3v5ydApHA9CtfTcEArhxbZzvejP6AaL90kBgVAw/UoXI+CIEArhxbZzvezP2ZmZmZmZvA/CKwcWmQ7/T97FK5H4XrEP8HKoUW28whA0SLb+X5qFUAK16NwPQrnP1K4HoXrES1AJzEIrBxaLUBMN4lBYOURQDVeukkMAus/8KfGSzeJH0A+CtejcD0UQMl2vp8aL+k/FK5H4XoUJ0DJdr6fGi+9P1TjpZvEIMA/eekmMQjsN0AAAAAAAADgP873U+OlmwZA8KfGSzeJ0T+BlUOLbOfLP1g5tMh2vr8/7nw/NV66GEAv3SQGgZXDP5HtfD81XglA5KWbxCDwL0CiRbbz/dQYQArXo3A9ijpAN4lBYOVQHkCYbhKDwMoJQCUGgZVDi+A/46WbxCCwBEBOYhBYOTQXQOF6FK5H4QNA+FPjpZvEEUDjpZvEILAEQDEIrBxaZBJAXI/C9SjcJ0AhsHJoke0FQPyp8dJNYvg/lkOLbOcrQUArhxbZzvcNQB6F61G4HglAVg4tsp3v5z+8dJMYBBYiQFg5tMh2vg9AgZVDi2znyz8W2c73U+P5PwAAAAAAANA/jZduEoMAL0A730+Nl27wP6jGSzeJQeA/CtejcD0K5z9Ei2zn+yknQHNoke18vxhAnMQgsHJowT8K16NwPYoyQKrx0k1iEAdAUrgehetRuD/ByqFFtnMVQP7UeOkmcSpAaJHtfD81E0CiRbbz/dTgP/YoXI/C9R5A2/l+arx02z8dWmQ730/1P42XbhKDACJALbKd76dGIECWQ4ts5/sUQIlBYOXQIvE/g8DKoUW2HEBSuB6F61G4P4XrUbge9UFAg8DKoUX2MUAAAAAAAAAYQAAAAAAAAOA/ppvEILBy4D/l0CLb+f4ZQIts5/upsShAEFg5tMg2KEB7FK5H4XqEP0w3iUFgZRdAJQaBlUOLB0Boke18PzX2P6fGSzeJQSpAH4XrUbgeAUAQWDm0yDYqQKabxCCwcvI/0SLb+X5q8D9mZmZmZmb6P2Dl0CLb+QRAI9v5fmq8FUAv3SQGgZUZQLpJDAIrh4Y/HFpkO9+PKUB/arx0kxgWQCUGgZVDCxRA8tJNYhCYNEC28/3UeEkwQCGwcmiR7eQ/ukkMAiuHhj8tsp3vp8YHQLpJDAIrh4Y/JzEIrBxaKkC6SQwCK4eGP+XQItv5fvw/1XjpJjEI5D+mm8QgsDI1QLx0kxgEVuY/jZduEoNAIkARWDm0yHbqP9nO91PjpSdAgZVDi2zn5z/b+X5qvHQDQEkMAiuHFrk/exSuR+F6lD+6SQwCK4eGP9NNYhBYsW9AGARWDi1SM0AaL90kBoEqQF66SQwCK/8/a7x0kxicVEB9PzVeuilBQP7UeOkmMThAQmDl0CLbF0DrUbgehevBP6AaL90khjBAHVpkO9/PMUD0/dR46SYlQObQItv5DkVA8tJNYhBYIEBU46WbxCDAP7pJDAIrh9Y/tMh2vp8aGUCJQWDl0CK7P1g5tMh2vuc/DAIrhxbZLECLbOf7qfGiP9V46SYxCPY/K4cW2c73oz+/nxov3WQnQIGVQ4tspydAyXa+nxovDED8qfHSTWL0P5LtfD81niRApHA9Ctej2D97FK5H4foYQKjGSzeJQQtAdZMYBFYOCUA730+Nl26iP8UgsHJoUSBARrbz/dR4A0Coxks3iUEdQNEi2/l+agxAvXSTGASWJEAhsHJoke30P39qvHSTmBJAWDm0yHZ+JUAK16NwPQq3P+58PzVeugxAq/HSTWIQHkAAAAAAAADwP/p+arx0k7g/fT81XrpJTECkcD0K16PoP2iR7Xw/NRVAeekmMQgsJ0Db+X5qvHSjPzvfT42XbqI/HoXrUbge8T97FK5H4Xq0P8P1KFyPwv0/L90kBoGV5z+amZmZmZnpP8P1KFyPwtU/XI/C9ShcH0CwcmiR7Xz5P+XQItv5fgBArkfhehSu6z8AAAAAAADwPx+F61G4HgFAmpmZmZmZ6T96FK5H4Xr0P8QgsHJoUSdAZmZmZmbmEEDHSzeJQYA3QFYOLbKd7x5AAAAAAAAA8D/kpZvEILD4P3sUrkfheoQ/7nw/NV66CUC7SQwCKwceQBfZzvdT4x5ATDeJQWDl6D8AAAAAAADAP/p+arx0k7g/WmQ730+Nxz+Ol24SgyBaQJQYBFYO7S5A46WbxCDwMUAGgZVDi+whQAIrhxbZzgJAGARWDi0yF0CWQ4ts5/vtP5HtfD81XhlAvHSTGARW+j9mZmZmZmbmP83MzMzMzPA/K4cW2c73KEBMN4lBYOX6P2ZmZmZmZuY/cT0K16NwJ0DZzvdT46WbP8l2vp8arx9AxSCwcmhRIEA730+Nl24KQPyp8dJNIjhA5tAi2/m+IECuR+F6FK4SQAAAAAAAABRAMQisHFpkCUAhsHJoke3kP8zMzMzMzOg/BoGVQ4usLkAAAAAAAAAEQPp+arx0k7g/UrgehetRuD+iRbbz/dToP2q8dJMYBKY/JzEIrBzaFkBSuB6F61EyQDQzMzMzMw9ABoGVQ4ts8T/hehSuR+G6P9NNYhBYOSlAgZVDi2zn2z8tsp3vp8bLP+f7qfHSTSZARrbz/dR4EkCamZmZmZkbQAAAAAAAABBAppvEILCyK0ArhxbZzvezP+Olm8QgsPA/30+Nl24S4z8xCKwcWmQCQKwcWmQ73wtAy6FFtvM9MECyne+nxgtRQAAAAAAAABZAPgrXo3A99D/+1HjpJmlaQG8Sg8DKMWBAZmZmZmZmxj9CYOXQIlseQB1aZDvfT+k/fT81XrpJ4D9WDi2yne/rP57vp8ZLN8k/hetRuB6F0z8nMQisHBosQJqZmZmZmR5AwMqhRbbzBkBCYOXQItsLQNejcD0K1xVADQIrhxbZDkD6fmq8dJO4PweBlUOL7BtAMzMzMzNzIkAAAAAAAADAP1g5tMh2vr8/9ihcj8KVNEDHSzeJQWASQBSuR+F6FDJAaJHtfD81vj9kO99PjXc2QLKd76fGyyRAJjEIrBxaEUA3iUFg5VAaQAAAAAAAAOA/2/l+arx0kz89CtejcL0QQMuhRbbz/fY/UI2XbhIDIED8qfHSTWLAP9V46SYxCAVApHA9Ctej0D9iEFg5tMgRQNV46SYxiBlAv58aL90k+D9U46WbxCCwPxsv3SQGgaU/CtejcD0Ktz/LoUW28/3UP1pkO99Pjbc/yXa+nxpvJEBSuB6F61HgPw4tsp3vJxNAoBov3SSGFECHFtnO91PrPwIrhxbZzrc/wMqhRbYzJEARWDm0yHbOP7x0kxgEFi9AMzMzMzOzFEBI4XoUrkfBP5LtfD81PjdATmIQWDm0/D+Nl24SgwAqQLByaJHt7ENAgZVDi2zn2z/fT42XbhLDPzEIrBxaZAtAAAAAAAAA4D8YBFYOLbLxP0jhehSuxyNAMzMzMzMz6z/P91PjpVskQAAAAAAAAOA/K4cW2c73AkDjpZvEILD+PwIrhxbZzvE/YOXQItv5H0BeukkMAmslQFTjpZvEgDFAGARWDi2yCECF61G4HsUoQHsUrkfhuiRAi2zn+6nxoj/3U+Olm8QIQHe+nxov3Q1A6iYxCKycIUA3iUFg5dAMQM/3U+Olm/g/nu+nxks3yT/Jdr6fGi8EQMh2vp8a7ytAVOOlm8SgFkBU46WbxCDAPwrXo3A9CvE/xks3iUFg5T9NYhBYObQIQNejcD0K1/U/Rrbz/dR49z/+1HjpJjEEQHsUrkfhesQ/001iEFi5JEA730+Nl26iPzZeukkMwi1ABoGVQ4ts6z85tMh2vp+KP4PAyqFF9jVAwcqhRbZjQkCoxks3iUHgPz4K16NwvRJAlUOLbOebNECDwMqhRbazP2iR7Xw/Na4/yqFFtvP9xD/o+6nx0k3uP++nxks3MVdA+n5qvHSTiD/FILByaBETQOf7qfHSTeo/ukkMAiuH8j+uR+F6FK7jP6rx0k1iENg/j8L1KFyPAUBoke18PzW+P5QYBFYOrRhA8KfGSzcJGkBU46WbxCAKQAAAAAAAAPg/CKwcWmQ75z/pJjEIrNwlQCPb+X5qPB5ASOF6FK5H6T+F61G4HoXbP24Sg8DKYSlAL90kBoGVLUAZBFYOLcJEQMdLN4lBgDBAL90kBoGVB0BMN4lBYOXwP3WTGARWDgVA/Knx0k3yfECe76fGS/chQNV46SYxKDBATmIQWDk0EEBU46WbxKASQCGwcmiR7QxAEFg5tMi2IUBGtvP91PgoQLTIdr6fmhNAaJHtfD+1FkCMbOf7qfHaPyuHFtnO9wBAcT0K16MwKkD8qfHSTWIGQM3MzMzMzCpAqMZLN4lB9D/6fmq8dJOIP6RwPQrXIx9ANV66SQwCFEC6SQwCK4eGPwIrhxbZzi5AlBgEVg4t7j+YbhKDwMr3Pylcj8L1qBhAZTvfT40XFkDNzMzMzMzUPzVeukkMYjRAukkMAiuHhj+yne+nxgskQHA9CtejcBhAGy/dJAaBBUDTTWIQWMFgQIcW2c73Uz1ACtejcD2KHUDNzMzMzAw9QHsUrkfhakFAH4XrUbge8z/sUbgehevlPzeJQWDl0Pg/qvHSTWIQG0CcxCCwcmgPQDm0yHa+n4o/8tJNYhBY8T+q8dJNYhD0P4PAyqFFtsM/uB6F61G4vj8tsp3vp4YjQHnpJjEIrJw/exSuR+F6hD/TTWIQWNFcQEa28/3U+BNAg8DKoUW2EEBSuB6F61HIP8l2vp8aL/c/g8DKoUUGQ0BOYhBYOfRaQML1KFyP6lJAm8QgsHLoG0B3vp8aL93kP3Noke18vxpABFYOLbJ9M0CsHFpkO9/PP7ByaJHtfBpADi2yne9nJ0CR7Xw/NV4JQJzEILBy6BNAGQRWDi2yvT+wcmiR7XwuQEw3iUFg5cA/SgwCK4dWJ0DRItv5fmrcPwwCK4cWGTxAg8DKoUU2E0D6fmq8dJOoP9v5fmq8dNM/lUOLbOf72T8hsHJoke3cP6wcWmQ73wxAGARWDi2yvT/HSzeJQQA+QGDl0CLb+c4/gZVDi2znuz85tMh2vp+KPy/dJAaBlSpAbef7qfHSE0BiEFg5tEggQFpkO99PjQdAfD81XroJJEDNzMzMzMzMP710kxgEVuY/yqFFtvP9CkB3vp8aL90tQJzEILByaME/ObTIdr6fmj8tsp3vpwY+QDm0yHa+n4o/bxKDwMqhKUAUrkfhehQSQAwCK4cW2RJAj8L1KFyP8j+PwvUoXI/2P6abxCCwMipA/tR46SaRPkCF61G4HoUQQC2yne+nBkZA4XoUrkehL0DRItv5fmohQNejcD0K18M/mG4Sg8CqPkCVQ4ts5/ssQEJg5dAi2+U/76fGSzeJGkBYObTIdr4QQKAaL90kRiZACtejcD0Kxz9BYOXQIrs+QI/C9ShcDxFAObTIdr6/NECPwvUoXC8xQKWbxCCw8iNAzczMzMzMFkAj2/l+ajwSQObQItv5viJASOF6FK5H6T8AAAAAAAAUQOBPjZduEsM/ObTIdr6fij9H4XoUrgc/QPYoXI/CNStAbhKDwMohLEAIrBxaZDv3Pzm0yHa+n4o/Gy/dJAaB+z/6fmq8dFMgQNv5fmq8dOs/m8QgsHJo8T/ufD81XjoaQAwCK4cWWSRA2c73U+MlEEBqvHSTGATeP5duEoPAyiRA1XjpJjEI7D8fhetRuB7dPzvfT42X7jZAVg4tsp3v4z+q8dJNYhDgP+58PzVe+iJA5tAi2/l+B0DufD81XrrxP2Dl0CLb+b4/bOf7qfGSI0CIFtnO91MaQPT91HjpJhNA0iLb+X5qH0AIrBxaZNsxQLKd76fGCyZAEoPAyqFF+j9aZDvfT42XPyYxCKwcWgFAsHJoke18vz/NzMzMzMwRQKabxCCwcgJAj8L1KFyPwj8X2c73U+MjQARWDi2ynRNAexSuR+F6lD9GtvP91HjxP0A1XrpJDPw/iUFg5dAi2z/m0CLb+X7+P7gehetRuJ4/ZDvfT42XFkBCYOXQIlsoQClcj8L1KAlAAAAAAACAEUAv3SQGgZXbP3sUrkfheoQ/y6FFtvP9DUAoXI/C9agXQEOLbOf714pAXrpJDAIr1z89CtejcL0rQClcj8L1KOw/6SYxCKwcCUBeukkMAiv3P0oMAiuHYnFAAAAAAADobkBJDAIrhxapPxSuR+F6FM4/Vg4tsp03WECyne+nxksBQJduEoPACidAItv5fmp8K0BKDAIrh1YgQNnO91PjA35ASgwCK4cW0T/FILByaKtwQGiR7Xw/4XZAtMh2vp9JhkB56SYxCKwvQFg5tMh2zHhAi2zn+6lBbkAOLbKd76feP6rx0k1irnpAaJHtfD81zj+DwMqhRbbnP9NNYhBY3WNAH4XrUbjKY0C6SQwCK4eWP1pkO99Pjbc/4XoUrkexaUAAAAAAAADAP0W28/3U+BNACKwcWmQ7+z/YzvdT46W7P57vp8ZL9yVAXI/C9Shc8z9I4XoUrkfBP30/NV66iSRAZmZmZmZmF0CUGARWDod6QDeJQWDlUB1AUrgehetR0D9rvHSTGAT6P3sUrkfheoQ/mZmZmZl5OECiRbbz/dS4P0w3iUFg5cA/y6FFtvO9KkAK16NwPQr5P9V46SYxCMw/eOkmMQisrD/VeOkmMcgjQGq8dJMYRChAz/dT46XbJUCiRbbz/dS4P24Sg8DKoRFAWmQ730/NI0BmZmZmZmbGP/p+arx0k9g/rBxaZDvf9z/QItv5fuoZQFTjpZvEIMA/2/l+arz0FkAK16NwPYoUQPYoXI/C1TxAsHJoke189T8X2c73U+MSQGZmZmZmZgFA46WbxCCwDUC4HoXrUbjOP4cW2c73EyZAFa5H4XryeEA1XrpJDAL5P6jGSzeJQcA/d76fGi/dHUCwcmiR7Xz7P2IQWDm0yN4/u0kMAiuHE0C8dJMYBFbOP4XrUbgehds/O99PjZfuI0CbxCCwcug3QKwcWmQ7XxZAwMqhRbbzFED6fmq8dJOIP0Jg5dAiWxhAarx0kxgEpj8ZBFYOLbK9P+xRuB6F66E/IbByaJHtvD81XrpJDIIrQHsUrkfhesQ/+n5qvHSTuD/fT42XbpI4QFK4HoXrUeA/DAIrhxaZMkCJQWDl0OIjQMDKoUW289U/MzMzMzNzKUDufD81XnpDQOf7qfHSTRpApHA9CtcjFUAUrkfhehQMQE5iEFg5tOA/LbKd76cGJ0AnMQisHJonQHsUrkfheoQ/exSuR+F6hD/FILByaJHhP4lBYOXQIqs/jZduEoOANkAAAAAAAADwPy2yne+nxgBA5/up8dJNwj+F61G4HoUHQBKDwMqhRQRAXI/C9SjcFUAW2c73U+PhPxsv3SQGgQFA5tAi2/l+/D97FK5H4XqkP3sUrkfheqQ/exSuR+F6pD/fT42XbpIrQN4kBoGVQ/0/y6FFtvM9I0BzaJHtfD+1P3sUrkfheqQ/Fa5H4XoUzj+0yHa+n1ojQGq8dJMYdEVA4XoUrkfh2j9Di2zn+6kMQA4tsp3vhzFAvHSTGARWAEAbL90kBoGlPxsv3SQGgaU/j8L1KFyP6j9nZmZmZmbGP166SQwCKxRAdZMYBFYO9T8bL90kBoGlPwisHFpkO78/aZHtfD81zj99PzVeuglAQHe+nxov3fo/8tJNYhBY4T81XrpJDAICQPYoXI/CdRZA6SYxCKwc/j/azvdT46WrPzDdJAaB1SxAGy/dJAaBpT9t5/up8dL3PzQzMzMzM+8/Gi/dJAbBKEAbL90kBoGlP/LSTWIQmChA5tAi2/l+/j/azvdT46WrPxsv3SQGgaU/sHJoke18GUAbL90kBoGlPz4K16NwPco/Gy/dJAaBpT+fGi/dJAb1P7x0kxgEVglAvHSTGARWDECgGi/dJAY/QO58PzVeOh9AvHSTGAQWIkAbL90kBoGlPxsv3SQGgaU/Gy/dJAaBpT/Jdr6fGi/NP3sUrkfhOilAmpmZmZmZKUDn+6nx0k0QQBsv3SQGgaU/1XjpJjHoPEBYObTIdr4qQBODwMqhRdY/gZVDi2zn4z+R7Xw/Nd47QAAAAAAAADRAexSuR+F6tD8CK4cW2c77PwIrhxbZzjZAAAAAAAAAFED6fmq8dJOIP6JFtvP97FFAg8DKoUV2OUDP91PjpZsUQD0K16NwPeI/nMQgsHJokT+4HoXrUbjWP1g5tMh2vgtAHFpkO99P4T8CK4cW2c7nPwisHFpkO/U/iUFg5dCiJkAAAAAAAADwPwAAAAAAABRA5tAi2/l+0j9PjZduEoMRQPT91HjpJrE/RIts5/upBEAAAAAAAAAuQFcOLbKd7xVAEoPAyqFF1j+oxks3iUH8P+XQItv5fvw/bef7qfGSL0C4HoXrUbgMQHWTGARWDv0/YhBYObTI4j8bL90kBoHFP1+6SQwCW0tAi2zn+6mxLUDRItv5fuofQFpkO99PDSNAz/dT46Wb3D+DwMqhRbYlQEjhehSuL3dAVg4tsp0jZEBYObTIdiZXQDEIrBxapDJAzczMzMzUYEBeukkMAoNSQGq8dJMYVEVAi2zn+6nxCEAzMzMzMzMVQDVeukkMojNA/Knx0k1iHEA=", - "dtype": "f8" - }, - "yaxis": "y" - } - ], - "layout": { - "legend": { - "tracegroupgap": 0 - }, - "margin": { - "t": 60 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#f2f5fa" - }, - "error_y": { - "color": "#f2f5fa" - }, - "marker": { - "line": { - "color": "rgb(17,17,17)", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "rgb(17,17,17)", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#A2B1C6", - "gridcolor": "#506784", - "linecolor": "#506784", - "minorgridcolor": "#506784", - "startlinecolor": "#A2B1C6" - }, - "baxis": { - "endlinecolor": "#A2B1C6", - "gridcolor": "#506784", - "linecolor": "#506784", - "minorgridcolor": "#506784", - "startlinecolor": "#A2B1C6" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "marker": { - "line": { - "color": "#283442" - } - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "line": { - "color": "#283442" - } - }, - "type": "scattergl" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermap" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#506784" - }, - "line": { - "color": "rgb(17,17,17)" - } - }, - "header": { - "fill": { - "color": "#2a3f5f" - }, - "line": { - "color": "rgb(17,17,17)" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#f2f5fa", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#f2f5fa" - }, - "geo": { - "bgcolor": "rgb(17,17,17)", - "lakecolor": "rgb(17,17,17)", - "landcolor": "rgb(17,17,17)", - "showlakes": true, - "showland": true, - "subunitcolor": "#506784" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "dark" - }, - "paper_bgcolor": "rgb(17,17,17)", - "plot_bgcolor": "rgb(17,17,17)", - "polar": { - "angularaxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - }, - "bgcolor": "rgb(17,17,17)", - "radialaxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "rgb(17,17,17)", - "gridcolor": "#506784", - "gridwidth": 2, - "linecolor": "#506784", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#C8D4E3" - }, - "yaxis": { - "backgroundcolor": "rgb(17,17,17)", - "gridcolor": "#506784", - "gridwidth": 2, - "linecolor": "#506784", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#C8D4E3" - }, - "zaxis": { - "backgroundcolor": "rgb(17,17,17)", - "gridcolor": "#506784", - "gridwidth": 2, - "linecolor": "#506784", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#C8D4E3" - } - }, - "shapedefaults": { - "line": { - "color": "#f2f5fa" - } - }, - "sliderdefaults": { - "bgcolor": "#C8D4E3", - "bordercolor": "rgb(17,17,17)", - "borderwidth": 1, - "tickwidth": 0 - }, - "ternary": { - "aaxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - }, - "baxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - }, - "bgcolor": "rgb(17,17,17)", - "caxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "updatemenudefaults": { - "bgcolor": "#506784", - "borderwidth": 0 - }, - "xaxis": { - "automargin": true, - "gridcolor": "#283442", - "linecolor": "#506784", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "#283442", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "#283442", - "linecolor": "#506784", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "#283442", - "zerolinewidth": 2 - } - } - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "title": { - "text": "timestamp_trade_dt" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "qty_sum" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "px.line(df_extend_trades_by_sec_maker, y='qty_sum', template='plotly_dark')" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "56f94403", - "metadata": {}, - "outputs": [], - "source": [ - "df_comb_trades_by_sec = df_aster_trades_by_sec_taker[['price_median']].merge(df_extend_trades_by_sec_maker[['price_median']], left_index=True, right_index=True, suffixes=('_aster','_extend'))" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ + ")\n", + "\n", + "df_comb_trades_by_sec = df_aster_trades_by_sec_taker[['price_median']].merge(df_extend_trades_by_sec_maker[['price_median']], left_index=True, right_index=True, suffixes=('_aster','_extend'))\n", "df_comb_trades_by_sec['ratio'] = df_comb_trades_by_sec['price_median_aster'] / df_comb_trades_by_sec['price_median_extend']" ] }, { "cell_type": "code", - "execution_count": 13, - "id": "663d036f", - "metadata": {}, - "outputs": [], - "source": [ - "# df_comb_trades_by_sec = df_comb_trades_by_sec.reset_index().groupby(pd.Grouper(key='timestamp_trade_dt', freq='h')).agg({'price_median_aster': 'median', 'price_median_extend': 'median', 'ratio': 'median'}) # Resting on the ask (seller is maker): BID [Taker] [Buyer] -- Crossed into --> ASK [Maker] [Seller]" - ] - }, - { - "cell_type": "code", - "execution_count": 14, + "execution_count": 103, "id": "66c5a128", "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "0.6462633451957296" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " Pct Trades w Ratio > 1: 0.6558171745152355\n", + " Pct Trades w Ratio <= 1: 0.34418282548476453\n", + "\n" + ] } ], "source": [ - "len(df_comb_trades_by_sec.loc[df_comb_trades_by_sec['ratio'] > 1]) / len(df_comb_trades_by_sec)" + "print(f'''\n", + " Pct Trades w Ratio > 1: {len(df_comb_trades_by_sec.loc[df_comb_trades_by_sec['ratio'] > 1]) / len(df_comb_trades_by_sec)}\n", + " Pct Trades w Ratio <= 1: {len(df_comb_trades_by_sec.loc[df_comb_trades_by_sec['ratio'] <= 1]) / len(df_comb_trades_by_sec)}\n", + "''')\n" ] }, { "cell_type": "code", - "execution_count": 15, - "id": "a454f3c4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.35373665480427047" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(df_comb_trades_by_sec.loc[df_comb_trades_by_sec['ratio'] <= 1]) / len(df_comb_trades_by_sec)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "bf9af769", - "metadata": {}, - "outputs": [], - "source": [ - "min_time = max([round(df_comb_trades_by_sec.index.min().timestamp()*1000), int(round(df_fr['timestamp'].min()))])" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "a0b4ab50", + "execution_count": 104, + "id": "ee0dc256", "metadata": {}, "outputs": [], "source": [ + "min_time = max([round(df_comb_trades_by_sec.index.min().timestamp()*1000), int(round(df_fr['timestamp'].min()))])\n", "df_comb_trades_by_sec_plot = df_comb_trades_by_sec.loc[df_comb_trades_by_sec.index.values.astype(np.int64) > min_time,:]\n", - "df_fr_plot = df_fr.loc[df_fr['timestamp'] > min_time,:]" + "df_fr_plot = df_fr.loc[df_fr['timestamp'] > min_time,:]\n", + "df_fr_plot['funding_rate'] = df_fr_plot['funding_rate'].astype(float)" ] }, { "cell_type": "code", - "execution_count": 18, - "id": "0ed91c0e", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.microsoft.datawrangler.viewer.v0+json": { - "columns": [ - { - "name": "timestamp_trade_dt", - "rawType": "datetime64[ms]", - "type": "datetime" - }, - { - "name": "price_median_aster", - "rawType": "float64", - "type": "float" - }, - { - "name": "price_median_extend", - "rawType": "float64", - "type": "float" - }, - { - "name": "ratio", - "rawType": "float64", - "type": "float" - } - ], - "ref": "b645141d-443a-4c1f-a3bd-0fd646aa3dab", - "rows": [ - [ - "2026-04-27 15:25:00", - "2267.3", - "2267.25", - "1.000022053148087" - ], - [ - "2026-04-27 15:26:00", - "2268.3", - "2267.6", - "1.0003086964191217" - ], - [ - "2026-04-27 15:27:00", - "2271.6099999999997", - "2271.6", - "1.0000044021834829" - ], - [ - "2026-04-27 15:28:00", - "2271.225", - "2270.7", - "1.0002312062359626" - ], - [ - "2026-04-27 15:29:00", - "2273.0950000000003", - "2272.1", - "1.0004379208661591" - ], - [ - "2026-04-27 15:30:00", - "2276.0", - "2275.4", - "1.0002636899006767" - ], - [ - "2026-04-27 15:31:00", - "2280.21", - "2282.05", - "0.9991937074121952" - ], - [ - "2026-04-27 15:32:00", - "2280.6", - "2281.6", - "0.9995617110799438" - ], - [ - "2026-04-27 15:33:00", - "2281.0699999999997", - "2280.45", - "1.000271876164792" - ], - [ - "2026-04-27 15:34:00", - "2279.6", - "2279.0", - "1.0002632733655112" - ], - [ - "2026-04-27 15:35:00", - "2280.2650000000003", - "2280.9", - "0.9997216011223641" - ], - [ - "2026-04-27 15:36:00", - "2279.71", - "2280.2", - "0.9997851065695993" - ], - [ - "2026-04-27 15:37:00", - "2279.7", - "2280.1", - "0.9998245690978466" - ], - [ - "2026-04-27 15:38:00", - "2279.755", - "2279.7", - "1.0000241259814888" - ], - [ - "2026-04-27 15:39:00", - "2280.58", - "2280.8", - "0.9999035426166256" - ], - [ - "2026-04-27 15:40:00", - "2279.92", - "2280.4", - "0.9997895106121732" - ], - [ - "2026-04-27 15:41:00", - "2281.54", - "2281.0", - "1.0002367382726873" - ], - [ - "2026-04-27 15:42:00", - "2282.005", - "2282.4", - "0.9998269365580091" - ], - [ - "2026-04-27 15:43:00", - "2281.395", - "2281.1", - "1.0001293235719608" - ], - [ - "2026-04-27 15:44:00", - "2281.3", - "2281.7", - "0.999824692115528" - ], - [ - "2026-04-27 15:45:00", - "2280.5", - "2280.8", - "0.9998684672044895" - ], - [ - "2026-04-27 15:46:00", - "2279.125", - "2280.0", - "0.9996162280701755" - ], - [ - "2026-04-27 15:47:00", - "2278.645", - "2278.6", - "1.000019748968665" - ], - [ - "2026-04-27 15:48:00", - "2276.79", - "2277.2", - "0.9998199543298789" - ], - [ - "2026-04-27 15:49:00", - "2275.48", - "2274.75", - "1.0003209143861962" - ], - [ - "2026-04-27 15:50:00", - "2273.98", - "2272.9", - "1.0004751638875444" - ], - [ - "2026-04-27 15:51:00", - "2274.7", - "2274.0", - "1.0003078276165347" - ], - [ - "2026-04-27 15:52:00", - "2273.29", - "2274.2", - "0.9995998592911793" - ], - [ - "2026-04-27 15:53:00", - "2273.5550000000003", - "2273.1", - "1.0002001671725838" - ], - [ - "2026-04-27 15:54:00", - "2274.57", - "2274.4", - "1.000074744987689" - ], - [ - "2026-04-27 15:55:00", - "2275.09", - "2274.8", - "1.0001274837348337" - ], - [ - "2026-04-27 15:56:00", - "2273.525", - "2274.3", - "0.9996592358088202" - ], - [ - "2026-04-27 15:57:00", - "2273.23", - "2273.2", - "1.000013197254971" - ], - [ - "2026-04-27 15:58:00", - "2272.91", - "2272.8", - "1.0000483984512494" - ], - [ - "2026-04-27 15:59:00", - "2273.245", - "2272.8", - "1.0001957937346004" - ], - [ - "2026-04-27 16:00:00", - "2271.72", - "2272.0", - "0.9998767605633802" - ], - [ - "2026-04-27 16:01:00", - "2270.8", - "2270.7", - "1.0000440392830405" - ], - [ - "2026-04-27 16:02:00", - "2271.3900000000003", - "2270.9", - "1.0002157734818795" - ], - [ - "2026-04-27 16:03:00", - "2270.2", - "2269.8", - "1.0001762269803505" - ], - [ - "2026-04-27 16:04:00", - "2273.14", - "2273.7", - "0.9997537054140828" - ], - [ - "2026-04-27 16:05:00", - "2273.21", - "2273.0", - "1.0000923889133304" - ], - [ - "2026-04-27 16:06:00", - "2274.925", - "2275.1499999999996", - "0.9999011054216208" - ], - [ - "2026-04-27 16:07:00", - "2275.58", - "2275.2", - "1.000167018284107" - ], - [ - "2026-04-27 16:08:00", - "2273.68", - "2273.6", - "1.0000351864883885" - ], - [ - "2026-04-27 16:09:00", - "2274.05", - "2273.0", - "1.000461944566652" - ], - [ - "2026-04-27 16:10:00", - "2274.28", - "2274.2", - "1.0000351772051712" - ], - [ - "2026-04-27 16:11:00", - "2275.0", - "2274.55", - "1.0001978413312522" - ], - [ - "2026-04-27 16:12:00", - "2276.41", - "2276.2", - "1.0000922590282049" - ], - [ - "2026-04-27 16:13:00", - "2276.855", - "2276.45", - "1.0001779085857367" - ], - [ - "2026-04-27 16:14:00", - "2276.4", - "2276.1", - "1.0001318044022671" - ] - ], - "shape": { - "columns": 3, - "rows": 1404 - } - }, - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
price_median_asterprice_median_extendratio
timestamp_trade_dt
2026-04-27 15:25:002267.3002267.251.000022
2026-04-27 15:26:002268.3002267.601.000309
2026-04-27 15:27:002271.6102271.601.000004
2026-04-27 15:28:002271.2252270.701.000231
2026-04-27 15:29:002273.0952272.101.000438
............
2026-04-28 19:59:002300.9452301.200.999889
2026-04-28 20:00:002301.4802300.501.000426
2026-04-28 20:01:002301.9802300.901.000469
2026-04-28 20:02:002301.9752300.901.000467
2026-04-28 20:03:002302.4302301.601.000361
\n", - "

1404 rows × 3 columns

\n", - "
" - ], - "text/plain": [ - " price_median_aster price_median_extend ratio\n", - "timestamp_trade_dt \n", - "2026-04-27 15:25:00 2267.300 2267.25 1.000022\n", - "2026-04-27 15:26:00 2268.300 2267.60 1.000309\n", - "2026-04-27 15:27:00 2271.610 2271.60 1.000004\n", - "2026-04-27 15:28:00 2271.225 2270.70 1.000231\n", - "2026-04-27 15:29:00 2273.095 2272.10 1.000438\n", - "... ... ... ...\n", - "2026-04-28 19:59:00 2300.945 2301.20 0.999889\n", - "2026-04-28 20:00:00 2301.480 2300.50 1.000426\n", - "2026-04-28 20:01:00 2301.980 2300.90 1.000469\n", - "2026-04-28 20:02:00 2301.975 2300.90 1.000467\n", - "2026-04-28 20:03:00 2302.430 2301.60 1.000361\n", - "\n", - "[1404 rows x 3 columns]" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_comb_trades_by_sec_plot" - ] - }, - { - "cell_type": "code", - "execution_count": 199, - "id": "b724d368", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.microsoft.datawrangler.viewer.v0+json": { - "columns": [ - { - "name": "timestamp_trade_dt", - "rawType": "datetime64[ms]", - "type": "datetime" - }, - { - "name": "price_median_aster", - "rawType": "float64", - "type": "float" - }, - { - "name": "price_median_extend", - "rawType": "float64", - "type": "float" - }, - { - "name": "ratio", - "rawType": "float64", - "type": "float" - } - ], - "ref": "a60cea97-0362-41f0-907b-6427d6400779", - "rows": [ - [ - "2026-04-27 15:24:00", - "2267.7", - "2269.5", - "0.9992068737607401" - ], - [ - "2026-04-27 15:25:00", - "2267.3", - "2267.25", - "1.000022053148087" - ], - [ - "2026-04-27 15:26:00", - "2268.3", - "2267.6", - "1.0003086964191217" - ], - [ - "2026-04-27 15:27:00", - "2271.6099999999997", - "2271.6", - "1.0000044021834829" - ], - [ - "2026-04-27 15:28:00", - "2271.225", - "2270.7", - "1.0002312062359626" - ], - [ - "2026-04-27 15:29:00", - "2273.0950000000003", - "2272.1", - "1.0004379208661591" - ], - [ - "2026-04-27 15:30:00", - "2276.0", - "2275.4", - "1.0002636899006767" - ], - [ - "2026-04-27 15:31:00", - "2280.21", - "2282.05", - "0.9991937074121952" - ], - [ - "2026-04-27 15:32:00", - "2280.6", - "2281.6", - "0.9995617110799438" - ], - [ - "2026-04-27 15:33:00", - "2281.0699999999997", - "2280.45", - "1.000271876164792" - ], - [ - "2026-04-27 15:34:00", - "2279.6", - "2279.0", - "1.0002632733655112" - ], - [ - "2026-04-27 15:35:00", - "2280.2650000000003", - "2280.9", - "0.9997216011223641" - ], - [ - "2026-04-27 15:36:00", - "2279.71", - "2280.2", - "0.9997851065695993" - ], - [ - "2026-04-27 15:37:00", - "2279.7", - "2280.1", - "0.9998245690978466" - ], - [ - "2026-04-27 15:38:00", - "2279.755", - "2279.7", - "1.0000241259814888" - ], - [ - "2026-04-27 15:39:00", - "2280.58", - "2280.8", - "0.9999035426166256" - ], - [ - "2026-04-27 15:40:00", - "2279.92", - "2280.4", - "0.9997895106121732" - ], - [ - "2026-04-27 15:41:00", - "2281.54", - "2281.0", - "1.0002367382726873" - ], - [ - "2026-04-27 15:42:00", - "2282.005", - "2282.4", - "0.9998269365580091" - ], - [ - "2026-04-27 15:43:00", - "2281.395", - "2281.1", - "1.0001293235719608" - ], - [ - "2026-04-27 15:44:00", - "2281.3", - "2281.7", - "0.999824692115528" - ], - [ - "2026-04-27 15:45:00", - "2280.5", - "2280.8", - "0.9998684672044895" - ], - [ - "2026-04-27 15:46:00", - "2279.125", - "2280.0", - "0.9996162280701755" - ], - [ - "2026-04-27 15:47:00", - "2278.645", - "2278.6", - "1.000019748968665" - ], - [ - "2026-04-27 15:48:00", - "2276.79", - "2277.2", - "0.9998199543298789" - ], - [ - "2026-04-27 15:49:00", - "2275.48", - "2274.75", - "1.0003209143861962" - ], - [ - "2026-04-27 15:50:00", - "2273.98", - "2272.9", - "1.0004751638875444" - ], - [ - "2026-04-27 15:51:00", - "2274.7", - "2274.0", - "1.0003078276165347" - ], - [ - "2026-04-27 15:52:00", - "2273.29", - "2274.2", - "0.9995998592911793" - ], - [ - "2026-04-27 15:53:00", - "2273.5550000000003", - "2273.1", - "1.0002001671725838" - ], - [ - "2026-04-27 15:54:00", - "2274.57", - "2274.4", - "1.000074744987689" - ], - [ - "2026-04-27 15:55:00", - "2275.09", - "2274.8", - "1.0001274837348337" - ], - [ - "2026-04-27 15:56:00", - "2273.525", - "2274.3", - "0.9996592358088202" - ], - [ - "2026-04-27 15:57:00", - "2273.23", - "2273.2", - "1.000013197254971" - ], - [ - "2026-04-27 15:58:00", - "2272.91", - "2272.8", - "1.0000483984512494" - ], - [ - "2026-04-27 15:59:00", - "2273.245", - "2272.8", - "1.0001957937346004" - ], - [ - "2026-04-27 16:00:00", - "2271.72", - "2272.0", - "0.9998767605633802" - ], - [ - "2026-04-27 16:01:00", - "2270.8", - "2270.7", - "1.0000440392830405" - ], - [ - "2026-04-27 16:02:00", - "2271.3900000000003", - "2270.9", - "1.0002157734818795" - ], - [ - "2026-04-27 16:03:00", - "2270.2", - "2269.8", - "1.0001762269803505" - ], - [ - "2026-04-27 16:04:00", - "2273.14", - "2273.7", - "0.9997537054140828" - ], - [ - "2026-04-27 16:05:00", - "2273.21", - "2273.0", - "1.0000923889133304" - ], - [ - "2026-04-27 16:06:00", - "2274.925", - "2275.1499999999996", - "0.9999011054216208" - ], - [ - "2026-04-27 16:07:00", - "2275.58", - "2275.2", - "1.000167018284107" - ], - [ - "2026-04-27 16:08:00", - "2273.68", - "2273.6", - "1.0000351864883885" - ], - [ - "2026-04-27 16:09:00", - "2274.05", - "2273.0", - "1.000461944566652" - ], - [ - "2026-04-27 16:10:00", - "2274.28", - "2274.2", - "1.0000351772051712" - ], - [ - "2026-04-27 16:11:00", - "2275.0", - "2274.55", - "1.0001978413312522" - ], - [ - "2026-04-27 16:12:00", - "2276.41", - "2276.2", - "1.0000922590282049" - ], - [ - "2026-04-27 16:13:00", - "2276.855", - "2276.45", - "1.0001779085857367" - ] - ], - "shape": { - "columns": 3, - "rows": 624 - } - }, - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
price_median_asterprice_median_extendratio
timestamp_trade_dt
2026-04-27 15:24:002267.7002269.500.999207
2026-04-27 15:25:002267.3002267.251.000022
2026-04-27 15:26:002268.3002267.601.000309
2026-04-27 15:27:002271.6102271.601.000004
2026-04-27 15:28:002271.2252270.701.000231
............
2026-04-28 03:54:002287.5002287.101.000175
2026-04-28 03:57:002289.3102288.601.000310
2026-04-28 04:01:002288.1152288.200.999963
2026-04-28 04:02:002287.3702287.400.999987
2026-04-28 04:06:002287.7102287.101.000267
\n", - "

624 rows × 3 columns

\n", - "
" - ], - "text/plain": [ - " price_median_aster price_median_extend ratio\n", - "timestamp_trade_dt \n", - "2026-04-27 15:24:00 2267.700 2269.50 0.999207\n", - "2026-04-27 15:25:00 2267.300 2267.25 1.000022\n", - "2026-04-27 15:26:00 2268.300 2267.60 1.000309\n", - "2026-04-27 15:27:00 2271.610 2271.60 1.000004\n", - "2026-04-27 15:28:00 2271.225 2270.70 1.000231\n", - "... ... ... ...\n", - "2026-04-28 03:54:00 2287.500 2287.10 1.000175\n", - "2026-04-28 03:57:00 2289.310 2288.60 1.000310\n", - "2026-04-28 04:01:00 2288.115 2288.20 0.999963\n", - "2026-04-28 04:02:00 2287.370 2287.40 0.999987\n", - "2026-04-28 04:06:00 2287.710 2287.10 1.000267\n", - "\n", - "[624 rows x 3 columns]" - ] - }, - "execution_count": 199, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_comb_trades_by_sec" - ] - }, - { - "cell_type": "code", - "execution_count": 214, - "id": "d228c87c", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.microsoft.datawrangler.viewer.v0+json": { - "columns": [ - { - "name": "timestamp_trade_dt", - "rawType": "datetime64[ms]", - "type": "datetime" - }, - { - "name": "0", - "rawType": "float64", - "type": "float" - } - ], - "ref": "0b4e93ac-9fd8-4666-9cc1-a60f9750af0a", - "rows": [ - [ - "2026-04-27 15:24:00", - "-0.39240000000003966" - ], - [ - "2026-04-27 15:25:00", - "0.010900000000039654" - ], - [ - "2026-04-27 15:26:00", - "0.1526000000000595" - ], - [ - "2026-04-27 15:27:00", - "0.0021799999999484497" - ], - [ - "2026-04-27 15:28:00", - "0.11445000000001983" - ], - [ - "2026-04-27 15:29:00", - "0.21691000000007535" - ], - [ - "2026-04-27 15:30:00", - "0.13079999999998018" - ], - [ - "2026-04-27 15:31:00", - "-0.40112000000003173" - ], - [ - "2026-04-27 15:32:00", - "-0.218" - ], - [ - "2026-04-27 15:33:00", - "0.13515999999997622" - ], - [ - "2026-04-27 15:34:00", - "0.13079999999998018" - ], - [ - "2026-04-27 15:35:00", - "-0.13842999999994846" - ], - [ - "2026-04-27 15:36:00", - "-0.10681999999995241" - ], - [ - "2026-04-27 15:37:00", - "-0.08720000000001983" - ], - [ - "2026-04-27 15:38:00", - "0.011990000000063446" - ], - [ - "2026-04-27 15:39:00", - "-0.047960000000055514" - ], - [ - "2026-04-27 15:40:00", - "-0.10464000000000397" - ], - [ - "2026-04-27 15:41:00", - "0.11771999999999207" - ], - [ - "2026-04-27 15:42:00", - "-0.08610999999999604" - ], - [ - "2026-04-27 15:43:00", - "0.06431000000001585" - ], - [ - "2026-04-27 15:44:00", - "-0.08719999999992069" - ], - [ - "2026-04-27 15:45:00", - "-0.06540000000003965" - ], - [ - "2026-04-27 15:46:00", - "-0.19075" - ], - [ - "2026-04-27 15:47:00", - "0.009810000000015862" - ], - [ - "2026-04-27 15:48:00", - "-0.08937999999996828" - ], - [ - "2026-04-27 15:49:00", - "0.15914000000000397" - ], - [ - "2026-04-27 15:50:00", - "0.23543999999998413" - ], - [ - "2026-04-27 15:51:00", - "0.15259999999996035" - ], - [ - "2026-04-27 15:52:00", - "-0.19837999999996828" - ], - [ - "2026-04-27 15:53:00", - "0.09919000000008327" - ], - [ - "2026-04-27 15:54:00", - "0.03706000000001586" - ], - [ - "2026-04-27 15:55:00", - "0.06321999999999207" - ], - [ - "2026-04-27 15:56:00", - "-0.16895000000001983" - ], - [ - "2026-04-27 15:57:00", - "0.006540000000043619" - ], - [ - "2026-04-27 15:58:00", - "0.023979999999928624" - ], - [ - "2026-04-27 15:59:00", - "0.09700999999993655" - ], - [ - "2026-04-27 16:00:00", - "-0.06104000000004362" - ], - [ - "2026-04-27 16:01:00", - "0.021800000000079308" - ], - [ - "2026-04-27 16:02:00", - "0.10682000000005155" - ], - [ - "2026-04-27 16:03:00", - "0.08719999999992069" - ], - [ - "2026-04-27 16:04:00", - "-0.1220799999999881" - ], - [ - "2026-04-27 16:05:00", - "0.04578000000000793" - ], - [ - "2026-04-27 16:06:00", - "-0.049049999999881036" - ], - [ - "2026-04-27 16:07:00", - "0.0828400000000238" - ], - [ - "2026-04-27 16:08:00", - "0.01743999999998414" - ], - [ - "2026-04-27 16:09:00", - "0.22890000000003966" - ], - [ - "2026-04-27 16:10:00", - "0.017440000000083274" - ], - [ - "2026-04-27 16:11:00", - "0.09809999999996034" - ], - [ - "2026-04-27 16:12:00", - "0.04578000000000793" - ], - [ - "2026-04-27 16:13:00", - "0.08829000000004363" - ] - ], - "shape": { - "columns": 1, - "rows": 624 - } - }, - "text/plain": [ - "timestamp_trade_dt\n", - "2026-04-27 15:24:00 -0.39240\n", - "2026-04-27 15:25:00 0.01090\n", - "2026-04-27 15:26:00 0.15260\n", - "2026-04-27 15:27:00 0.00218\n", - "2026-04-27 15:28:00 0.11445\n", - " ... \n", - "2026-04-28 03:54:00 0.08720\n", - "2026-04-28 03:57:00 0.15478\n", - "2026-04-28 04:01:00 -0.01853\n", - "2026-04-28 04:02:00 -0.00654\n", - "2026-04-28 04:06:00 0.13298\n", - "Length: 624, dtype: float64" - ] - }, - "execution_count": 214, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(df_comb_trades_by_sec['price_median_aster'] - df_comb_trades_by_sec['price_median_extend']) * 0.218" - ] - }, - { - "cell_type": "code", - "execution_count": 216, - "id": "2b286bff", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "np.float64(0.9999956335684463)" - ] - }, - "execution_count": 216, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_comb_trades_by_sec['ratio'].median()" - ] - }, - { - "cell_type": "code", - "execution_count": null, + "execution_count": 105, "id": "615f6b20", "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "name": "Ratio", - "type": "scatter", - "x": [ - "2026-04-27T15:25:00", - "2026-04-27T15:26:00", - "2026-04-27T15:27:00", - "2026-04-27T15:28:00", - "2026-04-27T15:29:00", - "2026-04-27T15:30:00", - "2026-04-27T15:31:00", - "2026-04-27T15:32:00", - "2026-04-27T15:33:00", - "2026-04-27T15:34:00", - "2026-04-27T15:35:00", - "2026-04-27T15:36:00", - "2026-04-27T15:37:00", - "2026-04-27T15:38:00", - "2026-04-27T15:39:00", - "2026-04-27T15:40:00", - "2026-04-27T15:41:00", - "2026-04-27T15:42:00", - "2026-04-27T15:43:00", - "2026-04-27T15:44:00", - "2026-04-27T15:45:00", - "2026-04-27T15:46:00", - "2026-04-27T15:47:00", - "2026-04-27T15:48:00", - "2026-04-27T15:49:00", - "2026-04-27T15:50:00", - "2026-04-27T15:51:00", - "2026-04-27T15:52:00", - "2026-04-27T15:53:00", - "2026-04-27T15:54:00", - "2026-04-27T15:55:00", - "2026-04-27T15:56:00", - "2026-04-27T15:57:00", - "2026-04-27T15:58:00", - "2026-04-27T15:59:00", - "2026-04-27T16:00:00", - "2026-04-27T16:01:00", - "2026-04-27T16:02:00", - "2026-04-27T16:03:00", - "2026-04-27T16:04:00", - "2026-04-27T16:05:00", - "2026-04-27T16:06:00", - "2026-04-27T16:07:00", - "2026-04-27T16:08:00", - "2026-04-27T16:09:00", - "2026-04-27T16:10:00", - "2026-04-27T16:11:00", - "2026-04-27T16:12:00", - "2026-04-27T16:13:00", - "2026-04-27T16:14:00", - "2026-04-27T16:15:00", - "2026-04-27T16:16:00", - "2026-04-27T16:17:00", - "2026-04-27T16:18:00", - "2026-04-27T16:19:00", - "2026-04-27T16:20:00", - "2026-04-27T16:21:00", - "2026-04-27T16:22:00", - "2026-04-27T16:23:00", - "2026-04-27T16:24:00", - "2026-04-27T16:25:00", - "2026-04-27T16:26:00", - "2026-04-27T16:27:00", - "2026-04-27T16:28:00", - "2026-04-27T16:29:00", - "2026-04-27T16:30:00", - "2026-04-27T16:31:00", - "2026-04-27T16:32:00", - "2026-04-27T16:33:00", - "2026-04-27T16:34:00", - "2026-04-27T16:35:00", - "2026-04-27T16:36:00", - "2026-04-27T16:38:00", - "2026-04-27T16:39:00", - "2026-04-27T16:40:00", - "2026-04-27T16:41:00", - "2026-04-27T16:43:00", - "2026-04-27T16:44:00", - "2026-04-27T16:45:00", - "2026-04-27T16:46:00", - "2026-04-27T16:47:00", - "2026-04-27T16:48:00", - "2026-04-27T16:49:00", - "2026-04-27T16:50:00", - "2026-04-27T16:51:00", - "2026-04-27T16:52:00", - "2026-04-27T16:53:00", - "2026-04-27T16:54:00", - "2026-04-27T16:55:00", - "2026-04-27T16:56:00", - "2026-04-27T16:57:00", - "2026-04-27T16:58:00", - "2026-04-27T17:00:00", - "2026-04-27T17:01:00", - "2026-04-27T17:02:00", - "2026-04-27T17:03:00", - "2026-04-27T17:04:00", - "2026-04-27T17:05:00", - "2026-04-27T17:06:00", - "2026-04-27T17:07:00", - "2026-04-27T17:08:00", - "2026-04-27T17:09:00", - "2026-04-27T17:10:00", - "2026-04-27T17:11:00", - "2026-04-27T17:12:00", - "2026-04-27T17:13:00", - "2026-04-27T17:14:00", - "2026-04-27T17:15:00", - "2026-04-27T17:16:00", - "2026-04-27T17:18:00", - "2026-04-27T17:19:00", - "2026-04-27T17:20:00", - "2026-04-27T17:23:00", - "2026-04-27T17:24:00", - "2026-04-27T17:25:00", - "2026-04-27T17:26:00", - "2026-04-27T17:27:00", - "2026-04-27T17:28:00", - "2026-04-27T17:29:00", - "2026-04-27T17:30:00", - "2026-04-27T17:31:00", - "2026-04-27T17:32:00", - "2026-04-27T17:33:00", - "2026-04-27T17:34:00", - "2026-04-27T17:35:00", - "2026-04-27T17:36:00", - "2026-04-27T17:37:00", - "2026-04-27T17:38:00", - "2026-04-27T17:39:00", - "2026-04-27T17:40:00", - "2026-04-27T17:41:00", - "2026-04-27T17:42:00", - "2026-04-27T17:43:00", - "2026-04-27T17:44:00", - "2026-04-27T17:45:00", - "2026-04-27T17:46:00", - "2026-04-27T17:47:00", - "2026-04-27T17:48:00", - "2026-04-27T17:49:00", - "2026-04-27T17:50:00", - "2026-04-27T17:51:00", - "2026-04-27T17:53:00", - "2026-04-27T17:54:00", - "2026-04-27T17:55:00", - "2026-04-27T17:56:00", - "2026-04-27T17:58:00", - "2026-04-27T18:00:00", - "2026-04-27T18:01:00", - "2026-04-27T18:02:00", - "2026-04-27T18:03:00", - "2026-04-27T18:04:00", - "2026-04-27T18:05:00", - "2026-04-27T18:06:00", - "2026-04-27T18:07:00", - "2026-04-27T18:08:00", - "2026-04-27T18:09:00", - "2026-04-27T18:10:00", - "2026-04-27T18:11:00", - "2026-04-27T18:12:00", - "2026-04-27T18:13:00", - "2026-04-27T18:14:00", - "2026-04-27T18:17:00", - "2026-04-27T18:18:00", - "2026-04-27T18:19:00", - "2026-04-27T18:20:00", - "2026-04-27T18:21:00", - "2026-04-27T18:23:00", - "2026-04-27T18:24:00", - "2026-04-27T18:25:00", - "2026-04-27T18:26:00", - "2026-04-27T18:28:00", - "2026-04-27T18:30:00", - "2026-04-27T18:31:00", - "2026-04-27T18:32:00", - "2026-04-27T18:33:00", - "2026-04-27T18:34:00", - "2026-04-27T18:35:00", - "2026-04-27T18:38:00", - "2026-04-27T18:39:00", - "2026-04-27T18:40:00", - "2026-04-27T18:41:00", - "2026-04-27T18:42:00", - "2026-04-27T18:43:00", - "2026-04-27T18:45:00", - "2026-04-27T18:46:00", - "2026-04-27T18:47:00", - "2026-04-27T18:48:00", - "2026-04-27T18:49:00", - "2026-04-27T18:50:00", - "2026-04-27T18:51:00", - "2026-04-27T18:52:00", - "2026-04-27T18:53:00", - "2026-04-27T18:54:00", - "2026-04-27T18:55:00", - "2026-04-27T18:56:00", - "2026-04-27T18:57:00", - "2026-04-27T18:58:00", - "2026-04-27T19:00:00", - "2026-04-27T19:01:00", - "2026-04-27T19:02:00", - "2026-04-27T19:03:00", - "2026-04-27T19:04:00", - "2026-04-27T19:05:00", - "2026-04-27T19:06:00", - "2026-04-27T19:07:00", - "2026-04-27T19:13:00", - "2026-04-27T19:14:00", - "2026-04-27T19:15:00", - "2026-04-27T19:16:00", - "2026-04-27T19:17:00", - "2026-04-27T19:18:00", - "2026-04-27T19:19:00", - "2026-04-27T19:20:00", - "2026-04-27T19:21:00", - "2026-04-27T19:22:00", - "2026-04-27T19:23:00", - "2026-04-27T19:24:00", - "2026-04-27T19:25:00", - "2026-04-27T19:26:00", - "2026-04-27T19:27:00", - "2026-04-27T19:28:00", - "2026-04-27T19:29:00", - "2026-04-27T19:30:00", - "2026-04-27T19:31:00", - "2026-04-27T19:32:00", - "2026-04-27T19:33:00", - "2026-04-27T19:35:00", - "2026-04-27T19:36:00", - "2026-04-27T19:37:00", - "2026-04-27T19:38:00", - "2026-04-27T19:39:00", - "2026-04-27T19:40:00", - "2026-04-27T19:41:00", - "2026-04-27T19:42:00", - "2026-04-27T19:43:00", - "2026-04-27T19:44:00", - "2026-04-27T19:45:00", - "2026-04-27T19:46:00", - "2026-04-27T19:47:00", - "2026-04-27T19:48:00", - "2026-04-27T19:49:00", - "2026-04-27T19:50:00", - "2026-04-27T19:51:00", - "2026-04-27T19:52:00", - "2026-04-27T19:55:00", - "2026-04-27T19:56:00", - "2026-04-27T19:57:00", - "2026-04-27T19:59:00", - "2026-04-27T20:00:00", - "2026-04-27T20:01:00", - "2026-04-27T20:03:00", - "2026-04-27T20:04:00", - "2026-04-27T20:05:00", - "2026-04-27T20:06:00", - "2026-04-27T20:07:00", - "2026-04-27T20:08:00", - "2026-04-27T20:09:00", - "2026-04-27T20:10:00", - "2026-04-27T20:11:00", - "2026-04-27T20:12:00", - "2026-04-27T20:13:00", - "2026-04-27T20:14:00", - "2026-04-27T20:15:00", - "2026-04-27T20:16:00", - "2026-04-27T20:17:00", - "2026-04-27T20:20:00", - "2026-04-27T20:21:00", - "2026-04-27T20:22:00", - "2026-04-27T20:26:00", - "2026-04-27T20:27:00", - "2026-04-27T20:30:00", - "2026-04-27T20:31:00", - "2026-04-27T20:32:00", - "2026-04-27T20:33:00", - "2026-04-27T20:34:00", - "2026-04-27T20:35:00", - "2026-04-27T20:36:00", - "2026-04-27T20:37:00", - "2026-04-27T20:38:00", - "2026-04-27T20:39:00", - "2026-04-27T20:40:00", - "2026-04-27T20:44:00", - "2026-04-27T20:45:00", - "2026-04-27T20:46:00", - "2026-04-27T20:52:00", - "2026-04-27T20:54:00", - "2026-04-27T20:58:00", - "2026-04-27T20:59:00", - "2026-04-27T21:00:00", - "2026-04-27T21:01:00", - "2026-04-27T21:02:00", - "2026-04-27T21:03:00", - "2026-04-27T21:04:00", - "2026-04-27T21:05:00", - "2026-04-27T21:06:00", - "2026-04-27T21:07:00", - "2026-04-27T21:08:00", - "2026-04-27T21:09:00", - "2026-04-27T21:10:00", - "2026-04-27T21:11:00", - "2026-04-27T21:12:00", - "2026-04-27T21:15:00", - "2026-04-27T21:16:00", - "2026-04-27T21:17:00", - "2026-04-27T21:18:00", - "2026-04-27T21:19:00", - "2026-04-27T21:20:00", - "2026-04-27T21:29:00", - "2026-04-27T21:30:00", - "2026-04-27T21:32:00", - "2026-04-27T21:33:00", - "2026-04-27T21:34:00", - "2026-04-27T21:36:00", - "2026-04-27T21:37:00", - "2026-04-27T21:38:00", - "2026-04-27T21:40:00", - "2026-04-27T21:41:00", - "2026-04-27T21:42:00", - "2026-04-27T21:43:00", - "2026-04-27T21:44:00", - "2026-04-27T21:45:00", - "2026-04-27T21:46:00", - "2026-04-27T21:47:00", - "2026-04-27T21:48:00", - "2026-04-27T21:50:00", - "2026-04-27T21:51:00", - "2026-04-27T21:52:00", - "2026-04-27T21:53:00", - "2026-04-27T21:54:00", - "2026-04-27T21:55:00", - "2026-04-27T21:56:00", - "2026-04-27T21:59:00", - "2026-04-27T22:00:00", - "2026-04-27T22:01:00", - "2026-04-27T22:02:00", - "2026-04-27T22:03:00", - "2026-04-27T22:04:00", - "2026-04-27T22:05:00", - "2026-04-27T22:06:00", - "2026-04-27T22:07:00", - "2026-04-27T22:08:00", - "2026-04-27T22:09:00", - "2026-04-27T22:10:00", - "2026-04-27T22:11:00", - "2026-04-27T22:12:00", - "2026-04-27T22:15:00", - "2026-04-27T22:16:00", - "2026-04-27T22:17:00", - "2026-04-27T22:20:00", - "2026-04-27T22:21:00", - "2026-04-27T22:23:00", - "2026-04-27T22:24:00", - "2026-04-27T22:28:00", - "2026-04-27T22:29:00", - "2026-04-27T22:30:00", - "2026-04-27T22:31:00", - "2026-04-27T22:32:00", - "2026-04-27T22:33:00", - "2026-04-27T22:34:00", - "2026-04-27T22:35:00", - "2026-04-27T22:36:00", - "2026-04-27T22:38:00", - "2026-04-27T22:44:00", - "2026-04-27T22:45:00", - "2026-04-27T22:48:00", - "2026-04-27T22:49:00", - "2026-04-27T22:50:00", - "2026-04-27T22:51:00", - "2026-04-27T22:52:00", - "2026-04-27T22:55:00", - "2026-04-27T22:56:00", - "2026-04-27T22:58:00", - "2026-04-27T22:59:00", - "2026-04-27T23:00:00", - "2026-04-27T23:02:00", - "2026-04-27T23:04:00", - "2026-04-27T23:05:00", - "2026-04-27T23:06:00", - "2026-04-27T23:07:00", - "2026-04-27T23:09:00", - "2026-04-27T23:10:00", - "2026-04-27T23:11:00", - "2026-04-27T23:12:00", - "2026-04-27T23:13:00", - "2026-04-27T23:16:00", - "2026-04-27T23:17:00", - "2026-04-27T23:18:00", - "2026-04-27T23:19:00", - "2026-04-27T23:20:00", - "2026-04-27T23:23:00", - "2026-04-27T23:24:00", - "2026-04-27T23:25:00", - "2026-04-27T23:26:00", - "2026-04-27T23:28:00", - "2026-04-27T23:29:00", - "2026-04-27T23:31:00", - "2026-04-27T23:32:00", - "2026-04-27T23:33:00", - "2026-04-27T23:35:00", - "2026-04-27T23:36:00", - "2026-04-27T23:37:00", - "2026-04-27T23:38:00", - "2026-04-27T23:39:00", - "2026-04-27T23:40:00", - "2026-04-27T23:41:00", - "2026-04-27T23:42:00", - "2026-04-27T23:43:00", - "2026-04-27T23:44:00", - "2026-04-27T23:45:00", - "2026-04-27T23:46:00", - "2026-04-27T23:47:00", - "2026-04-27T23:48:00", - "2026-04-27T23:49:00", - "2026-04-27T23:50:00", - "2026-04-27T23:51:00", - "2026-04-27T23:52:00", - "2026-04-27T23:53:00", - "2026-04-27T23:54:00", - "2026-04-27T23:55:00", - "2026-04-27T23:56:00", - "2026-04-27T23:57:00", - "2026-04-27T23:58:00", - "2026-04-28T00:00:00", - "2026-04-28T00:01:00", - "2026-04-28T00:03:00", - "2026-04-28T00:04:00", - "2026-04-28T00:05:00", - "2026-04-28T00:06:00", - "2026-04-28T00:07:00", - "2026-04-28T00:09:00", - "2026-04-28T00:10:00", - "2026-04-28T00:11:00", - "2026-04-28T00:12:00", - "2026-04-28T00:13:00", - "2026-04-28T00:14:00", - "2026-04-28T00:15:00", - "2026-04-28T00:16:00", - "2026-04-28T00:17:00", - "2026-04-28T00:18:00", - "2026-04-28T00:19:00", - "2026-04-28T00:20:00", - "2026-04-28T00:21:00", - "2026-04-28T00:23:00", - "2026-04-28T00:24:00", - "2026-04-28T00:26:00", - "2026-04-28T00:27:00", - "2026-04-28T00:28:00", - "2026-04-28T00:30:00", - "2026-04-28T00:33:00", - "2026-04-28T00:34:00", - "2026-04-28T00:35:00", - "2026-04-28T00:37:00", - "2026-04-28T00:39:00", - "2026-04-28T00:40:00", - "2026-04-28T00:41:00", - "2026-04-28T00:42:00", - "2026-04-28T00:43:00", - "2026-04-28T00:44:00", - "2026-04-28T00:45:00", - "2026-04-28T00:46:00", - "2026-04-28T00:47:00", - "2026-04-28T00:48:00", - "2026-04-28T00:49:00", - "2026-04-28T00:50:00", - "2026-04-28T00:51:00", - "2026-04-28T00:52:00", - "2026-04-28T00:56:00", - "2026-04-28T00:57:00", - "2026-04-28T00:58:00", - "2026-04-28T00:59:00", - "2026-04-28T01:00:00", - "2026-04-28T01:02:00", - "2026-04-28T01:04:00", - "2026-04-28T01:06:00", - "2026-04-28T01:07:00", - "2026-04-28T01:08:00", - "2026-04-28T01:09:00", - "2026-04-28T01:10:00", - "2026-04-28T01:11:00", - "2026-04-28T01:12:00", - "2026-04-28T01:13:00", - "2026-04-28T01:14:00", - "2026-04-28T01:15:00", - "2026-04-28T01:16:00", - "2026-04-28T01:17:00", - "2026-04-28T01:18:00", - "2026-04-28T01:19:00", - "2026-04-28T01:20:00", - "2026-04-28T01:21:00", - "2026-04-28T01:22:00", - "2026-04-28T01:23:00", - "2026-04-28T01:24:00", - "2026-04-28T01:25:00", - "2026-04-28T01:26:00", - "2026-04-28T01:27:00", - "2026-04-28T01:28:00", - "2026-04-28T01:29:00", - "2026-04-28T01:30:00", - "2026-04-28T01:31:00", - "2026-04-28T01:32:00", - "2026-04-28T01:33:00", - "2026-04-28T01:34:00", - "2026-04-28T01:35:00", - "2026-04-28T01:36:00", - "2026-04-28T01:37:00", - "2026-04-28T01:38:00", - "2026-04-28T01:39:00", - "2026-04-28T01:40:00", - "2026-04-28T01:41:00", - "2026-04-28T01:42:00", - "2026-04-28T01:43:00", - "2026-04-28T01:44:00", - "2026-04-28T01:45:00", - "2026-04-28T01:46:00", - "2026-04-28T01:47:00", - "2026-04-28T01:48:00", - "2026-04-28T01:49:00", - "2026-04-28T01:50:00", - "2026-04-28T01:51:00", - "2026-04-28T01:52:00", - "2026-04-28T01:53:00", - "2026-04-28T01:54:00", - "2026-04-28T01:55:00", - "2026-04-28T01:56:00", - "2026-04-28T01:57:00", - "2026-04-28T01:58:00", - "2026-04-28T01:59:00", - "2026-04-28T02:00:00", - "2026-04-28T02:01:00", - "2026-04-28T02:02:00", - "2026-04-28T02:03:00", - "2026-04-28T02:04:00", - "2026-04-28T02:05:00", - "2026-04-28T02:06:00", - "2026-04-28T02:07:00", - "2026-04-28T02:09:00", - "2026-04-28T02:10:00", - "2026-04-28T02:12:00", - "2026-04-28T02:15:00", - "2026-04-28T02:16:00", - "2026-04-28T02:17:00", - "2026-04-28T02:19:00", - "2026-04-28T02:20:00", - "2026-04-28T02:22:00", - "2026-04-28T02:24:00", - "2026-04-28T02:25:00", - "2026-04-28T02:26:00", - "2026-04-28T02:27:00", - "2026-04-28T02:28:00", - "2026-04-28T02:29:00", - "2026-04-28T02:30:00", - "2026-04-28T02:31:00", - "2026-04-28T02:32:00", - "2026-04-28T02:33:00", - "2026-04-28T02:34:00", - "2026-04-28T02:35:00", - "2026-04-28T02:36:00", - "2026-04-28T02:37:00", - "2026-04-28T02:38:00", - "2026-04-28T02:39:00", - "2026-04-28T02:40:00", - "2026-04-28T02:41:00", - "2026-04-28T02:42:00", - "2026-04-28T02:43:00", - "2026-04-28T02:44:00", - "2026-04-28T02:45:00", - "2026-04-28T02:46:00", - "2026-04-28T02:48:00", - "2026-04-28T02:49:00", - "2026-04-28T02:50:00", - "2026-04-28T02:51:00", - "2026-04-28T02:52:00", - "2026-04-28T02:53:00", - "2026-04-28T02:54:00", - "2026-04-28T02:55:00", - "2026-04-28T02:57:00", - "2026-04-28T02:58:00", - "2026-04-28T02:59:00", - "2026-04-28T03:00:00", - "2026-04-28T03:01:00", - "2026-04-28T03:02:00", - "2026-04-28T03:03:00", - "2026-04-28T03:04:00", - "2026-04-28T03:05:00", - "2026-04-28T03:06:00", - "2026-04-28T03:07:00", - "2026-04-28T03:08:00", - "2026-04-28T03:09:00", - "2026-04-28T03:10:00", - "2026-04-28T03:11:00", - "2026-04-28T03:12:00", - "2026-04-28T03:13:00", - "2026-04-28T03:15:00", - "2026-04-28T03:17:00", - "2026-04-28T03:18:00", - "2026-04-28T03:19:00", - "2026-04-28T03:20:00", - "2026-04-28T03:22:00", - "2026-04-28T03:23:00", - "2026-04-28T03:24:00", - "2026-04-28T03:26:00", - "2026-04-28T03:28:00", - "2026-04-28T03:29:00", - "2026-04-28T03:30:00", - "2026-04-28T03:31:00", - "2026-04-28T03:34:00", - "2026-04-28T03:35:00", - "2026-04-28T03:36:00", - "2026-04-28T03:37:00", - "2026-04-28T03:38:00", - "2026-04-28T03:39:00", - "2026-04-28T03:40:00", - "2026-04-28T03:41:00", - "2026-04-28T03:44:00", - "2026-04-28T03:45:00", - "2026-04-28T03:46:00", - "2026-04-28T03:50:00", - "2026-04-28T03:51:00", - "2026-04-28T03:54:00", - "2026-04-28T03:57:00", - "2026-04-28T04:01:00", - "2026-04-28T04:02:00", - "2026-04-28T04:06:00", - "2026-04-28T04:08:00", - "2026-04-28T04:10:00", - "2026-04-28T04:11:00", - "2026-04-28T04:12:00", - "2026-04-28T04:14:00", - "2026-04-28T04:15:00", - "2026-04-28T04:16:00", - "2026-04-28T04:17:00", - "2026-04-28T04:18:00", - "2026-04-28T04:19:00", - "2026-04-28T04:20:00", - "2026-04-28T04:21:00", - "2026-04-28T04:23:00", - "2026-04-28T04:24:00", - "2026-04-28T04:25:00", - "2026-04-28T04:26:00", - "2026-04-28T04:30:00", - "2026-04-28T04:32:00", - "2026-04-28T04:33:00", - "2026-04-28T04:34:00", - "2026-04-28T04:35:00", - "2026-04-28T04:36:00", - "2026-04-28T04:37:00", - "2026-04-28T04:40:00", - "2026-04-28T04:41:00", - "2026-04-28T04:42:00", - "2026-04-28T04:43:00", - "2026-04-28T04:46:00", - "2026-04-28T04:50:00", - "2026-04-28T04:51:00", - "2026-04-28T04:56:00", - "2026-04-28T04:57:00", - "2026-04-28T04:58:00", - "2026-04-28T04:59:00", - "2026-04-28T05:00:00", - "2026-04-28T05:03:00", - "2026-04-28T05:04:00", - "2026-04-28T05:05:00", - "2026-04-28T05:06:00", - "2026-04-28T05:07:00", - "2026-04-28T05:08:00", - "2026-04-28T05:09:00", - "2026-04-28T05:10:00", - "2026-04-28T05:11:00", - "2026-04-28T05:12:00", - "2026-04-28T05:13:00", - "2026-04-28T05:14:00", - "2026-04-28T05:17:00", - "2026-04-28T05:18:00", - "2026-04-28T05:19:00", - "2026-04-28T05:23:00", - "2026-04-28T05:24:00", - "2026-04-28T05:26:00", - "2026-04-28T05:28:00", - "2026-04-28T05:29:00", - "2026-04-28T05:30:00", - "2026-04-28T05:31:00", - "2026-04-28T05:32:00", - "2026-04-28T05:34:00", - "2026-04-28T05:35:00", - "2026-04-28T05:36:00", - "2026-04-28T05:38:00", - "2026-04-28T05:39:00", - "2026-04-28T05:40:00", - "2026-04-28T05:41:00", - "2026-04-28T05:42:00", - "2026-04-28T05:45:00", - "2026-04-28T05:48:00", - "2026-04-28T05:49:00", - "2026-04-28T05:51:00", - "2026-04-28T05:52:00", - "2026-04-28T05:54:00", - "2026-04-28T05:56:00", - "2026-04-28T05:59:00", - "2026-04-28T06:00:00", - "2026-04-28T06:02:00", - "2026-04-28T06:03:00", - "2026-04-28T06:04:00", - "2026-04-28T06:06:00", - "2026-04-28T06:08:00", - "2026-04-28T06:09:00", - "2026-04-28T06:10:00", - "2026-04-28T06:11:00", - "2026-04-28T06:12:00", - "2026-04-28T06:13:00", - "2026-04-28T06:14:00", - "2026-04-28T06:15:00", - "2026-04-28T06:16:00", - "2026-04-28T06:18:00", - "2026-04-28T06:20:00", - "2026-04-28T06:21:00", - "2026-04-28T06:22:00", - "2026-04-28T06:23:00", - "2026-04-28T06:24:00", - "2026-04-28T06:25:00", - "2026-04-28T06:26:00", - "2026-04-28T06:27:00", - "2026-04-28T06:28:00", - "2026-04-28T06:30:00", - "2026-04-28T06:31:00", - "2026-04-28T06:32:00", - "2026-04-28T06:34:00", - "2026-04-28T06:36:00", - "2026-04-28T06:37:00", - "2026-04-28T06:38:00", - "2026-04-28T06:39:00", - "2026-04-28T06:40:00", - "2026-04-28T06:41:00", - "2026-04-28T06:42:00", - "2026-04-28T06:43:00", - "2026-04-28T06:44:00", - "2026-04-28T06:45:00", - "2026-04-28T06:46:00", - "2026-04-28T06:47:00", - "2026-04-28T06:48:00", - "2026-04-28T06:49:00", - "2026-04-28T06:50:00", - "2026-04-28T06:52:00", - "2026-04-28T06:54:00", - "2026-04-28T06:55:00", - "2026-04-28T06:56:00", - "2026-04-28T06:57:00", - "2026-04-28T06:58:00", - "2026-04-28T06:59:00", - "2026-04-28T07:00:00", - "2026-04-28T07:01:00", - "2026-04-28T07:02:00", - "2026-04-28T07:03:00", - "2026-04-28T07:04:00", - "2026-04-28T07:05:00", - "2026-04-28T07:06:00", - "2026-04-28T07:07:00", - "2026-04-28T07:09:00", - "2026-04-28T07:10:00", - "2026-04-28T07:12:00", - "2026-04-28T07:13:00", - "2026-04-28T07:14:00", - "2026-04-28T07:15:00", - "2026-04-28T07:16:00", - "2026-04-28T07:17:00", - "2026-04-28T07:18:00", - "2026-04-28T07:19:00", - "2026-04-28T07:20:00", - "2026-04-28T07:21:00", - "2026-04-28T07:22:00", - "2026-04-28T07:23:00", - "2026-04-28T07:24:00", - "2026-04-28T07:27:00", - "2026-04-28T07:28:00", - "2026-04-28T07:29:00", - "2026-04-28T07:31:00", - "2026-04-28T07:34:00", - "2026-04-28T07:36:00", - "2026-04-28T07:37:00", - "2026-04-28T07:39:00", - "2026-04-28T07:41:00", - "2026-04-28T07:42:00", - "2026-04-28T07:43:00", - "2026-04-28T07:45:00", - "2026-04-28T07:46:00", - "2026-04-28T07:47:00", - "2026-04-28T07:48:00", - "2026-04-28T07:49:00", - "2026-04-28T07:54:00", - "2026-04-28T07:55:00", - "2026-04-28T07:58:00", - "2026-04-28T08:00:00", - "2026-04-28T08:01:00", - "2026-04-28T08:02:00", - "2026-04-28T08:03:00", - "2026-04-28T08:04:00", - "2026-04-28T08:06:00", - "2026-04-28T08:09:00", - "2026-04-28T08:10:00", - "2026-04-28T08:11:00", - "2026-04-28T08:13:00", - "2026-04-28T08:14:00", - "2026-04-28T08:16:00", - "2026-04-28T08:17:00", - "2026-04-28T08:18:00", - "2026-04-28T08:19:00", - "2026-04-28T08:21:00", - "2026-04-28T08:22:00", - "2026-04-28T08:23:00", - "2026-04-28T08:24:00", - "2026-04-28T08:25:00", - "2026-04-28T08:26:00", - "2026-04-28T08:29:00", - "2026-04-28T08:30:00", - "2026-04-28T08:32:00", - "2026-04-28T08:33:00", - "2026-04-28T08:34:00", - "2026-04-28T08:35:00", - "2026-04-28T08:38:00", - "2026-04-28T08:39:00", - "2026-04-28T08:40:00", - "2026-04-28T08:41:00", - "2026-04-28T08:42:00", - "2026-04-28T08:43:00", - "2026-04-28T08:45:00", - "2026-04-28T08:46:00", - "2026-04-28T08:47:00", - "2026-04-28T08:48:00", - "2026-04-28T08:49:00", - "2026-04-28T08:50:00", - "2026-04-28T08:51:00", - "2026-04-28T08:54:00", - "2026-04-28T08:58:00", - "2026-04-28T08:59:00", - "2026-04-28T09:00:00", - "2026-04-28T09:01:00", - "2026-04-28T09:02:00", - "2026-04-28T09:03:00", - "2026-04-28T09:07:00", - "2026-04-28T09:10:00", - "2026-04-28T09:11:00", - "2026-04-28T09:12:00", - "2026-04-28T09:13:00", - "2026-04-28T09:15:00", - "2026-04-28T09:16:00", - "2026-04-28T09:19:00", - "2026-04-28T09:20:00", - "2026-04-28T09:21:00", - "2026-04-28T09:22:00", - "2026-04-28T09:23:00", - "2026-04-28T09:25:00", - "2026-04-28T09:26:00", - "2026-04-28T09:30:00", - "2026-04-28T09:31:00", - "2026-04-28T09:32:00", - "2026-04-28T09:33:00", - "2026-04-28T09:34:00", - "2026-04-28T09:35:00", - "2026-04-28T09:36:00", - "2026-04-28T09:38:00", - "2026-04-28T09:40:00", - "2026-04-28T09:42:00", - "2026-04-28T09:43:00", - "2026-04-28T09:44:00", - "2026-04-28T09:45:00", - "2026-04-28T09:46:00", - "2026-04-28T09:47:00", - "2026-04-28T09:48:00", - "2026-04-28T09:49:00", - "2026-04-28T09:50:00", - "2026-04-28T09:51:00", - "2026-04-28T09:52:00", - "2026-04-28T09:55:00", - "2026-04-28T09:56:00", - "2026-04-28T09:57:00", - "2026-04-28T10:01:00", - "2026-04-28T10:02:00", - "2026-04-28T10:03:00", - "2026-04-28T10:04:00", - "2026-04-28T10:05:00", - "2026-04-28T10:06:00", - "2026-04-28T10:07:00", - "2026-04-28T10:08:00", - "2026-04-28T10:09:00", - "2026-04-28T10:10:00", - "2026-04-28T10:11:00", - "2026-04-28T10:13:00", - "2026-04-28T10:14:00", - "2026-04-28T10:15:00", - "2026-04-28T10:16:00", - "2026-04-28T10:17:00", - "2026-04-28T10:18:00", - "2026-04-28T10:19:00", - "2026-04-28T10:20:00", - "2026-04-28T10:21:00", - "2026-04-28T10:22:00", - "2026-04-28T10:23:00", - "2026-04-28T10:24:00", - "2026-04-28T10:25:00", - "2026-04-28T10:27:00", - "2026-04-28T10:31:00", - "2026-04-28T10:32:00", - "2026-04-28T10:34:00", - "2026-04-28T10:35:00", - "2026-04-28T10:38:00", - "2026-04-28T10:39:00", - "2026-04-28T10:40:00", - "2026-04-28T10:42:00", - "2026-04-28T10:43:00", - "2026-04-28T10:47:00", - "2026-04-28T10:48:00", - "2026-04-28T10:51:00", - "2026-04-28T10:56:00", - "2026-04-28T10:57:00", - "2026-04-28T11:00:00", - "2026-04-28T11:01:00", - "2026-04-28T11:02:00", - "2026-04-28T11:03:00", - "2026-04-28T11:04:00", - "2026-04-28T11:05:00", - "2026-04-28T11:06:00", - "2026-04-28T11:07:00", - "2026-04-28T11:08:00", - "2026-04-28T11:09:00", - "2026-04-28T11:10:00", - "2026-04-28T11:11:00", - "2026-04-28T11:12:00", - "2026-04-28T11:13:00", - "2026-04-28T11:15:00", - "2026-04-28T11:16:00", - "2026-04-28T11:17:00", - "2026-04-28T11:18:00", - "2026-04-28T11:19:00", - "2026-04-28T11:21:00", - "2026-04-28T11:22:00", - "2026-04-28T11:23:00", - "2026-04-28T11:24:00", - "2026-04-28T11:25:00", - "2026-04-28T11:26:00", - "2026-04-28T11:27:00", - "2026-04-28T11:28:00", - "2026-04-28T11:29:00", - "2026-04-28T11:30:00", - "2026-04-28T11:31:00", - "2026-04-28T11:32:00", - "2026-04-28T11:33:00", - "2026-04-28T11:35:00", - "2026-04-28T11:36:00", - "2026-04-28T11:37:00", - "2026-04-28T11:38:00", - "2026-04-28T11:39:00", - "2026-04-28T11:40:00", - "2026-04-28T11:41:00", - "2026-04-28T11:44:00", - "2026-04-28T11:45:00", - "2026-04-28T11:46:00", - "2026-04-28T11:47:00", - "2026-04-28T11:48:00", - "2026-04-28T11:49:00", - "2026-04-28T11:50:00", - "2026-04-28T11:51:00", - "2026-04-28T11:52:00", - "2026-04-28T11:53:00", - "2026-04-28T11:54:00", - "2026-04-28T11:55:00", - "2026-04-28T11:56:00", - "2026-04-28T11:57:00", - "2026-04-28T11:59:00", - "2026-04-28T12:00:00", - "2026-04-28T12:01:00", - "2026-04-28T12:02:00", - "2026-04-28T12:03:00", - "2026-04-28T12:04:00", - "2026-04-28T12:05:00", - "2026-04-28T12:06:00", - "2026-04-28T12:07:00", - "2026-04-28T12:09:00", - "2026-04-28T12:10:00", - "2026-04-28T12:11:00", - "2026-04-28T12:12:00", - "2026-04-28T12:13:00", - "2026-04-28T12:14:00", - "2026-04-28T12:15:00", - "2026-04-28T12:16:00", - "2026-04-28T12:18:00", - "2026-04-28T12:19:00", - "2026-04-28T12:20:00", - "2026-04-28T12:21:00", - "2026-04-28T12:22:00", - "2026-04-28T12:23:00", - "2026-04-28T12:24:00", - "2026-04-28T12:25:00", - "2026-04-28T12:26:00", - "2026-04-28T12:29:00", - "2026-04-28T12:30:00", - "2026-04-28T12:31:00", - "2026-04-28T12:33:00", - "2026-04-28T12:34:00", - "2026-04-28T12:35:00", - "2026-04-28T12:36:00", - "2026-04-28T12:38:00", - "2026-04-28T12:40:00", - "2026-04-28T12:41:00", - "2026-04-28T12:42:00", - "2026-04-28T12:43:00", - "2026-04-28T12:44:00", - "2026-04-28T12:45:00", - "2026-04-28T12:46:00", - "2026-04-28T12:48:00", - "2026-04-28T12:49:00", - "2026-04-28T12:51:00", - "2026-04-28T12:52:00", - "2026-04-28T12:53:00", - "2026-04-28T12:54:00", - "2026-04-28T12:57:00", - "2026-04-28T13:00:00", - "2026-04-28T13:01:00", - "2026-04-28T13:02:00", - "2026-04-28T13:03:00", - "2026-04-28T13:04:00", - "2026-04-28T13:05:00", - "2026-04-28T13:06:00", - "2026-04-28T13:07:00", - "2026-04-28T13:08:00", - "2026-04-28T13:09:00", - "2026-04-28T13:10:00", - "2026-04-28T13:11:00", - "2026-04-28T13:12:00", - "2026-04-28T13:13:00", - "2026-04-28T13:14:00", - "2026-04-28T13:15:00", - "2026-04-28T13:16:00", - "2026-04-28T13:17:00", - "2026-04-28T13:18:00", - "2026-04-28T13:19:00", - "2026-04-28T13:20:00", - "2026-04-28T13:21:00", - "2026-04-28T13:22:00", - "2026-04-28T13:23:00", - "2026-04-28T13:24:00", - "2026-04-28T13:25:00", - "2026-04-28T13:26:00", - "2026-04-28T13:27:00", - "2026-04-28T13:28:00", - "2026-04-28T13:29:00", - "2026-04-28T13:30:00", - "2026-04-28T13:31:00", - "2026-04-28T13:32:00", - "2026-04-28T13:33:00", - "2026-04-28T13:34:00", - "2026-04-28T13:35:00", - "2026-04-28T13:36:00", - "2026-04-28T13:37:00", - "2026-04-28T13:38:00", - "2026-04-28T13:39:00", - "2026-04-28T13:40:00", - "2026-04-28T13:41:00", - "2026-04-28T13:42:00", - "2026-04-28T13:43:00", - "2026-04-28T13:44:00", - "2026-04-28T13:45:00", - "2026-04-28T13:46:00", - "2026-04-28T13:47:00", - "2026-04-28T13:48:00", - "2026-04-28T13:49:00", - "2026-04-28T13:50:00", - "2026-04-28T13:51:00", - "2026-04-28T13:52:00", - "2026-04-28T13:53:00", - "2026-04-28T13:54:00", - "2026-04-28T13:55:00", - "2026-04-28T13:56:00", - "2026-04-28T13:57:00", - "2026-04-28T13:58:00", - "2026-04-28T13:59:00", - "2026-04-28T14:00:00", - "2026-04-28T14:01:00", - "2026-04-28T14:02:00", - "2026-04-28T14:04:00", - "2026-04-28T14:05:00", - "2026-04-28T14:06:00", - "2026-04-28T14:07:00", - "2026-04-28T14:08:00", - "2026-04-28T14:09:00", - "2026-04-28T14:10:00", - "2026-04-28T14:11:00", - "2026-04-28T14:12:00", - "2026-04-28T14:13:00", - "2026-04-28T14:14:00", - "2026-04-28T14:15:00", - "2026-04-28T14:16:00", - "2026-04-28T14:17:00", - "2026-04-28T14:18:00", - "2026-04-28T14:19:00", - "2026-04-28T14:21:00", - "2026-04-28T14:22:00", - "2026-04-28T14:23:00", - "2026-04-28T14:24:00", - "2026-04-28T14:25:00", - "2026-04-28T14:26:00", - "2026-04-28T14:27:00", - "2026-04-28T14:28:00", - "2026-04-28T14:29:00", - "2026-04-28T14:30:00", - "2026-04-28T14:31:00", - "2026-04-28T14:32:00", - "2026-04-28T14:33:00", - "2026-04-28T14:34:00", - "2026-04-28T14:35:00", - "2026-04-28T14:36:00", - "2026-04-28T14:37:00", - "2026-04-28T14:38:00", - "2026-04-28T14:39:00", - "2026-04-28T14:40:00", - "2026-04-28T14:41:00", - "2026-04-28T14:42:00", - "2026-04-28T14:43:00", - "2026-04-28T14:44:00", - "2026-04-28T14:45:00", - "2026-04-28T14:46:00", - "2026-04-28T14:47:00", - "2026-04-28T14:48:00", - "2026-04-28T14:49:00", - "2026-04-28T14:50:00", - "2026-04-28T14:51:00", - "2026-04-28T14:52:00", - "2026-04-28T14:53:00", - "2026-04-28T14:54:00", - "2026-04-28T14:55:00", - "2026-04-28T14:56:00", - "2026-04-28T14:57:00", - "2026-04-28T14:58:00", - "2026-04-28T14:59:00", - "2026-04-28T15:00:00", - "2026-04-28T15:01:00", - "2026-04-28T15:02:00", - "2026-04-28T15:03:00", - "2026-04-28T15:05:00", - "2026-04-28T15:06:00", - "2026-04-28T15:07:00", - "2026-04-28T15:08:00", - "2026-04-28T15:09:00", - "2026-04-28T15:10:00", - "2026-04-28T15:11:00", - "2026-04-28T15:12:00", - "2026-04-28T15:13:00", - "2026-04-28T15:14:00", - "2026-04-28T15:15:00", - "2026-04-28T15:16:00", - "2026-04-28T15:17:00", - "2026-04-28T15:18:00", - "2026-04-28T15:19:00", - "2026-04-28T15:20:00", - "2026-04-28T15:21:00", - "2026-04-28T15:22:00", - "2026-04-28T15:23:00", - "2026-04-28T15:24:00", - "2026-04-28T15:25:00", - "2026-04-28T15:26:00", - "2026-04-28T15:27:00", - "2026-04-28T15:28:00", - "2026-04-28T15:29:00", - "2026-04-28T15:30:00", - "2026-04-28T15:31:00", - "2026-04-28T15:33:00", - "2026-04-28T15:34:00", - "2026-04-28T15:35:00", - "2026-04-28T15:37:00", - "2026-04-28T15:38:00", - "2026-04-28T15:39:00", - "2026-04-28T15:41:00", - "2026-04-28T15:42:00", - "2026-04-28T15:43:00", - "2026-04-28T15:44:00", - "2026-04-28T15:45:00", - "2026-04-28T15:46:00", - "2026-04-28T15:47:00", - "2026-04-28T15:48:00", - "2026-04-28T15:49:00", - "2026-04-28T15:50:00", - "2026-04-28T15:51:00", - "2026-04-28T15:52:00", - "2026-04-28T15:53:00", - "2026-04-28T15:54:00", - "2026-04-28T15:55:00", - "2026-04-28T15:56:00", - "2026-04-28T15:57:00", - "2026-04-28T15:58:00", - "2026-04-28T15:59:00", - "2026-04-28T16:00:00", - "2026-04-28T16:01:00", - "2026-04-28T16:02:00", - "2026-04-28T16:03:00", - "2026-04-28T16:04:00", - "2026-04-28T16:05:00", - "2026-04-28T16:06:00", - "2026-04-28T16:07:00", - "2026-04-28T16:08:00", - "2026-04-28T16:09:00", - "2026-04-28T16:10:00", - "2026-04-28T16:11:00", - "2026-04-28T16:12:00", - "2026-04-28T16:14:00", - "2026-04-28T16:15:00", - "2026-04-28T16:16:00", - "2026-04-28T16:18:00", - "2026-04-28T16:20:00", - "2026-04-28T16:21:00", - "2026-04-28T16:23:00", - "2026-04-28T16:24:00", - "2026-04-28T16:25:00", - "2026-04-28T16:26:00", - "2026-04-28T16:27:00", - "2026-04-28T16:28:00", - "2026-04-28T16:29:00", - "2026-04-28T16:30:00", - "2026-04-28T16:31:00", - "2026-04-28T16:32:00", - "2026-04-28T16:33:00", - "2026-04-28T16:34:00", - "2026-04-28T16:35:00", - "2026-04-28T16:36:00", - "2026-04-28T16:37:00", - "2026-04-28T16:39:00", - "2026-04-28T16:42:00", - "2026-04-28T16:43:00", - "2026-04-28T16:45:00", - "2026-04-28T16:46:00", - "2026-04-28T16:47:00", - "2026-04-28T16:48:00", - "2026-04-28T16:49:00", - "2026-04-28T16:50:00", - "2026-04-28T16:51:00", - "2026-04-28T16:52:00", - "2026-04-28T16:53:00", - "2026-04-28T16:54:00", - "2026-04-28T16:55:00", - "2026-04-28T16:56:00", - "2026-04-28T16:57:00", - "2026-04-28T16:58:00", - "2026-04-28T16:59:00", - "2026-04-28T17:00:00", - "2026-04-28T17:01:00", - "2026-04-28T17:02:00", - "2026-04-28T17:03:00", - "2026-04-28T17:04:00", - "2026-04-28T17:05:00", - "2026-04-28T17:06:00", - "2026-04-28T17:08:00", - "2026-04-28T17:10:00", - "2026-04-28T17:11:00", - "2026-04-28T17:12:00", - "2026-04-28T17:13:00", - "2026-04-28T17:14:00", - "2026-04-28T17:15:00", - "2026-04-28T17:16:00", - "2026-04-28T17:18:00", - "2026-04-28T17:19:00", - "2026-04-28T17:21:00", - "2026-04-28T17:22:00", - "2026-04-28T17:23:00", - "2026-04-28T17:24:00", - "2026-04-28T17:25:00", - "2026-04-28T17:27:00", - "2026-04-28T17:28:00", - "2026-04-28T17:29:00", - "2026-04-28T17:30:00", - "2026-04-28T17:31:00", - "2026-04-28T17:33:00", - "2026-04-28T17:34:00", - "2026-04-28T17:35:00", - "2026-04-28T17:36:00", - "2026-04-28T17:37:00", - "2026-04-28T17:38:00", - "2026-04-28T17:39:00", - "2026-04-28T17:40:00", - "2026-04-28T17:41:00", - "2026-04-28T17:42:00", - "2026-04-28T17:43:00", - "2026-04-28T17:44:00", - "2026-04-28T17:45:00", - "2026-04-28T17:46:00", - "2026-04-28T17:47:00", - "2026-04-28T17:48:00", - "2026-04-28T17:49:00", - "2026-04-28T17:50:00", - "2026-04-28T17:51:00", - "2026-04-28T17:52:00", - "2026-04-28T17:53:00", - "2026-04-28T17:54:00", - "2026-04-28T17:55:00", - "2026-04-28T17:56:00", - "2026-04-28T17:57:00", - "2026-04-28T17:58:00", - "2026-04-28T17:59:00", - "2026-04-28T18:00:00", - "2026-04-28T18:01:00", - "2026-04-28T18:02:00", - "2026-04-28T18:03:00", - "2026-04-28T18:04:00", - "2026-04-28T18:05:00", - "2026-04-28T18:06:00", - "2026-04-28T18:07:00", - "2026-04-28T18:08:00", - "2026-04-28T18:09:00", - "2026-04-28T18:10:00", - "2026-04-28T18:11:00", - "2026-04-28T18:12:00", - "2026-04-28T18:13:00", - "2026-04-28T18:14:00", - "2026-04-28T18:15:00", - "2026-04-28T18:16:00", - "2026-04-28T18:17:00", - "2026-04-28T18:18:00", - "2026-04-28T18:19:00", - "2026-04-28T18:20:00", - "2026-04-28T18:21:00", - "2026-04-28T18:22:00", - "2026-04-28T18:23:00", - "2026-04-28T18:24:00", - "2026-04-28T18:25:00", - "2026-04-28T18:26:00", - "2026-04-28T18:27:00", - "2026-04-28T18:28:00", - "2026-04-28T18:29:00", - "2026-04-28T18:30:00", - "2026-04-28T18:31:00", - "2026-04-28T18:32:00", - "2026-04-28T18:33:00", - "2026-04-28T18:34:00", - "2026-04-28T18:35:00", - "2026-04-28T18:36:00", - "2026-04-28T18:37:00", - "2026-04-28T18:38:00", - "2026-04-28T18:39:00", - "2026-04-28T18:40:00", - "2026-04-28T18:41:00", - "2026-04-28T18:42:00", - "2026-04-28T18:43:00", - "2026-04-28T18:44:00", - "2026-04-28T18:45:00", - "2026-04-28T18:46:00", - "2026-04-28T18:47:00", - "2026-04-28T18:48:00", - "2026-04-28T18:49:00", - "2026-04-28T18:50:00", - "2026-04-28T18:51:00", - "2026-04-28T18:52:00", - "2026-04-28T18:53:00", - "2026-04-28T18:54:00", - "2026-04-28T18:55:00", - "2026-04-28T18:56:00", - "2026-04-28T18:57:00", - "2026-04-28T18:58:00", - "2026-04-28T18:59:00", - "2026-04-28T19:00:00", - "2026-04-28T19:01:00", - "2026-04-28T19:02:00", - "2026-04-28T19:03:00", - "2026-04-28T19:04:00", - "2026-04-28T19:05:00", - "2026-04-28T19:06:00", - "2026-04-28T19:07:00", - "2026-04-28T19:08:00", - "2026-04-28T19:09:00", - "2026-04-28T19:10:00", - "2026-04-28T19:11:00", - "2026-04-28T19:12:00", - "2026-04-28T19:13:00", - "2026-04-28T19:14:00", - "2026-04-28T19:15:00", - "2026-04-28T19:18:00", - "2026-04-28T19:20:00", - "2026-04-28T19:21:00", - "2026-04-28T19:22:00", - "2026-04-28T19:23:00", - "2026-04-28T19:24:00", - "2026-04-28T19:26:00", - "2026-04-28T19:28:00", - "2026-04-28T19:29:00", - "2026-04-28T19:31:00", - "2026-04-28T19:32:00", - "2026-04-28T19:33:00", - "2026-04-28T19:40:00", - "2026-04-28T19:41:00", - "2026-04-28T19:42:00", - "2026-04-28T19:43:00", - "2026-04-28T19:44:00", - "2026-04-28T19:45:00", - "2026-04-28T19:46:00", - "2026-04-28T19:47:00", - "2026-04-28T19:48:00", - "2026-04-28T19:50:00", - "2026-04-28T19:51:00", - "2026-04-28T19:52:00", - "2026-04-28T19:53:00", - "2026-04-28T19:54:00", - "2026-04-28T19:55:00", - "2026-04-28T19:56:00", - "2026-04-28T19:57:00", - "2026-04-28T19:58:00", - "2026-04-28T19:59:00", - "2026-04-28T20:00:00", - "2026-04-28T20:01:00", - "2026-04-28T20:02:00", - "2026-04-28T20:03:00" - ], - "y": { - "bdata": "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", - "dtype": "f8" - } - }, - { - "name": "FR", - "type": "scatter", - "x": [ - "2026-04-28T20:00:01.015000", - "2026-04-28T19:00:01.022000", - "2026-04-28T18:00:00.794000", - "2026-04-28T17:00:01.104000", - "2026-04-28T16:00:00.740000", - "2026-04-28T15:00:01.229000", - "2026-04-28T14:00:01.023000", - "2026-04-28T13:00:00.343000", - "2026-04-28T12:00:01.027000", - "2026-04-28T11:00:00.342000", - "2026-04-28T10:00:00.342000", - "2026-04-28T09:00:00.343000", - "2026-04-28T08:00:00.675000", - "2026-04-28T07:00:01.013000", - "2026-04-28T06:00:00.343000", - "2026-04-28T05:00:01.013000", - "2026-04-28T04:00:01.028000", - "2026-04-28T03:00:01.018000", - "2026-04-28T02:00:01.019000", - "2026-04-28T01:00:01.032000", - "2026-04-28T00:00:01.026000", - "2026-04-27T23:00:01.011000", - "2026-04-27T22:00:00.342000", - "2026-04-27T21:00:00.342000", - "2026-04-27T20:00:00.722000", - "2026-04-27T19:00:00.934000", - "2026-04-27T18:00:01.025000", - "2026-04-27T17:00:01.012000", - "2026-04-27T16:00:00.343000" - ], - "y": { - "bdata": "je21oPfG0D7xaOOItfjkPrdfPlkxXN0+VOQQcXMqyT6N7bWg98bAvo3ttaD3xrC+P6vMlNbf4r7xaOOItfjUvlTkEHFzKtk+VOQQcXMq2T4/q8yU1t/iPlTkEHFzKtm+t18+WTFc7b5U5BBxcyrJvo3ttaD3xtA+8WjjiLX41L57hQX3Ax74vo3ttaD3xsC+VOQQcXMqyT6N7bWg98awvqIm+nyUEec+AAAAAAAAAAAFoidlUkPrPlTkEHFzKsm+AAAAAAAAAABU5BBxcyrJPmkdVU0Qde++t18+WTFc3b4FoidlUkPrPg==", - "dtype": "f8" - }, - "yaxis": "y2" - } - ], - "layout": { - "shapes": [ - { - "label": { - "font": { - "color": "white", - "size": 16 - }, - "text": "^ Ratio_Buy", - "textposition": "end" - }, - "line": { - "color": "white", - "dash": "dot" - }, - "type": "line", - "x0": 0, - "x1": 1, - "xref": "x domain", - "y0": 1, - "y1": 1, - "yref": "y" - } - ], - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#f2f5fa" - }, - "error_y": { - "color": "#f2f5fa" - }, - "marker": { - "line": { - "color": "rgb(17,17,17)", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "rgb(17,17,17)", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#A2B1C6", - "gridcolor": "#506784", - "linecolor": "#506784", - "minorgridcolor": "#506784", - "startlinecolor": "#A2B1C6" - }, - "baxis": { - "endlinecolor": "#A2B1C6", - "gridcolor": "#506784", - "linecolor": "#506784", - "minorgridcolor": "#506784", - "startlinecolor": "#A2B1C6" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "marker": { - "line": { - "color": "#283442" - } - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "line": { - "color": "#283442" - } - }, - "type": "scattergl" - } - ], - "scattermap": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermap" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#506784" - }, - "line": { - "color": "rgb(17,17,17)" - } - }, - "header": { - "fill": { - "color": "#2a3f5f" - }, - "line": { - "color": "rgb(17,17,17)" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#f2f5fa", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#f2f5fa" - }, - "geo": { - "bgcolor": "rgb(17,17,17)", - "lakecolor": "rgb(17,17,17)", - "landcolor": "rgb(17,17,17)", - "showlakes": true, - "showland": true, - "subunitcolor": "#506784" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "dark" - }, - "paper_bgcolor": "rgb(17,17,17)", - "plot_bgcolor": "rgb(17,17,17)", - "polar": { - "angularaxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - }, - "bgcolor": "rgb(17,17,17)", - "radialaxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "rgb(17,17,17)", - "gridcolor": "#506784", - "gridwidth": 2, - "linecolor": "#506784", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#C8D4E3" - }, - "yaxis": { - "backgroundcolor": "rgb(17,17,17)", - "gridcolor": "#506784", - "gridwidth": 2, - "linecolor": "#506784", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#C8D4E3" - }, - "zaxis": { - "backgroundcolor": "rgb(17,17,17)", - "gridcolor": "#506784", - "gridwidth": 2, - "linecolor": "#506784", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#C8D4E3" - } - }, - "shapedefaults": { - "line": { - "color": "#f2f5fa" - } - }, - "sliderdefaults": { - "bgcolor": "#C8D4E3", - "bordercolor": "rgb(17,17,17)", - "borderwidth": 1, - "tickwidth": 0 - }, - "ternary": { - "aaxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - }, - "baxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - }, - "bgcolor": "rgb(17,17,17)", - "caxis": { - "gridcolor": "#506784", - "linecolor": "#506784", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "updatemenudefaults": { - "bgcolor": "#506784", - "borderwidth": 0 - }, - "xaxis": { - "automargin": true, - "gridcolor": "#283442", - "linecolor": "#506784", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "#283442", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "#283442", - "linecolor": "#506784", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "#283442", - "zerolinewidth": 2 - } - } - }, - "yaxis": { - "side": "right", - "title": { - "text": "Ratio" - } - }, - "yaxis2": { - "overlaying": "y", - "side": "left", - "title": { - "text": "Funding Rate" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig = go.Figure()\n", "\n", @@ -8615,79 +210,12 @@ " ), \n", " opacity=1\n", " )\n", - "fig.show()\n" + "# fig.show()\n" ] }, { "cell_type": "code", - "execution_count": 28, - "id": "60c8cfcd", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.microsoft.datawrangler.viewer.v0+json": { - "columns": [ - { - "name": "index", - "rawType": "str", - "type": "string" - }, - { - "name": "0", - "rawType": "object", - "type": "unknown" - } - ], - "ref": "acd41228-c29d-4a4e-a511-ba90fa1ab09a", - "rows": [ - [ - "price_median_aster", - "float64" - ], - [ - "price_median_extend", - "float64" - ], - [ - "ratio", - "float64" - ] - ], - "shape": { - "columns": 1, - "rows": 3 - } - }, - "text/plain": [ - "price_median_aster float64\n", - "price_median_extend float64\n", - "ratio float64\n", - "dtype: object" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_comb_trades_by_sec_plot.dtypes" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "03c1cbbd", - "metadata": {}, - "outputs": [], - "source": [ - "df_fr_plot['funding_rate'] = df_fr_plot['funding_rate'].astype(float)" - ] - }, - { - "cell_type": "code", - "execution_count": 43, + "execution_count": 106, "metadata": {}, "outputs": [ { @@ -10104,10 +1632,49 @@ "2026-04-28T20:00:00", "2026-04-28T20:01:00", "2026-04-28T20:02:00", - "2026-04-28T20:03:00" + "2026-04-28T20:03:00", + "2026-04-28T20:04:00", + "2026-04-28T20:05:00", + "2026-04-28T20:06:00", + "2026-04-28T20:08:00", + "2026-04-28T20:09:00", + "2026-04-28T20:12:00", + "2026-04-28T20:13:00", + "2026-04-28T20:16:00", + "2026-04-28T20:17:00", + "2026-04-28T20:18:00", + "2026-04-28T20:19:00", + "2026-04-28T20:20:00", + "2026-04-28T20:22:00", + "2026-04-28T20:23:00", + "2026-04-28T20:24:00", + "2026-04-28T20:25:00", + "2026-04-28T20:26:00", + "2026-04-28T20:27:00", + "2026-04-28T20:30:00", + "2026-04-28T20:34:00", + "2026-04-28T20:35:00", + "2026-04-28T20:36:00", + "2026-04-28T20:37:00", + "2026-04-28T20:38:00", + "2026-04-28T20:40:00", + "2026-04-28T20:42:00", + "2026-04-28T20:43:00", + "2026-04-28T20:44:00", + "2026-04-28T20:46:00", + "2026-04-28T20:47:00", + "2026-04-28T20:50:00", + "2026-04-28T20:52:00", + "2026-04-28T20:53:00", + "2026-04-28T20:54:00", + "2026-04-28T20:55:00", + "2026-04-28T20:57:00", + "2026-04-28T20:58:00", + "2026-04-28T20:59:00", + "2026-04-28T21:00:00" ], "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" } }, @@ -11518,18 +3085,59 @@ "2026-04-28T20:00:00", "2026-04-28T20:01:00", "2026-04-28T20:02:00", - "2026-04-28T20:03:00" + "2026-04-28T20:03:00", + "2026-04-28T20:04:00", + "2026-04-28T20:05:00", + "2026-04-28T20:06:00", + "2026-04-28T20:08:00", + "2026-04-28T20:09:00", + "2026-04-28T20:12:00", + "2026-04-28T20:13:00", + "2026-04-28T20:16:00", + "2026-04-28T20:17:00", + "2026-04-28T20:18:00", + "2026-04-28T20:19:00", + "2026-04-28T20:20:00", + "2026-04-28T20:22:00", + "2026-04-28T20:23:00", + "2026-04-28T20:24:00", + "2026-04-28T20:25:00", + "2026-04-28T20:26:00", + "2026-04-28T20:27:00", + "2026-04-28T20:30:00", + "2026-04-28T20:34:00", + "2026-04-28T20:35:00", + "2026-04-28T20:36:00", + "2026-04-28T20:37:00", + "2026-04-28T20:38:00", + "2026-04-28T20:40:00", + "2026-04-28T20:42:00", + "2026-04-28T20:43:00", + "2026-04-28T20:44:00", + "2026-04-28T20:46:00", + "2026-04-28T20:47:00", + "2026-04-28T20:50:00", + "2026-04-28T20:52:00", + "2026-04-28T20:53:00", + "2026-04-28T20:54:00", + "2026-04-28T20:55:00", + "2026-04-28T20:57:00", + "2026-04-28T20:58:00", + "2026-04-28T20:59:00", + "2026-04-28T21:00:00" ], "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y" }, { + "mode": "lines+markers", "name": "FR", "type": "scatter", "x": [ + "2026-04-28T21:00:01.019000", "2026-04-28T20:00:01.015000", "2026-04-28T19:00:01.022000", "2026-04-28T18:00:00.794000", @@ -11561,7 +3169,7 @@ "2026-04-27T16:00:00.343000" ], "y": { - "bdata": "je21oPfG0D7xaOOItfjkPrdfPlkxXN0+VOQQcXMqyT6N7bWg98bAvo3ttaD3xrC+P6vMlNbf4r7xaOOItfjUvlTkEHFzKtk+VOQQcXMq2T4/q8yU1t/iPlTkEHFzKtm+t18+WTFc7b5U5BBxcyrJvo3ttaD3xtA+8WjjiLX41L57hQX3Ax74vo3ttaD3xsC+VOQQcXMqyT6N7bWg98awvqIm+nyUEec+AAAAAAAAAAAFoidlUkPrPlTkEHFzKsm+AAAAAAAAAABU5BBxcyrJPmkdVU0Qde++t18+WTFc3b4FoidlUkPrPg==", + "bdata": "VOQQcXMq6T6N7bWg98bQPvFo44i1+OQ+t18+WTFc3T5U5BBxcyrJPo3ttaD3xsC+je21oPfGsL4/q8yU1t/ivvFo44i1+NS+VOQQcXMq2T5U5BBxcyrZPj+rzJTW3+I+VOQQcXMq2b63Xz5ZMVztvlTkEHFzKsm+je21oPfG0D7xaOOItfjUvnuFBfcDHvi+je21oPfGwL5U5BBxcyrJPo3ttaD3xrC+oib6fJQR5z4AAAAAAAAAAAWiJ2VSQ+s+VOQQcXMqyb4AAAAAAAAAAFTkEHFzKsk+aR1VTRB17763Xz5ZMVzdvgWiJ2VSQ+s+", "dtype": "f8" }, "yaxis": "y2" @@ -12973,16 +4581,70 @@ "2026-04-28T20:00:00", "2026-04-28T20:01:00", "2026-04-28T20:02:00", - "2026-04-28T20:03:00" + "2026-04-28T20:03:00", + "2026-04-28T20:04:00", + "2026-04-28T20:05:00", + "2026-04-28T20:06:00", + "2026-04-28T20:08:00", + "2026-04-28T20:09:00", + "2026-04-28T20:12:00", + "2026-04-28T20:13:00", + "2026-04-28T20:16:00", + "2026-04-28T20:17:00", + "2026-04-28T20:18:00", + "2026-04-28T20:19:00", + "2026-04-28T20:20:00", + "2026-04-28T20:22:00", + "2026-04-28T20:23:00", + "2026-04-28T20:24:00", + "2026-04-28T20:25:00", + "2026-04-28T20:26:00", + "2026-04-28T20:27:00", + "2026-04-28T20:30:00", + "2026-04-28T20:34:00", + "2026-04-28T20:35:00", + "2026-04-28T20:36:00", + "2026-04-28T20:37:00", + "2026-04-28T20:38:00", + "2026-04-28T20:40:00", + "2026-04-28T20:42:00", + "2026-04-28T20:43:00", + "2026-04-28T20:44:00", + "2026-04-28T20:46:00", + "2026-04-28T20:47:00", + "2026-04-28T20:50:00", + "2026-04-28T20:52:00", + "2026-04-28T20:53:00", + "2026-04-28T20:54:00", + "2026-04-28T20:55:00", + "2026-04-28T20:57:00", + "2026-04-28T20:58:00", + "2026-04-28T20:59:00", + "2026-04-28T21:00:00" ], "y": { - "bdata": "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", + "bdata": "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", "dtype": "f8" }, "yaxis": "y3" } ], "layout": { + "shapes": [ + { + "line": { + "color": "pink", + "dash": "dash" + }, + "type": "line", + "x0": 1, + "x1": 0, + "xref": "paper", + "y0": 1, + "y1": 1, + "yref": "y3" + } + ], "template": { "data": { "bar": [ @@ -13801,10 +5463,10 @@ "fig = go.Figure()\n", "\n", "# Add traces bound to different Y-axes\n", - "fig.add_trace(go.Scatter(x=df_comb_trades_by_sec_plot.index, y=df_comb_trades_by_sec_plot['price_median_aster'], name=\"Aster_Mid\")) # Funding Rate\n", - "fig.add_trace(go.Scatter(x=df_comb_trades_by_sec_plot.index, y=df_comb_trades_by_sec_plot['price_median_extend'], name=\"Extend\", yaxis='y1')) # Ratio\n", - "fig.add_trace(go.Scatter(x=df_fr_plot['timestamp_dt'], y=df_fr_plot['funding_rate'], name=\"FR\", yaxis='y2')) # Ratio\n", - "fig.add_trace(go.Scatter(x=df_comb_trades_by_sec_plot.index, y=df_comb_trades_by_sec_plot['ratio'], name=\"Ratio\", yaxis='y3')) # Funding Rate\n", + "fig.add_trace(go.Scatter(x=df_comb_trades_by_sec_plot.index, y=df_comb_trades_by_sec_plot['price_median_aster'], name=\"Aster_Mid\")) \n", + "fig.add_trace(go.Scatter(x=df_comb_trades_by_sec_plot.index, y=df_comb_trades_by_sec_plot['price_median_extend'], name=\"Extend\", yaxis='y1'))\n", + "fig.add_trace(go.Scatter(x=df_fr_plot['timestamp_dt'], y=df_fr_plot['funding_rate'], name=\"FR\", yaxis='y2', mode='lines+markers'))\n", + "fig.add_trace(go.Scatter(x=df_comb_trades_by_sec_plot.index, y=df_comb_trades_by_sec_plot['ratio'], name=\"Ratio\", yaxis='y3'))\n", "# fig.add_trace(go.Scatter(x=[1, 2, 3], y=[400, 500, 600], name=\"Y3\", yaxis='y3')) # \n", "\n", "fig.update_layout(\n", @@ -13825,17 +5487,17 @@ "# )\n", "# )\n", "\n", - "# fig.add_shape(\n", - "# type=\"line\",\n", - "# x0=0, x1=1,\n", - "# y0=0, y1=0,\n", - "# xref=\"paper\",\n", - "# yref=\"y2\",\n", - "# line=dict(\n", - "# color=\"red\",\n", - "# dash=\"dash\"\n", - "# )\n", - "# )\n", + "fig.add_shape(\n", + " type=\"line\",\n", + " x0=1, x1=0,\n", + " y0=1, y1=1,\n", + " xref=\"paper\",\n", + " yref=\"y3\",\n", + " line=dict(\n", + " color=\"pink\",\n", + " dash=\"dash\"\n", + " )\n", + ")\n", "\n", "# Create a range of hours\n", "start_time = int(min_time)\n", diff --git a/extended.ipynb b/extended.ipynb index f3810ea..66ca28b 100644 --- a/extended.ipynb +++ b/extended.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 9, "id": "6c70a8c3", "metadata": {}, "outputs": [], @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 12, "id": "ff971ca9", "metadata": {}, "outputs": [], @@ -42,50 +42,46 @@ "CONFIG = MAINNET_CONFIG\n", "\n", "ORDER_MARKET = \"ETH-USD\"\n", - "ORDER_SIDE = OrderSide.BUY\n", "ORDER_QTY = Decimal(\"0.01\")\n", - "ORDER_PRICE = Decimal(\"2200.1\")" + "ORDER_PRICE = Decimal(\"2300.1\")\n", + "ORDER_SIDE = OrderSide.BUY" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 13, "id": "fc2c6d2b", "metadata": {}, - "outputs": [], - "source": [ - "client, trading_client = await extend_auth.create_auth_account_and_trading_client()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c366706f", - "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "Error response from https://api.starknet.extended.exchange/api/v1/user/order: {\"status\":\"ERROR\",\"error\":{\"code\":1125,\"message\":\"Invalid price precision\"}}\n" - ] - }, - { - "ename": "ValueError", - "evalue": "Error response from https://api.starknet.extended.exchange/api/v1/user/order: code 400 - {\"status\":\"ERROR\",\"error\":{\"code\":1125,\"message\":\"Invalid price precision\"}}", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mValueError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m placed_order = await trading_client.place_order(\n\u001b[32m 2\u001b[39m market_name=ORDER_MARKET,\n\u001b[32m 3\u001b[39m amount_of_synthetic=ORDER_QTY,\n\u001b[32m 4\u001b[39m price=ORDER_PRICE,\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/miniconda3/envs/py_313/lib/python3.13/site-packages/x10/perpetual/trading_client/trading_client.py:101\u001b[39m, in \u001b[36mPerpetualTradingClient.place_order\u001b[39m\u001b[34m(self, market_name, amount_of_synthetic, price, side, taker_fee, post_only, previous_order_id, expire_time, time_in_force, self_trade_protection_level, external_id, builder_fee, builder_id, reduce_only, tp_sl_type, take_profit, stop_loss)\u001b[39m\n\u001b[32m 78\u001b[39m expire_time = utc_now() + timedelta(hours=\u001b[32m1\u001b[39m)\n\u001b[32m 80\u001b[39m order = create_order_object(\n\u001b[32m 81\u001b[39m account=\u001b[38;5;28mself\u001b[39m.__stark_account,\n\u001b[32m 82\u001b[39m market=market,\n\u001b[32m (...)\u001b[39m\u001b[32m 99\u001b[39m stop_loss=stop_loss,\n\u001b[32m 100\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m101\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m.__order_management_module.place_order(order)\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/miniconda3/envs/py_313/lib/python3.13/site-packages/x10/perpetual/trading_client/order_management_module.py:31\u001b[39m, in \u001b[36mOrderManagementModule.place_order\u001b[39m\u001b[34m(self, order)\u001b[39m\n\u001b[32m 28\u001b[39m LOGGER.debug(\u001b[33m\"\u001b[39m\u001b[33mPlacing an order: id=\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[33m\"\u001b[39m, order.id)\n\u001b[32m 30\u001b[39m url = \u001b[38;5;28mself\u001b[39m._get_url(\u001b[33m\"\u001b[39m\u001b[33m/user/order\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m---> \u001b[39m\u001b[32m31\u001b[39m response = \u001b[38;5;28;01mawait\u001b[39;00m send_post_request(\n\u001b[32m 32\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m.get_session(),\n\u001b[32m 33\u001b[39m url,\n\u001b[32m 34\u001b[39m PlacedOrderModel,\n\u001b[32m 35\u001b[39m json=order.to_api_request_json(exclude_none=\u001b[38;5;28;01mTrue\u001b[39;00m),\n\u001b[32m 36\u001b[39m api_key=\u001b[38;5;28mself\u001b[39m._get_api_key(),\n\u001b[32m 37\u001b[39m )\n\u001b[32m 38\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m response\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/miniconda3/envs/py_313/lib/python3.13/site-packages/x10/utils/http.py:173\u001b[39m, in \u001b[36msend_post_request\u001b[39m\u001b[34m(session, url, model_class, json, api_key, request_headers, response_code_to_exception)\u001b[39m\n\u001b[32m 171\u001b[39m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mwith\u001b[39;00m session.post(url, json=json, headers=headers) \u001b[38;5;28;01mas\u001b[39;00m response:\n\u001b[32m 172\u001b[39m response_text = \u001b[38;5;28;01mawait\u001b[39;00m response.text()\n\u001b[32m--> \u001b[39m\u001b[32m173\u001b[39m \u001b[30;43mhandle_known_errors\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43murl\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mresponse_code_to_exception\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mresponse\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mresponse_text\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 174\u001b[39m response_model = parse_response_to_model(response_text, model_class)\n\u001b[32m 176\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m (response_model.status != ResponseStatus.OK) \u001b[38;5;129;01mor\u001b[39;00m (response_model.error \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m):\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/miniconda3/envs/py_313/lib/python3.13/site-packages/x10/utils/http.py:243\u001b[39m, in \u001b[36mhandle_known_errors\u001b[39m\u001b[34m(url, response_code_handler, response, response_text)\u001b[39m\n\u001b[32m 241\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m response.status > \u001b[32m299\u001b[39m:\n\u001b[32m 242\u001b[39m LOGGER.error(\u001b[33m\"\u001b[39m\u001b[33mError response from \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[33m: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[33m\"\u001b[39m, url, response_text)\n\u001b[32m--> \u001b[39m\u001b[32m243\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mError response from \u001b[39m\u001b[38;5;132;01m{\u001b[39;00murl\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m: code \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresponse.status\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m - \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresponse_text\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n", - "\u001b[31mValueError\u001b[39m: Error response from https://api.starknet.extended.exchange/api/v1/user/order: code 400 - {\"status\":\"ERROR\",\"error\":{\"code\":1125,\"message\":\"Invalid price precision\"}}" + "Unclosed client session\n", + "client_session: \n" ] } ], + "source": [ + "client, trading_client = await extend_auth.create_auth_account_and_trading_client()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "07887649", + "metadata": {}, + "outputs": [], + "source": [ + "### Figure out how to flatten small residuals - market order with reduce only?)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c366706f", + "metadata": {}, + "outputs": [], "source": [ "placed_order = await trading_client.place_order(\n", " market_name=ORDER_MARKET,\n", @@ -98,6 +94,27 @@ ")" ] }, + { + "cell_type": "code", + "execution_count": 15, + "id": "ba85f1e9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "WrappedApiResponse[PlacedOrderModel](status='OK', data=PlacedOrderModel(id=2049239831434784768, external_id='359148168147219671570709517544221313286652228166698232409514334035033828578'), error=None, pagination=None)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "placed_order" + ] + }, { "cell_type": "code", "execution_count": 5, diff --git a/main.py b/main.py index 5fd1402..ee42aa8 100644 --- a/main.py +++ b/main.py @@ -5,7 +5,6 @@ import math import os import time import traceback -from dataclasses import asdict, dataclass, field from datetime import datetime, timezone from decimal import ROUND_DOWN, Decimal from typing import AsyncContextManager @@ -37,24 +36,30 @@ load_dotenv() LOG_FILEPATH: str = os.getenv("LOGS_PATH") + '/Fund_Rate_Algo.log' ### Algo Config ### -ALGO_CONFIG: structs.Algo_Config = None +ALGO_CONFIG: structs.Algo_Config | None = None MIN_TIME_TO_FUNDING: int -### CONSTANTS ### +### EXCHANGES ### ASTER = structs.Perpetual_Exchange( mult = 150, lh_asset = 'ETH', rh_asset = 'USDT', symbol_asset_separator = '', ) - -EXTEND_LH_ASSET: str = 'ETH' -EXTEND_RH_ASSET: str = 'USD' -EXTEND_TICKER: str = EXTEND_LH_ASSET + '-' + EXTEND_RH_ASSET +EXTEND = structs.Perpetual_Exchange( + mult = 50, + lh_asset = 'ETH', + rh_asset = 'USD', + symbol_asset_separator = '-', +) ### GLOBALS ### -ASTER_MULT = 150 -EXTEND_MULT = 50 +Last_Aster_Fill_Time_Ts: float = 0.00 +Just_Rejected_Or_Expired: bool = False +Best_Symbol_by_Exchange: dict = {} + +# ASTER_MULT = 150 +# EXTEND_MULT = 50 ASTER_MIN_ORDER_QTY = 0.001 EXTEND_MIN_ORDER_QTY = 0.01 @@ -121,7 +126,7 @@ async def get_aster_notional_position(resp: dict | None = None): global ASTER_NOTIONAL_OBJ global ASTER_NOTIONAL_POSITION global ASTER_UNREALIZED_PNL - global ASTER_MULT + global ASTER previous_notional_obj = ASTER_NOTIONAL_OBJ @@ -159,32 +164,31 @@ async def get_aster_notional_position(resp: dict | None = None): previous_notional_position = ASTER_NOTIONAL_POSITION # if not resp: # this can never evaluate - # ASTER_MULT = float(d['leverage']) - # if abs(ASTER_NOTIONAL_POSITION) > ALGO_CONFIG.Max_Target_Notional*1.01: - if abs(ASTER_NOTIONAL_POSITION) > ALGO_CONFIG.Max_Target_Notional*2.01: - logging.info(f'BAD NOTIONAL - ASTER CHANGE: {previous_notional_position} -> {ASTER_NOTIONAL_POSITION}; UR PNL: {ASTER_UNREALIZED_PNL}; MULT: {ASTER_MULT}; d: {d}; resp: {resp}') + # ASTER.mult = float(d['leverage']) + if abs(ASTER_NOTIONAL_POSITION) > ALGO_CONFIG.Config.Max_Target_Notional*ALGO_CONFIG.Config.Max_Order_Over_Notional_Ratio: + logging.info(f'BAD NOTIONAL - ASTER CHANGE: {previous_notional_position} -> {ASTER_NOTIONAL_POSITION}; UR PNL: {ASTER_UNREALIZED_PNL}; MULT: {ASTER.mult}; d: {d}; resp: {resp}') await kill_algo() # if ASTER_NOTIONAL_POSITION != previous_notional_position: - logging.info(f'ASTER NOTIONAL CHANGE: {previous_notional_position:.2f} -> {ASTER_NOTIONAL_POSITION:.2f}; UR PNL: {ASTER_UNREALIZED_PNL:.2f}; MULT: {ASTER_MULT:.0f}; resp: {bool(resp)}') + logging.info(f'ASTER NOTIONAL CHANGE: {previous_notional_position:.2f} -> {ASTER_NOTIONAL_POSITION:.2f}; UR PNL: {ASTER_UNREALIZED_PNL:.2f}; MULT: {ASTER.mult:.0f}; resp: {bool(resp)}') async def get_extend_collateral(): global EXTEND_AVAIL_COLLATERAL get_bals = dict(dict(await EXTEND_CLIENT.account.get_balance()).get('data', {})) - EXTEND_AVAIL_COLLATERAL = get_bals.get('available_for_trade', 0) if get_bals.get('collateral_name', None)==EXTEND_RH_ASSET else 0 + EXTEND_AVAIL_COLLATERAL = get_bals.get('available_for_trade', 0) if get_bals.get('collateral_name', None)==EXTEND.rh_asset else 0 async def get_extend_notional(resp: dict | None = None): global EXTEND_NOTIONAL_OBJ global EXTEND_NOTIONAL_POSITION global EXTEND_UNREALIZED_PNL - global EXTEND_MULT + global EXTEND previous_notional_obj = EXTEND_NOTIONAL_OBJ previous_notional_position = EXTEND_NOTIONAL_POSITION if not resp: resp = dict(await EXTEND_CLIENT.account.get_positions()).get('data', []) - pos_dict = [dict(d) for d in resp if dict(d).get('market') == EXTEND_TICKER] + pos_dict = [dict(d) for d in resp if dict(d).get('market') == EXTEND.symbol] if pos_dict: pos_dict = pos_dict[0] else: @@ -195,7 +199,7 @@ async def get_extend_notional(resp: dict | None = None): pos_dict['timestamp_arrival'] = round(datetime.now().timestamp()*1000) else: - pos_dict = [dict(d) for d in resp if dict(d).get('market') == EXTEND_TICKER] + pos_dict = [dict(d) for d in resp if dict(d).get('market') == EXTEND.symbol] if pos_dict: pos_dict = pos_dict[0] else: @@ -223,12 +227,12 @@ async def get_extend_notional(resp: dict | None = None): logging.info(f'EXTEND BAD SIDE ON POSITION UPDATE: {pos_dict}') EXTEND_NOTIONAL_POSITION = notional_pos_sided - float(EXTEND_UNREALIZED_PNL) - EXTEND_MULT = pos_dict.get('leverage', EXTEND_MULT) - if abs(EXTEND_NOTIONAL_POSITION) > ALGO_CONFIG.Max_Target_Notional*2.01: - logging.info(f'BAD NOTIONAL - EXTEND CHANGE: {previous_notional_position} -> {EXTEND_NOTIONAL_POSITION}; UR PNL: {EXTEND_UNREALIZED_PNL}; MULT: {EXTEND_MULT}; d: {pos_dict}; resp: {resp}') + EXTEND.mult = pos_dict.get('leverage', EXTEND) + if abs(EXTEND_NOTIONAL_POSITION) > ALGO_CONFIG.Config.Max_Target_Notional*ALGO_CONFIG.Config.Max_Order_Over_Notional_Ratio: + logging.info(f'BAD NOTIONAL - EXTEND CHANGE: {previous_notional_position} -> {EXTEND_NOTIONAL_POSITION}; UR PNL: {EXTEND_UNREALIZED_PNL}; MULT: {EXTEND.mult}; d: {pos_dict}; resp: {resp}') await kill_algo() if EXTEND_NOTIONAL_POSITION != previous_notional_position: - logging.info(f'EXTEND NOTIONAL CHANGE: {previous_notional_position} -> {EXTEND_NOTIONAL_POSITION:.2f}; UR PNL: {EXTEND_UNREALIZED_PNL:.2f}; MULT: {EXTEND_MULT:.0f}; resp: {bool(resp)}') + logging.info(f'EXTEND NOTIONAL CHANGE: {previous_notional_position} -> {EXTEND_NOTIONAL_POSITION:.2f}; UR PNL: {EXTEND_UNREALIZED_PNL:.2f}; MULT: {EXTEND.mult:.0f}; resp: {bool(resp)}') ### EXCHANGE INFO ### async def get_aster_exch_info(): @@ -264,7 +268,7 @@ async def aster_cancel_all_orders(): logging.info(f'ASTER CANCEL ALL OPEN ORDERS RESP: {r}') async def extend_cancel_all_orders(): - r = await EXTEND_CLIENT.orders.mass_cancel(markets=[EXTEND_TICKER]) + r = await EXTEND_CLIENT.orders.mass_cancel(markets=[EXTEND.symbol]) logging.info(f'EXTEND CANCEL ALL OPEN ORDERS RESP: {r}') ### KILL ALGO ### @@ -277,29 +281,39 @@ async def kill_algo(): ### ALGO LOOP ### async def run_algo(): + global ASTER + global EXTEND + global ALGO_CONFIG global MIN_TIME_TO_FUNDING global ASTER_OPEN_ORDERS global EXTEND_OPEN_ORDERS + global Last_Aster_Fill_Time_Ts + global Just_Rejected_Or_Expired + global Best_Symbol_by_Exchange try: while True: loop_start = time.time() # print('__________Start___________') ### ALGO CONIFG ### - ALGO_CONFIG = json.loads(VAL_KEY.get('fr_orchestrator_output'), object_hook=lambda d: structs.Algo_Config(**d)) - ALGO_CONFIG.Max_Target_Notional = float(min([ASTER_MULT, EXTEND_MULT]) * ALGO_CONFIG.Target_Open_Cash_Position) + + ALGO_CONFIG = json.loads(VAL_KEY.get('fr_orchestrator_output')) + ALGO_CONFIG = structs.Algo_Config(**ALGO_CONFIG) + ALGO_CONFIG.Config.Max_Target_Notional = float(min([ASTER.mult, EXTEND.mult]) * ALGO_CONFIG.Config.Target_Open_Cash_Position) - MIN_TIME_TO_FUNDING = ALGO_CONFIG.Min_Time_To_Funding_Minutes * 60 * 1000 + MIN_TIME_TO_FUNDING = ALGO_CONFIG.Config.Min_Time_To_Funding_Minutes * 60 * 1000 ### Load Data from Feedhandlers ### + Best_Symbol_by_Exchange = json.loads(VAL_KEY.get('fr_engine_best_fund_rate_output')) + ASTER_FUND_RATE_DICT = json.loads(VAL_KEY.get('fund_rate_aster')) EXTENDED_FUND_RATE_DICT = json.loads(VAL_KEY.get('fund_rate_extended')) ASTER_FUND_RATE = float(ASTER_FUND_RATE_DICT.get('funding_rate', 0)) EXTEND_FUND_RATE = float(EXTENDED_FUND_RATE_DICT.get('funding_rate', 0)) - if ALGO_CONFIG.Flip_Side_For_Testing: + if ALGO_CONFIG.Overrides.Flip_Side_For_Testing: ASTER_FUND_RATE = ASTER_FUND_RATE * -1 EXTEND_FUND_RATE = EXTEND_FUND_RATE * -1 @@ -370,16 +384,20 @@ async def run_algo(): if order_update_status in ['CANCELED','EXPIRED']: logging.info(f'ASTER ORDER CANCELLED or EXPIRED: {order_id}') ASTER_OPEN_ORDERS.pop(idx) + Just_Rejected_Or_Expired = True + utils.send_tg_alert(f'FR_ALGO - ASTER REJECTED ({order_id})') elif order_update_status in ['PARTIALLY_FILLED']: logging.info(f'ASTER ORDER PARTIALLY FILLED: {order_id}') - await get_aster_collateral() - await get_aster_notional_position() + # await get_aster_collateral() + await get_aster_notional_position(resp=ASTER_WS_POS_UPDATES) + Last_Aster_Fill_Time_Ts = datetime.now().timestamp()*1000 utils.send_tg_alert(f'FR_ALGO - ASTER PARTIALLY FILLED ({order_id})') elif order_update_status in ['FILLED']: logging.info(f'ASTER ORDER FILLED: {order_id}') ASTER_OPEN_ORDERS.pop(idx) - await get_aster_collateral() - await get_aster_notional_position() + # await get_aster_collateral() + await get_aster_notional_position(resp=ASTER_WS_POS_UPDATES) + Last_Aster_Fill_Time_Ts = datetime.now().timestamp()*1000 utils.send_tg_alert(f'FR_ALGO - ASTER FILLED ({order_id})') else: logging.critical(f'EXTEND ORDER STATUS CHG TO UNEXPECTED VALUE, KILLING... ({order_id}): {order_orig_status} -> {order_update_status}') @@ -401,6 +419,8 @@ async def run_algo(): if order_update_status in ['CANCELLED','EXPIRED','REJECTED']: logging.info(f'EXTEND ORDER CANCELLED, REJECTED or EXPIRED: {order_id}') EXTEND_OPEN_ORDERS.pop(idx) + Just_Rejected_Or_Expired = True + utils.send_tg_alert(f'FR_ALGO - EXTEND REJECTED ({order_id})') elif order_update_status in ['PARTIALLY_FILLED']: logging.info(f'EXTEND ORDER PARTIALLY FILLED: {order_id}') await get_extend_collateral() @@ -416,10 +436,20 @@ async def run_algo(): logging.critical(f'EXTEND ORDER STATUS CHG TO UNEXPECTED VALUE, KILLING... ({order_id}): {order_orig_status} -> {order_update_status}') + # if Best_Symbol_by_Exchange['symbol_aster'] != ASTER.symbol: + # if abs( ASTER_NOTIONAL_POSITION ) > 0 or abs( EXTEND_NOTIONAL_POSITION ) > 0: + # print('Symbol switch - Flattening Positions') + # ALGO_CONFIG.Overrides.Flatten_Open_Positions = True + # else: + # print(f'Balances Flattened - Updating to Trade New Symbol: ASTER.symbol -> {Best_Symbol_by_Exchange['symbol_aster']}') + # # ASTER.symbol = Best_Symbol_by_Exchange['symbol_aster'] + # # EXTEND.symbol = Best_Symbol_by_Exchange['symbol_extended'] + + + min_between_fundings = round((abs(ASTER_FUND_RATE_TIME - EXTEND_FUND_RATE_TIME) / 1000 / 60)) FUNDINGS_AT_SAME_TIME_NEXT_HR = min_between_fundings < 5 - if ( abs(ASTER_FUND_RATE) > abs(EXTEND_FUND_RATE) ) and FUNDINGS_AT_SAME_TIME_NEXT_HR: ALPHA_EXCH = 'ASTER' ALPHA_FUND_RATE = ASTER_FUND_RATE @@ -429,20 +459,20 @@ async def run_algo(): if ALPHA_FUND_RATE < 0: ALPHA_CARRY_SIDE = 'BUY' - ALPHA_TGT_NOTIONAL = ALGO_CONFIG.Max_Target_Notional + ALPHA_TGT_NOTIONAL = ALGO_CONFIG.Config.Max_Target_Notional else: ALPHA_CARRY_SIDE = 'SELL' - ALPHA_TGT_NOTIONAL = ALGO_CONFIG.Max_Target_Notional*-1 + ALPHA_TGT_NOTIONAL = ALGO_CONFIG.Config.Max_Target_Notional*-1 def calc_next_net_fund_rate(FUNDINGS_AT_SAME_TIME_NEXT_HR: bool) -> float: if FUNDINGS_AT_SAME_TIME_NEXT_HR: - return ASTER_FUND_RATE + EXTEND_FUND_RATE + return max([ASTER_FUND_RATE, EXTEND_FUND_RATE]) - min([ASTER_FUND_RATE, EXTEND_FUND_RATE]) else: return EXTEND_FUND_RATE NEXT_NET_FUNDING_RATE = calc_next_net_fund_rate(FUNDINGS_AT_SAME_TIME_NEXT_HR) - Flags.NET_FUNDING_IS_ZERO = ( NEXT_NET_FUNDING_RATE >= ( (ALGO_CONFIG.Min_Fund_Rate_Pct_To_Trade*-1) / 100) ) and ( NEXT_NET_FUNDING_RATE <= ( ALGO_CONFIG.Min_Fund_Rate_Pct_To_Trade / 100 ) ) - if Flags.NET_FUNDING_IS_ZERO or ALGO_CONFIG.Flatten_Open_Positions: + Flags.NET_FUNDING_IS_ZERO = ( NEXT_NET_FUNDING_RATE >= ( (ALGO_CONFIG.Config.Min_Fund_Rate_Pct_To_Trade*-1) / 100) ) and ( NEXT_NET_FUNDING_RATE <= ( ALGO_CONFIG.Config.Min_Fund_Rate_Pct_To_Trade / 100 ) ) + if Flags.NET_FUNDING_IS_ZERO or ALGO_CONFIG.Overrides.Flatten_Open_Positions: ALPHA_TGT_NOTIONAL = 0.00 # if ASTER_OPEN_ORDERS or EXTEND_OPEN_ORDERS: # logging.info('NET FUNDING = 0.00; Cancelling Open Orders! then Waiting...') @@ -507,26 +537,26 @@ async def run_algo(): ASTER_TGT_TAIL_ORDERABLE = abs(ASTER_TGT_TAIL_BASE_QTY) >= MAX_MIN_ORDER_QTY EXTEND_TGT_TAIL_ORDERABLE = abs(EXTEND_TGT_TAIL_BASE_QTY) >= MAX_MIN_ORDER_QTY - Hedge_Ratio = abs(( abs( max([abs(float(EXTEND_NOTIONAL_POSITION)), 0.01]) / max([abs(float(ASTER_NOTIONAL_POSITION)), 0.01]) ) - 1 ) * 100) + # Hedge_Ratio = abs(( abs( max([abs(float(EXTEND_NOTIONAL_POSITION)), 0.01]) / max([abs(float(ASTER_NOTIONAL_POSITION)), 0.01]) ) - 1 ) * 100) + Hedge_Ratio = abs( ( EXTEND_NOTIONAL_POSITION + ASTER_NOTIONAL_POSITION ) / ASTER_NOTIONAL_POSITION ) * 100 Currently_Hedged = Hedge_Ratio < 1.00 def print_summary(use_logging: bool = False): OUT: print | logging.info = logging.info if use_logging else print OUT(f''' - LOOP SLEEP (SEC): {ALGO_CONFIG.Loop_Sleep_Sec} - FLIP SIDES FOR TESTING?: {ALGO_CONFIG.Flip_Side_For_Testing}; ASTER ORDER ENABLED? {ALGO_CONFIG.Allow_Ordering_Aster}; EXTEND ORDER ENABLED? {ALGO_CONFIG.Allow_Ordering_Extend} + LOOP SLEEP (SEC): {ALGO_CONFIG.Config.Loop_Sleep_Sec} + FLIP SIDES FOR TESTING?: {ALGO_CONFIG.Overrides.Flip_Side_For_Testing}; ASTER ORDER ENABLED? {ALGO_CONFIG.Overrides.Allow_Ordering_Aster}; EXTEND ORDER ENABLED? {ALGO_CONFIG.Overrides.Allow_Ordering_Extend} {pd.to_datetime(ASTER_FUND_RATE_TIME, unit='ms')} ({(pd.to_datetime(ASTER_FUND_RATE_TIME, unit='ms')-datetime.now()):}) | {pd.to_datetime(EXTEND_FUND_RATE_TIME, unit='ms')} ({(pd.to_datetime(EXTEND_FUND_RATE_TIME, unit='ms')-datetime.now()):}) ASTER: {ASTER_FUND_RATE:.6%} [{ASTER_FUND_RATE*10_000:.2f}bps] [{ASTER_FUND_RATE*1_000_000:.0f}pips] | EXTEND: {EXTEND_FUND_RATE:.6%} [{EXTEND_FUND_RATE*10_000:.2f}bps] [{EXTEND_FUND_RATE*1_000_000:.0f}pips] ASTER: {'LONG PAYS SHORT' if ASTER_FUND_RATE > 0 else 'SHORT PAYS LONG'} | EXTEND: {'LONG PAYS SHORT' if EXTEND_FUND_RATE > 0 else 'SHORT PAYS LONG'} - ASTER: [ Available Collateral: {ASTER_AVAIL_COLLATERAL:.4f} ] | EXTEND: [ Available Collateral: {EXTEND_AVAIL_COLLATERAL:.4f} ] ASTER: [ Notional Position $ : {ASTER_NOTIONAL_POSITION:.4f} ] | EXTEND: [ Notional Position $ : {EXTEND_NOTIONAL_POSITION:.4f} ] SAME TIME? : {FUNDINGS_AT_SAME_TIME_NEXT_HR} [ Minutes Between Fundings: {min_between_fundings} ] - NET FUNDING : {NEXT_NET_FUNDING_RATE:.6%} [{NEXT_NET_FUNDING_RATE*10_000:.2f}bps] [{NEXT_NET_FUNDING_RATE*1_000_000:.0f}pips]; Is Zero?: {Flags.NET_FUNDING_IS_ZERO} [Min: {ALGO_CONFIG.Min_Fund_Rate_Pct_To_Trade}] + NET FUNDING : {NEXT_NET_FUNDING_RATE:.6%} [{NEXT_NET_FUNDING_RATE*10_000:.2f}bps] [{NEXT_NET_FUNDING_RATE*1_000_000:.0f}pips]; Is Zero?: {Flags.NET_FUNDING_IS_ZERO} [Min: {ALGO_CONFIG.Config.Min_Fund_Rate_Pct_To_Trade}] ALPHA SIDE : {ALPHA_EXCH} [{ALPHA_CARRY_SIDE}] - TGT NOTIONAL: $ {abs(ALPHA_TGT_NOTIONAL):.2f}; Flatten Open Positions Flag? {ALGO_CONFIG.Flatten_Open_Positions} + TGT NOTIONAL: $ {abs(ALPHA_TGT_NOTIONAL):.2f}; Flatten Open Positions Flag? {ALGO_CONFIG.Overrides.Flatten_Open_Positions} ASTER: {ASTER_NOTIONAL_POSITION:.4f} -> {ASTER_TGT_NOTIONAL:.2f} [ Remain: {ASTER_TGT_TAIL:.4f} ] | EXTEND: {EXTEND_NOTIONAL_POSITION:.4f} -> {EXTEND_TGT_NOTIONAL:.2f} [ Remain: {EXTEND_TGT_TAIL:.4f} ] ASTER: {ASTER_TGT_NOTIONAL:.2f} - {ASTER_NOTIONAL_POSITION:.2f} + {ASTER_UNREALIZED_PNL:.2f} = {ASTER_TGT_TAIL:2f} | EXTEND: {EXTEND_TGT_NOTIONAL:.2f} - {EXTEND_NOTIONAL_POSITION:.2f} + {EXTEND_UNREALIZED_PNL:.2f} = {EXTEND_TGT_TAIL:2f} @@ -543,35 +573,38 @@ async def run_algo(): --- EXTEND OPEN ORDERS --- {EXTEND_OPEN_ORDERS} ''') + # ASTER: [ Available Collateral: {ASTER_AVAIL_COLLATERAL:.4f} ] | EXTEND: [ Available Collateral: {EXTEND_AVAIL_COLLATERAL:.4f} ] # Try Making Hedge Order Contingent on Alpha Order Fills (Basically Hedge has to wait for sig Diff in Balance to order.) would improve when extended is thin (Overnight). - if ALGO_CONFIG.Log_Summary_Each_Loop: + if ALGO_CONFIG.Logging.Log_Summary_Each_Loop: print_summary(use_logging=True) - if ALGO_CONFIG.Print_Summary_Each_Loop: + if ALGO_CONFIG.Logging.Print_Summary_Each_Loop: print_summary(use_logging=False) # print_summary() + ### ROUTES ### # MIN_EXPECTED_ALPHA_TO_TRADE = 0.0001 MIN_EXPECTED_ALPHA_TO_TRADE = -0.000001 # ALPHA RATIO CHECK - if not( ( Expected_Alpha_w_Taker > MIN_EXPECTED_ALPHA_TO_TRADE ) or ( ASTER_OPEN_ORDERS or EXTEND_OPEN_ORDERS ) or ALGO_CONFIG.Flatten_Open_Positions ): - # logging.info(f'Alpha Ratio too low ({ALPHA_RATIO:.8f}) and no Open Orders...') + if not( ( Expected_Alpha_Net_FR_w_Taker > MIN_EXPECTED_ALPHA_TO_TRADE ) or ( ASTER_OPEN_ORDERS or EXTEND_OPEN_ORDERS or Just_Rejected_Or_Expired or ALGO_CONFIG.Overrides.Flatten_Open_Positions) ): + if ALGO_CONFIG.Logging.Print_Summary_Each_Loop: + print(f'Alpha Ratio too low ({ALPHA_RATIO:.8f}) and no Open Orders...') pass - elif ( Expected_Alpha_w_Taker <= MIN_EXPECTED_ALPHA_TO_TRADE ) and ( ASTER_OPEN_ORDERS or EXTEND_OPEN_ORDERS ) and Currently_Hedged: + elif ( Expected_Alpha_Net_FR_w_Taker <= MIN_EXPECTED_ALPHA_TO_TRADE ) and ( ASTER_OPEN_ORDERS or EXTEND_OPEN_ORDERS ) and Currently_Hedged: await aster_cancel_all_orders() await extend_cancel_all_orders() logging.info('Expected_Alpha went away with open orders...cancelling since we are currently hedged...') - time.sleep( (1/1000)*100 ) # 100ms wait for ws cancel response + # time.sleep( (1/1000)*100 ) # 100ms wait for ws cancel response else: # logging.info(f'*** Alpha Ratio HIT - LETS ORDER: {ALPHA_RATIO:.8f}') # ASTER - if ASTER_TGT_TAIL_ORDERABLE and ALGO_CONFIG.Allow_Ordering_Aster: + if ASTER_TGT_TAIL_ORDERABLE and ALGO_CONFIG.Overrides.Allow_Ordering_Aster: symbol = ASTER.symbol side = 'BUY' if ASTER_TGT_TAIL_BASE_QTY > 0.00 else 'SELL' qty = str(abs(ASTER_TGT_TAIL_BASE_QTY)) - price = ASTER_TOB_PX - ALGO_CONFIG.Price_Worsener_Aster if side == 'BUY' else ASTER_TOB_PX + ALGO_CONFIG.Price_Worsener_Aster + price = ASTER_TOB_PX - ALGO_CONFIG.Config.Price_Worsener_Aster if side == 'BUY' else ASTER_TOB_PX + ALGO_CONFIG.Config.Price_Worsener_Aster - if abs( ( float(ASTER_TGT_TAIL_BASE_QTY)*float(price) ) + ASTER_NOTIONAL_POSITION ) > ALGO_CONFIG.Max_Target_Notional*1.01: + if abs( ( float(ASTER_TGT_TAIL_BASE_QTY)*float(price) ) + ASTER_NOTIONAL_POSITION ) > ALGO_CONFIG.Config.Max_Target_Notional*ALGO_CONFIG.Config.Max_Order_Over_Notional_Ratio: logging.info(f'TRYING TO ORDER OVER MAX NOTIOANL - ASTER: {ASTER_NOTIONAL_POSITION} + {float(ASTER_TGT_TAIL_BASE_QTY)*float(price)} (qty: {float(ASTER_TGT_TAIL_BASE_QTY):.2f}; px: {float(price):.2f})') await kill_algo() if ASTER_OPEN_ORDERS: @@ -622,6 +655,7 @@ async def run_algo(): order_resp['original_price'] = price order_resp['order_status'] = order_resp['status'] ASTER_OPEN_ORDERS.append(order_resp) + Just_Rejected_Or_Expired = False utils.send_tg_alert(f'FR_ALGO - ASTER Order ({order_resp['orderId']}). Start_$: {ASTER_NOTIONAL_POSITION:.2f}; Value: {float(ASTER_TGT_TAIL_BASE_QTY)*float(price):.2f}; Price: {float(price):.2f}') logging.info(f'ASTER ORDER PLACED SUCCESS: {order_resp}') print_summary(use_logging=True) @@ -634,13 +668,20 @@ async def run_algo(): await aster_cancel_all_orders() # EXTEND - if EXTEND_TGT_TAIL_ORDERABLE and ALGO_CONFIG.Allow_Ordering_Extend: - symbol = EXTEND_TICKER + if EXTEND_TGT_TAIL_ORDERABLE and ALGO_CONFIG.Overrides.Allow_Ordering_Extend: + Time_Since_Last_Aster_Fill_ms = ( datetime.now().timestamp()*1000 ) - Last_Aster_Fill_Time_Ts + if Time_Since_Last_Aster_Fill_ms > ( 1000 * ALGO_CONFIG.Config.Switch_To_Taker_Seconds ): # Change to allow taker orders if its been more than x seconds + post_only = False + price = EXTEND_TOB_PX - ALGO_CONFIG.Config.Price_Worsener_Extend if side == 'BUY' else EXTEND_TOB_PX + ALGO_CONFIG.Config.Price_Worsener_Extend + else: + post_only = True + price = EXTEND_TOB_PX + + symbol = EXTEND.symbol side = OrderSide.BUY if EXTEND_TGT_TAIL_BASE_QTY > 0.00 else OrderSide.SELL qty = Decimal(str(abs(EXTEND_TGT_TAIL_BASE_QTY))) - price = EXTEND_TOB_PX - ALGO_CONFIG.Price_Worsener_Extend if side == 'BUY' else EXTEND_TOB_PX + ALGO_CONFIG.Price_Worsener_Extend - if abs( ( float(EXTEND_TGT_TAIL_BASE_QTY)*float(price) ) + EXTEND_NOTIONAL_POSITION ) > ALGO_CONFIG.Max_Target_Notional*1.01: + if abs( ( float(EXTEND_TGT_TAIL_BASE_QTY)*float(price) ) + EXTEND_NOTIONAL_POSITION ) > ALGO_CONFIG.Config.Max_Target_Notional*ALGO_CONFIG.Config.Max_Order_Over_Notional_Ratio: logging.info(f'TRYING TO ORDER OVER MAX NOTIOANL - EXTEND: {EXTEND_NOTIONAL_POSITION:.2f} + {float(EXTEND_TGT_TAIL_BASE_QTY)*float(price):.2f} (qty: {float(EXTEND_TGT_TAIL_BASE_QTY):.2f}; px: {float(price):.2f})') await kill_algo() if EXTEND_OPEN_ORDERS: @@ -667,17 +708,20 @@ async def run_algo(): logging.info('EXTEND OPEN ORDER NO PX CHG; SKIPPING') else: try: + taker_fee = taker_fee=Decimal("0.00000") if post_only else Decimal("0.00025") order_resp = await EXTEND_CLIENT.place_order( market_name=symbol, amount_of_synthetic=qty, price=price, side=side, - taker_fee=Decimal("0.00025"), + taker_fee=taker_fee, previous_order_id=open_order_id, + post_only=post_only, ) except Exception as e: logging.error(f'EXTEND ORDER PLACEMENT FAILED - RESP: {order_resp}') logging.error(f'EXTEND ORDER PLACEMENT FAILED: {e}') + logging.error(f'EXTEND ORDER PLACEMENT FAILED - POSTED: market_name:{symbol}, amount_of_synthetic:{qty}, price:{price}, side:{side},taker_fee:{taker_fee}, previous_order_id:{open_order_id}, post_only:{post_only}') logging.error(traceback.format_exc()) order_resp_dict = dict(order_resp) @@ -694,6 +738,7 @@ async def run_algo(): order_dict['side'] = str(side) EXTEND_OPEN_ORDERS.append(order_dict) + Just_Rejected_Or_Expired = False utils.send_tg_alert(f'FR_ALGO - EXTEND Order ({order_dict.get('id', None)}). Start_$: {EXTEND_NOTIONAL_POSITION:.2f}; Value: {float(EXTEND_TGT_TAIL_BASE_QTY)*float(price):.2f}; Price: {float(price):.2f}') logging.info(f'EXTEND ORDER PLACED SUCCESS: {order_dict}') print_summary(use_logging=True) @@ -710,8 +755,8 @@ async def run_algo(): if ASTER_OPEN_ORDERS or EXTEND_OPEN_ORDERS: continue else: - time.sleep(ALGO_CONFIG.Loop_Sleep_Sec) - # print(f'_____ End No Open Orders _____ (Algo Engine ms: {(time.time() - loop_start)*1000:.2f}); Sleeping for sec: {ALGO_CONFIG.Loop_Sleep_Sec:.0f}') + time.sleep(ALGO_CONFIG.Config.Loop_Sleep_Sec) + # print(f'_____ End No Open Orders _____ (Algo Engine ms: {(time.time() - loop_start)*1000:.2f}); Sleeping for sec: {ALGO_CONFIG.Config.Loop_Sleep_Sec:.0f}') except KeyboardInterrupt: logging.info('CANCELLING OPEN ORDERS') @@ -736,10 +781,15 @@ async def main(): engine = create_async_engine('mysql+asyncmy://root:pwd@localhost/fund_rate') with open('algo_config.json', 'r', encoding='utf-8') as file: - ALGO_CONFIG = json.load(file, object_hook=lambda d: structs.Algo_Config(**d)) - ALGO_CONFIG.Max_Target_Notional = float(min([ASTER_MULT, EXTEND_MULT]) * ALGO_CONFIG.Target_Open_Cash_Position) + ALGO_CONFIG = json.load(file) + ALGO_CONFIG = structs.Algo_Config(**ALGO_CONFIG) - VAL_KEY.set('fr_orchestrator_output', json.dumps(asdict(ALGO_CONFIG))) + # with open('algo_config.json', 'r', encoding='utf-8') as file: + # ALGO_CONFIG = json.load(file, object_hook=lambda d: structs.Algo_Config(**d)) + + ALGO_CONFIG.Config.Max_Target_Notional = float(min([ASTER.mult, EXTEND.mult]) * ALGO_CONFIG.Config.Target_Open_Cash_Position) + + VAL_KEY.set('fr_orchestrator_output', json.dumps(ALGO_CONFIG.model_dump())) async with engine.connect() as CON: ### ASTER SETUP ### diff --git a/modules/structs.py b/modules/structs.py index d2bf0b3..88d31d1 100644 --- a/modules/structs.py +++ b/modules/structs.py @@ -3,25 +3,39 @@ from dataclasses import dataclass, field from typing import Any import valkey +from pydantic import BaseModel - -@dataclass(kw_only=True) -class Algo_Config: - Config_Updated_Timestamp: int +# @dataclass(kw_only=True) +class Algo_Config_Overrides(BaseModel): Allow_Ordering_Aster: bool Allow_Ordering_Extend: bool + Flatten_Open_Positions: bool + Flip_Side_For_Testing: bool + +# @dataclass(kw_only=True) +class Algo_Config_Config(BaseModel): Loop_Sleep_Sec: int + Max_Order_Over_Notional_Ratio: float Max_Target_Notional: float Min_Time_To_Funding_Minutes: int Min_Fund_Rate_Pct_To_Trade: float Price_Worsener_Aster: float Price_Worsener_Extend: float + Switch_To_Taker_Seconds: int Target_Open_Cash_Position: int - - Log_Summary_Each_Loop: bool = False - Print_Summary_Each_Loop: bool = False - Flatten_Open_Positions: bool = False - Flip_Side_For_Testing: bool = False + +# @dataclass(kw_only=True) +class Algo_Config_Logging(BaseModel): + Log_Summary_Each_Loop: bool + Print_Summary_Each_Loop: bool + +# @dataclass(kw_only=True) +class Algo_Config(BaseModel): + Updated_Timestamp: int + Config: Algo_Config_Config + Logging: Algo_Config_Logging + Overrides: Algo_Config_Overrides + @dataclass(kw_only=True) class Flags: diff --git a/requirements.txt b/requirements.txt index 4a4d001..b44e6de 100644 --- a/requirements.txt +++ b/requirements.txt @@ -22,4 +22,5 @@ nicegui # grpcio-tools==1.76.0 x10-python-trading-starknet eth-keys -eth-account \ No newline at end of file +eth-account +pydantic \ No newline at end of file diff --git a/ws_aster_fund_rate_all.py b/ws_aster_fund_rate_all.py new file mode 100644 index 0000000..023a4cc --- /dev/null +++ b/ws_aster_fund_rate_all.py @@ -0,0 +1,110 @@ +import asyncio +import json +import logging +import socket +import traceback +from datetime import datetime, timezone +from typing import AsyncContextManager +import math + +import numpy as np +import pandas as pd +import requests.packages.urllib3.util.connection as urllib3_cn # type: ignore +from sqlalchemy import text +import websockets +from sqlalchemy.ext.asyncio import create_async_engine +import valkey +import os +from dotenv import load_dotenv +import modules.utils as utils + +### Allow only ipv4 ### +def allowed_gai_family(): + return socket.AF_INET +urllib3_cn.allowed_gai_family = allowed_gai_family + +### Database ### +USE_DB: bool = False +USE_VK: bool = True +VK_FUND_RATE_ALL = 'fund_rate_aster_all' + +CON: AsyncContextManager | None = None +VAL_KEY = None + +### Logging ### +load_dotenv() +LOG_FILEPATH: str = os.getenv("LOGS_PATH") + '/Fund_Rate_Aster_FR_ALL.log' + +### Globals ### +WSS_URL = "wss://fstream.asterdex.com/ws/!markPrice@arr" + + +### Websocket ### +async def ws_stream(): + async for websocket in websockets.connect(WSS_URL): + logging.info(f"Connected to {WSS_URL}") + try: + async for message in websocket: + if isinstance(message, str): + try: + data = json.loads(message) + if data: + VAL_KEY.set(VK_FUND_RATE_ALL, json.dumps(data)) + # print(f'VK_SAVED: {len(data)}') + continue + else: + logging.info(f'Initial or unexpected data struct, skipping: {data}') + continue + except (json.JSONDecodeError, ValueError): + logging.warning(f'Message not in JSON format, skipping: {message}') + continue + else: + raise ValueError(f'Type: {type(data)} not expected: {message}') + except websockets.ConnectionClosed as e: + logging.error(f'Connection closed: {e}') + logging.error(traceback.format_exc()) + continue + except Exception as e: + logging.error(f'Connection closed: {e}') + logging.error(traceback.format_exc()) + +### Startup ### +async def main(): + global VAL_KEY + global CON + + if USE_VK: + VAL_KEY = valkey.Valkey(host='localhost', port=6379, db=0) + else: + VAL_KEY = None + logging.warning("VALKEY NOT BEING USED, NO DATA WILL BE PUBLISHED") + + if USE_DB: + engine = create_async_engine('mysql+asyncmy://root:pwd@localhost/fund_rate') + async with engine.connect() as CON: + # await create_rtds_btcusd_table(CON=CON) + await ws_stream() + else: + CON = None + logging.warning("DATABASE NOT BEING USED, NO DATA WILL BE RECORDED") + await ws_stream() + + +if __name__ == '__main__': + START_TIME = round(datetime.now().timestamp()*1000) + + logging.info(f'Log FilePath: {LOG_FILEPATH}') + + logging.basicConfig( + force=True, + filename=LOG_FILEPATH, + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s', + filemode='w' + ) + logging.info(f"STARTED: {START_TIME}") + + try: + asyncio.run(main()) + except KeyboardInterrupt: + logging.info("Stream stopped") \ No newline at end of file diff --git a/ws_extended_fund_rate_all.py b/ws_extended_fund_rate_all.py new file mode 100644 index 0000000..8e7a369 --- /dev/null +++ b/ws_extended_fund_rate_all.py @@ -0,0 +1,133 @@ +import asyncio +import json +import logging +import socket +import traceback +from datetime import datetime, timezone +from typing import AsyncContextManager +import math + +import numpy as np +import pandas as pd +import requests.packages.urllib3.util.connection as urllib3_cn # type: ignore +from sqlalchemy import text +import websockets +from sqlalchemy.ext.asyncio import create_async_engine +import valkey +import os +from dotenv import load_dotenv +import modules.utils as utils + +### Allow only ipv4 ### +def allowed_gai_family(): + return socket.AF_INET +urllib3_cn.allowed_gai_family = allowed_gai_family + +### Database ### +USE_DB: bool = False +USE_VK: bool = True +VK_FUND_RATE = 'fund_rate_extended' +VK_FUND_RATE_ALL = 'fund_rate_extended_all' + +CON: AsyncContextManager | None = None +VAL_KEY = None + +### Logging ### +load_dotenv() +LOG_FILEPATH: str = os.getenv("LOGS_PATH") + '/Fund_Rate_Extended_FR_ALL.log' + +### Globals ### +WSS_URL = "wss://api.starknet.extended.exchange/stream.extended.exchange/v1/funding/" +LOCAL_FUNDING_RATES = [] + +def time_round_down(dt, interval_mins=5) -> int: # returns timestamp in seconds + interval_secs = interval_mins * 60 + seconds = dt.timestamp() + rounded_seconds = math.floor(seconds / interval_secs) * interval_secs + + return rounded_seconds + +### Websocket ### +async def ws_stream(): + global LOCAL_FUNDING_RATES + + async for websocket in websockets.connect(WSS_URL): + logging.info(f"Connected to {WSS_URL}") + try: + async for message in websocket: + ts_arrival = round(datetime.now().timestamp()*1000) + if isinstance(message, str): + try: + data = json.loads(message) + if data.get('data', None) is not None: + # print(f'FR: {data}') + # fr_next_update_ts = (time_round_down(dt=datetime.now(timezone.utc), interval_mins=60)+(60*60))*1000 + fr_update = { + 'sequence_id': data['seq'], + 'timestamp_arrival': ts_arrival, + 'timestamp_msg': data['ts'], + 'symbol': data['data']['m'], + 'funding_rate': float(data['data']['f']), + 'funding_rate_updated_ts_ms': data['data']['T'], + # 'next_funding_time_ts_ms': fr_next_update_ts, + } + LOCAL_FUNDING_RATES = utils.upsert_list_of_dicts_by_id(LOCAL_FUNDING_RATES, fr_update, id='symbol', seq_check_field='sequence_id') + VAL_KEY.set(VK_FUND_RATE_ALL, json.dumps(LOCAL_FUNDING_RATES)) + # print(f'VK_SAVED: {data}') + continue + else: + logging.info(f'Initial or unexpected data struct, skipping: {data}') + continue + except (json.JSONDecodeError, ValueError): + logging.warning(f'Message not in JSON format, skipping: {message}') + continue + else: + raise ValueError(f'Type: {type(data)} not expected: {message}') + except websockets.ConnectionClosed as e: + logging.error(f'Connection closed: {e}') + logging.error(traceback.format_exc()) + continue + except Exception as e: + logging.error(f'Connection closed: {e}') + logging.error(traceback.format_exc()) + +### Startup ### +async def main(): + global VAL_KEY + global CON + + if USE_VK: + VAL_KEY = valkey.Valkey(host='localhost', port=6379, db=0) + else: + VAL_KEY = None + logging.warning("VALKEY NOT BEING USED, NO DATA WILL BE PUBLISHED") + + if USE_DB: + engine = create_async_engine('mysql+asyncmy://root:pwd@localhost/fund_rate') + async with engine.connect() as CON: + # await create_rtds_btcusd_table(CON=CON) + await ws_stream() + else: + CON = None + logging.warning("DATABASE NOT BEING USED, NO DATA WILL BE RECORDED") + await ws_stream() + + +if __name__ == '__main__': + START_TIME = round(datetime.now().timestamp()*1000) + + logging.info(f'Log FilePath: {LOG_FILEPATH}') + + logging.basicConfig( + force=True, + filename=LOG_FILEPATH, + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s', + filemode='w' + ) + logging.info(f"STARTED: {START_TIME}") + + try: + asyncio.run(main()) + except KeyboardInterrupt: + logging.info("Stream stopped") \ No newline at end of file