add mid major setting for dynamic slippage (#509)
This commit is contained in:
@@ -23,3 +23,5 @@ export const DEFAULT_AUCTION_PARAMS: Partial<AuctionParamArgs> = {
|
|||||||
auctionStartPriceOffsetFrom: 'marketBased',
|
auctionStartPriceOffsetFrom: 'marketBased',
|
||||||
auctionEndPriceOffsetFrom: DEFAULT_AUCTION_END_PRICE_FROM,
|
auctionEndPriceOffsetFrom: DEFAULT_AUCTION_END_PRICE_FROM,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const MID_MAJOR_MARKETS = [13, 23, 4, 59, 9]; // XRP, WIF, BONK, HYPE, SUI
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ import { NextFunction, Request, Response } from 'express';
|
|||||||
import FEATURE_FLAGS from './featureFlags';
|
import FEATURE_FLAGS from './featureFlags';
|
||||||
import { Connection } from '@solana/web3.js';
|
import { Connection } from '@solana/web3.js';
|
||||||
import { wsMarketArgs } from 'src/dlob-subscriber/DLOBSubscriberIO';
|
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 { AuctionParamArgs } from './types';
|
||||||
import { COMMON_MATH, ENUM_UTILS } from '@drift/common';
|
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)
|
// Determine if this is a major market (PERP with marketIndex 0, 1, or 2)
|
||||||
const isPerp = marketType.toLowerCase() === 'perp';
|
const isPerp = marketType.toLowerCase() === 'perp';
|
||||||
const isMajor = isPerp && marketIndex < 3;
|
const isMajor = isPerp && marketIndex < 3;
|
||||||
|
const isMidMajor = isPerp && MID_MAJOR_MARKETS.includes(marketIndex);
|
||||||
|
|
||||||
const baseSlippage = isMajor
|
const baseSlippage = isMajor
|
||||||
? parseFloat(process.env.DYNAMIC_BASE_SLIPPAGE_MAJOR || '0') // 0% default
|
? parseFloat(process.env.DYNAMIC_BASE_SLIPPAGE_MAJOR || '0') // 0% default
|
||||||
|
: isMidMajor
|
||||||
|
? parseFloat(process.env.DYNAMIC_BASE_SLIPPAGE_MID_MAJOR || '0.025') // 0.025% default
|
||||||
: parseFloat(process.env.DYNAMIC_BASE_SLIPPAGE_NON_MAJOR || '0.5'); // 0.5% default
|
: parseFloat(process.env.DYNAMIC_BASE_SLIPPAGE_NON_MAJOR || '0.5'); // 0.5% default
|
||||||
|
|
||||||
// Calculate spread using L2 data
|
// Calculate spread using L2 data
|
||||||
@@ -1193,6 +1196,8 @@ export const calculateDynamicSlippage = (
|
|||||||
// Apply multiplier from env var
|
// Apply multiplier from env var
|
||||||
const multiplier = isMajor
|
const multiplier = isMajor
|
||||||
? parseFloat(process.env.DYNAMIC_SLIPPAGE_MULTIPLIER_MAJOR || '1.01')
|
? 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');
|
: parseFloat(process.env.DYNAMIC_SLIPPAGE_MULTIPLIER_NON_MAJOR || '1.4');
|
||||||
dynamicSlippage = dynamicSlippage * multiplier;
|
dynamicSlippage = dynamicSlippage * multiplier;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user