CRITICAL BUG FIX: SHORT positions were calculating P&L with inverted logic, causing profits to be recorded as losses and vice versa. Problem Example: - SHORT at $156.58, exit at $154.66 (price dropped $1.92) - Should be +~$25 profit - Was recorded as -$499.23 LOSS Root Cause: Old formula: profitPercent = (exit - entry) / entry * (side === 'long' ? 1 : -1) This multiplied the LONG formula by -1 for shorts, but then applied it to full notional instead of properly accounting for direction. Fix: - LONG: priceDiff = (exit - entry) → profit when price rises - SHORT: priceDiff = (entry - exit) → profit when price falls - profitPercent = priceDiff / entry * 100 - Proper leverage calculation: realizedPnL = collateral * profitPercent * leverage This fixes both dry-run and live close position calculations in lib/drift/orders.ts Impact: All SHORT trades since bot launch have incorrect P&L in database. Future trades will calculate correctly.
29 KiB
29 KiB