Observation

Documentation snapshot 18 October 2026. Deployment · Audit Status
On this page

An observation applies the series rules to a validated closing price. It can pay a coupon, end the series or defer processing when a price cannot be accepted.

Definition

An observation is the act of reading the official closing price of the underlying at one timestamp in observations[] and applying the series rules to it. Observations are the only moments at which anything happens to a live series. Between observations, price moves do not change the core note settlement decision; collateral marks in a separate credit market can still change.

Schedule

  • observations[] is an array of uint40 UNIX timestamps, strictly ascending, fixed at creation and validated by MarketCalendar.isOfficialClose (each must be an official US equity close).
  • observations[0] is the strike observation. It fixes s0 and is the moment matching is finalised (finalizeStrike).
  • observations[1..last-1] are intermediate observations: coupon and autocall.
  • observations[last] is maturity: coupon and knock-in decision.

illustrative An “8 weekly observations” series therefore has 9 timestamps: one strike plus 8 coupon dates, of which the 8th is maturity.

Timing Rule

fact Official close is 20:00 UTC while US daylight saving time is in force and 21:00 UTC otherwise, Monday to Friday, excluding registered holidays, with registered early closes at 17:00 or 18:00 UTC. DST boundaries are computed on-chain (second Sunday in March, first Sunday in November). See Oracle and MarketCalendar.

fact Timing Rule
YearDST begins (US)DST ends (US)Regular close before / after
20268 Mar1 Nov21:00 UTC → 20:00 UTC → 21:00 UTC
202714 Mar7 Novsame pattern
202812 Mar5 Novsame pattern
202911 Mar4 Novsame pattern
203010 Mar3 Novsame pattern

How the Price Is Read

NoteCore.observe(seriesId) is permissionless. The adapter checks the following before accepting a price:

  1. The close and its configured grace period have passed.
  2. Each selected round is positive, valid and stamped no later than the close, within the allowed pre-close window. A Pyth Pro round must also have been posted before the grace deadline.
  3. The bounded history walk completed. Reaching the walk limit defers the read rather than accepting an incomplete search.
  4. When both feeds resolve, their prices agree within maxDeviationBps. At least one accepted closing print must meet the configured closing-freshness requirement; freshness then determines which agreeing feed is used.

If the checks fail, the observation is Deferred. Later calls depend on feed availability and retained history, not just on elapsed time. See Oracle and MarketCalendar for the complete selection rule.

Outcomes

Observation decision tree observe(seriesId) price P at closeTs P < barrier barrier ≤ P < autocall P ≥ autocall intermediate maturity no coupon series continues no coupon physical settlement coupon paid series continues coupon paid cash settlement coupon + autocall principal returned coupon paid cash settlement
fact The same price produces different outcomes at an intermediate observation and at maturity. At maturity the autocall level is irrelevant: any price at or above the barrier settles in cash.

Ordering and Liveness

  • Observation i cannot be processed before observation i−1 is finalised, and not before its own closeTs.
  • A Deferred observation may be retried by anyone within deferralWindow (72 h). After that, governance may forceObserve with an explicit price after a mandatory 24 h delay (event emitted), or cancel the observation, in which case no coupon is paid and no autocall occurs for that date and the series continues.
  • The first successful observe after closeTs earns keeperRewardQuote (default 2 USDG) from accrued fees. See Automation and cranks.
  • The coupon of observation i accrues to the COUPON holders of record when observe(i) executes, not at closeTs. NoteCore.observationDue(seriesId) reports whether such a crank is pending; see Coupon leg.
  • If a calendar change rolls two observations onto the same official close, the later index is collapsed: consumed without a coupon, autocall test or keeper reward (ObservationCollapsed). One close, one observation. See Oracle and MarketCalendar.

What Is Not an Observation

  • The reference price used during Subscription to value SHIELD deposits pro rata. It is the latest feed answer while the market is open and the last official close while it is shut (referencePrice); it has no effect on settlement; final matching uses s0.
  • Any price read outside observations[], including weekend prints, intraday moves and the 24/7 on-chain AMM price.
A little more clarity?

Keep exploring, or revisit this topic from the navigation.