What Daily Bars Cannot Tell You: Highs, Lows and Execution Order
Identical daily OHLC values can hide different intraday paths. Learn why touching a price does not establish execution and how to state backtest assumptions.
A daily bar compresses a session into four prices
Open, high, low and close summarize the first, highest, lowest and last traded prices of a session. Check the market and provider’s precise price definitions in the actual dataset.
These four values show the session’s range, but do not preserve every intermediate movement. They do not establish whether the high preceded the low or how much could trade around a particular price.
Two paths can share the same OHLC
Consider a fictional bar with open 100, high 110, low 90 and close 105. Both 100→110→90→105 and 100→90→110→105 produce the same bar.
| Path | Intraday order |
|---|---|
| A | Open 100 → high 110 → low 90 → close 105 |
| B | Open 100 → low 90 → high 110 → close 105 |
These are invented figures, not security records. They illustrate why a daily bar cannot uniquely determine the sequence.
Multiple conditions can occur in one session
If different conditions respond to intraday rises and falls, their order can change the outcome. Selecting a favorable sequence from daily bars adds an unobserved path to the simulation.
Possible approaches include marking ambiguous sessions, comparing explicit alternative assumptions or obtaining the required data resolution. Record which sequence remains unobserved, whichever approach is chosen.
A touched price does not prove a fill
A price lying between the daily high and low does not establish that your order could fill there. Submission time, side, quantity, tick size and available liquidity all matter.
Conveniently using the daily high or low as a fill price can overstate execution feasibility. Slippage and market impact require attention alongside commissions.
Finer data still has limits
Minute bars divide the session into smaller intervals, but may still leave the high-low order within each interval unknown. Even detailed trade records need not reconstruct historical queue position or your order’s market impact.
Higher resolution can add necessary information. It does not automatically solve transaction-cost or execution questions. Match the information a rule needs to what the dataset actually observes.
Specify execution prices before running the public example
The public KabuForge reference uses information through the previous observed close and evaluates execution at the next observed open. It does not choose a favorable intraday high-low sequence after observing the bar.
Read backtesting basics and specify decision time, execution price and unfilled-order handling. If an unobserved intraday order is assumed, disclose the assumption and its effect on the result.
Sources and related material
KabuForge GUI research courses.
This article teaches research procedures. It does not recommend trades or guarantee future returns.Disclaimer
Continue this topic
Applies to: main source candidate (unpublished) · Public source docs/en_US/GUI_RESEARCH_COURSES.md
Reviewed · KabuForge