AI Market Maker
Automated liquidity and spread management for your own Ecosystem markets — a price engine, a roster of trading bots, a funded pool, and the risk gates that stop it. What the addon is, what it needs, and where to start.
A new Ecosystem market is an empty book. No depth, no chart, no last price — nothing for a user to trade against and nothing for a chart to draw. The AI Market Maker fills that gap: it publishes a continuous price series on markets you own, prints a trade tape against it, and optionally places real resting orders into the Ecosystem order book so a user's market order has something to hit.
Everything about it is admin-side. There is no user screen, no per-user configuration, and nothing a customer subscribes to. Your operators configure a market maker per Ecosystem market, fund its pool, and run it.
With Real Liquidity above 0%, the bots write genuine resting LIMIT orders into the Ecosystem book, backed by the pool you funded. A user who fills one is trading against your balance, and the settlement moves your money. Read Funding the pool before you turn that dial up.
What it requires
| Requirement | Why |
|---|---|
| Bicrypto core | The platform this addon installs into |
| Ecosystem addon | The addon quotes ecosystem markets and settles through the ecosystem matching engine. With Ecosystem disabled there is no matcher anywhere in the deployment, so there is nothing to make a market in |
| ScyllaDB | Bot orders, bot trades and the per-fill P&L ledger live in the Ecosystem keyspace. Ecosystem already requires it |
| At least one ecosystem market | A market maker attaches one-to-one to an ecosystemMarket row |
Full prerequisite chain and the enable steps are on Install and enable.
The four pieces
The market maker is the configuration row: a target price, a price range,
an aggression level, a daily volume budget, a volatility threshold and a real
liquidity percentage. One per ecosystem market — the marketId column carries a
unique index, so you cannot attach two.
The pool holds the money. Two balances, base and quote, funded from an admin's own ecosystem wallet. It is the only thing between that wallet and the market's inventory: a deposit takes from the wallet and raises the pool, a withdrawal does the reverse, and every real user fill settles against those two balances.
The bots are the roster that produces the tape. Creating a market maker seeds six of them — two scalpers, a swing trader, an accumulator, a distributor and a market maker — each with a personality, a size, a spread and a daily trade budget. The engine refuses to trade a market with fewer than two ACTIVE bots, because a print needs two sides.
The price engine decides the price. It runs a multi-horizon process — seven timescales from twenty minutes to three years — so the series carries trend, regime and intraday shape at every zoom level, and it advances against wall-clock time on every tick whether or not a trade prints. Nothing else is allowed to touch the price; the bot layer only decides when a trade happens, how large it is and which bot takes each side.
What "running" actually means
A market maker's status column is not the answer to "is this market being made". The engine applies four hard gates on every tick, and a market that fails one keeps its ACTIVE status while printing nothing:
- Fewer than two ACTIVE bots — nothing can take the other side.
- Real liquidity above 0% with an empty pool — nothing to back the orders.
- Daily volume budget spent — resets at the UTC daily reset, not on a rolling day.
- Measured volatility above the market's threshold, when
pauseOnHighVolatilityis on. This one is evaluated from price history held in the engine's memory, so no screen and no API response can report it.
The first three are surfaced on the dashboard as Not quoting, with the closed gate named. The fourth is not, deliberately — see Monitoring a market.
Where the screens are
The console lives at /admin/ai/market-maker, under Admin → Extensions → AI Market Maker.
| Screen | Path | Gate |
|---|---|---|
| Dashboard | /admin/ai/market-maker |
access.ai.market_maker |
| Markets | /admin/ai/market-maker/market |
access.ai.market_maker.market |
| Market detail | /admin/ai/market-maker/market/{id} |
edit.ai.market_maker.market |
| Create market | /admin/ai/market-maker/market/create |
create.ai.market_maker.market |
| Analytics | /admin/ai/market-maker/analytics |
access.ai.market_maker.analytics |
| Settings | /admin/ai/market-maker/settings |
access.ai.market_maker.settings |
| Guide | /admin/ai/market-maker/guide |
access.ai.market_maker |
The market detail screen carries four tabs — Overview, Pool, Bots and Configuration — and is where almost all day-to-day work happens.
Start here
The prerequisite chain, the extension row, the seven cron jobs it registers and the permissions your roles need.
The four-step create wizard, every field it writes, and the price controls that only appear afterwards.
Deposits, withdrawals, the capital basis, and why the rebalance button does not convert your balances.
The six default bots, what each personality changes about the tape, and the config that actually reaches the running market.
Answering "is it quoting" honestly, the price band, inventory skew, and the lifecycle actions.
Volatility auto-pause, daily loss limits, the circuit breaker, the four global kill switches and the fleet-wide stop.
Reference material lives in Settings, the API reference and Troubleshooting.
What it is not
It is not a trading strategy you profit from. Bot-to-bot trades have no profit or loss at all — both sides are the house — so the only P&L this addon can report comes from fills against real users. Nothing in the product presents a win rate for a bot that has never met a real counterparty.
It is also not a substitute for real liquidity on a market you expect to matter. A synthetic tape makes a market look alive and gives a chart something to draw; it does not make your book deep.