A gap is a measured change between two session references
A market gap is the difference between a new session’s opening reference and a reference from the previous session, usually the close or official settlement. If yesterday closed at 100 and today’s first eligible opening price is 103, the close-to-open gap is +3%.
That definition is more important than the empty space drawn on a chart. Futures trade across multiple sessions, equities have pre-market activity, and some instruments use an official auction or settlement that differs from the last visible trade. A strategy must state which sessions and prices it compares.
A gap is not a debt that price must repay. “Gaps always fill” confuses an event with one possible later path. Gap strategies usually test one of three ideas:
- continuation in the direction of the gap;
- partial or complete reversion toward the prior reference; or
- conditional behavior based on gap size and the earlier market state.
Each requires its own entry, target, horizon, and invalidation.
What can create a gap
News and repricing can occur while the primary venue is closed. Earnings, economic releases, global market moves, financing changes, and order imbalances can all move the next available price. Information, inventory, and the trading process can therefore contribute to an opening-price change before any gap rule is considered.
Some gaps represent durable new information. Others reflect thin overnight liquidity or opening inventory pressure that becomes easier to absorb once the main session is active. The strategy cannot know which type it saw from the gap alone. Context may help, but that context must be available before the later path reveals the answer.
Make gaps comparable
Raw point distance is rarely enough. A three-point gap is large for a twenty-dollar instrument and small for a high-priced index. Common scales are:
- percentage of the prior close;
- units of recent average true range;
- units of recent close-to-open dispersion; and
- percentile within the asset’s earlier gap distribution.
Normalization should use only prior information. A gap cannot be divided by the volatility of the session that has not happened yet.
The decisions inside a gap rule
| Decision | Examples | Why it matters |
|---|---|---|
| Prior reference | Last trade, official close, settlement | Changes the measured gap |
| New reference | Auction open, first regular-session trade, bar open | Changes what was executable |
| Adjustment | Raw, split-adjusted, or contract-adjusted prices | Prevents artificial gaps |
| Directional thesis | Continue, partial fill, full fill | Defines the trade |
| Entry | Opening auction, first completed bar, later confirmation | Changes price and information set |
| Target | Fixed fraction, prior close, session VWAP | Defines “fill” |
| Horizon | Opening interval, full session, multiple sessions | Determines success and capital use |
| Invalidation | Further extension, timeout, structural event | Limits information-driven tails |
A gap-reversion example
Illustrative example. Assume yesterday’s verified regular-session close was 100. Today’s first eligible primary-session price is 103, a +3% gap. Recent 20-day average true range is 2, so the gap is 1.5 ATR.
An illustrative reversion rule declares:
- Only positive gaps between 1 and 2 ATR are eligible.
- Wait for the first 15-minute bar to complete.
- Enter short at the next event only if price closes below that first bar’s midpoint.
- Target 101.50, half of the original gap, and exit at the session close if the target is not reached.
- Invalidate above a threshold defined before the test.
If the opening print is 103 but the first executable strategy fill is 102.60, that is the entry. If price reaches the prior close two days later, it is not a successful fill for a same-session strategy.
A continuation version would trade in the opposite direction and needs a different rationale and exit. Reporting whichever version worked for each gap would be hindsight.
Design the experiment before labeling gaps
Begin descriptively. Group gaps by direction and predeclared normalized-size buckets. For each bucket, show the distribution of:
- return after the first tradable event;
- maximum continuation and retracement;
- time to partial and full fill;
- no-fill frequency within the declared horizon;
- opening spread and estimated slippage; and
- behavior around scheduled versus unscheduled information.
Then test continuation and reversion as separate strategies. Use the same calendar, scaling method, exposure, and costs. Preserve every eligible gap, including those that never retrace.
For equities, reconstruct corporate actions and point-in-time membership. For futures, distinguish genuine market movement from continuous-contract roll adjustments.
How gap research goes wrong
A common sample selects only gaps that later filled and then studies how they filled. That removes the very failures needed to estimate the strategy. Another credits an entry at the official open even though the rule needs the first bar’s completed information.
Results should weaken gracefully as timing becomes more realistic. If all edge vanishes when the entry is delayed to a knowable event, the strategy was trading the observation used to define it.
Important failure modes
- Stock splits and adjustment errors create artificial equity gaps.
- Futures roll construction creates non-tradable jumps.
- Official auction prices may not be available to the modeled order.
- Large information gaps can continue and dominate many small reversion gains.
- Timezone and holiday errors compare the wrong sessions.
- A fitted size bucket can turn ordinary sampling variation into a story.
Try it in Arizmic
Strategy composition
Build the premise with shipped signals
Measure the opening gap relative to the prior session, then choose continuation or fade only after adding session location, participation, and a causal decision rule. The gap is context; the strategy comes from what happens after trading resumes.
These are starting structures, not presets or evidence of an edge. Choose one, replace the bracketed decisions, and keep the signal roles separate as you test it.
Composition 01
Gap continuation beyond prior-session structure
Continuation recipe- Overnight GapGap measurement
- Prior Session High/Low/CloseStructural reference
- Wilder ATRGap and risk scale
Data: OHLCV Bars
View configuration and complete ruleHide recipe details
Composition 01
Gap continuation beyond prior-session structure
Overnight Gap
Gap measurement
Overnight Gap reports both raw and percentage displacement between sessions.
Configure
No configurable parameter is required for this role.
Use the output
- gap_pct
- Require gap percentage beyond [directional threshold].
- gap
- Retain raw price distance for risk and tick-scale interpretation.
Prior Session High/Low/Close
Structural reference
Prior Session High/Low/Close identifies whether the open is outside the prior range or merely away from the close.
Configure
No configurable parameter is required for this role.
Use the output
- prior_high
- For long continuation, require the decision price to hold above the prior high under [rule].
- prior_low
- For short continuation, require the decision price to hold below the prior low under [rule].
- prior_close
- Use as the fixed gap origin and one failure reference.
Wilder ATR
Gap and risk scale
ATR places the gap and protection distance in a recent movement context.
Configure
- window · [ATR window]
- Estimate movement from prior completed bars.
Use the output
- atr
- Require gap size within [ATR range] and set [ATR multiple] risk distance.
Assemble the rule
- Entry
- After the first declared decision interval, enter continuation only if the gap remains beyond the relevant prior-session level.
- Exit
- Exit on re-entry into the prior range, gap-fill threshold, ATR protection, target, or session cutoff.
- Decision time
- The opening print defines the gap, but entry waits for [first completed bar or other declared confirmation].
- Sizing
- Use ATR-scaled risk and a gap-through exposure cap.
Useful variations
- Compare gaps outside the prior range with gaps that remain inside it.
- Vary the post-open confirmation interval without scoring from the opening price.
- Partition by gap size in ATR units rather than raw points alone.
Keep in view
Large gaps can pass through intended orders and stops before the strategy’s first executable decision. Bar-only assumptions need explicit gap and fill treatment.
Composition 02
Gap fade toward session VWAP
Fade recipe- Overnight GapInitial displacement
- Session VWAP DistanceIntraday reversion state
- Relative VolumeParticipation state
- Time WindowSession cutoff
Data: OHLCV Bars, Instrument Context
View configuration and complete ruleHide recipe details
Composition 02
Gap fade toward session VWAP
Overnight Gap
Initial displacement
Overnight Gap supplies the direction and size of the session discontinuity.
Configure
No configurable parameter is required for this role.
Use the output
- gap_pct
- Create a fade candidate beyond [minimum gap percentage].
Session VWAP Distance
Intraday reversion state
Session VWAP Distance measures whether early trading remains stretched from the developing volume-weighted anchor.
Configure
- zscore_window · [distance history]
- Set the history used to standardize session distance.
Use the output
- zscore
- Enter only after distance reaches [extreme] and then [stabilizes/reverses under declared rule].
- distance
- Retain raw distance for execution and fixed-risk interpretation.
Relative Volume
Participation state
Relative Volume separates a thin drift from an active repricing that may be dangerous to fade.
Configure
- window · [volume baseline]
- Define ordinary activity for the selected bar interval.
Use the output
- relative_volume
- Apply [eligible range or block above threshold] as declared.
Time Window
Session cutoff
Time Window makes the eligible entry and forced-exit period explicit.
Configure
- start_minute · [earliest entry minute]
- Prevent entry before the chosen opening information is available.
- end_minute · [latest entry/exit minute]
- Bound exposure to the intended session segment.
Use the output
- in_window
- Permit new entries only while true.
- exit_window
- Force the declared session-time exit when true.
Assemble the rule
- Entry
- Inside the eligible time window, fade only after a qualifying gap and a completed VWAP-distance reversal under the participation policy.
- Exit
- Exit at [live VWAP/partial gap fill/fixed target], invalidation beyond [level], or the time-window cutoff.
- Decision time
- The VWAP anchor develops after the open; store the actual decision-bar gap and VWAP values.
- Sizing
- Use [fixed risk or separate ATR input] with a hard intraday loss cap.
Useful variations
- Compare direct fade with reversal-confirmed fade.
- Use live VWAP exit versus fixed percentage gap-fill target.
- Treat high Relative Volume as exclusion versus a separate event class.
Keep in view
A developing session VWAP can move toward price even when price does not meaningfully revert. Distinguish anchor movement from actual gap closure.
Ask the AI Companion
Draft this strategy
Turn a session gap idea into a simple draft and explain the difference between continuation and reversion choices.
I want to create a gap strategy for [instrument and session] that detects meaningful differences between the new session’s opening price and the prior session’s reference. Recommend how a significant gap should be measured, which timeframe I should begin with, and whether following or fading the gap is the more sensible starting approach for this instrument. Then build the strategy for me and explain what behavior after the open should support the chosen direction before it acts.
Extend it in Marimo
Begin from a retained session Study so the calendar, opening print, and post-open decision remain traceable.
Separate gap size, prior-session location, post-open behavior, and anchor movement.
- Bring in
- engine-reported gap, prior levels, VWAP distance, volume, time-window, ATR, decisions, and fills, session calendar, timezone, and gap origin, retained candidates, costs, and exits
- Build
- prior-close-to-open and post-open path chart, gap continuation/fill curves aligned from the actual decision time, outcome table by prior-range location, ATR-scaled gap, participation, and entry delay
Interpretation: A strategy should not inherit the overnight move as trade profit. Judge only the path available after its declared post-open decision.
Value origin: Session, signal, decision, fill, and retained result values are engine-reported. Gap classes, matched post-open paths, and custom anchor-movement decompositions are notebook-derived.
With Companion: Ask Companion to draft reviewed gap-classification cells, inspect session alignment, then explicitly apply the diff.
Further reading
- Biais, Hillion, and Spatt, “Price Discovery and Learning during the Preopening Period in the Paris Bourse” (1999) — Shows that indicative pre-open prices become more informative as the opening approaches. It explains why an opening print can contain both learning and noise, and why venue design matters.
- Grant, Wolf, and Yu, “Intraday Price Reversals in the US Stock Index Futures Market: A 15-Year Study” (2005) — Directly studies intraday behavior after large opening gaps in US stock-index futures. Its filter sizes and futures setting make the evidence conditional rather than support for “gaps always fill.”
- Akbas, Boehmer, Jiang, and Koch, “Overnight Returns, Daytime Reversals, and Future Stock Returns” (2022) — Documents an asymmetric relation between positive overnight returns and negative daytime reversals in US equities and investigates competing trader clienteles. The monthly cross-sectional design is not a ready-made single-gap trading rule.