diff --git a/freqtrade/exchange/krakenfutures.py b/freqtrade/exchange/krakenfutures.py index a756c9490..5751ce59a 100644 --- a/freqtrade/exchange/krakenfutures.py +++ b/freqtrade/exchange/krakenfutures.py @@ -51,6 +51,8 @@ class Krakenfutures(Exchange): PriceType.MARK: "mark", PriceType.INDEX: "index", }, + # Kraken Futures retains only 29 days of hourly funding rate history. + "funding_fee_candle_limit": 700, } @retrier diff --git a/tests/exchange/test_krakenfutures.py b/tests/exchange/test_krakenfutures.py index 864da0ef0..1f5087bfd 100644 --- a/tests/exchange/test_krakenfutures.py +++ b/tests/exchange/test_krakenfutures.py @@ -32,6 +32,8 @@ def test_krakenfutures_ft_has_overrides(): assert ft_has["stoploss_query_requires_stop_flag"] is True assert ft_has["stop_price_param"] == "triggerPrice" assert ft_has["stop_price_type_field"] == "triggerSignal" + # Kraken retains only ~29 days of hourly funding rate history + assert ft_has["funding_fee_candle_limit"] == 700 def test_krakenfutures_ohlcv_candle_limit_uses_ccxt_limit(mocker, default_conf): @@ -44,6 +46,15 @@ def test_krakenfutures_ohlcv_candle_limit_uses_ccxt_limit(mocker, default_conf): assert ex.ohlcv_candle_limit("1m", candle_type=CandleType.FUTURES) == 2000 +def test_krakenfutures_ohlcv_candle_limit_funding_rate(mocker, default_conf): + """Funding rate candle limit is capped to reflect Kraken's limited history retention.""" + ex = get_patched_exchange(mocker, default_conf, exchange="krakenfutures") + + mocker.patch.object(ex, "features", return_value=2000) + + assert ex.ohlcv_candle_limit("1h", candle_type=CandleType.FUNDING_RATE) == 700 + + # --- fetch_order fallback tests ---