Skip to content

v7.6.2: Logging Improvements & Bug Fixes

Choose a tag to compare

@enarjord enarjord released this 20 Jan 18:56
· 778 commits to master since this release

This release focuses on improving log verbosity, fixing critical candle data issues, and enhancing the overall user experience with better diagnostics.

🔧 Critical Bug Fixes

  • Zero-candle warmup fix: Large warmup spans (>2 days) now properly trigger gap-filling via CCXT even when end_ts touches present. Previously, bots would synthesize thousands of zero-candles for historical gaps instead of fetching real data. First warmup may take longer (one-time backfill), subsequent restarts are fast (~6s vs ~156s).

  • One-way mode entry fix: Disabled sides no longer block entries when using one-way mode. The bot now correctly respects side configuration when choosing initial entry direction.

  • Bybit leverage errors: "Leverage not modified" (110043) and "margin mode not modified" (110026) errors are now handled gracefully instead of logging full tracebacks.

📊 Logging Improvements

  • Structured log prefixes: All log messages now use bracketed category tags for easy filtering:

    • [config] - Configuration changes
    • [fills] - Fill events and PnL
    • [candle] - Candle synthesis/replacement
    • [bybit], [binance], etc. - Exchange-specific logs
  • Health summary enhancements: Now includes realized PnL sum when fills > 0 (e.g., fills=3 (pnl=+12.50))

  • Reduced log spam:

    • Zero-candle logs rate-limited to once per minute per symbol
    • BybitFetcher residual PnL warnings moved to debug level
    • FillEventsManager refresh logs consolidated to single summary line
  • Better timestamps: Zero-candle warnings now include human-readable UTC timestamps showing the exact range synthesized

⚙️ New Configuration Options

  • live.enable_archive_candle_fetch (default: false): Opt-in to use exchange archive data for candle fetching. Disabled by default to avoid timeout issues. Backtester always uses archives regardless of this setting.

  • live.warmup_jitter_seconds (default: 30): Random delay before warmup to prevent API rate limit storms when multiple bots start simultaneously.

  • live.max_concurrent_api_requests (default: null): Optional global concurrency limit for CCXT API calls.

  • backtest.maker_fee_override (default: null): Override maker fees in backtest/optimizer (useful for testing different fee tiers).

🖥️ UI Improvements

  • TWEL clarification: Startup banner now shows "TWEL" (Total Wallet Exposure Limit) instead of "Exposure" to clarify it's a limit, not current exposure. Long+short mode shows both limits (e.g., TWEL: L:125% S:85%).

  • Dynamic banner width: Startup banner now calculates width dynamically to prevent misaligned borders.

🐛 Other Fixes

  • Windows cache compatibility: folder names now replace : with _ on Windows or when WINDOWS_COMPATIBILITY=1 env var is set (#547, thanks @FelixJongleur42)

  • Pareto dashboard: Fixed JavaScript callback errors when switching between tabs (#550, thanks @646826)

📦 Dependencies

  • Added openpyxl to requirements-live.txt (required for Bitget archive XLSX parsing)

⚠️ Upgrade Notes

  1. First startup may be slower: The zero-candle fix causes a one-time backfill of historical data. Subsequent restarts will be fast.

  2. Windows users: Existing caches will be orphaned and re-downloaded due to the folder naming change.

  3. Archive fetching disabled by default: If you relied on archive data for live bots, set live.enable_archive_candle_fetch: true in your config.

📈 Statistics

  • 66 commits since v7.6.1
  • 62 files changed
  • +9,196 / -2,529 lines

Full changelog: https://github.com/enarjord/passivbot/blob/master/changelog.md