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
- Click the + button in the sidebar or header.
- Select the venue from the Exchange dropdown: Uniswap V3, Uniswap V4, Uniswap V4 (Unichain), SushiSwap, PancakeSwap, or Balancer.
- Enter the pair in
BASE/QUOTEformat — for exampleWETH/USDCorWBTC/USDC. - 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 midAsk $3,500.44 ← 0.05% poolAsk $3,500.09 ← 0.01% pool — tightest spread, nearest midMid $3,500.00Bid $3,499.91 ← 0.01% poolBid $3,499.56 ← 0.05% poolBid $3,494.75 ← 0.30% poolSize 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.
| Column | Description |
|---|---|
| Tier | Pool fee rate (0.01% / 0.05% / 0.30% / 1.00%) |
| Bid | Current effective sell price for this pool |
| Ask | Current effective buy price for this pool |
| Spread | Absolute and relative spread (e.g. $0.18 · 0.05%) |
| Δ Mid | How far this pool’s mid price is from the reference pool, in basis points |
| Age | Seconds 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 value | Meaning |
|---|---|
ref | This pool is the freshest — used as the benchmark |
+5.4 bp | This pool’s mid is 5.4 bps above the reference |
−12.1 bp | This 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
| Display | Meaning | Color |
|---|---|---|
< 1s | Swap within the last second | Green |
5s, 45s | Seconds since last swap | Green if < 30 s |
2m, 10m | Minutes since last swap | Amber if 30 s – 5 m |
23m, 1h | Long since last swap — pool is quiet | Red if > 5 m |
— | No live swap yet — price from initial snapshot | Grey |
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.
| Column | Description |
|---|---|
| Bid | Highest bid across all fee-tier pools |
| Ask | Lowest ask across all fee-tier pools |
| Spread | Dollar 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 choice | What it shows |
|---|---|
hl:ETH on WETH/USDC | HL ETH perp mid vs. Uniswap spot |
univ4:WETH/USDC on uni:WETH/USDC | V4 vs. V3 price on the same chart |
sushi:WETH/USDC on uni:WETH/USDC | Cross-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
| Pattern | Meaning |
|---|---|
| Symmetric shape | Liquidity evenly distributed |
| Lopsided toward one side | More capital deployed on that side of the current price |
| Thin bars near current tick | Low concentrated liquidity — high price impact per trade |
| Step-change in bar height | Tick 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:
| Column | Description |
|---|---|
| Venue | Exchange name + pool fee tier |
| Best Bid | Highest bid at that venue |
| Best Ask | Lowest ask at that venue |
| Spread | (ask − bid) / mid × 10,000 in basis points |
| Age | Seconds 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
| Control | Default | Description |
|---|---|---|
| Min depth | $100 | Minimum size on each side to consider a level valid |
| Max age | 120 s | Maximum quote age; older quotes ignored for gap detection |
| Alert threshold | 3 bps | Gross gap required to fire the alert |
| Cooldown | 30 s | Seconds before the alert can fire again |
| ON / OFF | OFF | Arms or disarms the alert |
Practical Tips
Monitoring DEX/CeFi spread:
- Add
WETH/USDCon Uniswap V4 andETHon Hyperliquid - Open the AMM Widget on the Uni product — the overlay auto-selects
hl:ETH - The TWAP chart shows Uniswap price history with a gold dashed line at the HL mid
- 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
| Feature | Uniswap V3 | Uniswap V4 | Sushi / 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.