Perp Market Maker Strategy
What It Does
The Perp Market Maker is a high-frequency grid scalper that quotes both buy and sell orders around the current price, earns the spread between them, and follows momentum with tight take-profits. In the Marketplace tab these presets appear under the XGrid family label. In plain terms: the bot keeps limit buy orders just below the market and limit sell orders just above it, on multiple levels. When price wiggles inside that band, both sides fill and the difference — minus fees — is profit. It repeats this many times per day. The hard part is not the spread capture; it’s surviving the moments when price doesn’t wiggle but trends, leaving you holding inventory at a loss. Most of this strategy’s machinery exists to detect, limit, and exit those moments.Core Concepts
Equity-based sizing (equity_pct)
Modern presets size the quoting grid as a percentage of account equity rather than a fixed dollar amount:
equity_pct: 1.5 (MM Professional 2-Level on BloFin, the most conservative) to 10 (Minimalist Alpha on BloFin).
Combined with leverage this compounds fast: 5% equity at 75x leverage means a fully-deployed grid can represent several times your account in notional. Understand the math before raising it. The Scaling Agent can adjust it for you (/set equity_pct 5).
Multilevel quoting
Instead of a single bid and ask, the bot quotes 2–6 levels per side (preset-dependent), sized and spaced so closer levels are filled first and deeper levels catch larger moves. Spacing is dynamic: presets widen quotes when volatility rises, when the order book thins, or as drawdown grows.Position limits
Every preset carries a hard ceiling (max_position_usdt, 2,800 in current presets) that quoting will not exceed regardless of equity sizing.
Risk Systems
Tiered loss management
As an underwater position deepens, the bot steps through defensive tiers — widening spreads, cutting size, halting new entries, and finally force-closing. Tier thresholds are preset-specific. Two examples from current presets (values in basis points of loss):| Tier 1 | Tier 2 | Tier 3 | Hard stop | |
|---|---|---|---|---|
| v7/v8 Counterscalp | 100 | 500 | 800 | 1000 (10%) |
| HFT v6 | 100 | 300 | 600 | 1000 (10%) |
Time decay
Positions that age without reaching profit are progressively pushed toward the exit: take-profit targets shrink with age, then the bot accepts a small loss, then force-exits at market. Current preset values (v7 Counterscalp): accept a bounded loss exit after 8 hours, breakeven push after 96 hours, unconditional force exit after 48 hours. The MM Professional presets allow up to 96 hours before force exit; HFT v6 forces out at 24 hours.force_exit_enabled: false disables the unconditional exit if you’d rather positions ride.
An attack-to-exit module can also actively work a stuck position out: after 30 minutes stuck, it adds small mean-reversion entries (capped at 1.25x the position) specifically to lower the breakeven and exit faster.
XGrid counter scalp
When the main position is underwater and the XGrid trend signal confirms the move against you, the bot opens a counter-position (capped at 50% of the main) and scalps the adverse trend, offsetting part of the loss while the main position waits. Enabled in the v7/v8 Counterscalp and HFT v6 presets.Microstructure defenses
- Whale detection — finds large resting orders (“walls”) and places quotes near them, so your orders sit behind real support/resistance
- Trap detection — exits fills whose immediate aftermath is toxic (price instantly moving against the fill)
- Cascade detection — recognizes liquidation cascades and stands aside instead of quoting into them
- Reactive spacing — widens quotes up to 10x when the order book thins or volatility spikes
Current Marketplace Presets
All values below are read from the actual preset configs. Bybit/BloFin variants of the same preset are merged into one Marketplace card with an exchange toggle.| Preset | Levels | Sizing | Max position | Leverage | Counter-scalp | Force exit |
|---|---|---|---|---|---|---|
| MM Professional 2-Level | 2 | 1.5% equity (BloFin) / 3% (Bybit) | 2,800 | 75x | off | 96h |
| MM Professional (5-level) | 5 | 2% equity | $2,000 | 75x | off | 96h |
| MM Minimalist Alpha | 5 | 10% equity (BloFin) / 3% (Bybit) | 2,800 | 75x | Bybit only | 48h |
| v7 Long Short Counterscalp | 4 | 5% equity | $2,000 | 75x | on | 48h |
| v8 Long Short Counterscalp (BloFin) | 4 | 5% equity | $2,000 | 75x | on | 48h |
| HFT v6 Long Short MM | 6 | fixed 10 quotes | $2,000 | 75x | on | 24h |
| ASTER Scalper MM (BloFin) | 5 | fixed ~$11 quotes | $500 | 75x | — | 24h |
- MM Professional 2-Level is the suggested starting point for this family: only 2 quote levels, the lowest equity percentage, and professional sizing with inventory skew. Single- and multi-symbol variants exist on both exchanges.
- v7 vs v8: v8 raises take-profit targets to 9 bps (vs 6 bps on v7) for more profit per trade at the cost of fewer fills.
- v7 spread settings (both exchanges): 15 bps base spread, 8 bps floor, 50 bps ceiling, with reactive spacing widening up to 10x.
- HFT v6 uses fixed quote sizes rather than equity scaling, with the tightest loss tiers and the fastest forced exit.
Key Parameters
Grid budget as a percentage of account equity.
0 falls back to legacy fixed sizing. Presets: 1.5–10.Quote levels per side. Presets: 2–6.
Hard position ceiling in USDT. Presets: 2,800.
Leverage multiplier. All current presets: 75.
Base half-spread from mid in basis points (code default 5; counterscalp presets use 15, the professional/scalper presets 5).
Emergency exit threshold. All current presets: 1000 (10% of position).
Unconditional market exit for aged positions. Presets: 24–96 hours. Gate with
force_exit_enabled.Counter-trend scalping against a stuck main position. See the XGrid guide.
Risk Notes
Troubleshooting
”Spread too tight, not quoting”
The market spread is belowmin_profitable_spread_bps (presets require ~11 bps over round-trip fees). Either the symbol is too tight to make markets on profitably, or wait for higher volatility.
”Position stuck at a loss”
Check which loss tier you’re in (the logs state it) — the bot may be intentionally in defend-only mode. Verify time decay is enabled; check whether counter-scalp is active and offsetting.”Orders keep getting cancelled and re-placed”
Reactive spacing repositions quotes as conditions change — normal. If you hit exchange rate limits, reduce quote levels.Next Steps
Preset Guide
Choose between the XGrid-family presets
XGrid Signal Engine
The trend signal behind counter-scalp
Scaling Agent
Adjust equity_pct and other settings conversationally
Risk Management
Sizing rules that keep you alive