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
- Click the + button in the sidebar (desktop) or header bar (mobile).
- In the Exchange dropdown, choose UNISWAP V3, UNISWAP V4, SUSHISWAP, or PANCAKESWAP.
- Enter the trading pair in
BASE/QUOTEformat — for example:WETH/USDCWBTC/USDC
- 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 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% pool — widest spread, furthest from midSize 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.
| 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 | Time 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 value | Meaning |
|---|---|
ref | This pool is the freshest — used as the benchmark |
+5.4 bp | This pool’s mid is 5.4 basis points above the reference |
−12.1 bp | This 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
| 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 is from initial snapshot | Grey |
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.
| 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 |
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:
| Mode | Bid shows | Ask shows |
|---|---|---|
| Gross | Raw execution price before fee | Raw execution price before fee |
| Net | Price after taker fee deducted from sell proceeds | Price 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 choice | What it shows |
|---|---|
hl:ETH on WETH/USDC | HL ETH perp mid vs. Uniswap spot — the DEX/CeFi spread |
univ4:WETH/USDC on uni:WETH/USDC | V4 price vs. V3 price on the same chart |
hl:BTC on WBTC/USDC | HL 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
| Pattern | Meaning |
|---|---|
| Symmetric shape | Liquidity evenly distributed — typical of range-order LPs |
| Lopsided toward one side | More capital deployed on that side of the current price |
| Thin bars near current tick | Low concentrated liquidity — swaps have higher price impact at current levels |
| Sudden 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 of bars above or below the current tick suggests LPs are positioned expecting price to remain in that range.
V3 vs. V4 Feature Availability
| Feature | Uniswap V3 | Uniswap 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:
| Column | Description |
|---|---|
| Venue | Exchange name + pool fee tier |
| Best Bid | Highest bid price at that venue |
| Best Ask | Lowest ask price 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 — 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+)
| 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
The overlay feature makes it straightforward to track how Uniswap prices compare to the corresponding Hyperliquid perpetual:
- Add
WETH/USDCon UNISWAP V4 (or V3) - Also add
ETHon Hyperliquid - Open the AMM Pool View — the overlay will auto-select
hl:ETH - The TWAP chart shows Uniswap price history with a gold dashed line at the HL mid
- 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/USDCon UNISWAP V3 → open its LP widget - Add
WETH/USDCon 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.