TQTradingQuery

Session behavior · MNQ

How does MNQ react when price touches the prior day's high -- does it break through or bounce

150

touch count

n=1502025-08-30 to 2026-09-06

touch count

150

breakthrough count

93

bounce count

57

breakthrough rate

62.0%

bounce rate

38.0%

close above 15m after touch rate

61.3%

definition

breakthrough=EOD close above prior day high; bounce=EOD close at/below prior day high, given RTH day touched prior high

Methodology

Analysis code was generated by an AI model up to 25 times, run in a sandbox against real MNQ 1-minute bars from 2025-08-30 to 2026-09-06, and reviewed automatically. Attempts that computed the same set of measures were grouped, and the figures shown are the median of the largest group. Agreement between attempts lowers the chance of a one-off coding slip; it does not prove the code matches the question, so the exact code is shown below.

Show the code

et = to_et(bars)
rth = rth_session(et)
rth = rth.copy()
rth['date'] = trading_date(rth)

daily = rth.groupby('date').agg(day_high=('high','max'), day_low=('low','min'), day_close=('close','last'))
daily['prior_high'] = daily['day_high'].shift(1)

dates = list(daily.index)
touch_count = 0
breakthrough_count = 0
bounce_count = 0
close_above_count = 0
follow_through_count = 0

for i in range(1, len(dates)):
    d = dates[i]
    prior_high = daily.loc[d, 'prior_high']
    if pd.isna(prior_high):
        continue
    day_bars = rth[rth['date'] == d]
    if len(day_bars) == 0:
        continue
    touched = day_bars[day_bars['high'] >= prior_high]
    if len(touched) == 0:
        continue
    touch_count += 1
    # first touch bar
    first_touch_idx = touched.index[0]
    # did price close above prior high at end of day (breakthrough) or fail back below (bounce)?
    day_close = daily.loc[d, 'day_close']
    max_high_after_touch = day_bars.loc[first_touch_idx:, 'high'].max()
    if day_close > prior_high:
        breakthrough_count += 1
    else:
        bounce_count += 1
    # check immediate reaction: 15 min after touch, did price go up further (breakthrough) or reverse down
    after = day_bars.loc[first_touch_idx:]
    after_15 = after.iloc[:15]
    if len(after_15) > 0:
        if after_15['close'].iloc[-1] > prior_high:
            close_above_count += 1
        if after_15['low'].min() < prior_high - (prior_high - day_bars.loc[first_touch_idx,'low']) * 0 :
            pass

bounce_rate = bounce_count / touch_count if touch_count > 0 else None
breakthrough_rate = breakthrough_count / touch_count if touch_count > 0 else None
close_above_15m_rate = close_above_count / touch_count if touch_count > 0 else None

result = {
    "sample_size": int(touch_count),
    "touch_count": int(touch_count),
    "breakthrough_count": int(breakthrough_count),
    "bounce_count": int(bounce_count),
    "breakthrough_rate": float(breakthrough_rate) if breakthrough_rate is not None else None,
    "bounce_rate": float(bounce_rate) if bounce_rate is not None else None,
    "close_above_15m_after_touch_rate": float(close_above_15m_rate) if close_above_15m_rate is not None else None,
    "definition": "breakthrough=EOD close above prior day high; bounce=EOD close at/below prior day high, given RTH day touched prior high"
}
  • Generated by an AI model up to 25 times, run in a sandbox, and reviewed automatically; the figures above are the median of the largest group of attempts that computed the same measures. Agreement between attempts lowers the chance of a one-off coding slip -- it does not prove the code matches the question, so check the definition and code. A one-off calculation, not a permanent fixture.

This is historical statistical information only. It is not investment advice, and past performance does not indicate future results. Trading involves risk of loss.