Limiting Bot-Usable Exchange Balances for Shared Assets
Summary
This Hummingbot guide explains how to cap the amount of a token that bots may use from an exchange or wallet. The feature is useful when multiple bots share an account and token, since it can constrain each bot’s usable balance. The guide describes setting a per-exchange, per-asset limit, checking configured limits with the balance commands, and disabling the feature through global configuration. A zero limit prevents initial orders for that asset until trading accumulates it; a negative one disables the limit.
A market-making example applies limits to ETH and USDT, then follows how filled orders change available balances and affect later order placement. When the remaining usable amount cannot meet the strategy’s minimum order size, the bot stops creating that side’s order at the next refresh. The example illustrates balance budgeting and operational behavior, but does not evaluate profitability, execution quality, or broader account risk. Limits govern bot-usable funds; traders still need to account for other strategies and exchange-level constraints.
Key ideas
- Balance limits restrict how much of a particular asset a bot can use on an exchange.
- Per-asset limits can help manage tokens shared by bots trading different pairs.
- A zero limit prevents initial orders until trading accumulates the asset, while a negative value disables the limit.
- Filled orders change available balances and may leave too little for the next minimum-sized order.
- The guide demonstrates configuration behavior rather than strategy performance.
Tags
Full text
# How It Works
**Updated on version [0.35.0](../../release-notes/releases.md)**
Sets the amount limit on how much assets Hummingbot can use in an exchange or wallet. This can be useful when running multiple bots on different trading pairs with same tokens e.g. running a BTC-USDT pair and another bot on ETH-USDT using the same account.
## How It Works
You can set how much of a particular token the bot can use by running the command `balance limit [exchange] [asset] [amount]`. You can disable this feature by editing it in the global config file and set it to -1. While setting it to 0 will initially not place any order for a specific asset until a trade is executed to accumulate the said asset.
For example:
```
>>> balance limit binance USDT 100
Limit for USDT on binance exchange set to 100.0
```
Run the `balance` command again or `balance limit` to confirm the limit has been applied.
```
>>> balance
Updating balances, please wait...
binance:
Asset Amount
BNB 0.0000
BTC 0.0000
ETH 0.0000
TFUEL 0.0187
THETA 0.5880
USDC 0.0090
USDT 158.8197
XRP 0.8440
XZC 0.0076
```
```
>>> balance limit
Balance Limits per exchange...
binance
Asset Limit
USDT 100.0000
```
## Example Scenario
Create pure market making strategy, run `config` to view the whole configuration.

Run `balance limit binance ETH 0.0513` to set the balance limit to 0.0513 ETH. Run `balance limit binance USDT 30` to set the balance limit to 30 USDT. Both ETH and USDT value is equivalent to \$30.

Each order is 0.0188 equivalent to \$11.20

Sell order gets filled. USDT available balance is now 30.1657

Another sell order gets filled, the available balance now shows 41.2069. Plus the open buy order, the "usable" balance on USDT is now at around \$52.

After the two sell orders gets filled the remaining available balance in ETH is 0.0137 equivalent to \$8.17. It means that after the next `order_refresh_time` it won't create sell order because the minimum order amount is \$11.


Same process as the scenario above. After the two buy orders gets filled the remaining available balance in USDT is 7.5317 equivalent to \$7.53. It means that after the next `order_refresh_time` it won't create buy order because the minimum order amount is \$11.

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.