code.vegaprotocol.io/vega@v0.79.0/core/integration/features/amm/0090-VAMM-auction-refine.feature (about)

     1  Feature: vAMM rebasing when created or amended
     2  
     3    Background:
     4      Given the average block duration is "1"
     5      And the margin calculator named "margin-calculator-1":
     6        | search factor | initial factor | release factor |
     7        | 1.2           | 1.5            | 1.7            |
     8      And the simple risk model named "my-simple-risk-model":
     9        | long                   | short                  | max move up | min move down | probability of trading |
    10        | 0.00984363574304481    | 0.009937604878885509 | -1          | -1            | 0.2                    |
    11      And the liquidity monitoring parameters:
    12        | name       | triggering ratio | time window | scaling factor |
    13        | lqm-params | 1.00             | 20s         | 1              |
    14        
    15      And the following network parameters are set:
    16        | name                                                | value |
    17        | market.value.windowLength                           | 60s   |
    18        | network.markPriceUpdateMaximumFrequency             | 0s    |
    19        | limits.markets.maxPeggedOrders                      | 6     |
    20        | market.auction.minimumDuration                      | 1     |
    21        | market.fee.factors.infrastructureFee                | 0.001 |
    22        | market.fee.factors.makerFee                         | 0.004 |
    23        | spam.protection.max.stopOrdersPerMarket             | 5     |
    24        | market.liquidity.equityLikeShareFeeFraction         | 1     |
    25  	    | market.amm.minCommitmentQuantum                     | 1     |
    26        | market.liquidity.bondPenaltyParameter               | 0.2   |
    27        | market.liquidity.stakeToCcyVolume                   | 1     |
    28        | market.liquidity.successorLaunchWindowLength        | 1h    |
    29        | market.liquidity.sla.nonPerformanceBondPenaltySlope | 0   |
    30        | market.liquidity.sla.nonPerformanceBondPenaltyMax   | 0.6   |
    31        | validators.epoch.length                             | 10s   |
    32        | market.liquidity.earlyExitPenalty                   | 0.25  |
    33        | market.liquidity.maximumLiquidityFeeFactorLevel     | 0.25  |
    34  
    35      And the following assets are registered:
    36        | id  | decimal places |
    37        | USD | 18             |
    38      And the fees configuration named "fees-config-1":
    39        | maker fee | infrastructure fee |
    40        | 0.0004    | 0.001              |
    41  
    42      And the liquidity sla params named "SLA-22":
    43        | price range | commitment min time fraction | performance hysteresis epochs | sla competition factor |
    44        | 0.5         | 0.6                          | 1                             | 1.0                    |
    45  
    46      And the markets:
    47        | id        | quote name | asset | liquidity monitoring | risk model            | margin calculator   | auction duration | fees          | price monitoring | data source config     | linear slippage factor | quadratic slippage factor | sla params | position decimal places | decimal places | allowed empty amm levels | linear slippage factor |
    48        | ETH/MAR22 | USD        | USD   | lqm-params           | my-simple-risk-model  | margin-calculator-1 | 2                | fees-config-1 | default-none     | default-eth-for-future | 1e0                    | 0                         | SLA-22     | 3                       | 2              | 100                      | 0.001                  |
    49  
    50      # Setting up the accounts and vAMM submission now is part of the background, because we'll be running scenarios 0090-VAMM-006 through 0090-VAMM-014 on this setup
    51      Given the parties deposit on asset's general account the following amount:
    52        | party  | asset | amount                    |
    53        | lp1    | USD   | 1000000000000000000000000 |
    54        | lp2    | USD   | 1000000000000000000000000 |
    55        | lp3    | USD   | 1000000000000000000000000 |
    56        | party1 | USD   | 1000000000000000000000000 |
    57        | party2 | USD   | 1000000000000000000000000 |
    58        | party3 | USD   | 1000000000000000000000000 |
    59        | party4 | USD   | 1000000000000000000000000 |
    60        | party5 | USD   | 1000000000000000000000000 |
    61        | vamm1  | USD   | 1000000000000000000000000 |
    62        | vamm2  | USD   | 1000000000000000000000000 |
    63        | vamm3  | USD   | 1000000000000000000000000 |
    64        | vamm4  | USD   | 1000000000000000000000000 |
    65  
    66    @VAMM @NoPerp
    67    Scenario: two crossed AMMs at opening auction end where orderbook shape refining is required
    68  
    69      # 39.98867525723519 11.328128751075417
    70  
    71      Then the parties submit the following AMM:
    72        | party | market id | amount                  | slippage | base    | upper bound    | proposed fee | lower leverage    | upper leverage      |
    73        | vamm1 | ETH/MAR22 | 2852341107003410000000  | 0.05     | 218564  | 281710         | 0.03         | 39.98867525723519 | 11.328128751075417  |
    74      Then the AMM pool status should be:
    75        | party | market id | amount                 | status        | base    | upper bound | lower leverage    | upper leverage      |
    76        | vamm1 | ETH/MAR22 | 2852341107003410000000 | STATUS_ACTIVE | 218564  | 281710      | 39.98867525723519 | 11.328128751075417  |
    77  
    78      And the market data for the market "ETH/MAR22" should be:
    79        | trading mode                 | indicative price | indicative volume |
    80        | TRADING_MODE_OPENING_AUCTION | 0                | 0                 |
    81     
    82      Then the parties submit the following AMM:
    83        | party | market id | amount                  | slippage | base   | lower bound | upper bound | proposed fee | lower leverage   | upper leverage | 
    84        | vamm2 | ETH/MAR22 | 8514633449978613000000  | 0.05     |  372056 | 172861     | 452663      | 0.03         | 87.09361695065867 | 92.95166117996257 |
    85      Then the AMM pool status should be:
    86        | party | market id | amount                 | status        | base     | lower bound |  upper bound |lower leverage   | upper leverage | 
    87        | vamm2 | ETH/MAR22 | 8514633449978613000000 | STATUS_ACTIVE | 372056  | 172861      | 452663      | 87.09361695065867 | 92.95166117996257 |
    88  
    89      
    90      And set the following AMM sub account aliases:
    91        | party | market id | alias    |
    92        | vamm1 | ETH/MAR22 | vamm1-id |
    93        | vamm2 | ETH/MAR22 | vamm2-id |
    94  
    95  
    96  
    97      And the parties place the following orders:
    98        | party    | market id | side   | volume   | price    | resulting trades | type       | tif     |
    99        |  party1  | ETH/MAR22 |  buy   |  1       |  2       | 0                | TYPE_LIMIT | TIF_GTC |
   100        |  party1  | ETH/MAR22 |  buy   |  1       |  2       | 0                | TYPE_LIMIT | TIF_GTC |
   101        |  party2  | ETH/MAR22 |  buy   |  26      |  398908  | 0                | TYPE_LIMIT | TIF_GTC |
   102        |  party2  | ETH/MAR22 |  buy   |  20      |  400384  | 0                | TYPE_LIMIT | TIF_GTC |
   103        |  party3  | ETH/MAR22 |  buy   |  36825   |  400600  | 0                | TYPE_LIMIT | TIF_GTC |
   104        |  party3  | ETH/MAR22 |  buy   |  35099   |  400602  | 0                | TYPE_LIMIT | TIF_GTC |
   105        |  party3  | ETH/MAR22 |  buy   |  33454   |  400604  | 0                | TYPE_LIMIT | TIF_GTC |
   106        |  party3  | ETH/MAR22 |  buy   |  31886   |  400606  | 0                | TYPE_LIMIT | TIF_GTC |
   107        |  party3  | ETH/MAR22 |  buy   |  30392   |  400608  | 0                | TYPE_LIMIT | TIF_GTC |
   108        |  party3  | ETH/MAR22 |  buy   |  28967   |  400610  | 0                | TYPE_LIMIT | TIF_GTC |
   109        |  party3  | ETH/MAR22 |  buy   |  27610   |  400612  | 0                | TYPE_LIMIT | TIF_GTC |
   110        |  party3  | ETH/MAR22 |  buy   |  26316   |  400614  | 0                | TYPE_LIMIT | TIF_GTC |
   111        |  party2  | ETH/MAR22 |  buy   |  21      |  400616  | 0                | TYPE_LIMIT | TIF_GTC |
   112        |  party3  | ETH/MAR22 |  buy   |  25082   |  400616  | 0                | TYPE_LIMIT | TIF_GTC |
   113        |  party3  | ETH/MAR22 |  buy   |  23907   |  400618  | 0                | TYPE_LIMIT | TIF_GTC |
   114        |  party4  | ETH/MAR22 |  buy   |  250000  |  402896  | 0                | TYPE_LIMIT | TIF_GTC |
   115        |  party4  | ETH/MAR22 |  buy   |  250000  |  402904  | 0                | TYPE_LIMIT | TIF_GTC |
   116        |  party4  | ETH/MAR22 |  buy   |  250000  |  403052  | 0                | TYPE_LIMIT | TIF_GTC |
   117        |  party4  | ETH/MAR22 |  buy   |  250000  |  403682  | 0                | TYPE_LIMIT | TIF_GTC |
   118        |  party4  | ETH/MAR22 |  buy   |  250000  |  403916  | 0                | TYPE_LIMIT | TIF_GTC |
   119        |  party4  | ETH/MAR22 |  buy   |  250000  |  404624  | 0                | TYPE_LIMIT | TIF_GTC |
   120        |  party3  | ETH/MAR22 |  sell  |  36823   |  400638  | 0                | TYPE_LIMIT | TIF_GTC |
   121        |  party3  | ETH/MAR22 |  sell  |  35097   |  400636  | 0                | TYPE_LIMIT | TIF_GTC |
   122        |  party3  | ETH/MAR22 |  sell  |  33452   |  400634  | 0                | TYPE_LIMIT | TIF_GTC |
   123        |  party3  | ETH/MAR22 |  sell  |  31885   |  400632  | 0                | TYPE_LIMIT | TIF_GTC |
   124        |  party3  | ETH/MAR22 |  sell  |  30390   |  400630  | 0                | TYPE_LIMIT | TIF_GTC |
   125        |  party3  | ETH/MAR22 |  sell  |  28966   |  400628  | 0                | TYPE_LIMIT | TIF_GTC |
   126        |  party3  | ETH/MAR22 |  sell  |  27608   |  400626  | 0                | TYPE_LIMIT | TIF_GTC |
   127        |  party3  | ETH/MAR22 |  sell  |  26315   |  400624  | 0                | TYPE_LIMIT | TIF_GTC |
   128        |  party3  | ETH/MAR22 |  sell  |  25081   |  400622  | 0                | TYPE_LIMIT | TIF_GTC |
   129        |  party3  | ETH/MAR22 |  sell  |  23906   |  400620  | 0                | TYPE_LIMIT | TIF_GTC |
   130        |  party2  | ETH/MAR22 |  sell  |  25      |  399916  | 0                | TYPE_LIMIT | TIF_GTC |
   131        |  party2  | ETH/MAR22 |  sell  |  23      |  399688  | 0                | TYPE_LIMIT | TIF_GTC |
   132        |  party2  | ETH/MAR22 |  sell  |  24      |  399064  | 0                | TYPE_LIMIT | TIF_GTC |
   133        |  party5  | ETH/MAR22 |  sell  |  250000  |  396612  | 0                | TYPE_LIMIT | TIF_GTC |
   134        |  party5  | ETH/MAR22 |  sell  |  250000  |  395916  | 0                | TYPE_LIMIT | TIF_GTC |
   135        |  party5  | ETH/MAR22 |  sell  |  250000  |  395688  | 0                | TYPE_LIMIT | TIF_GTC |
   136        |  party5  | ETH/MAR22 |  sell  |  250000  |  395072  | 0                | TYPE_LIMIT | TIF_GTC |
   137        |  party5  | ETH/MAR22 |  sell  |  250000  |  394926  | 0                | TYPE_LIMIT | TIF_GTC |
   138        |  party5  | ETH/MAR22 |  sell  |  250000  |  394920  | 0                | TYPE_LIMIT | TIF_GTC |
   139  
   140  
   141      # now place some pegged orders which will cause a panic if the uncrossing is crossed
   142      When the parties place the following pegged orders:
   143        | party | market id | side | volume | pegged reference | offset |
   144        | lp3   | ETH/MAR22 | buy  | 100    | BID              | 1      |
   145        | lp3   | ETH/MAR22 | sell | 100    | ASK              | 1      |
   146  
   147     And the network moves ahead "1" blocks
   148  
   149     And the market data for the market "ETH/MAR22" should be:
   150        | trading mode                 | indicative price | indicative volume |
   151        | TRADING_MODE_OPENING_AUCTION | 400267              | 1511468                |
   152  
   153     When the opening auction period ends for market "ETH/MAR22"
   154        
   155      Then the network moves ahead "1" blocks
   156  
   157      # two AMMs are now prices at ~100 which is between their base values
   158      And the market data for the market "ETH/MAR22" should be:
   159        | mark price    | trading mode             |
   160        | 400618        | TRADING_MODE_CONTINUOUS  |