The short answer

No difference was detected in these months. On SPY and QQQ, the site’s call and put walls in force at 09:36 on each month’s first session, held for 21 sessions, were reached 79.6% of the time on average and mirror lines (lines the same distance from the open, on the other side) 78.2%. Closing beyond the line: 42.9% for both.

The gap was +1.4 percentage points; gaps from −3.9 to 6.8 fit these months, so a small pull cannot be ruled out. The test could reliably have seen only a shift of about 13 to 14 points or more, so this is not evidence that walls have no pull.

Lines near the open were reached far more often than distant ones, wall or not.

The walls are rebuilt from recorded data, not levels a member saw. An earlier version used a different wall and also found no difference.

What to do with this

  • Treat a site wall as a reference line, not a prediction, until you have about 50 rows in your own log (steps below). This page measured whether price got to a wall within a month, not whether it turned there.
  • Check distance first. Divide the wall’s distance from the open by the 14-session ATR (average daily range) on your broker chart, then read the table below. A line over 2 ATR away was reached about half the time, one within half an ATR about nine times in ten.
  • When someone quotes how often a wall held, ask what a line the same distance away on the other side did over the same days.
  • A log of 20 rows can only show a gap of 11 points or more, and 50 rows about 7. Read no pull or barrier into a smaller log.
Share of lines touched in 21 sessions, by distance from the open. Same-side chance is how often any line that far out on the same side was reached in all other 21-session windows. Over all pairs the wall was reached 78.8% and the mirror line 77.6%, unlike the monthly averages above. No range; the far band holds 29 pairs
Distance (ATR)PairsWallMirror lineSame-side chance
0 to 0.510989.0%90.8%93.9%
0.5 to 15782.5%80.7%81.2%
1 to 26071.7%63.3%66.2%
over 22948.3%51.7%40.0%
REAL PRICES · REBUILT LEVELS

Site walls against a mirror line, 21 sessions later

SPY and QQQ · 2018-05 to 2024-12 · 70 months

The prices are recorded history. The walls are rebuilt after the fact from stored option data as the wall in force at a five-minute mark, so they can differ from the levels a live Prism by GEXfreak chart drew. No trades are involved.

The walls here are the site’s call wall and put wall in force in the rebuild at 09:36 on each month’s first session (the 09:35 mark), held for 21 sessions. They are rebuilt from recorded data, not a record of what a member saw. This figure measures recorded prices; no trade is placed or simulated.

Show
Split
Also show
Average share of a month’s lines0%25%50%75%100%TouchedWall 79.6%Mirror 78.2%Closed beyondWall 42.9%Mirror 42.9%
Wall minus mirror, percentage points−20−100+10+20Touched: +1.4, range −3.9 to 6.8Closed beyond: 0.0, range −4.3 to 4.6
  • Wall (filled circle in the top chart)
  • Mirror line (open diamond)
  • Bar: 95% range of the gap; white dot: the gap
Touched (average monthly score over 70 months; a line counts if it was touched at some moment in the 21 sessions): the wall 79.6%, the mirror line 78.2%, a difference of +1.4 points (95% range −3.9 to 6.8). The wall was ahead in 16 months, behind in 14 and tied in 40. No difference detected. The earlier wall, recomputed on the same windows: −1.5 points over 65 months (range −7.3 to 4.2), also no difference detected.
Site wall against mirror line over the 21 sessions that start on the first session of each month. A difference is computed before rounding, so it can differ by 0.1 from the difference of the two rounded rates shown.
MeasureTouchedClosed beyond
Months counted7070
Wall79.6%42.9%
Mirror line78.2%42.9%
Wall minus mirror, points+1.40.0
95% range, points−3.9 to 6.8−4.3 to 4.6
Months wall ahead / behind / tied16 / 14 / 409 / 8 / 53
Resultno difference detectedno difference detected

One recorded month, worked through

Call wall 580.00Call mirror 562.64Put wall 570.00Put mirror 572.64Open 571.3221-day high 604.3221-day low 567.8921st close 603.65Nov 1, 2024session 21: Dec 2, 2024
Nov 1, 2024, walls read at 09:36. The latest first session of a month in the window with a usable call wall and put wall on SPY. Each cell is a yes or no. A wall on the wrong side of the open is dropped, with its mirror line.
LineOpenWallMirrorWall: touched / closed beyondMirror: touched / closed beyond
SPY call571.32580.00562.64Yes / YesNo / No
SPY put571.32570.00572.64Yes / NoYes / Yes
QQQ call485.50490.00481.00Yes / YesNo / No
QQQ put485.50485.00486.00Yes / NoYes / Yes
Table, method and data source
  • A month's value is the mean of the call-wall result and the put-wall result, each averaged over SPY and QQQ, and only months with both a usable call wall and put wall count. Differences are in percentage points.
  • 09:36 ET on that session. The wall in force is the wall in the latest 5-minute rebuild usable at that time: the 09:35 rebuild, usable 60 seconds after its mark.
  • The call wall (the strike with the most call gamma) and the put wall (the strike with the most put gamma) of the site engine's wall set, rebuilt at the 5-minute mark from that morning's stored open interest and the prior close's option prices.
  • A line the same distance from the day-1 open as the wall but on the other side: 2 x open - wall.
Data receipt: 26 sources, built 2026-09-29

Each source is fingerprinted with SHA-256, so a changed file changes the fingerprint. A single file shows its own hash; a source of several files shows one hash of their names and hashes.

  • SPY five-minute level rebuilds, 2018 to 2024 (read through the shared reader) (7 files) · a8f3316c7a050109…
  • QQQ five-minute level rebuilds, 2018 to 2024 (read through the shared reader) (7 files) · e5b3b18463aafb81…
  • SPY levels from options expiring within 30 days, day-1 rows (yearly files 2018 to 2024; the earlier look, recomputed) (7 files) · ebd9ca11a8e9c423…
  • QQQ levels from options expiring within 30 days, day-1 rows (yearly files 2018 to 2024; the earlier look, recomputed) (7 files) · bd740f38a92f9eea…
  • SPY daily prices, regular hours (read through 2024-12-31 only) · b07df140c15ec92f…
  • QQQ daily prices, regular hours (read through 2024-12-31 only) · 98b03f4add721f50…
  • Shared snapshot reader, hash taken with CRLF line endings changed to LF · ea82eeb097740870…
  • Study: locked protocol · 8b8edbb7097d2f53…
  • Study: written pre-registration · 892c0e431290957d…
  • Study: freeze record · 996c022c15bda70f…
  • Study: frozen level file (3,830 rows) · 0ceef443569fad29…
  • Study: frozen 30-day-wall event levels · 79766ea275b6d022…
  • Study: results as run · 781e52782e6c222b…
  • Study: written report · 3458845f88a8de22…
  • Study: program as run · dd0bf2052db25a3c…
  • Study: planning simulation output · ce411dffe9ea007b…
  • Study: planning simulation program · 779cea5f86938c8b…
  • Study: errata and wording notes · 1abd0569c88922bc…
  • Study: independent audit record · 6bfc2ab835e36d30…
  • Earlier study (version 1): locked protocol · fc853548eb4630c2…
  • Earlier study (version 1): results as run · cc3a0c2ccdf24344…
  • Earlier study (version 1): program as run · 9ce02c8609d23a78…
  • Earlier version of this evidence · f266d0be8025efad…
  • Statistics routine: pandas_discovery_stats.py · 8d04765f345d535d…
  • Statistics routine: permutation_capacity.py · 9334c9a62268ca18…
  • Study: errata addendum (reader fingerprint, p-value display, where the corrected readings sit) · 0aa0322709233423…

How we tested

Touched asks whether price reached a line at all. Closed beyond asks whether the window ended past it, which a barrier would lower. Turning at a wall was not measured. On each of 80 first sessions we read the site’s call and put wall for SPY and QQQ from the 09:35 rebuild (usable from 09:36) and held them for 21 sessions. Each got a mirror line, 2 × the open − the wall; a wall on the wrong side of the open was dropped with its mirror line (65 of 320). A month’s gap runs from −100 to +100 (0 means wall and mirror line behaved alike); “points” means percentage points, not price.

A month’s score averages its usable lines, call and put equally, and a month counts when it has both: 70 of 80. “No difference detected” means the 95% range includes zero; it comes from re-drawing months in runs of three, because 27 windows overlap the next month’s.

Drift makes a mirror line imperfect: when the market rises, the wall above the open is nearer the move than its mirror line below. By side, touched ran +19.3 points for calls and −16.4 for puts, and closed beyond +39.3 and −39.3: they mirror each other by construction of drift and are not a finding, and the headline’s average of the two cancels that part. A second check, the wall against how often any line that far out on the same side was reached in all other windows, gave −0.2 points on touched and +0.4 on closed beyond; it has no range or test here.

Other clocks and slices of the same months, in points. Interval only: no test, no correction for the slices tried, like about 89 other lines in the study, so none is a result. Every range includes zero. Clock rows anchor on the price at that clock and score touched from session 2 on
SliceMonthsTouched: gap (95% range)Closed beyond: gap (95% range)
Read at 09:3672+1.4 (−2.4 to 5.2)−0.7 (−4.2 to 3.1)
Read at 10:0072−0.3 (−4.2 to 3.5)+0.3 (−2.8 to 3.8)
Read at 12:0071−1.1 (−5.3 to 3.2)+1.1 (−3.5 to 6.0)
Read at 15:4563+3.2 (−1.6 to 7.5)+1.2 (−4.8 to 7.9)
Through 28 March 202353+1.9 (−4.7 to 8.5)+0.5 (−4.7 to 6.1)
After 28 March 2023170.0 (−5.9 to 5.9)−1.5 (−8.8 to 4.4)
Quarterly months (Mar, Jun, Sep, Dec)25+2.0 (−7.0 to 11.0)+1.0 (−5.0 to 7.0)
Other months45+1.1 (−7.8 to 10.6)−0.6 (−5.6 to 4.4)

What changed from the earlier version

The earlier version tested a different wall: the one from options expiring within 30 days, built once from the prior close’s data and usable from 09:30. This version tests the site’s own call and put wall in force in the rebuild at 09:36. They are different constructs, not a correction: on the first session they share a strike for 69.7% of 320 walls, and an earlier-version wall held for the window matches the site wall in force at 09:36 on only 30.9%, 19.7% and 8.1% of walls by sessions 5, 10 and 21.

Both versions detected no difference. Over the 59 months in both, rebuilt minus earlier was +0.8 (−2.5 to 4.2) on touched and −2.5 (−6.8 to 1.7) on closed beyond; both ranges include zero, so the two level sources cannot be told apart here, which does not mean the levels agree. The earlier version’s one uncorrected lean (closed beyond after 28 March 2023) did not repeat.

Earlier against this version, in points. The last row is the earlier version’s one slice that leaned the other way, picked after the fact, so never a finding
Earlier versionThis version
Months counted6570
Touched: wall / mirror line75.0% / 76.5%79.6% / 78.2%
Touched: gap (95% range)−1.5 (−7.3 to 4.2)+1.4 (−3.9 to 6.8)
Closed beyond: wall / mirror line42.7% / 38.8%42.9% / 42.9%
Closed beyond: gap (95% range)+3.8 (−2.7 to 10.8)0.0 (−4.3 to 4.6)
Closed beyond after 28 March 2023+9.7 (2.8 to 19.4), 18 months−1.5 (−8.8 to 4.4), 17 months

Check it yourself with Prism and a spreadsheet

Your log answers a narrower question: what did the walls on your Prism chart do next? This page cannot confirm that a wall on your chart equals the wall rebuilt here, so write down which wall and expiry setting you read, and the time (column M; if Prism offers one setting, write default), and compare only rows that used the same one. Read the walls once, shortly after 09:36 on the first session. Log one ETF, not both, since they move together: SPY, with 51 usable months of 80 against 44 for QQQ.

One row per month, headers in row 1. Use regular-hours daily prices with dividend adjustment turned off where your broker offers it. Read column K, touched: closed beyond (L) moves more with drift, and reading both raises the chance of a false alarm.

Columns of the log
ColumnWhat to write
ADate of the month’s first session
BSPY or QQQ, your choice
CDay-1 open, from your broker chart
DCall wall, from Prism once after 09:36
EPut wall, from Prism once after 09:36
FHighest high of the 21 sessions
GLowest low of the 21 sessions
HClose of session 21
ICall mirror line, step 2
JPut mirror line, step 2
KTouched score, points, step 4
LClosed-beyond score, points, step 4
MWall, expiry setting and time read

Steps, and what a small log can say

  • 1. On day 1 fill A to E and M. Worked row, the rebuilt 1 November 2024 SPY month: A 2024-11-01, B SPY, C 571.32, D 580.00, E 570.00.
  • 2. Mirror lines: I2 =2*C2-D2 and J2 =2*C2-E2. Worked row: 562.64 and 572.64.
  • 3. After session 21 copy the 21 daily highs and lows onto a second sheet (dates A2:A22, highs B2:B22, lows C2:C22), then F2 =MAX(Sheet2!B2:B22) and G2 =MIN(Sheet2!C2:C22), pasted as values; H is the day-21 close. Worked row, 1 November 2024 to 2 December 2024: F 604.32, G 567.89, H 603.65.
  • 4. Score the row. K2 =IF(AND(D2>C2,E2<C2),100*((F2>=D2)+(G2<=E2)-(G2<=I2)-(F2>=J2))/2,"") and L2 =IF(AND(D2>C2,E2<C2),100*((H2>D2)+(H2<E2)-(H2<I2)-(H2>J2))/2,""). Each adds 1 for a wall reached (or closed beyond), subtracts 1 for a mirror line, and averages the two sides. A wall on the wrong side of the open leaves the row blank, stricter than the study. Worked row: K +50.0, L 0.0.
  • 5. Read the log. Average =AVERAGE(K2:K200) and count =COUNT(K2:K200); rough 95% range, low end =AVERAGE(K2:K200)-2*STDEV.S(K2:K200)/SQRT(COUNT(K2:K200)) and high end =AVERAGE(K2:K200)+2*STDEV.S(K2:K200)/SQRT(COUNT(K2:K200)), rougher than the figure’s because it treats months as independent. Check: the rebuilt months (average +1.4, standard deviation 23.3, 70 months) give −4.1 to 7.0, within about 0.2 of the figure’s range.
  • 6. Count what you need: events for a gap of g points is about (2 × your standard deviation ÷ g)². SPY’s spread implies a standard deviation near 25 points, so a 10-point gap just clears zero at about 24 events, and about double that finds a real 10-point gap most of the time. Until you have 20 rows, use SPY’s figure. A range that leaves out zero at 50 rows is a lead: log 50 more before you rely on it.
What a log from one ETF can see, scaling SPY’s spread by the square root of the count, at SPY’s pace. A true gap of the size shown would still be missed about half the time
EventsGap needed to clear zero (points)Time at SPY’s pace
20about 11about 2.5 years
50about 7about 6.5 years
100about 5about 13 years

Limits

  • The walls are rebuilt after the fact, not what Prism by GEXfreak drew or a member saw. Each is the site engine’s wall in force in the 09:35 rebuild: not confirmed to match a wall Prism draws, not the earlier version’s 30-day wall, and not carried to another expiry window.
  • These levels are rebuilt at each five-minute mark; Prism by GEXfreak keeps no five-minute history of its levels. A tier-0 rebuild uses that morning’s open interest and the prior close’s option prices, re-evaluated at that mark’s market price. Only SPY has a true intraday map (from August 2025), used just to check accuracy. Within $1 of it, tier-0 matched the call wall 77.5% of the time, the put wall 83.3%, the daily flip 68.9%, the weekly flip 73.7% and the monthly flip 66.9%. QQQ and stock accuracy is unmeasured. That check began at 10:00 and ran on SPY from October 2025 to August 2026, so it did not test the 09:36 walls here.
  • Through 28 March 2023 an option’s price is a stored last trade, or a modeled value where none traded (the fallback-premium era); after that date prices are native. 59 of the 80 months fall before that date.
  • This measures reaching a line within about a month, not turning at a wall, other horizons or large stocks.
  • The data is SPY and QQQ, 70 usable months to 31 December 2024; nothing later was read. Months overlap, and other monthly studies here share the same 80. The wall is read six minutes after the open: 10 of 255 walls were already through the 09:35 price, and scoring touched from session 2 on also gives a range that includes zero.
  • The mirror line controls for distance, not for everything; random lines on the same side and days were not run. The study’s sizing found shifts of about 13 to 14 points on touched and 11 to 12 on closed beyond in 80% of runs on simulated paths with no drift (a false detection in 0% to 1% with none planted), copied from its simulation, not re-run here; real prices may need a larger shift, and noise in rebuilt wall positions pulls a real effect toward no difference.
  • About 89 range-only lines in the study, including the slices above, are uncorrected for how many were tried; none is a result. No month-long hold trade was tested, and nothing here is a trade recommendation.

Sources and editorial notes

Read the primary references and editorial policy

Published by GEXfreak. Prism by GEXfreak is the chart product these guides describe. Every figure comes from recorded market history: prices, option open interest and recorded sessions. Where a figure shows trade results, the trades are back-tested, not placed. This is product education, not independent investment research.

Each figure lists its data sources and their SHA-256 fingerprints under “Table, method and data source”. The references below explain the statistics and the disclosure wording used on this page. They do not endorse GEXfreak or these studies.

For the product’s calculation and data boundaries, read Prism’s methodology.

All resources
REAL PRICES · REBUILT LEVELS

How long does a wall last?

A wall is recomputed as price moves.
0%25%50%75%100%151021
Call walls, SPY and QQQ · share still on the same strike after 1, 5, 10 and 21 sessions · rebuilt wall (solid) and the earlier nearest-expiry wall (dashed)
REAL PRICES · REBUILT LEVELS

How often price reaches a wall

Distance sets how often.
0%25%50%75%100%00.511.522.5
QQQ · 1,671 sessions · dashed line: a plain price · dots: call walls in force at 09:36
REAL PRICES · REBUILT LEVELS · BACK-TESTED TRADES

How many trades until you know?

Four times the trades halve the doubt.
±0.0±0.2±0.4±0.6±0.8±1.020501002005001,0002,000All trades, 15:45: 312 trades, ±0.23RThrough 28 March 2023 (fallback prices): 222 trades, ±0.29RFrom 29 March 2023 (native prices): 90 trades, ±0.37RQuarterly months (Mar, Jun, Sep, Dec): 102 trades, ±0.36ROther months: 210 trades, ±0.31RAAPL: 49 trades, ±0.48RINTC: 29 trades, ±0.74RMSFT: 60 trades, ±0.46RNKE: 26 trades, ±0.65RNVDA: 71 trades, ±0.42RTSLA: 49 trades, ±0.54R
11 measured 95% ranges · one rule, rebuilt at the 5-minute mark · gold line: ±3.6/√trades
REAL HISTORICAL DATA

Beat the naive trade first

What the stock paid anyway.
9 stocks · 2018–2024 · bar: share of five-session windows that ended higher · dashed line: half · price only
REAL PRICES · REBUILT LEVELS · BACK-TESTED TRADES

Is the monthly flip a floor?

Four situations at the flip, each counted.
  • Support fade146
  • Resistance fade157
  • Break down72
  • Break up52
SPY and QQQ · 2018–2020 · 427 recorded events at the monthly flip
REAL PRICES · REBUILT LEVELS

Monthly expiry Fridays measured

Months with two different walls.
SPY46 of 80QQQ31 of 806-name pool178 of 480
2018–2024 · solid: monthly sessions with two different walls · dashed: all monthly sessions

Check a level on your own chart.

Membership is required for live SPY, QQQ and IWM books. The figures on this page are recorded history, not a live book.

Create an account to save your layout; review current access conditions on the pricing page.