Mechanism · 04 / 19Preview · not deployed
Sessions and the calendar
The five NYSE-calendar sessions, DST, holidays and early closes.
A seat is sold for one pool and one session. This page defines the sessions: when they start and end, why they follow the stock exchange and not the blockchain, and what happens around daylight saving changes, holidays and early closes.
The five sessions#
All times are wall-clock Eastern Time, in the America/New_York time zone.
| Session | Starts (ET) | Ends (ET) | Fee bounds | Duties | Bell window |
|---|---|---|---|---|---|
| OPEN | 09:30 | 10:00 | 0.05%–1.00% | No | First 20 s |
| DAY | 10:00 | 16:00 | 0.05%–0.50% | Yes | On halt resumption only |
| POST | 16:00 | 20:00 | 0.05%–1.00% * | No | On halt resumption only |
| NIGHT | 20:00 | 09:30 | 0.05%–2.00% | No | On halt resumption only |
| WEEKEND | Fri 20:00 | Mon 09:30 | 0.05%–2.00% | No | On halt resumption only |
Each session is a different product, because each one contains a different event.
| Session | What it contains |
|---|---|
| OPEN | The opening bell and the overnight gap. It starts with the bell window: for the first 20 seconds, only the regent can swap. |
| DAY | Regular hours. Oracle is live: duties apply. |
| POST | After the close. Earnings land here. |
| NIGHT | Overnight. No reference price. |
| WEEKEND | Friday close to Monday open. |
Sessions tile time with no gaps and no overlaps. The end of one session is the start of the next, so at every instant exactly one session is in force for every pool.
The session type matters in three places. Fee caps differ by session type (Seat rights). Duties apply in DAY only (Seat duties and slashing). The auction reserve is computed per session type, from past winning bids for that same type (The seat auction).
Why the NYSE calendar#
The loss Regent sells is caused by the stock market, not by the chain. The pool goes stale because the reference price jumps at the opening bell, after earnings, or over a weekend. The boundaries of the product therefore have to sit where the reference market puts them.
Cutting time this way also keeps each seat easy to value. The OPEN seat is almost entirely about the overnight gap. The DAY seat is about continuous trading against a live oracle, with duties attached. The POST seat covers the hours where earnings land. NIGHT and WEEKEND cover hours with no reference price at all, which is why their fee caps are the widest and why they carry no duties.
A fixed UTC schedule could not do this. The bell rings at 09:30 in New York, and New York changes its UTC offset twice a year.
Time zones and daylight saving#
Session boundaries are defined in New York wall-clock time and converted to UTC instants, never the other way round. 09:30 ET is one UTC time while New York is on standard time (five hours behind UTC) and a different one, an hour earlier, while it is on daylight time (four hours behind). The session follows the bell, so its UTC start moves with it.
Two consequences follow.
- Conversion must be DST-safe. The site's clock never applies a fixed offset. It asks the time zone database what the New York wall clock reads at a given instant and corrects until the two agree.
- Durations are measured in real seconds. US clock changes happen early on a Sunday morning, which always falls inside a WEEKEND-type session. That session is one hour shorter in spring and one hour longer in autumn. The rent rate is the LP share of the bid divided by the actual duration, so the stream still pays out exactly over the session. See Rent streaming and anti-JIT.
Holidays and early closes#
On a full-day holiday the exchange does not open, so there is no OPEN, DAY or POST that day. On an early close the exchange shuts at 13:00 ET. The preview calendar carries these dates for the years shown below, taken from the published NYSE calendar.
| Date | Occasion | Market |
|---|---|---|
| 2026-01-01 | New Year's Day | Closed |
| 2026-01-19 | Martin Luther King, Jr. Day | Closed |
| 2026-02-16 | Washington's Birthday | Closed |
| 2026-04-03 | Good Friday | Closed |
| 2026-05-25 | Memorial Day | Closed |
| 2026-06-19 | Juneteenth | Closed |
| 2026-07-03 | Independence Day (observed) | Closed |
| 2026-09-07 | Labor Day | Closed |
| 2026-11-26 | Thanksgiving Day | Closed |
| 2026-11-27 | Day after Thanksgiving | Early close 13:00 ET |
| 2026-12-24 | Christmas Eve | Early close 13:00 ET |
| 2026-12-25 | Christmas Day | Closed |
| 2027-01-01 | New Year's Day | Closed |
| 2027-01-18 | Martin Luther King, Jr. Day | Closed |
| 2027-02-15 | Washington's Birthday | Closed |
| 2027-03-26 | Good Friday | Closed |
| 2027-05-31 | Memorial Day | Closed |
| 2027-06-18 | Juneteenth (observed) | Closed |
| 2027-07-05 | Independence Day (observed) | Closed |
| 2027-09-06 | Labor Day | Closed |
| 2027-11-25 | Thanksgiving Day | Closed |
| 2027-11-26 | Day after Thanksgiving | Early close 13:00 ET |
| 2027-12-24 | Christmas Day (observed) | Closed |
Two rules cover every case.
Any closure longer than one night is one WEEKEND-type session. A normal weekend is the obvious example. A holiday is the same thing: if Thursday is a holiday, then Wednesday's POST is followed by a single WEEKEND-type session that runs until Friday's opening bell. A long weekend is one session from the last POST before it to the first bell after it. There is never a NIGHT session followed by another NIGHT session. The seat is sold once for the whole closure, with WEEKEND fee caps and the WEEKEND reserve history.
On an early close, DAY ends at 13:00 and POST runs four hours after it. OPEN is unchanged. DAY is shorter. POST keeps its usual four-hour length but starts at 13:00, and the overnight session that follows starts when that POST ends. The day after Thanksgiving is a typical case: it is an early close that leads straight into a weekend, so the WEEKEND-type session that follows starts earlier than on a normal Friday.
Session length changes what a seat is worth and how fast the rent streams, so bidders need to know about early closes before they bid. The calendar is public for that reason.
The planned SessionClock#
On-chain, the calendar is planned to live in one contract, SessionClock. Its job is to answer one question for the other contracts: which session is in force right now, and when does it end.
Planned responsibilities:
- convert ET session boundaries to UTC timestamps, including daylight saving changes,
- hold the holiday list and the 13:00 early closes,
- apply the two rules above, so that long closures become one WEEKEND-type session,
- cross-check its own answer against the Chainlink market status for the tokenized-equity feed.
The cross-check matters because a calendar is a prediction. Exchanges occasionally close on days nobody planned for. Market status from the oracle is the observation that the calendar is checked against. How a disagreement between the two is resolved is not fixed in the design yet. Trading halts in a single stock are a separate matter, handled inside the session; see Edge cases and attack surface.
The draft interface is in Architecture and contracts.
Who maintains the calendar#
Exchange holidays are announced years ahead but are not a formula. Somebody has to enter them. In the design that is governance: $RGNT stakers govern the holiday calendar, along with fee bounds, the bell window length and bond tiers. The token is not live and there is no contract address, so today this is a statement of intent. See The $RGNT token.
The clock on this site#
The live session clock on this site and in the preview is not read from a chain, because there is nothing deployed to read from. It is computed in your browser by lib/regent/sessionClock.ts, the TypeScript twin of the planned contract.
It uses the browser's built-in time zone database for America/New_York, the same holiday and early-close lists shown above, and the same two calendar rules. Given any instant it returns the session in force, its exact start and end, and whether the day is an early close. The preview schedules its sessions from the same module, and the session times in these docs are read from the same parameters file.