Skip to content

Uniswap & AMM

mackinac connects directly to Uniswap V3/V4, SushiSwap, and PancakeSwap pools on Arbitrum One. Monitor real-time swap prices, observe the multi-tier liquidity structure, compare DEX and CeFi prices, and analyze on-chain liquidity structure — all in the same interface you use for Hyperliquid.

Adding an AMM Product

  1. Click the + button in the sidebar (desktop) or header bar (mobile).
  2. In the Exchange dropdown, choose UNISWAP V3, UNISWAP V4, SUSHISWAP, or PANCAKESWAP.
  3. Enter the trading pair in BASE/QUOTE format — for example:
    • WETH/USDC
    • WBTC/USDC
  4. Click Add.

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

Reading the DOM Widget

The DOM (Depth of Market) widget shows the current bid and ask prices for each active fee-tier pool. This 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 Uniswap 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 price:

  • Bid — the price you would receive if you sold the base asset into this pool
  • Ask — the price you would pay if you bought the base asset from this pool

The spread between bid and ask for each row equals the pool’s fee (0.05% pool → 0.025% each side). Tighter-fee pools appear nearest the mid price; 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 — widest spread, furthest from mid

Size Column

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

Stale Pool Prices

When the backend first connects to a pool, the initial price comes from an on-chain snapshot (slot0). Slot0 prices can be minutes or days old for low-volume pools. These stale seeds update as soon as the first live swap arrives. Check the Age column in the AMM Pool View to see how fresh each pool’s price is.

The AMM Pool View

Open the AMM Pool View by clicking the LP button next to any AMM product in your product list. Available on all tiers.

The widget has three sections: Fee Tier Analysis, TWAP Oracle, and Tick Depth.

Fee Tier Analysis Table

The top section 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
AgeTime 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 in the column) is whichever pool had a swap most recently. All other pools are measured against it.

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

A persistent non-zero Δ Mid on a fresh pool indicates that different fee-tier pools have diverged in price — a common occurrence during fast moves or in pools with different LP compositions.

When an overlay product is selected (see Overlay Reference Line below), it appears as an extra row at the bottom of the table, showing that product’s bid, ask, spread, and its deviation from the freshest Uniswap pool in basis points. This is the DEX/CeFi spread in real time.

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 is from initial snapshotGrey

A (dash) means no live swap has been observed since subscribing. The price reflects on-chain state at subscribe time, which could be stale. Common for high-fee tiers (0.30%, 1.00%) that trade infrequently.

Best Bid / Best Ask Row

Below the per-pool rows, the fee tier table shows a composite row — 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

Use this row as a quick read on the tightest available prices across all tiers at once.

Gross / Net Toggle

A Gross / Net toggle at the top of the fee tier table switches how bid and ask prices are displayed:

ModeBid showsAsk shows
GrossRaw execution price before feeRaw execution price before fee
NetPrice after taker fee deducted from sell proceedsPrice after taker fee added to buy cost

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. Net mode shows the true all-in cost at each pool level.

TWAP Oracle

The TWAP (Time-Weighted Average Price) chart shows how the pair’s price has moved over time, using a time-weighted average rather than a simple last-trade price. This smooths out brief spikes and gives a cleaner picture of where the market has been trading.

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

How bars are built:

  • V3 — bars are 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 and computes bars from that local history. V4 TWAP bars appear after approximately one bar interval of swap activity; earlier in the session the chart is empty while data accumulates

Reading the TWAP:

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

  • Is the current price extended? If the current DOM bid/ask is significantly above the 1h TWAP, the pair has moved up recently. If below, it is trading at a discount to recent history.
  • Regime change identification. A flat TWAP that slopes sharply up or down indicates sustained directional flow rather than noise.
  • DEX/CeFi basis monitoring. Use the overlay (below) to draw a reference line from the corresponding HL perpetual 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 product list, and adds that product as a comparison row at the bottom of the fee-tier table.

Setting Up the Overlay

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

What You Can Compare

Overlay choiceWhat it shows
hl:ETH on WETH/USDCHL ETH perp mid vs. Uniswap spot — the DEX/CeFi spread
univ4:WETH/USDC on uni:WETH/USDCV4 price vs. V3 price on the same chart
hl:BTC on WBTC/USDCHL BTC perp mid vs. wrapped BTC spot

The Overlay Row in the Fee Tier Table

When an overlay is active, a highlighted row appears at the bottom of the fee-tier table showing the overlay product’s bid, ask, spread, and Δ Mid — the deviation from the freshest Uniswap pool in basis points. For hl:ETH overlaid on WETH/USDC, a Δ Mid of +16.5 bp means the HL ETH perpetual is trading 16.5 basis points above the Uniswap reference pool.

Tick Depth Histogram

The tick depth histogram shows where liquidity providers have deployed capital around the current price. Available for both V3 and V4 pools.

  • Each bar represents a tick boundary with active liquidity positions
  • The highlighted bar (amber) is the current tick — where swaps are executing now
  • Taller bars indicate more liquidity concentrated at that price level
  • The histogram updates in real time as liquidity providers add or remove positions

Reading the Histogram

PatternMeaning
Symmetric shapeLiquidity evenly distributed — typical of range-order LPs
Lopsided toward one sideMore capital deployed on that side of the current price
Thin bars near current tickLow concentrated liquidity — swaps have higher price impact at current levels
Sudden 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 of bars above or below the current tick suggests LPs are positioned expecting price to remain in that range.

V3 vs. V4 Feature Availability

FeatureUniswap V3Uniswap V4
DOM widget (virtual order book)
Time & Sales feed
AMM Pool View — fee tier analysis
AMM Pool View — TWAP chart✓ (on-chain oracle)✓ (event-based accumulation)
AMM Pool View — tick depth histogram

Consolidated Depth (Professional+)

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

Per-Venue Table

Each row shows one venue with:

ColumnDescription
VenueExchange name + pool fee tier
Best BidHighest bid price at that venue
Best AskLowest ask price 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 — Gross shows raw prices; Net adjusts for taker fees on each side.

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. This surfaces cross-venue price divergences as they occur.

Spread Alert (Professional+)

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

The overlay feature makes it straightforward to track how Uniswap prices compare to the corresponding Hyperliquid perpetual:

  1. Add WETH/USDC on UNISWAP V4 (or V3)
  2. Also add ETH on Hyperliquid
  3. Open the AMM Pool View — the overlay will auto-select hl:ETH
  4. The TWAP chart shows Uniswap price history with a gold dashed line at the HL mid
  5. The fee-tier table shows the real-time DEX/CeFi spread in basis points

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

Watching V3 and V4 Together

For the same pair, V3 and V4 pools are independent. Open AMM Pool Views for both and run them side by side:

  • Add WETH/USDC on UNISWAP V3 → open its LP widget
  • Add WETH/USDC on UNISWAP V4 → open its LP widget
  • On either widget, set the overlay to the other exchange’s product

Each widget now shows the other’s TWAP as a reference line, and the fee-tier table shows the cross-protocol Δ Mid.

When Pools Diverge

If a pool’s Δ Mid is persistently non-zero, this can indicate:

  • The higher-fee pool has less depth and is more easily moved by large trades
  • Different LP compositions between tiers creating directional bias
  • A recent large swap in one pool that has not yet been equalized

The Δ Mid resolves as swap flow equalizes prices across pools.

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 or weeks old. The means no live swap has been observed since you subscribed. Once a swap occurs, the Age column will show a real timestamp.

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 worth of swaps has accumulated (e.g. ~1 minute for the 1m interval). 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 (Mint/Burn for V3, ModifyLiquidity for V4) received after you subscribe. It populates over the first few minutes as events arrive. 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 usually trade within a few basis points of each other under normal conditions. A persistent difference indicates a real price divergence between the pools.

The overlay auto-selected something I don’t want — can I change it?

Yes. Click the Overlay dropdown in the TWAP chart header and select any other product or choose Overlay: none to clear it. The auto-selection only happens when the widget first opens, and only if a matching product is already in your list.