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