From e749051dbc1ffe03e7eea3e7f8c74bc485aa2996 Mon Sep 17 00:00:00 2001 From: mrpabloyeah Date: Sun, 7 Sep 2025 23:28:33 +0200 Subject: [PATCH 01/30] Fix ShuffleFilter behavior in backtesting --- freqtrade/optimize/backtesting.py | 9 +++++++ freqtrade/plugins/pairlist/ShuffleFilter.py | 4 +++- tests/plugins/test_pairlist.py | 26 ++++++++++++++------- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 65b4baff2..1ac2b6351 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -173,6 +173,7 @@ class Backtesting: self.disable_database_use() self.init_backtest_detail() self.pairlists = PairListManager(self.exchange, self.config, self.dataprovider) + self.dinamic_pairlist = False self._validate_pairlists_for_backtesting() self.dataprovider.add_pairlisthandler(self.pairlists) @@ -226,6 +227,9 @@ class Backtesting: "PrecisionFilter not allowed for backtesting multiple strategies." ) + if "ShuffleFilter" in self.pairlists.name_list: + self.dinamic_pairlist = True + def log_once(self, msg: str) -> None: """ Partial reimplementation of log_once from the Login mixin. @@ -1582,6 +1586,11 @@ class Backtesting: for current_time in self._time_generator(start_date, end_date): # Loop for each main candle. self.check_abort() + + if self.dinamic_pairlist: + self.pairlists.refresh_pairlist() + pairs = self.pairlists.whitelist + # Reset open trade count for this candle # Critical to avoid exceeding max_open_trades in backtesting # when timeframe-detail is used and trades close within the opening candle. diff --git a/freqtrade/plugins/pairlist/ShuffleFilter.py b/freqtrade/plugins/pairlist/ShuffleFilter.py index be536e705..86d618160 100644 --- a/freqtrade/plugins/pairlist/ShuffleFilter.py +++ b/freqtrade/plugins/pairlist/ShuffleFilter.py @@ -93,6 +93,8 @@ class ShuffleFilter(IPairList): return pairlist_new # Shuffle is done inplace self._random.shuffle(pairlist) - self.__pairlist_cache[pairlist_bef] = pairlist + + if self._config.get("runmode") in (RunMode.LIVE, RunMode.DRY_RUN): + self.__pairlist_cache[pairlist_bef] = pairlist return pairlist diff --git a/tests/plugins/test_pairlist.py b/tests/plugins/test_pairlist.py index f2c3c69e3..ad4ed0f47 100644 --- a/tests/plugins/test_pairlist.py +++ b/tests/plugins/test_pairlist.py @@ -1274,27 +1274,37 @@ def test_ShuffleFilter_init(mocker, whitelist_conf, caplog) -> None: {"method": "StaticPairList"}, {"method": "ShuffleFilter", "seed": 43}, ] - whitelist_conf["runmode"] = "backtest" + whitelist_conf["runmode"] = RunMode.BACKTEST exchange = get_patched_exchange(mocker, whitelist_conf) plm = PairListManager(exchange, whitelist_conf) assert log_has("Backtesting mode detected, applying seed value: 43", caplog) + plm.refresh_pairlist() + pl1 = deepcopy(plm.whitelist) + plm.refresh_pairlist() + assert plm.whitelist != pl1 + assert set(plm.whitelist) == set(pl1) + + caplog.clear() + whitelist_conf["runmode"] = RunMode.DRY_RUN + plm = PairListManager(exchange, whitelist_conf) + assert not log_has("Backtesting mode detected, applying seed value: 42", caplog) + assert log_has("Live mode detected, not applying seed.", caplog) + with time_machine.travel("2021-09-01 05:01:00 +00:00") as t: plm.refresh_pairlist() pl1 = deepcopy(plm.whitelist) plm.refresh_pairlist() assert plm.whitelist == pl1 + target = plm._pairlist_handlers[1]._random + shuffle_mock = mocker.patch.object(target, "shuffle", wraps=target.shuffle) + t.shift(timedelta(minutes=10)) plm.refresh_pairlist() - assert plm.whitelist != pl1 - - caplog.clear() - whitelist_conf["runmode"] = RunMode.DRY_RUN - plm = PairListManager(exchange, whitelist_conf) - assert not log_has("Backtesting mode detected, applying seed value: 42", caplog) - assert log_has("Live mode detected, not applying seed.", caplog) + assert shuffle_mock.call_count == 1 + assert set(plm.whitelist) == set(pl1) @pytest.mark.usefixtures("init_persistence") From 737d2804d23fc7bd1662dd1999f22108636b318a Mon Sep 17 00:00:00 2001 From: mrpabloyeah Date: Mon, 8 Sep 2025 17:47:33 +0200 Subject: [PATCH 02/30] Fix spelling mistake --- freqtrade/optimize/backtesting.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 1ac2b6351..2bb6baeac 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -173,7 +173,7 @@ class Backtesting: self.disable_database_use() self.init_backtest_detail() self.pairlists = PairListManager(self.exchange, self.config, self.dataprovider) - self.dinamic_pairlist = False + self.dynamic_pairlist = False self._validate_pairlists_for_backtesting() self.dataprovider.add_pairlisthandler(self.pairlists) @@ -228,7 +228,7 @@ class Backtesting: ) if "ShuffleFilter" in self.pairlists.name_list: - self.dinamic_pairlist = True + self.dynamic_pairlist = True def log_once(self, msg: str) -> None: """ @@ -1587,7 +1587,7 @@ class Backtesting: # Loop for each main candle. self.check_abort() - if self.dinamic_pairlist: + if self.dynamic_pairlist: self.pairlists.refresh_pairlist() pairs = self.pairlists.whitelist From a8f543ce620e13871d0c10d1f77dcb789611350e Mon Sep 17 00:00:00 2001 From: mrpabloyeah Date: Tue, 9 Sep 2025 03:01:46 +0200 Subject: [PATCH 03/30] Add test_time_pair_generator_refresh_pairlist() --- tests/optimize/test_backtesting.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 292ee92aa..ff6c8c76a 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -2715,3 +2715,29 @@ def test_get_backtest_metadata_filename(): filename = "backtest_results_zip.zip" expected = Path("backtest_results_zip.meta.json") assert get_backtest_metadata_filename(filename) == expected + + +@pytest.mark.parametrize("dynamic_pairlist", [True, False]) +def test_time_pair_generator_refresh_pairlist(mocker, default_conf, dynamic_pairlist): + patch_exchange(mocker) + backtesting = Backtesting(default_conf) + backtesting._set_strategy(backtesting.strategylist[0]) + backtesting.dynamic_pairlist = dynamic_pairlist + + refresh_mock = mocker.patch( + "freqtrade.plugins.pairlistmanager.PairListManager.refresh_pairlist" + ) + + # Simulate 2 candles + start_date = datetime(2025, 1, 1, 0, 0, tzinfo=UTC) + end_date = start_date + timedelta(minutes=10) + pairs = default_conf["exchange"]["pair_whitelist"] + data = {pair: [] for pair in pairs} + + # Simulate backtest loop + list(backtesting.time_pair_generator(start_date, end_date, pairs, data)) + + if dynamic_pairlist: + assert refresh_mock.call_count == 2 + else: + assert refresh_mock.call_count == 0 From eea9133b3f75b48b24a0827e001be427163e33fb Mon Sep 17 00:00:00 2001 From: mrpabloyeah Date: Tue, 9 Sep 2025 03:03:07 +0200 Subject: [PATCH 04/30] test_time_pair_generator_open_trades_first() --- tests/optimize/test_backtesting.py | 44 ++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index ff6c8c76a..0aa0ea7e6 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -2741,3 +2741,47 @@ def test_time_pair_generator_refresh_pairlist(mocker, default_conf, dynamic_pair assert refresh_mock.call_count == 2 else: assert refresh_mock.call_count == 0 + + +@pytest.mark.parametrize("dynamic_pairlist", [True, False]) +def test_time_pair_generator_open_trades_first(mocker, default_conf, dynamic_pairlist): + patch_exchange(mocker) + backtesting = Backtesting(default_conf) + backtesting._set_strategy(backtesting.strategylist[0]) + backtesting.dynamic_pairlist = dynamic_pairlist + + pairs = ["XRP/BTC", "LTC/BTC", "NEO/BTC", "ETH/BTC"] + + # Simulate open trades + trades = [ + LocalTrade(pair="XRP/BTC", open_date=datetime.now(tz=UTC), amount=1, open_rate=1), + LocalTrade(pair="NEO/BTC", open_date=datetime.now(tz=UTC), amount=1, open_rate=1), + ] + LocalTrade.bt_trades_open = trades + LocalTrade.bt_trades_open_pp = { + "XRP/BTC": [trades[0]], + "NEO/BTC": [trades[1]], + "LTC/BTC": [], + "ETH/BTC": [], + } + + start_date = datetime(2025, 1, 1, 0, 0, tzinfo=UTC) + end_date = start_date + timedelta(minutes=5) + dummy_row = (end_date, 1.0, 1.1, 0.9, 1.0, 0, 0, 0, 0, None, None) + data = {pair: [dummy_row] for pair in pairs} + + def mock_refresh(self): + # Simulate shuffle + self._whitelist = pairs[::-1] # ['ETH/BTC', 'NEO/BTC', 'LTC/BTC', 'XRP/BTC'] + + mocker.patch("freqtrade.plugins.pairlistmanager.PairListManager.refresh_pairlist", mock_refresh) + + processed_pairs = [] + for _, pair, _, _, _ in backtesting.time_pair_generator(start_date, end_date, pairs, data): + processed_pairs.append(pair) + + # Open trades first in both cases + if dynamic_pairlist: + assert processed_pairs == ["XRP/BTC", "NEO/BTC", "ETH/BTC", "LTC/BTC"] + else: + assert processed_pairs == ["XRP/BTC", "NEO/BTC", "LTC/BTC", "ETH/BTC"] From 3bce9278bd823c0c55a31280918474a853fdf8d2 Mon Sep 17 00:00:00 2001 From: mrpabloyeah Date: Tue, 9 Sep 2025 14:37:08 +0200 Subject: [PATCH 05/30] Add cache for gen_pairlist() in StaticPairList in backtest mode --- freqtrade/plugins/pairlist/StaticPairList.py | 30 ++++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/freqtrade/plugins/pairlist/StaticPairList.py b/freqtrade/plugins/pairlist/StaticPairList.py index bff2105b3..9df437260 100644 --- a/freqtrade/plugins/pairlist/StaticPairList.py +++ b/freqtrade/plugins/pairlist/StaticPairList.py @@ -7,6 +7,9 @@ Provides pair white list as it configured in config import logging from copy import deepcopy +from cachetools import LRUCache + +from freqtrade.enums.runmode import RunMode from freqtrade.exchange.exchange_types import Tickers from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter, SupportsBacktesting @@ -22,6 +25,7 @@ class StaticPairList(IPairList): super().__init__(*args, **kwargs) self._allow_inactive = self._pairlistconfig.get("allow_inactive", False) + self._pair_cache: LRUCache = LRUCache(maxsize=1) @property def needstickers(self) -> bool: @@ -60,15 +64,23 @@ class StaticPairList(IPairList): :param tickers: Tickers (from exchange.get_tickers). May be cached. :return: List of pairs """ - wl = self.verify_whitelist( - self._config["exchange"]["pair_whitelist"], logger.info, keep_invalid=True - ) - if self._allow_inactive: - return wl - else: - # Avoid implicit filtering of "verify_whitelist" to keep - # proper warnings in the log - return self._whitelist_for_active_markets(wl) + pairlist = self._pair_cache.get("pairlist") + + if not pairlist: + wl = self.verify_whitelist( + self._config["exchange"]["pair_whitelist"], logger.info, keep_invalid=True + ) + if self._allow_inactive: + pairlist = wl + else: + # Avoid implicit filtering of "verify_whitelist" to keep + # proper warnings in the log + pairlist = self._whitelist_for_active_markets(wl) + + if self._config["runmode"] in (RunMode.BACKTEST, RunMode.HYPEROPT): + self._pair_cache["pairlist"] = pairlist.copy() + + return pairlist def filter_pairlist(self, pairlist: list[str], tickers: Tickers) -> list[str]: """ From 43be752847ccd6c8f12e2c91d4d9867f56245d04 Mon Sep 17 00:00:00 2001 From: mrpabloyeah Date: Tue, 9 Sep 2025 19:24:32 +0200 Subject: [PATCH 06/30] Do not verify the backlist if it is empty --- freqtrade/plugins/pairlistmanager.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/freqtrade/plugins/pairlistmanager.py b/freqtrade/plugins/pairlistmanager.py index bc66d00c3..8d35f5642 100644 --- a/freqtrade/plugins/pairlistmanager.py +++ b/freqtrade/plugins/pairlistmanager.py @@ -157,16 +157,17 @@ class PairListManager(LoggingMixin): :param logmethod: Function that'll be called, `logger.info` or `logger.warning`. :return: pairlist - blacklisted pairs """ - try: - blacklist = self.expanded_blacklist - except ValueError as err: - logger.error(f"Pair blacklist contains an invalid Wildcard: {err}") - return [] - log_once = partial(self.log_once, logmethod=logmethod) - for pair in pairlist.copy(): - if pair in blacklist: - log_once(f"Pair {pair} in your blacklist. Removing it from whitelist...") - pairlist.remove(pair) + if self._blacklist: + try: + blacklist = self.expanded_blacklist + except ValueError as err: + logger.error(f"Pair blacklist contains an invalid Wildcard: {err}") + return [] + log_once = partial(self.log_once, logmethod=logmethod) + for pair in pairlist.copy(): + if pair in blacklist: + log_once(f"Pair {pair} in your blacklist. Removing it from whitelist...") + pairlist.remove(pair) return pairlist def verify_whitelist( From 55201b6224a03629e8958fcca8a1f292e3dac448 Mon Sep 17 00:00:00 2001 From: mrpabloyeah Date: Tue, 9 Sep 2025 20:17:14 +0200 Subject: [PATCH 07/30] Fix: Hyperopt breaks when self.dynamic_pairlist is set to True --- freqtrade/optimize/backtesting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 2bb6baeac..d6336b567 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -1587,7 +1587,7 @@ class Backtesting: # Loop for each main candle. self.check_abort() - if self.dynamic_pairlist: + if self.dynamic_pairlist and self.pairlists: self.pairlists.refresh_pairlist() pairs = self.pairlists.whitelist From 5f558137d3317d357cb5cbde160bf50140ff49d3 Mon Sep 17 00:00:00 2001 From: mrpabloyeah Date: Fri, 12 Sep 2025 13:01:50 +0200 Subject: [PATCH 08/30] Add cache for expanded_blacklist() in PairListManager in backtest mode --- freqtrade/plugins/pairlistmanager.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/freqtrade/plugins/pairlistmanager.py b/freqtrade/plugins/pairlistmanager.py index 8d35f5642..9056d842e 100644 --- a/freqtrade/plugins/pairlistmanager.py +++ b/freqtrade/plugins/pairlistmanager.py @@ -5,7 +5,7 @@ PairList manager class import logging from functools import partial -from cachetools import TTLCache, cached +from cachetools import LRUCache, TTLCache, cached from freqtrade.constants import Config, ListPairsWithTimeframes from freqtrade.data.dataprovider import DataProvider @@ -56,6 +56,7 @@ class PairListManager(LoggingMixin): ) self._check_backtest() + self._not_expiring_cache: LRUCache = LRUCache(maxsize=1) refresh_period = config.get("pairlist_refresh_period", 3600) LoggingMixin.__init__(self, logger, refresh_period) @@ -109,7 +110,15 @@ class PairListManager(LoggingMixin): @property def expanded_blacklist(self) -> list[str]: """The expanded blacklist (including wildcard expansion)""" - return expand_pairlist(self._blacklist, self._exchange.get_markets().keys()) + eblacklist = self._not_expiring_cache.get("eblacklist") + + if not eblacklist: + eblacklist = expand_pairlist(self._blacklist, self._exchange.get_markets().keys()) + + if self._config["runmode"] in (RunMode.BACKTEST, RunMode.HYPEROPT): + self._not_expiring_cache["eblacklist"] = eblacklist.copy() + + return eblacklist @property def name_list(self) -> list[str]: From 5dbfc92c5a75332d3a6a47bf1cbca0b15f44d3d7 Mon Sep 17 00:00:00 2001 From: mrpabloyeah Date: Sun, 14 Sep 2025 13:58:53 +0200 Subject: [PATCH 09/30] Add --enable-dynamic-pairlist option in backtesting --- docs/commands/backtesting.md | 8 +++++++- docs/commands/hyperopt.md | 2 +- docs/commands/lookahead-analysis.md | 8 +++++++- freqtrade/commands/arguments.py | 1 + freqtrade/commands/cli_options.py | 10 +++++++++- freqtrade/configuration/configuration.py | 8 +++++++- freqtrade/optimize/backtesting.py | 5 +---- 7 files changed, 33 insertions(+), 9 deletions(-) diff --git a/docs/commands/backtesting.md b/docs/commands/backtesting.md index 7082fb362..56d01f38f 100644 --- a/docs/commands/backtesting.md +++ b/docs/commands/backtesting.md @@ -10,6 +10,7 @@ usage: freqtrade backtesting [-h] [-v] [--no-color] [--logfile FILE] [-V] [--stake-amount STAKE_AMOUNT] [--fee FLOAT] [-p PAIRS [PAIRS ...]] [--eps] [--enable-protections] + [--enable-dynamic-pairlist] [--dry-run-wallet DRY_RUN_WALLET] [--timeframe-detail TIMEFRAME_DETAIL] [--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]] @@ -44,9 +45,14 @@ options: Allow buying the same pair multiple times (position stacking). --enable-protections, --enableprotections - Enable protections for backtesting.Will slow + Enable protections for backtesting. Will slow backtesting down by a considerable amount, but will include configured protections + --enable-dynamic-pairlist + Enables dynamic pairlisting in backtesting. The + pairlist will be generated for each new candle if + you're using a pairlist handler that supports this + feature, for example, ShuffleFilter. --dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET Starting balance, used for backtesting / hyperopt and dry-runs. diff --git a/docs/commands/hyperopt.md b/docs/commands/hyperopt.md index f1c8b28b5..933082b9d 100644 --- a/docs/commands/hyperopt.md +++ b/docs/commands/hyperopt.md @@ -44,7 +44,7 @@ options: Allow buying the same pair multiple times (position stacking). --enable-protections, --enableprotections - Enable protections for backtesting.Will slow + Enable protections for backtesting. Will slow backtesting down by a considerable amount, but will include configured protections --dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET diff --git a/docs/commands/lookahead-analysis.md b/docs/commands/lookahead-analysis.md index 880c41ce1..f7354d8ea 100644 --- a/docs/commands/lookahead-analysis.md +++ b/docs/commands/lookahead-analysis.md @@ -11,6 +11,7 @@ usage: freqtrade lookahead-analysis [-h] [-v] [--no-color] [--logfile FILE] [--stake-amount STAKE_AMOUNT] [--fee FLOAT] [-p PAIRS [PAIRS ...]] [--enable-protections] + [--enable-dynamic-pairlist] [--dry-run-wallet DRY_RUN_WALLET] [--timeframe-detail TIMEFRAME_DETAIL] [--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]] @@ -43,9 +44,14 @@ options: Limit command to these pairs. Pairs are space- separated. --enable-protections, --enableprotections - Enable protections for backtesting.Will slow + Enable protections for backtesting. Will slow backtesting down by a considerable amount, but will include configured protections + --enable-dynamic-pairlist + Enables dynamic pairlisting in backtesting. The + pairlist will be generated for each new candle if + you're using a pairlist handler that supports this + feature, for example, ShuffleFilter. --dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET Starting balance, used for backtesting / hyperopt and dry-runs. diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 17d8f43d7..e4bdc170d 100755 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -49,6 +49,7 @@ ARGS_BACKTEST = [ *ARGS_COMMON_OPTIMIZE, "position_stacking", "enable_protections", + "enable_dynamic_pairlist", "dry_run_wallet", "timeframe_detail", "strategy_list", diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 62a007f59..fc613febe 100755 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -184,12 +184,20 @@ AVAILABLE_CLI_OPTIONS = { "enable_protections": Arg( "--enable-protections", "--enableprotections", - help="Enable protections for backtesting." + help="Enable protections for backtesting. " "Will slow backtesting down by a considerable amount, but will include " "configured protections", action="store_true", default=False, ), + "enable_dynamic_pairlist": Arg( + "--enable-dynamic-pairlist", + help="Enables dynamic pairlisting in backtesting. " + "The pairlist will be generated for each new candle if you're using a " + "pairlist handler that supports this feature, for example, ShuffleFilter.", + action="store_true", + default=False, + ), "strategy_list": Arg( "--strategy-list", help="Provide a space-separated list of strategies to backtest. " diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 7bf448335..cc40edef1 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -256,7 +256,13 @@ class Configuration: self._args_to_config( config, argname="enable_protections", - logstring="Parameter --enable-protections detected, enabling Protections. ...", + logstring="Parameter --enable-protections detected, enabling Protections ...", + ) + + self._args_to_config( + config, + argname="enable_dynamic_pairlist", + logstring="Parameter --enable-dynamic-pairlist detected, enabling dynamic pairlist ...", ) if self.args.get("max_open_trades"): diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index d6336b567..5ae91ee30 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -173,7 +173,6 @@ class Backtesting: self.disable_database_use() self.init_backtest_detail() self.pairlists = PairListManager(self.exchange, self.config, self.dataprovider) - self.dynamic_pairlist = False self._validate_pairlists_for_backtesting() self.dataprovider.add_pairlisthandler(self.pairlists) @@ -212,6 +211,7 @@ class Backtesting: self._can_short = self.trading_mode != TradingMode.SPOT self._position_stacking: bool = self.config.get("position_stacking", False) self.enable_protections: bool = self.config.get("enable_protections", False) + self.dynamic_pairlist: bool = self.config.get("enable_dynamic_pairlist", False) migrate_data(config, self.exchange) self.init_backtest() @@ -227,9 +227,6 @@ class Backtesting: "PrecisionFilter not allowed for backtesting multiple strategies." ) - if "ShuffleFilter" in self.pairlists.name_list: - self.dynamic_pairlist = True - def log_once(self, msg: str) -> None: """ Partial reimplementation of log_once from the Login mixin. From 9d5a88416a9eaa26c9372e3dbe571828fcbaa8cd Mon Sep 17 00:00:00 2001 From: Freqtrade Bot <154552126+freqtrade-bot@users.noreply.github.com> Date: Thu, 18 Sep 2025 03:12:21 +0000 Subject: [PATCH 10/30] chore: update pre-commit hooks --- .../exchange/binance_leverage_tiers.json | 3644 ++++++++++------- 1 file changed, 2254 insertions(+), 1390 deletions(-) diff --git a/freqtrade/exchange/binance_leverage_tiers.json b/freqtrade/exchange/binance_leverage_tiers.json index 909d636c4..f3c29ebca 100644 --- a/freqtrade/exchange/binance_leverage_tiers.json +++ b/freqtrade/exchange/binance_leverage_tiers.json @@ -1,4 +1,142 @@ { + "0G/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "0G/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "1", + "initialLeverage": "25", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.02", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "0G/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "2", + "initialLeverage": "20", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.025", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "0G/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "3", + "initialLeverage": "10", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.05", + "cum": "275.0" + } + }, + { + "tier": 4.0, + "symbol": "0G/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "4", + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.1", + "cum": "1525.0" + } + }, + { + "tier": 5.0, + "symbol": "0G/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "5", + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2775.0" + } + }, + { + "tier": 6.0, + "symbol": "0G/USDT:USDT", + "currency": "USDT", + "minNotional": 100000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "6", + "initialLeverage": "3", + "notionalCap": "250000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "6945.0" + } + }, + { + "tier": 7.0, + "symbol": "0G/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "7", + "initialLeverage": "2", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.25", + "cum": "27770.0" + } + }, + { + "tier": 8.0, + "symbol": "0G/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 800000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "8", + "initialLeverage": "1", + "notionalCap": "800000", + "notionalFloor": "500000", + "maintMarginRatio": "0.5", + "cum": "152770.0" + } + } + ], "1000000BOB/USDT:USDT": [ { "tier": 1.0, @@ -6048,13 +6186,13 @@ "symbol": "AIO/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 11000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "11000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", "cum": "50.0" @@ -6064,41 +6202,41 @@ "tier": 3.0, "symbol": "AIO/USDT:USDT", "currency": "USDT", - "minNotional": 11000.0, - "maxNotional": 22500.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "22500", - "notionalFloor": "11000", + "notionalCap": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "325.0" + "cum": "300.0" } }, { "tier": 4.0, "symbol": "AIO/USDT:USDT", "currency": "USDT", - "minNotional": 22500.0, - "maxNotional": 65000.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "65000", - "notionalFloor": "22500", + "notionalCap": "50000", + "notionalFloor": "20000", "maintMarginRatio": "0.1", - "cum": "1450.0" + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "AIO/USDT:USDT", "currency": "USDT", - "minNotional": 65000.0, + "minNotional": 50000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, @@ -6106,9 +6244,9 @@ "bracket": "5", "initialLeverage": "4", "notionalCap": "250000", - "notionalFloor": "65000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "3075.0" + "cum": "2550.0" } }, { @@ -6125,7 +6263,7 @@ "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "13500.0" + "cum": "12975.0" } }, { @@ -6142,7 +6280,7 @@ "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "388350.0" + "cum": "387825.0" } }, { @@ -6159,7 +6297,7 @@ "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2263350.0" + "cum": "2262825.0" } } ], @@ -11544,14 +11682,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "50", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -11561,14 +11699,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "25.0" } }, @@ -11578,14 +11716,14 @@ "currency": "USDT", "minNotional": 10000.0, "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "75.0" } }, @@ -11594,33 +11732,33 @@ "symbol": "AVNT/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "62500", + "initialLeverage": "20", + "notionalCap": "50000", "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "AVNT/USDT:USDT", "currency": "USDT", - "minNotional": 62500.0, + "minNotional": 50000.0, "maxNotional": 125000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", + "initialLeverage": "10", "notionalCap": "125000", - "notionalFloor": "62500", - "maintMarginRatio": "0.1", - "cum": "3825.0" + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { @@ -11629,15 +11767,15 @@ "currency": "USDT", "minNotional": 125000.0, "maxNotional": 250000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", + "initialLeverage": "5", "notionalCap": "250000", "notionalFloor": "125000", - "maintMarginRatio": "0.125", - "cum": "6950.0" + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { @@ -11645,37 +11783,54 @@ "symbol": "AVNT/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, - "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.1667, - "maxLeverage": 3.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "4500000", + "initialLeverage": "4", + "notionalCap": "500000", "notionalFloor": "250000", - "maintMarginRatio": "0.1667", - "cum": "17375.0" + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "AVNT/USDT:USDT", "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "AVNT/USDT:USDT", + "currency": "USDT", "minNotional": 4500000.0, "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "409650.0" } }, { - "tier": 9.0, + "tier": 10.0, "symbol": "AVNT/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -11683,12 +11838,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "2284650.0" } } ], @@ -16986,15 +17141,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -17002,71 +17157,54 @@ "symbol": "BNT/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "BNT/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "62500", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "BNT/USDT:USDT", "currency": "USDT", - "minNotional": 62500.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "125000", - "notionalFloor": "62500", - "maintMarginRatio": "0.1", - "cum": "3825.0" - } - }, - { - "tier": 6.0, - "symbol": "BNT/USDT:USDT", - "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 50000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": "6", + "bracket": "5", "initialLeverage": "4", "notionalCap": "250000", - "notionalFloor": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "6950.0" + "cum": "2550.0" } }, { - "tier": 7.0, + "tier": 6.0, "symbol": "BNT/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, @@ -17074,16 +17212,16 @@ "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": "7", + "bracket": "6", "initialLeverage": "3", "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "17375.0" + "cum": "12975.0" } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "BNT/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, @@ -17091,16 +17229,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "7", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "387825.0" } }, { - "tier": 9.0, + "tier": 8.0, "symbol": "BNT/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -17108,12 +17246,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "2262825.0" } } ], @@ -23946,15 +24084,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -23962,71 +24100,54 @@ "symbol": "CVC/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "CVC/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "62500", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "CVC/USDT:USDT", "currency": "USDT", - "minNotional": 62500.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "125000", - "notionalFloor": "62500", - "maintMarginRatio": "0.1", - "cum": "3825.0" - } - }, - { - "tier": 6.0, - "symbol": "CVC/USDT:USDT", - "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 50000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": "6", + "bracket": "5", "initialLeverage": "4", "notionalCap": "250000", - "notionalFloor": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "6950.0" + "cum": "2550.0" } }, { - "tier": 7.0, + "tier": 6.0, "symbol": "CVC/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, @@ -24034,16 +24155,16 @@ "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": "7", + "bracket": "6", "initialLeverage": "3", "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "17375.0" + "cum": "12975.0" } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "CVC/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, @@ -24051,16 +24172,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "7", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "387825.0" } }, { - "tier": 9.0, + "tier": 8.0, "symbol": "CVC/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -24068,12 +24189,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "2262825.0" } } ], @@ -38172,15 +38293,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -38188,71 +38309,54 @@ "symbol": "HIVE/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "HIVE/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "62500", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "HIVE/USDT:USDT", "currency": "USDT", - "minNotional": 62500.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "125000", - "notionalFloor": "62500", - "maintMarginRatio": "0.1", - "cum": "3825.0" - } - }, - { - "tier": 6.0, - "symbol": "HIVE/USDT:USDT", - "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 50000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": "6", + "bracket": "5", "initialLeverage": "4", "notionalCap": "250000", - "notionalFloor": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "6950.0" + "cum": "2550.0" } }, { - "tier": 7.0, + "tier": 6.0, "symbol": "HIVE/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, @@ -38260,16 +38364,16 @@ "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": "7", + "bracket": "6", "initialLeverage": "3", "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "17375.0" + "cum": "12975.0" } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "HIVE/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, @@ -38277,16 +38381,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "7", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "387825.0" } }, { - "tier": 9.0, + "tier": 8.0, "symbol": "HIVE/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -38294,12 +38398,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "2262825.0" } } ], @@ -38441,6 +38545,178 @@ } } ], + "HOLO/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "HOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "HOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "HOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "HOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "HOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "HOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "HOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "HOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "HOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "HOLO/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], "HOME/USDT:USDT": [ { "tier": 1.0, @@ -41942,13 +42218,13 @@ "symbol": "IP/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 7500.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "7500", + "notionalCap": "20000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -41958,170 +42234,136 @@ "tier": 2.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 7500.0, - "maxNotional": 15000.0, + "minNotional": 20000.0, + "maxNotional": 200000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "15000", - "notionalFloor": "7500", + "notionalCap": "200000", + "notionalFloor": "20000", "maintMarginRatio": "0.015", - "cum": "37.5" + "cum": "100.0" } }, { "tier": 3.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 15000.0, - "maxNotional": 75000.0, + "minNotional": 200000.0, + "maxNotional": 1000000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "75000", - "notionalFloor": "15000", + "notionalCap": "1000000", + "notionalFloor": "200000", "maintMarginRatio": "0.02", - "cum": "112.5" + "cum": "1100.0" } }, { "tier": 4.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 75000.0, - "maxNotional": 200000.0, + "minNotional": 1000000.0, + "maxNotional": 2000000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "200000", - "notionalFloor": "75000", + "notionalCap": "2000000", + "notionalFloor": "1000000", "maintMarginRatio": "0.025", - "cum": "487.5" + "cum": "6100.0" } }, { "tier": 5.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 350000.0, - "maintenanceMarginRate": 0.0333, - "maxLeverage": 15.0, + "minNotional": 2000000.0, + "maxNotional": 5000000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "15", - "notionalCap": "350000", - "notionalFloor": "200000", - "maintMarginRatio": "0.0333", - "cum": "2147.5" + "initialLeverage": "10", + "notionalCap": "5000000", + "notionalFloor": "2000000", + "maintMarginRatio": "0.05", + "cum": "56100.0" } }, { "tier": 6.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 350000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 5000000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "10", - "notionalCap": "750000", - "notionalFloor": "350000", - "maintMarginRatio": "0.05", - "cum": "7992.5" + "initialLeverage": "5", + "notionalCap": "7500000", + "notionalFloor": "5000000", + "maintMarginRatio": "0.1", + "cum": "306100.0" } }, { "tier": 7.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 7500000.0, + "maxNotional": 10000000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "750000", - "maintMarginRatio": "0.1", - "cum": "45492.5" + "initialLeverage": "4", + "notionalCap": "10000000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.125", + "cum": "493600.0" } }, { "tier": 8.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 10000000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "8", - "initialLeverage": "4", - "notionalCap": "4500000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.125", - "cum": "120492.5" + "initialLeverage": "2", + "notionalCap": "12500000", + "notionalFloor": "10000000", + "maintMarginRatio": "0.25", + "cum": "1743600.0" } }, { "tier": 9.0, "symbol": "IP/USDT:USDT", "currency": "USDT", - "minNotional": 4500000.0, - "maxNotional": 7500000.0, - "maintenanceMarginRate": 0.1667, - "maxLeverage": 3.0, - "info": { - "bracket": "9", - "initialLeverage": "3", - "notionalCap": "7500000", - "notionalFloor": "4500000", - "maintMarginRatio": "0.1667", - "cum": "308142.5" - } - }, - { - "tier": 10.0, - "symbol": "IP/USDT:USDT", - "currency": "USDT", - "minNotional": 7500000.0, - "maxNotional": 12000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "10", - "initialLeverage": "2", - "notionalCap": "12000000", - "notionalFloor": "7500000", - "maintMarginRatio": "0.25", - "cum": "932892.5" - } - }, - { - "tier": 11.0, - "symbol": "IP/USDT:USDT", - "currency": "USDT", - "minNotional": 12000000.0, - "maxNotional": 18000000.0, + "minNotional": 12500000.0, + "maxNotional": 15000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "11", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "18000000", - "notionalFloor": "12000000", + "notionalCap": "15000000", + "notionalFloor": "12500000", "maintMarginRatio": "0.5", - "cum": "3932892.5" + "cum": "4868600.0" } } ], @@ -50158,14 +50400,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, "info": { "bracket": "1", - "initialLeverage": "50", + "initialLeverage": "75", "notionalCap": "5000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.01", "cum": "0.0" } }, @@ -50175,14 +50417,14 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, "info": { "bracket": "2", - "initialLeverage": "25", + "initialLeverage": "50", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", + "maintMarginRatio": "0.015", "cum": "25.0" } }, @@ -50192,14 +50434,14 @@ "currency": "USDT", "minNotional": 10000.0, "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "3", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.025", + "maintMarginRatio": "0.02", "cum": "75.0" } }, @@ -50208,33 +50450,33 @@ "symbol": "MERL/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "62500", + "initialLeverage": "20", + "notionalCap": "50000", "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "maintMarginRatio": "0.025", + "cum": "200.0" } }, { "tier": 5.0, "symbol": "MERL/USDT:USDT", "currency": "USDT", - "minNotional": 62500.0, + "minNotional": 50000.0, "maxNotional": 125000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "5", + "initialLeverage": "10", "notionalCap": "125000", - "notionalFloor": "62500", - "maintMarginRatio": "0.1", - "cum": "3825.0" + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" } }, { @@ -50243,15 +50485,15 @@ "currency": "USDT", "minNotional": 125000.0, "maxNotional": 250000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "4", + "initialLeverage": "5", "notionalCap": "250000", "notionalFloor": "125000", - "maintMarginRatio": "0.125", - "cum": "6950.0" + "maintMarginRatio": "0.1", + "cum": "7700.0" } }, { @@ -50259,37 +50501,54 @@ "symbol": "MERL/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, - "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.1667, - "maxLeverage": 3.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "3", - "notionalCap": "4500000", + "initialLeverage": "4", + "notionalCap": "500000", "notionalFloor": "250000", - "maintMarginRatio": "0.1667", - "cum": "17375.0" + "maintMarginRatio": "0.125", + "cum": "13950.0" } }, { "tier": 8.0, "symbol": "MERL/USDT:USDT", "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "MERL/USDT:USDT", + "currency": "USDT", "minNotional": 4500000.0, "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "409650.0" } }, { - "tier": 9.0, + "tier": 10.0, "symbol": "MERL/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -50297,12 +50556,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "2284650.0" } } ], @@ -51603,13 +51862,13 @@ "symbol": "MOODENG/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "25000", + "notionalCap": "50000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -51619,51 +51878,51 @@ "tier": 4.0, "symbol": "MOODENG/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 50000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "50000", - "notionalFloor": "25000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "200.0" + "cum": "325.0" } }, { "tier": 5.0, "symbol": "MOODENG/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "125000", - "notionalFloor": "50000", - "maintMarginRatio": "0.05", - "cum": "1450.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "MOODENG/USDT:USDT", "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 175000.0, "maxNotional": 250000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "5", + "initialLeverage": "10", "notionalCap": "250000", - "notionalFloor": "125000", - "maintMarginRatio": "0.1", - "cum": "7700.0" + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { @@ -51671,54 +51930,71 @@ "symbol": "MOODENG/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "500000", + "initialLeverage": "5", + "notionalCap": "750000", "notionalFloor": "250000", - "maintMarginRatio": "0.125", - "cum": "13950.0" + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "MOODENG/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.1667, - "maxLeverage": 3.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "3", - "notionalCap": "4500000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1667", - "cum": "34800.0" + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { "tier": 9.0, "symbol": "MOODENG/USDT:USDT", "currency": "USDT", + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "MOODENG/USDT:USDT", + "currency": "USDT", "minNotional": 4500000.0, "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "409650.0" + "cum": "472727.5" } }, { - "tier": 10.0, + "tier": 11.0, "symbol": "MOODENG/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -51726,12 +52002,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "10", + "bracket": "11", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2284650.0" + "cum": "2347727.5" } } ], @@ -52654,15 +52930,15 @@ "symbol": "MYX/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maxNotional": 2000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 25.0, "info": { "bracket": "1", - "initialLeverage": "50", - "notionalCap": "5000", + "initialLeverage": "25", + "notionalCap": "2000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.025", "cum": "0.0" } }, @@ -52670,123 +52946,89 @@ "tier": 2.0, "symbol": "MYX/USDT:USDT", "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "minNotional": 2000.0, + "maxNotional": 30000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "2", - "initialLeverage": "25", - "notionalCap": "10000", - "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "initialLeverage": "10", + "notionalCap": "30000", + "notionalFloor": "2000", + "maintMarginRatio": "0.05", + "cum": "50.0" } }, { "tier": 3.0, "symbol": "MYX/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "minNotional": 30000.0, + "maxNotional": 80000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", - "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "initialLeverage": "5", + "notionalCap": "80000", + "notionalFloor": "30000", + "maintMarginRatio": "0.1", + "cum": "1550.0" } }, { "tier": 4.0, "symbol": "MYX/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 80000.0, + "maxNotional": 100000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "62500", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "initialLeverage": "4", + "notionalCap": "100000", + "notionalFloor": "80000", + "maintMarginRatio": "0.125", + "cum": "3550.0" } }, { "tier": 5.0, "symbol": "MYX/USDT:USDT", "currency": "USDT", - "minNotional": 62500.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 100000.0, + "maxNotional": 1000000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": "5", - "initialLeverage": "5", - "notionalCap": "125000", - "notionalFloor": "62500", - "maintMarginRatio": "0.1", - "cum": "3825.0" + "initialLeverage": "3", + "notionalCap": "1000000", + "notionalFloor": "100000", + "maintMarginRatio": "0.1667", + "cum": "7720.0" } }, { "tier": 6.0, "symbol": "MYX/USDT:USDT", "currency": "USDT", - "minNotional": 125000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "6", - "initialLeverage": "4", - "notionalCap": "250000", - "notionalFloor": "125000", - "maintMarginRatio": "0.125", - "cum": "6950.0" - } - }, - { - "tier": 7.0, - "symbol": "MYX/USDT:USDT", - "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.1667, - "maxLeverage": 3.0, - "info": { - "bracket": "7", - "initialLeverage": "3", - "notionalCap": "4500000", - "notionalFloor": "250000", - "maintMarginRatio": "0.1667", - "cum": "17375.0" - } - }, - { - "tier": 8.0, - "symbol": "MYX/USDT:USDT", - "currency": "USDT", - "minNotional": 4500000.0, + "minNotional": 1000000.0, "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "6", "initialLeverage": "2", "notionalCap": "7500000", - "notionalFloor": "4500000", + "notionalFloor": "1000000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "91020.0" } }, { - "tier": 9.0, + "tier": 7.0, "symbol": "MYX/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -52794,12 +53036,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "7", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "1966020.0" } } ], @@ -53429,15 +53671,15 @@ "symbol": "NEIROETH/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "1", - "initialLeverage": "50", - "notionalCap": "5000", + "initialLeverage": "25", + "notionalCap": "10000", "notionalFloor": "0", - "maintMarginRatio": "0.015", + "maintMarginRatio": "0.02", "cum": "0.0" } }, @@ -53445,38 +53687,21 @@ "tier": 2.0, "symbol": "NEIROETH/USDT:USDT", "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, - "info": { - "bracket": "2", - "initialLeverage": "25", - "notionalCap": "10000", - "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" - } - }, - { - "tier": 3.0, - "symbol": "NEIROETH/USDT:USDT", - "currency": "USDT", "minNotional": 10000.0, "maxNotional": 25000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { - "bracket": "3", + "bracket": "2", "initialLeverage": "20", "notionalCap": "25000", "notionalFloor": "10000", "maintMarginRatio": "0.025", - "cum": "75.0" + "cum": "50.0" } }, { - "tier": 4.0, + "tier": 3.0, "symbol": "NEIROETH/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, @@ -53484,16 +53709,16 @@ "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { - "bracket": "4", + "bracket": "3", "initialLeverage": "10", "notionalCap": "62500", "notionalFloor": "25000", "maintMarginRatio": "0.05", - "cum": "700.0" + "cum": "675.0" } }, { - "tier": 5.0, + "tier": 4.0, "symbol": "NEIROETH/USDT:USDT", "currency": "USDT", "minNotional": 62500.0, @@ -53501,16 +53726,16 @@ "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { - "bracket": "5", + "bracket": "4", "initialLeverage": "5", "notionalCap": "125000", "notionalFloor": "62500", "maintMarginRatio": "0.1", - "cum": "3825.0" + "cum": "3800.0" } }, { - "tier": 6.0, + "tier": 5.0, "symbol": "NEIROETH/USDT:USDT", "currency": "USDT", "minNotional": 125000.0, @@ -53518,16 +53743,16 @@ "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": "6", + "bracket": "5", "initialLeverage": "4", "notionalCap": "250000", "notionalFloor": "125000", "maintMarginRatio": "0.125", - "cum": "6950.0" + "cum": "6925.0" } }, { - "tier": 7.0, + "tier": 6.0, "symbol": "NEIROETH/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, @@ -53535,16 +53760,16 @@ "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": "7", + "bracket": "6", "initialLeverage": "3", "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "17375.0" + "cum": "17350.0" } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "NEIROETH/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, @@ -53552,16 +53777,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "7", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "392200.0" } }, { - "tier": 9.0, + "tier": 8.0, "symbol": "NEIROETH/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -53569,12 +53794,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "2267200.0" } } ], @@ -54565,13 +54790,13 @@ "symbol": "NMR/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 25000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "25000", + "notionalCap": "50000", "notionalFloor": "10000", "maintMarginRatio": "0.02", "cum": "75.0" @@ -54581,51 +54806,51 @@ "tier": 4.0, "symbol": "NMR/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 50000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "50000", - "notionalFloor": "25000", + "notionalCap": "100000", + "notionalFloor": "50000", "maintMarginRatio": "0.025", - "cum": "200.0" + "cum": "325.0" } }, { "tier": 5.0, "symbol": "NMR/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 100000.0, + "maxNotional": 175000.0, + "maintenanceMarginRate": 0.0333, + "maxLeverage": 15.0, "info": { "bracket": "5", - "initialLeverage": "10", - "notionalCap": "125000", - "notionalFloor": "50000", - "maintMarginRatio": "0.05", - "cum": "1450.0" + "initialLeverage": "15", + "notionalCap": "175000", + "notionalFloor": "100000", + "maintMarginRatio": "0.0333", + "cum": "1155.0" } }, { "tier": 6.0, "symbol": "NMR/USDT:USDT", "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 175000.0, "maxNotional": 250000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "6", - "initialLeverage": "5", + "initialLeverage": "10", "notionalCap": "250000", - "notionalFloor": "125000", - "maintMarginRatio": "0.1", - "cum": "7700.0" + "notionalFloor": "175000", + "maintMarginRatio": "0.05", + "cum": "4077.5" } }, { @@ -54633,54 +54858,71 @@ "symbol": "NMR/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "maxNotional": 750000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "7", - "initialLeverage": "4", - "notionalCap": "500000", + "initialLeverage": "5", + "notionalCap": "750000", "notionalFloor": "250000", - "maintMarginRatio": "0.125", - "cum": "13950.0" + "maintMarginRatio": "0.1", + "cum": "16577.5" } }, { "tier": 8.0, "symbol": "NMR/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.1667, - "maxLeverage": 3.0, + "minNotional": 750000.0, + "maxNotional": 1500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "8", - "initialLeverage": "3", - "notionalCap": "4500000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1667", - "cum": "34800.0" + "initialLeverage": "4", + "notionalCap": "1500000", + "notionalFloor": "750000", + "maintMarginRatio": "0.125", + "cum": "35327.5" } }, { "tier": 9.0, "symbol": "NMR/USDT:USDT", "currency": "USDT", + "minNotional": 1500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "9", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "1500000", + "maintMarginRatio": "0.1667", + "cum": "97877.5" + } + }, + { + "tier": 10.0, + "symbol": "NMR/USDT:USDT", + "currency": "USDT", "minNotional": 4500000.0, "maxNotional": 7500000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "9", + "bracket": "10", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "409650.0" + "cum": "472727.5" } }, { - "tier": 10.0, + "tier": 11.0, "symbol": "NMR/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -54688,12 +54930,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "10", + "bracket": "11", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2284650.0" + "cum": "2347727.5" } } ], @@ -56495,13 +56737,13 @@ "symbol": "ONDO/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 5000.0, + "maxNotional": 7500.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "5000", + "notionalCap": "7500", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -56511,170 +56753,170 @@ "tier": 2.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, + "minNotional": 7500.0, + "maxNotional": 15000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "10000", - "notionalFloor": "5000", + "notionalCap": "15000", + "notionalFloor": "7500", "maintMarginRatio": "0.015", - "cum": "25.0" + "cum": "37.5" } }, { "tier": 3.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 50000.0, + "minNotional": 15000.0, + "maxNotional": 75000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "50000", - "notionalFloor": "10000", + "notionalCap": "75000", + "notionalFloor": "15000", "maintMarginRatio": "0.02", - "cum": "75.0" + "cum": "112.5" } }, { "tier": 4.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, + "minNotional": 75000.0, + "maxNotional": 200000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "100000", - "notionalFloor": "50000", + "notionalCap": "200000", + "notionalFloor": "75000", "maintMarginRatio": "0.025", - "cum": "325.0" + "cum": "487.5" } }, { "tier": 5.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 175000.0, + "minNotional": 200000.0, + "maxNotional": 350000.0, "maintenanceMarginRate": 0.0333, "maxLeverage": 15.0, "info": { "bracket": "5", "initialLeverage": "15", - "notionalCap": "175000", - "notionalFloor": "100000", + "notionalCap": "350000", + "notionalFloor": "200000", "maintMarginRatio": "0.0333", - "cum": "1155.0" + "cum": "2147.5" } }, { "tier": 6.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 175000.0, - "maxNotional": 250000.0, + "minNotional": 350000.0, + "maxNotional": 750000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "6", "initialLeverage": "10", - "notionalCap": "250000", - "notionalFloor": "175000", + "notionalCap": "750000", + "notionalFloor": "350000", "maintMarginRatio": "0.05", - "cum": "4077.5" + "cum": "7992.5" } }, { "tier": 7.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 750000.0, + "minNotional": 750000.0, + "maxNotional": 3000000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "7", "initialLeverage": "5", - "notionalCap": "750000", - "notionalFloor": "250000", + "notionalCap": "3000000", + "notionalFloor": "750000", "maintMarginRatio": "0.1", - "cum": "16577.5" + "cum": "45492.5" } }, { "tier": 8.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 3000000.0, + "maxNotional": 4500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "8", "initialLeverage": "4", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "4500000", + "notionalFloor": "3000000", "maintMarginRatio": "0.125", - "cum": "35327.5" + "cum": "120492.5" } }, { "tier": 9.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 4500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "9", "initialLeverage": "3", - "notionalCap": "4500000", - "notionalFloor": "1500000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.1667", - "cum": "97877.5" + "cum": "308142.5" } }, { "tier": 10.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 4500000.0, - "maxNotional": 7500000.0, + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "10", "initialLeverage": "2", - "notionalCap": "7500000", - "notionalFloor": "4500000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.25", - "cum": "472727.5" + "cum": "932892.5" } }, { "tier": 11.0, "symbol": "ONDO/USDT:USDT", "currency": "USDT", - "minNotional": 7500000.0, - "maxNotional": 12000000.0, + "minNotional": 12000000.0, + "maxNotional": 18000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "11", "initialLeverage": "1", - "notionalCap": "12000000", - "notionalFloor": "7500000", + "notionalCap": "18000000", + "notionalFloor": "12000000", "maintMarginRatio": "0.5", - "cum": "2347727.5" + "cum": "3932892.5" } } ], @@ -58956,13 +59198,13 @@ "symbol": "PENGU/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 7500.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "7500", + "notionalCap": "20000", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -58972,170 +59214,136 @@ "tier": 2.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 7500.0, - "maxNotional": 15000.0, + "minNotional": 20000.0, + "maxNotional": 200000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "15000", - "notionalFloor": "7500", + "notionalCap": "200000", + "notionalFloor": "20000", "maintMarginRatio": "0.015", - "cum": "37.5" + "cum": "100.0" } }, { "tier": 3.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 15000.0, - "maxNotional": 75000.0, + "minNotional": 200000.0, + "maxNotional": 1000000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "75000", - "notionalFloor": "15000", + "notionalCap": "1000000", + "notionalFloor": "200000", "maintMarginRatio": "0.02", - "cum": "112.5" + "cum": "1100.0" } }, { "tier": 4.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 75000.0, - "maxNotional": 200000.0, + "minNotional": 1000000.0, + "maxNotional": 2000000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "200000", - "notionalFloor": "75000", + "notionalCap": "2000000", + "notionalFloor": "1000000", "maintMarginRatio": "0.025", - "cum": "487.5" + "cum": "6100.0" } }, { "tier": 5.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 200000.0, - "maxNotional": 350000.0, - "maintenanceMarginRate": 0.0333, - "maxLeverage": 15.0, + "minNotional": 2000000.0, + "maxNotional": 5000000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "5", - "initialLeverage": "15", - "notionalCap": "350000", - "notionalFloor": "200000", - "maintMarginRatio": "0.0333", - "cum": "2147.5" + "initialLeverage": "10", + "notionalCap": "5000000", + "notionalFloor": "2000000", + "maintMarginRatio": "0.05", + "cum": "56100.0" } }, { "tier": 6.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 350000.0, - "maxNotional": 750000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 5000000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "6", - "initialLeverage": "10", - "notionalCap": "750000", - "notionalFloor": "350000", - "maintMarginRatio": "0.05", - "cum": "7992.5" + "initialLeverage": "5", + "notionalCap": "7500000", + "notionalFloor": "5000000", + "maintMarginRatio": "0.1", + "cum": "306100.0" } }, { "tier": 7.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 3000000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 7500000.0, + "maxNotional": 10000000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "7", - "initialLeverage": "5", - "notionalCap": "3000000", - "notionalFloor": "750000", - "maintMarginRatio": "0.1", - "cum": "45492.5" + "initialLeverage": "4", + "notionalCap": "10000000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.125", + "cum": "493600.0" } }, { "tier": 8.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 3000000.0, - "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 10000000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "8", - "initialLeverage": "4", - "notionalCap": "4500000", - "notionalFloor": "3000000", - "maintMarginRatio": "0.125", - "cum": "120492.5" + "initialLeverage": "2", + "notionalCap": "12500000", + "notionalFloor": "10000000", + "maintMarginRatio": "0.25", + "cum": "1743600.0" } }, { "tier": 9.0, "symbol": "PENGU/USDT:USDT", "currency": "USDT", - "minNotional": 4500000.0, - "maxNotional": 7500000.0, - "maintenanceMarginRate": 0.1667, - "maxLeverage": 3.0, - "info": { - "bracket": "9", - "initialLeverage": "3", - "notionalCap": "7500000", - "notionalFloor": "4500000", - "maintMarginRatio": "0.1667", - "cum": "308142.5" - } - }, - { - "tier": 10.0, - "symbol": "PENGU/USDT:USDT", - "currency": "USDT", - "minNotional": 7500000.0, - "maxNotional": 12000000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "10", - "initialLeverage": "2", - "notionalCap": "12000000", - "notionalFloor": "7500000", - "maintMarginRatio": "0.25", - "cum": "932892.5" - } - }, - { - "tier": 11.0, - "symbol": "PENGU/USDT:USDT", - "currency": "USDT", - "minNotional": 12000000.0, - "maxNotional": 18000000.0, + "minNotional": 12500000.0, + "maxNotional": 15000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "11", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "18000000", - "notionalFloor": "12000000", + "notionalCap": "15000000", + "notionalFloor": "12500000", "maintMarginRatio": "0.5", - "cum": "3932892.5" + "cum": "4868600.0" } } ], @@ -60712,13 +60920,13 @@ "symbol": "POL/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 5000.0, + "maxNotional": 7500.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "5000", + "notionalCap": "7500", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -60728,170 +60936,170 @@ "tier": 2.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, + "minNotional": 7500.0, + "maxNotional": 15000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "10000", - "notionalFloor": "5000", + "notionalCap": "15000", + "notionalFloor": "7500", "maintMarginRatio": "0.015", - "cum": "25.0" + "cum": "37.5" } }, { "tier": 3.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 50000.0, + "minNotional": 15000.0, + "maxNotional": 75000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "50000", - "notionalFloor": "10000", + "notionalCap": "75000", + "notionalFloor": "15000", "maintMarginRatio": "0.02", - "cum": "75.0" + "cum": "112.5" } }, { "tier": 4.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, + "minNotional": 75000.0, + "maxNotional": 200000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "100000", - "notionalFloor": "50000", + "notionalCap": "200000", + "notionalFloor": "75000", "maintMarginRatio": "0.025", - "cum": "325.0" + "cum": "487.5" } }, { "tier": 5.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 175000.0, + "minNotional": 200000.0, + "maxNotional": 350000.0, "maintenanceMarginRate": 0.0333, "maxLeverage": 15.0, "info": { "bracket": "5", "initialLeverage": "15", - "notionalCap": "175000", - "notionalFloor": "100000", + "notionalCap": "350000", + "notionalFloor": "200000", "maintMarginRatio": "0.0333", - "cum": "1155.0" + "cum": "2147.5" } }, { "tier": 6.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 175000.0, - "maxNotional": 250000.0, + "minNotional": 350000.0, + "maxNotional": 750000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "6", "initialLeverage": "10", - "notionalCap": "250000", - "notionalFloor": "175000", + "notionalCap": "750000", + "notionalFloor": "350000", "maintMarginRatio": "0.05", - "cum": "4077.5" + "cum": "7992.5" } }, { "tier": 7.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 750000.0, + "minNotional": 750000.0, + "maxNotional": 3000000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "7", "initialLeverage": "5", - "notionalCap": "750000", - "notionalFloor": "250000", + "notionalCap": "3000000", + "notionalFloor": "750000", "maintMarginRatio": "0.1", - "cum": "16577.5" + "cum": "45492.5" } }, { "tier": 8.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 3000000.0, + "maxNotional": 4500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "8", "initialLeverage": "4", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "4500000", + "notionalFloor": "3000000", "maintMarginRatio": "0.125", - "cum": "35327.5" + "cum": "120492.5" } }, { "tier": 9.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 4500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "9", "initialLeverage": "3", - "notionalCap": "4500000", - "notionalFloor": "1500000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.1667", - "cum": "97877.5" + "cum": "308142.5" } }, { "tier": 10.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 4500000.0, - "maxNotional": 7500000.0, + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "10", "initialLeverage": "2", - "notionalCap": "7500000", - "notionalFloor": "4500000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.25", - "cum": "472727.5" + "cum": "932892.5" } }, { "tier": 11.0, "symbol": "POL/USDT:USDT", "currency": "USDT", - "minNotional": 7500000.0, - "maxNotional": 12000000.0, + "minNotional": 12000000.0, + "maxNotional": 18000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "11", "initialLeverage": "1", - "notionalCap": "12000000", - "notionalFloor": "7500000", + "notionalCap": "18000000", + "notionalFloor": "12000000", "maintMarginRatio": "0.5", - "cum": "2347727.5" + "cum": "3932892.5" } } ], @@ -61074,15 +61282,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -61090,71 +61298,54 @@ "symbol": "PONKE/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "PONKE/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "62500", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "PONKE/USDT:USDT", "currency": "USDT", - "minNotional": 62500.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "125000", - "notionalFloor": "62500", - "maintMarginRatio": "0.1", - "cum": "3825.0" - } - }, - { - "tier": 6.0, - "symbol": "PONKE/USDT:USDT", - "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 50000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": "6", + "bracket": "5", "initialLeverage": "4", "notionalCap": "250000", - "notionalFloor": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "6950.0" + "cum": "2550.0" } }, { - "tier": 7.0, + "tier": 6.0, "symbol": "PONKE/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, @@ -61162,16 +61353,16 @@ "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": "7", + "bracket": "6", "initialLeverage": "3", "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "17375.0" + "cum": "12975.0" } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "PONKE/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, @@ -61179,16 +61370,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "7", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "387825.0" } }, { - "tier": 9.0, + "tier": 8.0, "symbol": "PONKE/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -61196,12 +61387,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "2262825.0" } } ], @@ -61677,15 +61868,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -61693,71 +61884,54 @@ "symbol": "POWR/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "POWR/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "62500", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "POWR/USDT:USDT", "currency": "USDT", - "minNotional": 62500.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "125000", - "notionalFloor": "62500", - "maintMarginRatio": "0.1", - "cum": "3825.0" - } - }, - { - "tier": 6.0, - "symbol": "POWR/USDT:USDT", - "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 50000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": "6", + "bracket": "5", "initialLeverage": "4", "notionalCap": "250000", - "notionalFloor": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "6950.0" + "cum": "2550.0" } }, { - "tier": 7.0, + "tier": 6.0, "symbol": "POWR/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, @@ -61765,16 +61939,16 @@ "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": "7", + "bracket": "6", "initialLeverage": "3", "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "17375.0" + "cum": "12975.0" } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "POWR/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, @@ -61782,16 +61956,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "7", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "387825.0" } }, { - "tier": 9.0, + "tier": 8.0, "symbol": "POWR/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -61799,12 +61973,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "2262825.0" } } ], @@ -65605,15 +65779,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -65621,71 +65795,54 @@ "symbol": "RIF/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "RIF/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "62500", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "RIF/USDT:USDT", "currency": "USDT", - "minNotional": 62500.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "125000", - "notionalFloor": "62500", - "maintMarginRatio": "0.1", - "cum": "3825.0" - } - }, - { - "tier": 6.0, - "symbol": "RIF/USDT:USDT", - "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 50000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": "6", + "bracket": "5", "initialLeverage": "4", "notionalCap": "250000", - "notionalFloor": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "6950.0" + "cum": "2550.0" } }, { - "tier": 7.0, + "tier": 6.0, "symbol": "RIF/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, @@ -65693,16 +65850,16 @@ "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": "7", + "bracket": "6", "initialLeverage": "3", "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "17375.0" + "cum": "12975.0" } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "RIF/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, @@ -65710,16 +65867,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "7", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "387825.0" } }, { - "tier": 9.0, + "tier": 8.0, "symbol": "RIF/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -65727,12 +65884,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "2262825.0" } } ], @@ -68496,13 +68653,13 @@ "symbol": "SEI/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 5000.0, + "maxNotional": 7500.0, "maintenanceMarginRate": 0.01, "maxLeverage": 75.0, "info": { "bracket": "1", "initialLeverage": "75", - "notionalCap": "5000", + "notionalCap": "7500", "notionalFloor": "0", "maintMarginRatio": "0.01", "cum": "0.0" @@ -68512,170 +68669,170 @@ "tier": 2.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 5000.0, - "maxNotional": 10000.0, + "minNotional": 7500.0, + "maxNotional": 15000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "10000", - "notionalFloor": "5000", + "notionalCap": "15000", + "notionalFloor": "7500", "maintMarginRatio": "0.015", - "cum": "25.0" + "cum": "37.5" } }, { "tier": 3.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 50000.0, + "minNotional": 15000.0, + "maxNotional": 75000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "50000", - "notionalFloor": "10000", + "notionalCap": "75000", + "notionalFloor": "15000", "maintMarginRatio": "0.02", - "cum": "75.0" + "cum": "112.5" } }, { "tier": 4.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, + "minNotional": 75000.0, + "maxNotional": 200000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "100000", - "notionalFloor": "50000", + "notionalCap": "200000", + "notionalFloor": "75000", "maintMarginRatio": "0.025", - "cum": "325.0" + "cum": "487.5" } }, { "tier": 5.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 175000.0, + "minNotional": 200000.0, + "maxNotional": 350000.0, "maintenanceMarginRate": 0.0333, "maxLeverage": 15.0, "info": { "bracket": "5", "initialLeverage": "15", - "notionalCap": "175000", - "notionalFloor": "100000", + "notionalCap": "350000", + "notionalFloor": "200000", "maintMarginRatio": "0.0333", - "cum": "1155.0" + "cum": "2147.5" } }, { "tier": 6.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 175000.0, - "maxNotional": 250000.0, + "minNotional": 350000.0, + "maxNotional": 750000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "6", "initialLeverage": "10", - "notionalCap": "250000", - "notionalFloor": "175000", + "notionalCap": "750000", + "notionalFloor": "350000", "maintMarginRatio": "0.05", - "cum": "4077.5" + "cum": "7992.5" } }, { "tier": 7.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 750000.0, + "minNotional": 750000.0, + "maxNotional": 3000000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "7", "initialLeverage": "5", - "notionalCap": "750000", - "notionalFloor": "250000", + "notionalCap": "3000000", + "notionalFloor": "750000", "maintMarginRatio": "0.1", - "cum": "16577.5" + "cum": "45492.5" } }, { "tier": 8.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 750000.0, - "maxNotional": 1500000.0, + "minNotional": 3000000.0, + "maxNotional": 4500000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "8", "initialLeverage": "4", - "notionalCap": "1500000", - "notionalFloor": "750000", + "notionalCap": "4500000", + "notionalFloor": "3000000", "maintMarginRatio": "0.125", - "cum": "35327.5" + "cum": "120492.5" } }, { "tier": 9.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 1500000.0, - "maxNotional": 4500000.0, + "minNotional": 4500000.0, + "maxNotional": 7500000.0, "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": "9", "initialLeverage": "3", - "notionalCap": "4500000", - "notionalFloor": "1500000", + "notionalCap": "7500000", + "notionalFloor": "4500000", "maintMarginRatio": "0.1667", - "cum": "97877.5" + "cum": "308142.5" } }, { "tier": 10.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 4500000.0, - "maxNotional": 7500000.0, + "minNotional": 7500000.0, + "maxNotional": 12000000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": "10", "initialLeverage": "2", - "notionalCap": "7500000", - "notionalFloor": "4500000", + "notionalCap": "12000000", + "notionalFloor": "7500000", "maintMarginRatio": "0.25", - "cum": "472727.5" + "cum": "932892.5" } }, { "tier": 11.0, "symbol": "SEI/USDT:USDT", "currency": "USDT", - "minNotional": 7500000.0, - "maxNotional": 12000000.0, + "minNotional": 12000000.0, + "maxNotional": 18000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { "bracket": "11", "initialLeverage": "1", - "notionalCap": "12000000", - "notionalFloor": "7500000", + "notionalCap": "18000000", + "notionalFloor": "12000000", "maintMarginRatio": "0.5", - "cum": "2347727.5" + "cum": "3932892.5" } } ], @@ -69168,15 +69325,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -69184,71 +69341,54 @@ "symbol": "SIREN/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "SIREN/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "62500", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "SIREN/USDT:USDT", "currency": "USDT", - "minNotional": 62500.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "125000", - "notionalFloor": "62500", - "maintMarginRatio": "0.1", - "cum": "3825.0" - } - }, - { - "tier": 6.0, - "symbol": "SIREN/USDT:USDT", - "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 50000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": "6", + "bracket": "5", "initialLeverage": "4", "notionalCap": "250000", - "notionalFloor": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "6950.0" + "cum": "2550.0" } }, { - "tier": 7.0, + "tier": 6.0, "symbol": "SIREN/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, @@ -69256,16 +69396,16 @@ "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": "7", + "bracket": "6", "initialLeverage": "3", "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "17375.0" + "cum": "12975.0" } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "SIREN/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, @@ -69273,16 +69413,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "7", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "387825.0" } }, { - "tier": 9.0, + "tier": 8.0, "symbol": "SIREN/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -69290,12 +69430,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "2262825.0" } } ], @@ -69615,13 +69755,13 @@ "symbol": "SKY/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 10000.0, + "maxNotional": 25000.0, "maintenanceMarginRate": 0.015, "maxLeverage": 50.0, "info": { "bracket": "2", "initialLeverage": "50", - "notionalCap": "10000", + "notionalCap": "25000", "notionalFloor": "5000", "maintMarginRatio": "0.015", "cum": "25.0" @@ -69631,136 +69771,119 @@ "tier": 3.0, "symbol": "SKY/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 25000.0, + "minNotional": 25000.0, + "maxNotional": 400000.0, "maintenanceMarginRate": 0.02, "maxLeverage": 25.0, "info": { "bracket": "3", "initialLeverage": "25", - "notionalCap": "25000", - "notionalFloor": "10000", + "notionalCap": "400000", + "notionalFloor": "25000", "maintMarginRatio": "0.02", - "cum": "75.0" + "cum": "150.0" } }, { "tier": 4.0, "symbol": "SKY/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 50000.0, + "minNotional": 400000.0, + "maxNotional": 800000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "4", "initialLeverage": "20", - "notionalCap": "50000", - "notionalFloor": "25000", + "notionalCap": "800000", + "notionalFloor": "400000", "maintMarginRatio": "0.025", - "cum": "200.0" + "cum": "2150.0" } }, { "tier": 5.0, "symbol": "SKY/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 125000.0, + "minNotional": 800000.0, + "maxNotional": 4000000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "5", "initialLeverage": "10", - "notionalCap": "125000", - "notionalFloor": "50000", + "notionalCap": "4000000", + "notionalFloor": "800000", "maintMarginRatio": "0.05", - "cum": "1450.0" + "cum": "22150.0" } }, { "tier": 6.0, "symbol": "SKY/USDT:USDT", "currency": "USDT", - "minNotional": 125000.0, - "maxNotional": 250000.0, + "minNotional": 4000000.0, + "maxNotional": 8000000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "6", "initialLeverage": "5", - "notionalCap": "250000", - "notionalFloor": "125000", + "notionalCap": "8000000", + "notionalFloor": "4000000", "maintMarginRatio": "0.1", - "cum": "7700.0" + "cum": "222150.0" } }, { "tier": 7.0, "symbol": "SKY/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 500000.0, + "minNotional": 8000000.0, + "maxNotional": 10000000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": "7", "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "250000", + "notionalCap": "10000000", + "notionalFloor": "8000000", "maintMarginRatio": "0.125", - "cum": "13950.0" + "cum": "422150.0" } }, { "tier": 8.0, "symbol": "SKY/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, - "maxNotional": 4500000.0, - "maintenanceMarginRate": 0.1667, - "maxLeverage": 3.0, + "minNotional": 10000000.0, + "maxNotional": 12000000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": "8", - "initialLeverage": "3", - "notionalCap": "4500000", - "notionalFloor": "500000", - "maintMarginRatio": "0.1667", - "cum": "34800.0" + "initialLeverage": "2", + "notionalCap": "12000000", + "notionalFloor": "10000000", + "maintMarginRatio": "0.25", + "cum": "1672150.0" } }, { "tier": 9.0, "symbol": "SKY/USDT:USDT", "currency": "USDT", - "minNotional": 4500000.0, - "maxNotional": 7500000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": "9", - "initialLeverage": "2", - "notionalCap": "7500000", - "notionalFloor": "4500000", - "maintMarginRatio": "0.25", - "cum": "409650.0" - } - }, - { - "tier": 10.0, - "symbol": "SKY/USDT:USDT", - "currency": "USDT", - "minNotional": 7500000.0, - "maxNotional": 12500000.0, + "minNotional": 12000000.0, + "maxNotional": 14000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "10", + "bracket": "9", "initialLeverage": "1", - "notionalCap": "12500000", - "notionalFloor": "7500000", + "notionalCap": "14000000", + "notionalFloor": "12000000", "maintMarginRatio": "0.5", - "cum": "2284650.0" + "cum": "4672150.0" } } ], @@ -69788,15 +69911,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -69804,50 +69927,50 @@ "symbol": "SKYAI/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "50000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "SKYAI/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "125000", - "notionalFloor": "50000", - "maintMarginRatio": "0.05", - "cum": "1325.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "SKYAI/USDT:USDT", "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 50000.0, "maxNotional": 250000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": "5", - "initialLeverage": "5", + "initialLeverage": "4", "notionalCap": "250000", - "notionalFloor": "125000", - "maintMarginRatio": "0.1", - "cum": "7575.0" + "notionalFloor": "50000", + "maintMarginRatio": "0.125", + "cum": "2550.0" } }, { @@ -69855,37 +69978,20 @@ "symbol": "SKYAI/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, - "info": { - "bracket": "6", - "initialLeverage": "4", - "notionalCap": "500000", - "notionalFloor": "250000", - "maintMarginRatio": "0.125", - "cum": "13825.0" - } - }, - { - "tier": 7.0, - "symbol": "SKYAI/USDT:USDT", - "currency": "USDT", - "minNotional": 500000.0, "maxNotional": 4500000.0, "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": "7", + "bracket": "6", "initialLeverage": "3", "notionalCap": "4500000", - "notionalFloor": "500000", + "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "34675.0" + "cum": "12975.0" } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "SKYAI/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, @@ -69893,16 +69999,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "7", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "409525.0" + "cum": "387825.0" } }, { - "tier": 9.0, + "tier": 8.0, "symbol": "SKYAI/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -69910,12 +70016,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2284525.0" + "cum": "2262825.0" } } ], @@ -72249,15 +72355,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -72265,71 +72371,54 @@ "symbol": "SQD/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "SQD/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "62500", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "SQD/USDT:USDT", "currency": "USDT", - "minNotional": 62500.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "125000", - "notionalFloor": "62500", - "maintMarginRatio": "0.1", - "cum": "3825.0" - } - }, - { - "tier": 6.0, - "symbol": "SQD/USDT:USDT", - "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 50000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": "6", + "bracket": "5", "initialLeverage": "4", "notionalCap": "250000", - "notionalFloor": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "6950.0" + "cum": "2550.0" } }, { - "tier": 7.0, + "tier": 6.0, "symbol": "SQD/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, @@ -72337,16 +72426,16 @@ "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": "7", + "bracket": "6", "initialLeverage": "3", "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "17375.0" + "cum": "12975.0" } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "SQD/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, @@ -72354,16 +72443,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "7", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "387825.0" } }, { - "tier": 9.0, + "tier": 8.0, "symbol": "SQD/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -72371,12 +72460,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "2262825.0" } } ], @@ -72552,6 +72641,161 @@ } } ], + "STBL/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "STBL/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "STBL/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "STBL/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "STBL/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "STBL/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "STBL/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "STBL/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "STBL/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "STBL/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], "STEEM/USDT:USDT": [ { "tier": 1.0, @@ -75832,13 +76076,13 @@ "symbol": "TA/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 11000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": "2", "initialLeverage": "20", - "notionalCap": "11000", + "notionalCap": "10000", "notionalFloor": "5000", "maintMarginRatio": "0.025", "cum": "50.0" @@ -75848,41 +76092,41 @@ "tier": 3.0, "symbol": "TA/USDT:USDT", "currency": "USDT", - "minNotional": 11000.0, - "maxNotional": 22500.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": "3", "initialLeverage": "10", - "notionalCap": "22500", - "notionalFloor": "11000", + "notionalCap": "20000", + "notionalFloor": "10000", "maintMarginRatio": "0.05", - "cum": "325.0" + "cum": "300.0" } }, { "tier": 4.0, "symbol": "TA/USDT:USDT", "currency": "USDT", - "minNotional": 22500.0, - "maxNotional": 65000.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": "4", "initialLeverage": "5", - "notionalCap": "65000", - "notionalFloor": "22500", + "notionalCap": "50000", + "notionalFloor": "20000", "maintMarginRatio": "0.1", - "cum": "1450.0" + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "TA/USDT:USDT", "currency": "USDT", - "minNotional": 65000.0, + "minNotional": 50000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, @@ -75890,9 +76134,9 @@ "bracket": "5", "initialLeverage": "4", "notionalCap": "250000", - "notionalFloor": "65000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "3075.0" + "cum": "2550.0" } }, { @@ -75909,7 +76153,7 @@ "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "13500.0" + "cum": "12975.0" } }, { @@ -75926,7 +76170,7 @@ "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "388350.0" + "cum": "387825.0" } }, { @@ -75943,7 +76187,7 @@ "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2263350.0" + "cum": "2262825.0" } } ], @@ -76264,15 +76508,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -76280,71 +76524,54 @@ "symbol": "TAIKO/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "TAIKO/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "62500", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "TAIKO/USDT:USDT", "currency": "USDT", - "minNotional": 62500.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "125000", - "notionalFloor": "62500", - "maintMarginRatio": "0.1", - "cum": "3825.0" - } - }, - { - "tier": 6.0, - "symbol": "TAIKO/USDT:USDT", - "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 50000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": "6", + "bracket": "5", "initialLeverage": "4", "notionalCap": "250000", - "notionalFloor": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "6950.0" + "cum": "2550.0" } }, { - "tier": 7.0, + "tier": 6.0, "symbol": "TAIKO/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, @@ -76352,16 +76579,16 @@ "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": "7", + "bracket": "6", "initialLeverage": "3", "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "17375.0" + "cum": "12975.0" } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "TAIKO/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, @@ -76369,16 +76596,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "7", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "387825.0" } }, { - "tier": 9.0, + "tier": 8.0, "symbol": "TAIKO/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -76386,12 +76613,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "2262825.0" } } ], @@ -77625,15 +77852,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -77641,71 +77868,54 @@ "symbol": "TNSR/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "TNSR/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "62500", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "TNSR/USDT:USDT", "currency": "USDT", - "minNotional": 62500.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "125000", - "notionalFloor": "62500", - "maintMarginRatio": "0.1", - "cum": "3825.0" - } - }, - { - "tier": 6.0, - "symbol": "TNSR/USDT:USDT", - "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 50000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": "6", + "bracket": "5", "initialLeverage": "4", "notionalCap": "250000", - "notionalFloor": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "6950.0" + "cum": "2550.0" } }, { - "tier": 7.0, + "tier": 6.0, "symbol": "TNSR/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, @@ -77713,16 +77923,16 @@ "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": "7", + "bracket": "6", "initialLeverage": "3", "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "17375.0" + "cum": "12975.0" } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "TNSR/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, @@ -77730,16 +77940,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "7", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "387825.0" } }, { - "tier": 9.0, + "tier": 8.0, "symbol": "TNSR/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -77747,12 +77957,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "2262825.0" } } ], @@ -78049,6 +78259,178 @@ } } ], + "TOSHI/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "TOSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "TOSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "TOSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "TOSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "TOSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "TOSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "TOSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "TOSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "TOSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "TOSHI/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], "TOWNS/USDT:USDT": [ { "tier": 1.0, @@ -79398,15 +79780,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": "2", - "initialLeverage": "20", + "initialLeverage": "25", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.025", - "cum": "50.0" + "maintMarginRatio": "0.02", + "cum": "25.0" } }, { @@ -79414,71 +79796,88 @@ "symbol": "TST/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 20000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "3", - "initialLeverage": "10", - "notionalCap": "20000", + "initialLeverage": "20", + "notionalCap": "25000", "notionalFloor": "10000", - "maintMarginRatio": "0.05", - "cum": "300.0" + "maintMarginRatio": "0.025", + "cum": "75.0" } }, { "tier": 4.0, "symbol": "TST/USDT:USDT", "currency": "USDT", - "minNotional": 20000.0, - "maxNotional": 50000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "4", - "initialLeverage": "5", - "notionalCap": "50000", - "notionalFloor": "20000", - "maintMarginRatio": "0.1", - "cum": "1300.0" + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" } }, { "tier": 5.0, "symbol": "TST/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 250000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "5", - "initialLeverage": "4", - "notionalCap": "250000", - "notionalFloor": "50000", - "maintMarginRatio": "0.125", - "cum": "2550.0" + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" } }, { "tier": 6.0, "symbol": "TST/USDT:USDT", "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "TST/USDT:USDT", + "currency": "USDT", "minNotional": 250000.0, "maxNotional": 4500000.0, "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": "6", + "bracket": "7", "initialLeverage": "3", "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "12975.0" + "cum": "17375.0" } }, { - "tier": 7.0, + "tier": 8.0, "symbol": "TST/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, @@ -79486,16 +79885,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "7", + "bracket": "8", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "387825.0" + "cum": "392225.0" } }, { - "tier": 8.0, + "tier": 9.0, "symbol": "TST/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -79503,12 +79902,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "8", + "bracket": "9", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2262825.0" + "cum": "2267225.0" } } ], @@ -79977,6 +80376,161 @@ } } ], + "UB/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "UB/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "UB/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "UB/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "UB/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "UB/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "UB/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "UB/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "UB/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "UB/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], "UMA/USDT:USDT": [ { "tier": 1.0, @@ -86056,6 +86610,161 @@ } } ], + "XPIN/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "XPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "1", + "initialLeverage": "50", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.015", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "XPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "2", + "initialLeverage": "25", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.02", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "XPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "3", + "initialLeverage": "20", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.025", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "XPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 62500.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "4", + "initialLeverage": "10", + "notionalCap": "62500", + "notionalFloor": "25000", + "maintMarginRatio": "0.05", + "cum": "700.0" + } + }, + { + "tier": 5.0, + "symbol": "XPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 62500.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "5", + "initialLeverage": "5", + "notionalCap": "125000", + "notionalFloor": "62500", + "maintMarginRatio": "0.1", + "cum": "3825.0" + } + }, + { + "tier": 6.0, + "symbol": "XPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "6", + "initialLeverage": "4", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.125", + "cum": "6950.0" + } + }, + { + "tier": 7.0, + "symbol": "XPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "7", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.1667", + "cum": "17375.0" + } + }, + { + "tier": 8.0, + "symbol": "XPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "8", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "392225.0" + } + }, + { + "tier": 9.0, + "symbol": "XPIN/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "9", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2267225.0" + } + } + ], "XPL/USDT:USDT": [ { "tier": 1.0, @@ -88517,6 +89226,178 @@ } } ], + "ZKC/USDT:USDT": [ + { + "tier": 1.0, + "symbol": "ZKC/USDT:USDT", + "currency": "USDT", + "minNotional": 0.0, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.01, + "maxLeverage": 75.0, + "info": { + "bracket": "1", + "initialLeverage": "75", + "notionalCap": "5000", + "notionalFloor": "0", + "maintMarginRatio": "0.01", + "cum": "0.0" + } + }, + { + "tier": 2.0, + "symbol": "ZKC/USDT:USDT", + "currency": "USDT", + "minNotional": 5000.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.015, + "maxLeverage": 50.0, + "info": { + "bracket": "2", + "initialLeverage": "50", + "notionalCap": "10000", + "notionalFloor": "5000", + "maintMarginRatio": "0.015", + "cum": "25.0" + } + }, + { + "tier": 3.0, + "symbol": "ZKC/USDT:USDT", + "currency": "USDT", + "minNotional": 10000.0, + "maxNotional": 25000.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, + "info": { + "bracket": "3", + "initialLeverage": "25", + "notionalCap": "25000", + "notionalFloor": "10000", + "maintMarginRatio": "0.02", + "cum": "75.0" + } + }, + { + "tier": 4.0, + "symbol": "ZKC/USDT:USDT", + "currency": "USDT", + "minNotional": 25000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, + "info": { + "bracket": "4", + "initialLeverage": "20", + "notionalCap": "50000", + "notionalFloor": "25000", + "maintMarginRatio": "0.025", + "cum": "200.0" + } + }, + { + "tier": 5.0, + "symbol": "ZKC/USDT:USDT", + "currency": "USDT", + "minNotional": 50000.0, + "maxNotional": 125000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, + "info": { + "bracket": "5", + "initialLeverage": "10", + "notionalCap": "125000", + "notionalFloor": "50000", + "maintMarginRatio": "0.05", + "cum": "1450.0" + } + }, + { + "tier": 6.0, + "symbol": "ZKC/USDT:USDT", + "currency": "USDT", + "minNotional": 125000.0, + "maxNotional": 250000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, + "info": { + "bracket": "6", + "initialLeverage": "5", + "notionalCap": "250000", + "notionalFloor": "125000", + "maintMarginRatio": "0.1", + "cum": "7700.0" + } + }, + { + "tier": 7.0, + "symbol": "ZKC/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 500000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, + "info": { + "bracket": "7", + "initialLeverage": "4", + "notionalCap": "500000", + "notionalFloor": "250000", + "maintMarginRatio": "0.125", + "cum": "13950.0" + } + }, + { + "tier": 8.0, + "symbol": "ZKC/USDT:USDT", + "currency": "USDT", + "minNotional": 500000.0, + "maxNotional": 4500000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, + "info": { + "bracket": "8", + "initialLeverage": "3", + "notionalCap": "4500000", + "notionalFloor": "500000", + "maintMarginRatio": "0.1667", + "cum": "34800.0" + } + }, + { + "tier": 9.0, + "symbol": "ZKC/USDT:USDT", + "currency": "USDT", + "minNotional": 4500000.0, + "maxNotional": 7500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": "9", + "initialLeverage": "2", + "notionalCap": "7500000", + "notionalFloor": "4500000", + "maintMarginRatio": "0.25", + "cum": "409650.0" + } + }, + { + "tier": 10.0, + "symbol": "ZKC/USDT:USDT", + "currency": "USDT", + "minNotional": 7500000.0, + "maxNotional": 12500000.0, + "maintenanceMarginRate": 0.5, + "maxLeverage": 1.0, + "info": { + "bracket": "10", + "initialLeverage": "1", + "notionalCap": "12500000", + "notionalFloor": "7500000", + "maintMarginRatio": "0.5", + "cum": "2284650.0" + } + } + ], "ZKJ/USDT:USDT": [ { "tier": 1.0, @@ -88868,15 +89749,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": "2", - "initialLeverage": "25", + "initialLeverage": "20", "notionalCap": "10000", "notionalFloor": "5000", - "maintMarginRatio": "0.02", - "cum": "25.0" + "maintMarginRatio": "0.025", + "cum": "50.0" } }, { @@ -88884,71 +89765,54 @@ "symbol": "ZRC/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": "3", - "initialLeverage": "20", - "notionalCap": "25000", + "initialLeverage": "10", + "notionalCap": "20000", "notionalFloor": "10000", - "maintMarginRatio": "0.025", - "cum": "75.0" + "maintMarginRatio": "0.05", + "cum": "300.0" } }, { "tier": 4.0, "symbol": "ZRC/USDT:USDT", "currency": "USDT", - "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": "4", - "initialLeverage": "10", - "notionalCap": "62500", - "notionalFloor": "25000", - "maintMarginRatio": "0.05", - "cum": "700.0" + "initialLeverage": "5", + "notionalCap": "50000", + "notionalFloor": "20000", + "maintMarginRatio": "0.1", + "cum": "1300.0" } }, { "tier": 5.0, "symbol": "ZRC/USDT:USDT", "currency": "USDT", - "minNotional": 62500.0, - "maxNotional": 125000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, - "info": { - "bracket": "5", - "initialLeverage": "5", - "notionalCap": "125000", - "notionalFloor": "62500", - "maintMarginRatio": "0.1", - "cum": "3825.0" - } - }, - { - "tier": 6.0, - "symbol": "ZRC/USDT:USDT", - "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 50000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": "6", + "bracket": "5", "initialLeverage": "4", "notionalCap": "250000", - "notionalFloor": "125000", + "notionalFloor": "50000", "maintMarginRatio": "0.125", - "cum": "6950.0" + "cum": "2550.0" } }, { - "tier": 7.0, + "tier": 6.0, "symbol": "ZRC/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, @@ -88956,16 +89820,16 @@ "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": "7", + "bracket": "6", "initialLeverage": "3", "notionalCap": "4500000", "notionalFloor": "250000", "maintMarginRatio": "0.1667", - "cum": "17375.0" + "cum": "12975.0" } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "ZRC/USDT:USDT", "currency": "USDT", "minNotional": 4500000.0, @@ -88973,16 +89837,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": "8", + "bracket": "7", "initialLeverage": "2", "notionalCap": "7500000", "notionalFloor": "4500000", "maintMarginRatio": "0.25", - "cum": "392225.0" + "cum": "387825.0" } }, { - "tier": 9.0, + "tier": 8.0, "symbol": "ZRC/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -88990,12 +89854,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": "9", + "bracket": "8", "initialLeverage": "1", "notionalCap": "12500000", "notionalFloor": "7500000", "maintMarginRatio": "0.5", - "cum": "2267225.0" + "cum": "2262825.0" } } ], From 68c00d1c4d608219b5458749f43511cb20cbed1f Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 18 Sep 2025 07:05:10 +0200 Subject: [PATCH 11/30] chore: bump ccxt min-version requirement this will allow us to use new features e.g. `.set_markets_from_exchange()` --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index dda6811ee..4bac06296 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ classifiers = [ dependencies = [ # from requirements.txt - "ccxt>=4.4.87", + "ccxt>=4.5.4", "SQLAlchemy>=2.0.6", "python-telegram-bot>=20.1", "humanize>=4.0.0", From 8391a0612deef82333084385a116c15aab17eb6b Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 18 Sep 2025 07:07:39 +0200 Subject: [PATCH 12/30] chore: use ccxt's "set_markets_from_exchange" instead of manual logic --- freqtrade/exchange/exchange.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 7d086677d..cedc716be 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -692,12 +692,13 @@ class Exchange: # Reload async markets, then assign them to sync api retrier(self._load_async_markets, retries=retries)(reload=True) self._markets = self._api_async.markets - self._api.set_markets(self._api_async.markets, self._api_async.currencies) + self._api.set_markets_from_exchange(self._api_async) # Assign options array, as it contains some temporary information from the exchange. + # TODO: investigate with ccxt if it's safe to remove `.options` self._api.options = self._api_async.options if self._exchange_ws: # Set markets to avoid reloading on websocket api - self._ws_async.set_markets(self._api.markets, self._api.currencies) + self._ws_async.set_markets_from_exchange(self._api_async) self._ws_async.options = self._api.options self._last_markets_refresh = dt_ts() From 8e3331d0db9e3cad9b1072a3e01f739245c9e4e4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 19 Sep 2025 20:16:44 +0200 Subject: [PATCH 13/30] chore: rename variable for clarity --- freqtrade/plugins/pairlist/StaticPairList.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/freqtrade/plugins/pairlist/StaticPairList.py b/freqtrade/plugins/pairlist/StaticPairList.py index 9df437260..94ba04235 100644 --- a/freqtrade/plugins/pairlist/StaticPairList.py +++ b/freqtrade/plugins/pairlist/StaticPairList.py @@ -9,7 +9,7 @@ from copy import deepcopy from cachetools import LRUCache -from freqtrade.enums.runmode import RunMode +from freqtrade.enums import RunMode from freqtrade.exchange.exchange_types import Tickers from freqtrade.plugins.pairlist.IPairList import IPairList, PairlistParameter, SupportsBacktesting @@ -25,7 +25,8 @@ class StaticPairList(IPairList): super().__init__(*args, **kwargs) self._allow_inactive = self._pairlistconfig.get("allow_inactive", False) - self._pair_cache: LRUCache = LRUCache(maxsize=1) + # Pair cache - only used for optimize modes + self._bt_pair_cache: LRUCache = LRUCache(maxsize=1) @property def needstickers(self) -> bool: @@ -64,7 +65,7 @@ class StaticPairList(IPairList): :param tickers: Tickers (from exchange.get_tickers). May be cached. :return: List of pairs """ - pairlist = self._pair_cache.get("pairlist") + pairlist = self._bt_pair_cache.get("pairlist") if not pairlist: wl = self.verify_whitelist( @@ -78,7 +79,7 @@ class StaticPairList(IPairList): pairlist = self._whitelist_for_active_markets(wl) if self._config["runmode"] in (RunMode.BACKTEST, RunMode.HYPEROPT): - self._pair_cache["pairlist"] = pairlist.copy() + self._bt_pair_cache["pairlist"] = pairlist.copy() return pairlist From e58635a881d593926884e58fdea14e411b1a7746 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 19 Sep 2025 20:23:07 +0200 Subject: [PATCH 14/30] test: minor adjustments to new tests --- tests/optimize/test_backtesting.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 0aa0ea7e6..620e43387 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -27,7 +27,7 @@ from freqtrade.optimize.backtest_caching import get_backtest_metadata_filename, from freqtrade.optimize.backtesting import Backtesting from freqtrade.persistence import LocalTrade, Trade from freqtrade.resolvers import StrategyResolver -from freqtrade.util.datetime_helpers import dt_utc +from freqtrade.util import dt_now, dt_utc from tests.conftest import ( CURRENT_TEST_STRATEGY, EXMS, @@ -2720,9 +2720,10 @@ def test_get_backtest_metadata_filename(): @pytest.mark.parametrize("dynamic_pairlist", [True, False]) def test_time_pair_generator_refresh_pairlist(mocker, default_conf, dynamic_pairlist): patch_exchange(mocker) + default_conf["enable_dynamic_pairlist"] = dynamic_pairlist backtesting = Backtesting(default_conf) backtesting._set_strategy(backtesting.strategylist[0]) - backtesting.dynamic_pairlist = dynamic_pairlist + assert backtesting.dynamic_pairlist == dynamic_pairlist refresh_mock = mocker.patch( "freqtrade.plugins.pairlistmanager.PairListManager.refresh_pairlist" @@ -2746,16 +2747,17 @@ def test_time_pair_generator_refresh_pairlist(mocker, default_conf, dynamic_pair @pytest.mark.parametrize("dynamic_pairlist", [True, False]) def test_time_pair_generator_open_trades_first(mocker, default_conf, dynamic_pairlist): patch_exchange(mocker) + default_conf["enable_dynamic_pairlist"] = dynamic_pairlist backtesting = Backtesting(default_conf) backtesting._set_strategy(backtesting.strategylist[0]) - backtesting.dynamic_pairlist = dynamic_pairlist + assert backtesting.dynamic_pairlist == dynamic_pairlist pairs = ["XRP/BTC", "LTC/BTC", "NEO/BTC", "ETH/BTC"] # Simulate open trades trades = [ - LocalTrade(pair="XRP/BTC", open_date=datetime.now(tz=UTC), amount=1, open_rate=1), - LocalTrade(pair="NEO/BTC", open_date=datetime.now(tz=UTC), amount=1, open_rate=1), + LocalTrade(pair="XRP/BTC", open_date=dt_now(), amount=1, open_rate=1), + LocalTrade(pair="NEO/BTC", open_date=dt_now(), amount=1, open_rate=1), ] LocalTrade.bt_trades_open = trades LocalTrade.bt_trades_open_pp = { From c6551819cd123adde8bd28cccb4545e5dc98bf74 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 19 Sep 2025 20:23:36 +0200 Subject: [PATCH 15/30] chore: re-word help string --- docs/commands/backtesting.md | 2 +- docs/commands/lookahead-analysis.md | 2 +- freqtrade/commands/cli_options.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/commands/backtesting.md b/docs/commands/backtesting.md index 56d01f38f..925b29da6 100644 --- a/docs/commands/backtesting.md +++ b/docs/commands/backtesting.md @@ -49,7 +49,7 @@ options: backtesting down by a considerable amount, but will include configured protections --enable-dynamic-pairlist - Enables dynamic pairlisting in backtesting. The + Enables dynamic pairlist refreshes in backtesting. The pairlist will be generated for each new candle if you're using a pairlist handler that supports this feature, for example, ShuffleFilter. diff --git a/docs/commands/lookahead-analysis.md b/docs/commands/lookahead-analysis.md index f7354d8ea..4cb6621c2 100644 --- a/docs/commands/lookahead-analysis.md +++ b/docs/commands/lookahead-analysis.md @@ -48,7 +48,7 @@ options: backtesting down by a considerable amount, but will include configured protections --enable-dynamic-pairlist - Enables dynamic pairlisting in backtesting. The + Enables dynamic pairlist refreshes in backtesting. The pairlist will be generated for each new candle if you're using a pairlist handler that supports this feature, for example, ShuffleFilter. diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index fc613febe..9664dc385 100755 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -192,7 +192,7 @@ AVAILABLE_CLI_OPTIONS = { ), "enable_dynamic_pairlist": Arg( "--enable-dynamic-pairlist", - help="Enables dynamic pairlisting in backtesting. " + help="Enables dynamic pairlist refreshes in backtesting. " "The pairlist will be generated for each new candle if you're using a " "pairlist handler that supports this feature, for example, ShuffleFilter.", action="store_true", From 3b03d4346cdecea225f991637e172437f55ced6d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 19 Sep 2025 20:31:03 +0200 Subject: [PATCH 16/30] docs: enhance freqUI documentation page structure --- docs/freq-ui.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/freq-ui.md b/docs/freq-ui.md index 9f877a004..ff9758888 100644 --- a/docs/freq-ui.md +++ b/docs/freq-ui.md @@ -70,7 +70,16 @@ Things you can change (among others): ![FreqUI - Settings view](assets/frequi-settings-dark.png#only-dark) ![FreqUI - Settings view](assets/frequi-settings-light.png#only-light) -## Backtesting +## Webserver mode + +when freqtrade is started in [webserver mode](utils.md#webserver-mode) (freqtrade started with `freqtrade webserver`), the webserver will start in a special mode allowing for additional features, for example: + +* Downloading data +* Testing pairlists +* [Backtesting strategies](#backtesting) +* ... to be expanded + +### Backtesting When freqtrade is started in [webserver mode](utils.md#webserver-mode) (freqtrade started with `freqtrade webserver`), the backtesting view becomes available. This view allows you to backtest strategies and visualize the results. From a1dad065b25572f95bd8917b1d3d0b5d65b1259b Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 19 Sep 2025 20:32:01 +0200 Subject: [PATCH 17/30] docs: enhance doc wording around pairlists --- docs/includes/pairlists.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/includes/pairlists.md b/docs/includes/pairlists.md index 32e669065..bdc24572a 100644 --- a/docs/includes/pairlists.md +++ b/docs/includes/pairlists.md @@ -38,7 +38,7 @@ You may also use something like `.*DOWN/BTC` or `.*UP/BTC` to exclude leveraged * [`VolatilityFilter`](#volatilityfilter) !!! Tip "Testing pairlists" - Pairlist configurations can be quite tricky to get right. Best use the [`test-pairlist`](utils.md#test-pairlist) utility sub-command to test your configuration quickly. + Pairlist configurations can be quite tricky to get right. Best use freqUI in [webserver mode](freq-ui.md#webserver-mode) or the [`test-pairlist`](utils.md#test-pairlist) utility sub-command to test your Pairlist configuration quickly. #### Static Pair List From 985805e0d5410f61d444fbd22babac45e5551992 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 20 Sep 2025 20:23:23 +0200 Subject: [PATCH 18/30] test: add test for order_book_to_dataframe --- tests/data/test_converter.py | 75 ++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py index 4cf3ed23f..835f5a861 100644 --- a/tests/data/test_converter.py +++ b/tests/data/test_converter.py @@ -14,6 +14,7 @@ from freqtrade.data.converter import ( convert_trades_to_ohlcv, ohlcv_fill_up_missing_data, ohlcv_to_dataframe, + order_book_to_dataframe, reduce_dataframe_footprint, trades_df_remove_duplicates, trades_dict_to_list, @@ -588,3 +589,77 @@ def test_convert_trades_to_ohlcv(testdatadir, tmp_path, caplog): candle_type=CandleType.SPOT, ) assert log_has(msg, caplog) + + +def test_order_book_to_dataframe(): + bids = [ + [100.0, 5.0], + [99.5, 3.0], + [99.0, 2.0], + ] + asks = [ + [100.5, 4.0], + [101.0, 6.0], + [101.5, 1.0], + ] + + result = order_book_to_dataframe(bids, asks) + + assert isinstance(result, pd.DataFrame) + + expected_columns = ["b_sum", "b_size", "bids", "asks", "a_size", "a_sum"] + assert result.columns.tolist() == expected_columns + + assert len(result) == max(len(bids), len(asks)) + + assert result["bids"].tolist() == [100.0, 99.5, 99.0] + assert result["b_size"].tolist() == [5.0, 3.0, 2.0] + assert result["b_sum"].tolist() == [5.0, 8.0, 10.0] + + assert result["asks"].tolist() == [100.5, 101.0, 101.5] + assert result["a_size"].tolist() == [4.0, 6.0, 1.0] + assert result["a_sum"].tolist() == [4.0, 10.0, 11.0] + + +def test_order_book_to_dataframe_empty(): + bids = [] + asks = [] + + result = order_book_to_dataframe(bids, asks) + + assert isinstance(result, pd.DataFrame) + + expected_columns = ["b_sum", "b_size", "bids", "asks", "a_size", "a_sum"] + assert result.columns.tolist() == expected_columns + # Empty input should result in empty dataframe + assert len(result) == 0 + + +def test_order_book_to_dataframe_unequal_lengths(): + bids = [ + [100.0, 5.0], + [99.5, 3.0], + [99.0, 2.0], + [98.5, 1.0], + ] + asks = [ + [100.5, 4.0], + [101.0, 6.0], + ] + + result = order_book_to_dataframe(bids, asks) + + assert len(result) == max(len(bids), len(asks)) + assert len(result) == 4 + + assert result["bids"].tolist() == [100.0, 99.5, 99.0, 98.5] + assert result["b_size"].tolist() == [5.0, 3.0, 2.0, 1.0] + assert result["b_sum"].tolist() == [5.0, 8.0, 10.0, 11.0] + + assert result["asks"].tolist()[:2] == [100.5, 101.0] + # NA for missing asks + assert pd.isna(result["asks"].iloc[2]) + assert pd.isna(result["asks"].iloc[3]) + + assert result["a_size"].tolist()[:2] == [4.0, 6.0] + assert result["a_sum"].tolist()[:2] == [4.0, 10.0] From 16117e5b6c9d80b90a9578be93c527aae6647c98 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 20 Sep 2025 20:23:43 +0200 Subject: [PATCH 19/30] chore: remove obsolete todo --- freqtrade/data/converter/converter.py | 1 - 1 file changed, 1 deletion(-) diff --git a/freqtrade/data/converter/converter.py b/freqtrade/data/converter/converter.py index 48a07082e..4331519c2 100644 --- a/freqtrade/data/converter/converter.py +++ b/freqtrade/data/converter/converter.py @@ -181,7 +181,6 @@ def trim_dataframes( def order_book_to_dataframe(bids: list, asks: list) -> DataFrame: """ - TODO: This should get a dedicated test Gets order book list, returns dataframe with below format per suggested by creslin ------------------------------------------------------------------- b_sum b_size bids asks a_size a_sum From 4804ec986a0f6a547ff168fa1908780ded707326 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Sep 2025 14:57:24 +0200 Subject: [PATCH 20/30] chore: cleanup unused (and now unsupported) comments --- freqtrade/rpc/telegram.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index f19217dae..f60c11da7 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -362,9 +362,7 @@ class Telegram(RPCHandler): await self._app.updater.start_polling( bootstrap_retries=-1, timeout=20, - # read_latency=60, # Assumed transmission latency drop_pending_updates=True, - # stop_signals=[], # Necessary as we don't run on the main thread ) while True: await asyncio.sleep(10) From d34e7a1e8e85f78623473ab1b873e7e81367db96 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Sep 2025 15:02:34 +0200 Subject: [PATCH 21/30] chore: don't retry bootstrap indefinitely better behavior is to stop after a couple of attempts --- freqtrade/rpc/telegram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index f60c11da7..cdce0c1e2 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -360,7 +360,7 @@ class Telegram(RPCHandler): await asyncio.sleep(2) if self._app.updater: await self._app.updater.start_polling( - bootstrap_retries=-1, + bootstrap_retries=10, timeout=20, drop_pending_updates=True, ) From f7b934b30679cbc4eb47bde27dcca97f5d92539b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Sep 2025 16:21:32 +0200 Subject: [PATCH 22/30] chore(ci): try to not prune uv cache --- .github/workflows/ci.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0f8a3c38e..2ecb06e90 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,7 +45,6 @@ jobs: python-version: ${{ matrix.python-version }} cache-dependency-glob: "requirements**.txt" cache-suffix: "${{ matrix.python-version }}" - prune-cache: false - name: Installation - *nix run: | @@ -166,7 +165,6 @@ jobs: python-version: ${{ matrix.python-version }} cache-dependency-glob: "requirements**.txt" cache-suffix: "${{ matrix.python-version }}" - prune-cache: false - name: Installation - macOS (Brew) run: | @@ -278,7 +276,6 @@ jobs: python-version: ${{ matrix.python-version }} cache-dependency-glob: "requirements**.txt" cache-suffix: "${{ matrix.python-version }}" - prune-cache: false - name: Installation run: | @@ -428,7 +425,6 @@ jobs: python-version: "3.12" cache-dependency-glob: "requirements**.txt" cache-suffix: "3.12" - prune-cache: false - name: Installation - *nix run: | From a7c4ec6eafc6c9b75f86b904bb61f43e0c7abcc5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Sep 2025 16:51:13 +0200 Subject: [PATCH 23/30] chore: try without brew python fixes Should work now since we're using UV... --- .github/workflows/ci.yml | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ecb06e90..11f8a8cad 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -170,24 +170,6 @@ jobs: run: | # brew update # TODO: Should be the brew upgrade - # homebrew fails to update python due to unlinking failures - # https://github.com/actions/runner-images/issues/6817 - rm /usr/local/bin/2to3 || true - rm /usr/local/bin/2to3-3.11 || true - rm /usr/local/bin/2to3-3.12 || true - rm /usr/local/bin/idle3 || true - rm /usr/local/bin/idle3.11 || true - rm /usr/local/bin/idle3.12 || true - rm /usr/local/bin/pydoc3 || true - rm /usr/local/bin/pydoc3.11 || true - rm /usr/local/bin/pydoc3.12 || true - rm /usr/local/bin/python3 || true - rm /usr/local/bin/python3.11 || true - rm /usr/local/bin/python3.12 || true - rm /usr/local/bin/python3-config || true - rm /usr/local/bin/python3.11-config || true - rm /usr/local/bin/python3.12-config || true - brew install libomp - name: Installation (python) From 2120f1ed5bf0234d30f921b41142eea7f86af851 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 03:01:33 +0000 Subject: [PATCH 24/30] chore(deps-dev): bump pytest-mock in the pytest group Bumps the pytest group with 1 update: [pytest-mock](https://github.com/pytest-dev/pytest-mock). Updates `pytest-mock` from 3.15.0 to 3.15.1 - [Release notes](https://github.com/pytest-dev/pytest-mock/releases) - [Changelog](https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.15.0...v3.15.1) --- updated-dependencies: - dependency-name: pytest-mock dependency-version: 3.15.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: pytest ... Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index b8c97c881..617f54334 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -12,7 +12,7 @@ pre-commit==4.3.0 pytest==8.4.2 pytest-asyncio==1.2.0 pytest-cov==7.0.0 -pytest-mock==3.15.0 +pytest-mock==3.15.1 pytest-random-order==1.2.0 pytest-timeout==2.4.0 pytest-xdist==3.8.0 From 24a7e585e409e83c30d8647a7c70cedf5edd5663 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 03:01:42 +0000 Subject: [PATCH 25/30] chore(deps): bump mkdocs-material in the mkdocs group Bumps the mkdocs group with 1 update: [mkdocs-material](https://github.com/squidfunk/mkdocs-material). Updates `mkdocs-material` from 9.6.19 to 9.6.20 - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.19...9.6.20) --- updated-dependencies: - dependency-name: mkdocs-material dependency-version: 9.6.20 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: mkdocs ... Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 1cfbc3c67..8b9a40a03 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,6 +1,6 @@ markdown==3.9 mkdocs==1.6.1 -mkdocs-material==9.6.19 +mkdocs-material==9.6.20 mdx_truly_sane_lists==1.3 pymdown-extensions==10.16.1 jinja2==3.1.6 From 9a888d9896b44c9ca633d6aa6f4a42c02d75eee1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 03:01:51 +0000 Subject: [PATCH 26/30] chore(deps): bump fastapi from 0.116.1 to 0.117.1 Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.116.1 to 0.117.1. - [Release notes](https://github.com/fastapi/fastapi/releases) - [Commits](https://github.com/fastapi/fastapi/compare/0.116.1...0.117.1) --- updated-dependencies: - dependency-name: fastapi dependency-version: 0.117.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2c06fcfdd..5e74e25c4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -38,7 +38,7 @@ orjson==3.11.3 sdnotify==0.3.2 # API Server -fastapi==0.116.1 +fastapi==0.117.1 pydantic==2.11.9 uvicorn==0.35.0 pyjwt==2.10.1 From be560524170d68f67fb18b3fb72ebc02d927772b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 03:02:06 +0000 Subject: [PATCH 27/30] chore(deps): bump ccxt from 4.5.4 to 4.5.5 Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.5.4 to 4.5.5. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/exchanges.cfg) - [Commits](https://github.com/ccxt/ccxt/compare/v4.5.4...v4.5.5) --- updated-dependencies: - dependency-name: ccxt dependency-version: 4.5.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2c06fcfdd..0a09a5df1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,7 @@ ft-pandas-ta==0.3.15 ta-lib==0.6.7 technical==1.5.3 -ccxt==4.5.4 +ccxt==4.5.5 cryptography==45.0.7 aiohttp==3.12.15 SQLAlchemy==2.0.43 From ad3ddcaadb28a32cb432b81bfb814623f65f686f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 03:02:23 +0000 Subject: [PATCH 28/30] chore(deps-dev): bump ruff from 0.13.0 to 0.13.1 Bumps [ruff](https://github.com/astral-sh/ruff) from 0.13.0 to 0.13.1. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.13.0...0.13.1) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.13.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index b8c97c881..e73679c1a 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -6,7 +6,7 @@ -r requirements-freqai-rl.txt -r docs/requirements-docs.txt -ruff==0.13.0 +ruff==0.13.1 mypy==1.18.1 pre-commit==4.3.0 pytest==8.4.2 From 3c6e058b00c90ed7ca4b1569885b5bae9801f9ca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 03:02:44 +0000 Subject: [PATCH 29/30] chore(deps): bump uvicorn from 0.35.0 to 0.36.0 Bumps [uvicorn](https://github.com/Kludex/uvicorn) from 0.35.0 to 0.36.0. - [Release notes](https://github.com/Kludex/uvicorn/releases) - [Changelog](https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md) - [Commits](https://github.com/Kludex/uvicorn/compare/0.35.0...0.36.0) --- updated-dependencies: - dependency-name: uvicorn dependency-version: 0.36.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2c06fcfdd..c30575d1f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -40,7 +40,7 @@ sdnotify==0.3.2 # API Server fastapi==0.116.1 pydantic==2.11.9 -uvicorn==0.35.0 +uvicorn==0.36.0 pyjwt==2.10.1 aiofiles==24.1.0 psutil==7.0.0 From ae02a7007be3912aaa0ec354b43beed6cfa1bcf7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 03:02:47 +0000 Subject: [PATCH 30/30] chore(deps): bump psutil from 7.0.0 to 7.1.0 Bumps [psutil](https://github.com/giampaolo/psutil) from 7.0.0 to 7.1.0. - [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst) - [Commits](https://github.com/giampaolo/psutil/compare/release-7.0.0...release-7.1.0) --- updated-dependencies: - dependency-name: psutil dependency-version: 7.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2c06fcfdd..d1cee22ae 100644 --- a/requirements.txt +++ b/requirements.txt @@ -43,7 +43,7 @@ pydantic==2.11.9 uvicorn==0.35.0 pyjwt==2.10.1 aiofiles==24.1.0 -psutil==7.0.0 +psutil==7.1.0 # Building config files interactively questionary==2.1.1