MarketLab Docs
ScriptingData Types

Orderbook

Orderbook data shapes for Market Lab scripts.

Orderbook

Orderbook data is available under input.orderbook.

Manifest

export const script = {
  name: "orderbook-window",
  version: "1",
  sources: ["orderbook"],
  params: {}
}

Command

mlab script backtest ./scripts/orderbook-window.js \
  --provider mmt \
  --exchange bybitf \
  --symbol BTC/USDT \
  --from 1780307559000 \
  --to 1780311159000 \
  --source orderbook:timeframe=60 \
  --source orderbook:depth=100

Windowed orderbook backtests use MMT flat_heatmap_hd data. That source is binned, so it is useful for liquidity and execution-condition analysis, not exact raw order replay.

Input

type OrderbookWindowInput = {
  mode: "window";
  orderbook: {
    books: Orderbook[];
  };
}

type OrderbookStreamInput = {
  mode: "stream";
  source: "orderbook";
  orderbook: {
    snapshot: Orderbook;
  };
}

Orderbook

type Orderbook = {
  exchange: string;
  symbol: string;
  timestamp_ms: number;
  bids: OrderbookLevel[];
  asks: OrderbookLevel[];
}

type OrderbookLevel = {
  price: number;
  quantity: number;
}

Example

export function onData(ctx, input) {
  const latest = input.mode === "stream"
    ? input.orderbook.snapshot
    : input.orderbook.books[input.orderbook.books.length - 1]
  const spread = ctx.study.spread(latest)
  const imbalance = ctx.study.imbalance(latest, { depth: 20 })

  return {
    metrics: {
      mode: input.mode,
      spread_bps: spread.spread_bps,
      imbalance: imbalance.imbalance
    }
  }
}

On this page