From 27f14862fadb4e48146032b27164619adb01ef19 Mon Sep 17 00:00:00 2001 From: candida-d <62548908+candida-d@users.noreply.github.com> Date: Thu, 15 Aug 2024 15:30:13 +0100 Subject: [PATCH 01/10] fees and rebate --- .../trading-on-vega/discounts-rewards.md | 5 + docs/concepts/trading-on-vega/fees.md | 20 +- docs/intro/fees.md | 2 +- .../maker-volume-rebate-program-proposal.md | 207 ++++++++++++++++++ .../volume-discount-program-proposal.md | 32 ++- 5 files changed, 252 insertions(+), 14 deletions(-) create mode 100644 docs/tutorials/proposals/maker-volume-rebate-program-proposal.md diff --git a/docs/concepts/trading-on-vega/discounts-rewards.md b/docs/concepts/trading-on-vega/discounts-rewards.md index 3b78595f3..3dcabde81 100644 --- a/docs/concepts/trading-on-vega/discounts-rewards.md +++ b/docs/concepts/trading-on-vega/discounts-rewards.md @@ -65,6 +65,11 @@ All of the details for the volume discount program are proposed and accepted thr * [Spec: Technical design of the volume discount program ↗](https://github.com/vegaprotocol/specs/blob/master/protocol/0084-VDPR-volume_discount_program.md). ::: +## Rebate for high-volume market makers +Market makers who are involved in a significant fraction of all trading can receive a rebate on their trading fees from trades in which they're involved. + +This program must be set up using a governance proposal. + ## Trading rewards Market participants can also receive rewards for their trading activity, liquidity provision, and for proposing actively traded markets. diff --git a/docs/concepts/trading-on-vega/fees.md b/docs/concepts/trading-on-vega/fees.md index cc9c52997..b39702a7e 100644 --- a/docs/concepts/trading-on-vega/fees.md +++ b/docs/concepts/trading-on-vega/fees.md @@ -35,7 +35,7 @@ The aggressor *buying* the base asset for the quote asset pays more in their tra ### Fee distribution and breakdown Fees are calculated when a trade is filled, and paid in the market's settlement currency. The fees due are taken from the collateral in the trader's general account. -The fee is divided between the maker for the trade, the infrastructure providers, and the liquidity provider(s) for each market. +The fee is divided between the maker for the trade, the infrastructure providers, the liquidity provider(s) for each market, and the network treasury. ### Maker fee The maker portion of the fee is paid by the aggressive party in a trade (the taker), and transferred to the non-aggressive, or passive party in the trade (the maker, as opposed to the taker). This is done as soon as the trade settles. @@ -60,19 +60,29 @@ The fees paid are transferred to a liquidity fee account, and distributed to eac [How the liquidity fee is set](../liquidity/rewards-penalties.md#determining-the-liquidity-fee-percentage) ::: +### Network treasury fee +The network treasury fee is collected from takers and transferred to the [network treasury](../assets/accounts.md#network-treasury-accounts). + +The amount charged for this fee is set by a network parameter. + +### Buyback fee +The buyback fee is collected from takers and is used to buy VEGA tokens on a spot market via regular auctions. If there is no relevant spot market, and the fee is set to a value higher than 0, the accrued fee payments are transferred to the [network treasury](../assets/accounts.md#network-treasury-accounts). + +The amount charged for this fee is set by a network parameter. + ### Fee calculations At a high level, the trading fee that someone pays is calculated using the following formulas: -* Total fee = (infrastructure fee factor + maker fee factor + liquidity fee factor) x trade value for fee purposes +* Total fee = (infrastructure fee factor + maker fee factor + liquidity fee factor + buyback fee + network treasury fee) x trade value for fee purposes * Trade value for fee purposes = notional value of the trade = size of trade x price of trade #### Fee calculation example * Trade value for fee purposes: If you were to place an order for 100 at USDC50, the trade value for fee purposes is: *100 x USDC50 = USDC5000*. -* Fee factor: For this example, each of the 3 fees is *0.001*, meaning total fee factor is *0.003*. -* Trade value and fee factor: *USDC5000 x 0.003 = USDC15* +* Fee factor: For this example, each of the 5 fees is *0.001*, meaning total fee factor is *0.005*. +* Trade value and fee factor: *USDC5000 x 0.005 = USDC25* * The fee is the same regardless of the number of transactions the order needs to be completely filled, as long as they trade at the same price. -Two of the three fee factors are set through network parameters: , . The liquidity fee is set by the liquidity providers on the market. +Four of the five fee factors are set through network parameters. The liquidity fee is set by the liquidity providers on the market. ## Transfer fees You may need to pay a fee to transfer assets, whether from one Vega key to another, or from a Vega key to a reward pool to fund trading rewards. The fee amount is taken when the transfer is executed, on top of the total amount to be transferred. It's charged in the same asset that is being transferred. diff --git a/docs/intro/fees.md b/docs/intro/fees.md index 4b6a63db5..a36b38aa3 100644 --- a/docs/intro/fees.md +++ b/docs/intro/fees.md @@ -17,7 +17,7 @@ As of April 2024, the current fees for taker trades are: See the most up-to-date fees on [Console ↗](https://console.vega.xyz/#/fees). -The meaning of each is covered on the [fees](../concepts/trading-on-vega/fees.md) page. *Infrastructure* and *maker* fees are set by governance at a network level, and the *liquidity* fee is set independently for each market. The liquidity fee may be set dynamically or set as a constant per market. +The meaning of each is covered on the [fees](../concepts/trading-on-vega/fees.md) page. *Infrastructure*, *maker*, *network treasury*, and *buyback* fees are set by governance at a network level, and the *liquidity* fee is set independently for each market. The liquidity fee may be set dynamically or set as a constant per market. ## Fee discounts based on trading volume Traders can receive discounts on their fees when there's an active volume discount program on the network. Read more detail in the [volume discounts section](./referral-program.md#volume-discounts). diff --git a/docs/tutorials/proposals/maker-volume-rebate-program-proposal.md b/docs/tutorials/proposals/maker-volume-rebate-program-proposal.md new file mode 100644 index 000000000..9c35a932f --- /dev/null +++ b/docs/tutorials/proposals/maker-volume-rebate-program-proposal.md @@ -0,0 +1,207 @@ +--- +sidebar_position: 11 +title: Enable or replace maker rebate program +hide_title: false +vega_network: TESTNET +keywords: +- proposal +- governance +--- + +import NetworkParameter from '@site/src/components/NetworkParameter'; +import JSONInstructions from './_json-instructions.md'; +import TerminalInstructions from './_terminal-instructions.md'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import Batch from './_batch-sample.md'; + +When a high-volume maker rebate program is enabled, market makers can receive a rebate of a portion of their paid fees. The higher their maker volume over the program's window length, the greater the rebate that makers can receive. + +The program needs to be enabled by governance. Once it's enabled, both the requirements and the benefits can also be replaced with a new program. + +This page describes what you need to propose enabling or replacing the program, and provides example proposal templates that you will need to edit before sharing and submitting. + +## Requirements [WIP] + +You will need: +* A connected [Vega wallet](../../tools/vega-wallet/index.md), with your wallet name and public key to hand +* A minimum of whichever is larger, associated with that public key: () or () +* Familiarity with [governance on Vega](../../concepts/governance/index.md) + +## Anatomy of a maker rebate program proposal +The fields below all need to be defined to enable the program or replace an existing one. + +If you are suggesting a replacement program, you'll need to include all the fields, even if you don't want to change their values. Just use the existing values from the current maker rebate program program. + +**End of program timestamp**: Date and time after which, when the current epoch ends, the program will end and discounts will be disabled. + +**Window length**: Number of epochs over which to evaluate traders' volume of taker trades. + +To end an existing program early, set your proposal up with the exact same parameters. Set the *end of program timestamp* to be the same as the proposal's *enactment* timestamp. + +#### Benefit tier fields [WIP] + +| Benefit tier field | Description | Accepted values | +| ----------- | ----------- | ----------- | +| `benefitTiers` | List of values defining the discount factors for the program | Holds the details of each tier of discounts, listed below. Maximum of tiers | + +... + + +| `lpVolumeDiscountFactor` | Proportion of each trader's liquidity fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | +| `infrastructureVolumeDiscountFactor` | Proportion of each trader's infrastructure fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | + + +- `minimum_party_maker_volume_fraction`: the required `party_maker_volume_fraction` for a party to access this tier + - `additional_maker_rebate`: the additional rebate factor (in percentage of `trade_value_for_fee_purposes`) a party at this tier will receive when they are the maker side of a trade + +## Submitting proposals in a batch + + + +## Templates and submitting [WIP] + +Below you will find: +* JSON example that can be submitted with the [governance dApp ↗](https://governance.fairground.wtf/proposals/propose/raw) +* Command line examples for different operating systems + + + + + +```json +{ + "proposalSubmission": { + "rationale": { + "title": "Volume discount proposal title", + "description": "This enacts or replaces the volume discount program" + }, + "terms": { + "updateVolumeDiscountProgram": { + "changes": { + "end_of_program_timestamp": 1234567890, + + "window_length": 11, + "benefitTiers": [ + { + "minimumRunningNotionalTakerVolume": "10000", + "makerVolumeDiscountFactor": "0.002", + "lpVolumeDiscountFactor": "0.002", + "infrastructureVolumeDiscountFactor": "0.002" + + }, + { + "minimumRunningNotionalTakerVolume": "10198", + "makerVolumeDiscountFactor": "0.098", + "lpVolumeDiscountFactor": "0.098", + "infrastructureVolumeDiscountFactor": "0.098" + } + ], + } + }, + "closingTimestamp": 1111111111, + "enactmentTimestamp": 1111111155 + } + } +} +``` + + + + + +``` +./vegawallet transaction send --wallet YOUR_WALLETNAME --pubkey YOUR_PUBLIC_KEY --network NETWORK_NAME +'{"proposalSubmission": { + "rationale": { + "title": "Volume discount proposal title", + "description": "This enacts or replaces the volume discount program" + }, + "terms": { + "updateVolumeDiscountProgram": { + "changes": { + "end_of_program_timestamp": 1234567890, + + "window_length": 3, + "benefitTiers": [ + { + "minimumRunningNotionalTakerVolume": "10020", + "makerVolumeDiscountFactor": "0.001", + "infrastructureVolumeDiscountFactor": "0.001", + "lpVolumeDiscountFactor": "0.001" + }, + { + "minimumRunningNotionalTakerVolume": "10198", + "makerVolumeDiscountFactor": "0.098", + "infrastructureVolumeDiscountFactor": "0.098", + "lpVolumeDiscountFactor": "0.098" } + ], + } + }, + "closingTimestamp": 1111111111, + "enactmentTimestamp": 1111111155 + } + } +}' +``` + + + + + +``` +vegawallet.exe transaction send --wallet YOUR_WALLETNAME --pubkey YOUR_PUBLIC_KEY --network NETWORK_NAME ^ +"{^ +\"proposalSubmission\": {^ + \"rationale\": {^ + \"title\": \"Volume discount program proposal title\",^ + \"description\": \"This explains why I want to enact or replace the volume discount program\"^ + },^ + \"terms\": {^ + : { + \"updateVolumeDiscountProgram\":^ { + \"changes\": {^ + \"end_of_program_timestamp\": \"1234567890\",:^ + + \"window_length\": \"3\", + \"benefitTiers\": [ + { + \"minimumRunningNotionalTakerVolume\": \"10100\",^ + \"makerVolumeDiscountFactor\": \"0.001\",^ + \"infrastructureVolumeDiscountFactor\": \"0.001\",^ + \"lpVolumeDiscountFactor\": \"0.001\"^ + + }, + { + \"minimumRunningNotionalTakerVolume\": \"11000\",^ + \"makerVolumeDiscountFactor\": \"0.098\",^ + \"infrastructureVolumeDiscountFactor\": \"0.098\",^ + \"lpVolumeDiscountFactor\": \"0.098\"^ + } + ], + } + }, + \"closingTimestamp\": \"1111111111\",^ + \"enactmentTimestamp\": \"1111111155\" + }^ + }^ +}'^ +``` + + + +## Voting +All proposals are voted on by the community. + + + +To vote, community members need, at a minimum, the larger of or associated to their Vega key. + +Your proposal will need [participation](../../concepts/governance/lifecycle.md#how-the-outcome-is-calculated) of and a majority of , so having community support is essential. + +Proposers who invite feedback, engage with comments, and make revisions to meet the needs of the community are more likely to be successful. + +## Enactment +If successful, the program changes will go live in the epoch following the time you specify in the `enactmentTimestamp` field. \ No newline at end of file diff --git a/docs/tutorials/proposals/volume-discount-program-proposal.md b/docs/tutorials/proposals/volume-discount-program-proposal.md index 95560e1de..6805c6fa8 100644 --- a/docs/tutorials/proposals/volume-discount-program-proposal.md +++ b/docs/tutorials/proposals/volume-discount-program-proposal.md @@ -45,7 +45,10 @@ To end an existing program early, set your proposal up with the exact same param | ----------- | ----------- | ----------- | | `benefitTiers` | List of values defining the discount factors for the program | Holds the details of each tier of discounts, listed below. Maximum of tiers | | `minimumRunningNotionalTakerVolume` | The notional volume of aggressive trades that a trader is required to have across the aggregation window, to access the discount in this tier | Integer greater than or equal to 1 | -| `volumeDiscountFactor` | Proportion of each trader's fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | +| `makerVolumeDiscountFactor` | Proportion of each trader's maker fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | +| `lpVolumeDiscountFactor` | Proportion of each trader's liquidity fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | +| `infrastructureVolumeDiscountFactor` | Proportion of each trader's infrastructure fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | + ## Submitting proposals in a batch @@ -77,11 +80,16 @@ Below you will find: "benefitTiers": [ { "minimumRunningNotionalTakerVolume": "10000", - "volumeDiscountFactor": "0.002" + "makerVolumeDiscountFactor": "0.002", + "lpVolumeDiscountFactor": "0.002", + "infrastructureVolumeDiscountFactor": "0.002" + }, { "minimumRunningNotionalTakerVolume": "10198", - "volumeDiscountFactor": "0.098" + "makerVolumeDiscountFactor": "0.098", + "lpVolumeDiscountFactor": "0.098", + "infrastructureVolumeDiscountFactor": "0.098" } ], } @@ -113,12 +121,15 @@ Below you will find: "benefitTiers": [ { "minimumRunningNotionalTakerVolume": "10020", - "volumeDiscountFactor": "0.001" + "makerVolumeDiscountFactor": "0.001", + "infrastructureVolumeDiscountFactor": "0.001", + "lpVolumeDiscountFactor": "0.001" }, { "minimumRunningNotionalTakerVolume": "10198", - "volumeDiscountFactor": "0.098" - } + "makerVolumeDiscountFactor": "0.098", + "infrastructureVolumeDiscountFactor": "0.098", + "lpVolumeDiscountFactor": "0.098" } ], } }, @@ -151,11 +162,16 @@ vegawallet.exe transaction send --wallet YOUR_WALLETNAME --pubkey YOUR_PUBLIC_KE \"benefitTiers\": [ { \"minimumRunningNotionalTakerVolume\": \"10100\",^ - \"volumeDiscountFactor\": \"0.001\"^ + \"makerVolumeDiscountFactor\": \"0.001\",^ + \"infrastructureVolumeDiscountFactor\": \"0.001\",^ + \"lpVolumeDiscountFactor\": \"0.001\"^ + }, { \"minimumRunningNotionalTakerVolume\": \"11000\",^ - \"volumeDiscountFactor\": \"0.098\"^ + \"makerVolumeDiscountFactor\": \"0.098\",^ + \"infrastructureVolumeDiscountFactor\": \"0.098\",^ + \"lpVolumeDiscountFactor\": \"0.098\"^ } ], } From ba517343dd908dcef3ef172872d1981a04cac22f Mon Sep 17 00:00:00 2001 From: candida-d <62548908+candida-d@users.noreply.github.com> Date: Mon, 19 Aug 2024 17:12:21 +0100 Subject: [PATCH 02/10] maker rebate program --- docs/concepts/trading-on-vega/orders.md | 2 +- ...osal.md => maker-volume-rebate-program.md} | 70 +++++++------------ 2 files changed, 26 insertions(+), 46 deletions(-) rename docs/tutorials/proposals/{maker-volume-rebate-program-proposal.md => maker-volume-rebate-program.md} (68%) diff --git a/docs/concepts/trading-on-vega/orders.md b/docs/concepts/trading-on-vega/orders.md index 03ede8fbe..a39dd0444 100644 --- a/docs/concepts/trading-on-vega/orders.md +++ b/docs/concepts/trading-on-vega/orders.md @@ -149,7 +149,7 @@ Your stop order can be set to have a [time in force](#times-in-force), and it ca If the trigger is breached, an order is submitted with the parameters that you provided, and with your existing position's size if it's linked to the position. Your position isn't affected unless the order is filled. -A stop order can be set with a fixed size or have its size dictated by your open position. A stop order must reduce your position, and will be rejected otherwise. +A stop order can be set with a fixed size or have its size dictated by your open position. Once the last traded price "rises above" or "falls below" the given stop price/percentage move, depending on your instruction, your order is executed. diff --git a/docs/tutorials/proposals/maker-volume-rebate-program-proposal.md b/docs/tutorials/proposals/maker-volume-rebate-program.md similarity index 68% rename from docs/tutorials/proposals/maker-volume-rebate-program-proposal.md rename to docs/tutorials/proposals/maker-volume-rebate-program.md index 9c35a932f..ec69b9771 100644 --- a/docs/tutorials/proposals/maker-volume-rebate-program-proposal.md +++ b/docs/tutorials/proposals/maker-volume-rebate-program.md @@ -39,33 +39,25 @@ If you are suggesting a replacement program, you'll need to include all the fiel To end an existing program early, set your proposal up with the exact same parameters. Set the *end of program timestamp* to be the same as the proposal's *enactment* timestamp. -#### Benefit tier fields [WIP] +#### Benefit tier fields | Benefit tier field | Description | Accepted values | | ----------- | ----------- | ----------- | -| `benefitTiers` | List of values defining the discount factors for the program | Holds the details of each tier of discounts, listed below. Maximum of tiers | - -... - - -| `lpVolumeDiscountFactor` | Proportion of each trader's liquidity fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | -| `infrastructureVolumeDiscountFactor` | Proportion of each trader's infrastructure fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | - - -- `minimum_party_maker_volume_fraction`: the required `party_maker_volume_fraction` for a party to access this tier - - `additional_maker_rebate`: the additional rebate factor (in percentage of `trade_value_for_fee_purposes`) a party at this tier will receive when they are the maker side of a trade +| `benefitTiers` | List of values defining the discount factors for the program | Holds the details of each tier of rebates, listed below. Maximum of tiers | +| `minimumPartyMakerVolumeFraction` | The required maker volume a party needs to have to access this tier, as a fraction. | Greater than 0 and up to 1, inclusive | +| `additionalMakerRebate` | Additional fraction of fees a party will receive as a rebate when they are on the maker side of a trade. | Greater than 0 and up to 1, inclusive | ## Submitting proposals in a batch -## Templates and submitting [WIP] +## Templates and submitting Below you will find: * JSON example that can be submitted with the [governance dApp ↗](https://governance.fairground.wtf/proposals/propose/raw) * Command line examples for different operating systems - + @@ -73,28 +65,23 @@ Below you will find: { "proposalSubmission": { "rationale": { - "title": "Volume discount proposal title", - "description": "This enacts or replaces the volume discount program" + "title": "Maker volume rebate proposal title", + "description": "This enacts or replaces the maker volume rebate program" }, "terms": { - "updateVolumeDiscountProgram": { + "UpdateVolumeRebateProgram": { "changes": { - "end_of_program_timestamp": 1234567890, + "endOfProgramTimestamp": 1234567890, "window_length": 11, "benefitTiers": [ { - "minimumRunningNotionalTakerVolume": "10000", - "makerVolumeDiscountFactor": "0.002", - "lpVolumeDiscountFactor": "0.002", - "infrastructureVolumeDiscountFactor": "0.002" - + "minimumPartyMakerVolumeFraction": "10000", + "additionalMakerRebate": "0.002" }, { - "minimumRunningNotionalTakerVolume": "10198", - "makerVolumeDiscountFactor": "0.098", - "lpVolumeDiscountFactor": "0.098", - "infrastructureVolumeDiscountFactor": "0.098" + "minimumPartyMakerVolumeFraction": "10198", + "additionalMakerRebate": "0.098" } ], } @@ -118,23 +105,20 @@ Below you will find: "description": "This enacts or replaces the volume discount program" }, "terms": { - "updateVolumeDiscountProgram": { + "UpdateVolumeRebateProgram": { "changes": { "end_of_program_timestamp": 1234567890, "window_length": 3, "benefitTiers": [ { - "minimumRunningNotionalTakerVolume": "10020", - "makerVolumeDiscountFactor": "0.001", - "infrastructureVolumeDiscountFactor": "0.001", - "lpVolumeDiscountFactor": "0.001" + "minimumPartyMakerVolumeFraction": "10020", + "additionalMakerRebate": "0.001" }, { - "minimumRunningNotionalTakerVolume": "10198", - "makerVolumeDiscountFactor": "0.098", - "infrastructureVolumeDiscountFactor": "0.098", - "lpVolumeDiscountFactor": "0.098" } + "minimumPartyMakerVolumeFraction": "10198", + "additionalMakerRebate": "0.098" + } ], } }, @@ -159,24 +143,20 @@ vegawallet.exe transaction send --wallet YOUR_WALLETNAME --pubkey YOUR_PUBLIC_KE },^ \"terms\": {^ : { - \"updateVolumeDiscountProgram\":^ { + \"UpdateVolumeRebateProgram\":^ { \"changes\": {^ \"end_of_program_timestamp\": \"1234567890\",:^ \"window_length\": \"3\", \"benefitTiers\": [ { - \"minimumRunningNotionalTakerVolume\": \"10100\",^ - \"makerVolumeDiscountFactor\": \"0.001\",^ - \"infrastructureVolumeDiscountFactor\": \"0.001\",^ - \"lpVolumeDiscountFactor\": \"0.001\"^ + \"minimumPartyMakerVolumeFraction\": \"10100\",^ + \"additionalMakerRebate\": \"0.001\"^ }, { - \"minimumRunningNotionalTakerVolume\": \"11000\",^ - \"makerVolumeDiscountFactor\": \"0.098\",^ - \"infrastructureVolumeDiscountFactor\": \"0.098\",^ - \"lpVolumeDiscountFactor\": \"0.098\"^ + \"minimumPartyMakerVolumeFraction\": \"11000\",^ + \"additionalMakerRebate\": \"0.098\"^ } ], } From 75e1f778359ac46d6a598ab1a93c795c1b62bc92 Mon Sep 17 00:00:00 2001 From: candida-d <62548908+candida-d@users.noreply.github.com> Date: Mon, 19 Aug 2024 17:30:51 +0100 Subject: [PATCH 03/10] rebate program --- .../proposals/maker-volume-rebate-program.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/tutorials/proposals/maker-volume-rebate-program.md b/docs/tutorials/proposals/maker-volume-rebate-program.md index ec69b9771..ee2cd553a 100644 --- a/docs/tutorials/proposals/maker-volume-rebate-program.md +++ b/docs/tutorials/proposals/maker-volume-rebate-program.md @@ -21,11 +21,11 @@ The program needs to be enabled by governance. Once it's enabled, both the requi This page describes what you need to propose enabling or replacing the program, and provides example proposal templates that you will need to edit before sharing and submitting. -## Requirements [WIP] +## Requirements You will need: * A connected [Vega wallet](../../tools/vega-wallet/index.md), with your wallet name and public key to hand -* A minimum of whichever is larger, associated with that public key: () or () +* A minimum of whichever is larger, associated with that public key: () or () * Familiarity with [governance on Vega](../../concepts/governance/index.md) ## Anatomy of a maker rebate program proposal @@ -33,9 +33,9 @@ The fields below all need to be defined to enable the program or replace an exis If you are suggesting a replacement program, you'll need to include all the fields, even if you don't want to change their values. Just use the existing values from the current maker rebate program program. -**End of program timestamp**: Date and time after which, when the current epoch ends, the program will end and discounts will be disabled. +**End of program timestamp**: Date and time after which, when the current epoch ends, the program will end and rebates will be disabled. -**Window length**: Number of epochs over which to evaluate traders' volume of taker trades. +**Window length**: Number of epochs over which to evaluate LPs' volume of maker trades. To end an existing program early, set your proposal up with the exact same parameters. Set the *end of program timestamp* to be the same as the proposal's *enactment* timestamp. @@ -43,7 +43,7 @@ To end an existing program early, set your proposal up with the exact same param | Benefit tier field | Description | Accepted values | | ----------- | ----------- | ----------- | -| `benefitTiers` | List of values defining the discount factors for the program | Holds the details of each tier of rebates, listed below. Maximum of tiers | +| `benefitTiers` | List of values defining the rebate factors for the program | Holds the details of each tier of rebates, listed below. Maximum of tiers | | `minimumPartyMakerVolumeFraction` | The required maker volume a party needs to have to access this tier, as a fraction. | Greater than 0 and up to 1, inclusive | | `additionalMakerRebate` | Additional fraction of fees a party will receive as a rebate when they are on the maker side of a trade. | Greater than 0 and up to 1, inclusive | @@ -101,8 +101,8 @@ Below you will find: ./vegawallet transaction send --wallet YOUR_WALLETNAME --pubkey YOUR_PUBLIC_KEY --network NETWORK_NAME '{"proposalSubmission": { "rationale": { - "title": "Volume discount proposal title", - "description": "This enacts or replaces the volume discount program" + "title": "Maker volume rebate proposal title", + "description": "This enacts or replaces the volume rebate program" }, "terms": { "UpdateVolumeRebateProgram": { @@ -138,8 +138,8 @@ vegawallet.exe transaction send --wallet YOUR_WALLETNAME --pubkey YOUR_PUBLIC_KE "{^ \"proposalSubmission\": {^ \"rationale\": {^ - \"title\": \"Volume discount program proposal title\",^ - \"description\": \"This explains why I want to enact or replace the volume discount program\"^ + \"title\": \"Maker volume rebate program proposal title\",^ + \"description\": \"This explains why I want to enact or replace the volume rebate program\"^ },^ \"terms\": {^ : { @@ -177,9 +177,9 @@ All proposals are voted on by the community. Building support is down to you. Share your proposal in the [_Governance_ section ↗](https://community.vega.xyz/c/governance) on the Vega community forum. You may also wish to share on [Discord ↗](https://vega.xyz/discord). --> -To vote, community members need, at a minimum, the larger of or associated to their Vega key. +To vote, community members need, at a minimum, the larger of or associated to their Vega key. -Your proposal will need [participation](../../concepts/governance/lifecycle.md#how-the-outcome-is-calculated) of and a majority of , so having community support is essential. +Your proposal will need [participation](../../concepts/governance/lifecycle.md#how-the-outcome-is-calculated) of and a majority of , so having community support is essential. Proposers who invite feedback, engage with comments, and make revisions to meet the needs of the community are more likely to be successful. From 2fe7d7bb8d95c3e9decfea84fa3ad05e2ef59823 Mon Sep 17 00:00:00 2001 From: candida-d <62548908+candida-d@users.noreply.github.com> Date: Tue, 20 Aug 2024 11:58:18 +0100 Subject: [PATCH 04/10] fees and rebate --- docs/concepts/trading-on-vega/fees.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/concepts/trading-on-vega/fees.md b/docs/concepts/trading-on-vega/fees.md index b39702a7e..ebe4b0700 100644 --- a/docs/concepts/trading-on-vega/fees.md +++ b/docs/concepts/trading-on-vega/fees.md @@ -8,7 +8,7 @@ description: Trades and transfers can incur fees. import NetworkParameter from '@site/src/components/NetworkParameter'; -Participants in the Vega network who place orders on the order book, provide liquidity and run the network infrastructure receive the fees that traders pay on filled trades and transfers. The protocol does not charge gas fees for interacting with the network. +Participants who place orders on the order book, provide liquidity and run the network infrastructure receive the fees that traders pay on filled trades and transfers. The protocol does not charge gas fees for interacting with the network. You can offset some of those fees, or earn even more, by receiving discounts or getting rewards based on trading activity. Rewards can be funded by anyone, and can be in any asset. See the rewards that are currently available on [Console ↗](https://console.fairground.wtf/#/rewards). @@ -66,7 +66,7 @@ The network treasury fee is collected from takers and transferred to the [networ The amount charged for this fee is set by a network parameter. ### Buyback fee -The buyback fee is collected from takers and is used to buy VEGA tokens on a spot market via regular auctions. If there is no relevant spot market, and the fee is set to a value higher than 0, the accrued fee payments are transferred to the [network treasury](../assets/accounts.md#network-treasury-accounts). +The buyback fee is collected from takers and is used to buy governance tokens on a spot market via regular auctions. If there is no relevant spot market, and the fee is set to a value higher than 0, the accrued fee payments are transferred to the [network treasury](../assets/accounts.md#network-treasury-accounts). The amount charged for this fee is set by a network parameter. From 0f7efe292e78303139d3ec34d32ab5782bdb0e3b Mon Sep 17 00:00:00 2001 From: candida-d <62548908+candida-d@users.noreply.github.com> Date: Mon, 9 Sep 2024 16:44:26 +0100 Subject: [PATCH 05/10] update program description --- docs/tutorials/proposals/maker-volume-rebate-program.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/tutorials/proposals/maker-volume-rebate-program.md b/docs/tutorials/proposals/maker-volume-rebate-program.md index ee2cd553a..cc8f26a8d 100644 --- a/docs/tutorials/proposals/maker-volume-rebate-program.md +++ b/docs/tutorials/proposals/maker-volume-rebate-program.md @@ -15,7 +15,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import Batch from './_batch-sample.md'; -When a high-volume maker rebate program is enabled, market makers can receive a rebate of a portion of their paid fees. The higher their maker volume over the program's window length, the greater the rebate that makers can receive. +When a high-volume maker rebate program is enabled, market makers can receive a rebate of a portion of their paid fees. The higher their maker volume across all markets over the program's window length, the greater the rebate that makers can receive. The program needs to be enabled by governance. Once it's enabled, both the requirements and the benefits can also be replaced with a new program. @@ -35,7 +35,7 @@ If you are suggesting a replacement program, you'll need to include all the fiel **End of program timestamp**: Date and time after which, when the current epoch ends, the program will end and rebates will be disabled. -**Window length**: Number of epochs over which to evaluate LPs' volume of maker trades. +**Window length**: Number of epochs over which to evaluate each participant's volume of maker trades across all markets. To end an existing program early, set your proposal up with the exact same parameters. Set the *end of program timestamp* to be the same as the proposal's *enactment* timestamp. @@ -44,7 +44,7 @@ To end an existing program early, set your proposal up with the exact same param | Benefit tier field | Description | Accepted values | | ----------- | ----------- | ----------- | | `benefitTiers` | List of values defining the rebate factors for the program | Holds the details of each tier of rebates, listed below. Maximum of tiers | -| `minimumPartyMakerVolumeFraction` | The required maker volume a party needs to have to access this tier, as a fraction. | Greater than 0 and up to 1, inclusive | +| `minimumPartyMakerVolumeFraction` | To access this tier, the required percentage of trading volume, across all markets, that a party was the maker for, in the window length. This is expresssed as a fraction. | Greater than 0 and up to 1, inclusive | | `additionalMakerRebate` | Additional fraction of fees a party will receive as a rebate when they are on the maker side of a trade. | Greater than 0 and up to 1, inclusive | ## Submitting proposals in a batch From 6e01539cb4a7181d3e6ac98f5ba5c74e5686a839 Mon Sep 17 00:00:00 2001 From: candida-d <62548908+candida-d@users.noreply.github.com> Date: Thu, 26 Sep 2024 15:33:19 +0100 Subject: [PATCH 06/10] update fees --- docs/concepts/trading-framework/fees.md | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/docs/concepts/trading-framework/fees.md b/docs/concepts/trading-framework/fees.md index d2bcf1e80..b06779b8a 100644 --- a/docs/concepts/trading-framework/fees.md +++ b/docs/concepts/trading-framework/fees.md @@ -9,7 +9,7 @@ import NetworkParameter from '@site/src/components/NetworkParameter'; The Vega software is designed such that participants in a network who place orders on the order book, provide liquidity and run the network infrastructure receive the fees that traders pay on filled trades and transfers. The protocol does not have a mechanism to charge gas fees for interacting with the network. -Users can offset some of those fees, or earn even more, by receiving discounts or getting rewards based on trading activity. Rewards can be funded by anyone, and can be in any asset. +Users can offset some of those fees, or earn even more, by receiving discounts or getting rewards based on trading activity. Rewards can be funded by anyone, and can be in any asset. :::note Read more [Concept: Discounts and rewards](./discounts-rewards.md) @@ -34,7 +34,7 @@ The aggressor *buying* the base asset for the quote asset pays more in their tra ### Fee distribution and breakdown Fees are calculated when a trade is filled, and paid in the market's settlement currency. The fees due are taken from the collateral in the trader's general account. -The fee is divided between the maker for the trade, the infrastructure providers, and the liquidity provider(s) for each market. +If each fee type is set to have a value, the fee is divided between the maker for the trade, the infrastructure providers, the liquidity provider(s) for each market, and the network's treasury. ### Maker fee The maker portion of the fee is paid by the aggressive party in a trade (the taker), and transferred to the non-aggressive, or passive party in the trade (the maker, as opposed to the taker). This is done as soon as the trade settles. @@ -59,19 +59,29 @@ The fees paid are transferred to a liquidity fee account, and distributed to eac [How the liquidity fee is set](../liquidity/rewards-penalties.md#determining-the-liquidity-fee-percentage) ::: +### Network treasury fee +The network treasury fee is collected from takers and transferred to the [network treasury](../assets/accounts.md#network-treasury-accounts). + +The amount charged for this fee is set by a network parameter. + +### Buyback fee +The buyback fee is collected from takers and is used to buy governance tokens on a spot market via regular auctions. If there is no relevant spot market, and the fee is set to a value higher than 0, the accrued fee payments are transferred to the [network treasury](../assets/accounts.md#network-treasury-accounts). + +The amount charged for this fee is set by a network parameter. + ### Fee calculations At a high level, the trading fee that someone pays is calculated using the following formulas: -* Total fee = (infrastructure fee factor + maker fee factor + liquidity fee factor) x trade value for fee purposes +* Total fee = (infrastructure fee factor + maker fee factor + liquidity fee factor + buyback fee + network treasury fee) x trade value for fee purposes * Trade value for fee purposes = notional value of the trade = size of trade x price of trade #### Fee calculation example * Trade value for fee purposes: If you were to place an order for 100 at USDC50, the trade value for fee purposes is: *100 x USDC50 = USDC5000*. -* Fee factor: For this example, each of the 3 fees is *0.001*, meaning total fee factor is *0.003*. -* Trade value and fee factor: *USDC5000 x 0.003 = USDC15* +* Fee factor: For this example, each of the 5 fees is *0.001*, meaning total fee factor is *0.005*. +* Trade value and fee factor: *USDC5000 x 0.005 = USDC25* * The fee is the same regardless of the number of transactions the order needs to be completely filled, as long as they trade at the same price. -Two of the three fee factors are set through network parameters: , . The liquidity fee is set by the liquidity providers on the market. +Four of the five fee factors are set through network parameters. , . The liquidity fee is set by the liquidity providers on the market. ## Transfer fees You may need to pay a fee to transfer assets, whether from one Vega key to another, or from a Vega key to a reward pool to fund trading rewards. The fee amount is taken when the transfer is executed, on top of the total amount to be transferred. It's charged in the same asset that is being transferred. From 9e51c1522faf7ec476593c4ffe4829861e57aa11 Mon Sep 17 00:00:00 2001 From: candida-d <62548908+candida-d@users.noreply.github.com> Date: Thu, 26 Sep 2024 15:39:01 +0100 Subject: [PATCH 07/10] update proposal --- docs/tutorials/proposals/asset-transfer-proposal.md | 11 +++++++---- .../tutorials/proposals/asset-transfer-proposal.md | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/docs/tutorials/proposals/asset-transfer-proposal.md b/docs/tutorials/proposals/asset-transfer-proposal.md index 92e5a30de..4f6001b48 100644 --- a/docs/tutorials/proposals/asset-transfer-proposal.md +++ b/docs/tutorials/proposals/asset-transfer-proposal.md @@ -1,7 +1,6 @@ --- sidebar_position: 9 title: Transfer assets -vega_network: TESTNET hide_title: true keywords: - proposal @@ -43,6 +42,7 @@ For **one-off transfers** use `deliverOn` to set a delivery date/time for when t For **recurring transfers**, such as for funding rewards, you'll need to include the following information: * `startEpoch`: The number of the epoch in which you want the first transfer to be made. It will initiate at the end of that epoch. * `endEpoch`: The transfer will repeated indefinitely, unless you add this optional parameter to end the recurring transfer in a specified epoch. +* `factor`: Factor that the initial transfer amount is multiplied by for each epoch that it is executed. For example if the initial transfer amount is 1000 and the factor is 0.5, then the amounts transferred per epoch will be 1000, 500, 250, 125, etc. **Amount** is the cap on how much will be transferred, as whole number with the asset decimal places implied. For example, if the asset has a decimal place of 2 and the transfer is for 100, then the amount needs to be set at 10000. The maximum you can propose to transfer is the value of the network parameter , which is a multiplier for the asset's [quantum value](../../concepts/assets/asset-framework.md#quantum). Before proposing, make sure the account you're transferring from exists and has a balance. The full amount may not be transferred if there isn't enough to transfer. For specifics on how the final amount is determined, see the [calculations in the transfers spec ↗](https://github.com/vegaprotocol/specs/blob/master/protocol/0057-TRAN-transfers.md#recurring-transfers). @@ -139,7 +139,8 @@ These templates show an example of how to fund rewards with a governance transfe "destinationType": "ACCOUNT_TYPE_REWARD_AVERAGE_POSITION", "recurring": { "startEpoch": 116515, - "endEpoch": 116615 + "endEpoch": 116615, + "factor": "1" "dispatchStrategy": { "assetForMetric": "b340c130096819428a62e5df407fd6abe66e444b89ad64f670beb98621c9c663", "metric": "DISPATCH_METRIC_MAKER_FEES_PAID", @@ -183,6 +184,7 @@ These templates show an example of how to fund rewards with a governance transfe "recurring": { "startEpoch": 1111110, "endEpoch": 1111111, + "factor": "1" "dispatchStrategy": { "assetForMetric": "b340c130096819428a62e5df407fd6abe66e444b89ad64f670beb98621c9c663", "metric": "DISPATCH_METRIC_MAKER_FEES_PAID", @@ -228,8 +230,9 @@ vegawallet.exe transaction send --wallet YOUR_WALLETNAME --pubkey YOUR_PUBLIC_KE \"fractionOfBalance\": `\"0.1\", ^ \"destinationType\": \"ACCOUNT_TYPE_REWARD_AVERAGE_POSITION\", ^ \"recurring\": {^ - \"startEpoch\": \"1111110\" ^ - \"endEpoch\": \"1111111\" ^ + \"startEpoch\": \"1111110\", ^ + \"endEpoch\": \"1111111\", ^ + \"factor\": \"1\" ^ \"dispatchStrategy\": { ^ \"assetForMetric\": \"b340c130096819428a62e5df407fd6abe66e444b89ad64f670beb98621c9c663\", ^ \"metric\": \"DISPATCH_METRIC_MAKER_FEES_PAID\", ^ diff --git a/versioned_docs/version-v0.77/tutorials/proposals/asset-transfer-proposal.md b/versioned_docs/version-v0.77/tutorials/proposals/asset-transfer-proposal.md index 92e5a30de..4f6001b48 100644 --- a/versioned_docs/version-v0.77/tutorials/proposals/asset-transfer-proposal.md +++ b/versioned_docs/version-v0.77/tutorials/proposals/asset-transfer-proposal.md @@ -1,7 +1,6 @@ --- sidebar_position: 9 title: Transfer assets -vega_network: TESTNET hide_title: true keywords: - proposal @@ -43,6 +42,7 @@ For **one-off transfers** use `deliverOn` to set a delivery date/time for when t For **recurring transfers**, such as for funding rewards, you'll need to include the following information: * `startEpoch`: The number of the epoch in which you want the first transfer to be made. It will initiate at the end of that epoch. * `endEpoch`: The transfer will repeated indefinitely, unless you add this optional parameter to end the recurring transfer in a specified epoch. +* `factor`: Factor that the initial transfer amount is multiplied by for each epoch that it is executed. For example if the initial transfer amount is 1000 and the factor is 0.5, then the amounts transferred per epoch will be 1000, 500, 250, 125, etc. **Amount** is the cap on how much will be transferred, as whole number with the asset decimal places implied. For example, if the asset has a decimal place of 2 and the transfer is for 100, then the amount needs to be set at 10000. The maximum you can propose to transfer is the value of the network parameter , which is a multiplier for the asset's [quantum value](../../concepts/assets/asset-framework.md#quantum). Before proposing, make sure the account you're transferring from exists and has a balance. The full amount may not be transferred if there isn't enough to transfer. For specifics on how the final amount is determined, see the [calculations in the transfers spec ↗](https://github.com/vegaprotocol/specs/blob/master/protocol/0057-TRAN-transfers.md#recurring-transfers). @@ -139,7 +139,8 @@ These templates show an example of how to fund rewards with a governance transfe "destinationType": "ACCOUNT_TYPE_REWARD_AVERAGE_POSITION", "recurring": { "startEpoch": 116515, - "endEpoch": 116615 + "endEpoch": 116615, + "factor": "1" "dispatchStrategy": { "assetForMetric": "b340c130096819428a62e5df407fd6abe66e444b89ad64f670beb98621c9c663", "metric": "DISPATCH_METRIC_MAKER_FEES_PAID", @@ -183,6 +184,7 @@ These templates show an example of how to fund rewards with a governance transfe "recurring": { "startEpoch": 1111110, "endEpoch": 1111111, + "factor": "1" "dispatchStrategy": { "assetForMetric": "b340c130096819428a62e5df407fd6abe66e444b89ad64f670beb98621c9c663", "metric": "DISPATCH_METRIC_MAKER_FEES_PAID", @@ -228,8 +230,9 @@ vegawallet.exe transaction send --wallet YOUR_WALLETNAME --pubkey YOUR_PUBLIC_KE \"fractionOfBalance\": `\"0.1\", ^ \"destinationType\": \"ACCOUNT_TYPE_REWARD_AVERAGE_POSITION\", ^ \"recurring\": {^ - \"startEpoch\": \"1111110\" ^ - \"endEpoch\": \"1111111\" ^ + \"startEpoch\": \"1111110\", ^ + \"endEpoch\": \"1111111\", ^ + \"factor\": \"1\" ^ \"dispatchStrategy\": { ^ \"assetForMetric\": \"b340c130096819428a62e5df407fd6abe66e444b89ad64f670beb98621c9c663\", ^ \"metric\": \"DISPATCH_METRIC_MAKER_FEES_PAID\", ^ From 60a139522b1bbdc8dc15793cfb9fd259508acac6 Mon Sep 17 00:00:00 2001 From: candida-d <62548908+candida-d@users.noreply.github.com> Date: Mon, 30 Sep 2024 15:16:54 +0100 Subject: [PATCH 08/10] update discount program --- docs/concepts/trading-framework/fees.md | 4 +- .../proposals/maker-volume-rebate-program.md | 3 +- .../volume-discount-program-proposal.md | 122 +++++++++++------- .../volume-discount-program-proposal.md | 110 ++++++++++------ 4 files changed, 149 insertions(+), 90 deletions(-) diff --git a/docs/concepts/trading-framework/fees.md b/docs/concepts/trading-framework/fees.md index b06779b8a..0c1d2a737 100644 --- a/docs/concepts/trading-framework/fees.md +++ b/docs/concepts/trading-framework/fees.md @@ -65,9 +65,7 @@ The network treasury fee is collected from takers and transferred to the [networ The amount charged for this fee is set by a network parameter. ### Buyback fee -The buyback fee is collected from takers and is used to buy governance tokens on a spot market via regular auctions. If there is no relevant spot market, and the fee is set to a value higher than 0, the accrued fee payments are transferred to the [network treasury](../assets/accounts.md#network-treasury-accounts). - -The amount charged for this fee is set by a network parameter. +The buyback fee is collected from takers and is used to buy specific tokens on a spot market through automated purchase programs. The amount charged for this fee is set by a network parameter. ### Fee calculations At a high level, the trading fee that someone pays is calculated using the following formulas: diff --git a/docs/tutorials/proposals/maker-volume-rebate-program.md b/docs/tutorials/proposals/maker-volume-rebate-program.md index cc8f26a8d..e93d4d8fb 100644 --- a/docs/tutorials/proposals/maker-volume-rebate-program.md +++ b/docs/tutorials/proposals/maker-volume-rebate-program.md @@ -184,4 +184,5 @@ Your proposal will need [participation](../../concepts/governance/lifecycle.md#h Proposers who invite feedback, engage with comments, and make revisions to meet the needs of the community are more likely to be successful. ## Enactment -If successful, the program changes will go live in the epoch following the time you specify in the `enactmentTimestamp` field. \ No newline at end of file +If successful, the program changes will go live in the epoch following the time you specify in the `enactmentTimestamp` field. +} \ No newline at end of file diff --git a/docs/tutorials/proposals/volume-discount-program-proposal.md b/docs/tutorials/proposals/volume-discount-program-proposal.md index 668def2b0..b41dc16eb 100644 --- a/docs/tutorials/proposals/volume-discount-program-proposal.md +++ b/docs/tutorials/proposals/volume-discount-program-proposal.md @@ -2,7 +2,6 @@ sidebar_position: 11 title: Enable or replace volume discount program hide_title: false -vega_network: TESTNET keywords: - proposal - governance @@ -37,7 +36,7 @@ If you are suggesting a replacement program, you'll need to include all the fiel **Window length**: Number of epochs over which to evaluate traders' volume of taker trades. -To end an existing program early, set your proposal up with the exact same parameters. Set the *end of program timestamp* to be the same as the proposal's *enactment* timestamp. +To end an existing program early, set your proposal up with the exact same parameters. Set the *end of program timestamp* to be the same as the proposal's *enactment* timestamp. #### Benefit tier fields @@ -45,11 +44,13 @@ To end an existing program early, set your proposal up with the exact same param | ----------- | ----------- | ----------- | | `benefitTiers` | List of values defining the discount factors for the program | Holds the details of each tier of discounts, listed below. Maximum of tiers | | `minimumRunningNotionalTakerVolume` | The notional volume of aggressive trades that a trader is required to have across the aggregation window, to access the discount in this tier | Integer greater than or equal to 1 | +| `volumeDiscountFactors` | Each fee type must be listed separately. | Listed below | | `makerVolumeDiscountFactor` | Proportion of each trader's maker fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | -| `lpVolumeDiscountFactor` | Proportion of each trader's liquidity fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | +| `liquidityVolumeDiscountFactor` | Proportion of each trader's liquidity fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | | `infrastructureVolumeDiscountFactor` | Proportion of each trader's infrastructure fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | + ## Submitting proposals in a batch @@ -74,32 +75,38 @@ Below you will find: "terms": { "updateVolumeDiscountProgram": { "changes": { - "end_of_program_timestamp": 1234567890, - - "window_length": 11, "benefitTiers": [ - { - "minimumRunningNotionalTakerVolume": "10000", - "makerVolumeDiscountFactor": "0.002", - "lpVolumeDiscountFactor": "0.002", - "infrastructureVolumeDiscountFactor": "0.002" - + { + "minimumRunningNotionalTakerVolume": "11", + "minimumEpochs": "1", + "volumeDiscountFactor": "", + "volumeDiscountFactors": { + "infrastructureDiscountFactor": "0.02", + "liquidityDiscountFactor": "0.021", + "makerDiscountFactor": "0.022" }, - { - "minimumRunningNotionalTakerVolume": "10198", - "makerVolumeDiscountFactor": "0.098", - "lpVolumeDiscountFactor": "0.098", - "infrastructureVolumeDiscountFactor": "0.098" - } - ], - } + }, + { + "minimumRunningNotionalTakerVolume": "1000", + "minimumEpochs": "1", + "volumeDiscountFactor": "", + "volumeDiscountFactors": { + "infrastructureDiscountFactor": "0.044", + "liquidityDiscountFactor": "0.045", + "makerDiscountFactor": "0.046" + }, }, + ], + "endOfProgramTimestamp": 1234567890, + "windowLength": "11" "closingTimestamp": 1111111111, "enactmentTimestamp": 1111111155 } } } -``` +} +} +``` @@ -115,24 +122,35 @@ Below you will find: "terms": { "updateVolumeDiscountProgram": { "changes": { - "end_of_program_timestamp": 1234567890, - - "window_length": 3, "benefitTiers": [ { "minimumRunningNotionalTakerVolume": "10020", - "makerVolumeDiscountFactor": "0.001", - "infrastructureVolumeDiscountFactor": "0.001", - "lpVolumeDiscountFactor": "0.001" + "minimumEpochs": "1", + "volumeDiscountFactor": "0.001" }, { "minimumRunningNotionalTakerVolume": "10198", - "makerVolumeDiscountFactor": "0.098", - "infrastructureVolumeDiscountFactor": "0.098", - "lpVolumeDiscountFactor": "0.098" } - ], - } + "volumeDiscountFactors": { + "infrastructureDiscountFactor": "0.02", + "liquidityDiscountFactor": "0.021", + "makerDiscountFactor": "0.022" + }, + }, + { + "minimumRunningNotionalTakerVolume": "1000", + "minimumEpochs": "1", + "volumeDiscountFactor": "", + "volumeDiscountFactors": { + "infrastructureDiscountFactor": "0.044", + "liquidityDiscountFactor": "0.045", + "makerDiscountFactor": "0.046" + }, + }, + ], + } }, + "endOfProgramTimestamp": 1234567890, + "windowLength": 3, "closingTimestamp": 1111111111, "enactmentTimestamp": 1111111155 } @@ -156,28 +174,32 @@ vegawallet.exe transaction send --wallet YOUR_WALLETNAME --pubkey YOUR_PUBLIC_KE : { \"updateVolumeDiscountProgram\":^ { \"changes\": {^ - \"end_of_program_timestamp\": \"1234567890\",:^ - - \"window_length\": \"3\", - \"benefitTiers\": [ + \"endOfProgramTimestamp\": \"1234567890\",:^ + \"windowLength\": \"3\",^ + \"benefitTiers\": [^ { - \"minimumRunningNotionalTakerVolume\": \"10100\",^ - \"makerVolumeDiscountFactor\": \"0.001\",^ - \"infrastructureVolumeDiscountFactor\": \"0.001\",^ - \"lpVolumeDiscountFactor\": \"0.001\"^ - + \"minimumEpochs\": \"1\"^ + \"minimumRunningNotionalTakerVolume\": \"11\",^ + \"volumeDiscountFactor\":^ + \"volumeDiscountFactors\":^ + \"infrastructureDiscountFactor\": \"0.02\",^ + \"liquidityDiscountFactor\": \"0.021\",^ + \"makerDiscountFactor\": \"0.022\",^ }, { - \"minimumRunningNotionalTakerVolume\": \"11000\",^ - \"makerVolumeDiscountFactor\": \"0.098\",^ - \"infrastructureVolumeDiscountFactor\": \"0.098\",^ - \"lpVolumeDiscountFactor\": \"0.098\"^ - } - ], - } - }, + \"minimumEpochs\": \"1\"^ + \"minimumRunningNotionalTakerVolume\": \"1000\",^ + \"volumeDiscountFactor\":^ + \"volumeDiscountFactors\":^ + \"infrastructureDiscountFactor\": \"0.02\",^ + \"liquidityDiscountFactor\": \"0.021\",^ + \"makerDiscountFactor\": \"0.022\",^ + },^ + ],^ + }^ + },^ \"closingTimestamp\": \"1111111111\",^ - \"enactmentTimestamp\": \"1111111155\" + \"enactmentTimestamp\": \"1111111155\"^ }^ }^ }'^ diff --git a/versioned_docs/version-v0.77/tutorials/proposals/volume-discount-program-proposal.md b/versioned_docs/version-v0.77/tutorials/proposals/volume-discount-program-proposal.md index a3c879cee..b41dc16eb 100644 --- a/versioned_docs/version-v0.77/tutorials/proposals/volume-discount-program-proposal.md +++ b/versioned_docs/version-v0.77/tutorials/proposals/volume-discount-program-proposal.md @@ -2,7 +2,6 @@ sidebar_position: 11 title: Enable or replace volume discount program hide_title: false -vega_network: TESTNET keywords: - proposal - governance @@ -37,7 +36,7 @@ If you are suggesting a replacement program, you'll need to include all the fiel **Window length**: Number of epochs over which to evaluate traders' volume of taker trades. -To end an existing program early, set your proposal up with the exact same parameters. Set the *end of program timestamp* to be the same as the proposal's *enactment* timestamp. +To end an existing program early, set your proposal up with the exact same parameters. Set the *end of program timestamp* to be the same as the proposal's *enactment* timestamp. #### Benefit tier fields @@ -45,7 +44,12 @@ To end an existing program early, set your proposal up with the exact same param | ----------- | ----------- | ----------- | | `benefitTiers` | List of values defining the discount factors for the program | Holds the details of each tier of discounts, listed below. Maximum of tiers | | `minimumRunningNotionalTakerVolume` | The notional volume of aggressive trades that a trader is required to have across the aggregation window, to access the discount in this tier | Integer greater than or equal to 1 | -| `volumeDiscountFactor` | Proportion of each trader's fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | +| `volumeDiscountFactors` | Each fee type must be listed separately. | Listed below | +| `makerVolumeDiscountFactor` | Proportion of each trader's maker fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | +| `liquidityVolumeDiscountFactor` | Proportion of each trader's liquidity fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | +| `infrastructureVolumeDiscountFactor` | Proportion of each trader's infrastructure fees to be discounted, will be converted to a percentage | Must be greater than or equal to 0 and less than / equal to | + + ## Submitting proposals in a batch @@ -71,27 +75,38 @@ Below you will find: "terms": { "updateVolumeDiscountProgram": { "changes": { - "end_of_program_timestamp": 1234567890, - - "window_length": 11, "benefitTiers": [ - { - "minimumRunningNotionalTakerVolume": "10000", - "volumeDiscountFactor": "0.002" + { + "minimumRunningNotionalTakerVolume": "11", + "minimumEpochs": "1", + "volumeDiscountFactor": "", + "volumeDiscountFactors": { + "infrastructureDiscountFactor": "0.02", + "liquidityDiscountFactor": "0.021", + "makerDiscountFactor": "0.022" }, - { - "minimumRunningNotionalTakerVolume": "10198", - "volumeDiscountFactor": "0.098" - } - ], - } + }, + { + "minimumRunningNotionalTakerVolume": "1000", + "minimumEpochs": "1", + "volumeDiscountFactor": "", + "volumeDiscountFactors": { + "infrastructureDiscountFactor": "0.044", + "liquidityDiscountFactor": "0.045", + "makerDiscountFactor": "0.046" + }, }, + ], + "endOfProgramTimestamp": 1234567890, + "windowLength": "11" "closingTimestamp": 1111111111, "enactmentTimestamp": 1111111155 } } } -``` +} +} +``` @@ -107,21 +122,35 @@ Below you will find: "terms": { "updateVolumeDiscountProgram": { "changes": { - "end_of_program_timestamp": 1234567890, - - "window_length": 3, "benefitTiers": [ { "minimumRunningNotionalTakerVolume": "10020", + "minimumEpochs": "1", "volumeDiscountFactor": "0.001" }, { "minimumRunningNotionalTakerVolume": "10198", - "volumeDiscountFactor": "0.098" - } - ], - } + "volumeDiscountFactors": { + "infrastructureDiscountFactor": "0.02", + "liquidityDiscountFactor": "0.021", + "makerDiscountFactor": "0.022" + }, + }, + { + "minimumRunningNotionalTakerVolume": "1000", + "minimumEpochs": "1", + "volumeDiscountFactor": "", + "volumeDiscountFactors": { + "infrastructureDiscountFactor": "0.044", + "liquidityDiscountFactor": "0.045", + "makerDiscountFactor": "0.046" + }, + }, + ], + } }, + "endOfProgramTimestamp": 1234567890, + "windowLength": 3, "closingTimestamp": 1111111111, "enactmentTimestamp": 1111111155 } @@ -145,23 +174,32 @@ vegawallet.exe transaction send --wallet YOUR_WALLETNAME --pubkey YOUR_PUBLIC_KE : { \"updateVolumeDiscountProgram\":^ { \"changes\": {^ - \"end_of_program_timestamp\": \"1234567890\",:^ - - \"window_length\": \"3\", - \"benefitTiers\": [ + \"endOfProgramTimestamp\": \"1234567890\",:^ + \"windowLength\": \"3\",^ + \"benefitTiers\": [^ { - \"minimumRunningNotionalTakerVolume\": \"10100\",^ - \"volumeDiscountFactor\": \"0.001\"^ + \"minimumEpochs\": \"1\"^ + \"minimumRunningNotionalTakerVolume\": \"11\",^ + \"volumeDiscountFactor\":^ + \"volumeDiscountFactors\":^ + \"infrastructureDiscountFactor\": \"0.02\",^ + \"liquidityDiscountFactor\": \"0.021\",^ + \"makerDiscountFactor\": \"0.022\",^ }, { - \"minimumRunningNotionalTakerVolume\": \"11000\",^ - \"volumeDiscountFactor\": \"0.098\"^ - } - ], - } - }, + \"minimumEpochs\": \"1\"^ + \"minimumRunningNotionalTakerVolume\": \"1000\",^ + \"volumeDiscountFactor\":^ + \"volumeDiscountFactors\":^ + \"infrastructureDiscountFactor\": \"0.02\",^ + \"liquidityDiscountFactor\": \"0.021\",^ + \"makerDiscountFactor\": \"0.022\",^ + },^ + ],^ + }^ + },^ \"closingTimestamp\": \"1111111111\",^ - \"enactmentTimestamp\": \"1111111155\" + \"enactmentTimestamp\": \"1111111155\"^ }^ }^ }'^ From 44a0f52604cddde5021072b4152aa750fac7b1f7 Mon Sep 17 00:00:00 2001 From: candida-d <62548908+candida-d@users.noreply.github.com> Date: Mon, 30 Sep 2024 17:38:51 +0100 Subject: [PATCH 09/10] net param details --- .../proposals/maker-volume-rebate-program.md | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/docs/tutorials/proposals/maker-volume-rebate-program.md b/docs/tutorials/proposals/maker-volume-rebate-program.md index e93d4d8fb..0e45c3549 100644 --- a/docs/tutorials/proposals/maker-volume-rebate-program.md +++ b/docs/tutorials/proposals/maker-volume-rebate-program.md @@ -25,7 +25,7 @@ This page describes what you need to propose enabling or replacing the program, You will need: * A connected [Vega wallet](../../tools/vega-wallet/index.md), with your wallet name and public key to hand -* A minimum of whichever is larger, associated with that public key: () or () +* A minimum of the value set in the following network parameters. You need whichever amount is larger associated with that public key: or . * Familiarity with [governance on Vega](../../concepts/governance/index.md) ## Anatomy of a maker rebate program proposal @@ -171,18 +171,9 @@ vegawallet.exe transaction send --wallet YOUR_WALLETNAME --pubkey YOUR_PUBLIC_KE ## Voting -All proposals are voted on by the community. +To vote, participants need, at a minimum, the larger of the value of the following network parameters: or associated to their Vega key. - - -To vote, community members need, at a minimum, the larger of or associated to their Vega key. - -Your proposal will need [participation](../../concepts/governance/lifecycle.md#how-the-outcome-is-calculated) of and a majority of , so having community support is essential. - -Proposers who invite feedback, engage with comments, and make revisions to meet the needs of the community are more likely to be successful. +A proposal will need [participation](../../concepts/governance/lifecycle.md#how-the-outcome-is-calculated) of at least the value of the network parameter and a majority that's the value of the network parameter . ## Enactment -If successful, the program changes will go live in the epoch following the time you specify in the `enactmentTimestamp` field. -} \ No newline at end of file +If successful, the program changes will go live in the epoch following the time you specify in the `enactmentTimestamp` field. \ No newline at end of file From 3b44ce0078b4f56c315a19ad4ade23243fdf4658 Mon Sep 17 00:00:00 2001 From: candida-d <62548908+candida-d@users.noreply.github.com> Date: Mon, 30 Sep 2024 17:40:29 +0100 Subject: [PATCH 10/10] trim copy --- .../tutorials/proposals/maker-volume-rebate-program.md | 2 +- .../proposals/volume-discount-program-proposal.md | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/docs/tutorials/proposals/maker-volume-rebate-program.md b/docs/tutorials/proposals/maker-volume-rebate-program.md index 0e45c3549..5d708d37a 100644 --- a/docs/tutorials/proposals/maker-volume-rebate-program.md +++ b/docs/tutorials/proposals/maker-volume-rebate-program.md @@ -26,7 +26,7 @@ This page describes what you need to propose enabling or replacing the program, You will need: * A connected [Vega wallet](../../tools/vega-wallet/index.md), with your wallet name and public key to hand * A minimum of the value set in the following network parameters. You need whichever amount is larger associated with that public key: or . -* Familiarity with [governance on Vega](../../concepts/governance/index.md) +* Familiarity with [governance](../../concepts/governance/index.md) ## Anatomy of a maker rebate program proposal The fields below all need to be defined to enable the program or replace an existing one. diff --git a/docs/tutorials/proposals/volume-discount-program-proposal.md b/docs/tutorials/proposals/volume-discount-program-proposal.md index b41dc16eb..447ce9603 100644 --- a/docs/tutorials/proposals/volume-discount-program-proposal.md +++ b/docs/tutorials/proposals/volume-discount-program-proposal.md @@ -25,7 +25,7 @@ This page describes what you need to propose enabling or replacing the volume di You will need: * A connected [Vega wallet](../../tools/vega-wallet/index.md), with your wallet name and public key to hand * A minimum of whichever is larger, associated with that public key: based on the network parameter values for or -* Familiarity with [governance on Vega](../../concepts/governance/index.md) +* Familiarity with [governance](../../concepts/governance/index.md) ## Anatomy of a volume discount program proposal The fields below all need to be defined to enable the volume discount program or replace an existing one. @@ -208,13 +208,9 @@ vegawallet.exe transaction send --wallet YOUR_WALLETNAME --pubkey YOUR_PUBLIC_KE ## Voting -All proposals are voted on by the community. +To vote, participants need, at a minimum, the larger of the value of the following network parameters or associated to their Vega key. -To vote, community members need, at a minimum, the larger of the value of the following network parameters or associated to their Vega key. - -Your proposal will need [participation](../../concepts/governance/lifecycle.md#how-the-outcome-is-calculated) of and a majority of . - -Proposers who invite feedback, engage with comments, and make revisions to meet the needs of the community are more likely to be successful. +The proposal will need [participation](../../concepts/governance/lifecycle.md#how-the-outcome-is-calculated) of and a majority of . ## Enactment If successful, the program changes will go live in the epoch following the time you specify in the `enactmentTimestamp` field. \ No newline at end of file