added balance lookup to confirm quantity

This commit is contained in:
2026-05-04 16:06:31 -04:00
parent f8addae6b7
commit 4347b846bf
2 changed files with 24 additions and 1 deletions

20
bot.py
View File

@@ -107,9 +107,27 @@ def run_cycle(config: Config) -> bool:
if signal is None:
continue
sell_qty = position.quantity
if not config.paper_trading:
# Kraken's fill may differ slightly from our stored quantity — sell
# whatever we actually hold to avoid "Insufficient funds" errors.
try:
balances = client.get_all_balances()
# Derive base asset from pair altname: "PENDLEUSD" -> "PENDLE"
base = position.pair.removesuffix("USD")
actual = balances.get(base, balances.get("X" + base))
if actual is not None and actual < sell_qty:
log.info(
"%s: adjusting sell qty %.8f -> %.8f to match Kraken balance",
position.pair, sell_qty, actual,
)
sell_qty = actual
except KrakenError as exc:
log.warning("Could not fetch balances before sell: %s", exc)
try:
order_id = client.market_sell(
position.pair, position.quantity, paper=config.paper_trading
position.pair, sell_qty, paper=config.paper_trading
)
except KrakenError as exc:
log.error("Sell failed for %s: %s — will retry next run", position.pair, exc)