Skip to content

AMM & DEX Venues

mackinac connects directly to Uniswap V3/V4 (Arbitrum + Unichain), SushiSwap, PancakeSwap, and Balancer on Arbitrum. Monitor real-time swap prices, observe the multi-tier liquidity structure, compare DEX and CeFi prices, and analyze on-chain liquidity — all in the same interface as the perp venues.

Adding an AMM Product

  1. Click the + button in the sidebar or header.
  2. Select the venue from the Exchange dropdown: Uniswap V3, Uniswap V4, Uniswap V4 (Unichain), SushiSwap, PancakeSwap, or Balancer.
  3. Enter the pair in BASE/QUOTE format — for example WETH/USDC or WBTC/USDC.
  4. Click Add.

You can add the same pair from multiple venues simultaneously — they appear as separate rows with exchange badges (U3, U4, U4C, SU, PC, BAL).


Reading the DOM Widget

The DOM widget shows the current bid and ask prices for each active fee-tier pool. It looks like a traditional order book but works differently.

What Each Row Represents

In a traditional order book, each row is a resting limit order at a specific price. In the AMM DOM, each row is a fee-tier pool. The prices shown are the effective execution prices for an infinitesimally small swap at that pool’s current reserves:

  • Bid — the price you would receive selling the base asset into this pool
  • Ask — the price you would pay buying the base asset from this pool

The spread between bid and ask equals the pool’s fee: a 0.05% pool shows 0.025% on each side. Tighter-fee pools appear nearest the mid; wider-fee pools are furthest out.

DOM Layout

Ask $3,505.25 ← 0.30% pool — widest spread, furthest from mid
Ask $3,500.44 ← 0.05% pool
Ask $3,500.09 ← 0.01% pool — tightest spread, nearest mid
Mid $3,500.00
Bid $3,499.91 ← 0.01% pool
Bid $3,499.56 ← 0.05% pool
Bid $3,494.75 ← 0.30% pool

Size Column

The size shown is a liquidity proxy — proportional to active liquidity concentrated at the pool’s current price, not an exact reserve figure. Use it to compare relative depth between tiers, not as an absolute size.

Gross vs Net Mode

The toggle in the DOM header switches between two price views:

  • Gross — raw mid-market price, fees not included. Use when comparing prices across venues without fee noise.
  • Net — the all-in price you’d pay (or receive) including the pool’s taker fee on each side. This is the economically meaningful price for any execution decision.

In Net mode, the all-in buy price on a 0.05% pool is approximately Gross ask × 1.0005; the all-in sell price is approximately Gross bid × 0.9995.

Stale Pool Prices

When first connecting to a pool, the initial price comes from an on-chain snapshot (slot0). Slot0 prices can be hours old for low-volume pools and update as soon as the first live swap arrives. Check the Age column in the AMM Widget to see how fresh each pool’s price is.

Market Impact Panel

For AMM venues, a panel below the order book shows estimated slippage in basis points to execute $1k, $10k, and $100k on the current pool. Updated on every quote.


AMM Widget

Open the AMM Widget by clicking the LP button on any AMM product row. The widget has three sections: Fee Tier Analysis, TWAP Oracle, and Tick Depth.

Fee Tier Analysis Table

Shows one row per active fee-tier pool, sorted tightest-fee first.

ColumnDescription
TierPool fee rate (0.01% / 0.05% / 0.30% / 1.00%)
BidCurrent effective sell price for this pool
AskCurrent effective buy price for this pool
SpreadAbsolute and relative spread (e.g. $0.18 · 0.05%)
Δ MidHow far this pool’s mid price is from the reference pool, in basis points
AgeSeconds since the last real swap was observed in this pool

Δ Mid (Delta Mid)

Δ Mid shows how much a pool’s price has diverged from the most recently active pool. The reference pool (shown as ref) is whichever pool had a swap most recently.

Δ Mid valueMeaning
refThis pool is the freshest — used as the benchmark
+5.4 bpThis pool’s mid is 5.4 bps above the reference
−12.1 bpThis pool’s mid is 12.1 bps below the reference

A persistent non-zero Δ Mid on a fresh pool indicates real price divergence between fee tiers — common during fast moves or in pools with different LP compositions.

When an overlay product is active (see Overlay Reference Line), it appears as an extra row showing that product’s bid, ask, and deviation from the freshest pool in basis points — the live DEX/CeFi spread.

Age Column

DisplayMeaningColor
< 1sSwap within the last secondGreen
5s, 45sSeconds since last swapGreen if < 30 s
2m, 10mMinutes since last swapAmber if 30 s – 5 m
23m, 1hLong since last swap — pool is quietRed if > 5 m
No live swap yet — price from initial snapshotGrey

Best Bid / Best Ask Row

Below the per-pool rows, a composite row shows the highest bid and lowest ask available across all active pools simultaneously.

ColumnDescription
BidHighest bid across all fee-tier pools
AskLowest ask across all fee-tier pools
SpreadDollar and percentage spread between the composite bid and ask

Cross-Pool Alert

Set a minimum spread threshold and arm it. When the price difference between two tiers exceeds the threshold after fees, the alert fires and logs the buy/sell legs, depth, and net gap.


TWAP Oracle

The TWAP chart shows time-weighted average price at selectable bar intervals.

  • Select a bar interval: [1m] [5m] [15m] [1h]
  • The chart updates as new bars complete

How bars are built:

  • V3 — derived from Uniswap V3’s built-in observe() on-chain oracle, which accumulates tick-weighted price history directly on the contract.
  • V4 — V4 has no built-in oracle. mackinac accumulates price observations from every Swap event received in real time. V4 TWAP bars appear after approximately one bar interval of swap activity; the chart is empty while data accumulates.
  • Sushi / PancakeSwap — same V3-style oracle accumulation as Uniswap V3.
  • Balancer — bars are derived from the Balancer subgraph; update cadence is slightly slower than native oracle-based venues.

Reading the TWAP:

The TWAP is most useful as a reference price — a stable anchor to compare against current pool prices.

  • Extended price: If the current DOM bid/ask is significantly above the 1h TWAP, the pair has moved up recently.
  • Regime identification: A flat TWAP that slopes sharply indicates sustained directional flow rather than noise.
  • DEX/CeFi basis: Use the overlay (below) to draw a reference line from the corresponding HL perp on the same chart. A persistent gap between the Uniswap TWAP and the HL mark price indicates a basis worth monitoring.

Overlay Reference Line

The overlay draws a gold dashed reference line on the TWAP chart from any other product in your workspace, and adds that product as a comparison row in the fee tier table.

The Overlay: none dropdown is pre-populated with every product in your workspace. If you already have a matching Hyperliquid product open (e.g. hl:ETH when viewing WETH/USDC), the overlay auto-selects it when the widget opens.

Overlay choiceWhat it shows
hl:ETH on WETH/USDCHL ETH perp mid vs. Uniswap spot
univ4:WETH/USDC on uni:WETH/USDCV4 vs. V3 price on the same chart
sushi:WETH/USDC on uni:WETH/USDCCross-protocol spread

Tick Depth Histogram

Shows where LPs have deployed capital across ±200 ticks around the current price.

  • Each bar is a tick boundary with active LP positions
  • The highlighted bar (amber) is the current tick — where swaps are executing now
  • Taller bars = more liquidity concentrated at that price level
  • Updates in real time as LP events arrive
PatternMeaning
Symmetric shapeLiquidity evenly distributed
Lopsided toward one sideMore capital deployed on that side of the current price
Thin bars near current tickLow concentrated liquidity — high price impact per trade
Step-change in bar heightTick boundary where a large concentrated position starts or ends

A thin current tick means each swap will move the price more than usual. A dense cluster above or below suggests LPs are positioned expecting price to remain in that range.


Consolidated Depth

The Consolidated Depth widget aggregates the best bid and offer across all AMM venues you have added for the same pair into a single cross-venue view. Open it with the CD button on any AMM product row.

Each row shows one venue with:

ColumnDescription
VenueExchange name + pool fee tier
Best BidHighest bid at that venue
Best AskLowest ask at that venue
Spread(ask − bid) / mid × 10,000 in basis points
AgeSeconds since the last on-chain swap event

Stale rows (age exceeding your Max age setting) are visually dimmed. The Gross/Net toggle applies here as well.

Spread Gap Detection

When the best bid at one venue is higher than the best ask at another, a highlighted row appears showing the venues involved, the gap in basis points, and the net gap after fees.

Spread Alert

ControlDefaultDescription
Min depth$100Minimum size on each side to consider a level valid
Max age120 sMaximum quote age; older quotes ignored for gap detection
Alert threshold3 bpsGross gap required to fire the alert
Cooldown30 sSeconds before the alert can fire again
ON / OFFOFFArms or disarms the alert

Practical Tips

Monitoring DEX/CeFi spread:

  1. Add WETH/USDC on Uniswap V4 and ETH on Hyperliquid
  2. Open the AMM Widget on the Uni product — the overlay auto-selects hl:ETH
  3. The TWAP chart shows Uniswap price history with a gold dashed line at the HL mid
  4. The fee tier table shows the live DEX/CeFi spread in basis points

A normal spread for WETH/USDC vs HL ETH is 0–20 bps. Sustained divergence above 30 bps may indicate funding-driven basis or structural dislocation.

Watching V3 and V4 together:

Add WETH/USDC on both Uniswap V3 and Uniswap V4 and open the AMM Widget on each. Set the overlay on each to the other’s product. Both charts now show the cross-protocol Δ Mid in real time.

Cross-venue comparison:

Add the same pair from Uniswap V4, Sushi, and PancakeSwap. Open Consolidated Depth to see all three venues side-by-side in a single ranked book. The best bid and ask across all venues are highlighted at the top.


V3 vs. V4 Feature Availability

FeatureUniswap V3Uniswap V4Sushi / Pancake
DOM (virtual order book)
T&S feed
AMM Widget — fee tier table
AMM Widget — TWAP chart✓ (on-chain oracle)✓ (event-based)✓ (on-chain oracle)
AMM Widget — tick depth
Consolidated Depth

Frequently Asked Questions

Why does the 1% pool show a age all the time?

The 1% pool trades very infrequently. Its price comes from the last recorded swap, which may be days old. The means no live swap has been observed since you subscribed. Once a swap occurs the Age column will update.

The V4 TWAP chart is blank — why?

V4 TWAP bars are built from Swap events received after you subscribed. The first bar appears after approximately one bar interval of swap activity. On active pairs like WETH/USDC this typically takes under 30 seconds.

Why does the tick depth histogram start empty?

The histogram is built from LP events received after you subscribe. It populates over the first few minutes. Pools with frequent LP activity fill in quickly.

V3 and V4 show different prices for the same pair — which is right?

Both are correct — they are independent pools with separate price state. Because swap flow actively equalizes prices, they normally trade within a few basis points of each other. A persistent difference indicates a real price divergence between the pools.


Venue Quirks

AMM quote age — Low-activity pools may show quotes that are minutes old if no trades have occurred. The age badge shows this staleness. The backend marks feeds as stale after 5 minutes with no on-chain event.

Balancer — Currently tracks the WETH/USDC weighted pool on Arbitrum. TWAP bar cadence is slightly slower than Uniswap V3 due to subgraph-based accumulation.