Skip to main content
The oracle tells the core whether the market is open, and what price to use. It stores no last-good price of its own. Every answer is timestamp math, an immutable config, or an onchain read.
Regime priority is sequencer down, corporate-action window, dark, halted, then live, and only live and dark return a price.Regime priority is sequencer down, corporate-action window, dark, halted, then live, and only live and dark return a price.
Crypto oracles often keep a last good tick. Equity feeds go quiet for two days. Stockline reports a regime and haircuts Friday close rather than inventing a Saturday price.
regime() priority in code: SEQ_DOWN, CA_WINDOW, DARK, HALTED, LIVE. ARCHITECTURE.md lists sequencer as a required input. EquityOracle allows sequencerFeed = address(0) because Robinhood has no published Chainlink uptime feed yet. A zero feed never trips SEQ_DOWN. Launch haircut is 200 bps. maxDarkDuration is 280,800 seconds. Live staleness 3600s. Loan staleness 86400s. HolidayCalendar: future-dated day indices, append-style, lockout before each date. It can only cause reverts or haircuts. EquityOracleFactory deploys with CREATE2 from a config-derived salt and emits the full config. Related: Market hours, Parameters, Read the regime. Scale is 10 ** (36 + loanDecimals + loanFeedDecimals - collDecimals - stockFeedDecimals), capped so the exponent is at most 54. Weekend detection is timestamp arithmetic with UTC offsets darkStartOffset and darkEndOffset. Halts are staleness. HolidayCalendar can only cause reverts or haircuts. It cannot produce a live price. Changing a listing means a new oracle from the factory and a registry write behind the timelock. Config is immutable per oracle. Related numbers live on Parameters: live staleness, loan staleness, haircut, max dark duration, corporate-action window, sequencer grace.