Do site walls beat a mirror line over a month?
Is a wall rebuilt at the 5-minute mark on a month’s first session reached any more or less often than a mirror line? On SPY and QQQ, May 2018 to December 2024, no difference was detected.
In plain words: nobody placed a trade and no trade is simulated on this page. It measures recorded prices, so a result here is not a trading result and no profit is implied.
In this article 9 sections
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.
| Distance (ATR) | Pairs | Wall | Mirror line | Same-side chance |
|---|---|---|---|---|
| 0 to 0.5 | 109 | 89.0% | 90.8% | 93.9% |
| 0.5 to 1 | 57 | 82.5% | 80.7% | 81.2% |
| 1 to 2 | 60 | 71.7% | 63.3% | 66.2% |
| over 2 | 29 | 48.3% | 51.7% | 40.0% |
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.
- Wall (filled circle in the top chart)
- Mirror line (open diamond)
- Bar: 95% range of the gap; white dot: the gap
| Measure | Touched | Closed beyond |
|---|---|---|
| Months counted | 70 | 70 |
| Wall | 79.6% | 42.9% |
| Mirror line | 78.2% | 42.9% |
| Wall minus mirror, points | +1.4 | 0.0 |
| 95% range, points | −3.9 to 6.8 | −4.3 to 4.6 |
| Months wall ahead / behind / tied | 16 / 14 / 40 | 9 / 8 / 53 |
| Result | no difference detected | no difference detected |
One recorded month, worked through
| Line | Open | Wall | Mirror | Wall: touched / closed beyond | Mirror: touched / closed beyond |
|---|---|---|---|---|---|
| SPY call | 571.32 | 580.00 | 562.64 | Yes / Yes | No / No |
| SPY put | 571.32 | 570.00 | 572.64 | Yes / No | Yes / Yes |
| QQQ call | 485.50 | 490.00 | 481.00 | Yes / Yes | No / No |
| QQQ put | 485.50 | 485.00 | 486.00 | Yes / No | Yes / 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.
| Slice | Months | Touched: gap (95% range) | Closed beyond: gap (95% range) |
|---|---|---|---|
| Read at 09:36 | 72 | +1.4 (−2.4 to 5.2) | −0.7 (−4.2 to 3.1) |
| Read at 10:00 | 72 | −0.3 (−4.2 to 3.5) | +0.3 (−2.8 to 3.8) |
| Read at 12:00 | 71 | −1.1 (−5.3 to 3.2) | +1.1 (−3.5 to 6.0) |
| Read at 15:45 | 63 | +3.2 (−1.6 to 7.5) | +1.2 (−4.8 to 7.9) |
| Through 28 March 2023 | 53 | +1.9 (−4.7 to 8.5) | +0.5 (−4.7 to 6.1) |
| After 28 March 2023 | 17 | 0.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 months | 45 | +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 version | This version | |
|---|---|---|
| Months counted | 65 | 70 |
| Touched: wall / mirror line | 75.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 line | 42.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.
| Column | What to write |
|---|---|
| A | Date of the month’s first session |
| B | SPY or QQQ, your choice |
| C | Day-1 open, from your broker chart |
| D | Call wall, from Prism once after 09:36 |
| E | Put wall, from Prism once after 09:36 |
| F | Highest high of the 21 sessions |
| G | Lowest low of the 21 sessions |
| H | Close of session 21 |
| I | Call mirror line, step 2 |
| J | Put mirror line, step 2 |
| K | Touched score, points, step 4 |
| L | Closed-beyond score, points, step 4 |
| M | Wall, 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.
| Events | Gap needed to clear zero (points) | Time at SPY’s pace |
|---|---|---|
| 20 | about 11 | about 2.5 years |
| 50 | about 7 | about 6.5 years |
| 100 | about 5 | about 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.
- The Jackknife and the Bootstrap for General Stationary Observations — H. R. Künsch, The Annals of Statistics 17(3): 1217–1241. Published 1989. Checked .
- 17 CFR § 4.41: Advertising by commodity pool operators, commodity trading advisors, and the principals thereof — Code of Federal Regulations, Title 17 (Cornell Law School LII). Publication date not stated. Checked .
For the product’s calculation and data boundaries, read Prism’s methodology.
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.