MM pool for fixed spreads, MM competitions

Hello all,

I’m looking to push down the LP rewards in MANGO again later today in combination with a pool of USDC for fixed monthly payments/ market share pools as discussed on the previous 2 dev calls. So far liquidity has increased several fold and is pretty sufficient to sustain heavy volumes with low slippage (barring the AVAX market sell a few weeks ago at an inopportune time).

The past rewards totalled/cost the DAO ~ 132k MNGO per day (~21.5k USD) and didn’t achieve half of what was intended as it was not combined with a managed program / managed relationships & support. We now have the latter and the rewards have been reduced to 70k MNGO per day (~11k USD) = savings of 300k/month already at current market prices with slippages in check as GM & a few other MM’s provide liquidity at touch + backstop liquidity.

I will be pushing proposals out which reduces the MNGO per day to 18k MNGO per day (~3k USD) and then combining it with the above pool & MS competitions (open to all). GM will manage this pool & the distributions on a bi-monthly basis. Design to be posted once complete. (Will require some work with Waterquarks to track up-time on pubkeys, sizes, volumes, etc).

There will be no need to run on chain fill rewards in this case & then no on-chain gaming of the system to worry about. Since rewards have been reduced from $645k/month (where revenues were only around $80k month) I’d like to propose a pool of $150k/month to be split between the MM pool & MM market share competitions. (Where one is market share based & the other is fixed spreads, with an SLA on uptime & size requirements).

From my perspective this would represent a significant advantage over the pre-existing liquidity generation program & participation in the MM pool would require substantial mngo holdings (TBD). - Access to DAO capital for backstop liquidity would require the same (but I’d like to take a bit longer to sort the details of that = delegated accounts, DAO capital, trusted & vetted MM’s with 500k > mngo)



I would like to have an idea how this will affect ordinary users who also participate in the market maker program, and their remuneration.

This program will be open to all, but has a minimum amount to avoid unnecessary noise - whilst the LP program on-chain will still continue at reduced amounts, it’s necessary that we focus on market makers who can actually maintain spreads consistently at decent size and do so as their core business - something which isn’t possible to ask of ordinary users.

1 Like

Hi All,

I’ve spent the last 2 weeks having conversations with all the largest market makers on Mango, past and present that would be the most likely to contribute to this program and increase Mango liquidity even further - getting bids, spreads, sizes and then blending it all into one schema.

I’ve also left the rewards as is except for pushing backstop liquidity with 2 MM’s to ensure we had enough liquidity on SOL-PERP to allow for liquidations to successfully be exited during the volatility over the last 2 days. Unfortunately the Solana network has had some major problems for the last 2 weeks which has added noise to the data that was captured on spreads/liquidity and activity with minimal rewards ($15k/week in MNGO). - This has held up very well, GM and 4RM providing most of the liquidity during TPS issues and holding >50% market share (not optimal but kept the exchange running)

Mangolorians has been adapted thanks to great work from @waterquarks to be able to support the program that I’ll be trialing with large market makers (but still public & open to all). Please take a look: Mangolorians

There are scripts generating spreads per pubkey (and several pubkeys combined), uptime for particular sizes, on book liquidity for pubkeys and a very easy to read report that can be run by anyone at all times to measure the performance &/or look at what a market maker is doing during the day on the order book. (we will allocate rewards based on this)

I’ve added three aspects to the off-chain MM program to allow for competing functions (which is required to have competing strategies on book, instead of ghost liquidity):

  1. Competitive fixed spreads with up-time requirements
  2. Backstop Liquidity for large size at liquidation fee spreads on SOL-PERP
  3. Market share based maker pool to incentivize fills

Some considerations have been made on the above 3 points to allow for anyone to participate but keep the program manageable:

  1. Minimum size to participate with any pubkey = 12.5k/side (this was initially 25k/side but have reduced it to 12.5k and rewards are linear as we care about touch liquidity rather than size)
  2. Minimum size to participate is 250k/side and uptime is set at 95% to ensure it’s actually back-stop liquidity, optimal size 500k/side - max 5 participants
  3. Minimum market share to participate = 10%, we need market makers that want to get hit and this needs to be competitive enough to drive makers to tighten up and get hit. There are no limits here but naturally there can never be more than 10 makers in this pool (assuming everyone has a perfect 10% share). - self fills not counted & trading activity will be reviewed.

Now onto the budget:
The budget is much higher than I expect we will spend on this program as it assumes success at the 100k tier for 5 makers, 5 makers on the backstop program and this is quite unlikely. I’m confident from my discussions that a few market makers will definitely hit the 12.5k tier, 25k tier and perhaps a few even the 50k tier. Emphasis on this being a two month trial to see what we can achieve.

Per month the max cost that I can estimate is $318,750, so an 8 week program could cost $637,500.

Realistically (1) I expect costs for backstop that will be certain at 15k/month to ensure the insurance fund is looked after, (2) 5 market makers hitting the 25k tier ~ $106k/month and finally (3) the 40k/month pool to be certain. This brings an estimated grand total at 161k/month (but the budget of 318k is there for the “what-if” we have many successful makers and we need to ensure solvency of this program). - any unused funds will be returned/used for the next 8 weeks.

On the fixed spreads & uptime requirements to clarify how it works → you can only qualify for one column, if you hit 100k uptimes, you get 100k fee on a weekly basis, if you qualify for 50k you can 50k tier (not 12.5k + 25k + 50k payout). - for stability this should run for 4 weeks before adjustments are made. (These spreads are competitive and we’ve personally tested the amounts → definitely difficult to hit). Uptime requirements are also higher for smaller sizes as the total risk is less.

I’d like to start this program as soon as the proposal passes (leaves a day to discuss before I push the DAO vote online) - targeting Saturday 16th at 12 UTC as a start date.



code can be audited at GitHub - waterquarks/mangolorians: Analytics & historical data for Mango Markets

1 Like

Final comment - pairs can be chosen, i.e it’s not an all or nothing, if a pubkey maintains spreads on 12.5k only for SOL-PERP, then that’s valid for compensation for that row (i.e. 2.5k/month)

A few questions to make sure I understand:

  1. If a MM’s average spread is <=0.07% on BTC-PERP and their uptime is >=75% for a target liquidity of 25k/side for a week, then they’d qualify for a payout of $3750? (in case they don’t also match the requirements for a higher tier)
  2. The rewards would be direct USDC from the DAO vault? We reserve funds for this along with the vote on this proposal?
  3. What if many MMs participate, and the budget we reserved for the month is too low?

I think some fixes should be implemented to the liquidity tracking dashboard.
First of all - no matter how much liquidity you enter in target liquidity - it would show average spread for all levels averaged (unless you enter a number, bigger than liquidity provided - then it’s 0). Why this is important - if there are two different levels with let’s say spreads of 5 bps and 10 bps, both 12.5k in size, then with the current system average would be 7.5 bps and the first level would not qualify, but it actually should.
Another problem - is that all the data is actually averaged. So imagine a MM quoting 85% of the time 5 bps and 15% of the time 200 bps - this would give 34.25 bps average spread and qualify for nothing (but it should)

My solution would be to use two inputs - liquidity size and required spread, then calculate when this condition was actually met. And this percentage would be most fair metric taking in account existence of multiple levels or that some MM’s can actually widen spreads instead of cancelling orders

Hey @ckds

Answers below:

  1. That’s correct, all rewards are independent of other tiers (not an all or nothing scenario)
  2. Correct, rewards are from the DAO
  3. That’s a very valid point, but these are competitive #s and this program will be for 8 weeks (2 periods of 4 weeks, so adjustments can be made mid way), realistically I can say that it’s extremely unlikely more than 5 MMs hit the tiers & hit them successfully. What I can do is cap the # of participants based on pre-existing pubkey activity + allow for capped new entrants

Agreed on both points - @waterquarks

Aggregate works for cumulative but not individual, so we should amend this:
(1) enter both parameters - qualified spread and size, then filter out all quotes which were live and then give a percentage it was hit

Just note @Daemon_Hell the way it’s currently designed → if you hit 12.5k and 25k tier for SOL-PERP, you get paid out the $ amount in the 25k cell, so $5k, not $2.5k+$5k. (But I think I made this part clear)

Yeah 3 should be solvable by requiring mms to sign up by a certain cutoff date here on the forum or on discord by publishing their mango account. If we get too many requests we know we have a problem.


Heads up I’m working on the changes noted by @Daemon_Hell - will be live shortly.

1 Like

I’m just learning of this mm opportunity and I’m new to crypto market making. Does someone have a link to a primer that explains crypto mm such that I’ll be able to understand the above messages?

A good starter reference would be hummingbot docs: Strategies - Hummingbot Foundation

This program only works for sophisticated / experienced market makers


Hey guys. The 10% share is on whole Mango, or on a single product?

@Daemon_Hell your comments were very helpful: target liquidity is now used to walk down through all open orders of the MM at every tick, calculating the weighted average bid, ask and spread only for the aforementioned order size.

A target spread parameter was also added to calculate uptime for any specific spread, as seen in the screenshot attached. Let me know if you have any other observations!

Hey Kronael, this would be for whole mango - incentivizes products that actually trade volume

Do you think it would make sense to do this per large product to incentivize specialization in trading big individual big markets? I can imagine that if you concentrate on a single market, you could make the price much better there and them move on to others. Or is it that the program would get unmanagable if done per large symbol.

Yes - I’m trying to keep it simple so that it doesn’t become unmanageable → I expect that the larger products (SOL, BTC, ETH, LUNA, AVAX) will blend to the point that it’s a ‘single market’. If we split it per product, that’s 10 potential payouts per product x 11. Rather than all combined = max 10 payouts.

I think it’s hard to quote 10 bps on SOL right now. I used to be able to do 10bps 25k for SOL-PERP but it has been pretty bad lately, I think mostly due to worse network and better takers, the lower rewards were not the main factor. I hope to be able to do 15 bps soon, but I’m still working on it. I’m definitely interested in the program tho and I hope I’ll be able to continue soon.