code.vegaprotocol.io/vega@v0.79.0/core/integration/features/referrals/0083-RFPR-running_volume.feature (about)

     1  Feature: Calculating referral set running volumes
     2  
     3    Background:
     4  
     5      # Initialise the network
     6      Given time is updated to "2023-01-01T00:00:00Z"
     7      And the average block duration is "1"
     8      And the margin calculator named "margin-calculator-1":
     9        | search factor | initial factor | release factor |
    10        | 1.2           | 1.5            | 1.7            |
    11      And the log normal risk model named "log-normal-risk-model":
    12        | risk aversion | tau | mu | r | sigma |
    13        | 0.000001      | 0.1 | 0  | 0 | 1.0   |
    14      And the price monitoring named "price-monitoring":
    15        | horizon | probability | auction extension |
    16        | 3600    | 0.99        | 3                 |
    17      And the following network parameters are set:
    18        | name                                                    | value      |
    19        | market.fee.factors.infrastructureFee                    | 0.001      |
    20        | market.fee.factors.makerFee                             | 0.001      |
    21        | network.markPriceUpdateMaximumFrequency                 | 0s         |
    22        | market.auction.minimumDuration                          | 1          |
    23        | validators.epoch.length                                 | 60s        |
    24        | limits.markets.maxPeggedOrders                          | 4          |
    25        | referralProgram.minStakedVegaTokens                     | 0          |
    26        | referralProgram.maxPartyNotionalVolumeByQuantumPerEpoch | 1000000000 |
    27  
    28      # Initalise the referral program
    29      Given the referral benefit tiers "rbt":
    30        | minimum running notional taker volume | minimum epochs | referral reward infra factor | referral reward maker factor | referral reward liquidity factor | referral discount infra factor | referral discount maker factor | referral discount liquidity factor |
    31        | 100                                   | 1              | 0.11                         | 0.12                         | 0.13                             | 0.14                           | 0.15                           | 0.16                               |
    32      And the referral staking tiers "rst":
    33        | minimum staked tokens | referral reward multiplier |
    34        | 1                     | 1                          |
    35      And the referral program:
    36        | end of program       | window length | benefit tiers | staking tiers |
    37        | 2023-12-12T12:12:12Z | 7             | rbt           | rst           |
    38      And the network moves ahead "1" epochs
    39  
    40      # Initialise the markets
    41      And the following assets are registered:
    42        | id       | decimal places | quantum |
    43        | USD-1-1  | 1              | 1       |
    44        | USD-2-10 | 2              | 10      |
    45      And the markets:
    46        | id           | quote name | asset    | risk model                    | margin calculator         | auction duration | fees         | price monitoring | data source config     | linear slippage factor | quadratic slippage factor | sla params      | decimal places | position decimal places |
    47        | ETH/USD-1-1  | ETH        | USD-1-1  | default-log-normal-risk-model | default-margin-calculator | 1                | default-none | default-none     | default-eth-for-future | 1e-3                   | 0                         | default-futures | 0              | 0                       |
    48        | ETH/USD-2-10 | ETH        | USD-2-10 | default-log-normal-risk-model | default-margin-calculator | 1                | default-none | default-none     | default-eth-for-future | 1e-3                   | 0                         | default-futures | 1              | 1                       |
    49        | ETH/USD-1-2  | ETH        | USD-1-1  | log-normal-risk-model         | margin-calculator-1       | 1                | default-none | price-monitoring | default-eth-for-future | 1e-3                   | 0                         | default-futures | 0              | 0                       |
    50      And the liquidity monitoring parameters:
    51        | name       | triggering ratio | time window | scaling factor |
    52        | lqm-params | 1.0              | 3600s       | 1              |
    53      When the markets are updated:
    54        | id           | liquidity monitoring | linear slippage factor | quadratic slippage factor |
    55        | ETH/USD-1-1  | lqm-params           | 1e-3                   | 0                         |
    56        | ETH/USD-2-10 | lqm-params           | 1e-3                   | 0                         |
    57        | ETH/USD-1-2  | lqm-params           | 1e-3                   | 0                         |
    58      And the network moves ahead "1" blocks
    59  
    60      # Initialise the parties
    61      Given the parties deposit on asset's general account the following amount:
    62        | party     | asset    | amount      |
    63        | lpprov    | USD-2-10 | 10000000000 |
    64        | aux1      | USD-2-10 | 10000000    |
    65        | aux2      | USD-2-10 | 10000000    |
    66        | referrer1 | USD-2-10 | 10000000    |
    67        | referee1  | USD-2-10 | 10000000    |
    68        | referee2  | USD-2-10 | 10000000    |
    69        | lpprov    | USD-1-1  | 10000000000 |
    70        | lpprov2   | USD-1-1  | 10000000000 |
    71        | aux1      | USD-1-1  | 10000000    |
    72        | aux2      | USD-1-1  | 10000000    |
    73        | aux3      | USD-1-1  | 10000000    |
    74        | aux4      | USD-1-1  | 10000000    |
    75        | referrer1 | USD-1-1  | 10000000    |
    76        | referee1  | USD-1-1  | 10000000    |
    77        | referee2  | USD-1-1  | 10000000    |
    78        | ptbuy     | USD-1-1  | 10000000    |
    79        | ptsell    | USD-1-1  | 10000000    |
    80  
    81      # Exit opening auctions
    82      Given the parties submit the following liquidity provision:
    83        | id  | party   | market id    | commitment amount | fee  | lp type    |
    84        | lp1 | lpprov  | ETH/USD-1-1  | 1000000           | 0.01 | submission |
    85        | lp2 | lpprov  | ETH/USD-2-10 | 10000000          | 0.01 | submission |
    86        | lp3 | lpprov2 | ETH/USD-1-2  | 10000000          | 0.01 | submission |
    87      And the parties place the following pegged iceberg orders:
    88        | party   | market id    | peak size | minimum visible size | side | pegged reference | volume | offset |
    89        | lpprov  | ETH/USD-1-1  | 5000      | 1000                 | buy  | BID              | 10000  | 1      |
    90        | lpprov  | ETH/USD-1-1  | 5000      | 1000                 | sell | ASK              | 10000  | 1      |
    91        | lpprov  | ETH/USD-2-10 | 50000     | 10000                | buy  | BID              | 100000 | 10     |
    92        | lpprov  | ETH/USD-2-10 | 50000     | 10000                | sell | ASK              | 100000 | 10     |
    93        | lpprov2 | ETH/USD-1-2  | 5000      | 1000                 | buy  | BID              | 10000  | 1      |
    94        | lpprov2 | ETH/USD-1-2  | 5000      | 1000                 | sell | ASK              | 10000  | 1      |
    95      When the parties place the following orders:
    96        | party | market id    | side | volume | price | resulting trades | type       | tif     |
    97        | aux1  | ETH/USD-1-1  | buy  | 1      | 990   | 0                | TYPE_LIMIT | TIF_GTC |
    98        | aux1  | ETH/USD-1-1  | buy  | 1      | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
    99        | aux2  | ETH/USD-1-1  | sell | 1      | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   100        | aux2  | ETH/USD-1-1  | sell | 1      | 1100  | 0                | TYPE_LIMIT | TIF_GTC |
   101        | aux1  | ETH/USD-2-10 | buy  | 1      | 9900  | 0                | TYPE_LIMIT | TIF_GTC |
   102        | aux1  | ETH/USD-2-10 | buy  | 1      | 10000 | 0                | TYPE_LIMIT | TIF_GTC |
   103        | aux2  | ETH/USD-2-10 | sell | 1      | 10000 | 0                | TYPE_LIMIT | TIF_GTC |
   104        | aux2  | ETH/USD-2-10 | sell | 1      | 11000 | 0                | TYPE_LIMIT | TIF_GTC |
   105        | aux3  | ETH/USD-1-2  | buy  | 1      | 900   | 0                | TYPE_LIMIT | TIF_GTC |
   106        | aux3  | ETH/USD-1-2  | buy  | 1      | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   107        | aux4  | ETH/USD-1-2  | sell | 1      | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   108        | aux4  | ETH/USD-1-2  | sell | 1      | 1100  | 0                | TYPE_LIMIT | TIF_GTC |
   109      When the opening auction period ends for market "ETH/USD-1-1"
   110      And the opening auction period ends for market "ETH/USD-2-10"
   111      Then the network moves ahead "1" blocks
   112      And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/USD-1-1"
   113      And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/USD-1-2"
   114      And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/USD-2-10"
   115  
   116      # Create the referral set and codes
   117      Given the parties create the following referral codes:
   118        | party     | code            |
   119        | referrer1 | referral-code-1 |
   120      And the parties apply the following referral codes:
   121        | party    | code            |
   122        | referee1 | referral-code-1 |
   123        | referee2 | referral-code-1 |
   124  
   125  
   126    Scenario Outline: Referral set member is the maker of a trade during continuous trading (0083-RFPR-048)
   127      # Expectation: the members taker volume is not increased, and thus we see no increase in the sets taker volume
   128  
   129      Given the parties place the following orders:
   130        | party   | market id   | side         | volume | price | resulting trades | type       | tif     |
   131        | <party> | ETH/USD-1-1 | <maker side> | 10     | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   132        | aux1    | ETH/USD-1-1 | <taker side> | 10     | 1000  | 1                | TYPE_LIMIT | TIF_GTC |
   133      When the network moves ahead "1" epochs
   134      Then the referral set stats for code "referral-code-1" at epoch "1" should have a running volume of 0:
   135        | party    | reward infra factor | reward maker factor | reward liquidity factor | discount infra factor | discount maker factor | discount liquidity factor |
   136        | referee1 | 0                   | 0                   | 0                       | 0                     | 0                     | 0                         |
   137        | referee2 | 0                   | 0                   | 0                       | 0                     | 0                     | 0                         |
   138  
   139      # Check volume not counted for either referrer or referee contributions or for either buy or sell orders
   140      Examples:
   141        | party     | maker side | taker side |
   142        | referrer1 | buy        | sell       |
   143        | referrer1 | sell       | buy        |
   144        | referee1  | buy        | sell       |
   145        | referee1  | sell       | buy        |
   146  
   147  
   148    Scenario Outline: Referral set member is the taker of a trade during continuous trading (0083-RFPR-031)
   149      # Expectation: the members taker volume is increased, and thus we see an increase in the sets taker volume
   150  
   151      Given the parties place the following orders:
   152        | party   | market id   | side         | volume | price | resulting trades | type       | tif     |
   153        | aux1    | ETH/USD-1-1 | <maker side> | 10     | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   154        | <party> | ETH/USD-1-1 | <taker side> | 10     | 1000  | 1                | TYPE_LIMIT | TIF_GTC |
   155      When the network moves ahead "1" epochs
   156      Then the referral set stats for code "referral-code-1" at epoch "1" should have a running volume of 100000:
   157        | party    | reward infra factor | reward maker factor | reward liquidity factor | discount infra factor | discount maker factor | discount liquidity factor |
   158        | referee1 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   159        | referee2 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   160  
   161      # Check volume counted for both referrer and referee contributions and both buy and sell orders
   162      Examples:
   163        | party     | maker side | taker side |
   164        | referrer1 | buy        | sell       |
   165        | referrer1 | sell       | buy        |
   166        | referee1  | buy        | sell       |
   167        | referee1  | sell       | buy        |
   168  
   169  
   170    Scenario Outline: Referral set member participates in a trade when exiting an auction (0083-RFPR-032)
   171      # Expectation: the members taker volume is not increased, and thus we see no increase in the sets taker volume
   172  
   173      # Cancel the liquidity commitment triggering an auction
   174  
   175      Given the market data for the market "ETH/USD-1-2" should be:
   176        | mark price | trading mode            | target stake | supplied stake | open interest | horizon | min bound | max bound |
   177        | 1000       | TRADING_MODE_CONTINUOUS | 35569        | 10000000       | 1             | 3600    | 973       | 1027      |
   178      When the parties place the following orders:
   179        | party  | market id   | side | volume | price | resulting trades | type       | tif     |
   180        | ptbuy  | ETH/USD-1-2 | buy  | 2      | 970   | 0                | TYPE_LIMIT | TIF_GTC |
   181        | ptsell | ETH/USD-1-2 | sell | 2      | 970   | 0                | TYPE_LIMIT | TIF_GTC |
   182      Then the market data for the market "ETH/USD-1-2" should be:
   183        | mark price | trading mode                    | auction trigger       | target stake | supplied stake | open interest | auction end |
   184        | 1000       | TRADING_MODE_MONITORING_AUCTION | AUCTION_TRIGGER_PRICE | 103505       | 10000000       | 1             | 3           |
   185      And the network moves ahead "1" blocks
   186      And the trading mode should be "TRADING_MODE_MONITORING_AUCTION" for the market "ETH/USD-1-2"
   187  
   188      When the parties place the following orders:
   189        | party   | market id   | side         | volume | price | resulting trades | type       | tif     |
   190        | aux3    | ETH/USD-1-2 | <maker side> | 10     | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   191        | <party> | ETH/USD-1-2 | <taker side> | 10     | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   192      And the network moves ahead "1" epochs
   193      Then the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/USD-1-2"
   194      And the referral set stats for code "referral-code-1" at epoch "1" should have a running volume of 0:
   195        | party    | reward infra factor | reward maker factor | reward liquidity factor | discount infra factor | discount maker factor | discount liquidity factor |
   196        | referee1 | 0                   | 0                   | 0                       | 0                     | 0                     | 0                         |
   197        | referee2 | 0                   | 0                   | 0                       | 0                     | 0                     | 0                         |
   198  
   199      # Check volume not counted for either referrer or referee contributions or for either buy or sell orders
   200      Examples:
   201        | party     | maker side | taker side |
   202        | referrer1 | buy        | sell       |
   203        | referrer1 | sell       | buy        |
   204        | referee1  | buy        | sell       |
   205        | referee1  | sell       | buy        |
   206  
   207  
   208    Scenario Outline: Referral set member has an epoch taker volume greater than the cap (0083-RFPR-034)
   209      # Expectation: the sets running volume is capped to the network parameter
   210  
   211      Given the following network parameters are set:
   212        | name                                                    | value |
   213        | referralProgram.maxPartyNotionalVolumeByQuantumPerEpoch | 1000  |
   214      And the parties place the following orders:
   215        | party   | market id   | side | volume | price | resulting trades | type       | tif     |
   216        | aux1    | ETH/USD-1-1 | buy  | 10     | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   217        | <party> | ETH/USD-1-1 | sell | 10     | 1000  | 1                | TYPE_LIMIT | TIF_GTC |
   218      When the network moves ahead "1" epochs
   219      Then the referral set stats for code "referral-code-1" at epoch "1" should have a running volume of 1000:
   220        | party    | reward infra factor | reward maker factor | reward liquidity factor | discount infra factor | discount maker factor | discount liquidity factor |
   221        | referee1 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   222        | referee2 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   223  
   224      # Check the correct cap is applied for both referrer and referee contributions
   225      Examples:
   226        | party     |
   227        | referrer1 |
   228        | referee1  |
   229  
   230  
   231    Scenario: Referral set member has an epoch taker volume greater than the cap, but the cap is increased before the end of the epoch (0083-RFPR-050)
   232      # Expectation: the sets running volume is capped to the most recent network parameter
   233  
   234      Given the following network parameters are set:
   235        | name                                                    | value |
   236        | referralProgram.maxPartyNotionalVolumeByQuantumPerEpoch | 1000  |
   237      And the parties place the following orders:
   238        | party   | market id   | side | volume | price | resulting trades | type       | tif     |
   239        | aux1    | ETH/USD-1-1 | buy  | 10     | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   240        | <party> | ETH/USD-1-1 | sell | 10     | 1000  | 1                | TYPE_LIMIT | TIF_GTC |
   241      When the following network parameters are set:
   242        | name                                                    | value |
   243        | referralProgram.maxPartyNotionalVolumeByQuantumPerEpoch | 5000  |
   244      And the network moves ahead "1" epochs
   245      Then the referral set stats for code "referral-code-1" at epoch "1" should have a running volume of 5000:
   246        | party    | reward infra factor | reward maker factor | reward liquidity factor | discount infra factor | discount maker factor | discount liquidity factor |
   247        | referee1 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   248        | referee2 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   249  
   250      # Check the correct cap is applied for both referrer and referee contributions
   251      Examples:
   252        | party     |
   253        | referrer1 |
   254        | referee1  |
   255  
   256  
   257    Scenario Outline: Referral set member participates in multiple markets with different quantum settlement assets (0083-RFPR-049)
   258      # Expectation: the members taker volume is increased correctly, and thus we see an increase in the sets taker volume
   259  
   260      Given the parties place the following orders:
   261        | party   | market id    | side         | volume | price | resulting trades | type       | tif     |
   262        | aux1    | ETH/USD-1-1  | <maker side> | 1      | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   263        | <party> | ETH/USD-1-1  | <taker side> | 1      | 1000  | 1                | TYPE_LIMIT | TIF_GTC |
   264        | aux1    | ETH/USD-2-10 | <maker side> | 10     | 10000 | 0                | TYPE_LIMIT | TIF_GTC |
   265        | <party> | ETH/USD-2-10 | <taker side> | 10     | 10000 | 1                | TYPE_LIMIT | TIF_GTC |
   266      When the network moves ahead "1" epochs
   267      Then the referral set stats for code "referral-code-1" at epoch "1" should have a running volume of 20000:
   268        | party    | reward infra factor | reward maker factor | reward liquidity factor | discount infra factor | discount maker factor | discount liquidity factor |
   269        | referee1 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   270        | referee2 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   271  
   272      # Check volume is counted for both referrer and referee contributions and for both buy and sell orders
   273      Examples:
   274        | party     | maker side | taker side |
   275        | referrer1 | buy        | sell       |
   276        | referrer1 | sell       | buy        |
   277        | referee1  | buy        | sell       |
   278        | referee1  | sell       | buy        |
   279  
   280  
   281    Scenario Outline: Multiple referees generate volume in multiple markets with different settlement assets (and quantum) (0083-RFPR-033)
   282      # Expectation: each members taker volume is increased correctly, and thus we see an increase in the sets taker volume
   283  
   284      Given the parties place the following orders:
   285        | party     | market id    | side         | volume | price | resulting trades | type       | tif     |
   286        | aux1      | ETH/USD-1-1  | <maker side> | 1      | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   287        | referrer1 | ETH/USD-1-1  | <taker side> | 1      | 1000  | 1                | TYPE_LIMIT | TIF_GTC |
   288        | aux1      | ETH/USD-1-1  | <maker side> | 1      | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   289        | referee1  | ETH/USD-1-1  | <taker side> | 1      | 1000  | 1                | TYPE_LIMIT | TIF_GTC |
   290        | aux1      | ETH/USD-1-1  | <maker side> | 1      | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   291        | referee2  | ETH/USD-1-1  | <taker side> | 1      | 1000  | 1                | TYPE_LIMIT | TIF_GTC |
   292        | aux1      | ETH/USD-2-10 | <maker side> | 10     | 10000 | 0                | TYPE_LIMIT | TIF_GTC |
   293        | referrer1 | ETH/USD-2-10 | <taker side> | 10     | 10000 | 1                | TYPE_LIMIT | TIF_GTC |
   294        | aux1      | ETH/USD-2-10 | <maker side> | 10     | 10000 | 0                | TYPE_LIMIT | TIF_GTC |
   295        | referee1  | ETH/USD-2-10 | <taker side> | 10     | 10000 | 1                | TYPE_LIMIT | TIF_GTC |
   296        | aux1      | ETH/USD-2-10 | <maker side> | 10     | 10000 | 0                | TYPE_LIMIT | TIF_GTC |
   297        | referee2  | ETH/USD-2-10 | <taker side> | 10     | 10000 | 1                | TYPE_LIMIT | TIF_GTC |
   298      When the network moves ahead "1" epochs
   299      Then the referral set stats for code "referral-code-1" at epoch "1" should have a running volume of 60000:
   300        | party    | reward infra factor | reward maker factor | reward liquidity factor | discount infra factor | discount maker factor | discount liquidity factor |
   301        | referee1 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   302        | referee2 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   303  
   304      # Check volume is counted for both referrer and referee contributions and for both buy and sell orders
   305      Examples:
   306        | maker side | taker side |
   307        | buy        | sell       |
   308        | sell       | buy        |
   309  
   310  
   311    Scenario Outline: Members generate consistent taker volume over a number of epochs (0083-RFPR-035)
   312      # Expectation: only epoch taker volume from the last n epochs should contribute to the sets running taker volume
   313  
   314      Given the referral program:
   315        | end of program       | window length   | benefit tiers | staking tiers |
   316        | 2023-12-12T12:12:12Z | <window length> | rbt           | rst           |
   317  
   318      Given the parties place the following orders:
   319        | party    | market id   | side | volume | price | resulting trades | type       | tif     |
   320        | aux1     | ETH/USD-1-1 | buy  | 1      | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   321        | referee1 | ETH/USD-1-1 | sell | 1      | 1000  | 1                | TYPE_LIMIT | TIF_GTC |
   322      When the network moves ahead "1" epochs
   323      Then the referral set stats for code "referral-code-1" at epoch "1" should have a running volume of <running volume 1>:
   324        | party    | reward infra factor | reward maker factor | reward liquidity factor | discount infra factor | discount maker factor | discount liquidity factor |
   325        | referee1 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   326        | referee2 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   327  
   328      Given the parties place the following orders:
   329        | party    | market id   | side | volume | price | resulting trades | type       | tif     |
   330        | aux1     | ETH/USD-1-1 | buy  | 1      | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   331        | referee1 | ETH/USD-1-1 | sell | 1      | 1000  | 1                | TYPE_LIMIT | TIF_GTC |
   332      When the network moves ahead "1" epochs
   333      Then the referral set stats for code "referral-code-1" at epoch "2" should have a running volume of <running volume 2>:
   334        | party    | reward infra factor | reward maker factor | reward liquidity factor | discount infra factor | discount maker factor | discount liquidity factor |
   335        | referee1 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   336        | referee2 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   337  
   338      Given the parties place the following orders:
   339        | party    | market id   | side | volume | price | resulting trades | type       | tif     |
   340        | aux1     | ETH/USD-1-1 | buy  | 1      | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   341        | referee1 | ETH/USD-1-1 | sell | 1      | 1000  | 1                | TYPE_LIMIT | TIF_GTC |
   342      When the network moves ahead "1" epochs
   343      Then the referral set stats for code "referral-code-1" at epoch "3" should have a running volume of <running volume 3>:
   344        | party    | reward infra factor | reward maker factor | reward liquidity factor | discount infra factor | discount maker factor | discount liquidity factor |
   345        | referee1 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   346        | referee2 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   347  
   348      Given the parties place the following orders:
   349        | party    | market id   | side | volume | price | resulting trades | type       | tif     |
   350        | aux1     | ETH/USD-1-1 | buy  | 1      | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
   351        | referee1 | ETH/USD-1-1 | sell | 1      | 1000  | 1                | TYPE_LIMIT | TIF_GTC |
   352      When the network moves ahead "1" epochs
   353      Then the referral set stats for code "referral-code-1" at epoch "4" should have a running volume of <running volume 4>:
   354        | party    | reward infra factor | reward maker factor | reward liquidity factor | discount infra factor | discount maker factor | discount liquidity factor |
   355        | referee1 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   356        | referee2 | 0.11                | 0.12                | 0.13                    | 0.14                  | 0.15                  | 0.16                      |
   357  
   358      # Check running volume correctly calculated for a variety of window lengths
   359      Examples:
   360        | window length | running volume 1 | running volume 2 | running volume 3 | running volume 4 |
   361        | 1             | 10000            | 20000            | 10000            | 10000            |
   362        | 2             | 10000            | 30000            | 30000            | 20000            |
   363        | 3             | 10000            | 30000            | 40000            | 40000            |