from decimal import Decimal from enum import Enum from math import ceil from freqtrade.exceptions import OperationalException one = Decimal(1.0) four = Decimal(4.0) twenty_four = Decimal(24.0) class InterestMode(Enum): """Equations to calculate interest""" HOURSPERDAY = "HOURSPERDAY" HOURSPER4 = "HOURSPER4" # Hours per 4 hour segment NONE = "NONE" def __call__(self, borrowed: Decimal, rate: Decimal, hours: Decimal): if self.name == "HOURSPERDAY": return borrowed * rate * ceil(hours)/twenty_four elif self.name == "HOURSPER4": # Rounded based on https://kraken-fees-calculator.github.io/ return borrowed * rate * (1+ceil(hours/four)) else: raise OperationalException("Leverage not available on this exchange with freqtrade")