Thirty-six level tests, none passed every rule
Walls, flips and prior-day lines against random lines at the same distance: none of 36 situations passed every rule.
In plain words: nobody placed the trades on this page. They are rules applied after the fact to recorded prices, so they show what a rule would have done, not what anyone earned.
In this article 9 sections
The short answer
In these tests, no wall, flip or prior-day line beat a random line at the same distance from price by enough to pass the rules we set in advance. GEXfreak tried 36 level situations across call and put walls (the strikes with the most call or put gamma, meaning how fast an option’s sensitivity to price changes), gamma flips (prices where dealers’ hedging changes direction) and the prior day’s high and low.
That does not mean levels do nothing. A typical test could only see a gap of about 0.23R (under a quarter of a trade’s risk), so a smaller effect could be missed.
One situation came close: breaking the prior day’s low in the study’s negative-gamma days. It beat random lines in both windows, but only 3 names besides SPY and QQQ had enough history; the rule needed 4. It was the best of 36 situations, so it is unconfirmed, and it is not a setup.
What to do with this
- When a page or backtest says a wall, flip or prior-day line “holds” most of the time, ask for the hold rate of random lines at the same distance from price on the same days. Without it, the claim cannot tell the level from the distance.
- Read each wall, flip and prior-day line on your Prism chart as a reference, a place to watch, not a prediction that price will hold or break. If you log touches yourself, about 100 events can only show a gap of 0.28R or more; seeing 0.10R would take about 780.
- In negative gamma, the figure shows fades of the prior-day low doing worse than random lines (the whole 90% range below zero) and breaks doing better. It is one level seen from both sides, one of 36, and chance can produce it: a lead to watch, not a rule.
Thirty-six level situations against random lines
Eight names · discovery window 2018–2020
The prices are recorded history. The levels are rebuilt after the fact from stored option data, so they can differ from the levels a live Prism by GEXfreak chart draws. The trades are back-tested: rules applied after the fact, none ever placed.
- Walls
- Flips
- Prior-day high and low
- Green: the level did better than random lines. Red: worse
- Gold outline: p below 0.05
- Dot: lift. Bar through it: 90% range
- Shaded: zero to the smallest lift this test could reliably see
5 situations in this test had p below 0.05; with 36 tries about 1.8 would by luck alone. After the correction for 36 tries, the smallest adjusted value was 0.054, and 0.05 was the line to cross. None could reliably see a lift as small as the study aimed to see.
Tables, method and data source
| Situation | Paired sessions | Lift | 90% range | Smallest lift seen | p | Adjusted p |
|---|---|---|---|---|---|---|
| Call wall as resistance, fade, negative gamma | 124 | +0.0438R | −0.1237R to +0.2136R | 0.2457 | 0.327 | 0.7369 |
| Call wall as resistance, fade, weak positive gamma | 123 | +0.0780R | −0.0920R to +0.2239R | 0.2355 | 0.213 | 0.7369 |
| Call wall as resistance, fade, strong positive gamma | 189 | −0.0447R | −0.1782R to +0.1077R | 0.2115 | 0.689 | 0.987 |
| Put wall as support, fade, negative gamma | 221 | −0.0154R | −0.1117R to +0.0824R | 0.1487 | 0.597 | 0.8948 |
| Put wall as support, fade, weak positive gamma | 116 | +0.0022R | −0.1719R to +0.1880R | 0.2766 | 0.496 | 0.8108 |
| Put wall as support, fade, strong positive gamma | 121 | +0.0280R | −0.1894R to +0.2068R | 0.2971 | 0.430 | 0.774 |
| Call wall as resistance, break, negative gamma | 19 | +0.0445R | −0.2937R to +0.2797R | 0.4452 | 0.410 | 0.774 |
| Call wall as resistance, break, weak positive gamma | 34 | +0.1628R | −0.0922R to +0.4805R | 0.4304 | 0.166 | 0.7369 |
| Call wall as resistance, break, strong positive gamma | 45 | +0.0325R | −0.3113R to +0.3740R | 0.5173 | 0.417 | 0.774 |
| Put wall as support, break, negative gamma | 83 | +0.0102R | −0.1820R to +0.1975R | 0.2886 | 0.454 | 0.7783 |
| Put wall as support, break, weak positive gamma | 36 | −0.1300R | −0.3865R to +0.1508R | 0.4050 | 0.782 | 0.987 |
| Put wall as support, break, strong positive gamma | 25 | −0.0104R | −0.3653R to +0.4213R | 0.5937 | 0.518 | 0.8108 |
| Daily flip as support, fade | 166 | +0.1260R | +0.0147R to +0.2310R | 0.1643 | 0.029 | 0.2565 |
| Daily flip as resistance, fade | 125 | −0.1105R | −0.2460R to +0.0388R | 0.2191 | 0.886 | 0.987 |
| Daily flip as support, break | 45 | +0.1444R | −0.1200R to +0.4372R | 0.4235 | 0.191 | 0.7369 |
| Daily flip as resistance, break | 28 | −0.3075R | −0.5981R to −0.0631R | 0.4049 | 0.9870 | 0.987 |
| Weekly flip as support, fade | 402 | −0.0641R | −0.1596R to +0.0370R | 0.1503 | 0.850 | 0.987 |
| Weekly flip as resistance, fade | 326 | +0.0281R | −0.0418R to +0.0912R | 0.1001 | 0.237 | 0.7369 |
| Weekly flip as support, break | 129 | −0.1645R | −0.3154R to +0.0003R | 0.2444 | 0.9495 | 0.987 |
| Weekly flip as resistance, break | 73 | +0.1998R | +0.0334R to +0.3747R | 0.2601 | 0.021 | 0.2565 |
| Monthly flip as support, fade | 275 | −0.0375R | −0.1145R to +0.0365R | 0.1141 | 0.792 | 0.987 |
| Monthly flip as resistance, fade | 218 | +0.0831R | −0.0260R to +0.1915R | 0.1690 | 0.112 | 0.669 |
| Monthly flip as support, break | 90 | +0.0442R | −0.1979R to +0.2952R | 0.3713 | 0.375 | 0.774 |
| Monthly flip as resistance, break | 66 | +0.0585R | −0.2067R to +0.2890R | 0.3655 | 0.328 | 0.7369 |
| Prior-day high as resistance, fade, negative gamma | 128 | +0.0288R | −0.0698R to +0.1352R | 0.1586 | 0.328 | 0.7369 |
| Prior-day high as resistance, fade, weak positive gamma | 168 | +0.0688R | −0.0807R to +0.2102R | 0.2197 | 0.216 | 0.7369 |
| Prior-day high as resistance, fade, strong positive gamma | 167 | −0.0562R | −0.1784R to +0.0510R | 0.1724 | 0.805 | 0.987 |
| Prior-day low as support, fade, negative gamma | 238 | −0.1755R | −0.3106R to −0.0382R | 0.2064 | 0.9835 | 0.987 |
| Prior-day low as support, fade, weak positive gamma | 134 | −0.1603R | −0.2794R to −0.0391R | 0.1861 | 0.9860 | 0.987 |
| Prior-day low as support, fade, strong positive gamma | 115 | +0.1601R | +0.0058R to +0.2985R | 0.2178 | 0.045 | 0.324 |
| Prior-day high as resistance, break, negative gamma | 79 | −0.1495R | −0.3056R to +0.0015R | 0.2327 | 0.9475 | 0.987 |
| Prior-day high as resistance, break, weak positive gamma | 102 | +0.0453R | −0.0891R to +0.1875R | 0.2154 | 0.290 | 0.7369 |
| Prior-day high as resistance, break, strong positive gamma | 129 | +0.1405R | +0.0239R to +0.2642R | 0.1797 | 0.025 | 0.2565 |
| Prior-day low as support, break, negative gamma | 193 | +0.2615R | +0.1290R to +0.3965R | 0.2025 | 0.0015 | 0.054 |
| Prior-day low as support, break, weak positive gamma | 101 | −0.0564R | −0.2314R to +0.1137R | 0.2637 | 0.715 | 0.987 |
| Prior-day low as support, break, strong positive gamma | 59 | +0.0915R | −0.1688R to +0.3017R | 0.3574 | 0.276 | 0.7369 |
| Situation | Discovery: level R | Discovery: random lines R | Discovery lift | Later: level R | Later: random lines R | Later lift | Later p | Years positive | Names with 30+ sessions, without SPY and QQQ | Parts of the rule missed |
|---|---|---|---|---|---|---|---|---|---|---|
| Prior-day low as support, break, negative gamma | +0.3077R | +0.0462R | +0.2615R | +0.2849R | +0.1334R | +0.1515R | 0.0015 | 4 of 4 | 3 | breadth |
| Weekly flip as resistance, break | +0.2178R | +0.0180R | +0.1998R | +0.0769R | +0.1710R | −0.0941R | 0.882 | 1 of 4 | 2 | lift, p, years, breadth |
| Prior-day high as resistance, break, strong positive gamma | +0.3339R | +0.1934R | +0.1405R | +0.2145R | +0.1295R | +0.0849R | 0.052 | 4 of 4 | 5 | p |
| Daily flip as support, fade | +0.2240R | +0.0980R | +0.1260R | +0.0857R | +0.1220R | −0.0364R | 0.715 | 2 of 4 | 2 | lift, p, years, breadth |
| Prior-day low as support, fade, strong positive gamma | +0.1764R | +0.0163R | +0.1601R | +0.1391R | −0.0060R | +0.1451R | 0.027 | 4 of 4 | 3 | p, breadth |
- A level counts on a day if it sits 0.10 to 1.5 of the day's expected move from the 09:34 close. A fade starts when a one-minute bar first gets within 0.10 of the expected move of the level (a fill at the level is assumed); a break starts at the first close 0.10 beyond it. Bars are scanned from 09:36 (walls and flips) or 09:35 (prior-day lines) to 15:30. A bracket of plus and minus 0.35 of the expected move scores the trade, a same-bar tie counting as the stop, and a trade still open at 15:55 is marked at that close. Random lines are drawn at distances taken from the same name's other days, dropped if they sit within 0.10 of the expected move of a real level, and re-weighted so their distances match the real ones. Lift = the level's result minus the random lines' result.
- On SPY and QQQ, lift is in percentage points of win rate. On the eight names, lift is in R, where one R is the distance from entry to the stop of the fixed bracket (0.35 of the day's expected move).
- 254,122 event rows (each one line’s fade, break or no-touch record) were read; the last session in them is 2024-12-31.
- No commissions or slippage are subtracted from any result: a fade is assumed to fill at the level and a break at the close of the break bar.
- The levels are tier-0 rebuilds: each five-minute mark uses that morning's open interest and the prior close's option prices, re-evaluated at the market price at that mark, and are not a copy of the live chart. Through 28 March 2023 the option prices are an older fallback estimate (the study's own era labels count that day itself as native). How closely tier-0 matches a true intraday map was checked on SPY only (the article's Limits section has the table).
- Random lines take their distances from every other day of the same name in the event table, including days after the session they are drawn for. Outcomes are never used to draw or weight them.
- A one-sided p is the share of resamples (blocks of 20 consecutive sessions) whose lift came out at or below zero. Discovery-window p-values come from 2,000 resamples and later-window ones from 10,000.
Data receipt: 14 sources, built 2026-09-28
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.
- Event table, SPY and QQQ (every level line and its first touch, one row each) ·
752a8b515f07fcce… - Event table, eight names (the same, with results in R) ·
23c57b16f2e5556d… - Event table manifest, SPY and QQQ (row counts by name, year, level family) ·
32610e0be497f59f… - Event table manifest, eight names ·
e527f0649b6eac8e… - Frozen results, SPY and QQQ (36 situations and the random-line control) ·
345bb2bacec54f53… - Frozen results, eight names (36 situations and the random-line control) ·
0554dfa3f7618031… - Frozen re-test of the five leads, 2021 to 2024 ·
29cc7006a2400042… - Name-and-level groups left out of the eight-name test before any result was read ·
39bb4d5dcfa75768… - Study code for the SPY and QQQ test (definitions of the 36 situations and the gamma regimes) ·
52b9aed4e8d4c864… - Study code for the eight-name test (paired estimator and the later-window rule) ·
2a42e9d36ed94acd… - Independent audit of a 600-row sample of the SPY and QQQ event table ·
a3b7800982a82a49… - Study code that builds the event tables (the touch, break and bracket rules and the regime rank) ·
cd80f738452dd8e4… - Written plan for the eight-name test (written before its results existed) ·
1dc2ba0becb01eda… - Written note on the SPY and QQQ control tolerance (written before any real result was read) ·
41bb94010f35e142…
Descriptive history, not a forecast. Each situation is measured against random lines drawn at the same distance from the day's price, so a lift is what the level added beyond distance alone.
How we tested
A situation is one level played one way, as a fade or a break. Walls and the prior-day high and low were also split by gamma regime: negative gamma (net option gamma below zero) and weak or strong positive gamma (strong means the top third of the name’s own last 252 sessions, weak the rest of positive gamma; Prism does not show this split): 4 levels × 2 ways × 3 regimes = 24. The daily, weekly and monthly flips, from either side, add 12: 36 in all. Each ran on SPY and QQQ alone and on SPY, QQQ, AMD, TSLA, BAC, XOM, UNH and WMT.
A level counted on a day only if it sat 0.10 to 1.5 expected moves from the 09:34 close. On one-minute bars from 09:36 (walls and flips) or 09:35 (prior-day high and low) until 15:30, the first fade or break was scored against a target and a stop 0.35 expected moves away until 15:55.
All 36 were scored on the first window, 2018–2020. The 5 with a p under 0.05 were re-tested on the later window, 2021–2024, under a rule fixed beforehand: a lift of at least +0.04R, a p under 0.01, a positive lift in 3 of 4 years, and 4 names besides SPY and QQQ with 30 or more paired sessions (so one name cannot carry it). None passed. Chance alone would put about 1.8 of 36 under 0.05; SPY and QQQ had 3 and the eight names 5. After the correction for 36 tries, none stayed under 0.05.
The closest was the break of the prior day’s low in negative gamma: it met the lift, p and years parts of the rule and missed only breadth: AMD, TSLA and BAC had 30 or more sessions and all showed a positive lift, while XOM had 20, UNH had 15 and WMT had 28. After the correction its p was 0.054.
Check it yourself with Prism and a spreadsheet
Log every first break of the prior day’s low on one name (one tab per name) next to one comparison line, and see whether your log is big enough to show a gap. You need Prism (its 7-day IV move and the prior-day low) and a broker chart with one-minute bars. It starts today: the move has to be read at 09:34 on the day, so past sessions cannot be filled in. Try one day first.
The sheet logs every gamma regime together, because Prism does not show the study’s strong and weak positive split. The study scored it that way too, as a 37th look the correction does not count: across 498 paired sessions in 2018–2020 the lift was +0.1183R, and across 893 in 2021–2024 it was +0.0644R (+0.0633R on SPY, 108 sessions; +0.1018R on QQQ, 136).
| Column | What to write | Where it comes from |
|---|---|---|
| A | Date | You write it. |
| B | Price at 09:34 | Broker chart: close of the one-minute bar covering 09:34 to 09:35. |
| C | Prism 7-day move, % | Prism data strip, “7-day IV move”, read at 09:34. |
| D | Expected move for one day, $ | Formula, step 1. |
| E | Prior-day low | Prism chart. |
| F | Distance, in expected moves | Formula, step 1. |
| G | Break price | Broker chart: close of the first bar from 09:35 that closes at least 0.10 × D below E. |
| H | What came first | Broker chart, after G: target (G − 0.35 × D), stop (G + 0.35 × D) or neither by 15:55; a bar touching both is the stop. |
| I | 15:55 close | Broker chart. Only when H is neither. |
| J | Result in R | Formula, step 3. |
| K | Comparison line | Formula, step 4. |
| L to O | Comparison line: break price, what came first, 15:55 close, result in R | Broker chart for L to N; formula for O. |
| P | Gap | Formula, step 5. |
The steps
The worked lines are the recorded TSLA session of 14 May 2018, the first in 2018–2020 where the real level and a random line differed. It shows the arithmetic and is not a typical day: a session’s gap swings by about 1.12R.
- 1. Day and distance. D2 =B2*C2/100/2.1984, F2 =ABS(B2-E2)/D2. Prism’s move covers seven calendar days and the study’s covers one trading day, so D divides by 2.1984; expect differences, since the study used options of every expiry. Log the day if price at 09:34 is above the low and F is between 0.10 and 1.5. Worked, with the study’s one-day move for D: =ABS(302.6275-299.0800)/7.3516 = 0.483.
- 2. Break. Find the first one-minute close from 09:35 at least 0.10 × D below E and write it in G; if there is none before 15:30, skip the day. Worked: the 12:53 bar closed at 298.1975, 0.12 expected moves under the low; target 295.6244, stop 300.7706.
- 3. Score it. Write in H what came first, and in I the 15:55 close if neither did. J2 =IF(H2="target",1,IF(H2="stop",-1,MAX(-1,MIN(1,(G2-I2)/(0.35*D2))))). Worked: the target came first, so J = 1.0000.
- 4. Comparison line. From row 3, K3 =B3-F2*D3 borrows the distance of the row above (your previous logged day; row 2 has none). Skip the day if ABS(K3-E3)<0.10*D3. Find its break (L3), what came first (M3) and the 15:55 close if neither (N3); O3 =IF(M3="target",1,IF(M3="stop",-1,MAX(-1,MIN(1,(L3-N3)/(0.35*D3))))). The borrowed distance makes it approximate. Worked, the study’s two scored lines that day: one at 295.92 (0.913 expected moves below price) broke at 13:19 and reached its target (1.0000); the other at 293.95 (1.180 below) broke at 293.03 and hit neither, so its result of 0.4353 means a 15:55 close of 291.91.
- 5. Gap. P3 =IF(AND(ISNUMBER(J3),ISNUMBER(O3)),J3-O3,""). Worked, the first line: 1.0000 − 1.0000 = 0.0000; the study weighted its two lines and got +0.2617R for the day, so one line can differ a lot. Then =AVERAGE(P2:P200), =COUNT(P2:P200) and the smallest gap your log can see, =2.487*STDEV(P2:P200)/SQRT(COUNT(P2:P200)).
- 6. Read it by size. The table below uses the study’s spread across sessions, 1.12R. Your one line a day is noisier: once you have 20 rows, trust your own smallest-gap cell.
What a small log can say
Compare your average gap with the smallest gap in the row that matches your log (2.487 in the formula is a 5% one-sided test that catches a real gap four times in five). The study’s own lift for this line, +0.0644R in 2021–2024, is far below the first three rows, so even 100 events cannot tell it from zero. One name cannot settle this in a useful time: SPY supplied about 27 paired sessions a year, and the eight names together about 223.
| Events | Smallest gap | Time on SPY alone | What follows |
|---|---|---|---|
| 20 | 0.63R | 9 months | Only a hint. Keep logging; do not change how you read the line. |
| 50 | 0.40R | 22 months | A lead, not a result. Log to 100 (22 more months) before you read anything into it. |
| 100 | 0.28R | 4 years | Worth re-testing on new days. A smaller gap says nothing either way. |
| 780 | 0.10R | 29 years | The lift the study aimed for. Eight names reach it in about 3.5 years. |
Sources: NIST/SEMATECH e-Handbook of Statistical Methods: Sample sizes required.
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.
The accuracy check ran on 2025 and 2026 sessions, when native option prices exist, so it measures tier-0 alone. 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 every session of 2018–2020 and the first part of 2021–2024, and the older method adds an error the check does not cover. The near miss’s lift was +0.1855R across 445 paired sessions in the fallback era and +0.1889R across 164 in the native era (the study’s own era labels, which count 28 March 2023 itself as native): a description of one of 36 situations, not a finding.
25% of the eight-name events in the 24 regime situations (12% for SPY and QQQ) had no regime and dropped out.
The 36 situations are not independent (a fade and a break of one level mirror each other), so 5 under 0.05 is a hint, not a finding. SPY and QQQ sit in both tests, so the later window was not fresh for them. The correction counts these 36 only, not GEXfreak’s earlier tests on the same years, so the true adjusted p is higher.
The near miss is lopsided: over its 609 paired sessions in both windows the lift was +0.1864R, +0.0924R without the best 30, the median session’s gap was 0.0000R, and 36% of sessions tied. Its lift fell from +0.2615R to +0.1515R; picking the best of 36 predicts that, and so would a real but smaller lift, so these tables cannot tell the two apart. The lift was positive in all 4 later years, but 2023 carried much of it (+0.3411R against +0.0437R, +0.1218R and +0.0607R in the other years), so “4 of 4 years” alone flatters it. Only 3 of the 6 single stocks had 30 or more later sessions, and XOM’s lift was −0.0807R. UNH’s data starts on 28 March 2023. The rule’s 4 names and 30 sessions were a fixed convention, so the miss may be thin data, not the level. The best-powered test, weekly flip as resistance, fade (326 sessions), could see 0.10R and found +0.0281R, the one result against a lift near that size.
No commissions or slippage are subtracted, and a fade is filled at the level itself, which may never have traded (random lines get the same fill). The call wall was recorded on fewer than half of some names’ sessions in some years: BAC, UNH, WMT and XOM. Three groups (the UNH call wall, the UNH daily flip and the TSLA call wall) were left out of the eight-name test, and the check that random lines behave like chance was loosened for SPY and QQQ, so it is weaker there; both choices were made before any result was read.
| Level | All sessions | 10:00 | 11:00 | 12:00 | 13:00 | 14:00 | 15:00 | 16:00 |
|---|---|---|---|---|---|---|---|---|
| Call wall | 77.5% | 80% | 86% | 85% | 82% | 79% | 74% | 57% |
| Put wall | 83.3% | 91% | 89% | 91% | 88% | 85% | 76% | 61% |
| Daily flip | 68.9% | 85% | 79% | 78% | 70% | 70% | 66% | 25% |
| Weekly flip | 73.7% | 89% | 87% | 79% | 72% | 72% | 71% | 34% |
| Monthly flip | 66.9% | 72% | 75% | 73% | 70% | 65% | 59% | 37% |
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.
- Controlling the False Discovery Rate: A Practical and Powerful Approach to Multiple Testing — Y. Benjamini and Y. Hochberg, Journal of the Royal Statistical Society: Series B 57(1): 289–300 (Oxford Academic). Published 1995. Checked .
- Sample sizes required — NIST/SEMATECH e-Handbook of Statistical Methods. Publication date not stated. Checked .
- “… and the Cross-Section of Expected Returns” — Harvey, Liu and Zhu (NBER working paper 20592, 2014; Review of Financial Studies, 2016). Published 2014. 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.