V I S O R

Strategies · intermediate · 8 min

Supply and Demand Zones

Supply and demand zones are the parent idea behind order blocks and fair value gaps. The claim is intuitive: at some price areas, one side of the market overwhelmed the other so decisively that price left in a hurry. A demand zone is an area price rallied away from sharply — read as "buyers were waiting here." A supply zone is an area price dropped away from — "sellers were waiting here." The strategy is to mark those areas as zones (not single lines) and look to trade the bounce the next time price returns to them.

It is a more honest framing than support and resistance in one respect: it treats levels as bands with width, and it ties the level to a visible cause (the sharp move away) rather than just a round number. But it inherits the same problem every zone method has, and this lesson is about naming that problem squarely.

How a zone is marked

The usual recipe:

  1. Find a candle or small cluster where price then moved away fast (a strong impulse, often leaving an imbalance).
  2. Draw a zone from the base of that move to the open/close of the last candle before it — a band, not a line.
  3. Wait. If price later returns to the band, that is the setup the method trades: a bounce in the direction of the original impulse.

Reading zones is a genuinely useful habit — it forces you to notice where momentum originated instead of guessing at levels. Marking them costs nothing and can sharpen how you see a chart.

The action this method turns on

The entire supply/demand method turns on one thing: remember a specific price zone, defined many bars ago, and fire only when price later re-enters it. For a long time Visor's strategy language could not express that — it worked bar-by-bar on indicators and recent price relationships, able to detect the impulse that creates a zone but not to store the zone and wait an arbitrary number of bars for a return. A "zone bounce" rule written without that memory would be a different strategy wearing the name, and a backtest of the wrong rule is worse than no backtest, because it looks authoritative while measuring something else.

That capability now exists — zone memory (ZONE_OB / ZONE_FVG): record a price band from a past event, expire it if it goes stale or is closed through, and trigger on the first re-entry. So the demand-zone bounce is now testable, and this lesson ends the way the others do: with a verdict.

What is faithful — and the one gap that remains

Being able to test it does not mean the mechanical rule is the whole method — so here is exactly what the baked rule captures and what it leaves out, stated plainly rather than glossed:

The honest verdict

Here is the baked robustness report for the faithful single-candle demand-zone bounce on SPY, five years of daily bars, with a fixed 5% take-profit / 3% stop. Read How to read a robustness report if the gates are unfamiliar.

Robustness verdict — SPY · 5y · as of 2026-07-13
Failed robustness testingThis backtest did NOT survive robustness testing. The headline numbers overstate it.
Backtest return 3.07%Buy & hold 72.53%Trades 22

Random control

Beat 33.2% of 500 randomly-timed versions of itself (real 3.07% vs random average 10.52%).

FAIL

Out-of-sample

In-sample -5.86% · held-out 9.49%.

PASS

Significance

t = 0.248 against a 3.5 threshold.

FAIL

Deflated Sharpe

0.5965 — Sharpe of 0.0528.

FAIL

These checks describe how much of this backtest survives statistical scrutiny. Past simulated performance is not a guide to future results, and nothing here is a recommendation to trade.

The demand-zone bounce traded 22 times and returned about +3% over a window where buy-and-hold returned +73% — it barely participated. The random control is decisive: the identical rule with its entry timing scrambled averaged +10.5% across 500 runs, and the real, carefully-timed version beat only about 33% of those twins. In plain terms, entering at a random moment and holding for the same target beat "wait for the return to the demand zone" two times out of three. The significance test is unambiguous (t = 0.25 against a 3.5 bar), and it clears out-of-sample only in the same accidental way its siblings do — a small back-third gain after an in-sample loss, noise landing kindly, not an edge. Fail.

That is the same verdict the order block re-entry (−0.45%) and the fair value gap retrace (+28%, and worse than buying the gap) earned — three readings of the one zone idea, tested identically, all unable to out-time their own scrambled selves. It is not proof no one can ever trade a demand zone; it is strong evidence that the mechanical, hindsight-obvious version — the one course sellers backtest to look authoritative — is measuring the market's drift, not a skill in the entry.

Try it yourself

Load this configuration into the Strategy Editor, run it, and open the Robustness tab. It is the exact demand-zone bounce baked above — a ZONE_OB(1.0, 30) entry with the 5%/3% exit.

Try it in Visor →

What to read next