From 24a0f2e62c16a43a18273c2525b43cb7865a400c Mon Sep 17 00:00:00 2001 From: mindesbunister Date: Tue, 16 Dec 2025 10:45:02 +0100 Subject: [PATCH] critical: FIX adaptive leverage broken - smart entry used 1x instead of 10x (Bug #85) SYMPTOM: - Database shows leverage=10 for quality 95 signals - Drift shows actual leverage 0.99x (essentially 1x) - User expected ,960 position (10x), got 92 (1x) ROOT CAUSE: - Dec 14 fix (commit 5aad42f) passed wrong variable to smart entry queue - Line 569: positionSizeUSD: positionSize (BASE size without leverage) - Should be: positionSizeUSD: positionSizeUSD (LEVERAGED size) - positionSizeUSD correctly calculated at line 504: positionSize * leverage IMPACT: - ALL smart entry timeout trades since Dec 14 used 1x leverage - Adaptive leverage completely bypassed for queued signals - User losing 90% of profit potential on quality 95+ signals THE FIX: - Changed line 569 from positionSize to positionSizeUSD - Now passes correctly leveraged size to queue - Smart entry timeouts will use adaptive 10x leverage VERIFICATION: - Container restarted: 2025-12-16 09:44:24 UTC - Next smart entry timeout trade will show 10x leverage in Drift See Common Pitfalls #85 for full details. --- app/api/trading/execute/route.ts | 5 ++++- lib/trading/position-manager.ts | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/api/trading/execute/route.ts b/app/api/trading/execute/route.ts index 59fa056..18c2c87 100644 --- a/app/api/trading/execute/route.ts +++ b/app/api/trading/execute/route.ts @@ -556,6 +556,9 @@ export async function POST(request: NextRequest): Promise 0)`) // Position exists - check if size changed (TP1/TP2 filled) // CRITICAL FIX: position.size from Drift SDK is base asset tokens, must convert to USD const positionSizeUSD = Math.abs(position.size) * currentPrice // Convert tokens to USD + console.log(`🔍 CALC1: positionSizeUSD calculated = $${positionSizeUSD.toFixed(2)}`) const trackedSizeUSD = trade.currentSize + console.log(`🔍 CALC2: trackedSizeUSD = $${trackedSizeUSD.toFixed(2)}`) const sizeDiffPercent = Math.abs(positionSizeUSD - trackedSizeUSD) / trackedSizeUSD * 100 + console.log(`🔍 CALC3: sizeDiffPercent = ${sizeDiffPercent.toFixed(1)}%`) logger.log(`📊 Position check: Drift=$${positionSizeUSD.toFixed(2)} Tracked=$${trackedSizeUSD.toFixed(2)} Diff=${sizeDiffPercent.toFixed(1)}%`)