Paboxo

Oracles

Chainlink feeds behind an adapter that knows when the market is shut.

Every price comes from a Chainlink Data Feed, read through a ChainlinkFeedAdapter that adds one thing the raw feed does not have: an opinion about whether the market is open.

How many assets can have a market

Counted from Chainlink's reference data directory on 2026-09-17: 35 feeds carry US equity market hours, against roughly 194 Stock Tokens in existence. A market cannot exist without a feed, so that is the ceiling on which assets Paboxo can list — about 18% of them.

Every one of those 35 shares the same configuration: an 86,400-second heartbeat, a 0.5% deviation threshold, and 8 decimals.

You may see it stated that every Stock Token has a live price feed. The directory does not support that, and these docs follow the directory.

Why an adapter

A raw feed reports a price and a timestamp. For an asset that trades continuously, a stale timestamp means something is broken. For a Stock Token it usually means it is Saturday.

Treating those two identically produces one of two failures — freeze the protocol every weekend, or price positions on a number that has been frozen for 60 hours while pretending it is live. The adapter separates them.

Status

Every read returns a status, and the contracts act on it rather than on the raw price alone:

StatusMeaning
0FreshThe market is open, the answer is within the in-session window, and it was published after the market last closed. Everything allowed
1MarketClosedThe exchange is shut per the calendar (or has only just reopened — see reopening). Last price stands and stays readable; borrowing, liquidation and withdrawing collateral from a position with debt pause. Everything else stays open
2StaleInSessionThe market should be open but the feed has not updated. Treated as a fault
3HardStalePast the hard cap. The price is not usable at all
4OraclePausedThe feed's own issuer has paused it
5InvalidAnswerThe feed returned something that cannot be a price

MarketClosed is the only one of these that is a normal condition rather than a problem.

Borrowing, liquidation and withdrawing collateral from a position with debt need both the collateral and the borrow token to be Fresh. The calendar is consulted before the clock, so a price that is minutes old is still MarketClosed while the exchange is shut.

Freshness windows

Two limits per adapter:

  • In-session max age — how stale a price may be while the market is open before it counts as StaleInSession.
  • Hard max age — the absolute ceiling. Past it the price is HardStale and unusable, open or closed.

The values, read from the four launch adapters (NVDA, SPY, WETH, USDG) on 12 October 2026, and from all six, SPCX and TSLA included, on 22 October 2026 (block 94915008), and from the MSFT and AAPL adapters on 27 October 2026 (block 99388687), and from the QQQ, GOOGL and AMD adapters on 13 November 2026 (block 113204091):

In-session max age26 hours (93,600 s)
Hard max age97 hours (349,200 s)

Every feed has a 24-hour heartbeat, so a window of 24 hours or less would mark a healthy feed stale between two rounds; 26 hours leaves two hours of slack. The hard cap has to outlast the longest closure, a long weekend joined to a holiday (about 81 hours measured), with margin.

oraclePaused

The feed's issuer can pause it. When that happens the adapter reports OraclePaused and the protocol stops pricing on it, rather than continuing with the last number.

This is a real dependency worth naming: the party that can pause the feed is not the protocol and not you. See risks.

Market calendar

Whether the market is open is decided by a MarketCalendar contract, not by guessing from feed timestamps. It holds:

  • a weekly close window, stored as seconds since Monday 00:00 UTC — so it expresses "Saturday 01:00 UTC until Monday 01:00 UTC", not a time of day;
  • automatic daylight saving, computed on-chain from the US rule, so the window shifts without anyone sending a transaction on the switch dates;
  • a list of holiday closures as absolute ranges.

The calendar holds 21 holiday closures, the NYSE full-day holidays still ahead from October 2026 through 2028, with automatic daylight saving on (read 12 October 2026). Early closes are not registered. The 2029 holidays are added once NYSE publishes them.

The NVDA, SPY, SPCX, TSLA, MSFT, AAPL, QQQ, GOOGL and AMD adapters point at the calendar. The WETH and USDG adapters deliberately do not — those assets have no market hours.

Why not a TWAP or a pull oracle

A TWAP needs a liquid on-chain market in the asset to average over; Stock Tokens do not have one. A pull-based oracle would let whoever submits the price choose when to submit it, which for an asset with a scheduled close is an invitation rather than a risk. A push feed with a published schedule is the honest fit for an asset with published market hours.

On this page