Manifold should do anything other than throwing away excess shares when liquidity is added to Multiple Choice or Set markets
Oct 31, 2025

Caveat: You can prove that this breaks something or leads to 'cheating' and we can throw the entire idea away. It might not be perfect, but I argue it is better than the status quo.

Background

Manifold still uses the maniswap AMM for binary markets, which has a very handy solution to the "excess shares" issue when liquidity is added to an existing pool. Maniswap adjusts the p parameter to allow better use of subsidy mana without throwing away shares. This causes some changes in behavior of the AMM when betting against it, but usually it ends up better than just throwing away a lot of mana.

When Multiple Choice markets were introduced in 2023, one concession made in the implementation was fixing p = 0.5 due to Math Reasons. It mostly didn't matter a ton at the time, some reasons being: Manifold was pumping liquidity into markets for every trader, so it was papered over; the actual amounts of mana used were significantly smaller, 100 mana was about what 1000 is today due to mana inflation over time.

Later on, Set markets were introduced as "We took the Multiple Choice markets and just turned off the auto-balancing". These also have a fixed p = 0.5.

Problem

So, what's wrong?

On both Multiple Choice and Set markets, significant amounts of liquidity added after market creation are totally lost. Your mana basically just goes "poof".

In the case of Set markets, it's really simple. Since p = 0.5 is fixed, if you subsidize a Set market where answers are far from 50%, a significant portion of the amount you subsidize is thrown away as excess shares. You don't get them back. Manifold doesn't get them. They're just vaporized.

In the case of Multiple Choice markets, it's a little more complicated, but in most cases you will be vaporizing somewhere between.....5% and "a massive amount" of your mana.

Concrete Example

Here's a concrete example to help you understand the issue.

A market is created with 3 answers A, B, and C, with 1000 mana as the initial subsidy. Traders do some trading and the market ends up with A = 80%, B = 10%, C = 10%, like this:

Total Liquidity: 1000

Option A     80.0%
  Pool Yes shares:      176.8
  Pool No shares:       707.1
Option B     10.0%
  Pool Yes shares:     1060.7
  Pool No shares:       117.9
Option C     10.0%
  Pool Yes shares:     1060.7
  Pool No shares:       117.9

Pool Value: 707.11

At this point, some of the initial 1000 mana in the pool has been used up by traders who have moved the market from 33/33/33 to 80/10/10, as represented by the "pool value" of 707 mana.

If you found this market and decided you wanted to add more liquidity to it at this point, perhaps you would supply an extra 1000 mana. Pause for a moment and make a guess, what will the pool value be after we apply 1000 mana of subsidy to this market?

Here's the market state after the 1000 mana subsidy:

Total Liquidity: 2000

Option A     80.0%
  Pool Yes shares:      294.6
  Pool No shares:      1178.3
Option B     10.0%
  Pool Yes shares:     1531.9
  Pool No shares:       170.2
Option C     10.0%
  Pool Yes shares:     1531.9
  Pool No shares:       170.2

Pool Value: 1084.07

Ha, did you think that spending 1000 mana would result in more than 377 mana added to the value of the pool?

In this example, 778 Yes shares in Option A (present value of 623 mana) were completely vaporized during the subsidy process. You never get it back and no one else does. (You will just have to take my word for it, the math part would take a long time to explain.)

Possible Fixes

The main thing I care about is doing absolutely anything other than the status quo. I often see multiple choice markets that would benefit from a lot of subsidy, but in many cases it is so inefficient that users would be crazy to do it.

The best fix is to keep track of all excess shares, but choosing a method to do so might rub people the wrong way. This is a play money site, we can just try stuff.

I'll present 2 options, someone else might have others...they would both work on both Multiple Choice and Set markets:

Option A: just give the subsidizing user the excess shares as a "bet"

  • straightforward implementation

  • need to decide on the "cost basis" of this bet because it will affect profit (a safe one is one mana per share which always results in negative profit but not by too much)

  • can be traded like any other shares

Option B: keep track of the excess shares using some other method and pay them out on market resolution

  • they could be a special "bet" that cannot be sold/redeemed and don't count as profit

  • or they could be kept as a pool-adjacent value that just remembers how many excess shares any user owns, to pay back at resolution time

Concerns

Basically you can make slightly one-sided trades at the expense of funding the AMM. Maybe it is abusable but I can't see exactly how it would ruin things, especially since we cannot withdraw liquidity in the MC markets. Like you could effectively exit out of a position by funding the AMM rather than changing the market price.

Would love any feedback!! Where have I messed up?

(edited)

@JeromeHPowell brought to my attention the most diabolical version of the LIQUIDITY TRAP that I've ever seen. It looks like he directly lost at least 3000 mana, possibly more.

Here's how:

  1. He created a totally normal Set market and people started trading on it

  2. Eventually, he saw something interesting was happening and decided to subsidize the market with 5500 mana. At the time of this subsidy, the answers were trading at various amounts between ~20% and ~80%.

  3. About 30 minutes after adding the subsidy, the market resolved with some options resolving Yes and some resolving No.

Now, everything Jerome did in this case was totally normal user behavior with no intent to break the system. He only followed what the site gave him. Yet:

1) p=0.5 strikes again

Because his options were not at exactly 50% when the subsidy rolled in, a significant chunk of his subsidy was thrown away as "excess shares" of either Yes or No. This is because of one of the items identified in the above post: p=0.5 is hardcoded for Set markets. If Set markets allowed p to change, he would not have lost mana here.

2) 🚨 CRAZY ALERT 🚨 subsidyPool discrepancy kills Jerome's balance

THIS IS GENUINELY CRAZY, but it has also been known for "literally forever" as I pointed out when MC/Set markets were still new.

If you resolve a Set (or MC!) market before the Subsidy Pool (unapplied liquidity) has fully drizzled, the yet-to-be-drizzled mana is just vaporized.

V A P O R I Z E D.

I can't easily see the exact amount of mana that was subsidized but not yet drizzled, but it was probably around 3500 mana. The Set market type is coded to just throw that away and also delete any record of it, if the market is resolved.

UNRESOLVING THE MARKET WILL NOT FIX THIS

@ian I beg, pretty pretty please, we can fix at least this one.

In regular Binary, 'subsidyPool' is returned correctly. In MC and Set, the subsidyPool is ignored on each answer's resolution and after the last one resolves the helper overwrites it to be exactly zero. We can do better than that!

See this message from October 9 2023 for all the details!!!

@Eliza am I fucked because I added liquidity to my Time POTY market after it got traded on a bit

@Eliza does this also mean that if one option was that 99% and I added liquidity to the market almost all shares would be thrown away for that option immediately?

@JeromeHPowell as far as your time market, you would want to look in the post above to see the example. If it was more like 80/10/10 then you would have lost a lot. If it was more like 20/20/20/20/20 then it's not so bad.

That's pretty similar to what I was doing on my nfl injury report markets last year. I thought it was good practice to bid the probability up before adding the subsidy, but I guess I was just screwing myself. I knew some of the subsidy was disappearing, but I had no idea it had anything to do with the probability.

@travis On binary markets, that approach is likely correct! But multiple choice (dependent or set) are very different. Unfortunately.

(edited)

@Eliza damn, it (TIME 26 market) was almost exactly at like 80 and then other options with a few percent each, so I’m screwed

Thanks, I never could figure out what was happening to my mana when I tried to add more liquidity. I thought it had something to do with adding liquidity after some of the options had already resolved. If I added with all options still open, it seemed like most of the mana eventually got into the pool.

It would be nice if you could subsidize different options in the same "set" different amounts or at different times. For instance, if I wanted to subsidize today's games on /OnTheMARK/nba-basketball-games-live-20242025 I would have to also subsidize 1300+ closed markets (or maybe not I still don't understand this).

@travis I don't think you have to subsidize the closed ones, but you're definitely subsidizing things you might not care about (and inefficiently).

(edited)

this is very cool! the issues with set markets wasting added liquidity annoyed me to no end until i begged them to apply the hacky fix of removing the drizzle, so while adding liquidity is still broke, as long as you have lots of mana to spare and you plan the market in advance you can avoid wasting mana. it's nice to see a worked out example for how bad it is for MC as well.

i think the main advantage of Option B is that Option A will be more confusing for users. in practice, many creators don't understand liquidity. many don't even know that "liquidity return" is a thing. but people absolutely notice "bets". so if people add liquidity and suddenly see they have some enormous YES position for one option, they are going to be panicked/confused/etc ("I didn't predict that!"), even if mathematically those shares are just pure upside for them (and/or if the profit doesn't count). it's largely a UI issue—in theory that can be fixed by any approach that doesn't display those additional shares like a bet they placed—but it's a substantial one.

whereas Option B i think is generally the right way to think about it—this is just a more complicated form of liquidity return, which happens behind the scenes and you only need to track what's happening if you choose to. ideally users would understand liquidity return better than they do, but given that most don't pay much attention to the simpler current system it seems unlikely they'll want to wade through and understand where these conditional payouts are coming from.

(edited)

@Ziddletwix Indeed, I think Option B is significantly better than the status quo, which is throwing away those shares so no one gets them. It's slightly more work to implement which is why I included Option A so my target audience ( @ian ) can weigh the benefits and drawbacks of each approach.

As you noted, this would be particularly noticeable in a Set market. It's no more "capital efficient", but it would at least return more of your capital at the end of the day.

For anyone else following along, imagine adding liquidity to a Set market currently priced like this:

A 90%
B 80%
C 10%
D 10%
E 10%

In the current pattern, your subsidy would be applied equally across all 5 answers. However, on A and B, some of the Yes shares would be thrown away, while on C/D/E, some of your No shares would be thrown away.

If we just kept track of those shares until resolution, then you would get paid out mana if A or B resolved Yes and if C/D/E resolved No. (If they went the other way, you would get nothing, but that's okay too -- in that case your mana still subsidized the market like before.)

I am guessing here as a baseline that both Option A and Option B would be less total work to implement than the "better fix" of having a variable p for Set markets. If this plan doesn't work, I'll next try to advocate for that instead.

@Eliza My personal preference would be:

Option C: just implement p != 0.5 for all market types, and do the same thing binary markets do in both set and linked MC markets. The linked liquidity addition operation then becomes buy some mix of Y/N shares on each individual market and apply those as you would for binary. That's a breaking change, so make it noticeable in the API -- call it multi-cpmm-2 or whatever. You can make it only on new markets, or just convert the market type when it becomes relevant.

@EvanDaniel I wrote this in response to the reality that I have been asking for variable p for years and nothing has happened yet. I also prefer your option but I rate it very unlikely to happen.

Can you just add 377 mana to the pool, deduct 377 mana from the balance, and return the rest unspent mana?

@bohaska No, it required 1000 mana to add the 377 to the value of the pool. The amount that is excess is ONLY 778 shares of Yes for Option A. Those cannot become mana, but their No counterparts were needed to set the rest of the pools.

@Eliza I think the post would be improved by a worked example for a binary market with and without fixed p. The source of the problem isn't made clear to someone unfamiliar with the liquidity math.

(edited)

@EvanDaniel I considered this but kept it out as an editorial decision for brevity (and because my primary audience already knows this). I made sure to include the link to the Maniswap page which has a worked example, and I can copy the specific section in here for anyone who is interested.

The problem: leftover shares

Suppose you have $100 and are trying to initialize an AMM’s liquidity pool to be at an implied 33% probability using Uniswap.

If you only have $100, then that means that you can put up at most 100 YES shares and 100 NO shares. To get the right probability with this constraint, you must create the liquidity pool with 100 YES shares and 50 NO shares (since 50/(100+50) = 1/3).

But notice that if you started with $100, you still have 50 NO shares left over. This is unfortunate. Ideally, you would prefer to deploy all of your capital to subsidizing the market, not just when the initial probability is 50% (which is the only case when you can deploy 100 YES, 100 NO).

The solution: Maniswap

The solution is to modify the Uniswap constraint to make it parametrized in terms of the initial probability.

Suppose you want to want to initialize the probability at p. Instead of the simple constant-product formula, use

(y^p)(n^1-p) = k

With the corresponding market probability of

P = (pn) / (pn+ (1-p)y)

This will allow you to allocate all 100 YES and 100 NO shares of your original $100 subsidy at any probability you choose!

More importantly, the farther the initial probability is in the extremes (0.1% or 99.9%), the better the liquidity and the lower the price-jumpiness you will observe versus Uniswap.

@Eliza I think it's a valuable example, since it starts simple and explains the problem concisely -- along with the fact that there's a solution (modify p). And that is exactly the problem that happens in set markets, and also the exact solution those should get (IMO).

© Manifold Markets, Inc.TermsPrivacy