code.vegaprotocol.io/vega@v0.79.0/core/integration/features/spot/orders/0014-ORDT-113.feature (about)

     1  Feature: Spot market
     2  
     3    Background:
     4      Given time is updated to "2024-01-01T00:00:00Z"
     5  
     6      Given the following network parameters are set:
     7        | name                                                | value |
     8        | network.markPriceUpdateMaximumFrequency             | 0s    |
     9        | market.value.windowLength                           | 1h    |
    10      
    11      Given the following assets are registered:
    12        | id  | decimal places |
    13        | ETH | 2              |
    14        | BTC | 2              |
    15  
    16      Given the fees configuration named "fees-config-1":
    17        | maker fee | infrastructure fee |
    18        | 0.01      | 0.03               |
    19      Given the log normal risk model named "lognormal-risk-model-1":
    20        | risk aversion | tau  | mu | r   | sigma |
    21        | 0.001         | 0.01 | 0  | 0.0 | 1.2   |
    22      And the price monitoring named "price-monitoring-1":
    23        | horizon | probability | auction extension |
    24        | 360000  | 0.999       | 1                 |
    25  
    26      And the spot markets:
    27        | id      | name    | base asset | quote asset | risk model             | auction duration | fees          | price monitoring   | decimal places | position decimal places | sla params    |
    28        | BTC/ETH | BTC/ETH | BTC        | ETH         | lognormal-risk-model-1 | 1                | fees-config-1 | price-monitoring-1 | 2              | 2                       | default-basic |
    29  
    30      # setup accounts
    31      Given the parties deposit on asset's general account the following amount:
    32        | party  | asset | amount |
    33        | party1 | ETH   | 10000  |
    34        | party2 | ETH   | 10000  |
    35        | party4 | BTC   | 1000   |
    36        | party5 | BTC   | 1000   |
    37      And the average block duration is "1"
    38  
    39      # Place some orders to get out of auction
    40      And the parties place the following orders:
    41        | party  | market id | side | volume | price | resulting trades | type       | tif     |
    42        | party1 | BTC/ETH   | buy  | 1      | 1000  | 0                | TYPE_LIMIT | TIF_GFA |
    43        | party5 | BTC/ETH   | sell | 1      | 1000  | 0                | TYPE_LIMIT | TIF_GTC |
    44  
    45      And the opening auction period ends for market "BTC/ETH"
    46      When the network moves ahead "1" blocks
    47      Then the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "BTC/ETH"
    48      And the mark price should be "1000" for the market "BTC/ETH"
    49  
    50    Scenario: For a price level with multiple iceberg orders, if an aggressive order hits this price level,
    51              any volume greater than the displayed volume at a level is split proportionally between the
    52              hidden components of iceberg orders at that price level If there are three iceberg orders with
    53              remaining volume 200 lots, 100 lots and 100 lots, an order for 600 lots would be split 200 to
    54              the first order and 100 to the two 100 lot orders, with 200 lots then taking farther price levels.
    55              (0014-ORDT-113)
    56  
    57      # Place multiple iceberg orders to rest on the book
    58      When the parties place the following iceberg orders:
    59        | party  | market id | side | volume | price | resulting trades | type       | tif     | peak size | minimum visible size | reference |
    60        | party1 | BTC/ETH   | buy  | 200     | 1000  | 0               | TYPE_LIMIT | TIF_GTC | 5         | 1                    | iceberg1  |
    61        | party2 | BTC/ETH   | buy  | 100     | 1000  | 0               | TYPE_LIMIT | TIF_GTC | 5         | 1                    | iceberg2  |
    62        | party1 | BTC/ETH   | buy  | 100     | 1000  | 0               | TYPE_LIMIT | TIF_GTC | 5         | 1                    | iceberg3  |
    63  
    64      # Place an aggressive order to match the icebergs
    65      And the parties place the following orders:
    66        | party  | market id | side | volume | price | resulting trades | type       | tif     | reference |
    67        | party4 | BTC/ETH   | sell | 600    | 1000  | 3                | TYPE_LIMIT | TIF_GTC | sell1     |
    68  
    69      Then the orders should have the following states:
    70        | party  | market id | side | price | remaining | volume | reference | status         |
    71        | party1 | BTC/ETH   | buy  | 1000  | 0         | 200     | iceberg1  | STATUS_FILLED |             
    72        | party2 | BTC/ETH   | buy  | 1000  | 0         | 100     | iceberg2  | STATUS_FILLED |             
    73        | party1 | BTC/ETH   | buy  | 1000  | 0         | 100     | iceberg3  | STATUS_FILLED |             
    74        | party4 | BTC/ETH   | sell | 1000  | 200       | 600     | sell1     | STATUS_ACTIVE | 
    75  
    76      # Check that the orders have been filled with totals of 150, 75 and 75.
    77      Then the iceberg orders should have the following states:
    78        | party  | market id | side | visible volume | price | status        | reserved volume |
    79        | party1 | BTC/ETH   | buy  | 0              | 1000  | STATUS_FILLED | 0               |
    80        | party2 | BTC/ETH   | buy  | 0              | 1000  | STATUS_FILLED | 0               |
    81        | party1 | BTC/ETH   | buy  | 0              | 1000  | STATUS_FILLED | 0               |
    82  
    83      # The icebergs have all gone but we 200 volume left for the normal order
    84      Then the order book should have the following volumes for market "BTC/ETH":
    85        | side | price | volume |
    86        | buy  | 1000  | 0      |
    87        | sell | 1000  | 200    |