freqtrade_origin/tests/leverage/test_interest.py

50 lines
1.4 KiB
Python
Raw Normal View History

2021-08-09 09:35:27 +00:00
import pytest
2021-08-06 07:15:18 +00:00
from freqtrade.exceptions import OperationalException
2021-08-09 09:35:27 +00:00
from freqtrade.leverage import interest
2022-08-10 18:56:04 +00:00
from freqtrade.util import FtPrecise
2021-08-09 06:00:50 +00:00
2022-08-10 18:56:04 +00:00
ten_mins = FtPrecise(1 / 6)
five_hours = FtPrecise(5.0)
twentyfive_hours = FtPrecise(25.0)
2021-08-09 06:00:50 +00:00
2024-05-12 13:29:14 +00:00
@pytest.mark.parametrize(
"exchange,interest_rate,hours,expected",
[
("binance", 0.0005, ten_mins, 0.00125),
("binance", 0.00025, ten_mins, 0.000625),
("binance", 0.00025, five_hours, 0.003125),
("binance", 0.00025, twentyfive_hours, 0.015625),
# Kraken
("kraken", 0.0005, ten_mins, 0.06),
("kraken", 0.00025, ten_mins, 0.03),
("kraken", 0.00025, five_hours, 0.045),
("kraken", 0.00025, twentyfive_hours, 0.12),
],
)
2021-08-09 09:35:27 +00:00
def test_interest(exchange, interest_rate, hours, expected):
2022-08-10 18:56:04 +00:00
borrowed = FtPrecise(60.0)
2021-08-09 06:00:50 +00:00
2024-05-12 13:29:14 +00:00
assert (
pytest.approx(
float(
interest(
exchange_name=exchange,
borrowed=borrowed,
rate=FtPrecise(interest_rate),
hours=hours,
)
)
)
== expected
)
def test_interest_exception():
with pytest.raises(OperationalException, match=r"Leverage not available on .* with freqtrade"):
interest(
2024-05-12 13:29:14 +00:00
exchange_name="bitmex", borrowed=FtPrecise(60.0), rate=FtPrecise(0.0005), hours=ten_mins
)