From ebad83788224168b1ca59c1677c2106c9eb7ebcf Mon Sep 17 00:00:00 2001 From: lowkeynicc <85139158+lowkeynicc@users.noreply.github.com> Date: Thu, 18 Sep 2025 14:50:46 -0400 Subject: [PATCH] add mid major setting for dynamic slippage (#510) * add mid major setting for dynamic slippage * fix typo --- src/utils/constants.ts | 2 ++ src/utils/utils.ts | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 99e9d70..1b21d5c 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -23,3 +23,5 @@ export const DEFAULT_AUCTION_PARAMS: Partial = { auctionStartPriceOffsetFrom: 'marketBased', auctionEndPriceOffsetFrom: DEFAULT_AUCTION_END_PRICE_FROM, }; + +export const MID_MAJOR_MARKETS = [13, 23, 4, 59, 9]; // XRP, WIF, BONK, HYPE, SUI diff --git a/src/utils/utils.ts b/src/utils/utils.ts index 230b65c..3338769 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -31,7 +31,7 @@ import { NextFunction, Request, Response } from 'express'; import FEATURE_FLAGS from './featureFlags'; import { Connection } from '@solana/web3.js'; import { wsMarketArgs } from 'src/dlob-subscriber/DLOBSubscriberIO'; -import { DEFAULT_AUCTION_PARAMS } from './constants'; +import { DEFAULT_AUCTION_PARAMS, MID_MAJOR_MARKETS } from './constants'; import { AuctionParamArgs } from './types'; import { COMMON_MATH, ENUM_UTILS } from '@drift/common'; @@ -1143,9 +1143,12 @@ export const calculateDynamicSlippage = ( // Determine if this is a major market (PERP with marketIndex 0, 1, or 2) const isPerp = marketType.toLowerCase() === 'perp'; const isMajor = isPerp && marketIndex < 3; + const isMidMajor = isPerp && MID_MAJOR_MARKETS.includes(marketIndex); const baseSlippage = isMajor ? parseFloat(process.env.DYNAMIC_BASE_SLIPPAGE_MAJOR || '0') // 0% default + : isMidMajor + ? parseFloat(process.env.DYNAMIC_BASE_SLIPPAGE_MID_MAJOR || '0.25') // 0.25% default : parseFloat(process.env.DYNAMIC_BASE_SLIPPAGE_NON_MAJOR || '0.5'); // 0.5% default // Calculate spread using L2 data @@ -1193,6 +1196,8 @@ export const calculateDynamicSlippage = ( // Apply multiplier from env var const multiplier = isMajor ? parseFloat(process.env.DYNAMIC_SLIPPAGE_MULTIPLIER_MAJOR || '1.01') + : isMidMajor + ? parseFloat(process.env.DYNAMIC_SLIPPAGE_MULTIPLIER_MID_MAJOR || '1.2') : parseFloat(process.env.DYNAMIC_SLIPPAGE_MULTIPLIER_NON_MAJOR || '1.4'); dynamicSlippage = dynamicSlippage * multiplier;