code.vegaprotocol.io/vega@v0.79.0/core/integration/features/pap/0097-PAPU-044.feature (about)

     1  Feature: If an automated purchase order is not filled on auction uncrossing, the order is removed from the book automatically (as it is a GFA order) and all earmarked funds returned to the relevant source account. (0097-PAPU-044).
     2      Background:
     3          Given the log normal risk model named "log-normal-risk-model":
     4              | risk aversion | tau | mu | r | sigma |
     5              | 0.000001      | 0.1 | 0  | 0 | 1.0   |
     6          And the following network parameters are set:
     7              | name                                    | value |
     8              | market.value.windowLength               | 60s   |
     9              | network.markPriceUpdateMaximumFrequency | 0s    |
    10              | limits.markets.maxPeggedOrders          | 6     |
    11              | market.auction.minimumDuration          | 1     |
    12              | market.fee.factors.infrastructureFee    | 0.001 |
    13              | market.fee.factors.makerFee             | 0.004 |
    14              | spam.protection.max.stopOrdersPerMarket | 5     |
    15          And the liquidity monitoring parameters:
    16              | name       | triggering ratio | time window | scaling factor |
    17              | lqm-params | 1.0              | 20s         | 1              |
    18          And the fees configuration named "fees-config-1":
    19              | maker fee | infrastructure fee |
    20              | 0.0004    | 0.001              |
    21          And the price monitoring named "price-monitoring":
    22              | horizon | probability | auction extension |
    23              | 3600    | 0.99        | 30                |
    24          And the liquidity sla params named "SLA-22":
    25              | price range | commitment min time fraction | performance hysteresis epochs | sla competition factor |
    26              | 0.5         | 0.6                          | 1                             | 1.0                    |
    27          And the following network parameters are set:
    28              | name                           | value |
    29              | limits.markets.maxPeggedOrders | 2     |
    30          And the following assets are registered:
    31              | id  | decimal places |
    32              | ETH | 0              |
    33  
    34          And the spot markets:
    35              | id      | name    | base asset | quote asset | liquidity monitoring | risk model            | auction duration | fees          | price monitoring | sla params |
    36              | BTC/ETH | BTC/ETH | BTC        | ETH         | lqm-params           | log-normal-risk-model | 2                | fees-config-1 | price-monitoring | SLA-22     |
    37  
    38          Given the parties deposit on asset's general account the following amount:
    39              | party  | asset | amount     |
    40              | party1 | ETH   | 1000000000 |
    41              | party2 | ETH   | 1000000000 |
    42              | party3 | ETH   | 1000000000 |
    43              | party1 | BTC   | 1000000000 |
    44              | party2 | BTC   | 1000000000 |
    45              | party3 | BTC   | 1000000000 |
    46              | lpprov | ETH   | 1000000000 |
    47              | lpprov | BTC   | 1000000000 |
    48  
    49          When the parties submit the following liquidity provision:
    50              | id  | party  | market id | commitment amount | fee | lp type    |
    51              | lp1 | lpprov | BTC/ETH   | 937000            | 0.1 | submission |
    52              | lp1 | lpprov | BTC/ETH   | 937000            | 0.1 | submission |
    53          And the parties place the following pegged iceberg orders:
    54              | party  | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
    55              | lpprov | BTC/ETH   | 2         | 1                    | buy  | MID              | 50     | 100    |
    56              | lpprov | BTC/ETH   | 2         | 1                    | sell | MID              | 50     | 100    |
    57  
    58          # place orders and generate trades - slippage 100
    59          And the parties place the following orders:
    60              | party  | market id | side | volume | price   | resulting trades | type       | tif     | reference |
    61              | party2 | BTC/ETH   | buy  | 1      | 950000  | 0                | TYPE_LIMIT | TIF_GTC | t2-b-1    |
    62              | party1 | BTC/ETH   | buy  | 1      | 1000000 | 0                | TYPE_LIMIT | TIF_GFA | t1-b-1    |
    63              | party2 | BTC/ETH   | sell | 2      | 1000000 | 0                | TYPE_LIMIT | TIF_GTC | t2-s-1    |
    64  
    65          When the opening auction period ends for market "BTC/ETH"
    66  
    67          And the following trades should be executed:
    68              | buyer  | price   | size | seller |
    69              | party1 | 1000000 | 1    | party2 |
    70          And the mark price should be "1000000" for the market "BTC/ETH"
    71  
    72          And the composite price oracles from "0xCAFECAFE2":
    73              | name         | price property   | price type   | price decimals |
    74              | price_oracle | prices.ETH.value | TYPE_INTEGER | 0              |
    75  
    76          And the time triggers oracle spec is:
    77              | name                      | initial    | every |
    78              | auction_schedule          | 1727136001 | 30    |
    79              | auction_vol_snap_schedule | 1727136000 | 30    |
    80  
    81          And the average block duration is "1"
    82  
    83          And the parties deposit on asset's general account the following amount:
    84              | party                                                            | asset | amount |
    85              | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | BTC   | 50000  |
    86          Given time is updated to "2024-09-24T00:00:00Z"
    87          And the parties submit the following one off transfers:
    88              | id | from                                                             | from_account_type    | to                                                               | to_account_type            | asset | amount | delivery_time        |
    89              | 1  | f0b40ebdc5b92cf2cf82ff5d0c3f94085d23d5ec2d37d0b929e177c6d4d37e4c | ACCOUNT_TYPE_GENERAL | 0000000000000000000000000000000000000000000000000000000000000000 | ACCOUNT_TYPE_BUY_BACK_FEES | BTC   | 5000   | 2024-09-24T00:00:00Z |
    90  
    91      Scenario: PAP is setup for the market, an amout is earmark and an order is submitted to a pap auction, however the order is not filled and the amount is uneamarked. (0097-PAPU-044)
    92          When the protocol automated purchase is defined as:
    93              | id    | from | from account type          | to account type               | market id | price oracle | price oracle staleness tolerance | oracle offset factor | auction schedule oracle | auction volume snapshot schedule oracle | auction duration | minimum auction size | maximum auction size | expiry timestamp |
    94              | 12345 | BTC  | ACCOUNT_TYPE_BUY_BACK_FEES | ACCOUNT_TYPE_NETWORK_TREASURY | BTC/ETH   | price_oracle | 10s                              | 1.01                 | auction_schedule        | auction_vol_snap_schedule               | 60s              | 100                  | 200                  | 0                |
    95  
    96          Then the oracles broadcast data with block time signed with "0xCAFECAFE2":
    97              | name             | value   | time offset |
    98              | prices.ETH.value | 1000000 | -1s         |
    99  
   100          And the network moves ahead "30" blocks
   101  
   102          # maximum auction size is 200 so expect 200 to be earmarked
   103          Then the automated purchase program for market "BTC/ETH" should have a snapshot balance of "200"
   104  
   105          # we enter a pap auction
   106          And the trading mode should be "TRADING_MODE_PROTOCOL_AUTOMATED_PURCHASE_AUCTION" for the market "BTC/ETH"
   107  
   108          # an order for sell BTC with size 200 and price 1.01 * 1000000 is placed
   109          And the order book should have the following volumes for market "BTC/ETH":
   110              | side | price   | volume |
   111              | sell | 1010000 | 200    |
   112  
   113          # move to the end of the auction with no luck
   114          And the network moves ahead "61" blocks
   115  
   116          # expect to leave the auction
   117          And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "BTC/ETH"
   118  
   119          # exepct nothing has moved
   120          And the buy back fees balance should be "5000" for the asset "BTC"