Skip to content
All hypotheses

Hypotheses

Hummingbot PMM V1 (pure market making, by hummingbot) — faithful port on BTCUSDT.BINANCE_SPOT, 1 buy + 1 sell limit level at mid ±1%, 30s refresh, 60s post-fill delay, inventory skew OFF (source defaults)

Faithful translation of Hummingbot's PMM V1 controller (credit: hummingbot, Apache-2.0). It is a real tradeable strategy (a symmetric limit-order market maker), not a utility. Source defaults: connector 'binance' (SPOT…

Hypothesis

Faithful translation of Hummingbot's PMM V1 controller (credit: hummingbot, Apache-2.0). It is a real tradeable strategy (a symmetric limit-order market maker), not a utility. Source defaults: connector 'binance' (SPOT connector) and trading_pair 'BTC-USDT', so we use BTCUSDT.BINANCE_SPOT (CASH account, long-only inventory, maker fee 0.10% per fill). Defaults exactly as written: order_amount = 1 (base asset), buy_spreads = [0.01], sell_spreads = [0.01] (one level per side, level ids 'buy_0' and 'sell_0'),……Show moreShow less

Faithful translation of Hummingbot's PMM V1 controller (credit: hummingbot, Apache-2.0). It is a real tradeable strategy (a symmetric limit-order market maker), not a utility. Source defaults: connector 'binance' (SPOT connector) and trading_pair 'BTC-USDT', so we use BTCUSDT.BINANCE_SPOT (CASH account, long-only inventory, maker fee 0.10% per fill). Defaults exactly as written: order_amount = 1 (base asset), buy_spreads = [0.01], sell_spreads = [0.01] (one level per side, level ids 'buy_0' and 'sell_0'), order_refresh_time = 30 s, order_refresh_tolerance_pct = -1 (disabled, so refresh everything), filled_order_delay = 60 s, inventory_skew_enabled = False, target_base_pct = 0.5, inventory_range_multiplier = 1.0, price_ceiling = -1 and price_floor = -1 (both disabled). Reference price = mid price. On our platform, with bars only, mid = close of the latest 1-MINUTE bar (the finest bar we have with multi-year history; order-book mid is not reproducible over years). Each order is a plain LIMIT order (post-only is not in the source, so it is not added). PLATFORM ADAPTATIONS (only these, all forced): (1) Sizing. 1 BTC is at or above the whole $100k starting capital, so order_amount is set ONCE at start to a fixed base quantity equal to 0.25 × starting equity / first close (about 25% of equity per level) and then kept FIXED in base units, as the source does. Parameter 'order_amount_equity_frac' = 0.25. (2) Clock. The 30 s refresh and 60 s fill delay are shorter than or equal to one 1m bar. Refresh therefore happens at every bar close (cancel any unfilled resting order older than 30 s, i.e. every bar), and a level that filled cannot re-quote until 60 s after the fill (it skips the next bar close). (3) Spot balance. Hummingbot's spot connector rejects a sell larger than the base balance and a buy larger than the quote balance. So the sell_0 order is placed only if base held >= order_amount (otherwise the level is skipped that bar), and buy_0 only if free USDT >= order_amount × price × 1.001. The backtest starts with 100% USDT, so the first round trip must begin with a buy fill. The source has no stop-loss, take-profit or time exit. None is added, because adding one would stop it being a faithful port.

Analysis

PMMV1

Backtest and paper results are hypothetical. Trading involves risk of loss.