From 96c0a6296fa105a203c88b17bde523efd30eacd9 Mon Sep 17 00:00:00 2001 From: Freqtrade Bot <154552126+freqtrade-bot@users.noreply.github.com> Date: Thu, 19 Feb 2026 04:13:39 +0000 Subject: [PATCH 1/7] chore: update pre-commit hooks --- .../exchange/binance_leverage_tiers.json | 613 ++++++++++-------- 1 file changed, 332 insertions(+), 281 deletions(-) diff --git a/freqtrade/exchange/binance_leverage_tiers.json b/freqtrade/exchange/binance_leverage_tiers.json index dbce14674..62e4d4e7b 100644 --- a/freqtrade/exchange/binance_leverage_tiers.json +++ b/freqtrade/exchange/binance_leverage_tiers.json @@ -919,14 +919,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": 1, - "initialLeverage": 50, + "initialLeverage": 25, "notionalCap": 5000, "notionalFloor": 0, - "maintMarginRatio": 0.015, + "maintMarginRatio": 0.02, "cum": 0.0 } }, @@ -935,74 +935,74 @@ "symbol": "1000CHEEMS/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 15000.0, + "maxNotional": 10000.0, "maintenanceMarginRate": 0.025, "maxLeverage": 20.0, "info": { "bracket": 2, "initialLeverage": 20, - "notionalCap": 15000, + "notionalCap": 10000, "notionalFloor": 5000, "maintMarginRatio": 0.025, - "cum": 50.0 + "cum": 25.0 } }, { "tier": 3.0, "symbol": "1000CHEEMS/USDT:USDT", "currency": "USDT", - "minNotional": 15000.0, - "maxNotional": 50000.0, + "minNotional": 10000.0, + "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": 3, "initialLeverage": 10, - "notionalCap": 50000, - "notionalFloor": 15000, + "notionalCap": 20000, + "notionalFloor": 10000, "maintMarginRatio": 0.05, - "cum": 425.0 + "cum": 275.0 } }, { "tier": 4.0, "symbol": "1000CHEEMS/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": 4, "initialLeverage": 5, - "notionalCap": 100000, - "notionalFloor": 50000, + "notionalCap": 50000, + "notionalFloor": 20000, "maintMarginRatio": 0.1, - "cum": 2925.0 + "cum": 1275.0 } }, { "tier": 5.0, "symbol": "1000CHEEMS/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 150000.0, + "minNotional": 50000.0, + "maxNotional": 100000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": 5, "initialLeverage": 4, - "notionalCap": 150000, - "notionalFloor": 100000, + "notionalCap": 100000, + "notionalFloor": 50000, "maintMarginRatio": 0.125, - "cum": 5425.0 + "cum": 2525.0 } }, { "tier": 6.0, "symbol": "1000CHEEMS/USDT:USDT", "currency": "USDT", - "minNotional": 150000.0, + "minNotional": 100000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, @@ -1010,9 +1010,9 @@ "bracket": 6, "initialLeverage": 3, "notionalCap": 250000, - "notionalFloor": 150000, + "notionalFloor": 100000, "maintMarginRatio": 0.1667, - "cum": 11680.0 + "cum": 6695.0 } }, { @@ -1029,7 +1029,7 @@ "notionalCap": 2500000, "notionalFloor": 250000, "maintMarginRatio": 0.25, - "cum": 32505.0 + "cum": 27520.0 } }, { @@ -1046,7 +1046,7 @@ "notionalCap": 5000000, "notionalFloor": 2500000, "maintMarginRatio": 0.5, - "cum": 657505.0 + "cum": 652520.0 } } ], @@ -2347,15 +2347,15 @@ "symbol": "1000WHY/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.05, + "maxNotional": 5000.0, + "maintenanceMarginRate": 0.07, "maxLeverage": 10.0, "info": { "bracket": 1, "initialLeverage": 10, - "notionalCap": 10000, + "notionalCap": 5000, "notionalFloor": 0, - "maintMarginRatio": 0.05, + "maintMarginRatio": 0.07, "cum": 0.0 } }, @@ -2363,24 +2363,24 @@ "tier": 2.0, "symbol": "1000WHY/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 50000.0, + "minNotional": 5000.0, + "maxNotional": 40000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": 2, "initialLeverage": 5, - "notionalCap": 50000, - "notionalFloor": 10000, + "notionalCap": 40000, + "notionalFloor": 5000, "maintMarginRatio": 0.1, - "cum": 500.0 + "cum": 150.0 } }, { "tier": 3.0, "symbol": "1000WHY/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, + "minNotional": 40000.0, "maxNotional": 100000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, @@ -2388,9 +2388,9 @@ "bracket": 3, "initialLeverage": 4, "notionalCap": 100000, - "notionalFloor": 50000, + "notionalFloor": 40000, "maintMarginRatio": 0.125, - "cum": 1750.0 + "cum": 1150.0 } }, { @@ -2407,7 +2407,7 @@ "notionalCap": 250000, "notionalFloor": 100000, "maintMarginRatio": 0.1667, - "cum": 5920.0 + "cum": 5320.0 } }, { @@ -2424,7 +2424,7 @@ "notionalCap": 2500000, "notionalFloor": 250000, "maintMarginRatio": 0.25, - "cum": 26745.0 + "cum": 26145.0 } }, { @@ -2441,7 +2441,7 @@ "notionalCap": 5000000, "notionalFloor": 2500000, "maintMarginRatio": 0.5, - "cum": 651745.0 + "cum": 651145.0 } } ], @@ -13293,14 +13293,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": 1, - "initialLeverage": 5, + "initialLeverage": 25, "notionalCap": 5000, "notionalFloor": 0, - "maintMarginRatio": 0.1, + "maintMarginRatio": 0.02, "cum": 0.0 } }, @@ -13310,15 +13310,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": 2, - "initialLeverage": 4, + "initialLeverage": 20, "notionalCap": 10000, "notionalFloor": 5000, - "maintMarginRatio": 0.125, - "cum": 125.0 + "maintMarginRatio": 0.025, + "cum": 25.0 } }, { @@ -13326,50 +13326,101 @@ "symbol": "AZTEC/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.1667, - "maxLeverage": 3.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": 3, - "initialLeverage": 3, - "notionalCap": 30000, + "initialLeverage": 10, + "notionalCap": 20000, "notionalFloor": 10000, - "maintMarginRatio": 0.1667, - "cum": 542.0 + "maintMarginRatio": 0.05, + "cum": 275.0 } }, { "tier": 4.0, "symbol": "AZTEC/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": 4, - "initialLeverage": 2, - "notionalCap": 80000, - "notionalFloor": 30000, - "maintMarginRatio": 0.25, - "cum": 3041.0 + "initialLeverage": 5, + "notionalCap": 50000, + "notionalFloor": 20000, + "maintMarginRatio": 0.1, + "cum": 1275.0 } }, { "tier": 5.0, "symbol": "AZTEC/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 200000.0, + "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": 2525.0 + } + }, + { + "tier": 6.0, + "symbol": "AZTEC/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": 6695.0 + } + }, + { + "tier": 7.0, + "symbol": "AZTEC/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 2500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": 7, + "initialLeverage": 2, + "notionalCap": 2500000, + "notionalFloor": 250000, + "maintMarginRatio": 0.25, + "cum": 27520.0 + } + }, + { + "tier": 8.0, + "symbol": "AZTEC/USDT:USDT", + "currency": "USDT", + "minNotional": 2500000.0, + "maxNotional": 5000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": 5, + "bracket": 8, "initialLeverage": 1, - "notionalCap": 200000, - "notionalFloor": 80000, + "notionalCap": 5000000, + "notionalFloor": 2500000, "maintMarginRatio": 0.5, - "cum": 23041.0 + "cum": 652520.0 } } ], @@ -21326,13 +21377,13 @@ "symbol": "BTR/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 10000.0, + "maxNotional": 5000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { "bracket": 1, "initialLeverage": 10, - "notionalCap": 10000, + "notionalCap": 5000, "notionalFloor": 0, "maintMarginRatio": 0.05, "cum": 0.0 @@ -21342,75 +21393,75 @@ "tier": 2.0, "symbol": "BTR/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, - "maxNotional": 50000.0, + "minNotional": 5000.0, + "maxNotional": 40000.0, "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { "bracket": 2, "initialLeverage": 5, - "notionalCap": 50000, - "notionalFloor": 10000, + "notionalCap": 40000, + "notionalFloor": 5000, "maintMarginRatio": 0.1, - "cum": 500.0 + "cum": 250.0 } }, { "tier": 3.0, "symbol": "BTR/USDT:USDT", "currency": "USDT", - "minNotional": 50000.0, - "maxNotional": 100000.0, + "minNotional": 40000.0, + "maxNotional": 80000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { "bracket": 3, "initialLeverage": 4, - "notionalCap": 100000, - "notionalFloor": 50000, + "notionalCap": 80000, + "notionalFloor": 40000, "maintMarginRatio": 0.125, - "cum": 1750.0 + "cum": 1250.0 } }, { "tier": 4.0, "symbol": "BTR/USDT:USDT", "currency": "USDT", - "minNotional": 100000.0, - "maxNotional": 250000.0, + "minNotional": 80000.0, + "maxNotional": 200000.0, "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { "bracket": 4, "initialLeverage": 3, - "notionalCap": 250000, - "notionalFloor": 100000, + "notionalCap": 200000, + "notionalFloor": 80000, "maintMarginRatio": 0.1667, - "cum": 5920.0 + "cum": 4586.0 } }, { "tier": 5.0, "symbol": "BTR/USDT:USDT", "currency": "USDT", - "minNotional": 250000.0, - "maxNotional": 2500000.0, + "minNotional": 200000.0, + "maxNotional": 2000000.0, "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { "bracket": 5, "initialLeverage": 2, - "notionalCap": 2500000, - "notionalFloor": 250000, + "notionalCap": 2000000, + "notionalFloor": 200000, "maintMarginRatio": 0.25, - "cum": 26745.0 + "cum": 21246.0 } }, { "tier": 6.0, "symbol": "BTR/USDT:USDT", "currency": "USDT", - "minNotional": 2500000.0, + "minNotional": 2000000.0, "maxNotional": 5000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, @@ -21418,9 +21469,9 @@ "bracket": 6, "initialLeverage": 1, "notionalCap": 5000000, - "notionalFloor": 2500000, + "notionalFloor": 2000000, "maintMarginRatio": 0.5, - "cum": 651745.0 + "cum": 521246.0 } } ], @@ -32535,14 +32586,14 @@ "currency": "USDT", "minNotional": 0.0, "maxNotional": 5000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "maintenanceMarginRate": 0.02, + "maxLeverage": 25.0, "info": { "bracket": 1, - "initialLeverage": 5, + "initialLeverage": 25, "notionalCap": 5000, "notionalFloor": 0, - "maintMarginRatio": 0.1, + "maintMarginRatio": 0.02, "cum": 0.0 } }, @@ -32552,15 +32603,15 @@ "currency": "USDT", "minNotional": 5000.0, "maxNotional": 10000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": 2, - "initialLeverage": 4, + "initialLeverage": 20, "notionalCap": 10000, "notionalFloor": 5000, - "maintMarginRatio": 0.125, - "cum": 125.0 + "maintMarginRatio": 0.025, + "cum": 25.0 } }, { @@ -32568,50 +32619,101 @@ "symbol": "ESP/USDT:USDT", "currency": "USDT", "minNotional": 10000.0, - "maxNotional": 30000.0, - "maintenanceMarginRate": 0.1667, - "maxLeverage": 3.0, + "maxNotional": 20000.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": 3, - "initialLeverage": 3, - "notionalCap": 30000, + "initialLeverage": 10, + "notionalCap": 20000, "notionalFloor": 10000, - "maintMarginRatio": 0.1667, - "cum": 542.0 + "maintMarginRatio": 0.05, + "cum": 275.0 } }, { "tier": 4.0, "symbol": "ESP/USDT:USDT", "currency": "USDT", - "minNotional": 30000.0, - "maxNotional": 80000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, + "minNotional": 20000.0, + "maxNotional": 50000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": 4, - "initialLeverage": 2, - "notionalCap": 80000, - "notionalFloor": 30000, - "maintMarginRatio": 0.25, - "cum": 3041.0 + "initialLeverage": 5, + "notionalCap": 50000, + "notionalFloor": 20000, + "maintMarginRatio": 0.1, + "cum": 1275.0 } }, { "tier": 5.0, "symbol": "ESP/USDT:USDT", "currency": "USDT", - "minNotional": 80000.0, - "maxNotional": 200000.0, + "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": 2525.0 + } + }, + { + "tier": 6.0, + "symbol": "ESP/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": 6695.0 + } + }, + { + "tier": 7.0, + "symbol": "ESP/USDT:USDT", + "currency": "USDT", + "minNotional": 250000.0, + "maxNotional": 2500000.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, + "info": { + "bracket": 7, + "initialLeverage": 2, + "notionalCap": 2500000, + "notionalFloor": 250000, + "maintMarginRatio": 0.25, + "cum": 27520.0 + } + }, + { + "tier": 8.0, + "symbol": "ESP/USDT:USDT", + "currency": "USDT", + "minNotional": 2500000.0, + "maxNotional": 5000000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": 5, + "bracket": 8, "initialLeverage": 1, - "notionalCap": 200000, - "notionalFloor": 80000, + "notionalCap": 5000000, + "notionalFloor": 2500000, "maintMarginRatio": 0.5, - "cum": 23041.0 + "cum": 652520.0 } } ], @@ -62641,15 +62743,15 @@ "symbol": "OM/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 3000.0, - "maintenanceMarginRate": 0.015, - "maxLeverage": 50.0, + "maxNotional": 2500.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": 1, - "initialLeverage": 50, - "notionalCap": 3000, + "initialLeverage": 20, + "notionalCap": 2500, "notionalFloor": 0, - "maintMarginRatio": 0.015, + "maintMarginRatio": 0.025, "cum": 0.0 } }, @@ -62657,17 +62759,17 @@ "tier": 2.0, "symbol": "OM/USDT:USDT", "currency": "USDT", - "minNotional": 3000.0, + "minNotional": 2500.0, "maxNotional": 20000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": 2, - "initialLeverage": 20, + "initialLeverage": 10, "notionalCap": 20000, - "notionalFloor": 3000, - "maintMarginRatio": 0.025, - "cum": 30.0 + "notionalFloor": 2500, + "maintMarginRatio": 0.05, + "cum": 62.5 } }, { @@ -62676,15 +62778,15 @@ "currency": "USDT", "minNotional": 20000.0, "maxNotional": 60000.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": 3, - "initialLeverage": 10, + "initialLeverage": 5, "notionalCap": 60000, "notionalFloor": 20000, - "maintMarginRatio": 0.05, - "cum": 530.0 + "maintMarginRatio": 0.1, + "cum": 1062.5 } }, { @@ -62692,50 +62794,50 @@ "symbol": "OM/USDT:USDT", "currency": "USDT", "minNotional": 60000.0, - "maxNotional": 120000.0, - "maintenanceMarginRate": 0.1, - "maxLeverage": 5.0, + "maxNotional": 150000.0, + "maintenanceMarginRate": 0.125, + "maxLeverage": 4.0, "info": { "bracket": 4, - "initialLeverage": 5, - "notionalCap": 120000, + "initialLeverage": 4, + "notionalCap": 150000, "notionalFloor": 60000, - "maintMarginRatio": 0.1, - "cum": 3530.0 + "maintMarginRatio": 0.125, + "cum": 2562.5 } }, { "tier": 5.0, "symbol": "OM/USDT:USDT", "currency": "USDT", - "minNotional": 120000.0, - "maxNotional": 500000.0, - "maintenanceMarginRate": 0.125, - "maxLeverage": 4.0, + "minNotional": 150000.0, + "maxNotional": 300000.0, + "maintenanceMarginRate": 0.1667, + "maxLeverage": 3.0, "info": { "bracket": 5, - "initialLeverage": 4, - "notionalCap": 500000, - "notionalFloor": 120000, - "maintMarginRatio": 0.125, - "cum": 6530.0 + "initialLeverage": 3, + "notionalCap": 300000, + "notionalFloor": 150000, + "maintMarginRatio": 0.1667, + "cum": 8817.5 } }, { "tier": 6.0, "symbol": "OM/USDT:USDT", "currency": "USDT", - "minNotional": 500000.0, + "minNotional": 300000.0, "maxNotional": 1000000.0, - "maintenanceMarginRate": 0.1667, - "maxLeverage": 3.0, + "maintenanceMarginRate": 0.25, + "maxLeverage": 2.0, "info": { "bracket": 6, - "initialLeverage": 3, + "initialLeverage": 2, "notionalCap": 1000000, - "notionalFloor": 500000, - "maintMarginRatio": 0.1667, - "cum": 27380.0 + "notionalFloor": 300000, + "maintMarginRatio": 0.25, + "cum": 33807.5 } }, { @@ -62743,33 +62845,16 @@ "symbol": "OM/USDT:USDT", "currency": "USDT", "minNotional": 1000000.0, - "maxNotional": 1200000.0, - "maintenanceMarginRate": 0.25, - "maxLeverage": 2.0, - "info": { - "bracket": 7, - "initialLeverage": 2, - "notionalCap": 1200000, - "notionalFloor": 1000000, - "maintMarginRatio": 0.25, - "cum": 110680.0 - } - }, - { - "tier": 8.0, - "symbol": "OM/USDT:USDT", - "currency": "USDT", - "minNotional": 1200000.0, "maxNotional": 1500000.0, "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": 8, + "bracket": 7, "initialLeverage": 1, "notionalCap": 1500000, - "notionalFloor": 1200000, + "notionalFloor": 1000000, "maintMarginRatio": 0.5, - "cum": 410680.0 + "cum": 283807.5 } } ], @@ -70187,15 +70272,15 @@ "symbol": "Q/USDT:USDT", "currency": "USDT", "minNotional": 0.0, - "maxNotional": 5000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 40.0, + "maxNotional": 10000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": 1, - "initialLeverage": 40, - "notionalCap": 5000, + "initialLeverage": 20, + "notionalCap": 10000, "notionalFloor": 0, - "maintMarginRatio": 0.02, + "maintMarginRatio": 0.025, "cum": 0.0 } }, @@ -70203,38 +70288,21 @@ "tier": 2.0, "symbol": "Q/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": "Q/USDT:USDT", - "currency": "USDT", "minNotional": 10000.0, "maxNotional": 20000.0, "maintenanceMarginRate": 0.05, "maxLeverage": 10.0, "info": { - "bracket": 3, + "bracket": 2, "initialLeverage": 10, "notionalCap": 20000, "notionalFloor": 10000, "maintMarginRatio": 0.05, - "cum": 275.0 + "cum": 250.0 } }, { - "tier": 4.0, + "tier": 3.0, "symbol": "Q/USDT:USDT", "currency": "USDT", "minNotional": 20000.0, @@ -70242,16 +70310,16 @@ "maintenanceMarginRate": 0.1, "maxLeverage": 5.0, "info": { - "bracket": 4, + "bracket": 3, "initialLeverage": 5, "notionalCap": 50000, "notionalFloor": 20000, "maintMarginRatio": 0.1, - "cum": 1275.0 + "cum": 1250.0 } }, { - "tier": 5.0, + "tier": 4.0, "symbol": "Q/USDT:USDT", "currency": "USDT", "minNotional": 50000.0, @@ -70259,16 +70327,16 @@ "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": 5, + "bracket": 4, "initialLeverage": 4, "notionalCap": 100000, "notionalFloor": 50000, "maintMarginRatio": 0.125, - "cum": 2525.0 + "cum": 2500.0 } }, { - "tier": 6.0, + "tier": 5.0, "symbol": "Q/USDT:USDT", "currency": "USDT", "minNotional": 100000.0, @@ -70276,16 +70344,16 @@ "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": 6, + "bracket": 5, "initialLeverage": 3, "notionalCap": 250000, "notionalFloor": 100000, "maintMarginRatio": 0.1667, - "cum": 6695.0 + "cum": 6670.0 } }, { - "tier": 7.0, + "tier": 6.0, "symbol": "Q/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, @@ -70293,16 +70361,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": 7, + "bracket": 6, "initialLeverage": 2, "notionalCap": 2500000, "notionalFloor": 250000, "maintMarginRatio": 0.25, - "cum": 27520.0 + "cum": 27495.0 } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "Q/USDT:USDT", "currency": "USDT", "minNotional": 2500000.0, @@ -70310,12 +70378,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": 8, + "bracket": 7, "initialLeverage": 1, "notionalCap": 5000000, "notionalFloor": 2500000, "maintMarginRatio": 0.5, - "cum": 652520.0 + "cum": 652495.0 } } ], @@ -79132,33 +79200,33 @@ "symbol": "SPACE/USDT:USDT", "currency": "USDT", "minNotional": 5000.0, - "maxNotional": 10000.0, - "maintenanceMarginRate": 0.02, - "maxLeverage": 25.0, + "maxNotional": 12000.0, + "maintenanceMarginRate": 0.025, + "maxLeverage": 20.0, "info": { "bracket": 2, - "initialLeverage": 25, - "notionalCap": 10000, + "initialLeverage": 20, + "notionalCap": 12000, "notionalFloor": 5000, - "maintMarginRatio": 0.02, - "cum": 25.0 + "maintMarginRatio": 0.025, + "cum": 50.0 } }, { "tier": 3.0, "symbol": "SPACE/USDT:USDT", "currency": "USDT", - "minNotional": 10000.0, + "minNotional": 12000.0, "maxNotional": 25000.0, - "maintenanceMarginRate": 0.025, - "maxLeverage": 20.0, + "maintenanceMarginRate": 0.05, + "maxLeverage": 10.0, "info": { "bracket": 3, - "initialLeverage": 20, + "initialLeverage": 10, "notionalCap": 25000, - "notionalFloor": 10000, - "maintMarginRatio": 0.025, - "cum": 75.0 + "notionalFloor": 12000, + "maintMarginRatio": 0.05, + "cum": 350.0 } }, { @@ -79166,54 +79234,37 @@ "symbol": "SPACE/USDT:USDT", "currency": "USDT", "minNotional": 25000.0, - "maxNotional": 62500.0, - "maintenanceMarginRate": 0.05, - "maxLeverage": 10.0, + "maxNotional": 70000.0, + "maintenanceMarginRate": 0.1, + "maxLeverage": 5.0, "info": { "bracket": 4, - "initialLeverage": 10, - "notionalCap": 62500, + "initialLeverage": 5, + "notionalCap": 70000, "notionalFloor": 25000, - "maintMarginRatio": 0.05, - "cum": 700.0 + "maintMarginRatio": 0.1, + "cum": 1600.0 } }, { "tier": 5.0, "symbol": "SPACE/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": "SPACE/USDT:USDT", - "currency": "USDT", - "minNotional": 125000.0, + "minNotional": 70000.0, "maxNotional": 250000.0, "maintenanceMarginRate": 0.125, "maxLeverage": 4.0, "info": { - "bracket": 6, + "bracket": 5, "initialLeverage": 4, "notionalCap": 250000, - "notionalFloor": 125000, + "notionalFloor": 70000, "maintMarginRatio": 0.125, - "cum": 6950.0 + "cum": 3350.0 } }, { - "tier": 7.0, + "tier": 6.0, "symbol": "SPACE/USDT:USDT", "currency": "USDT", "minNotional": 250000.0, @@ -79221,16 +79272,16 @@ "maintenanceMarginRate": 0.1667, "maxLeverage": 3.0, "info": { - "bracket": 7, + "bracket": 6, "initialLeverage": 3, "notionalCap": 500000, "notionalFloor": 250000, "maintMarginRatio": 0.1667, - "cum": 17375.0 + "cum": 13775.0 } }, { - "tier": 8.0, + "tier": 7.0, "symbol": "SPACE/USDT:USDT", "currency": "USDT", "minNotional": 500000.0, @@ -79238,16 +79289,16 @@ "maintenanceMarginRate": 0.25, "maxLeverage": 2.0, "info": { - "bracket": 8, + "bracket": 7, "initialLeverage": 2, "notionalCap": 7500000, "notionalFloor": 500000, "maintMarginRatio": 0.25, - "cum": 59025.0 + "cum": 55425.0 } }, { - "tier": 9.0, + "tier": 8.0, "symbol": "SPACE/USDT:USDT", "currency": "USDT", "minNotional": 7500000.0, @@ -79255,12 +79306,12 @@ "maintenanceMarginRate": 0.5, "maxLeverage": 1.0, "info": { - "bracket": 9, + "bracket": 8, "initialLeverage": 1, "notionalCap": 12500000, "notionalFloor": 7500000, "maintMarginRatio": 0.5, - "cum": 1934025.0 + "cum": 1930425.0 } } ], From 088516b2ed1db517c9a0deead7cc84fa3eeb1938 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 21 Feb 2026 13:19:33 +0100 Subject: [PATCH 2/7] chore: Update help to clarify backtest-filename deprecation closes #12846 --- docs/commands/backtesting.md | 10 +++++----- freqtrade/commands/cli_options.py | 8 ++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/docs/commands/backtesting.md b/docs/commands/backtesting.md index 6ca377473..d00f29bf1 100644 --- a/docs/commands/backtesting.md +++ b/docs/commands/backtesting.md @@ -71,11 +71,11 @@ options: --export {none,trades,signals} Export backtest results (default: trades). --backtest-filename, --export-filename PATH - Use this filename for backtest results.Example: - `--backtest- - filename=backtest_results_2020-09-27_16-20-48.json`. - Assumes either `user_data/backtest_results/` or - `--export-directory` as base directory. + DEPRECATED: This option is deprecated for backtesting + and will be removed in a future release. Using a + custom filename for backtest results is no longer + supported. Use `--backtest-directory` to specify the + directory. --backtest-directory, --export-directory PATH Directory to use for backtest results. Example: `--export-directory=user_data/backtest_results/`. diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 8a035b6a0..47f4e4788 100755 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -240,6 +240,14 @@ AVAILABLE_CLI_OPTIONS = { "exportfilename": Arg( "--backtest-filename", "--export-filename", + fthelp={ + "freqtrade backtesting": ( + "DEPRECATED: This option is deprecated for backtesting and will be removed " + "in a future release. " + "Using a custom filename for backtest results is no longer supported. " + "Use `--backtest-directory` to specify the directory." + ), + }, help="Use this filename for backtest results." "Example: `--backtest-filename=backtest_results_2020-09-27_16-20-48.json`. " "Assumes either `user_data/backtest_results/` or `--export-directory` as base directory.", From d2e650d1887f35a47163b99e258acf4a38ef6469 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 21 Feb 2026 16:34:04 +0100 Subject: [PATCH 3/7] chore: remove missleading comment in help --- docs/commands/backtesting.md | 5 +---- docs/commands/lookahead-analysis.md | 5 +---- docs/commands/strategy-updater.md | 5 +---- freqtrade/commands/cli_options.py | 4 +--- 4 files changed, 4 insertions(+), 15 deletions(-) diff --git a/docs/commands/backtesting.md b/docs/commands/backtesting.md index d00f29bf1..375d99112 100644 --- a/docs/commands/backtesting.md +++ b/docs/commands/backtesting.md @@ -64,10 +64,7 @@ options: --strategy-list STRATEGY_LIST [STRATEGY_LIST ...] Provide a space-separated list of strategies to backtest. Please note that timeframe needs to be set - either in config or via command line. When using this - together with `--export trades`, the strategy-name is - injected into the filename (so `backtest-data.json` - becomes `backtest-data-SampleStrategy.json` + either in config or via command line. --export {none,trades,signals} Export backtest results (default: trades). --backtest-filename, --export-filename PATH diff --git a/docs/commands/lookahead-analysis.md b/docs/commands/lookahead-analysis.md index 6ac516693..d06b9b7a6 100644 --- a/docs/commands/lookahead-analysis.md +++ b/docs/commands/lookahead-analysis.md @@ -62,10 +62,7 @@ options: --strategy-list STRATEGY_LIST [STRATEGY_LIST ...] Provide a space-separated list of strategies to backtest. Please note that timeframe needs to be set - either in config or via command line. When using this - together with `--export trades`, the strategy-name is - injected into the filename (so `backtest-data.json` - becomes `backtest-data-SampleStrategy.json` + either in config or via command line. --export {none,trades,signals} Export backtest results (default: trades). --backtest-filename, --export-filename PATH diff --git a/docs/commands/strategy-updater.md b/docs/commands/strategy-updater.md index 051b03277..e7f0f9e11 100644 --- a/docs/commands/strategy-updater.md +++ b/docs/commands/strategy-updater.md @@ -10,10 +10,7 @@ options: --strategy-list STRATEGY_LIST [STRATEGY_LIST ...] Provide a space-separated list of strategies to backtest. Please note that timeframe needs to be set - either in config or via command line. When using this - together with `--export trades`, the strategy-name is - injected into the filename (so `backtest-data.json` - becomes `backtest-data-SampleStrategy.json` + either in config or via command line. --strategy-path PATH Specify additional strategy lookup path. --recursive-strategy-search Recursively search for a strategy in the strategies diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 47f4e4788..ca2b0f67a 100755 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -215,9 +215,7 @@ AVAILABLE_CLI_OPTIONS = { "--strategy-list", help="Provide a space-separated list of strategies to backtest. " "Please note that timeframe needs to be set either in config " - "or via command line. When using this together with `--export trades`, " - "the strategy-name is injected into the filename " - "(so `backtest-data.json` becomes `backtest-data-SampleStrategy.json`", + "or via command line. ", nargs="+", ), "backtest_notes": Arg( From a417af1ff00058006f3cd5d3b1ca68ca05797e45 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 21 Feb 2026 16:56:55 +0100 Subject: [PATCH 4/7] chore: add note to todo about still running jobs --- freqtrade/rpc/api_server/webserver_bgwork.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/api_server/webserver_bgwork.py b/freqtrade/rpc/api_server/webserver_bgwork.py index be17f7a94..332384dbe 100644 --- a/freqtrade/rpc/api_server/webserver_bgwork.py +++ b/freqtrade/rpc/api_server/webserver_bgwork.py @@ -37,7 +37,8 @@ class ApiBG: # Generic background jobs - # TODO: Change this to FtTTLCache + # TODO: Change this to FtTTLCache -> must be more intelligent than FtTTLCache - as we can't + # evict still running jobs. jobs: dict[str, JobsContainer] = {} # Pairlist evaluate things pairlist_running: bool = False From ce590cced7e9931bad9ad19b946e86c3898faec0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 21 Feb 2026 20:20:14 +0100 Subject: [PATCH 5/7] chore: clarify --export-filename Deprecation messages part of #12846 --- freqtrade/configuration/configuration.py | 23 +++++++++++++++-------- tests/optimize/test_backtesting.py | 3 +++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index c544e47b5..82e93fb91 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -221,14 +221,21 @@ class Configuration: config, argname="exportfilename", logstring="Storing backtest results to {} ..." ) config["exportfilename"] = Path(config["exportfilename"]) - if config.get("exportdirectory") and Path(config["exportdirectory"]).is_dir(): - logger.warning( - "DEPRECATED: Using `--export-filename` with directories is deprecated, " - "use `--backtest-directory` instead." - ) - if config.get("exportdirectory") is None: - # Fallback - assign export-directory directly. - config["exportdirectory"] = config["exportfilename"] + if config.get("exportfilename"): + if Path(config["exportfilename"]).is_dir(): + logger.warning( + "DEPRECATED: Using `--export-filename` with directories is deprecated, " + "use `--backtest-directory` instead." + ) + if config.get("exportdirectory") is None: + # Fallback - assign export-directory directly. + config["exportdirectory"] = config["exportfilename"] + elif config.get("runmode") == RunMode.BACKTEST: + logger.warning( + "DEPRECATED: Using `--export-filename` has no impact when backtesting. " + "Please use `--notes` to annotate backtest results and " + "`--backtest-directory` to specify the output directory. " + ) if not config.get("exportdirectory"): config["exportdirectory"] = config["user_data_dir"] / "backtest_results" if not config.get("exportfilename"): diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index bbf55d2bc..270c5b33d 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -221,6 +221,9 @@ def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> assert "exportfilename" in config assert isinstance(config["exportfilename"], Path) assert log_has("Storing backtest results to {} ...".format(config["exportfilename"]), caplog) + assert log_has_re( + "DEPRECATED: Using `--export-filename` has no impact when backtesting.*", caplog + ) assert "fee" in config assert log_has("Parameter --fee detected, setting fee to: {} ...".format(config["fee"]), caplog) From f61b50dbfc446b9ddd4d769ed59608af439cffc0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 21 Feb 2026 20:35:50 +0100 Subject: [PATCH 6/7] chore: improved docstring --- freqtrade/misc.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/freqtrade/misc.py b/freqtrade/misc.py index 5c31d5805..e0658f020 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -84,7 +84,12 @@ def file_load_json(file: Path): def is_file_in_dir(file: Path, directory: Path) -> bool: """ - Helper function to check if file is in directory. + Helper function to check if file is directly within a directory. + :param file: File to check + :param directory: Directory to check against + When used in the API, this parameter cannot be user controlled (outside of the config) + to avoid security issues. + :return: True if file is directly within directory, False otherwise """ return file.is_file() and file.parent.samefile(directory) From b4422131fbd69136525974bb06a2a367e6d5948b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Feb 2026 19:51:51 +0100 Subject: [PATCH 7/7] chore: move show_sensitive warning out of datadir options --- freqtrade/configuration/configuration.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 82e93fb91..013b1ff1c 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -238,20 +238,13 @@ class Configuration: ) if not config.get("exportdirectory"): config["exportdirectory"] = config["user_data_dir"] / "backtest_results" - if not config.get("exportfilename"): - config["exportfilename"] = None + + config["exportfilename"] = config.get("exportfilename", None) if config.get("exportfilename"): # ensure exportfilename is a Path object config["exportfilename"] = Path(config["exportfilename"]) config["exportdirectory"] = Path(config["exportdirectory"]) - if self.args.get("show_sensitive"): - logger.warning( - "Sensitive information will be shown in the upcoming output. " - "Please make sure to never share this output without redacting " - "the information yourself." - ) - def _process_optimize_options(self, config: Config) -> None: # This will override the strategy configuration self._args_to_config( @@ -319,6 +312,13 @@ class Configuration: self._process_datadir_options(config) + if self.args.get("show_sensitive"): + logger.warning( + "Sensitive information will be shown in the upcoming output. " + "Please make sure to never share this output without redacting " + "the information yourself." + ) + self._args_to_config( config, argname="strategy_list",