From 68235a029e609c8c1deea633d4fc991cbf02571d Mon Sep 17 00:00:00 2001 From: jack Date: Thu, 24 Jul 2025 12:17:14 +1000 Subject: [PATCH] chore: add mark price to dlob response (#462) --- src/dlob-subscriber/DLOBSubscriberIO.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/dlob-subscriber/DLOBSubscriberIO.ts b/src/dlob-subscriber/DLOBSubscriberIO.ts index 3eaaeb1..1149945 100644 --- a/src/dlob-subscriber/DLOBSubscriberIO.ts +++ b/src/dlob-subscriber/DLOBSubscriberIO.ts @@ -31,6 +31,7 @@ import { import { OffloadQueue } from '../utils/offload'; import { setHealthStatus, HEALTH_STATUS } from '../core/healthCheck'; import { CounterValue } from '../core/metricsV2'; +import { COMMON_MATH } from '@drift/common'; export type wsMarketArgs = { marketIndex: number; @@ -354,6 +355,7 @@ export class DLOBSubscriberIO extends DLOBSubscriber { } const l2 = this.getL2({ ...l2FuncArgs, includeVamm }); + const { markPrice } = COMMON_MATH.calculateSpreadBidAskMark(l2); const slot = l2.slot; if (slot) { @@ -379,6 +381,8 @@ export class DLOBSubscriberIO extends DLOBSubscriber { l2Formatted['marketIndex'] = marketArgs.marketIndex; l2Formatted['ts'] = Date.now(); l2Formatted['slot'] = slot; + l2Formatted['markPrice'] = markPrice?.toString(); + addOracletoResponse( l2Formatted, this.driftClient, @@ -392,6 +396,10 @@ export class DLOBSubscriberIO extends DLOBSubscriber { marketArgs.marketIndex ); + if (!markPrice) { + l2Formatted['markPrice'] = l2Formatted['oracle']; + } + // Check if slot diffs are too large for oracle const skipSlotCheck = (marketType === 'perp' &&