Skip to content
All library documents

Hummingbot 2.5: Inventory-Aware Market Making and Gateway Changes

Article Hummingbot docs

Summary

These release notes describe Hummingbot 2.5 changes relevant to automated trading. A Strategy V2 feature called PositionsHeld tracks spot balances and perpetual positions retained by stopped executors. Strategies can keep positions when execution stops, inspect inventory and unrealized P&L, and use that information to adjust quotes. The release also adds a PMM Controller that applies this capability to a modernized pure market-making strategy.

The notes outline a new Gateway integration with swap, AMM, and concentrated-liquidity schemas, aimed at Solana decentralized exchange connectors and liquidity provision, alongside a legacy interface retained for older integrations. Other changes include an upgrade to Python 3.12, connector updates, and a fix allowing multiple arbitrage configurations. These are software release highlights, not trading results; they provide no evidence of profitability, execution quality, or the risks of inventory-aware quoting. Connector and Gateway capabilities depend on the chosen integration and version.

Key ideas

  • PositionsHeld tracks spot and perpetual inventory retained after an executor stops.
  • Strategies can use inventory and unrealized P&L to adjust market-making prices and spreads.
  • The PMM Controller brings this position-aware approach to a Strategy V2 market-making controller.
  • The new Gateway schemas support swap and liquidity workflows, while legacy endpoints remain available for compatibility.
  • The release notes report software changes but give no evidence of strategy performance.

Tags

Full text
# Hummingbot v2.5.0 Release Notes


# Hummingbot v2.5.0 Release Notes

*Released on April 21, 2025*

| Repository | Description | GitHub Release | DockerHub Release |
|------------|-------------|----------------|-------------------|
| [Hummingbot](https://github.com/hummingbot/hummingbot) | Core Client | [`v2.5.0`](https://github.com/hummingbot/hummingbot/releases/tag/v2.5.0) | [`version-2.5.0`](https://hub.docker.com/r/hummingbot/hummingbot/tags?name=version-2.5.0) |
| [Gateway](https://github.com/hummingbot/gateway) | DEX Middleware | [`v2.5.0`](https://github.com/hummingbot/gateway/releases/tag/v2.5.0) | [`version-2.5.0`](https://hub.docker.com/r/hummingbot/gateway/tags?name=version-2.5.0) |

!!! note
    Other Hummingbot repositories such as [Dashboard](https://github.com/hummingbot/dashboard), [Backend-API](https://github.com/hummingbot/backend-api), [Quant-Lab](https://github.com/hummingbot/quant-lab), and [Deploy](https://github.com/hummingbot/deploy) follow a continuous deployment model without fixed version releases. Use the `main` branch for these repositories.

See the full changelogs on GitHub:

- [Hummingbot v2.5.0 Changelog](https://github.com/hummingbot/hummingbot/releases/tag/v2.5.0)
- [Gateway v2.5.0 Changelog](https://github.com/hummingbot/gateway/releases/tag/v2.5.0)

## How to Update

### Docker

Re-run the [Deploy](https://github.com/hummingbot/deploy) setup script:
```bash
git clone https://github.com/hummingbot/deploy.git
cd deploy
bash setup.sh
```

For individual images, exit running containers, pull the latest images, and restart:
```bash
docker compose down
docker pull hummingbot/hummingbot:latest
docker compose up -d
```

### Source

Update the branches of each repo to this release by running:
```bash
git pull origin master # Hummingbot
git pull origin main # Gateway
```

Afterwards, follow the instructions to re-install dependencies and compile the codebase for each repository. See [Install Hummingbot from Source](../installation/hummingbot-client.md) and [Install Gateway from Source](../gateway/installation.md).

## Release Highlights

### `conda` Environment Upgrade

The latest update upgrades Hummingbot's core environment to **Python 3.12**, bringing performance improvements and modern language features. The Anaconda/Miniconda environment has been streamlined to rely primarily on native `conda` packages, simplifying setup and maintenance. This upgrade makes Hummingbot faster and enables the use of modern Python libraries.

Key libraries, including **Pydantic** (now V2), have been updated to for better performance and compatibility. Additionally, test suites now utilize Python's **asyncio** framework, enhancing testing efficiency and reliability.

Pull Request: [#7465](https://github.com/hummingbot/hummingbot/pull/7465)

**Special thanks to [MementoRC](https://github.com/MementoRC) for this huge contribution! 🙏**


### PMM Controller and PositionsHeld

The latest release introduces a new feature in the Strategy V2 framework: **PositionsHeld**, which tracks a global set of spot balances and perpetual positions held by stopped Executors. `StopExecutorAction` can now be called with `keep_position=true` to maintain positions after stopping execution.

This new feature can be used by any strategy, and is ideal for market making strategies. It allows a strategy to track an inventory position that includes the amounts held for each asset and the unrealized P&L of each position, enabling more sophisticated strategies that skew prices and spreads based on inventory held.

This release also adds a new [**PMM Controller**](https://github.com/hummingbot/hummingbot/blob/master/controllers/generic/pmm.py), a new strategy that leverages the `PositionsHeld` feature to provide a modernized V2 version of the [Pure Market Making](../strategies/v1-strategies/pure-market-making.md) V1 strategy.

Pull Request: [#7500](https://github.com/hummingbot/hummingbot/pull/7500)

To learn more about how to use the PMM Controller, watch these recent Hummingbot livestream :

- [Part 1 – PMM Controller Overview](https://www.youtube.com/live/qxPdDMWZrss?si=cj8Cs5XD-xl-52lu)  
- [Part 2 – Position Hold Feature in Action](https://www.youtube.com/live/M8H0GtWASkQ?si=LEhJwCTJg2kuyKjZ)

### Gateway New vs Legacy

The 2.5 release introduces significant architectural changes to how the Hummingbot client interacts with Gateway, marking a major evolution in the platform's capabilities.

**New Gateway (v2.5)**

- Introduces new schemas: `Swap`, `AMM`, and `CLMM`
- Implements corresponding `GatewaySwap` class in the Hummingbot client
- Includes comprehensive test scripts for connector validation
- Planned for v2.6.0: Addition of `GatewayAMM` and `GatewayCLMM` classes
- Optimized for Solana DEX connectors and liquidity provision (LP) strategies

**Legacy Gateway (v2.2)**

- Maintains support for traditional `/price` and `/trade` endpoints
- Ensures backward compatibility with existing connectors
- Recommended for users who need to maintain compatibility with older integrations

For installation, refer to:

- [New Gateway](../gateway/installation.md) - For Solana DEX connectors and LP strategies
- Legacy Gateway - For compatibility with older connectors (see Gateway installation documentation)

**Example Scripts**

- [amm_price_example](https://github.com/hummingbot/hummingbot/blob/development/strategies/scripts/amm_price_example.py)
- [amm_trade_example](https://github.com/hummingbot/hummingbot/blob/development/strategies/scripts/amm_price_example.py)
- [clmm_manage_position](https://github.com/hummingbot/hummingbot/blob/development/strategies/scripts/clmm_manage_position.py)


Pull Request: [Hummingbot](https://github.com/hummingbot/hummingbot/pull/7491) | [Gateway](https://github.com/hummingbot/gateway/pull/422)   


### Improvements to Existing Exchange Connectors

- [#7470](https://github.com/hummingbot/hummingbot/pull/7470) - Added millisecond precision to trade update timestamps for `Gate.io` spot and perpetual connectors  **Thanks to [komposter](https://github.com/komposter) for this fix! 🙏** 
- [#7486](https://github.com/hummingbot/hummingbot/pull/7486) - Updated BingX connector documentation  **Thanks to [danilo-robotter-ai](https://github.com/danilo-robotter-ai) for this contribution! 🙏**
- [#7517](https://github.com/hummingbot/hummingbot/pull/7517) - Removed Lyra package dependency from the Derive connector  **Thanks to [isreallee82](https://github.com/isreallee82) for this fix! 🙏**
- [#7535](https://github.com/hummingbot/hummingbot/pull/7535) - Extended `OKX` connector to support U.S users via `app.okx.com`  **Thanks to [WuonParticle](https://github.com/WuonParticle) for this fix! 🙏**
- [#7538](https://github.com/hummingbot/hummingbot/pull/7538) - Added `MEXC` rate oracle integration  **Thanks to [llegoelkelo](https://github.com/llegoelkelo) for this fix! 🙏**
- [#7548](https://github.com/hummingbot/hummingbot/pull/7548) - Added support for raw `Ed25519` and `Secp256k1` private keys in the `XRPL` connector  **Thanks to [mlguys](https://github.com/mlguys) for this fix! 🙏**

### Other Updates

#### **[`hummingbot`](https://github.com/hummingbot/hummingbot)**


- [#7520](https://github.com/hummingbot/hummingbot/pull/7520) - Fixed environment configuration for building the Hummingbot library  **Thanks to [MementoRC](https://github.com/MementoRC) for this fix! 🙏**
- [#7526](https://github.com/hummingbot/hummingbot/pull/7526) - Upgraded `Pydantic` to the latest major version 
- [#7527](https://github.com/hummingbot/hummingbot/pull/7527) - Resolved `arbitrage_controller` bug that prevented multiple arbitrage configurations  **Thanks to [WuonParticle](https://github.com/WuonParticle) for this fix! 🙏**
- [#7537](https://github.com/hummingbot/hummingbot/pull/7537) - Added instructions for running and debugging tests in Cursor or VS Code  **Thanks to [WuonParticle](https://github.com/WuonParticle) for this contribution! 🙏**

#### **[`backend-api`](https://github.com/hummingbot/backend-api)**

- [#60](https://github.com/hummingbot/backend-api/pull/60) - Updated latest dependencies to be compatible with the Python 3.12 update to the client

#### **[`dashboard`](https://github.com/hummingbot/dashboard)**

- [#239](https://github.com/hummingbot/dashboard/pull/239) - Updated Dashboard dependencies to the latest and added `grid strike grid component` controller page
 
#### **[`deploy`](https://github.com/hummingbot/deploy)**

- [#85](https://github.com/hummingbot/deploy/pull/85) - Updated `deploy` repo to reflect changes in Dashboard

Shown in full with attribution under the source's licence. Licence: Apache-2.0

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.