Files
Funding_Rate/engine_best_funding_rate.ipynb

2143 lines
68 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"execution_count": 21,
"id": "0b5ca901",
"metadata": {},
"outputs": [],
"source": [
"import requests\n",
"import pandas as pd\n",
"import numpy as np\n",
"from datetime import datetime\n",
"import time\n",
"import json\n",
"import valkey\n",
"from dataclasses import dataclass, field, asdict\n",
"import modules.structs as structs\n",
"import modules.aster_auth as aster_auth\n",
"import modules.manual_leverage as leverage\n",
"VAL_KEY = valkey.Valkey(host='localhost', port=6379, db=0, decode_responses=True)\n",
"\n",
"df_leverage_by_exch = pd.DataFrame(data=leverage.LEVERAGE_BY_EXCH)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "20665e82",
"metadata": {},
"outputs": [],
"source": [
"### ********** TODO: ADD IN VOLUME DATA TO FILTER MKTS ###"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "53647b40",
"metadata": {},
"outputs": [],
"source": [
"# ### ASTER Historical FR ###\n",
"# params = {\n",
"# 'limit': 1000,\n",
"# }\n",
"# r = json.loads(requests.get('https://fapi.asterdex.com/fapi/v3/fundingRate', params=params).text)\n",
"# df_aster_hist_fr = pd.DataFrame(r)\n",
"# df_aster_hist_fr['funding_rate_ts_dt'] = pd.to_datetime(df_aster_hist_fr['fundingTime'], unit='ms')\n",
"# df_aster_hist_fr = df_aster_hist_fr.sort_values(by='fundingTime', ascending=True).drop_duplicates(subset=['symbol'], keep='last')"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "1f3b65ee",
"metadata": {},
"outputs": [],
"source": [
"# ### ASTER Current FR ###\n",
"# r = json.loads(requests.get('https://fapi.asterdex.com/fapi/v3/fundingInfo').text)\n",
"# df_aster_current_fr = pd.DataFrame(r)\n",
"# df_aster_current_fr['funding_rate_ts_dt'] = pd.to_datetime(df_aster_current_fr['time'], unit='ms')\n",
"# df_aster_current_fr['funding_rate'] = df_aster_current_fr['interestRate']\n"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "5176d5b1",
"metadata": {},
"outputs": [],
"source": [
"### ASTER EXCHANGE INFO ###\n",
"fut_acct_exchangeInfo: dict = {\n",
" \"url\": \"/fapi/v3/exchangeInfo\",\n",
" \"method\": \"GET\",\n",
" \"params\": {}\n",
"}\n",
"r: dict = await aster_auth.post_authenticated_url(fut_acct_exchangeInfo) # ty:ignore[invalid-assignment]\n",
"df_aster_exch_info = pd.DataFrame(r['symbols'])\n",
"df_aster_exch_info['min_order_size'] = df_aster_exch_info['filters'].apply(lambda x: [f for f in x if f.get('filterType', None) == 'LOT_SIZE'][0]['minQty'] )\n",
"df_aster_exch_info['min_price'] = df_aster_exch_info['filters'].apply(lambda x: [f for f in x if f.get('filterType', None) == 'PRICE_FILTER'][0]['minPrice'] )\n",
"\n",
"fut_acct_ticker_stats: dict = {\n",
" \"url\": \"/fapi/v3/ticker/24hr\",\n",
" \"method\": \"GET\",\n",
" \"params\": {}\n",
"}\n",
"r: dict = await aster_auth.post_authenticated_url(fut_acct_ticker_stats) # ty:ignore[invalid-assignment]\n",
"df_aster_ticker_stats = pd.DataFrame(r)\n",
"\n",
"df_aster_exch_info = df_aster_exch_info.merge(df_aster_ticker_stats[['symbol','quoteVolume']].rename({'quoteVolume':'daily_volume'}, axis=1), on='symbol', how='left')\n",
"df_aster_exch_info['daily_volume'] = df_aster_exch_info['daily_volume'].astype(float)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"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['daily_volume'] = df_extend_current_mkt_stats['marketStats'].apply(lambda x: x.get('dailyVolume',{})).astype(float)\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'] = 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','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": 39,
"id": "62815940",
"metadata": {},
"outputs": [],
"source": [
"### ASTER Current FR from Mark Price Req ###\n",
"# 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": 40,
"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'))) # ty:ignore[invalid-argument-type]\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()\n",
"df_aster_current_fr = df_aster_current_fr.merge(df_aster_exch_info[['symbol','daily_volume','min_order_size','min_price']], on='symbol', how='left')"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "1ce2fde4",
"metadata": {},
"outputs": [],
"source": [
"### EXTEND CURRENT FR - WS ###\n",
"df_extended_current_fr = pd.DataFrame(json.loads(VAL_KEY.get('fund_rate_extended_all'))) # ty:ignore[invalid-argument-type]\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','min_order_size','min_price','daily_volume']].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": 42,
"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_net = 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['net_mult'] = 1 / ( ( 0.5 / df_comb_current_fr_net['max_leverage_ext'] ) + ( 0.5 / df_comb_current_fr_net['max_leverage_ast'] ) )\n",
"df_comb_current_fr_net['net_mult'] = df_comb_current_fr_net['net_mult'].round(2)\n",
"df_comb_current_fr_net['net_mult_x_net_fr_abs'] = df_comb_current_fr_net['net_funding_rate_abs'] * df_comb_current_fr_net['net_mult']"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "f5ade993",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'symbol_ast': 'LITUSDT', 'symbol_extended': 'LIT-USD'}"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_best_fr_rate = df_comb_current_fr_net[['symbol_ext','symbol_ast','daily_volume_ext','daily_volume_ast','min_price_ext','min_price_ast','min_order_size_ext','min_order_size_ast','funding_rate_ext','funding_rate_ast','max_leverage_ext','max_leverage_ast','lh_asset_ext','lh_asset_ast','rh_asset_ext','rh_asset_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",
"\n",
"min_daily_volume = 100_000\n",
"df_best_fr_rate = df_best_fr_rate.loc[ (df_best_fr_rate['daily_volume_ast']>=min_daily_volume) & (df_best_fr_rate['daily_volume_ext']>min_daily_volume) ,:].reset_index(drop=True)\n",
"\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": null,
"id": "3c11d2f4",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 44,
"id": "6f893d09",
"metadata": {},
"outputs": [
{
"ename": "KeyError",
"evalue": "0",
"output_type": "error",
"traceback": [
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
"\u001b[31mKeyError\u001b[39m Traceback (most recent call last)",
"\u001b[36mFile \u001b[39m\u001b[32m~/miniconda3/envs/py_313/lib/python3.13/site-packages/pandas/core/indexes/base.py:3641\u001b[39m, in \u001b[36mIndex.get_loc\u001b[39m\u001b[34m(self, key)\u001b[39m\n\u001b[32m 3640\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m3641\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43m_engine\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mget_loc\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43mcasted_key\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 3642\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n",
"\u001b[36mFile \u001b[39m\u001b[32mpandas/_libs/index.pyx:168\u001b[39m, in \u001b[36mpandas._libs.index.IndexEngine.get_loc\u001b[39m\u001b[34m()\u001b[39m\n\u001b[32m--> \u001b[39m\u001b[32m168\u001b[39m \u001b[33m'Could not get source, probably due dynamically evaluated source code.'\u001b[39m\n",
"\u001b[36mFile \u001b[39m\u001b[32mpandas/_libs/index.pyx:197\u001b[39m, in \u001b[36mpandas._libs.index.IndexEngine.get_loc\u001b[39m\u001b[34m()\u001b[39m\n\u001b[32m--> \u001b[39m\u001b[32m197\u001b[39m \u001b[33m'Could not get source, probably due dynamically evaluated source code.'\u001b[39m\n",
"\u001b[36mFile \u001b[39m\u001b[32mpandas/_libs/hashtable_class_helper.pxi:2761\u001b[39m, in \u001b[36mpandas._libs.hashtable.Int64HashTable.get_item\u001b[39m\u001b[34m()\u001b[39m\n\u001b[32m-> \u001b[39m\u001b[32m2761\u001b[39m \u001b[33m'Could not get source, probably due dynamically evaluated source code.'\u001b[39m\n",
"\u001b[36mFile \u001b[39m\u001b[32mpandas/_libs/hashtable_class_helper.pxi:2785\u001b[39m, in \u001b[36mpandas._libs.hashtable.Int64HashTable.get_item\u001b[39m\u001b[34m()\u001b[39m\n\u001b[32m-> \u001b[39m\u001b[32m2785\u001b[39m \u001b[33m'Could not get source, probably due dynamically evaluated source code.'\u001b[39m\n",
"\u001b[31mKeyError\u001b[39m: 0",
"\nThe above exception was the direct cause of the following exception:\n",
"\u001b[31mKeyError\u001b[39m Traceback (most recent call last)",
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[44]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m 1\u001b[39m ASTER = structs.Perpetual_Exchange(\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m mult = int(df_best_fr_rate[\u001b[33m'max_leverage_ast'\u001b[39m][\u001b[32m0\u001b[39m]),\n\u001b[32m 3\u001b[39m lh_asset = df_best_fr_rate[\u001b[33m'lh_asset_ast'\u001b[39m][\u001b[32m0\u001b[39m],\n\u001b[32m 4\u001b[39m rh_asset = df_best_fr_rate[\u001b[33m'rh_asset_ast'\u001b[39m][\u001b[32m0\u001b[39m],\n\u001b[32m 5\u001b[39m symbol_asset_separator = \u001b[33m''\u001b[39m,\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/miniconda3/envs/py_313/lib/python3.13/site-packages/pandas/core/series.py:959\u001b[39m, in \u001b[36mSeries.__getitem__\u001b[39m\u001b[34m(self, key)\u001b[39m\n\u001b[32m 954\u001b[39m key = unpack_1tuple(key)\n\u001b[32m 956\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m key_is_scalar:\n\u001b[32m 957\u001b[39m \u001b[38;5;66;03m# Note: GH#50617 in 3.0 we changed int key to always be treated as\u001b[39;00m\n\u001b[32m 958\u001b[39m \u001b[38;5;66;03m# a label, matching DataFrame behavior.\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m959\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43m_get_value\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43mkey\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 961\u001b[39m \u001b[38;5;66;03m# Convert generator to list before going through hashable part\u001b[39;00m\n\u001b[32m 962\u001b[39m \u001b[38;5;66;03m# (We will iterate through the generator there to check for slices)\u001b[39;00m\n\u001b[32m 963\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m is_iterator(key):\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/miniconda3/envs/py_313/lib/python3.13/site-packages/pandas/core/series.py:1046\u001b[39m, in \u001b[36mSeries._get_value\u001b[39m\u001b[34m(self, label, takeable)\u001b[39m\n\u001b[32m 1043\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m._values[label]\n\u001b[32m 1045\u001b[39m \u001b[38;5;66;03m# Similar to Index.get_value, but we do not fall back to positional\u001b[39;00m\n\u001b[32m-> \u001b[39m\u001b[32m1046\u001b[39m loc = \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mindex\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mget_loc\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43mlabel\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 1048\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m is_integer(loc):\n\u001b[32m 1049\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m._values[loc]\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/miniconda3/envs/py_313/lib/python3.13/site-packages/pandas/core/indexes/base.py:3648\u001b[39m, in \u001b[36mIndex.get_loc\u001b[39m\u001b[34m(self, key)\u001b[39m\n\u001b[32m 3643\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(casted_key, \u001b[38;5;28mslice\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m (\n\u001b[32m 3644\u001b[39m \u001b[38;5;28misinstance\u001b[39m(casted_key, abc.Iterable)\n\u001b[32m 3645\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28many\u001b[39m(\u001b[38;5;28misinstance\u001b[39m(x, \u001b[38;5;28mslice\u001b[39m) \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m casted_key)\n\u001b[32m 3646\u001b[39m ):\n\u001b[32m 3647\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m InvalidIndexError(key) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01merr\u001b[39;00m\n\u001b[32m-> \u001b[39m\u001b[32m3648\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01merr\u001b[39;00m\n\u001b[32m 3649\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[32m 3650\u001b[39m \u001b[38;5;66;03m# If we have a listlike key, _check_indexing_error will raise\u001b[39;00m\n\u001b[32m 3651\u001b[39m \u001b[38;5;66;03m# InvalidIndexError. Otherwise we fall through and re-raise\u001b[39;00m\n\u001b[32m 3652\u001b[39m \u001b[38;5;66;03m# the TypeError.\u001b[39;00m\n\u001b[32m 3653\u001b[39m \u001b[38;5;28mself\u001b[39m._check_indexing_error(key)\n",
"\u001b[31mKeyError\u001b[39m: 0"
]
}
],
"source": [
"ASTER = structs.Perpetual_Exchange(\n",
" mult = int(df_best_fr_rate['max_leverage_ast'][0]),\n",
" lh_asset = df_best_fr_rate['lh_asset_ast'][0],\n",
" rh_asset = df_best_fr_rate['rh_asset_ast'][0],\n",
" symbol_asset_separator = '',\n",
" initial_funding_rate=float(df_best_fr_rate['funding_rate_ast'][0]),\n",
" min_price=float(df_best_fr_rate['min_price_ast'][0]),\n",
" min_order_size=float(df_best_fr_rate['min_order_size_ast'][0]),\n",
")\n",
" \n",
"EXTEND = structs.Perpetual_Exchange(\n",
" mult = int(df_best_fr_rate['max_leverage_ext'][0]),\n",
" lh_asset = df_best_fr_rate['lh_asset_ext'][0],\n",
" rh_asset = df_best_fr_rate['rh_asset_ext'][0],\n",
" symbol_asset_separator = '-',\n",
" initial_funding_rate=float(df_best_fr_rate['funding_rate_ext'][0]),\n",
" min_price=float(df_best_fr_rate['min_price_ext'][0]),\n",
" min_order_size=float(df_best_fr_rate['min_order_size_ext'][0]),\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "88fea071",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.microsoft.datawrangler.viewer.v0+json": {
"columns": [
{
"name": "index",
"rawType": "int64",
"type": "integer"
},
{
"name": "symbol_ext",
"rawType": "str",
"type": "string"
},
{
"name": "funding_rate_updated_ts_ms_ext",
"rawType": "int64",
"type": "integer"
},
{
"name": "funding_rate_ext",
"rawType": "float64",
"type": "float"
},
{
"name": "funding_rate_updated_dt_ext",
"rawType": "datetime64[ms]",
"type": "datetime"
},
{
"name": "assetName",
"rawType": "str",
"type": "string"
},
{
"name": "status",
"rawType": "str",
"type": "string"
},
{
"name": "next_funding_ts_ext",
"rawType": "float64",
"type": "float"
},
{
"name": "min_order_size_ext",
"rawType": "str",
"type": "string"
},
{
"name": "min_price_ext",
"rawType": "str",
"type": "string"
},
{
"name": "USDT_Symbol",
"rawType": "str",
"type": "string"
},
{
"name": "time_delta_to_next_funding_ext",
"rawType": "timedelta64[us]",
"type": "unknown"
},
{
"name": "symbol_ast",
"rawType": "str",
"type": "string"
},
{
"name": "funding_rate_updated_ts_ms_ast",
"rawType": "int64",
"type": "integer"
},
{
"name": "funding_rate_ast",
"rawType": "float64",
"type": "float"
},
{
"name": "next_funding_ts_ast",
"rawType": "int64",
"type": "integer"
},
{
"name": "funding_rate_updated_dt_ast",
"rawType": "datetime64[ms]",
"type": "datetime"
},
{
"name": "time_delta_to_next_funding_ast",
"rawType": "timedelta64[us]",
"type": "unknown"
},
{
"name": "min_order_size_ast",
"rawType": "str",
"type": "string"
},
{
"name": "min_price_ast",
"rawType": "str",
"type": "string"
},
{
"name": "next_funding_at_same_time",
"rawType": "bool",
"type": "boolean"
},
{
"name": "net_funding_rate",
"rawType": "float64",
"type": "float"
},
{
"name": "net_funding_rate_abs",
"rawType": "float64",
"type": "float"
}
],
"ref": "2d1a573a-6048-4cf4-9729-fa83adba2a90",
"rows": [
[
"4",
"BNB-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"BNB",
"ACTIVE",
"1777622400000.0",
"0.01",
"0.01",
"BNBUSDT",
"0 days 00:23:07.734530",
"BNBUSDT",
"1777621011000",
"0.00018382",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.01",
"0.010",
"True",
"0.00017082000000000002",
"0.00017082000000000002"
],
[
"2",
"SOL-USD",
"1777620959597",
"-1.2e-05",
"2026-05-01 07:35:59.597000",
"SOL",
"ACTIVE",
"1777622400000.0",
"0.1",
"0.01",
"SOLUSDT",
"0 days 00:23:07.734530",
"SOLUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.01",
"0.4200",
"True",
"0.00011200000000000001",
"0.00011200000000000001"
],
[
"9",
"AVAX-USD",
"1777620959597",
"-8e-06",
"2026-05-01 07:35:59.597000",
"AVAX",
"ACTIVE",
"1777622400000.0",
"1",
"0.001",
"AVAXUSDT",
"0 days 00:23:07.734530",
"AVAXUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0010",
"True",
"0.00010800000000000001",
"0.00010800000000000001"
],
[
"29",
"MOODENG-USD",
"1777620959597",
"4e-06",
"2026-05-01 07:35:59.597000",
"MOODENG",
"ACTIVE",
"1777622400000.0",
"100",
"0.00001",
"MOODENGUSDT",
"0 days 00:23:07.734530",
"MOODENGUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0000100",
"True",
"9.6e-05",
"9.6e-05"
],
[
"64",
"ZEC-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"ZEC",
"ACTIVE",
"1777622400000.0",
"0.1",
"0.001",
"ZECUSDT",
"0 days 00:23:07.734530",
"ZECUSDT",
"1777621011000",
"-8.105e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.001",
"0.0100",
"True",
"9.405000000000001e-05",
"9.405000000000001e-05"
],
[
"27",
"1000BONK-USD",
"1777620959597",
"-4.4e-05",
"2026-05-01 07:35:59.597000",
"1000BONK",
"ACTIVE",
"1777622400000.0",
"1000",
"0.000001",
"1000BONKUSDT",
"0 days 00:23:07.734530",
"1000BONKUSDT",
"1777621011000",
"5e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0000010",
"True",
"9.400000000000001e-05",
"9.400000000000001e-05"
],
[
"18",
"DOT-USD",
"1777620959597",
"9e-06",
"2026-05-01 07:35:59.597000",
"DOT",
"ACTIVE",
"1777622400000.0",
"10",
"0.0001",
"DOTUSDT",
"0 days 00:23:07.734530",
"DOTUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.1",
"0.380",
"True",
"9.1e-05",
"9.1e-05"
],
[
"26",
"SEI-USD",
"1777620959597",
"1.2e-05",
"2026-05-01 07:35:59.597000",
"SEI",
"ACTIVE",
"1777622400000.0",
"100",
"0.00001",
"SEIUSDT",
"0 days 00:23:07.734530",
"SEIUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.000010",
"True",
"8.8e-05",
"8.8e-05"
],
[
"13",
"LINK-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"LINK",
"ACTIVE",
"1777622400000.0",
"1",
"0.001",
"LINKUSDT",
"0 days 00:23:07.734530",
"LINKUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.01",
"0.464",
"True",
"8.7e-05",
"8.7e-05"
],
[
"16",
"WLD-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"WLD",
"ACTIVE",
"1777622400000.0",
"10",
"0.0001",
"WLDUSDT",
"0 days 00:23:07.734530",
"WLDUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.000100",
"True",
"8.7e-05",
"8.7e-05"
],
[
"14",
"BCH-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"BCH",
"ACTIVE",
"1777622400000.0",
"0.01",
"0.01",
"BCHUSDT",
"0 days 00:23:07.734530",
"BCHUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.001",
"0.01",
"True",
"8.7e-05",
"8.7e-05"
],
[
"15",
"ARB-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"ARB",
"ACTIVE",
"1777622400000.0",
"10",
"0.0001",
"ARBUSDT",
"0 days 00:23:07.734530",
"ARBUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.1",
"0.000100",
"True",
"8.7e-05",
"8.7e-05"
],
[
"3",
"DOGE-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"DOGE",
"ACTIVE",
"1777622400000.0",
"100",
"0.00001",
"DOGEUSDT",
"0 days 00:23:07.734530",
"DOGEUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.002440",
"True",
"8.7e-05",
"8.7e-05"
],
[
"8",
"NEAR-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"NEAR",
"ACTIVE",
"1777622400000.0",
"10",
"0.0001",
"NEARUSDT",
"0 days 00:23:07.734530",
"NEARUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0480",
"True",
"8.7e-05",
"8.7e-05"
],
[
"11",
"TRX-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"TRX",
"ACTIVE",
"1777622400000.0",
"100",
"0.00001",
"TRXUSDT",
"0 days 00:23:07.734530",
"TRXUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.00132",
"True",
"8.7e-05",
"8.7e-05"
],
[
"10",
"LTC-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"LTC",
"ACTIVE",
"1777622400000.0",
"0.1",
"0.01",
"LTCUSDT",
"0 days 00:23:07.734530",
"LTCUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.001",
"3.61",
"True",
"8.7e-05",
"8.7e-05"
],
[
"6",
"1000PEPE-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"1000PEPE",
"ACTIVE",
"1777622400000.0",
"1000",
"0.000001",
"1000PEPEUSDT",
"0 days 00:23:07.734530",
"1000PEPEUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0000001",
"True",
"8.7e-05",
"8.7e-05"
],
[
"32",
"ENA-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"ENA",
"ACTIVE",
"1777622400000.0",
"100",
"0.00001",
"ENAUSDT",
"0 days 00:23:07.734530",
"ENAUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0000100",
"True",
"8.7e-05",
"8.7e-05"
],
[
"28",
"1000SHIB-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"1000SHIB",
"ACTIVE",
"1777622400000.0",
"1000",
"0.000001",
"1000SHIBUSDT",
"0 days 00:23:07.734530",
"1000SHIBUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.000160",
"True",
"8.7e-05",
"8.7e-05"
],
[
"53",
"CRV-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"CRV",
"ACTIVE",
"1777622400000.0",
"10",
"0.00001",
"CRVUSDT",
"0 days 00:23:07.734530",
"CRVUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.1",
"0.031",
"True",
"8.7e-05",
"8.7e-05"
],
[
"21",
"UNI-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"UNI",
"ACTIVE",
"1777622400000.0",
"1",
"0.0001",
"UNIUSDT",
"0 days 00:23:07.734530",
"UNIUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.3730",
"True",
"8.7e-05",
"8.7e-05"
],
[
"12",
"ADA-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"ADA",
"ACTIVE",
"1777622400000.0",
"10",
"0.0001",
"ADAUSDT",
"0 days 00:23:07.734530",
"ADAUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.01740",
"True",
"8.7e-05",
"8.7e-05"
],
[
"22",
"APT-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"APT",
"ACTIVE",
"1777622400000.0",
"1",
"0.0001",
"APTUSDT",
"0 days 00:23:07.734530",
"APTUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.1",
"0.00010",
"True",
"8.7e-05",
"8.7e-05"
],
[
"20",
"SUI-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"SUI",
"ACTIVE",
"1777622400000.0",
"10",
"0.0001",
"SUIUSDT",
"0 days 00:23:07.734530",
"SUIUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.1",
"0.000100",
"True",
"8.7e-05",
"8.7e-05"
],
[
"17",
"OP-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"OP",
"ACTIVE",
"1777622400000.0",
"10",
"0.0001",
"OPUSDT",
"0 days 00:23:07.734530",
"OPUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.1",
"0.0001000",
"True",
"8.7e-05",
"8.7e-05"
],
[
"75",
"XLM-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"XLM",
"ACTIVE",
"1777622400000.0",
"100",
"0.00001",
"XLMUSDT",
"0 days 00:23:07.734530",
"XLMUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.000010",
"True",
"8.7e-05",
"8.7e-05"
],
[
"57",
"LINEA-USD",
"1777620959597",
"2e-05",
"2026-05-01 07:35:59.597000",
"LINEA",
"ACTIVE",
"1777622400000.0",
"1000",
"0.000001",
"LINEAUSDT",
"0 days 00:23:07.734530",
"LINEAUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0000010",
"True",
"8e-05",
"8e-05"
],
[
"36",
"TRUMP-USD",
"1777620959597",
"-2e-05",
"2026-05-01 07:35:59.597000",
"TRUMP",
"ACTIVE",
"1777622400000.0",
"1",
"0.001",
"TRUMPUSDT",
"0 days 00:23:07.734530",
"TRUMPUSDT",
"1777621011000",
"5e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.01",
"0.00100",
"True",
"7.000000000000001e-05",
"7.000000000000001e-05"
],
[
"70",
"LIT-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"LIT",
"ACTIVE",
"1777622400000.0",
"10",
"0.0001",
"LITUSDT",
"0 days 00:23:07.734530",
"LITUSDT",
"1777621011000",
"8.282e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0001000",
"True",
"6.981999999999999e-05",
"6.981999999999999e-05"
],
[
"0",
"BTC-USD",
"1777620959597",
"5e-06",
"2026-05-01 07:35:59.597000",
"BTC",
"ACTIVE",
"1777622400000.0",
"0.0001",
"1",
"BTCUSDT",
"0 days 00:23:07.734530",
"BTCUSDT",
"1777621011000",
"-5.894e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.001",
"1",
"True",
"6.394e-05",
"6.394e-05"
],
[
"74",
"XPT-USD",
"1777620959597",
"5.4e-05",
"2026-05-01 07:35:59.597000",
"XPT",
"ACTIVE",
"1777622400000.0",
"0.01",
"0.1",
"XPTUSDT",
"0 days 00:23:07.734530",
"XPTUSDT",
"1777621011000",
"0.0",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.001",
"0.0100",
"True",
"5.4e-05",
"5.4e-05"
],
[
"35",
"AAVE-USD",
"1777620959597",
"4.9e-05",
"2026-05-01 07:35:59.597000",
"AAVE",
"ACTIVE",
"1777622400000.0",
"0.1",
"0.01",
"AAVEUSDT",
"0 days 00:23:07.734530",
"AAVEUSDT",
"1777621011000",
"0.0001",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.1",
"4.400",
"True",
"5.1000000000000006e-05",
"5.1000000000000006e-05"
],
[
"54",
"ZORA-USD",
"1777620959597",
"4e-06",
"2026-05-01 07:35:59.597000",
"ZORA",
"ACTIVE",
"1777622400000.0",
"1000",
"0.000001",
"ZORAUSDT",
"0 days 00:23:07.734530",
"ZORAUSDT",
"1777621011000",
"5e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0000100",
"True",
"4.6e-05",
"4.6e-05"
],
[
"56",
"WLFI-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"WLFI",
"ACTIVE",
"1777622400000.0",
"100",
"0.00001",
"WLFIUSDT",
"0 days 00:23:07.734530",
"WLFIUSDT",
"1777621011000",
"5.848e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0001000",
"True",
"4.5480000000000005e-05",
"4.5480000000000005e-05"
],
[
"1",
"ETH-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"ETH",
"ACTIVE",
"1777622400000.0",
"0.01",
"0.1",
"ETHUSDT",
"0 days 00:23:07.734530",
"ETHUSDT",
"1777621011000",
"-3.238e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.001",
"0.01",
"True",
"4.5379999999999996e-05",
"4.5379999999999996e-05"
],
[
"48",
"TON-USD",
"1777620959597",
"6e-06",
"2026-05-01 07:35:59.597000",
"TON",
"ACTIVE",
"1777622400000.0",
"10",
"0.0001",
"TONUSDT",
"0 days 00:23:07.734530",
"TONUSDT",
"1777621011000",
"5e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.1",
"0.000100",
"True",
"4.4e-05",
"4.4e-05"
],
[
"43",
"INIT-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"INIT",
"ACTIVE",
"1777622400000.0",
"10",
"0.00001",
"INITUSDT",
"0 days 00:23:07.734530",
"INITUSDT",
"1777621011000",
"-3.006e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0000100",
"True",
"4.306e-05",
"4.306e-05"
],
[
"71",
"XMR-USD",
"1777620959597",
"5.5e-05",
"2026-05-01 07:35:59.597000",
"XMR",
"ACTIVE",
"1777622400000.0",
"0.1",
"0.01",
"XMRUSDT",
"0 days 00:23:07.734530",
"XMRUSDT",
"1777621011000",
"1.25e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.001",
"0.01",
"True",
"4.25e-05",
"4.25e-05"
],
[
"46",
"LDO-USD",
"1777620959597",
"-2.6e-05",
"2026-05-01 07:35:59.597000",
"LDO",
"ACTIVE",
"1777622400000.0",
"10",
"0.0001",
"LDOUSDT",
"0 days 00:23:07.734530",
"LDOUSDT",
"1777621011000",
"1.25e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0010000",
"True",
"3.85e-05",
"3.85e-05"
],
[
"79",
"CHIP-USD",
"1777620959597",
"-0.000121",
"2026-05-01 07:35:59.597000",
"CHIP",
"ACTIVE",
"1777622400000.0",
"100",
"0.000001",
"CHIPUSDT",
"0 days 00:23:07.734530",
"CHIPUSDT",
"1777621011000",
"-0.00015834",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0000100",
"True",
"3.7340000000000005e-05",
"3.7340000000000005e-05"
],
[
"33",
"FARTCOIN-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"FARTCOIN",
"ACTIVE",
"1777622400000.0",
"10",
"0.00001",
"FARTCOINUSDT",
"0 days 00:23:07.734530",
"FARTCOINUSDT",
"1777621011000",
"5e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.1",
"0.000100",
"True",
"3.7000000000000005e-05",
"3.7000000000000005e-05"
],
[
"60",
"AVNT-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"AVNT",
"ACTIVE",
"1777622400000.0",
"10",
"0.0001",
"AVNTUSDT",
"0 days 00:23:07.734530",
"AVNTUSDT",
"1777621011000",
"5e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0001000",
"True",
"3.7000000000000005e-05",
"3.7000000000000005e-05"
],
[
"51",
"PUMP-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"PUMP",
"ACTIVE",
"1777622400000.0",
"1000",
"0.000001",
"PUMPUSDT",
"0 days 00:23:07.734530",
"PUMPUSDT",
"1777621011000",
"5e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0000010",
"True",
"3.7000000000000005e-05",
"3.7000000000000005e-05"
],
[
"31",
"PENGU-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"PENGU",
"ACTIVE",
"1777622400000.0",
"1000",
"0.000001",
"PENGUUSDT",
"0 days 00:23:07.734530",
"PENGUUSDT",
"1777621011000",
"5e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0000010",
"True",
"3.7000000000000005e-05",
"3.7000000000000005e-05"
],
[
"19",
"ONDO-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"ONDO",
"ACTIVE",
"1777622400000.0",
"10",
"0.0001",
"ONDOUSDT",
"0 days 00:23:07.734530",
"ONDOUSDT",
"1777621011000",
"5e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.1",
"0.000100",
"True",
"3.7000000000000005e-05",
"3.7000000000000005e-05"
],
[
"50",
"XAG-USD",
"1777620959597",
"1.4e-05",
"2026-05-01 07:35:59.597000",
"XAG",
"ACTIVE",
"1777622400000.0",
"0.1",
"0.001",
"XAGUSDT",
"0 days 00:23:07.734530",
"XAGUSDT",
"1777621011000",
"4.798e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.001",
"0.0100",
"True",
"3.3979999999999997e-05",
"3.3979999999999997e-05"
],
[
"65",
"CAKE-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"CAKE",
"ACTIVE",
"1777622400000.0",
"10",
"0.0001",
"CAKEUSDT",
"0 days 00:23:07.734530",
"CAKEUSDT",
"1777621011000",
"-1.867e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.00500",
"True",
"3.167e-05",
"3.167e-05"
],
[
"58",
"ASTER-USD",
"1777620959597",
"1.3e-05",
"2026-05-01 07:35:59.597000",
"ASTER",
"ACTIVE",
"1777622400000.0",
"10",
"0.00001",
"ASTERUSDT",
"0 days 00:23:07.734530",
"ASTERUSDT",
"1777621011000",
"4.213e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.01",
"0.00010",
"True",
"2.913e-05",
"2.913e-05"
],
[
"55",
"XPL-USD",
"1777620959597",
"2.5e-05",
"2026-05-01 07:35:59.597000",
"XPL",
"ACTIVE",
"1777622400000.0",
"10",
"0.00001",
"XPLUSDT",
"0 days 00:23:07.734530",
"XPLUSDT",
"1777621011000",
"5e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"1",
"0.0001000",
"True",
"2.5e-05",
"2.5e-05"
],
[
"30",
"HYPE-USD",
"1777620959597",
"9e-06",
"2026-05-01 07:35:59.597000",
"HYPE",
"ACTIVE",
"1777622400000.0",
"0.1",
"0.001",
"HYPEUSDT",
"0 days 00:23:07.734530",
"HYPEUSDT",
"1777621011000",
"2.936e-05",
"1777622400000",
"2026-05-01 07:36:51",
"0 days 00:23:08.055814",
"0.01",
"0.00100",
"True",
"2.036e-05",
"2.036e-05"
]
],
"shape": {
"columns": 22,
"rows": 81
}
},
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>symbol_ext</th>\n",
" <th>funding_rate_updated_ts_ms_ext</th>\n",
" <th>funding_rate_ext</th>\n",
" <th>funding_rate_updated_dt_ext</th>\n",
" <th>assetName</th>\n",
" <th>status</th>\n",
" <th>next_funding_ts_ext</th>\n",
" <th>min_order_size_ext</th>\n",
" <th>min_price_ext</th>\n",
" <th>USDT_Symbol</th>\n",
" <th>...</th>\n",
" <th>funding_rate_updated_ts_ms_ast</th>\n",
" <th>funding_rate_ast</th>\n",
" <th>next_funding_ts_ast</th>\n",
" <th>funding_rate_updated_dt_ast</th>\n",
" <th>time_delta_to_next_funding_ast</th>\n",
" <th>min_order_size_ast</th>\n",
" <th>min_price_ast</th>\n",
" <th>next_funding_at_same_time</th>\n",
" <th>net_funding_rate</th>\n",
" <th>net_funding_rate_abs</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>BNB-USD</td>\n",
" <td>1777620959597</td>\n",
" <td>0.000013</td>\n",
" <td>2026-05-01 07:35:59.597</td>\n",
" <td>BNB</td>\n",
" <td>ACTIVE</td>\n",
" <td>1.777622e+12</td>\n",
" <td>0.01</td>\n",
" <td>0.01</td>\n",
" <td>BNBUSDT</td>\n",
" <td>...</td>\n",
" <td>1777621011000</td>\n",
" <td>0.000184</td>\n",
" <td>1777622400000</td>\n",
" <td>2026-05-01 07:36:51</td>\n",
" <td>0 days 00:23:08.055814</td>\n",
" <td>0.01</td>\n",
" <td>0.010</td>\n",
" <td>True</td>\n",
" <td>1.708200e-04</td>\n",
" <td>1.708200e-04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>SOL-USD</td>\n",
" <td>1777620959597</td>\n",
" <td>-0.000012</td>\n",
" <td>2026-05-01 07:35:59.597</td>\n",
" <td>SOL</td>\n",
" <td>ACTIVE</td>\n",
" <td>1.777622e+12</td>\n",
" <td>0.1</td>\n",
" <td>0.01</td>\n",
" <td>SOLUSDT</td>\n",
" <td>...</td>\n",
" <td>1777621011000</td>\n",
" <td>0.000100</td>\n",
" <td>1777622400000</td>\n",
" <td>2026-05-01 07:36:51</td>\n",
" <td>0 days 00:23:08.055814</td>\n",
" <td>0.01</td>\n",
" <td>0.4200</td>\n",
" <td>True</td>\n",
" <td>1.120000e-04</td>\n",
" <td>1.120000e-04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>AVAX-USD</td>\n",
" <td>1777620959597</td>\n",
" <td>-0.000008</td>\n",
" <td>2026-05-01 07:35:59.597</td>\n",
" <td>AVAX</td>\n",
" <td>ACTIVE</td>\n",
" <td>1.777622e+12</td>\n",
" <td>1</td>\n",
" <td>0.001</td>\n",
" <td>AVAXUSDT</td>\n",
" <td>...</td>\n",
" <td>1777621011000</td>\n",
" <td>0.000100</td>\n",
" <td>1777622400000</td>\n",
" <td>2026-05-01 07:36:51</td>\n",
" <td>0 days 00:23:08.055814</td>\n",
" <td>1</td>\n",
" <td>0.0010</td>\n",
" <td>True</td>\n",
" <td>1.080000e-04</td>\n",
" <td>1.080000e-04</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>MOODENG-USD</td>\n",
" <td>1777620959597</td>\n",
" <td>0.000004</td>\n",
" <td>2026-05-01 07:35:59.597</td>\n",
" <td>MOODENG</td>\n",
" <td>ACTIVE</td>\n",
" <td>1.777622e+12</td>\n",
" <td>100</td>\n",
" <td>0.00001</td>\n",
" <td>MOODENGUSDT</td>\n",
" <td>...</td>\n",
" <td>1777621011000</td>\n",
" <td>0.000100</td>\n",
" <td>1777622400000</td>\n",
" <td>2026-05-01 07:36:51</td>\n",
" <td>0 days 00:23:08.055814</td>\n",
" <td>1</td>\n",
" <td>0.0000100</td>\n",
" <td>True</td>\n",
" <td>9.600000e-05</td>\n",
" <td>9.600000e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>ZEC-USD</td>\n",
" <td>1777620959597</td>\n",
" <td>0.000013</td>\n",
" <td>2026-05-01 07:35:59.597</td>\n",
" <td>ZEC</td>\n",
" <td>ACTIVE</td>\n",
" <td>1.777622e+12</td>\n",
" <td>0.1</td>\n",
" <td>0.001</td>\n",
" <td>ZECUSDT</td>\n",
" <td>...</td>\n",
" <td>1777621011000</td>\n",
" <td>-0.000081</td>\n",
" <td>1777622400000</td>\n",
" <td>2026-05-01 07:36:51</td>\n",
" <td>0 days 00:23:08.055814</td>\n",
" <td>0.001</td>\n",
" <td>0.0100</td>\n",
" <td>True</td>\n",
" <td>9.405000e-05</td>\n",
" <td>9.405000e-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>73</th>\n",
" <td>AZTEC-USD</td>\n",
" <td>1777620959597</td>\n",
" <td>0.000013</td>\n",
" <td>2026-05-01 07:35:59.597</td>\n",
" <td>AZTEC</td>\n",
" <td>ACTIVE</td>\n",
" <td>1.777622e+12</td>\n",
" <td>1000</td>\n",
" <td>0.000001</td>\n",
" <td>AZTECUSDT</td>\n",
" <td>...</td>\n",
" <td>1777621011000</td>\n",
" <td>0.000013</td>\n",
" <td>1777622400000</td>\n",
" <td>2026-05-01 07:36:51</td>\n",
" <td>0 days 00:23:08.055814</td>\n",
" <td>1</td>\n",
" <td>0.0000100</td>\n",
" <td>True</td>\n",
" <td>5.000000e-07</td>\n",
" <td>5.000000e-07</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76</th>\n",
" <td>VVV-USD</td>\n",
" <td>1777620959597</td>\n",
" <td>0.000013</td>\n",
" <td>2026-05-01 07:35:59.597</td>\n",
" <td>VVV</td>\n",
" <td>ACTIVE</td>\n",
" <td>1.777622e+12</td>\n",
" <td>1</td>\n",
" <td>0.0001</td>\n",
" <td>VVVUSDT</td>\n",
" <td>...</td>\n",
" <td>1777621011000</td>\n",
" <td>0.000013</td>\n",
" <td>1777622400000</td>\n",
" <td>2026-05-01 07:36:51</td>\n",
" <td>0 days 00:23:08.055814</td>\n",
" <td>0.01</td>\n",
" <td>0.001000</td>\n",
" <td>True</td>\n",
" <td>5.000000e-07</td>\n",
" <td>5.000000e-07</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>EDGE-USD</td>\n",
" <td>1777620959597</td>\n",
" <td>0.000013</td>\n",
" <td>2026-05-01 07:35:59.597</td>\n",
" <td>EDGE</td>\n",
" <td>ACTIVE</td>\n",
" <td>1.777622e+12</td>\n",
" <td>10</td>\n",
" <td>0.00001</td>\n",
" <td>EDGEUSDT</td>\n",
" <td>...</td>\n",
" <td>1777621011000</td>\n",
" <td>0.000013</td>\n",
" <td>1777622400000</td>\n",
" <td>2026-05-01 07:36:51</td>\n",
" <td>0 days 00:23:08.055814</td>\n",
" <td>1</td>\n",
" <td>0.0001000</td>\n",
" <td>True</td>\n",
" <td>5.000000e-07</td>\n",
" <td>5.000000e-07</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>CC-USD</td>\n",
" <td>1777620959597</td>\n",
" <td>0.000013</td>\n",
" <td>2026-05-01 07:35:59.597</td>\n",
" <td>CC</td>\n",
" <td>ACTIVE</td>\n",
" <td>1.777622e+12</td>\n",
" <td>100</td>\n",
" <td>0.00001</td>\n",
" <td>CCUSDT</td>\n",
" <td>...</td>\n",
" <td>1777621011000</td>\n",
" <td>0.000013</td>\n",
" <td>1777622400000</td>\n",
" <td>2026-05-01 07:36:51</td>\n",
" <td>0 days 00:23:08.055814</td>\n",
" <td>1</td>\n",
" <td>0.0000100</td>\n",
" <td>True</td>\n",
" <td>5.000000e-07</td>\n",
" <td>5.000000e-07</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>PIEVERSE-USD</td>\n",
" <td>1777620959597</td>\n",
" <td>0.000013</td>\n",
" <td>2026-05-01 07:35:59.597</td>\n",
" <td>PIEVERSE</td>\n",
" <td>ACTIVE</td>\n",
" <td>1.777622e+12</td>\n",
" <td>10</td>\n",
" <td>0.00001</td>\n",
" <td>PIEVERSEUSDT</td>\n",
" <td>...</td>\n",
" <td>1777621011000</td>\n",
" <td>0.000013</td>\n",
" <td>1777622400000</td>\n",
" <td>2026-05-01 07:36:51</td>\n",
" <td>0 days 00:23:08.055814</td>\n",
" <td>1</td>\n",
" <td>0.0001000</td>\n",
" <td>True</td>\n",
" <td>5.000000e-07</td>\n",
" <td>5.000000e-07</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>81 rows × 22 columns</p>\n",
"</div>"
],
"text/plain": [
" symbol_ext funding_rate_updated_ts_ms_ext funding_rate_ext \\\n",
"4 BNB-USD 1777620959597 0.000013 \n",
"2 SOL-USD 1777620959597 -0.000012 \n",
"9 AVAX-USD 1777620959597 -0.000008 \n",
"29 MOODENG-USD 1777620959597 0.000004 \n",
"64 ZEC-USD 1777620959597 0.000013 \n",
".. ... ... ... \n",
"73 AZTEC-USD 1777620959597 0.000013 \n",
"76 VVV-USD 1777620959597 0.000013 \n",
"77 EDGE-USD 1777620959597 0.000013 \n",
"78 CC-USD 1777620959597 0.000013 \n",
"80 PIEVERSE-USD 1777620959597 0.000013 \n",
"\n",
" funding_rate_updated_dt_ext assetName status next_funding_ts_ext \\\n",
"4 2026-05-01 07:35:59.597 BNB ACTIVE 1.777622e+12 \n",
"2 2026-05-01 07:35:59.597 SOL ACTIVE 1.777622e+12 \n",
"9 2026-05-01 07:35:59.597 AVAX ACTIVE 1.777622e+12 \n",
"29 2026-05-01 07:35:59.597 MOODENG ACTIVE 1.777622e+12 \n",
"64 2026-05-01 07:35:59.597 ZEC ACTIVE 1.777622e+12 \n",
".. ... ... ... ... \n",
"73 2026-05-01 07:35:59.597 AZTEC ACTIVE 1.777622e+12 \n",
"76 2026-05-01 07:35:59.597 VVV ACTIVE 1.777622e+12 \n",
"77 2026-05-01 07:35:59.597 EDGE ACTIVE 1.777622e+12 \n",
"78 2026-05-01 07:35:59.597 CC ACTIVE 1.777622e+12 \n",
"80 2026-05-01 07:35:59.597 PIEVERSE ACTIVE 1.777622e+12 \n",
"\n",
" min_order_size_ext min_price_ext USDT_Symbol ... \\\n",
"4 0.01 0.01 BNBUSDT ... \n",
"2 0.1 0.01 SOLUSDT ... \n",
"9 1 0.001 AVAXUSDT ... \n",
"29 100 0.00001 MOODENGUSDT ... \n",
"64 0.1 0.001 ZECUSDT ... \n",
".. ... ... ... ... \n",
"73 1000 0.000001 AZTECUSDT ... \n",
"76 1 0.0001 VVVUSDT ... \n",
"77 10 0.00001 EDGEUSDT ... \n",
"78 100 0.00001 CCUSDT ... \n",
"80 10 0.00001 PIEVERSEUSDT ... \n",
"\n",
" funding_rate_updated_ts_ms_ast funding_rate_ast next_funding_ts_ast \\\n",
"4 1777621011000 0.000184 1777622400000 \n",
"2 1777621011000 0.000100 1777622400000 \n",
"9 1777621011000 0.000100 1777622400000 \n",
"29 1777621011000 0.000100 1777622400000 \n",
"64 1777621011000 -0.000081 1777622400000 \n",
".. ... ... ... \n",
"73 1777621011000 0.000013 1777622400000 \n",
"76 1777621011000 0.000013 1777622400000 \n",
"77 1777621011000 0.000013 1777622400000 \n",
"78 1777621011000 0.000013 1777622400000 \n",
"80 1777621011000 0.000013 1777622400000 \n",
"\n",
" funding_rate_updated_dt_ast time_delta_to_next_funding_ast \\\n",
"4 2026-05-01 07:36:51 0 days 00:23:08.055814 \n",
"2 2026-05-01 07:36:51 0 days 00:23:08.055814 \n",
"9 2026-05-01 07:36:51 0 days 00:23:08.055814 \n",
"29 2026-05-01 07:36:51 0 days 00:23:08.055814 \n",
"64 2026-05-01 07:36:51 0 days 00:23:08.055814 \n",
".. ... ... \n",
"73 2026-05-01 07:36:51 0 days 00:23:08.055814 \n",
"76 2026-05-01 07:36:51 0 days 00:23:08.055814 \n",
"77 2026-05-01 07:36:51 0 days 00:23:08.055814 \n",
"78 2026-05-01 07:36:51 0 days 00:23:08.055814 \n",
"80 2026-05-01 07:36:51 0 days 00:23:08.055814 \n",
"\n",
" min_order_size_ast min_price_ast next_funding_at_same_time \\\n",
"4 0.01 0.010 True \n",
"2 0.01 0.4200 True \n",
"9 1 0.0010 True \n",
"29 1 0.0000100 True \n",
"64 0.001 0.0100 True \n",
".. ... ... ... \n",
"73 1 0.0000100 True \n",
"76 0.01 0.001000 True \n",
"77 1 0.0001000 True \n",
"78 1 0.0000100 True \n",
"80 1 0.0001000 True \n",
"\n",
" net_funding_rate net_funding_rate_abs \n",
"4 1.708200e-04 1.708200e-04 \n",
"2 1.120000e-04 1.120000e-04 \n",
"9 1.080000e-04 1.080000e-04 \n",
"29 9.600000e-05 9.600000e-05 \n",
"64 9.405000e-05 9.405000e-05 \n",
".. ... ... \n",
"73 5.000000e-07 5.000000e-07 \n",
"76 5.000000e-07 5.000000e-07 \n",
"77 5.000000e-07 5.000000e-07 \n",
"78 5.000000e-07 5.000000e-07 \n",
"80 5.000000e-07 5.000000e-07 \n",
"\n",
"[81 rows x 22 columns]"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_comb_current_fr.sort_values(by='net_funding_rate_abs', ascending=False)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "04c38156",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "125ee5ed",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "cdcda9a8",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "py_313",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}