Improvements to crossMM strategy

A number of users have reported that the cross-exchange market making strategy sometimes doesn’t place orders, even when the displayed profitability in status exceeds the min_profitability parameter.

After an audit of the strategy, we believe that we can improve how it works by having it always place orders on the maker book, rather than deciding whether or not to place orders. The maker order prices will be the taker book hedging price (the price at which the bot can hedge a filled order on the taker book) plus min_profitability and transaction costs.

In addition, this should make the crossMM strategy simpler for those of you who want to customize it. We expect this to be released in the next couple of weeks.

What other changes do you think we should make to the crossMM strategy?

1 Like

I would like to see more takers supported rather than just one. And to use the maker as a common liquidity pool for all of takers.

I’m also unclear if different quote currencies are supported, e.g. BTC to ETH. I suspect no because it won’t be able to hedge without converting.

I would like to see more takers supported rather than just one. And to use the maker as a common liquidity pool for all of takers.

That’s an interesting suggestion… allowing for more taker markets allows the maker maker to be more competitive. The only downside I can see (other than additional complexity) is that you need to maintain balances on multiple taker markets in order to do this. We will add this story to the backlog.

I’m also unclear if different quote currencies are supported, e.g. BTC to ETH. I suspect no because it won’t be able to hedge without converting.

This is possible if you add additional assets to the Exchange rates section in conf_global.yml. You can use either a price feed API like CoinGecko or a manual conversion price.

Whoops, if the taker is the source liquidity pool, then I meant using that pool to make markets in multiple pairs, whether internal or external. Right now the XEMM is limited to only one maker pair without running another copy of HB. That’s not elegant.

But I like the inverse too! :smile:

Hmm, so I can make markets in say, ONE/TUSD, ONE/BNB, ONE/ETH, ONE/BCH, etc. without issues using ONE/USDT as a taker market? I’m kind of doubtful since it seems sort of triangular.

Are the exchange maker/taker fees still calculated when creating orders?

Are the exchange maker/taker fees still calculated when creating orders?

Yes, the min_profitability parameter is net of exchange fees.