code.vegaprotocol.io/vega@v0.79.0/core/integration/features/amm/0090-VAMM-023.feature (about) 1 Feature: Test cancelled vAMM becomes active on amend. 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 log normal risk model named "log-normal-risk-model": 9 | risk aversion | tau | mu | r | sigma | 10 | 0.001 | 0.0011407711613050422 | 0 | 0.9 | 3.0 | 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.1 | 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 #risk factor short:3.5569036 35 #risk factor long:0.801225765 36 And the following assets are registered: 37 | id | decimal places | 38 | USD | 0 | 39 And the fees configuration named "fees-config-1": 40 | maker fee | infrastructure fee | 41 | 0.0004 | 0.001 | 42 And the price monitoring named "price-monitoring": 43 | horizon | probability | auction extension | 44 | 3600 | 0.95 | 3 | 45 46 And the liquidity sla params named "SLA-22": 47 | price range | commitment min time fraction | performance hysteresis epochs | sla competition factor | 48 | 0.5 | 0.6 | 1 | 1.0 | 49 50 And the markets: 51 | 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 | 52 | ETH/MAR22 | USD | USD | lqm-params | log-normal-risk-model | margin-calculator-1 | 2 | fees-config-1 | price-monitoring | default-eth-for-future | 1e0 | 0 | SLA-22 | 53 54 @VAMM 55 Scenario: 0090-VAMM-023: If a vAMM is cancelled and set into Reduce-Only mode, then an amend is sent by the user who created it, the vAMM is amended according to those instructions and is moved out of Reduce-Only mode back into normal operation. 56 Given the parties deposit on asset's general account the following amount: 57 | party | asset | amount | 58 | lp1 | USD | 100000 | 59 | lp2 | USD | 100000 | 60 | lp3 | USD | 100000 | 61 | party1 | USD | 100000 | 62 | party2 | USD | 100000 | 63 | party3 | USD | 100000 | 64 | vamm1 | USD | 100000 | 65 66 When the parties submit the following liquidity provision: 67 | id | party | market id | commitment amount | fee | lp type | 68 | lp_1 | lp1 | ETH/MAR22 | 600 | 0.02 | submission | 69 | lp_2 | lp2 | ETH/MAR22 | 400 | 0.015 | submission | 70 Then the network moves ahead "4" blocks 71 And the current epoch is "0" 72 73 And the parties place the following orders: 74 | party | market id | side | volume | price | resulting trades | type | tif | reference | 75 | party3 | ETH/MAR22 | buy | 10 | 85 | 0 | TYPE_LIMIT | TIF_GTC | | 76 | party1 | ETH/MAR22 | buy | 10 | 90 | 0 | TYPE_LIMIT | TIF_GTC | | 77 | party1 | ETH/MAR22 | buy | 1 | 100 | 0 | TYPE_LIMIT | TIF_GTC | | 78 | party2 | ETH/MAR22 | sell | 10 | 110 | 0 | TYPE_LIMIT | TIF_GTC | | 79 | party2 | ETH/MAR22 | sell | 1 | 100 | 0 | TYPE_LIMIT | TIF_GTC | | 80 | party3 | ETH/MAR22 | sell | 1 | 120 | 0 | TYPE_LIMIT | TIF_GTC | | 81 | lp1 | ETH/MAR22 | buy | 10 | 95 | 0 | TYPE_LIMIT | TIF_GTC | lp1-b | 82 | lp1 | ETH/MAR22 | sell | 10 | 106 | 0 | TYPE_LIMIT | TIF_GTC | lp1-s | 83 When the opening auction period ends for market "ETH/MAR22" 84 Then the following trades should be executed: 85 | buyer | price | size | seller | 86 | party1 | 100 | 1 | party2 | 87 88 And the market data for the market "ETH/MAR22" should be: 89 | mark price | trading mode | target stake | supplied stake | open interest | ref price | mid price | static mid price | 90 | 100 | TRADING_MODE_CONTINUOUS | 39 | 1000 | 1 | 100 | 100 | 100 | 91 92 # trade to move the mark price to 105 93 When the parties place the following orders: 94 | party | market id | side | volume | price | resulting trades | type | tif | reference | 95 | party1 | ETH/MAR22 | buy | 10 | 105 | 0 | TYPE_LIMIT | TIF_GTC | | 96 | party2 | ETH/MAR22 | sell | 10 | 105 | 1 | TYPE_LIMIT | TIF_GTC | | 97 98 # Now submit our vAMM, no trades should happen 99 Then the parties submit the following AMM: 100 | party | market id | amount | slippage | base | lower bound | upper bound | lower leverage | upper leverage | proposed fee | 101 | vamm1 | ETH/MAR22 | 100000 | 0.1 | 100 | 85 | 150 | 0.25 | 0.25 | 0.01 | 102 Then the AMM pool status should be: 103 | party | market id | amount | status | base | lower bound | upper bound | lower leverage | upper leverage | 104 | vamm1 | ETH/MAR22 | 100000 | STATUS_ACTIVE | 100 | 85 | 150 | 0.25 | 0.25 | 105 106 And set the following AMM sub account aliases: 107 | party | market id | alias | 108 | vamm1 | ETH/MAR22 | vamm1-acc | 109 And the following transfers should happen: 110 | from | from account | to | to account | market id | amount | asset | is amm | type | 111 | vamm1 | ACCOUNT_TYPE_GENERAL | vamm1-acc | ACCOUNT_TYPE_GENERAL | | 100000 | USD | true | TRANSFER_TYPE_AMM_LOW | 112 And the parties should have the following account balances: 113 | party | asset | market id | general | margin | is amm | 114 | vamm1 | USD | | 0 | | | 115 | vamm1-acc | USD | ETH/MAR22 | 100000 | | true | 116 117 # Now cancel with reduce-only 118 When the parties cancel the following AMM: 119 | party | market id | method | 120 | vamm1 | ETH/MAR22 | METHOD_REDUCE_ONLY | 121 Then the AMM pool status should be: 122 | party | market id | amount | status | base | lower bound | upper bound | lower leverage | upper leverage | 123 | vamm1 | ETH/MAR22 | 100000 | STATUS_REDUCE_ONLY | 100 | 85 | 150 | 0.25 | 0.25 | 124 # Balance is not yet released 125 And the parties should have the following account balances: 126 | party | asset | market id | general | margin | is amm | 127 | vamm1 | USD | | 0 | | | 128 | vamm1-acc | USD | ETH/MAR22 | 100000 | | true | 129 130 # Now amend the reduce-only vAMM submission, and check to see if its status returns back to active 131 When the parties amend the following AMM: 132 | party | market id | slippage | base | lower bound | upper bound | lower leverage | upper leverage | 133 | vamm1 | ETH/MAR22 | 0.1 | 105 | 90 | 155 | 0.25 | 0.25 | 134 Then the AMM pool status should be: 135 | party | market id | amount | status | base | lower bound | upper bound | lower leverage | upper leverage | 136 | vamm1 | ETH/MAR22 | 100000 | STATUS_ACTIVE | 105 | 90 | 155 | 0.25 | 0.25 | 137 138 # Now trigger a MTM settlement, this should not change anything, whereas without the amend it'd move the vAMM to the cancelled status. 139 When the network moves ahead "1" blocks 140 Then the AMM pool status should be: 141 | party | market id | amount | status | base | lower bound | upper bound | lower leverage | upper leverage | 142 | vamm1 | ETH/MAR22 | 100000 | STATUS_ACTIVE | 105 | 90 | 155 | 0.25 | 0.25 | 143 And the parties should have the following account balances: 144 | party | asset | market id | general | margin | is amm | 145 | vamm1 | USD | | 0 | | | 146 | vamm1-acc | USD | ETH/MAR22 | 100000 | | true | 147 # The mark price has now moved to 105 148 And the market data for the market "ETH/MAR22" should be: 149 | mark price | trading mode | target stake | supplied stake | open interest | ref price | mid price | static mid price | 150 | 105 | TRADING_MODE_CONTINUOUS | 461 | 1000 | 11 | 104 | 105 | 105 |