code.vegaprotocol.io/vega@v0.79.0/core/integration/features/mark-price/0009-MRKP-124.feature (about)

     1  Feature: Test book mark price
     2    Background:
     3      Given the average block duration is "1"
     4      Given the following network parameters are set:
     5        | name                                    | value |
     6        | network.markPriceUpdateMaximumFrequency | 4s    |
     7      And the perpetual oracles from "0xCAFECAFE1":
     8        | name        | asset | settlement property | settlement type | schedule property | schedule type  | margin funding factor | interest rate | clamp lower bound | clamp upper bound | quote name | settlement decimals |
     9        | perp-oracle | USD   | perp.ETH.value      | TYPE_INTEGER    | perp.funding.cue  | TYPE_TIMESTAMP | 0.5                   | 0.05          | 0.1               | 0.9               | ETH        | 18                  |
    10      And the liquidity monitoring parameters:
    11        | name       | triggering ratio | time window | scaling factor |
    12        | lqm-params | 0.00             | 24h         | 1e-9           |
    13      And the simple risk model named "simple-risk-model":
    14        | long | short | max move up | min move down | probability of trading |
    15        | 0.1  | 0.1   | 100         | -100          | 0.2                    |
    16      And the markets:
    17        | 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      | price type | decay weight | decay power | cash amount | source weights | source staleness tolerance | market type |
    18        | ETH/FEB23 | ETH        | USD   | lqm-params           | simple-risk-model | default-margin-calculator | 1                | default-none | default-none     | default-eth-for-future | 0.25                   | 0                         | default-futures | weight     | 0.5          | 2           | 50000       | 0,1,0,0        | 6s,4s,24h0m0s,1h25m0s      | future      |
    19        | ETH/FEB22 | ETH        | USD   | lqm-params           | simple-risk-model | default-margin-calculator | 1                | default-none | default-none     | perp-oracle            | 0.25                   | 0                         | default-futures | weight     | 0.5          | 2           | 50000       | 0,1,0,0        | 6s,4s,24h0m0s,1h25m0s      | perp        |
    20  
    21    Scenario: 001 check mark price using order price with cash amount 50000 USD
    22      Given the parties deposit on asset's general account the following amount:
    23        | party             | asset | amount       |
    24        | buySideProvider   | USD   | 100000000000 |
    25        | sellSideProvider  | USD   | 100000000000 |
    26        | party             | USD   | 48050        |
    27        | buySideProvider1  | USD   | 100000000000 |
    28        | sellSideProvider1 | USD   | 100000000000 |
    29        | party1            | USD   | 48050        |
    30      And the parties place the following orders:
    31        | party             | market id | side | volume | price | resulting trades | type       | tif     |
    32        | buySideProvider   | ETH/FEB23 | buy  | 20     | 14900 | 0                | TYPE_LIMIT | TIF_GTC |
    33        | buySideProvider   | ETH/FEB23 | buy  | 1      | 15000 | 0                | TYPE_LIMIT | TIF_GTC |
    34        | buySideProvider   | ETH/FEB23 | buy  | 3      | 15900 | 0                | TYPE_LIMIT | TIF_GTC |
    35        | party             | ETH/FEB23 | sell | 3      | 15900 | 0                | TYPE_LIMIT | TIF_GTC |
    36        | sellSideProvider  | ETH/FEB23 | sell | 2      | 15950 | 0                | TYPE_LIMIT | TIF_GTC |
    37        | sellSideProvider  | ETH/FEB23 | sell | 20     | 20000 | 0                | TYPE_LIMIT | TIF_GTC |
    38        | buySideProvider1  | ETH/FEB22 | buy  | 20     | 14900 | 0                | TYPE_LIMIT | TIF_GTC |
    39        | buySideProvider1  | ETH/FEB22 | buy  | 1      | 15000 | 0                | TYPE_LIMIT | TIF_GTC |
    40        | buySideProvider1  | ETH/FEB22 | buy  | 3      | 15900 | 0                | TYPE_LIMIT | TIF_GTC |
    41        | party1            | ETH/FEB22 | sell | 3      | 15900 | 0                | TYPE_LIMIT | TIF_GTC |
    42        | sellSideProvider1 | ETH/FEB22 | sell | 2      | 15950 | 0                | TYPE_LIMIT | TIF_GTC |
    43        | sellSideProvider1 | ETH/FEB22 | sell | 20     | 20000 | 0                | TYPE_LIMIT | TIF_GTC |
    44  
    45      #AC 0009-MRKP-124, 0009-MRKP-125
    46      When the network moves ahead "2" blocks
    47      Then the mark price should be "15900" for the market "ETH/FEB23"
    48      And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/FEB23"
    49      Then the mark price should be "15900" for the market "ETH/FEB22"
    50      And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/FEB22"
    51  
    52      When the network moves ahead "2" blocks
    53      Then the mark price should be "15900" for the market "ETH/FEB23"
    54  
    55      When the network moves ahead "1" blocks
    56      Then the mark price should be "15900" for the market "ETH/FEB23"
    57  
    58      When the network moves ahead "1" blocks
    59      Then the mark price should be "15900" for the market "ETH/FEB23"
    60  
    61      #N=50000/(0.1+0.25)/1.2=119047.6
    62      #V_sell = 119047.6/15950=7
    63      #V_buy = 119047.6/15000=7
    64      #p_book_buy=(15000+14900*6)/7=14914.28571
    65      #p_book_sell=(15950*2+20000*5)/7=18842.85714
    66      #p_book=1/2*(p_book_buy+p_book_sell)=16878
    67  
    68      When the network moves ahead "1" blocks
    69      Then the mark price should be "16878" for the market "ETH/FEB23"
    70      Then the mark price should be "16878" for the market "ETH/FEB22"
    71  
    72      When the network moves ahead "4" blocks
    73      Then the mark price should be "16878" for the market "ETH/FEB23"
    74      Then the mark price should be "16878" for the market "ETH/FEB22"
    75  
    76      #0009-MRKP-126, 0009-MRKP-127
    77      And the parties place the following orders:
    78        | party            | market id | side | volume | price | resulting trades | type       | tif     | reference |
    79        | buySideProvider  | ETH/FEB23 | buy  | 1      | 15950 | 1                | TYPE_LIMIT | TIF_GTC |           |
    80        | buySideProvider1 | ETH/FEB22 | buy  | 1      | 15950 | 1                | TYPE_LIMIT | TIF_GTC |           |
    81  
    82      When the network moves ahead "2" blocks
    83      Then the mark price should be "16878" for the market "ETH/FEB23"
    84      Then the mark price should be "16878" for the market "ETH/FEB22"
    85  
    86      When the network moves ahead "2" blocks
    87      Then the mark price should be "17094" for the market "ETH/FEB23"
    88      Then the mark price should be "17094" for the market "ETH/FEB22"
    89  
    90  
    91  
    92  
    93