VMP-001 - Create market - BTC/USDT Future - 2023/06/30

VMP-001 - Create market - BTC/USDT Future - 2023/06/30

This is a quarterly BTC/USDT futures contract expiring on 2023/06/30 08:00:00 UTC time on Vega network.

Market Summary:

Name:
BTC/USDT expiry 2023 June 30th

Settlement asset:
USDT

Rationale:
BTC is the largest Crypto asset with the highest volume and Marketcap.

Market Details:

Instrument:
BTC/USDT-230630

Settlement data source:
CoinbaseOracle

Risk model:
Lognormal Risk Model

Liquidity monitoring parameters:

{
    "targetStakeParameters": {
        "timeWindow": "3600",
        "scalingFactor": 1
    },
    "triggeringRatio": "0.7",
    "auctionExtension": "1"
}

Price monitoring parameters:

{
  "triggers": [
    {
      "horizon": "3600",
      "probability": "0.9999",
      "auctionExtension": "120"
    },
    {
      "horizon": "14400",
      "probability": "0.9999",
      "auctionExtension": "180"
    },
    {
      "horizon": "43200",
      "probability": "0.9999",
      "auctionExtension": "300"
    }
  ]
}

Proposal JSON:

{
    "proposalSubmission": {
        "reference": "BTC/USDT-230630",
        "terms": {
            "closingTimestamp": "1684846800",
            "enactmentTimestamp": "1684850400",
            "newMarket": {
                "changes": {
                    "instrument": {
                        "name": "BTC/USDT expiry 2023 June 30th",
                        "code": "BTC/USDT-230630",
                        "future": {
                            "settlementAsset": "bf1e88d19db4b3ca0d1d5bdb73718a01686b18cf731ca26adedf3c8b83802bba",
                            "quoteName": "USDT",
                            "dataSourceSpecForSettlementData": {
                                "external": {
                                    "oracle": {
                                        "signers": [
                                            {
                                                "ethAddress": {
                                                    "address": "0xfCEAdAFab14d46e20144F48824d0C09B1a03F2BC"
                                                }
                                            }
                                        ],
                                        "filters": [
                                            {
                                                "key": {
                                                    "name": "prices.BTC.value",
                                                    "type": "TYPE_INTEGER",
                                                    "numberDecimalPlaces": "6"
                                                },
                                                "conditions": [
                                                    {
                                                        "operator": "OPERATOR_GREATER_THAN",
                                                        "value": "0"
                                                    }
                                                ]
                                            },
                                            {
                                                "key": {
                                                    "name": "prices.BTC.timestamp",
                                                    "type": "TYPE_TIMESTAMP"
                                                },
                                                "conditions": [
                                                    {
                                                        "operator": "OPERATOR_GREATER_THAN_OR_EQUAL",
                                                        "value": "1688112000"
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                }
                            },
                            "dataSourceSpecForTradingTermination": {
                                "internal": {
                                    "time": {
                                        "conditions": [
                                            {
                                                "operator": "OPERATOR_GREATER_THAN_OR_EQUAL",
                                                "value": "1688112000"
                                            }
                                        ]
                                    }
                                }
                            },
                            "dataSourceSpecBinding": {
                                "settlementDataProperty": "prices.BTC.value",
                                "tradingTerminationProperty": "vegaprotocol.builtin.timestamp"
                            }
                        }
                    },
                    "decimalPlaces": "1",
                    "metadata": [
                        "base:BTC",
                        "quote:USDT",
                        "class:fx/crypto",
                        "quarterly",
                        "sector:defi",
                        "enactment:2023-05-23T14:00:00Z",
                        "settlement:2023-06-30T08:00:00Z"
                    ],
                    "priceMonitoringParameters": {
                        "triggers": [
                            {
                                "horizon": "3600",
                                "probability": "0.9999",
                                "auctionExtension": "120"
                            },
                            {
                                "horizon": "14400",
                                "probability": "0.9999",
                                "auctionExtension": "180"
                            },
                            {
                                "horizon": "43200",
                                "probability": "0.9999",
                                "auctionExtension": "300"
                            }
                        ]
                    },
                    "liquidityMonitoringParameters": {
                        "targetStakeParameters": {
                            "timeWindow": "3600",
                            "scalingFactor": 1
                        },
                        "triggeringRatio": "0.7",
                        "auctionExtension": "1"
                    },
                    "logNormal": {
                        "riskAversionParameter": 0.000001,
                        "tau": 0.0001140771161,
                        "params": {
                            "sigma": 1.5
                        }
                    },
                    "positionDecimalPlaces": "4",
                    "lpPriceRange": "0.8",
                    "linearSlippageFactor": "0.001",
                    "quadraticSlippageFactor": "0.0"
                }
            }
        },
        "rationale": {
            "description": "## Summary\n\nThis proposal requests to list BTC/USDT-230630 as a market with USDT as a settlement asset on the Vega Network as discussed in: https://community.vega.xyz/.\n\n## Rationale\n\n- BTC is the largest Crypto asset with the highest volume and Marketcap.\n- Given the price, 1 decimal places will be used for price due to the number of valid digits in asset price. \n- Position decimal places will be set to 4 considering the value per contract\n- USDT is chosen as settlement asset due to its stability.",
            "title": "VMP-001 - Create market - BTC/USDT Future - 2023/06/30"
        }
    }
}
3 Likes

Congratulations to your first market proposal.
So looking at the data the market will expire
2023/06/30 08:00:00 UTC

And then the settlement price, which is from Coinbase price oracle, will allow for prices that are timestamped 1hr+ later, which is intended?
2023/06/30 09:00:00 UTC

1 Like

:rocket: :boom:

So at a quick glance:

  • liquidity setup looks good; the lpPriceRange is very very wide but that’s ok, if there is more than one LP then the LP mechanics will reward only those who provide competitive quotes.
  • risk model looks good; shorts will get at most 12x leverage, longs at most 13x.
  • price monitoring: I would only do 1 or at most 2 triggers, when you have many it can get pretty messy to reason about them.

I’ve not checked the opening / closing … timestamps and I’ve not scrutinised the oracle stuff yet.

1 Like

The closing timestamp of the voting might be a bit tight and on a Sunday, like the optimism but perhaps give a bit more time. Happy to hear others opinions on this as well though.

        "closingTimestamp": "1684652400", -> Sunday, 21 May 2023 07:00:00
        "enactmentTimestamp": "1684656000", -> Sunday, 21 May 2023 08:00:00

It may be better for the settlement data to come through as soon as possible after trading terminated… the longer you wait the bigger the risk that parties’ margin balances will not be sufficient to cover the final settlement cashflow (if the market goes wild during that specific time).

1 Like

I suppose that depends when it finally goes on chain for vote… if it’s soon then Sunday is fine, if it only gets submitted late on Friday then it would be better to have more time.

If settlement price is a snap price, it would be best to settle at the same time of expiry. Is this supported though? Having the two timestamp be the same

Maybe we can have the front month closing time moved. For the proposal, I just pinned the closing time to 4 months before the expiry, regardless of whether it’s a workday

1 Like

Wouldn’t it be more appropriate to rely on an oracle that is more decentralized in nature and takes an aggregate of multiple price sources?
Kind of feels iffy to me to just take Coinbase its price that is at war with the SEC and is therefor not what I would call a reliable source. You could have a big spread with other CEX’ over 1 SEC statement.

Agree, I don’t think that’s supported yet but I would want a feature like that if technically feasible down the line

Yes, you can move the condition in the filter to be an hour earlier, so 1688112000 instead of 1688115600. Then the settlement price should be accepted as soon as anyone submits the coinbase data with timestamp greater than or equal to 1688112000.

Could We double-check the settlement asset address, It seems it does not exist in our mainnet:

Assets on the mainnet can be fetched from Explorer

The asset used in the proposal(a7cb2a2855b992b08fa612e3189c317ad54c3934b9e9ba3be4ba33457c1152a2) does not exists

Good point, Tether is bf1e88d19db4b3ca0d1d5bdb73718a01686b18cf731ca26adedf3c8b83802bba on Vega mainnet.

If you’d like you can have a look the markets we setup on testnet which used your settings, with the same termination and settlement timestamp, so that is not an issue.

LINK
427a726b125e372feec0a4d81628dcc7217ff8d55b76c5b4dc9b9a1975504394
ETH
e3d3d1cfe68ca9717a5955a0e196003d1938618e2fb9cda681a1db4cce745082

The difference is also that when you are using this for termination it terminates at this time since it uses vega time, neither you or anyone does needs to do anything.

But for settlement it is an external time source and it specifies the timestamp when the data for this data source can be collected and used, “anyone” can send the settlement price but requesting the price data.

"dataSourceSpecForTradingTermination": {
                                "internal": {
                                    "time": {
                                        "conditions": [
                                            {
                                                "operator": "OPERATOR_GREATER_THAN_OR_EQUAL",
                                                "value": "1688112000"
                                            }

Yes good catch, I must have got the ID from the wrong source. Will amend all submissions

I just moved the settlement time forward for this proposal, will apply the same changes aross the board

1 Like

Hi Yy-Shadow

Providing a quick summary of the feedback points so we have them in one place, along with the status of your changes as far as I can tell from the edited original post JSON currently.

Required

  • Change for mainnet settlementAsset = bf1e88d19db4b3ca0d1d5bdb73718a01686b18cf731ca26adedf3c8b83802bba - :white_check_mark:

Recommended

  • closingTimestamp >> Set to Monday morning (suggest 8am UTC 1684742400) - TO DO

  • enactmentTimestamp >> Set to Monday morning (suggest 9am UTC 1684746000) - TO DO

  • Therefore also change metadata enactment value - TO DO

  • Align termination and settlement datetime to same value (Friday 30th 8am UTC 1688112000) :white_check_mark:

  • Therefore also change metadata settlement value :white_check_mark:

Suggested

  • Reduce number of price monitoring triggers - in testing yesterday we observed dropping into price monitoring auction quite frequently. Suggest removing the first two triggers. - TBC, let us know your thoughts

Let us know how you are progressing with these and when you have a fully edited JSON on this thread.

1 Like

After experiencing my assets being wiped out in BLIZZ FINANCE, I agree that there probably needs to be more than just one price source. Should get a few price sources and create a trimmed mean just in case there has been an issue with one of the price source.

See story below when relying on one price source even as reliable as CHAINLINK -

1 Like

Very valid points @Wai and @DukeNukem ;

The team is working on extending the data sourcing framework to allow for this kind of configurations. For current version v0.71.4 on alpha mainnet it’s not possible and so in a sense the proposed oracle is “as good as it gets” for now.

Once the new features are available it will be possible to update the oracle definitions via a subsequent governance vote. This is probably not relevant for June expiry but may become available for some of the later expiring ones.

I just made the final edit for the proposal, please review!