code.vegaprotocol.io/vega@v0.79.0/core/integration/features/margin/0019-MCAL-206.feature (about) 1 Feature: Amending an order during auction for a party in isolated margin such that they can't cover the order and have all of their orders cancelled 2 Background: 3 Given the average block duration is "1" 4 And the following network parameters are set: 5 | name | value | 6 | network.markPriceUpdateMaximumFrequency | 0s | 7 | limits.markets.maxPeggedOrders | 6 | 8 | market.auction.minimumDuration | 1 | 9 And the price monitoring named "my-price-monitoring-1": 10 | horizon | probability | auction extension | 11 | 5 | 0.99 | 6 | 12 13 And the liquidity monitoring parameters: 14 | name | triggering ratio | time window | scaling factor | 15 | lqm-params | 0.00 | 24h | 1e-9 | 16 And the simple risk model named "simple-risk-model": 17 | long | short | max move up | min move down | probability of trading | 18 | 0.1 | 0.2 | 100 | -100 | 0.2 | 19 And the markets: 20 | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | position decimal places | sla params | 21 | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | my-price-monitoring-1 | default-eth-for-future | 0.25 | 0 | 2 | default-futures | 22 23 @MCAL206 24 Scenario: replicated panic when amending an order during auction 25 Given the parties deposit on asset's general account the following amount: 26 | party | asset | amount | 27 | trader1 | USD | 100000000000 | 28 | trader2 | USD | 100000000000 | 29 | trader3 | USD | 29340 | 30 | trader4 | USD | 42250 | 31 | trader5 | USD | 68000 | 32 | trader6 | USD | 68400 | 33 | lprov1 | USD | 100000000000 | 34 And the markets are updated: 35 | id | linear slippage factor | 36 | ETH/FEB23 | 0.02 | 37 And the parties place the following orders with ticks: 38 | party | market id | side | volume | price | resulting trades | type | tif | reference | 39 | trader1 | ETH/FEB23 | buy | 1000 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | | 40 | trader1 | ETH/FEB23 | buy | 300 | 15600 | 0 | TYPE_LIMIT | TIF_GTC | | 41 | trader1 | ETH/FEB23 | buy | 100 | 15700 | 0 | TYPE_LIMIT | TIF_GTC | | 42 | trader1 | ETH/FEB23 | buy | 300 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | | 43 | trader3 | ETH/FEB23 | sell | 300 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | | 44 | trader2 | ETH/FEB23 | sell | 300 | 16200 | 0 | TYPE_LIMIT | TIF_GTC | | 45 | trader3 | ETH/FEB23 | sell | 300 | 16800 | 0 | TYPE_LIMIT | TIF_GTC | t3-sell-1 | 46 | trader4 | ETH/FEB23 | sell | 1000 | 16900 | 0 | TYPE_LIMIT | TIF_GTC | t4-sell-1 | 47 | trader5 | ETH/FEB23 | sell | 1000 | 17000 | 0 | TYPE_LIMIT | TIF_GTC | t5-sell-1 | 48 | trader6 | ETH/FEB23 | sell | 1000 | 17100 | 0 | TYPE_LIMIT | TIF_GTC | t6-sell-1 | 49 50 When the network moves ahead "2" blocks 51 Then the market data for the market "ETH/FEB23" should be: 52 | mark price | trading mode | horizon | min bound | max bound | target stake | supplied stake | open interest | 53 | 15800 | TRADING_MODE_CONTINUOUS | 5 | 15701 | 15899 | 0 | 0 | 300 | 54 55 When the parties submit update margin mode: 56 | party | market | margin_mode | margin_factor | error | 57 | trader3 | ETH/FEB23 | isolated margin | 0.3 | | 58 | trader4 | ETH/FEB23 | isolated margin | 0.25 | | 59 | trader5 | ETH/FEB23 | isolated margin | 0.4 | | 60 | trader6 | ETH/FEB23 | isolated margin | 0.4 | | 61 Then the parties should have the following margin levels: 62 | party | market id | maintenance | margin mode | margin factor | order | 63 | trader3 | ETH/FEB23 | 10428 | isolated margin | 0.3 | 15120 | 64 | trader4 | ETH/FEB23 | 0 | isolated margin | 0.25 | 42250 | 65 | trader5 | ETH/FEB23 | 0 | isolated margin | 0.4 | 68000 | 66 | trader6 | ETH/FEB23 | 0 | isolated margin | 0.4 | 68400 | 67 68 #order margin: 16800*3*0.3=15120 69 And the parties should have the following account balances: 70 | party | asset | market id | margin | general | order margin | 71 | trader3 | USD | ETH/FEB23 | 14220 | 0 | 15120 | 72 73 When the parties place the following orders with ticks: 74 | party | market id | side | volume | price | resulting trades | type | tif | reference | 75 | trader1 | ETH/FEB23 | buy | 100 | 16200 | 0 | TYPE_LIMIT | TIF_GTC | t3-first | 76 77 Then the market data for the market "ETH/FEB23" should be: 78 | mark price | trading mode | 79 | 15800 | TRADING_MODE_MONITORING_AUCTION | 80 81 When the parties amend the following orders: 82 | party | reference | price | size delta | tif | error | 83 | trader3 | t3-sell-1 | 16900 | 0 | TIF_GTC | margin check failed | 84 | trader4 | t4-sell-1 | 16800 | 100 | TIF_GTC | margin check failed | 85 | trader5 | t5-sell-1 | 17000 | -100 | TIF_GTC | | 86 | trader6 | t6-sell-1 | 17100 | 100 | TIF_GTC | margin check failed | 87 88 When the network moves ahead "7" blocks 89 90 And the orders should have the following status: 91 | party | reference | status | 92 | trader3 | t3-sell-1 | STATUS_STOPPED | 93 | trader4 | t4-sell-1 | STATUS_STOPPED | 94 | trader5 | t5-sell-1 | STATUS_ACTIVE | 95 | trader6 | t6-sell-1 | STATUS_STOPPED | 96 97 Then the market data for the market "ETH/FEB23" should be: 98 | mark price | trading mode | 99 | 16200 | TRADING_MODE_CONTINUOUS | 100 101 102 103 104 105