Markets › Futures · ES futures (30-minute periods on 1-minute data)
The Market Profile 80% Rule on ES Futures: Does the Value Area Fill?
When the S&P 500 future opens outside yesterday's value area and comes back in for two 30-minute periods, does it cross to the other side? Six years of ES, three readings of the rule, costs and a control.
Buried · No proven edgeIt bet the value area would fill four times in five. After the entry it filled about half the time.
Variants tried: 3 · Passed every gate: 0 · Holdout opened: yes (already used)
Short answer: not in our test. On ES futures from 2020 to 2026, when the session opened outside the previous value area and came back in for two 30-minute periods, the value area was crossed the same day on 51.4% to 61.5% of those days, not 80%. Traded, the best version made +$69.60 a trade after costs over 519 trades, but its first four years did not show a reliable profit and most of its net came from ten trades. All three versions were buried.
00The verdict in three lines
- The 80% rule of Market Profile: if the session opens outside the previous session's value area (the prices that held 70% of its activity) and then spends two consecutive 30-minute periods back inside it, price is said to cross the whole value area to the other edge about 80% of the time. We traded that crossing on ES from 2020 to September 2026, in three readings of the rule, with $30.76 of costs a trade and rules, gates and a control fixed before the run.
- None of the three versions passed. The value area was crossed the same day on 51.4% to 61.5% of the days with acceptance, and after the entry the far edge traded on about half of the trades. The best version, the TPO print reading, made +$69.60 a trade after costs and passed five of six gates, but its development t-statistic was 1.43 (2.5 needed).
- A profit, but not a proven edge. Both TPO versions beat the same trades on other days, yet the TPO close version was flat from 2020 to 2023 and the print version nearly flat in the holdout (profit factor 1.02), the longs lost in every version, and about nine tenths of the TPO versions' net came from their 10 best trades.
01The rule
Where it comes from: Market Profile, which charts how long price spent at each level, was developed by J. Peter Steidlmayer at the Chicago Board of Trade. The 80% rule is set out in Mind Over Markets (James Dalton, Eric Jones and Robert Dalton, 1990). The texts leave several points open, so we fixed three readings before the run and tried no others.
The value area of the previous regular session (09:30 to 16:00 New York): start at the price with the highest count, the Point of Control (POC), and add rows of one tick (0.25 point) two at a time, on whichever side holds more, until the area holds 70% of the session. The TPO profile is the classic one: the session is cut into 30-minute periods, and each period counts once at every price it traded. The volume profile spreads each minute's volume over the ticks of its range, as in our POC test on NQ; this approximates a tick-by-tick profile.
The setup: the session opens above the value area high (a short, target the value area low) or below the value area low (a long, target the value area high). Acceptance back inside, in two readings:
- Two closes inside: two consecutive 30-minute periods close inside the value area; the trade starts at the open of the next minute.
- Two periods trading inside: a period trades inside the value area and the next one does too; the trade starts at the first minute of that second period that reaches the area, at its open, or at the edge if that minute opens outside (225 of 519 trades filled at the edge).
Stop: one tick beyond the session's high (short) or low (long) before the entry. Exit: the far edge of the value area, the stop, or the session close. Only the day's first acceptance counts. No trade if the far edge has already traded before the entry (the value area is already crossed), or if the entry is at or beyond the stop or the target.
- MP80-TC: TPO value area, two closes inside (the main reading).
- MP80-TP: TPO value area, two periods trading inside.
- MP80-VC: volume value area, two closes inside.
Market holidays on which the stock market is closed but the futures trade until 13:00 are not used as sessions; the next day takes the value area of the last regular session. Counted with our POC test, which also traded a level of the previous session's profile, more than four versions of this family have been tried, so the development t-statistic needed is 2.5.
02Data and costs
Data: ES 1-minute bars with volume from 2020 to 25 September 2026, the NinjaTrader back-adjusted export of all our ES tests; prices are not republished. An automated check of the file came before any signal (section 11). Costs: $30.76 a round trip per contract ($50 a point), as in every ES test. Engine check: the trades were computed twice. Our engine (mp80_lib.js) and a separate re-implementation (mp80_ref.js), with its own file reader, its own exchange calendar and its own profiles, agree on every value area (3,382 profiles) and on every trade. The re-implementation was written by the same author (an AI, Claude), not by an independent person or agent. mp80_selftest.js also checks the profiles by hand, every rule on hand-built days, and four deliberate rule changes that it must catch (mp80_selftest_result.txt).
03Results
Results in dollars per contract. The 95% range is the Wilson interval for the win rate. The drawdown is on closed trades; every trade is closed the same day.
| Variant | Version | Trades | Net after costs | Net per trade | Gross per trade | Winners (95% range) | Profit factor | Drawdown on closed trades | Verdict |
|---|---|---|---|---|---|---|---|---|---|
| MP80-TC | TPO value area, two 30-minute closes inside | 270 | +$27,232 | +$100.86 | +$131.62 | 61.9% (56% to 67%) | 1.32 | -$10,226 | Buried |
| MP80-TP | TPO value area, two periods trading inside | 519 | +$36,123 | +$69.60 | +$100.36 | 54.9% (51% to 59%) | 1.18 | -$14,086 | Buried |
| MP80-VC | volume value area, two 30-minute closes inside | 278 | +$4,036 | +$14.52 | +$45.28 | 59.4% (53% to 65%) | 1.04 | -$12,171 | Buried |
Cumulative net result by month, dollars per contract.
By period
| Variant | Development 2020-2023 (trades) | Validation 2024 to Mar 2025 (trades) | Holdout* Apr 2025 to Sep 2026 (trades) | Development t | Validation PF |
|---|---|---|---|---|---|
| MP80-TC | +$2,483 (170) | +$11,831 (51) | +$12,918 (49) | 0.19 | 2.03 |
| MP80-TP | +$26,736 (315) | +$8,179 (97) | +$1,209 (107) | 1.43 | 1.23 |
| MP80-VC | +$4,554 (173) | -$1,092 (55) | +$574 (50) | 0.33 | 0.95 |
* The holdout was already used: these months had been seen in our earlier ES tests, so its result cannot count as clean out-of-sample evidence. The specification estimated, before any computation, that the close readings might fall short of 50 trades in a period; MP80-TC had 49 in the holdout.
04Does the value area fill 80% of the time?
The rule's own claim, counted on every session with a previous value area (1,690). "Crossed that day" counts the far edge at any time of the session, including before the entry; "after the entry" counts it between the entry and the close, whether or not the stop came first.
| Variant | Opened outside | Accepted | Crossed that day | Crossed before the entry (no trade) | Trades | Far edge after the entry | Target before the stop |
|---|---|---|---|---|---|---|---|
| MP80-TC | 1,132 | 369 | 227 (61.5%) | 85 | 270 | 138 (51.1%) | 49.6% |
| MP80-TP | 1,132 | 564 | 290 (51.4%) | 45 | 519 | 245 (47.2%) | 43.7% |
| MP80-VC | 1,113 | 369 | 219 (59.3%) | 76 | 278 | 138 (49.6%) | 48.2% |
The 95% ranges of the share crossed that day run from 56.5% to 66.3% for MP80-TC and from 47.3% to 55.5% for MP80-TP: on ES from 2020 to 2026, 80% is outside them.
How the trades ended
| Variant | Target | Stopped | Closed at the session close | Median stop distance, points | Median target distance, points | Before costs, per trade | Costs, per trade |
|---|---|---|---|---|---|---|---|
| MP80-TC | 49.6% | 15.9% | 34.4% | 25.75 | 16.00 | +0.104 R | 0.028 R |
| MP80-TP | 43.7% | 26.6% | 29.7% | 22.25 | 18.50 | +0.136 R | 0.036 R |
| MP80-VC | 48.2% | 19.1% | 32.7% | 27.00 | 16.75 | +0.028 R | 0.027 R |
The stops were wider than the targets (a median of 25.75 against 16.00 points for MP80-TC), so the rule needed a high hit rate; costs were small next to these distances (0.028 R a trade). The value area was a median 23 (TPO) and 24 (volume) points wide.
05By year and by hour
| Year | MP80-TC trades | MP80-TC net | MP80-TP trades | MP80-TP net | MP80-VC trades | MP80-VC net |
|---|---|---|---|---|---|---|
| 2020 | 40 | +$2,270 | 75 | +$15,180 | 41 | -$574 |
| 2021 | 38 | -$44 | 79 | +$1,732 | 40 | +$4,432 |
| 2022 | 40 | +$5,882 | 69 | +$18,915 | 42 | +$8,308 |
| 2023 | 52 | -$5,625 | 92 | -$9,092 | 50 | -$7,613 |
| 2024 | 37 | +$8,037 | 75 | +$3,455 | 39 | -$3,112 |
| 2025 | 45 | +$9,066 | 83 | +$15,147 | 50 | +$2,349 |
| 2026 | 18 | +$7,646 | 46 | -$9,215 | 16 | +$245 |
2026 runs to 25 September. By the hour of entry (New York):
| Hour | MP80-TC trades | MP80-TC net | MP80-TP trades | MP80-TP net | MP80-VC trades | MP80-VC net |
|---|---|---|---|---|---|---|
| 10:00 | 73 | +$3,117 | 311 | +$25,846 | 83 | +$1,097 |
| 11:00 | 87 | +$11,061 | 79 | +$5,357 | 82 | +$4,415 |
| 12:00 | 47 | +$4,392 | 42 | -$1,754 | 50 | -$3,651 |
| 13:00 | 22 | +$123 | 28 | +$3,664 | 26 | -$5,400 |
| 14:00 | 18 | +$5,909 | 29 | -$2,417 | 15 | +$5,064 |
| 15:00 | 23 | +$2,630 | 29 | +$5,420 | 22 | +$2,511 |
| 16:00 | 0 | – | 1 | +$7 | 0 | – |
06Longs, shorts and the best trades
| Variant | Longs: trades / net | Shorts: trades / net | 10 best trades | Net without them |
|---|---|---|---|---|
| MP80-TC | 133 / -$2,166 | 137 / +$29,398 | +$24,417 | +$2,815 |
| MP80-TP | 224 / -$7,303 | 295 / +$43,426 | +$33,580 | +$2,543 |
| MP80-VC | 136 / -$10,396 | 142 / +$14,432 | +$23,892 | -$19,856 |
The shorts (an open above the value area, coming back down) made the money in every version; the longs lost. This was seen only after the run, so it is not a result: a shorts-only rule would need its own frozen test.
07Is it the rule or the clock?
The benchmark is a moved-entry control: every trade keeps its entry time of day, direction, stop distance and target distance, and all trades move together to other sessions by one random offset of at least 5% of the sessions; on the new day each trade enters at the market at the same time. 500 runs with fixed seeds; the bar is the 95th percentile of the average net result per trade. On other days the same trades made about nothing before costs (control medians -$31.96 to -$39.38 a trade after $30.76 of costs).
| Variant | Trades | Real average per trade | Control median | Control 5th to 95th | Percentile (95 needed) |
|---|---|---|---|---|---|
| MP80-TC | 270 | +$100.86 | -$31.96 | -$118.45 to +$55.95 | 99.4 |
| MP80-TP | 519 | +$69.60 | -$35.03 | -$91.07 to +$21.09 | 99.8 |
| MP80-VC | 278 | +$14.52 | -$39.38 | -$126.98 to +$49.82 | 84.4 |
Both TPO versions cleared this bar: their days were better than random days for the same trades. That is one gate of six; the development t-statistic, which asks whether the first four years alone show a reliable profit, failed in every version.
08The gates
| Variant | Trades | 1. PF ≥ 1.2 in validation | 2. ≥ 50 trades in each period | 3. t ≥ 2.5 on development | 4. Above the 95th percentile of the control | 5. Positive without the 10 best trades | 6. Holdout net positive (already used) |
|---|---|---|---|---|---|---|---|
| MP80-TC | 270 | pass | fail | fail | pass | pass | pass |
| MP80-TP | 519 | pass | pass | fail | pass | pass | pass |
| MP80-VC | 278 | fail | pass | fail | fail | fail | pass |
09Verdict by variant
| Variant | Cause | Gates failed | Verdict |
|---|---|---|---|
| MP80-TC | No proven edge | 2, 3 | Buried |
| MP80-TP | No proven edge | 3 | Buried |
| MP80-VC | Fragile | 1, 3, 4, 5 | Buried |
The causes follow the protocol's definitions. No proven edge marks the two TPO versions: profitable after costs and better than the control, but with development t-statistics of 0.19 and 1.43; MP80-TC also had 49 trades in the holdout, one short of 50. Fragile marks the volume version: positive overall, negative without its 10 best trades, and below the control (84.4th percentile). The headline cause is No proven edge. Buried means that a convincing edge was not shown here; it does not prove that none exists.
TWhat this shows, and what to take into your own tests
What the results show
- The value area was crossed from edge to edge on the same day on 61.5%, 51.4% and 59.3% of the days with acceptance, not 80%; after the entry the far edge traded on 51.1%, 47.2% and 49.6% of the trades.
- The two TPO versions made money after costs and beat the same trades moved to other days (the 99.4th and 99.8th percentile), but their development-period t-statistics were 0.19 and 1.43, far below the 2.5 needed.
- The money came from shorts after an open above the value area; the longs lost in all three versions, and in the two TPO versions the 10 best trades made 90% and 93% of the net.
What remains unknown
- A tick-exact TPO or volume profile from a charting platform; its value area edges can differ from ours by a point or so.
- Other stops, for example just outside the value area, or other targets such as the POC.
- Whether shorts alone would hold up: that was noticed after the run and would need its own frozen test.
- Other markets, such as NQ or Treasury futures.
Why it was buried
ES opened outside the previous session's value area on 1,132 of 1,690 sessions (67.0%), and price came back for two 30-minute closes inside on 369 of those days. From there the far edge traded before the close on about half of the trades, not four in five. The two TPO versions still made money, and more than the same trades on other days, but in different years: the close version almost all of it in 2024 to 2026 (+$14.61 a trade in 2020 to 2023), the print version in 2020, 2022 and 2025, with losses in 2023 and 2026. The development t-statistics stayed far below 2.5, and about nine tenths of the net came from ten trades. That is not enough to call it an edge.
What you can apply to your own tests
- Measure the claim itself before you trade it: here the "80%" was about 50 to 60%.
- Beating a random-day control is not enough when the first period is flat; look at every period.
- If ten trades make most of the profit, the edge is not proven.
A note on the numbers: drawdown figures are measured on closed trades unless a table says it includes open losses. Open losses inside a trade are not counted in a closed-trade drawdown, so real account risk is higher, especially for systems with no stop. Backtests are not live trading.
FAQCommon questions
What is the 80% rule in Market Profile?
If the market opens above or below the previous session's value area (the prices that held about 70% of its activity) and then trades back inside it for two consecutive 30-minute periods, the rule says price will probably cross the whole value area to the other edge, about 80% of the time. It is set out in Mind Over Markets by James Dalton, Eric Jones and Robert Dalton.
Does the 80% rule work on ES futures?
Not as claimed in our test. After two 30-minute closes back inside the value area, the far edge traded before the close on 51.1% of 270 trades, and the full crossing happened the same day on 61.5% of the 369 days with acceptance. The versions made money after costs, but none passed all six of our gates, mainly because 2020 to 2023 alone did not show a reliable profit.
Should the value area be built from TPO or from volume?
In our test the classic TPO value area (30-minute periods) did better than a volume value area: +$100.86 against +$14.52 a trade after costs with the same entry rule, and only the TPO versions beat the same trades placed on other days. One test on one market does not settle which is better.
Where should the stop go on an 80% rule trade?
The rule itself gives no stop. We used one tick beyond the session's high (for a short) or low (for a long) before the entry. The stops were wider than the targets: a median of 25.75 points against 16.00 for the main version, so the rule needs a high hit rate to pay.
How was the 80% rule tested?
On ES 1-minute bars with volume from 2020 to 2026, with the previous session's value area built two ways, two readings of acceptance, $30.76 of costs a trade and rules written and dated before the data was run, costs included on every trade, results split into development, validation and holdout periods, a random-entry control as the benchmark, and every variant reported. Read the protocol.
10Check our arithmetic
mp80_spec.md
mp80_lib.js · mp80_ref.js · mp80_selftest.js · mp80_run.js · mp80_datacheck.js
control_audit_lib.js · em_lib.js · gh_lib.js · hourly_lib.js · ma_lib.js · rb_lib.js · rsi2_protocol.js · gc_rolls.json · data_holes.json
mp80_datacheck.txt · mp80_selftest_result.txt · mp80_results.txt · mp80_summary.json
To rerun it: place ES_1min.csv (New York time, close stamps, with volume) one folder above, then run node mp80_datacheck.js, node mp80_selftest.js and node mp80_run.js, in that order; the outputs go to a subfolder named mp80_out. Code provenance: our own code, written for this test.
11Data notes
The data check (mp80_datacheck.txt), before any signal: every price on the 0.25 grid, no duplicate stamp, and 1,691 regular sessions whose calendar matches an independent list of stock market holidays and early closes. Seven gaps of 10 or more minutes fall inside regular hours (four in March 2020). Two faults in the file: in the week of 19 to 22 October 2020 the time stamps are shifted, with the day's heavy trading appearing overnight, and 23 October 2020 has no regular hours; no trade fell in that week or on the session after it. On the roll days from June 2020 to March 2022 the regular-hours volume is between a tenth and a quarter of the previous session's, which matters mainly for the volume profile of those days. Rule 3: trades open across a gap, or whose value area came from a session with a gap or with that thin volume, were flagged (7, 14 and 7) and the gates recomputed without them; no verdict changed. The profiles are built from 1-minute bars, not from trades at each price, so a value area can differ from a charting platform's by a point or so; the TPO and volume value areas of the same session had both edges within one point of each other on 22.8% of sessions.
12Corrections
None since publication.