Releases: enarjord/passivbot
Releases · enarjord/passivbot
Passivbot v7.5.4 – Collateral-Agnostic Metrics, Smarter Overrides, and Split Balance/Position Fetch
Passivbot v7.5.4 – Collateral-Agnostic Metrics, Smarter Overrides, and Split Balance/Position Fetch
Latest
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_utilsmodule and tighter limit/scoring integration.
Metrics & Analysis
- New metrics:
adg_pnl,mdg_pnl(mean/median daily PnL over end-of-day balance), and PnL-basedsharpe_ratio_pnl/sortino_ratio_pnl, plus weighted versions. - Added
docs/metrics.mdentries 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_ordersnow paginates (no more 50-order cap). - Hyperliquid:
fill_events_managernow 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}(wascaches/{exchange}_{user}). - Hyperliquid fetcher path registered; CLI no longer rejects hyperliquid users.
Core Refactors & Safeguards
update_positionsand newupdate_balanceseparated; 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)
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.
- Added
-
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_utilstracks transforms and exposes_rawdata. - CLI overrides for optimise bounds now only freeze the key you actually pass (e.g.
-lnp 4pins 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.
- Template config refreshed with new risk knobs, trailing weights, and optimizer bounds;
-
Backtest & analysis
- Introduced
HlcvsBundleand 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).
- Introduced
-
Fill events manager (WIP)
- New
src/fill_events_manager.pyadds modular fetchers (Bitget, Bybit, Binance) with caching and enrichment plus a CLI runner and tests. Live bot still uses legacyfetch_pnls; the manager will coexist while it matures.
- New
Thanks to everyone who tested TWEL enforcer, optimiser RAM fixes, and the expanding docs/tooling ecosystem.
What's Changed
- Fix res.get() trying to expanding the objectives in case of seen hash by @TayyabTalha in #526
- V7.5.0 twel enforcer by @TayyabTalha in #527
- V7.5.0 twel enforcer by @enarjord in #531
Full Changelog: v7.4.4...v7.5.0
Last release before v7.5
Passivbot v7.4.1 – Custom Endpoint Support
- 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”)
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
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
- Update README for Windows users by @ozymotv in #517
- Window crashes fix 7.3.15 by @ozymotv in #516
- Zone recovery improvements by @Belgianwafflecorp in #520
- Fix import for generate mcap list by @TayyabTalha in #521
New Contributors
- @Belgianwafflecorp made their first contribution in #520
Full Changelog: v7.3.20...v7.3.21
v7.3.20 Kucoin
- officially added Kucoin exchange
v7.3.19 tidy up
Full Changelog: v7.3.16...v7.3.19
v7.3.16 dynamic WEL and n_pos
- 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
- rollback ccxt from v4.4.96 to v4.4.90 due to breaking changes