Skip to content

Releases: enarjord/passivbot

Passivbot v7.5.4 – Collateral-Agnostic Metrics, Smarter Overrides, and Split Balance/Position Fetch

26 Nov 15:25

Choose a tag to compare

Highlights

  • Added collateral-agnostic performance metrics (adg_pnl, mdg_pnl, PnL-based Sharpe/Sortino, with weighted variants) and documented them.
  • Improved coin overrides UX and safety with new docs, tests, and debug logging.
  • Refactored position/balance handling to separate updates and optimize Hyperliquid’s combined fetch.
  • Robustified data-sync, fill-events cache layout, and Kucoin open-order pagination.
  • Expanded optimizer limit handling with a new limit_utils module and tighter limit/scoring integration.

Metrics & Analysis

  • New metrics: adg_pnl, mdg_pnl (mean/median daily PnL over end-of-day balance), and PnL-based sharpe_ratio_pnl/sortino_ratio_pnl, plus weighted versions.
  • Added docs/metrics.md entries clarifying equity vs PnL Sharpe/Sortino semantics.
  • Types/analysis wiring updated across Rust and Python consumers; optimization weights and config canonicalization recognize the new metrics.
  • Added optimizer-side limit utilities (limit_utils) and integration tests to enforce limit normalization/penalties consistently.

Coin Overrides

  • Documented full override behavior (docs/coin_overrides.md) with inline/file-based examples, allowed fields, path resolution, and pitfalls.
  • Added debug logs when overrides are initialized and when override values are used.
  • Expanded tests to cover path resolution, missing override files, and retention through config formatting.

Exchange & Sync Fixes

  • Kucoin: fetch_open_orders now paginates (no more 50-order cap).
  • Hyperliquid: fill_events_manager now supports the exchange; fetch positions/balance combined once per cycle.
  • General: position/balance fetching split for all exchanges (dedicated fetch_balance/fetch_positions), with balance caching to avoid double-hits on combined endpoints.
  • sync_tar.py: pulling a single file no longer nests an extra directory.
  • Optimizer: new limit handling pipeline (limit_utils), enhanced scoring/limits parsing, and additional tests for optimizer limits.

Fill Events

  • Cache root now caches/{exchange}/{user} (was caches/{exchange}_{user}).
  • Hyperliquid fetcher path registered; CLI no longer rejects hyperliquid users.

Core Refactors & Safeguards

  • update_positions and new update_balance separated; main loops call both.
  • Balance caching reuse and rate-limit/network guards added.
  • Tests added for balance split and Hyperliquid combined fetch reuse.
  • Added optimizer limit integration tests and helper coverage for limit utilities.

Docs

  • Added coin override guide and metrics reference updates.

QA/Tests

  • New tests: override path handling, balance split behavior, Hyperliquid fetch reuse, Hyperliquid fetcher wiring.
  • Optimizer limit integration and limit_utils tests added.
  • Existing suite continues to pass on targeted runs (spot-checked new tests).

Full Changelog: v7.5.0...v7.5.4

Passivbot v7.5.0 (TWEL Enforcer)

23 Nov 15:12
a4a5054

Choose a tag to compare

Passivbot v7.5.0 (TWEL Enforcer)

Highlights

  • Risk controls & TWEL enforcer

    • Added risk_we_excess_allowance_pct, risk_wel_enforcer_threshold, and companion Rust helpers that auto-reduce positions when wallet exposure drifts beyond the buffer.
    • Implemented TWEL (Total Wallet Exposure Limit) gating in Rust with Python wiring, per-position prioritisation, and optimizer bounds/CLI flags.
    • Refined unstuck logic so both live bot and backtester use the same Rust helpers; unstuck can now be disabled by setting a negative threshold.
  • Optimizer overhaul

    • Shared-memory HLCV bundles and per-scenario slicing remove per-worker copies, cutting RAM growth as CPU count increases.
    • Streaming evaluator outputs: each candidate logs Pareto updates immediately, duplicate detection got stricter, and starting-config logging/immediate termination handling improved.
    • Suite support landed: optimisations can now evaluate multiple scenarios per candidate (with config cleaners, override helpers, and scenario metrics aggregation).
    • Added Pareto dashboard (WIP) and metrics-only mode; template configs updated with new suites and defaults.
  • Logging & monitoring

    • Order-plan logging is now quiet when unchanged, but includes delta/context details when cancels/creates actually happen; tolerance gating prevents churn.
    • Candlestick manager detects sparse exchange feeds once per (exchange,symbol,tf) and still standardises gaps with synthetic zero-candles.
    • Balance snapshot/logging knobs moved to config.logging; log-once helper ensures repeated warnings appear only once per symbol.
  • Config & CLI improvements

    • Template config refreshed with new risk knobs, trailing weights, and optimizer bounds; config_utils tracks transforms and exposes _raw data.
    • CLI overrides for optimise bounds now only freeze the key you actually pass (e.g. -lnp 4 pins long positions to 4, leaving other bounds untouched).
    • Added knobs such as recv_window_ms, balance_sample_divider, logging.volume_refresh_info_threshold_seconds, and updated docs.
  • Backtest & analysis

    • Introduced HlcvsBundle and payload subset helpers; backtest payloads now carry coin metadata in Rust and Python tests cover slicing/validation.
    • New scoring metrics (entry_initial_balance_pct_long, drawdown limits, volatility-weighted trailing entries) and renamed config fields to match.
    • Added scripts/tools (shared_arrays.py, JSON streamliner, new Pareto utilities) plus doc updates (passivbot_agent_principles.yaml, CONTRIBUTING).
  • Fill events manager (WIP)

    • New src/fill_events_manager.py adds modular fetchers (Bitget, Bybit, Binance) with caching and enrichment plus a CLI runner and tests. Live bot still uses legacy fetch_pnls; the manager will coexist while it matures.

Thanks to everyone who tested TWEL enforcer, optimiser RAM fixes, and the expanding docs/tooling ecosystem.

What's Changed

Full Changelog: v7.4.4...v7.5.0

Last release before v7.5

23 Nov 14:50

Choose a tag to compare

Last release before v7.5

What's Changed

  • add metrics total_wallet_exposure_max, mean, median by @backstab in #528

New Contributors

Full Changelog: v7.4.1...v7.4.4

Passivbot v7.4.1 – Custom Endpoint Support

13 Oct 16:54

Choose a tag to compare

  • Introduced configurable REST endpoint overrides via configs/custom_endpoints.json, including CLI/config opt‑in and automatic websocket disabling.
  • Added loader intelligence for hostname placeholders and detailed startup logging.
  • Documented the setup flow and added pytest coverage to ensure ccxt rewrites and headers behave as intended.

Full Changelog: v7.4.0...v7.4.1

Passivbot v7.4.0 (“Candles & Control”)

11 Oct 19:03

Choose a tag to compare

Market Data & Candles

  • Introduced an asynchronous CandlestickManager with on-disk caching, metadata, and gap repair.
  • Added EMA/log-range series APIs, optional pagination limits, and higher-timeframe fetching (tf_to_ms, get_latest_ema*, etc.).
  • Align warmup windows between backtester and live; new config keys (inactive_coin_candle_ttl_minutes, entry_grid_spacing_log_*, filter_log_range_ema_span) replace legacy rolling-window settings.
    procedures.get_first_timestamps_unified() now defers Bitget lookups until cheaper exchanges fail and iteratively discovers earliest timestamps.

Risk & Execution Controls

  • Expanded noise → log-range filters for coin selection and grid spacing, including hourly EMA modulation.
  • Panic-close and auto-unstuck pipelines hardened; existing unstuck safeguards extended with exchange overrides.
  • Live bot now prevents disabled sides from refilling approved lists and only logs the disable event once.
  • Added hourly memory snapshots to Passivbot telemetry.

Backtester & Optimizer

  • Refined warmup/backfill handling (first_timestamp_ms, 1h alignment, improved gap repair).
  • Optimizer gains fine-tune mode (--fine_tune_params), CLI-friendly bounds and limits, and updated docs.
  • Various Rust backtest enhancements (analysis.rs, extended metrics, timestamp clamping).

Configs & Examples

  • Template and example configs refreshed to use new log-range EMA spans, trailing weights, and log spacing fields.
  • Added max_memory_candles_per_symbol defaults and refined per-exchange warmup ratio handling.
  • Removed stale all_approved.json example; hyperliquid guide/docs updated accordingly.

Tooling & Requirements

  • Rust toolchain pinned to 1.76; requirements.txt now includes maturin/portalocker/portalocker.
  • README & docs clarified around installation, Windows venv activation, optimizer fine-tuning, and backtest data (downloader-based archives).

Miscellaneous

  • Logging tidy-ups (throttled EMA progress, reduced noisy lines).
  • Several .gitignore additions, dependency updates, and formatting runs (black).
  • Tests expanded for CandlestickManager and Passivbot’s unstuck flow, ensuring new behaviour is well-covered.

What's Changed

  • Merge v7.4.0_noisiness into master: noise-aware filters, smarter panic exits, and Rust backtest upgrades by @enarjord in #523

Full Changelog: v7.3.21...v7.4.0

v7.3.21 – Candles & Control

11 Oct 18:37
a7daaf0

Choose a tag to compare

Release Highlights (v7.3.21 vs v7.3.20)

  • Introduced an asynchronous CandlestickManager with disk-backed caching, automatic gap repair, and earliest-ts metadata. Requests now clamp to discovered history, and a new pytest suite guards the cache behaviour.
  • Reworked symbol screening: filter_markets is now a shared utility, and UTC handling in ts_to_date is consistent across the bot.
  • Order execution pipeline gained “panic close” support and refined order-type handling; a follow-up patch fixed an edge case where panic close could fail.
  • Rust backtest tooling grew substantially (new analysis module, ADX-driven trailing flip logic, richer metrics, error handling, and max-flip tracking). Supporting dependencies were added in the Rust workspace.
  • Documentation refresh: README now covers Windows activation paths and references the Hyperliquid vault; outdated Passivbot imagery was removed.
  • Miscellaneous housekeeping: expanded .gitignore, removal of stale notebooks/configs, and other formatting cleanups.

These changes focus on sturdier market-data handling, sharper backtest analytics, and safer order-management controls while keeping configuration untouched.

What's Changed

New Contributors

Full Changelog: v7.3.20...v7.3.21

v7.3.20 Kucoin

31 Aug 15:21

Choose a tag to compare

  • officially added Kucoin exchange

v7.3.19 tidy up

26 Aug 15:48

Choose a tag to compare

v7.3.16 dynamic WEL and n_pos

29 Jul 16:10

Choose a tag to compare

  • backtester will now update effective n_positions and wallet exposure limits for each coin dynamically, like live bot does
  • increase grid/trailing allocations by 1% to overshoot grid_trailing_ratio_threshold

Full Changelog: v7.3.15...v7.3.16

v7.3.15 ccxt version rollback

26 Jul 20:39

Choose a tag to compare

  • rollback ccxt from v4.4.96 to v4.4.90 due to breaking changes