test: Improve funding_fees test

pull/13229/head
Matthias 4 days ago
parent 57e1b10546
commit 1142d8d6db

@ -39,7 +39,7 @@ from freqtrade.exchange.common import (
calculate_backoff,
)
from freqtrade.resolvers.exchange_resolver import ExchangeResolver
from freqtrade.util import dt_now, dt_ts
from freqtrade.util import dt_now, dt_ts, dt_utc
from tests.conftest import (
EXMS,
generate_test_data_raw,
@ -5398,28 +5398,35 @@ def test_get_max_leverage_from_margin(default_conf, mocker, pair, nominal_value,
@pytest.mark.parametrize(
"size,funding_rate,mark_price,funding_fee",
[
(10, 0.0001, 2.0, 0.002),
(10, 0.0002, 2.0, 0.004),
(10, 0.0002, 2.5, 0.005),
(10, 0.0001, 1.0, 0.002),
(10, 0.0002, 1.0, 0.004),
(10, 0.0002, 1.25, 0.005),
(10, 0.0002, nan, 0.0),
],
)
def test_calculate_funding_fees(default_conf, mocker, size, funding_rate, mark_price, funding_fee):
exchange = get_patched_exchange(mocker, default_conf)
prior_date = timeframe_to_prev_date("1h", datetime.now(UTC) - timedelta(hours=1))
trade_date = timeframe_to_prev_date("1h", datetime.now(UTC))
# Include microseconds to ensure it's not problematic.
now_dt = dt_utc(2026, 4, 3, 12, 5, 0, 12345)
trade_date = timeframe_to_prev_date("1h", now_dt)
prior_date = timeframe_to_prev_date("1h", trade_date - timedelta(hours=1))
prior2_date = timeframe_to_prev_date("1h", now_dt - timedelta(hours=2))
funding_rates = DataFrame(
[
{"date": prior_date, "open": funding_rate}, # Line not used.
{"date": prior2_date, "open": funding_rate}, # Line not used.
{"date": prior_date, "open": funding_rate},
{"date": trade_date, "open": funding_rate},
]
)
mark_rates = DataFrame(
[
{"date": prior2_date, "open": mark_price},
{"date": prior_date, "open": mark_price},
{"date": trade_date, "open": mark_price},
]
)
funding_rates["date"] = funding_rates["date"].dt.as_unit("ms")
mark_rates["date"] = mark_rates["date"].dt.as_unit("ms")
df = exchange.combine_funding_and_mark(funding_rates, mark_rates)
assert (
@ -5427,8 +5434,8 @@ def test_calculate_funding_fees(default_conf, mocker, size, funding_rate, mark_p
df,
amount=size,
is_short=True,
open_date=trade_date,
close_date=trade_date,
open_date=now_dt - timedelta(hours=1, minutes=30),
close_date=now_dt,
)
== funding_fee
)

Loading…
Cancel
Save