A third of every week has no price.
Robinhood Chain went live on 1 July 2026 as an Arbitrum Orbit L2, and it trades tokenised US equities and ETFs around the clock, alongside DeFi lending. The shares those tokens represent trade for six and a half hours a day, five days a week.
Here is the actual week:
| When | Hours | State | What it means |
|---|---|---|---|
| Mon–Fri | 09:30–16:00 ET | Regular | real price discovery |
| Mon–Fri | 04:00–09:30 ET | Pre-market | thin but real |
| Mon–Fri | 16:00–20:00 ET | After-hours | thin but real |
| Mon–Fri | 20:00–04:00 ET | Dark | 8h a night, nothing |
| Fri 20:00 → Sun 18:00 | Dark | ~46 continuous hours | |
| Sun 18:00 → Mon 04:00 | Futures only | ES/NQ reopen on Globex | |
| ~10 days a year | Holiday | full closure |
Roughly a third of every week has no price discovery at all. A tokenised position can be lent against, liquidated, or traded in every hour of it.
What oracles do today
They return one number. A lending market reading HOOD = 119.83 cannot tell a live consolidated print from Friday's close warmed over for two days. So it has to assume the worst at all times, and prices that assumption into everyone's loan-to-value.
What we publish instead
Not a price. A price plus its epistemics, so the consumer can decide for itself:
struct Quote {
uint128 price;
uint64 confidence; // bps band, widens as the tape goes cold
uint8 session; // REGULAR|PRE|POST|CLOSED|HOLIDAY
uint8 provenance; // TRADED|DERIVED|STALE
uint8 sourceCount;
uint64 maxDeviationBps;
uint64 lastTradeTime;
}Now a protocol can write policy that was previously impossible:
- allow liquidations only when
provenance == TRADED - scale loan-to-value by
confidence - halt on
maxDeviationBpsabove a threshold - widen spreads automatically through the weekend instead of guessing
Where the number comes from when nothing trades
Crypto is the only liquid thing still open through a US weekend, so it is the proxy of last resort. We take the last close and apply a per-instrument beta against the blended BTC/ETH move measured over exactly the window the tape was shut. Both the beta and the band are fitted, against two years of realised close-to-open gaps.
The square-root-of-time model was wrong
The first version of this widened the band by √t, on the standard argument that uncertainty under a random walk grows with the square root of elapsed time. Fitting it against real gaps showed that is not what equities do.
Solving for the exponent in σ ∝ hours^k across all eight instruments gives k = 0.107, not 0.5. A weekend is roughly 3.7 times the clock hours of an overnight gap, yet its realised dispersion is only a few percent wider.
| Instrument | Overnight σ | Weekend σ | Fitted k |
|---|---|---|---|
| HOOD | 215 bps | 232 bps | 0.058 |
| COIN | 180 bps | 165 bps | -0.064 |
| NVDA | 150 bps | 184 bps | 0.154 |
| TSLA | 188 bps | 218 bps | 0.110 |
| AAPL | 104 bps | 124 bps | 0.133 |
| MSTR | 169 bps | 195 bps | 0.106 |
| SPY | 55 bps | 62 bps | 0.086 |
| TLT | 57 bps | 65 bps | 0.103 |
Calendar time is a poor clock for market risk. Information arrives around the close and the open, not evenly through Saturday. The practical consequence is that almost all of the weekend's uncertainty exists the moment the bell rings, and waiting two more days adds little. A protocol that widens gradually through a weekend is mispricing Friday evening. The old model went ±0.53% to ±6.84% across a weekend; the fitted one goes ±3.60% to ±4.80%, which is what actually happens.
The band is validated, not asserted
The band is a two-sided 95% interval, 1.96 σ. Whether that is honest is a testable question, so it is tested: every historical gap is replayed and counted against the published band.
| Instrument | Fitted β | Prior β | R² | Coverage |
|---|---|---|---|---|
| HOOD | 0.690 | 0.45 | 0.379 | 93.8% |
| COIN | 0.791 | 0.60 | 0.557 | 93.4% |
| NVDA | 0.275 | 0.20 | 0.148 | 95.0% |
| TSLA | 0.357 | 0.25 | 0.172 | 95.2% |
| AAPL | 0.115 | 0.12 | 0.064 | 96.4% |
| MSTR | 0.950 | 0.80 | 0.645 | 94.2% |
| SPY | 0.128 | 0.15 | 0.241 | 95.8% |
| TLT | 0.001 | 0.00 | -0.002 | 95.6% |
Every instrument lands between 93.4% and 96.4% against a 95% target, across roughly 500 gaps each. Every prior was too low except AAPL and TLT. The R² column matters too: crypto explains 56% of COIN's overnight moves and essentially none of TLT's, which is why TLT gets no drift applied at all.
No single upstream
Sourcing is pluggable. An earlier build read prices from DIA directly, which made their terms and their uptime ours. Providers are now adapters behind one interface and the oracle runs on whichever are configured, so no vendor becomes load-bearing.
The published price is the median across whichever resolved, so one bad feed cannot drag it, and their disagreement widens the band directly through maxDeviationBps. Only providers that report genuine print times may establish freshness; the rest can contribute a price but not a timestamp.
That distinction is not academic. DIA's RWA endpoint stamps several tickers with fetch time, so it is registered as a source of prices but never of freshness, and it is off by default because their own configuration documents the free tier as evaluation-only.
The current default, Yahoo's chart endpoint, needs no key and reports a real last-print time, which makes it the best free source for freshness. It is not licensed for commercial redistribution. Add a licensed vendor before production.