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 |