diff --git a/src/app/hashtag/[tag]/TradePanel.tsx b/src/app/hashtag/[tag]/TradePanel.tsx
index 50f8ef4..6823d10 100644
--- a/src/app/hashtag/[tag]/TradePanel.tsx
+++ b/src/app/hashtag/[tag]/TradePanel.tsx
@@ -32,7 +32,7 @@ export function TradePanel({ hashtag, balance, longPosition, shortPosition, fund
const remainingShareCap = Math.max(0, maxPositionShares - existingBuyShares)
const remainingValueCap = Math.max(0, maxPositionValue - existingBuyShares * hashtag.currentPrice)
const sharesFromValueCap = hashtag.currentPrice > 0 ? remainingValueCap / hashtag.currentPrice : 0
- const sharesFromBalance = hashtag.currentPrice > 0 ? balance / hashtag.currentPrice : 0
+ const sharesFromBalance = hashtag.currentPrice > 0 ? Math.max(0, balance) / hashtag.currentPrice : 0
const maxBuyShares = Math.floor(Math.min(remainingShareCap, sharesFromValueCap, sharesFromBalance) * 100) / 100
const maxSellShares =
@@ -75,7 +75,7 @@ export function TradePanel({ hashtag, balance, longPosition, shortPosition, fund
Trade #{hashtag.displayTag}
- Balance: {formatCurrency(balance)}
+ Balance: {formatCurrency(balance)}
@@ -137,10 +137,14 @@ export function TradePanel({ hashtag, balance, longPosition, shortPosition, fund
: String(maxSellShares)
)}
>
- Max
- {(tab === 'BUY_LONG' || tab === 'BUY_SHORT') && maxBuyShares === 0
- ? ' (limit reached)'
- : null}
+ {(tab === 'BUY_LONG' || tab === 'BUY_SHORT')
+ ? balance <= 0
+ ? Balance is negative
+ : maxBuyShares === 0
+ ? 'Max (limit reached)'
+ : 'Max'
+ : 'Max'
+ }
+