Bullish provides deep liquidity in its markets by combining a modern Automated Market Maker (AMM) with a traditional limit order book. We call this combination the Bullish Order Book.
Our AMM uses the Automated Market Making Instructions (AMM Instructions) sent by our customers to create the firm bids and offers you see in our markets. Customers can send as many AMM Instructions as they like, for as many markets as they like, subject to their account balances. Each individual AMM Instruction directs the AMM how to place multiple bids and offers into the Bullish Order Book, using assets from the customer’s spot account.
One AMM Instruction, with the help of the Bullish Automated Market Maker, sends thousands of bids and offers to the Bullish Order Book, and readjusts them instantaneously every time there is a trade.
Our AMM uses a constant product formula, explained in detail below, to determine what price and quantity to buy or sell assets at. It then applies an additional spread to the base formula – pricing bids lower by half a spread and offers higher by half a spread – to generate the actual bids and offers seen in the Bullish Order Book. The spread is a combination of the Fixed Spread in the AMM Instruction and the optional Dynamic Spread, which is described in more detail below.
As other market participants trade against bids and offers sent on behalf of the multiple customer AMM Instructions, each one of those trades generates income for one or more AMM Instructions. Since there are often multiple AMM Instructions active at the same time, translating to bids and offers at the same price, the income from each trade is split among the AMM Instructions involved in the trade according to how much value it contributed to the trade. Learn more about Generating income with AMM Instructions.
Automated Market Making using the Constant Product formula
Suppose you wish to create an AMM Instruction for a particular market, say the BTC/USD market. The below formula tells you, given the current Price and your supplied Upper and Lower price bounds, how many USD (Quote) you will need to allocate to the AMM Instruction in addition to the BTC (Base) you have chosen to allocate.
Invariant: Converting quote assets to base assets
The formula is also an invariant. Not only does it determine the ratio of BTC to USD when you submit your AMM Instruction, but it also tells the AMM the ratio it must maintain if the price moves, e.g. when someone executes one of your bids or offers. Therefore this formula – along with the spread, as described above – determines exactly what price and quantity the AMM should place your bids and offers at.
Note that by setting price bounds you may expose yourself to additional risk of Impermanent Loss.
Bullish Order Book’s tight integration with the AMM is designed to allow every such bid and offer to be immediately repriced (if necessary) after every single trade, before any new trades can occur. Every bid and offer is perfectly priced and sized. This is in contrast to traditional market making using limit orders sent via API, which are bandwidth constrained and subject to latency issues.
AMM Instructions allow customers to select a desired bid-offer spread (meaning the distance between the highest bid and lowest offer that will be sent for that AMM Instruction). This gives you a lot of control for average situations. However, in certain market conditions, a single fixed spread is suboptimal. For instance, after the exchange maintenance window, the AMM Instruction’s price might have become outdated. To ensure liquidity is provided at a price more in line with the global consensus, dynamic spread will adjust your bids and offers accordingly. Similarly, when the price trends up (down) and you are selling (buying) more frequently than normal, it can be advantageous to temporarily raise your offers (lower your bids) until the market stops trending. This is the principle behind our dynamic spread logic, which adjusts your spread based on recent market conditions. Our simulations demonstrate that enabling Dynamic Spread would typically have generated increased income for customers. However we are unable to guarantee income improvement from using the feature and we also understand that some customers prefer the predictability of a fixed spread, so we have made this feature optional.