diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index cea2e049d..38d4eb49f 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -880,13 +880,17 @@ class RPC: rate = self._freqtrade.exchange.get_conversion_rate(pos_base, stake_currency) if rate: # For a leveraged position, equity (what we want as est_stake) is: - # equity = collateral + PnL - # notional = rate * pos.position - # borrowed = pos.collateral * (pos.leverage - 1) - # Equity is notional minus borrowed: - # equity = notional - borrowed - # = rate * pos.position - pos.collateral * (pos.leverage - 1) - est_stake = rate * pos.position - pos.collateral * (pos.leverage - 1) + # equity = collateral + unlevered PnL + # For longs: unlevered PnL = current_value - open_value + # est_stake = rate * pos.position - pos.collateral * (pos.leverage - 1) + # For shorts: unlevered PnL = open_value - current_value + # est_stake = collateral + (open_value - current_value) + # = collateral + (pos.collateral * pos.leverage) + # - rate * pos.position + if pos.side == "long": + est_stake = rate * pos.position - pos.collateral * (pos.leverage - 1) + else: + est_stake = pos.collateral * (1 + pos.leverage) - rate * pos.position except (ExchangeError, PricingError) as e: logger.warning(f"Error {e} getting rate for futures {symbol} / {pos_base}") pass