VNP-21 - Enable Referral Program

VNP-21 - Enable Referral Program

Hey everyone,

Now that the volume discount program has been passed, I thought I’d kick off a discussion about implementing a referral program.

It looks like there are 3 key aspects to play with:

  1. A discount on trading fees for a user you’ve referred
  2. A rebate you receive from the trading fees paid by a user you’ve referred
  3. A multiplier for the above based on the amount of VEGA tokens you’ve staked

There are some additional parameters which I propose to set:

  • End of program timestamp = 1 year. This is how long the referral program will last. I propose to set this to 1 year as we can always edit the referral program during this period.
  • Window length = 30 (30 days). The number of epochs over which to evaluate a referral set’s running notional taker volume. 30 days is pretty standard and will end up rewarding a referral set that is consistent over longer periods of time, which is more valuable for Vega.
  • Minimum Epochs = 1. The required number of epochs a user must be in a referral set to begin earning its benefits. I don’t see why you’d want this to be long as you want to onboard as many users as possible and capture the small network effect of a referral set. As you can’t set it to 0, I’ve set it to 1.

Now for the fun stuff!

Referral Trading Discount & Referrer Rebate:

Firstly, I think it’s important to have a strong base tier to encourage users to try and refer as many people as possible.

Secondly, given we have a volume discount program we should just have a single flat fee that doesn’t scale with notional trading volume. It will become a nightmare to manage fees at both levels (+ the staked VEGA multiplier) + we don’t want fees to end up too low. If people are complaining about fees, we can adjust this with the volume discount program, because I think it’s pretty fair to assume that most traders will end up joining a referral set to reap instant benefits.

So essentially, we can just focus on scaling the referral rebate factor:

The proposed referral scheme is pretty aggressive in terms of achieving high referral rebates. This is due to Vega’s infancy and current trading volumes. It should provide enough motivation for users to begin their outreach and increase awareness of Vega

Similarly, I propose the following Vega Staking Tiers:

Full Proposal JSON:

{
    "rationale": {
      "title": "VNP-21 - Enable Referral Program",
      "description": "This proposal requests to enable a referral program on Vega to promote awareness and trading activity."
    },
    "terms": {
        "updateReferralProgram": {
          "changes": {
            "end_of_program_timestamp": TBD - (1 Year),

            "window_length": 30,
            "benefitTiers": [
              {
                "minimumRunningNotionalTakerVolume": "100000",
                "minimumEpochs": "1",
                "referralRewardFactor": "0.1",
                "referralDiscountFactor": "0.1"
              },
              {
                "minimumRunningNotionalTakerVolume": "500000",
                "minimumEpochs": "1",
                "referralRewardFactor": "0.15",
                "referralDiscountFactor": "0.1"
              },
              {
              "minimumRunningNotionalTakerVolume": "2500000",
              "minimumEpochs": "1",
              "referralRewardFactor": "0.2",
              "referralDiscountFactor": "0.1"
              },
              {
                "minimumRunningNotionalTakerVolume": "5000000",
                "minimumEpochs": "1",
                "referralRewardFactor": "0.25",
                "referralDiscountFactor": "0.1"
              },
              {
                "minimumRunningNotionalTakerVolume": "10000000",
                "minimumEpochs": "1",
                "referralRewardFactor": "0.30",
                "referralDiscountFactor": "0.1"
              },
              {
                "minimumRunningNotionalTakerVolume": "20000000",
                "minimumEpochs": "1",
                "referralRewardFactor": "0.35",
                "referralDiscountFactor": "0.1"
              }
            ],
            "stakingTiers": [
              {
                "minimumStakedTokens": "100",
                "referralRewardMultiplier": "1.025"
              },
              {
                "minimumStakedTokens": "1000",
                "referralRewardMultiplier": "1.050"
              },
              {
                "minimumStakedTokens": "5000",
                "referralRewardMultiplier": "1.1"
              },
              {
                "minimumStakedTokens": "50000",
                "referralRewardMultiplier": "1.2"
              },
              {
                "minimumStakedTokens": "250000",
                "referralRewardMultiplier": "1.25"
              },
              {
                "minimumStakedTokens": "500000",
                "referralRewardMultiplier": "1.3"
              }
            ]
          }
      },
      "closingTimestamp": 0,
      "enactmentTimestamp": 0
  }
  }
}
3 Likes

Hi @Jubi,

Thanks for making a proposal. I don’t have any comments on the specifics except to say that it is important to seek feedback from validators and LPs given that any programme like this will cut fee revenue that is distributed by the protocol mechanics and the network needs the continued involvement of these particpants.

One thing I would like to raise is that it’s very important to include the justification in the “description” field rather than just a short description. We should aim to ensure people don’t have to rely on this forum to find out why a proposal has been made or what the intended outcome is, because the content on the forum can be changed or the website can even go down, whereas the data that goes on chain is immutable. Additionally, many token holders may not check the forums before voting, so they will only see what is in the proposal itself. It would be a good practice to also include a link back to the forum thread.

You don’t need to repeat things that are included in the data of the proposal, but more than a single line is impotant, and it should cover the key justification points — enough for someone to decide how to vote without coming to the website.

Barney

3 Likes

Hi @Jubi ,

Looks like a great start, excited to see the first referral program proposal!

One of the challenges with an on-chain referral program is disincentivizing traders from creating their own referrer and referee key and “self-referring”. This could be a negative experience for “true” referrers trying to grow the network as any trader they refer may just leave the referrers set and “self-refer”. With the current proposal, for any trader who can generate a monthly trading volume greater than 100K, this would be the logical thing to do. Tiered referral trading discounts could help avoid this as there is an incentive for a referred trader to stay in a larger referral set eligible for higher referral tiers.

Something else to consider when using tiered discounts however is referees abusing the pseudonymous nature of the protocol to move to the current “best” referral set by creating a new key. Again a negative experience for the original “true” referrer who would no longer receive the commission. Configuring the minimumEpochs field could be useful here as one could set it so if a referee moves to a new referral set they wouldn’t instantly receive the highest referral discount.

Charlie

2 Likes

Thanks for starting the discussion on the Referral programme, I think it will be beneficial to get this running sooner rather than later.

My initial thought is that the flat 10% discount is fine, I think your reasoning is sound there, I also think the values you have chosen for the multipliers for staking VEGA tokens are also fine. The only two things I would consider changing in this proposal are the rebates and the taker volume required for each tier. I think the rebates are too aggressive and the tiers might be too low.

Having aggressive rebates along with easily accessible tiers allows someone to undermine the volume discount programme, or abuse both at the same time to achieve large discounts. For example: To access a 50% discount with the volume programme you need to trade >$625,000,000 per month. However, a discount of slightly less than 50% can be achieved by self-referring using different keys and then trading >$10,000,000 per month. This would give a 20% discount as per the volume discount programme, then a 10% discount on the remainder and then a 30% kickback on the fully discounted value, giving the trader a 49.6% cost reduction on their trading for 62 times less volume than if they were to just use the discount programme alone.

I think we have to assume that people will abuse these mechanics and set the taker volume tiers accordingly such that when someone does abuse this they are still required to generate a large amount of volume to achieve the cost reductions that they want.

Another reason to set more conservative values is that the fee revenue underpins the security of the network by paying token stakers and validators. Yield on token staking is already very low and validator revenue is also low, I think we want these metrics to be higher to a). attract more token holders to give Vega more of a network effect and develop a more decentralized governance set, and b). attract high quality validators with good security practices who are going to run appropriate hardware and contribute to the ecosystem. We also want validators to be paid appropriately so that they don’t participate in MEV. If they have more to lose by being kicked off the chain than they have to gain by participating in MEV then they will be much less likely to do it.

As such, I would propose the following modifications:

Tiers:

  • Frog Tier: >= $100k
  • Tier 1: >= $1M
  • Tier 2: >= $5M
  • Tier 3: >= $25M
  • Tier 4: >= $75M
  • Chad Tier: >= $150M

Rebates:

  • Frog Tier: 5%
  • Tier 1: 7%
  • Tier 2: 9%
  • Tier 3: 11%
  • Tier 4: 13%
  • Chad Tier: 15%

Regards

Ed

1 Like

Thanks @Ed-Commodum, as always appreciate your feedback!

My rationale for having an aggressive rebate is to kick start the referral program and make it worth a user’s while to begin talking about Vega. I don’t intend to run these params indefinitely, maybe for 3-5 months. But I do acknowledge the potential for abuse given the current set-up.

I agree with your tiers, but have to push back a little bit on the rebates. The rebates you proposed are not really competitive with other venues.

E.g.,
Mux - rebates range from 2.5% - 35%
dYdX V3 - 20% - 40% (albeit you need to onboard with them)
Bitmex - up to 45%
Bybit - up to 30%
GMX - 5% to 20%

I understand that for many of these protocols, they aren’t having to secure their own network, but I don’t think users think about that when they are shilling ref links. They only see the number they can make.

How about this (which includes your proposed taker volume tiers):

If we find these values to be too aggressive and notice unwanted behaviour we can readjust.

1 Like

Yes I understand your reasoning, I think the newly proposed values are a good compromise.

With respect to the potential for abuse of the referral programme, maybe the best solution is to propose that the Vega team modify the way fees are calculated, instead of multiplicatively applying all of the discounts maybe it would be a relatively simple change just to do a max(volume_discount, referral_discount) instead and then apply the rebate afterwards. In this scenario it means we could also increase the referral trading discounts for the higher tiers because they would not be applied to the already discounted values from the volume discount.

I would like to hear from the Vega team on whether this would be a straightforward change to Core or not.

Lovali supports the proposal: as a community validator we understand that a referral program can certainly be beneficial for the project and increase the global trading volume. Even if we might have a financial impact, it’s probably a good investment in the long run.

I don’t have the answer, but I think we might try and understand if the proposal could make liquidity provision less interesting on Vega compared to other platforms: with the current trading volume liquidity is crucial to avoid volatility. Probably the hummingbot integration will give more visibility to our favorite platform (and more LPs), but I’d like to make sure LPs are favorable and will continue to support the Vega.

Ed proposal looks promising to try and reduce the risk of abuse and I do agree Vega team should take it into consideration.

The JSON (and the proposal) for the referral programme did not take into account the fact that VEGA tokens have 18 decimals and a result, the levels for the tiers in the proposal do not match the discussion here:

1 Like

Hi Barney,

I think this is an easy mistake to make because it looks like the examples in the spec and the docs do not use any decimal values:

It also mentions no where in the spec that the value for minStakedVegaTokens needs to be scaled to the decimals of the asset.

1 Like

I have submitted an updated proposal on-chain:

Full Proposal JSON:

{
    "rationale": {
      "title": "VNP-21 - Enable Referral Program (Amended staking tiers)",
      "description": "This proposal requests to enable a referral program on Vega to promote awareness and trading activity. Right now, Vega has lacked in terms of active users and trading volume, therefore, it's super important for the community to begin showing the rest of the world what Vega is capable of! The proposed referral program aims to balance making it worthwhile for users to promote their referral links while also being conscious of its impact on trading fees for LPs and Validators. There are 6 tiers for both VEGA staking multipliers and referral trading discounts/rebates which can be found in the forum discussion [here](https://community.vega.xyz/t/vnp-21-enable-referral-program/4394)"
    },
    "terms": {
        "updateReferralProgram": {
          "changes": {
            "end_of_program_timestamp": 1735606800,
            "window_length": 30,
            "benefitTiers": [
              {
                "minimumRunningNotionalTakerVolume": "100000",
                "minimumEpochs": "1",
                "referralRewardFactor": "0.05",
                "referralDiscountFactor": "0.1"
              },
              {
                "minimumRunningNotionalTakerVolume": "1000000",
                "minimumEpochs": "1",
                "referralRewardFactor": "0.075",
                "referralDiscountFactor": "0.1"
              },
              {
              "minimumRunningNotionalTakerVolume": "5000000",
              "minimumEpochs": "1",
              "referralRewardFactor": "0.1",
              "referralDiscountFactor": "0.1"
              },
              {
                "minimumRunningNotionalTakerVolume": "25000000",
                "minimumEpochs": "1",
                "referralRewardFactor": "0.125",
                "referralDiscountFactor": "0.1"
              },
              {
                "minimumRunningNotionalTakerVolume": "75000000",
                "minimumEpochs": "1",
                "referralRewardFactor": "0.15",
                "referralDiscountFactor": "0.1"
              },
              {
                "minimumRunningNotionalTakerVolume": "150000000",
                "minimumEpochs": "1",
                "referralRewardFactor": "0.175",
                "referralDiscountFactor": "0.1"
              }
            ],
            "stakingTiers": [
              {
                "minimumStakedTokens": "100000000000000000000",
                "referralRewardMultiplier": "1.025"
              },
              {
                "minimumStakedTokens": "1000000000000000000000",
                "referralRewardMultiplier": "1.050"
              },
              {
                "minimumStakedTokens": "5000000000000000000000",
                "referralRewardMultiplier": "1.1"
              },
              {
                "minimumStakedTokens": "50000000000000000000000",
                "referralRewardMultiplier": "1.2"
              },
              {
                "minimumStakedTokens": "250000000000000000000000",
                "referralRewardMultiplier": "1.25"
              },
              {
                "minimumStakedTokens": "500000000000000000000000",
                "referralRewardMultiplier": "1.3"
              }
            ]
          }
      },
      "closingTimestamp": 1702209600,
      "enactmentTimestamp": 1702213200
      }
    }
1 Like