Skip to content

Yield Markets

mackinac connects to Pendle and Spectra across Arbitrum, Base, and Ethereum mainnet. Every active PT market is tracked live — implied fixed APY, underlying floating rate, and on-chain swap flow — in the same normalized format as perp and AMM venues.


Finding Markets — Rate Widget

Open the Rate Widget from the header (Rate button). It lists every active PT market across both protocols:

ColumnDescription
ProtocolPendle or Spectra
MarketPT name and underlying
Implied APYCurrent fixed rate implied by the PT price
Bid APY / Ask APYAPY locked in by buying or selling PT at small size
Spread (bps)Ask APY minus bid APY — the cost of transacting
Days to expiryCalendar days until maturity
ChainArbitrum, Base, or Ethereum mainnet

Use the venue filter to narrow to Pendle or Spectra only. Click Track on any row to add that PT to your workspace.


Rate Depth Widget

Once a PT is in your workspace, click the RD button on its product row. Rate Depth shows available liquidity at each APY level.

Header Metrics

MetricDescription
Mid APYCurrent implied fixed rate (annualized)
Underlying APYThe floating reference rate the PT is priced against
SpreadMid APY minus underlying APY in basis points
Days to expiryCalendar days until maturity
AgeSeconds since last on-chain data update

Depth Table

ColumnDescription
Size (USD)Notional you want to trade
Buy APYFixed rate locked in by buying PT at this size
Sell APYFixed rate implied if you sell PT at this size
SpreadDifference between buy and sell APY at this level (bps)
MetricDescription
PT pricePrice of one PT in terms of the underlying asset
Pool feeThe AMM pool fee (bps)
TVLTotal value locked in the pool

Reading Rate Depth

The buy APY at a given size is the guaranteed annualized return if you buy PTs and hold to maturity. Compare it against the underlying APY to assess relative value: a fixed rate above the expected floating rate represents a premium to lock in.

Wide spreads (> 50 bps) at small sizes indicate thin liquidity. Large sizes will receive significantly worse rates — always check how APY degrades across the depth table before sizing.

To convert annualized APY to a total return over the remaining period:

total_return ≈ APY × (days_to_expiry / 365)

T&S and Vitals on Yield Markets

T&S and Vitals work on Pendle and Spectra markets the same way they do on perps. Every on-chain swap through the pool appears as a trade print with full microstructure annotations.

T&S side convention: green = buying PT (paying the underlying, receiving the fixed rate); red = selling PT.

Vitals tracks directional flow metrics on PT buying versus selling pressure — the same Hawkes intensity, LOB imbalance, and volume imbalance signals that apply to perp markets work here for detecting momentum in rate positioning.


Basis with Yield Markets

Add a PT alongside any correlated underlying — for example, hl:ETH alongside pendle:PT-weETH-... — and enable Basis on either product. The basis widget computes the spread in basis points net of round-trip fees, giving a live view of the implied fixed-rate premium relative to the corresponding perp.


Typical Workflow

  1. Open the Rate Widget scanner from the header
  2. Filter by protocol and chain; identify markets with the spread and duration you want
  3. Click Track to add to your workspace
  4. Enable Rate Depth (RD button) to see available liquidity at each APY level
  5. Enable T&S to watch the live swap stream
  6. Enable Vitals to see whether buyers or sellers are dominating flow

Venue Quirks

Spectra Base chain — Pool discovery for Spectra markets on Base uses an eth_getLogs scan. The public Base RPC endpoint sometimes rate-limits these scans, causing specific markets to show stale or missing data. Spectra Arbitrum markets are unaffected.

Pendle / Spectra on Ethereum mainnet — Market data for mainnet yield pools uses the public https://eth.llamarpc.com RPC (~100 req/min limit). Under normal polling cadences this is rarely hit, but initial pool discovery can cause brief delays on first load.