Skip to main content
Education
Contents
7 min read

Sessions & Opening Range

Session boundaries, initial balance, prior levels, and time-window state.

Session signals give market events a clock

A session signal labels where an observation sits inside a trading calendar. It can identify the open, close, overnight period, a fixed time window, the initial balance, or levels inherited from the prior session.

These labels are not mere chart decoration. Many market behaviors depend on who is active, when scheduled information arrives, when positions are rolled or marked, and when liquidity concentrates. A price move at the open can have different context from the same move at midday.

The calendar is part of the signal. A “day” must specify exchange timezone, session template, holidays, shortened sessions, breaks, and whether overnight trading belongs to the coming or previous day.

Opening range and initial balance are declared intervals

An opening range is the high and low formed during a chosen interval after the session begins. Initial balance is a related auction-market term often defined over a longer opening interval. The labels are not universal durations.

For an illustrative market opening at 09:30:

  • a 15-minute opening range uses events from 09:30 through the declared 09:45 boundary;
  • a 60-minute initial balance uses the first hour;
  • the high and low become final only after the interval closes.

A strategy cannot use the final range high at 09:35 unless it defines a developing range that may still change. The developing and completed signals are different.

Illustrative session timeline separating a developing opening range, its finalization, a later break, and a retest.

The range develops during the shaded opening interval. Its final high and low become fixed only at the boundary. A later break and an even later retest are separate decision events. Plotting all four labels on the original opening bar would erase the timing distinction that makes the sequence usable.

Break, retest, and acceptance are separate events

A price trading one tick above the opening high is a break. A close above it is a stronger but later definition. A retest requires price to return to the level under a declared tolerance and then satisfy another condition.

EventPossible definitionTiming issue
Breaktrade or close beyond rangeTrade and completed-bar versions differ
Retestreturn within tolerance after breakMust occur after the break
Reclaimcross back through level after failureNeeds event order
Acceptancepersistence or volume beyond levelRequires a window and threshold

The signal can expose these events. The strategy decides whether they trigger continuation, failure, or no trade.

Gaps compare two session references

An overnight gap is usually the difference between the current session’s open and a prior-session reference, often the previous close. The measurement must say:

  • which session close;
  • which current open;
  • whether extended hours are included;
  • price or percentage units;
  • how holidays and contract rolls are handled.

A gap does not imply it will fill. It describes a discontinuity between two declared references. A gap-fill strategy and a gap-continuation strategy test opposite hypotheses.

Prior-session levels are historical references

Prior high, low, close, VWAP, and profile levels summarize a completed session. They are known at the next session start, which makes their timing relatively clean.

Their interpretation is still empirical. A prior high can act as a breakout boundary, a reversion anchor, or an auction reference. Calling it support or resistance does not specify what the strategy does when price approaches, crosses, or rejects it.

Time windows are eligibility signals

A Time Window output can declare that a strategy is active only between two times. That may reflect liquidity, data availability, scheduled events, or risk policy.

Time gating can improve a result simply by removing expensive or inactive periods. It can also overfit recurring historical accidents. Compare the time-gated strategy with the same rule across the full eligible session, and account for the number of windows considered.

A complete opening-range observation

Illustrative example. Assume a completed 30-minute range from 09:30 to 10:00 has a high of 101 and low of 99. At 10:05, price trades at 101.20.

The signal can state that an upside break occurred after the range completed. It cannot yet state:

  • whether to enter immediately or wait for a close;
  • whether a retest is required;
  • how far beyond the range counts as meaningful;
  • where the stop and target belong;
  • how large the position should be;
  • whether volume or volatility confirms the move.

Those are strategy decisions.

The shipped Opening-Range Breakout/Retest signal consumes explicit opening high and low values; it does not infer the session or opening policy. A break flag is emitted before a qualifying retest can occur, and retest_window limits how long that later event remains eligible. The Initial Balance Volatility Regime also consumes an explicit baseline_range, such as ATR or rolling range. Its compressed or expanded label changes when that upstream baseline changes.

Session data pitfalls

  • Daylight-saving transitions can shift local and UTC cutoffs.
  • Futures have exchange-defined sessions and maintenance breaks.
  • Some equity data separates regular and extended hours.
  • Crypto trades continuously, so a session is a researcher-defined partition.
  • Holiday and early-close sessions can make ordinary windows incomplete.
  • Continuous futures rolls can create apparent gaps unrelated to market movement.

The instrument context must resolve these before the signal is trusted.

Session Segments and Time Window are related but not interchangeable. Session Segments classifies bars relative to an explicit session start and several phase boundaries. Time Window reports membership in one local-time interval, uses an inclusive start and exclusive end, and can wrap overnight. Neither signal infers an exchange calendar on the reader's behalf.

False readings to avoid

  • Assuming “opening range” has one universal duration.
  • Using the final range before its interval completes.
  • Calling any trade beyond a level a confirmed breakout.
  • Treating a gap as a promise to fill.
  • Mixing regular-session and overnight references.
  • Using clock times without timezone and calendar.
  • Testing many time windows and reporting only the winner.
  • Treating prior levels as causal barriers rather than testable references.

Shipped signals in this family

Try it in Arizmic

Included with Arizmic

7 prebuilt signals in this family

Use the shipped session family to build explicit clocks, completed prior-session references, developing opening levels, and later break or retest events.

  • A time window is schedule state; an opening range is a developing price reference.
  • Levels, breaks, and retests become knowable at different times.
  • Timezone, exchange calendar, session ID, and daylight-saving policy are part of every signal definition.

Ask the AI Companion

Draft a custom session signal

Signal draft

Create a typed time or session-state draft with explicit calendar and availability rules.

Draft a custom session signal for [instrument and venue]. Use explicit timezone [value], session identifier [field], and window [start/end]. It should measure [time eligibility, developing range, finalized level, break, retest, or session transition]. Emit levels, persistent state, and one-bar events separately; define inclusive/exclusive boundaries, overnight wrapping, daylight-saving handling, and when each output first becomes available. Compare it with [nearest shipped session signal]. Return a typed signal_draft for review only; do not infer missing calendars, save, run, generate arbitrary Python, or execute anything.

Ask the AI Companion

Explore session-signal uses

Research critique

Connect shipped schedule and session outputs to a strategy without introducing hidden timing or calendar assumptions.

Explain [shipped session signal] for [instrument], including required timezone/session fields, boundary rules, and every output's first available decision time. Suggest one use as schedule state, one as a price reference, and one as a break or retest event where applicable. Identify a control window and the most likely lookahead or daylight-saving error. Do not execute anything.

Personal notebook

Extend it in Marimo

Prepared Data

Open typed instrument-local timestamps, session IDs, and shipped session outputs in a personal Marimo notebook.

Make session boundaries, developing levels, finalization, breaks, and retests visible in decision-time order.

Bring in
instrument-local timestamps, session identifiers, opening and prior-session levels, break and retest flags
Build
session-aligned price chart, developing-versus-final opening-range timeline, boundary and daylight-saving audit table

How to read it: The chart should expose any level plotted before it was finalized and any bars assigned to the wrong local session.

Value origin: Calendar conversions, custom segments, and alternate control windows calculated in Marimo are notebook-derived.

With Companion: Ask for a reviewed boundary-audit cell draft, inspect timezone conversions and the diff, then apply it explicitly.

Further reading