VMP-40 - Create ENA/USDT Perpetual Market

VMP-40 - Create ENA/USDT Perpetual Market

Hey guys, I’d like to propose adding a perpetual market for Ethena (ENA) which recently launched. I previously put up a proposal for Ethena Shards market however, we could not create it in time for there to be sufficient trading opportunity.

ENA is currently trading at a $1.5B MCAP, FDV of $14B, and 24hr trading volume of ~$3b.

I’d also like to propose utilizing 15k VEGA from the CAF to kickstart trading activity and run a relative PnL trading game for users who are in a referral set for 2 weeks upon its launch.

Full Proposal JSON:

{
  "rationale": {
    "title": "VMP-40 - Create ENA/USDT Perpetual",
    "description": "This proposal requests to create an Ethena Perpetual market (ENA/USDT) & Launch a 10k VEGA Trading Competition. Full forum discussion can be found [here](https://community.vega.xyz/t/vmp-40-create-ena-usdt-perpetual-market/4467)"
  },
  "terms": {
    "newMarket": {
      "changes": {
        "decimalPlaces": "1",
        "positionDecimalPlaces": "4",
        "instrument": {
          "code": "ENA/USDT",
          "name": "Ethena / Tether USD (Perpetual)",
          "perpetual": {
            "quoteName": "USDT",
            "marginFundingFactor": "0.9",
            "interestRate": "0.1095",
            "clampLowerBound": "-0.0005",
            "clampUpperBound": "0.0005",
            "fundingRateLowerBound": "-0.001",
            "fundingRateUpperBound": "0.001",
            "dataSourceSpecForSettlementSchedule": {
              "internal": {
                "timeTrigger": {
                  "conditions": [
                    {
                      "operator": "OPERATOR_GREATER_THAN",
                      "value": "0"
                    }
                  ],
                  "triggers": [
                    {
                      "every": "28800"
                    }
                  ]
                }
              }
            },
            "dataSourceSpecForSettlementData": {
              "external": {
                "ethOracle": {
                  "address": "0x719abd606155442c21b7d561426d42bd0e40a776",
                  "abi": "[{\"inputs\": [{\"internalType\": \"bytes32\", \"name\": \"id\", \"type\": \"bytes32\"}], \"name\": \"getPrice\", \"outputs\": [{\"internalType\": \"int256\", \"name\": \"\", \"type\": \"int256\" }], \"stateMutability\": \"view\", \"type\": \"function\"}]",
                  "method": "getPrice",
                  "args": [
                    "0xb7910ba7322db020416fcac28b48c01212fd9cc8fbcbaf7d30477ed8605f6bd4"
                  ],
                  "trigger": {
                    "timeTrigger": {
                      "every": "60"
                    }
                  },
                  "requiredConfirmations": "3",
                  "filters": [
                    {
                      "key": {
                        "name": "ena.price",
                        "type": "TYPE_INTEGER",
                        "numberDecimalPlaces": "18"
                      },
                      "conditions": [
                        {
                          "operator": "OPERATOR_GREATER_THAN",
                          "value": "0"
                        }
                      ]
                    }
                  ],
                  "normalisers": [
                    {
                      "name": "ena.price",
                      "expression": "$[0]"
                    }
                  ],
                  "sourceChainId": "100"
                }
              }
            },
            "dataSourceSpecBinding": {
              "settlementDataProperty": "ena.price",
              "settlementScheduleProperty": "vegaprotocol.builtin.timetrigger"
            },
            "fundingRateScalingFactor": "1",
            "internalCompositePriceConfiguration": {
              "decayWeight": "1.0",
              "decayPower": "1",
              "cashAmount": "50000000",
              "sourceWeights": [
                "0.0",
                "0.999",
                "0.001",
                "0.0"
              ],
              "sourceStalenessTolerance": [
                "1m",
                "1m",
                "10m",
                "10m"
              ],
              "compositePriceType": "COMPOSITE_PRICE_TYPE_WEIGHTED",
              "dataSourcesSpec": [
                {
                  "external": {
                    "ethOracle": {
                      "address": "0x719abd606155442c21b7d561426d42bd0e40a776",
                      "abi": "[{\"inputs\": [{\"internalType\": \"bytes32\", \"name\": \"id\", \"type\": \"bytes32\"}], \"name\": \"getPrice\", \"outputs\": [{\"internalType\": \"int256\", \"name\": \"\", \"type\": \"int256\" }], \"stateMutability\": \"view\", \"type\": \"function\"}]",
                      "method": "getPrice",
                      "args": [
                        "0xb7910ba7322db020416fcac28b48c01212fd9cc8fbcbaf7d30477ed8605f6bd4"
                      ],
                      "trigger": {
                        "timeTrigger": {
                          "every": "60"
                        }
                      },
                      "requiredConfirmations": "3",
                      "filters": [
                        {
                          "key": {
                            "name": "ena.price",
                            "type": "TYPE_INTEGER",
                            "numberDecimalPlaces": "18"
                          },
                          "conditions": [
                            {
                              "operator": "OPERATOR_GREATER_THAN",
                              "value": "0"
                            }
                          ]
                        }
                      ],
                      "normalisers": [
                        {
                          "name": "ena.price",
                          "expression": "$[0]"
                        }
                      ],
                      "sourceChainId": "100"
                    }
                  }
                }
              ],
              "dataSourcesSpecBinding": [
                {
                  "priceSourceProperty": "ena.price"
                }
              ]
            }
          }
        },
        "metadata": [
          "base:ENA",
          "quote:USDT",
          "oracle:pyth",
          "oracleChain:gnosis",
          "class:fx/crypto",
          "perpetual",
          "sector:defi",
          "enactment:2024-02-04T15:00:00Z ****TODO*****"
        ],
        "priceMonitoringParameters": {
          "triggers": [
            {
              "horizon": "21600",
              "probability": "0.9999999",
              "auctionExtension": "86400"
            },
            {
              "horizon": "4320",
              "probability": "0.9999999",
              "auctionExtension": "3600"
            },
            {
              "horizon": "1440",
              "probability": "0.9999999",
              "auctionExtension": "1800"
            },
            {
              "horizon": "360",
              "probability": "0.9999999",
              "auctionExtension": "300"
            }
          ]
        },
        "liquidityMonitoringParameters": {
          "targetStakeParameters": {
            "timeWindow": "3600",
            "scalingFactor": 0.05
          },
          "triggeringRatio": "0.9",
          "auctionExtension": "1"
        },
        "logNormal": {
          "riskAversionParameter": 0.000001,
          "tau": 0.0000071,
          "params": {
            "mu": 0,
            "r": 0,
            "sigma": 1.5
          }
        },
        "linearSlippageFactor": "0.001",
        "quadraticSlippageFactor": "0",
        "liquiditySlaParameters": {
          "priceRange": "0.005",
          "commitmentMinTimeFraction": "0.5",
          "performanceHysteresisEpochs": "0",
          "slaCompetitionFactor": "1"
        },
        "liquidityFeeSettings": {
          "method": "METHOD_MARGINAL_COST"
        },
        "liquidationStrategy": {
          "disposalTimeStep": "1",
          "disposalFraction": "1",
          "fullDisposalSize": "1000000",
          "maxFractionConsumed": "0.1"
        },
        "markPriceConfiguration": {
          "decayWeight": "1.0",
          "decayPower": "1",
          "cashAmount": "0",
          "sourceWeights": [
            "0.0",
            "0.0",
            "1.0",
            "0.0"
          ],
          "sourceStalenessTolerance": [
            "1m",
            "1m",
            "1m",
            "1m"
          ],
          "compositePriceType": "COMPOSITE_PRICE_TYPE_WEIGHTED",
          "dataSourcesSpec": [
            {
              "external": {
                "ethOracle": {
                  "address": "0x719abd606155442c21b7d561426d42bd0e40a776",
                  "abi": "[{\"inputs\": [{\"internalType\": \"bytes32\", \"name\": \"id\", \"type\": \"bytes32\"}], \"name\": \"getPrice\", \"outputs\": [{\"internalType\": \"int256\", \"name\": \"\", \"type\": \"int256\" }], \"stateMutability\": \"view\", \"type\": \"function\"}]",
                  "method": "getPrice",
                  "args": [
                    "0xb7910ba7322db020416fcac28b48c01212fd9cc8fbcbaf7d30477ed8605f6bd4"
                  ],
                  "trigger": {
                    "timeTrigger": {
                      "every": "60"
                    }
                  },
                  "requiredConfirmations": "3",
                  "filters": [
                    {
                      "key": {
                        "name": "ena.price",
                        "type": "TYPE_INTEGER",
                        "numberDecimalPlaces": "18"
                      },
                      "conditions": [
                        {
                          "operator": "OPERATOR_GREATER_THAN",
                          "value": "0"
                        }
                      ]
                    }
                  ],
                  "normalisers": [
                    {
                      "name": "ena.price",
                      "expression": "$[0]"
                    }
                  ],
                  "sourceChainId": "100"
                }
              }
            }
          ],
          "dataSourcesSpecBinding": [
            {
              "priceSourceProperty": "ena.price"
            }
          ]
        }
      }
    },
    "closingTimestamp": ****TODO****,
    "enactmentTimestamp": ****TODO***
  }
}
2 Likes

Hi Yubi,

We’re just testing how this works on fairground: https://vegafairground.eth.limo/#/markets/f09427109eed4c731d3dc85b887c640037f05a6f439cedbe534327a0b214aa84

We probably want to change the decimals settings:

  • positionDecimals: -2 (price is ~ 1.2 USDT, leverage is 101x so 10^2 x 1.2 / 101 = 1.18 as the margin for the smallest order / position.
  • decimalPlaces (marketDecimalPlaces) these can be 5 and we’ll adjust with tick size
  • tickSize 100 which should result in the smallest price increment of 0.001 USDT because we have 5 decimal places on the market.

Tick size can be changed on a running market via governance.

3 Likes

Thanks David, will i need to specify a ticksize in the proposal JSON?

Yes, same as [here on Fairground] (https://governance.fairground.wtf/proposals/b8c5abaa1250ef47502a56b652aac62aa7509f7203ba13a804fc2396aefa800f) i.e.

"tickSize": "100"
1 Like

I think "settlementAsset": is missing in the proposal.

1 Like