The short answer

No, not that we could detect. On monthly options expiry Fridays from May 2018 to December 2024, price did not finish the last half hour (to the last minute before the closing auction) nearer the closer call or put wall than random lines would, in any of six tests on SPY, QQQ and a pool of six large stocks. The earlier version, on a different level, found nothing either.

In plain counts, 12 of 46 SPY months finished within a tenth of an ATR of the closer wall, and 12 started that close. ATR is the average size of a day’s move.

This does not say expiry has no effect. SPY’s test could only have seen a shift of 20.7 percentage points or more in landing share, QQQ has only 31 months, and months with both walls on one strike were left out (see Limits).

What to do with this

  • Treat the closer wall on monthly expiry Friday as a reference level, not a magnet: price ended no nearer to it than random lines would. If both walls sit on one strike, treat that day as unknown; the six tests left those months out.
  • When a chart or post says price “pinned” to a wall, or a wall “held” a share of the time, ask how far the wall started from price and what random lines at the same distances would have scored. A wall near price ends near it unless price moves a lot (median SPY move in these 29 minutes: 0.10 ATR): SPY walls within 0.1 ATR (12 months) averaged +0.281 against chance, walls 0.5 to 1 ATR away (13 months) −0.367.
  • Until your own log holds about 50 Fridays, keep a wall as a reference, not a prediction: at that size a log can only pick out an average gap from chance of about 0.12 (12 percentage points) or more.
REAL PRICES · REBUILT LEVELS

Six tests of the last half hour of monthly expiry

80 monthly expiry Fridays · 2018-05 to 2024-12 · level in force at 15:30

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.

This figure measures recorded prices and levels rebuilt from recorded data; no trade is involved.

View
SPY vs chance+0.004 (−0.069 to +0.081)SPY vs ordinary Friday−0.021 (−0.141 to +0.104)QQQ vs chance+0.082 (−0.051 to +0.204)QQQ vs ordinary Friday+0.064 (−0.077 to +0.202)6-name pool vs chance−0.007 (−0.068 to +0.053)6-name pool vs ordinary Friday−0.037 (−0.120 to +0.049)−0.400−0.2000+0.200+0.400Shift in landing share (0 = no shift; 0.10 = 10 percentage points)◂ farther from the wall · nearer the wall ▸
  • Average against chance (circle) or against the ordinary Friday (diamond)
  • Ring: the earlier version’s average
  • 95% range (thick bar)
  • Range allowing for six tests (thin bar)
  • Shaded band: the smallest shift the test could have seen
Every dot sits close to zero: the largest average is +0.082 (QQQ vs chance). The 95% range includes zero in all 6 tests. Each shaded band is the smallest shift that test could have seen; no band is narrower than ±12.5 percentage points (0.125, the 6-name pool vs chance), so a shift of a few points is smaller than anything these tests could flag. The ring is the earlier version’s average on the prior-close level.

The six tests, in the order they were fixed before any result was read, with the earlier version (the prior-close level) in brackets. Every result is “not detected”. The smallest effect is in percentage points: a landing share runs from 0 to 1, so 0.207 is 20.7 percentage points.

TestMonths (earlier)Average (earlier)95% rangeRange allowing for six testsSmallest effect the test could see, percentage points (earlier)Result
T1 · SPY vs chance46 (47)+0.004 (+0.017)−0.069 to +0.081−0.091 to +0.11020.7 (21.0)Not detected
T2 · SPY vs ordinary Friday46 (46)−0.021 (−0.041)−0.141 to +0.104−0.180 to +0.14828.0 (25.0)Not detected
T3 · QQQ vs chance31 (37)+0.082 (+0.030)−0.051 to +0.204−0.097 to +0.24228.5 (24.3)Not detected
T4 · QQQ vs ordinary Friday31 (35)+0.064 (−0.005)−0.077 to +0.202−0.125 to +0.24836.1 (28.4)Not detected
T5 · 6-name pool vs chance76 (80)−0.007 (+0.011)−0.068 to +0.053−0.089 to +0.07312.5 (7.2)Not detected
T6 · 6-name pool vs ordinary Friday73 (80)−0.037 (+0.012)−0.120 to +0.049−0.148 to +0.07916.9 (11.2)Not detected
Tables, method and data source

Win counts and p-values. A month is won by the wall side when its landing share is above 0.5 (or above the ordinary Friday’s, in the ordinary-Friday tests); a tie is neither. The p-value is how often random flips of each month’s win or loss give a split at least as lopsided as the one seen, and 1.00 is what coin flips give. Adjusted p allows for the six tests run together and cannot exceed 1.

TestTies (neither side won)Wall side wonp (win count)Adjusted p
T1 · SPY vs chance023 of 46 (50%)1.001.00
T2 · SPY vs ordinary Friday022 of 46 (48%)0.881.00
T3 · QQQ vs chance119 of 31 (61%)0.201.00
T4 · QQQ vs ordinary Friday114 of 31 (45%)0.861.00
T5 · 6-name pool vs chance136 of 76 (47%)0.821.00
T6 · 6-name pool vs ordinary Friday034 of 73 (47%)0.641.00

Every test by era and month type: average and months (average · months). One decision clock only, 15:30, so “all months” is the test itself. Events, not months, are counted for the pool.

TestAll monthsFallback eraNative eraQuarterly monthsOther months
T1 · SPY vs chance+0.004 · 46+0.015 · 32−0.021 · 14+0.010 · 210.000 · 25
T2 · SPY vs ordinary Friday−0.021 · 46−0.020 · 32−0.023 · 14+0.011 · 21−0.048 · 25
T3 · QQQ vs chance+0.082 · 31+0.064 · 24+0.143 · 7+0.058 · 8+0.090 · 23
T4 · QQQ vs ordinary Friday+0.064 · 31+0.081 · 24+0.006 · 7−0.019 · 8+0.093 · 23
T5 · 6-name pool vs chance−0.007 · 76−0.011 · 55+0.004 · 21+0.061 · 25−0.040 · 51
T6 · 6-name pool vs ordinary Friday−0.037 · 73−0.070 · 53+0.053 · 20+0.016 · 25−0.064 · 48

Every SPY monthly expiry Friday that was measured (46), from the recorded prices and the wall in force at 15:30. Columns A to E are the inputs of the spreadsheet steps; F to H are what the formulas return. The last two columns are the earlier level on the same month, where both levels measured it.

A · DateB · Price 15:30C · Price 15:59D · Nearer wallE · ATRF · Wall distance, ATRG · Move toward the wall side, ATRH · Landing shareFinished from the wall, ATRSideEarlier level: nearer wallEarlier level: landing share
2018-05-18271.47271.34272.002.814230.1883−0.04620.53330.2345call272.000.6087
2018-06-15277.12277.20276.002.105710.5319−0.03800.17780.5699put278.000.3696
2018-10-19276.93276.19277.004.245360.0165−0.17430.97780.1908call277.001.0000
2018-12-21240.76240.69240.006.284740.1209+0.01110.66670.1098put245.000.0652
2019-02-15276.65277.39276.002.792150.2328−0.26500.44440.4978call275.000.1739
2019-03-15281.47281.35282.002.384200.2223−0.05030.48890.2726call281.000.5870
2019-06-21294.62294.08295.002.923280.1300−0.18470.62220.3147call296.000.3261
2019-07-19297.80297.12298.002.090000.0981−0.32300.75560.4211put298.000.8043
2019-11-15311.24311.83310.001.947820.6366−0.30290.02220.9395call––
2019-12-20321.17320.95321.002.295090.0741+0.09590.86670.0218call321.000.8478
2020-02-21332.99333.49335.003.366150.5971+0.14850.11110.4486call––
2020-04-17284.61286.73285.009.460740.0412+0.22410.44440.1829call––
2020-07-17322.29321.67320.005.449640.4202+0.11380.33330.3064put320.000.3478
2020-08-21339.48339.44340.003.008910.1723−0.01550.60000.1878call340.000.6739
2020-09-18331.22330.69330.006.952790.1755+0.07620.57780.0992put335.000.1957
2020-12-18367.27369.13365.003.638040.6240−0.51130.08891.1352put368.000.4565
2021-01-15376.50375.68375.004.295660.3492+0.19090.46670.1583put––
2021-03-19390.81389.50390.006.499660.1246+0.20150.77780.0769put––
2021-05-21416.01414.95415.005.582490.1809+0.18990.97780.0090put415.000.9348
2021-07-16431.78431.40432.003.118600.0705−0.12180.84440.1924call––
2021-08-20443.37443.33445.003.158110.5177−0.01110.24440.5288call––
2021-09-17441.49441.42440.003.508050.4233+0.01850.31110.4048put––
2021-12-17461.78459.90460.007.798890.2282+0.24110.95560.0128put460.001.0000
2022-02-18434.31434.27430.008.188690.5263+0.00490.20000.5215put––
2022-03-18444.04444.47445.009.582990.1002+0.04490.73330.0553call––
2022-05-20385.25389.60380.0011.438580.4590−0.38030.28890.8393put390.000.9565
2022-09-16384.92385.64385.008.287510.0097+0.08690.62220.0772put390.000.1522
2022-11-18395.90396.09400.007.804990.5253+0.02430.22220.5010call400.000.2391
2022-12-16384.09383.30380.007.395000.5531+0.10680.13330.4462put––
2023-01-20395.17395.83395.006.102430.0279−0.10820.95560.1360put––
2023-02-17406.54407.24410.006.321360.5481+0.11150.15560.4366call––
2023-03-17390.75390.11390.006.697500.1120+0.09560.88890.0164put394.000.3043
2023-04-21411.83412.18412.003.892470.0437+0.08990.75560.0462call412.000.8043
2023-05-19418.19418.61418.004.476110.0413−0.09490.88890.1363put420.000.4130
2023-06-16439.57439.43440.004.568810.0941−0.03060.77780.1248call440.000.8261
2023-07-21452.68452.19455.003.693900.6281−0.13270.06670.7607call453.000.8696
2023-08-18436.14436.46435.004.679660.2436−0.06840.42220.3120put437.000.6304
2023-09-15443.72443.29445.003.813620.3356−0.11280.40000.4484put––
2023-12-15469.40469.37467.003.813260.6307+0.00920.04440.6215put467.000.1087
2024-01-19482.14482.42480.004.207720.5086−0.06650.26670.5751call––
2024-03-15510.13509.74510.004.466720.0291+0.08730.68890.0582put510.000.7826
2024-06-21544.40544.12548.004.965200.7250−0.05640.00000.7814call545.000.7391
2024-08-16554.10554.21555.0010.716560.0844+0.01070.80000.0737call555.000.8913
2024-09-20568.24568.10570.008.033890.2197−0.01680.51110.2365call570.000.5217
2024-10-18584.46584.57585.005.264980.1026+0.02090.71110.0817call585.000.7826
2024-12-20591.79590.87590.004.855250.3687+0.18950.37780.1792put590.000.4348
  • One row per calendar month: the average landing share of that month's monthly-expiry session (SPY and QQQ: one session; the pool: equal weight across the names that qualified that month).
  • Rebuilt level: The call and put wall of the Prism by GEXfreak research level model, rebuilt at each 5-minute mark from that morning's open interest and the prior close's option prices, and read at the latest rebuild that was usable at 15:30 ET: the 15:25 rebuild, usable at 15:26 (age 5 minutes). The 15:30 rebuild is usable only at 15:31 and is never read.
  • Earlier level: The earlier version's wall: the nearest-expiry wall built from the prior close's option prices and open interest, usable from the 09:30 open and held all session. Its open interest was 21.7 to 33 hours old at 15:30. It is kept as the old level in the parity table.
  • Every number in the tables was rebuilt from recorded prices and level rows and matched the study’s own saved results before it was written; the fingerprints are in the receipt. The 95% ranges come from re-drawing the monthly results 50,000 times in runs of 3 consecutive months (neighbouring months move together); the p-values from flipping each month’s win or loss at random 100,000 times.
  • The levels here are rebuilt at the 5-minute mark from that morning's open interest and the prior close's option prices, re-evaluated at the price at that mark. They are a rebuild, not a record of what a live Prism by GEXfreak chart drew or what a member saw.
  • Only SPY has a true intraday map to check the rebuild against (204 sessions, October 2025 to August 2026). Within $1 of it the rebuild matched the call wall 77.5% of the time and the put wall 83.3%, and it is weakest late in the day and in quarterly months. Accuracy for QQQ, for the stocks and for every session from 2018 to 2024 is unmeasured, and on an expiry Friday the expiring chain moves through the day, so a null on rebuilt levels does not speak for the live chart.
  • Premium era: before 29 March 2023 an option's price is its last trade of the day, with a modeled value where a contract had none (the fallback era); from that date it is native. 32 of 46 SPY, 24 of 31 QQQ and 55 of 76 pool month rows sit in the fallback era, the least reliable era, and both eras are shown separately. Before 28 March 2023 the open interest behind a level is one start-of-day 09:31 ET stamp.
  • One decision clock only (15:30, reading the 15:25 rebuild at age 5 minutes). The window runs from the 15:30 price to the last trade of the 15:59 minute; the closing auction is not measured, so a null says nothing about expiry effects that live in the close.
  • The old and the rebuilt level are different constructions: the old one is the nearest-expiry wall built from the prior close (its open interest was 21.7 to 33 hours old at 15:30), usable from 09:30 and held all session; the rebuilt one is the level model's wall set at 15:30. A difference between the two shows how much the answer depends on the level source, not which one price respects, and it is not an improvement or a loss.
  • Smallest detectable effect: each test had 80 percent power to see a shift of 12.5 to 36.1 percentage points in landing share (a value of 0.207 on the 0-to-1 scale is 20.7 percentage points). A not-detected result does not say there is no effect, and QQQ sits just above the 30-row floor (31 rows), so the loss of two rows would leave those tests underpowered.
  • The pool is six names (AAPL, AMD, INTC, MSFT, NVDA, TSLA), about two names per month row, because BAC, DIA, IBM, NKE, UNH, WMT and XOM fall under the 60-month rule once coverage and book-quality gates are applied (IBM and UNH have no usable session). Names outside the pool are shown with rows and n and no p-value; GPRO and IWM have no rebuilt store, and DVN, GLD, PFE and VZ were already outside the earlier pool.
  • Both walls sit at one strike on 32 of 79 SPY and 49 of 80 QQQ monthly sessions; those sessions are left out of the tests (the wall distances tie) and scored only in the same-strike sensitivity, which is descriptive. The sensitivity's run counts (480 monthly and 1,059 ordinary events added) are across all 15 names the study read; the table scores only SPY, QQQ and the six pool names: 352 monthly and 809 ordinary events before the cap (the audit's recount), and 32, 49 and 266 monthly events added after it for SPY, QQQ and the pool.
  • The landing share cannot see a pull toward or away from the wall side that does not depend on the wall's distance; the study cannot separate that from momentum. Design B compares two ranks from different class pools, so its sign test is approximate and the interval is the second requirement.
  • The events are the same sessions and the same 15:25 rebuilt level that the earlier version scored as a descriptive line (the same level by construction: both read the same 15:25 row and the coverage gates only remove name-years; the study's output tests the landing shares, not the level equality), so a detected call would not have been independent evidence; the monthly-expiry study holds 12 primary tests over the two protocols on overlapping sessions, and the four monthly-level studies hold 40 (about 2 false detections expected at 0.05 if nothing is there).
  • Only the six tests carry p-values. Every other table (cuts by era and month type, parity, per year, by distance, per name, same-strike) is descriptive, has no adjustment for the many cells shown (about 159 interval cells with 8 or more rows, 7 of which exclude zero, as chance alone gives) and cannot change a test's result. Cells hold 1 to 55 rows and 3-row block intervals on so few rows are for pattern only.
  • ATR is a research unit for scaling distances, not a site input. Raw prices are used, so a split inside the window is handled only by the corporate-action exclusion list.
  • The protocol was frozen before any outcome data was read for it (protocol sha256 b308b57d9efad80c6293b2171d68294bd30a9b9bfcae4a03554d0ac766d0a211), the scored run was made once (attempt 1) and its independent audit passed, agreeing exactly on every row count, mean and class; it confirms the implementation, not the specification. Window 2018-05-01 to 2024-12-31; nothing dated 2025 or later was opened. Three wording corrections from the audit concern the freeze record and change no number: the dry-run count file was written before the runner's last edit and the run's own count reproduction supersedes it; the pre-freeze preflight also re-scored the earlier version's already-published snapshot line and revealed nothing beyond the earlier study's results; and the shared level-reading program is fingerprinted with line endings normalised to LF (ea82eeb09774...), the form Git stores; the hash the study recorded (1ca9a626...) is of the CRLF working-tree copy it ran with.
  • This is a descriptive study of where price finished relative to recorded levels. It computes no trade, fill, fee or return and makes no claim of an edge; customer copy carries the site's CFTC Rule 4.41 back-test statement beside any figure from it.
Data receipt: 17 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.

  • Study results: the six tests and every table (single scored run) · 1cb2b971518f4059…
  • Study protocol, frozen before any outcome data was read for it · b308b57d9efad80c…
  • Study plan text, written before any result was read · 43c68963a57cafa2…
  • Study design counts, taken from calendars and coverage before results · 4d53af0febdf2ee9…
  • Study count script (fingerprint only, not re-run) · 821ec70490398533…
  • Study calculation code, frozen before the run (fingerprint only, not re-run) · 9c4c397b5f43deed…
  • Study event table, rebuilt level (every kept event) · 9bf82c2c42a36cd2…
  • Study event table, old level (every kept event) · 2d1f03d91f6e7cec…
  • Study report, with the audit follow-up · ba5bbac03df94adc…
  • Independent audit verdict (pass) and its findings · eaff437506d1d9ec…
  • Earlier study protocol (v1) · cfe56b8105d28b33…
  • Earlier study results (v1) · b382d25a4799c96d…
  • Earlier study calculation code (v1, reused unchanged by the frozen runner) · 73df9fc47ad72e1a…
  • Earlier study design counts (v1) · 6b31f402fe3e3a7d…
  • Earlier evidence file (v1), copied in as the earlier version · c42cdb67a066c1c6…
  • Study errata addendum (wording of the audit's seven minor findings; nothing frozen is edited) · 7e44dcf2ae75d0d8…
  • Shared snapshot reader, hash taken with CRLF line endings changed to LF; recorded, not imported · ea82eeb097740870…

Descriptive history, not a forecast. Sessions from 2018-05-01 to 2024-12-31; the last date read is 2024-12-31. One row is one calendar month.

How we tested

A monthly expiry Friday is the third Friday of the month, when the standard monthly options expire. At 15:30 ET we took SPY’s price and the nearer wall in force in the rebuild at that clock (the 15:25 rebuild), and measured how far price was from that wall, in ATR, at the last trade of the 15:59 minute. For SPY the median month started 0.22 ATR from the nearer wall ($1.07) and finished 0.24 ATR from it.

On 19 October 2018 SPY’s nearer wall was 0.0165 ATR from price; price moved 0.1743 ATR away and still finished 0.1908 ATR from it, so the landing share was 0.9778: price finished farther from 44 of the other 45 lines than from the wall. With no pull the average share is 0.5, and the figure reports it minus 0.5.

Six tests were fixed before any result was read: SPY, QQQ and a pool of six large US names, each against chance and against the ordinary Friday (the monthly Friday’s share minus the closest ordinary Friday’s).

What changed from the earlier version

The earlier version’s level was the nearest-expiry wall built from the prior close, usable from the 09:30 open and held all session, on 13 names with no coverage gates. This version reads the wall in force in the rebuild at 15:30, on six. They are different constructions, not a correction: a gap between them shows how much the answer depends on the level source.

Every test is still not detected. On the months both levels measured, the swap moves the average by −3.3 to +11.2 percentage points and every 95% range includes zero. On the months the chance tests share, the levels name the same strike on 40% to 55% and the same kind of wall on 77% to 87%.

Average landing share minus 0.5 (chance), or minus the nearest ordinary Friday’s, with the months measured in brackets; the earlier pool held 13 names, this one six. The last column uses only months both levels measured: the rebuilt average minus the earlier one, in percentage points (0.01 is one point).
TestEarlier level: average (months)Rebuilt at 15:30: average (months)Same months: change, points (95% range)
SPY vs chance+0.017 (47)+0.004 (46)−2.3 (−13.7 to +9.4), 31 months
SPY vs ordinary Friday−0.041 (46)−0.021 (46)−3.3 (−17.9 to +12.0), 29 months
QQQ vs chance+0.030 (37)+0.082 (31)+10.7 (−2.5 to +26.5), 15 months
QQQ vs ordinary Friday−0.005 (35)+0.064 (31)+11.2 (−10.6 to +35.5), 13 months
Pool vs chance+0.011 (80)−0.007 (76)+3.3 (−1.9 to +8.4), 55 months
Pool vs ordinary Friday+0.012 (80)−0.037 (73)−1.5 (−12.1 to +9.5), 48 months

Check it yourself with Prism and a spreadsheet

One row per monthly expiry Friday of one symbol; write A, E and the two walls before 15:30, and fill B and C after the close. To practise, copy columns A to E of the SPY table from the figure (under “Tables, method and data source”) into a sheet: the formulas then return the study’s SPY numbers.

The columns, and where each value comes from
ColumnWhat to writeWhere it comes from
ADateMonthly expiry Friday (the session before, if a holiday).
BPrice at 15:30 ETOpen of the 15:30 one-minute bar.
CPrice at 15:59 ETClose of the 15:59 one-minute bar.
DNearer wallThe call or put wall on the Prism chart closer to B, read just before 15:30 (note the time).
EATR (14 days)ATR(14) on your broker’s daily chart, session before Friday.
FDistance to the wall, in ATRStep 3.
GMove toward the wall’s side, in ATRStep 3.
HLanding shareStep 5.

The steps, and what a small log can say

  • 1. The days. Start with the next monthly expiry Friday. Leave a Friday out, and list it separately, if both walls sit on one strike, the nearer wall is more than 1 ATR from price, or the session closes early (there is no 15:30 bar); the study kept 46 of 80 SPY months.
  • 2. Columns A to E. Read the walls once, just before 15:30, and note the time. A smoothed (Wilder) ATR rescales F and G; use one method throughout.
  • 3. Distance and move. In F2: =ABS(D2-B2)/E2. In G2: =SIGN(D2-B2)*(C2-B2)/E2, positive when price moved toward the wall’s side. Worked line, SPY 20 December 2024: B 591.79, C 590.87, E 4.85525, D 590.00 (the put wall, 1.79 below price; the call wall sat above), so F is 0.3687 and G is +0.1895.
  • 4. The simplest check. =AVERAGE(G2:G47) is the average move toward the wall’s side and =COUNTIF(G2:G47,">0") counts the months price moved toward it. The 46 SPY months give −0.016 ATR and 24 of 46: no lean toward the wall.
  • 5. Landing share. In H2, filled down: =(SUMPRODUCT(--(ABS(G2-$F$2:$F$47)>ABS(G2-F2)))+0.5*(SUMPRODUCT(--(ABS(G2-$F$2:$F$47)=ABS(G2-F2)))-1))/(COUNT($F$2:$F$47)-1). Change 47 to your last row; the −1 leaves out the row’s own line. Each other row is a random line at its own distance F; the formula counts those price finished farther from (ties half). Worked line: price finished 0.1792 ATR from the wall and farther than that from 17 of the other 45 lines, so H = 17 ÷ 45 = 0.3778. With the 46 SPY rows, H2 reads 0.5333.
  • 6. Against chance. =AVERAGE(H2:H47)-0.5 returns +0.004 for the 46 SPY rows, the study’s SPY figure, and =COUNTIF(H2:H47,">0.5") counts the months above chance (23 of 46).
  • 7. Read it against the table. Your log’s spread is =STDEV(H2:H47); one symbol’s months came to about 0.31. Your 95% range is your average ± =1.96*STDEV(H2:H47)/SQRT(COUNT(H2:H47)); the smallest gap your log could see uses 2.80 in place of 1.96.
  • 8. Pace and tries. Usable SPY Fridays come to about 7 a year, so 20 takes about 3 years and 50 about 7; ordinary Fridays come about 4 times as fast, on a separate sheet. Several symbols on one Friday are not independent events, and every extra cut of your log is another try.
What a log of about 20, 50 and 100 Fridays can and cannot say
Events loggedYour 95% range: your average ±Smallest gap from chance it could seeWhat follows
About 20 (SPY: about 3 years)±0.140.19Too few to say anything.
About 50 (SPY: about 7 years)±0.090.12Includes zero: this page’s answer. Excludes zero: a lead, not a finding.
About 100 (SPY: about 14 years)±0.060.09Includes zero: no pull this large. Excludes zero: test it on new Fridays.

Limits

  • 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. A log made from the Prism chart tests Prism’s walls, which can differ, and on an expiry Friday the expiring options change through the day.
  • 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. That era holds most rows: 32 of SPY’s 46 months, 24 of QQQ’s 31 and 55 of the pool’s 76. The figure shows both eras, and quarterly against other months, for every test.
  • There is one decision clock, 15:30 ET. The window stops at the last trade of the 15:59 minute, so the closing auction, where a closing pull would finish, is not measured. It ends on 31 December 2024; no later data is used.
  • The smallest shift in landing share a test could see was 12.5 to 36.1 percentage points, depending on the test (landing share runs from 0 to 1, so 0.207 is 20.7 points), so a smaller pull could be there unseen. QQQ has only 31 months, just above the 30-month floor for a test, and the ordinary-Friday tests are weaker still, since weekly options also expire on ordinary Fridays.
  • Only months with two different walls were measured: SPY 46 of 80, QQQ 31 of 80 and 178 of 480 pool name-months. The rest had both walls on one strike (32, 49 and 272), a nearer wall over 1 ATR away (1, 0 and 3) or no usable data (1, 0 and 27). Added back, the shared-strike months leave the averages near zero (+0.016, +0.018, +0.004).
  • The pool is six names (AAPL, AMD, INTC, MSFT, NVDA and TSLA), about two per month row; seven of the earlier 13 fall under the 60-month rule once coverage gates apply, so its 178 name-months are not independent events.
  • For SPY and QQQ these are the same months, on the same rebuilt level, that the earlier study had already scored once without a test, so a detection would not have been independent evidence. The six tests are also part of 40 across four studies; about 2 would look like detections by chance.
  • The era, month-type, year and distance tables are descriptive: no p-values, no correction for the many cells. Of the 48 ranges in the figure’s era, month-type and year views, 2 exclude zero, about what chance gives.
  • This is not a live rule: the random lines borrow distances from later Fridays too, and landing share cannot see a steady drift toward one side (step 4).

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 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

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 · 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 PRICES · BACK-TESTED TRADES

The best of 480 backtests

5 passed the pass mark. Then we adjusted for the number tried.
480 versions · 12 stocks · 2021–2024 · white: passed · red: failed · grey: under 30 trades
SPYSep 10, 2026Historical
A wall approached from below
Put wall 760.00
SPY, 2026-09-10. 5-minute historical candles completed by 4:00 PM ET. Visible 10:00 AM ET to 10:40 AM ET. Later source minutes are hidden.10:00 AM10:20 AM10:40 AM
5m candles · XNAS · recorded model
REAL HISTORICAL DATA

The Monday after monthly expiry

80 monthly expiries, 70 Mondays and 78 Fridays to compare.
SPY and QQQ · 2018–2024 · counts, not dates · filled: a Monday after that could be kept · hollow: holiday or early close

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.