[Discussion] Flexible compensation for sides in the ALP model

Continuing the discussion from Cryptsy LP Issues:

TL;DR
Increasing compensation for a low side (possibly together with lowering compensation for the other side) creates a strong incentive for T1 liquidity providers

  • to trade funds (from a crowded side) with a higher level (e.g. T3) to receive funds that can be put on the low side or
  • to move funds from exchanges which have plenty of funds on that side or
  • to use additional funds from their own pocket and put them on T1

/TL;DR

Some of the problems we experience with sides (buy, sell) that run dry (or close to is) might be mitigated if compensation for providing liquidity wouldn’t be static.
At the moment there’s mostly a fixed rate compensation (up to x USD volume within the spread are compensated by y%; funds in excess of x USD value compete for the reward).
Fixed cost (pay y USD per side, let LPs compete for it by adding up to x USD volume (NBT, BTC) at a side) is in experimental state and will soonTM be available once the NuBot/ALP integration is complete.

With fixed cost scheme - but with fixed reward scheme - the T1 situation could be improved by adjusting the compensation based on the size of the side.
If the compensation is set to y USD (per minute, day, whatever) supposing that’s enough to have x funds on the side, an adjustment of y could improve the liquidity situation.

Let me take some numbers for x and y to make it more visible.
Say an ALP operates at an exchange.
x = 10,000 USD value on buy side and sell side shall be achieved.
The monthly compensation per side is y = 720 USD (or 24 USD per day; 1 USD per hour or 1/60 USD per minute).

With fixed rate this results in a daily rate of 0.24% per side - until the 10,000 USD value are reached; above 10,000 USD value LPs compete for compensation.
With fixed compensation a daily compensation of 24 USD is paid - no matter how much liquidity is provided; LPs compete for compensation from the first Dollar value.

The fixed compensation scheme provides (hopefully) a stronger incentive to put funds in low walls than the fixed reward scheme does. That’s one of the reasons why some favour this compensation scheme.
Time will tell whether it really works like intended.

But both the fixed rate and the fixed compensation scheme could adjust incentives if the compensation wouldn’t be static.
Say the target for each side is 10,000 USD value.
What would be a reasonable adjustment of compensation if one side is at 15,000 while the other is at 5,000?
Reduce compensation for the crowded side and increase the compensation for the low side! The total compensation might stay the same.

If one side is at 10,000 while the other is at 5,000 it’s not easily possible to increase compensation for the low side by taking compensation from the other side. For situations like that a buffer in the ALP funds needs to be available.

The idea to adjust compensation in a kind of feedback loop from the fill level of the side is possible with fixed rate and fixed compensation as well.

Increasing compensation for a low side creates a strong incentive to trade funds from the other side with a higher level (e.g. T3) to receive funds that can be put on the low side.
If the LP considers the compensation of the “not so low side” as sufficient (and assuming that the LP has more funds which are just not used for liquidity providing), increasing the compensation of the low side creates an incentive to put funds on it without trading with higher tiers.
It also creates an incentive to balance between exchanges, which obviously will only be effective, if the overall T1 situation is balanced, but some exchanges have much more funds on one side, while others have the opposite situation.
In a situation in which the overall T1 is unbalanced, balancing from higher tiers is incentivized.

The conditions under which compensation can/should be adjusted require some discussion.

I agree there should be increased incentive to the weak side.

I also agree what said in one of your post – the sell side liquidity should be somewhat fixed and the buy side should be a certain percentage of total NBT in circulation (i.e. the sell and buy sides aren’t usually the same amount. Being equal is not optimal)

1 Like

:thumbsup: - especially not if you consider losing the peg in one direction more sever than losing it in the other direction. The buy side might be more important than the sell side.

Sell side issues can be easily dealt with - NBT entry gateways have practically no limit (as long as the FLOT, FSRT or JordanLee have funds left; after that a grant is necessary).
The buy side has some buffers under direct control of Nu (the higher tiers), but largely depends on individual liquidity providers putting funds on the buy side because they are compensated for it.

1 Like

This is a very sophisticated post.

I would like to continue this discussion after ALP v2 is launched and all ALPs have switched to fixed cost.

For some reason Discourse didn’t notify me of this post before now, I’d have joined in before now had I seen it sooner :smile:

The framework used for the ALP v2 software can handle config changes without needing a restart of the server. That will allow for changes to the rewards to be made manually “on the fly”, once it is in operation.
The ultimate aim will be to hook the pool software into external feeds, such as Alix, so that the pool can make some adjustments itself. Still a little way off on the automated aspect but the foundation for it is definitely there and being thought about.

1 Like

Thanks for chiming in, especially with such good news!

That sounds awesome (for reasons you already mentioned)!

1 Like

Good thing I went through my bookmarks tonight… :wink:

1 Like

Careful with this. If you hook the rewards up to the liquidity in the pool, you’re right back at fixed reward just without the dutch auction mechanism, depending on how you do it.

Say there is 50 buy and 50 sell. The operator gives 5 nbt/day to each side. Now there is 500 buy and 500 sell. If the operator gives 50 NBT/day, this is a fixed reward scheme. Let’s go back to 50/50 with 5 nbt/day. What if it’s 25/75? Do we still pay 5 nbt/side? That is a fixed cost scheme, giving more % reward to the weak side. If we decide to pay 2.5 buy and 7.5 sell, we’re right back to a fixed reward scheme. If we decide to pay 7.5 buy and 2.5 sell, we will get all kinds of switching problem issues.

If we decide to call a pool with 100 buy and 50 sell ‘balanced’, then giving 10 nbt/day to buy and 5 nbt/day to sell is sufficient. Our fixed cost for each side betrays our balance point.

What I’m trying to get at is that there is not a good theoretical model that has called for adjustments to be made on the fly.

Then again, here’s one:

  • Pay % of total pool liquidity. A 0.1% reward would give 10 nbt/day for every 10,000 total liquidity.

  • Give that % of total liquidity as a kind of ‘fixed cost’ across the two sides. Therefore, a pool with 2,500 buy and 7,500 sell with a 0.1% reward would give 5 nbt/day to each side, therefore buy side is at 0.2% and sell side is at 0.0667%. The volume weighted average gives us back our 0.1% reward.

  • Give a maximum pool liquidity that the % will be paid. Do a fixed-cost approach from there. Note that this will determine the size of the operator grants.

End result:
A pool with no liquidity gets no funding. A pool with huge liquidity gets the maximum funding but no more. A pool in the middle gets linearly proportional funding. There is still a built-in reward asymmetry seeking to balance the sides of the pool.

If 50 is the targeted liquidity, everything’s fine.

…and a feedback loop could reduce the compensation from 5 nbt/day to 0.5 nbt/day.

If the target is still 50 per side, adjusting the compensation to reach 50/50 is barely possible. If you double the compensation for the side with 25 volume, you have no money left for the compensation of the other side.
This is something the market should sort out (LPs trading funds to reduce the crowded side) as the compensation on the low side (per USD value liquidity) is 3 times that of the crowded side.

Why do the sides have to be balanced 50:50? What’s the benefit of that?
Each side should have a target liquidity volume. But I don’t know why the targets for both sides need to be the same.

The targets don’t necessarily have to be the same, but they state what our ‘balance’ point is. I suggested at one point the concept of ‘flex cost’. The idea is that if an operator has 15 nbt/day to spend, they could use 5 nbt/day/side, then use the third 5 as ‘flex’. The flex would give compensation based on the total T1-3 liquidity reported by the network or ALIX such that if the network itself is out of balance the pool’s balance point will shift to bring the pool more in line with the network. This method would still seek a global 50/50 split, but would allow the local compensation to adjust to correlate more to the network balance point. I was thinking of this as a way to aid the switching problem.

If you plan on compensating with a fixed cost the weak side more than the heavy side, you’ll find that the switching problem becomes a huge burden, and honest LPs will get discouraged by those trying to game the system.

To answer your questions and ideas more directly:
Basically, if we decide we want globally 75% buy and 25% sell, we need to do it for everything, T1-6. Theoretically, anyway. In practicality, you could probably get away with some deviation between exchanges and situations, especially if you were aware of what causes such asymmetry. However, I would suggest that we should really only deal with asymmetric fixed-cost buy and sell sides either globally (state that Nu holds three times as much buy as we do sell) or in an automated fashion like flex costs (which actually do the opposite of what you want because they leverage individual pools to realign the network instead of the other way around).

Thank you for your detailed reply.
I don’t have anything against a 50/50 split.
I just think as long as a target of, say 35,000 USD value, per side is available, I wouldn’t care as much about a deviation from a 50/50 split as I would if one target would be met while the other wouldn’t.

If the targets for buy and sell are 35,000 USD value and somebody decides to put additional 35,000 USD value of BTC on buy side not to provide liquidity, but to exchange them to NBT, what should Nu do?
The sides are now 2:1.

Basically there are three options.

  1. don’t adjust the compensation for the side.
    LPs will then trade some of their BTC with NuLagoon Tube or a T3 custodian (if we finally have them) to NBT and put them to sell side or they just pull the orders.

  2. reduce the compensation for the side while leaving the compensation for the other side the same
    basically the same as in 1), but with a bigger effect and cost savings for Nu

  3. reduce the compensation for the side and move it to the compensation for the other side
    result the same as 2), another amplification of the effect

I think the scenario is a bit extreme, but is what liquidity provision is about: people want to trade NBT for BTC or vice versa.
There are/will be orders on the books that are not from LPs.

Ok, thought experiment time:

  • Exchange A gives 15 NBT/day buy and 5 NBT/day sell.

  • Exchange B gives 10 NBT/day buy and 10 NBT/day sell.

  • Stable state has ‘A’ with 3,000 buy (Person C) and 1,000 sell (Person D) and ‘B’ with 2,000 buy (Person E) and 2,000 sell (Person F). Stable reward is therefore 0.5%

  • 2,000 NBT are sold on Exchange A to Person C, who immediately puts them up on sell side. Person D sees the opportunity and sells the rest to ‘C’, who is now completely on sell side and getting 1/3 of their reward, while Person D gets 3x reward.

  • For simplicity’s sake, I’m now going to say that Person C goes to Tier 4 with the 2,000 NBT and gets back their BTC. However, in the meantime Person E moves 800 NBT to ‘A’ so that ‘D’ and ‘E’ are both getting 0.833%.

  • Clearly ‘C’ just fills in the pools and the system returns to steady state.

Shoot, that didn’t work, it went just fine. Let’s try it without Tier 4 or Tier 3 or anything.

  • The switching problem becomes obvious because now the equilibrium reward rate for buy side is 0.833% while sell is 0.3%. This is the origin of the ‘switching problem’ where every custodian has an economic incentive to sell.

  • As a side note, this is where flex costs come in, adjusting the rewards to try to match the 5:3 sell:buy ratio of the total network.

  • So does the asymmetry of the rewards between exchanges mess with the ability of the network to reach steady state, or is it just the asymmetry between the network buy and sell sides? It appears to be just a problem with network asymmetry, assuming ease of exchange between ‘A’ and ‘B’.

So basically, this is me being super long winded and saying ‘I’m wrong’:
We can totally have individually asymmetric pools with say 75:25 buy:sell fixed cost while the rest of the network is 50:50 cost. The issues arise when the combined network liquidity goes far out of equilibrium with the combined total cost ratio for buy:sell side across all operations. This can be relieved to some degree using the flex-cost idea, with or without individually asymmetric pools.

If you’re talking about amplifying these numbers, that ‘goes far out of equilibrium’ can become a much more dangerous thing.

1 Like

I’m glad the scenarios played out in favour of having this feature, thank you both for taking the time to think about it. I will admit to not having crunched any numbers or run any thought experiments either way. I’ve been working off an assumption that the more tools we have at our disposal, the better set we are to react to anything the future holds. We don’t necessarily need to use all the features all the time but I would rather have it available and not need it than need it and not have it.

1 Like

I like that mind-set!

1 Like

A fixed cost pool won’t be effective if the profit opportunity is not broadcasted quickly and widely and people who get the message won’t be able to quickly jump in – it will just reward a few who pay attention w/o contributing much liquidity.

Tools like ALiX can help here.
I can imagine to have future ALiX functions like registering a feed that informs via email about such occasions.

And it might finally be a good reason for LPs to have T2 liquidity that sits ready on the exchange and waits for the compensation rate to cross a threshold (due to low volume on T1) before some or all of it gets moved on the book.
This thinking is for those who care more about the volatility risk than the exchange default risk.

With B&C Exchange exchange default risk will play little to no role (if OP_CHECKLOCKTIMEVERIFY is utilized to withdraw funds after a certain time in case reputed signers are unavailable for whatever reason it’s close to 0).
And the design of B&C Exchange will blur the boundaries between T2 and T3.
If OP_CHECKLOCKTIMEVERIFY moves funds to a singlesig address of the owner after time x has passed, there’s little reason for LPs to keep funds on T3 (off BCE, on native blockchain singlesig address) and not on T2 (on BCE, on native blockchain multisig “BCE” address).

This thinking requires settings in the future ALP client to configure an amount of funds being put on orders depending on a compensation rate that can be earned with it.
I fear that could lead to oscillating effects, if ALP clients permanently place or remove orders in feedback to the previous situation. Using averages instead of shapshot values should help here, especially if different time frames for the averages are used (or even random time frames).
ALP clients could use data feeds, again provided by ALiX like systems, to determine the average compensation over the last x minutes.

Example (with static time frames for averages; I haven’t made extensive simulations - this is only an example to show the idea):
total funds available: 1,000 NBT

  • put 250 NBT on T1 if average compensation over the last 30 minutes is above 0.0000005 percent per minute (2.2% per month)
  • put another 250 NBT on T1 if average compensation over the last 15 minutes is above 0.000001 percent per minute (4.3% per month)
  • put another 250 NBT on T1 if average compensation over the last 10 minutes is above 0.0000015 percent per minute (6.5% per month)
  • put another 250 NBT on T1 if average compensation over the last 5 minutes is above 0.000002 percent per minute (8.6% per month)
  • cancel 250 NBT order if average compensation over the last 5 minutes is below 0.0000005 percent per minute (2.2% per month)