# Effort and result: reading volume that doesn't move price

- Source: https://orderflowfutures.com/en/blog/effort-vs-result-order-flow
- Site: OrderFlowFutures (https://orderflowfutures.com)
- Author: Tom, Trader & founder of OrderFlowFutures (https://orderflowfutures.com/a-propos#auteur)
- Published: 2026-09-02
- Updated: 2026-09-02
- Reuse: free to quote and cite, with attribution to OrderFlowFutures and a link to the source URL.

> Wyckoff's law says effort should agree with result, it does not say the relationship is proportional. Market impact studies give an exponent between 0.5 and 0.6: lots of volume for little price is the normal state, not a signal. How to measure effort correctly, why no absolute threshold holds, and the two faces of disharmony.
US open on the NQ. Price stalls just under yesterday's high. In three minutes the footprint counts 2,400 contracts traded inside a six tick band, cumulative delta climbs by more than 900 in favour of buyers, the volume bar dwarfs anything the session has printed so far. And price has gained two ticks.

The reflex is instant: heavy volume, no movement, therefore absorption. It might be right. It is also the single most common wrong conclusion in order flow reading, because it rests on an intuition the data contradicts: the idea that a normal market returns price in proportion to the volume you feed it.

**Effort is the aggressive volume actually executed, result is the distance price travels. The relationship between the two is not proportional, it is concave: market impact studies measure an exponent between 0.5 and 0.6, which means doubling volume produces only about one and a half times the move. Lots of volume for little price is therefore the market's normal state, not a signal. Divergence is never read in absolute terms, only against the recent baseline of that level and that session.**

---

## 1. A law from the 1930s that nobody measures

The formulation comes from Richard Wyckoff, in the 1930s. His third law, as the [Wyckoff Stock Market Institute](https://wyckoffsmi.com/two-goals-three-laws-and-five-steps/) states it today: the change in price of a trading vehicle is the result of an effort expressed by the level of volume, and harmony between effort and result promotes further price movement while lack of harmony promotes a change in direction.

Almost a century later the law is repeated verbatim across half the order flow content on the internet, with one addition that is systematic and never demonstrated: that harmony means proportionality. Wyckoff had total volume and the ticker tape, nothing else. He meant harmony in the common sense way: a big effort ought to produce a big move.

We have two things he did not. First, an exact measurement of effort, declared by the exchange. Second, forty years of literature that measures the precise shape of that relationship. Both change how you read the chart, and not in the direction retail culture assumes.

---

## 2. Effort is not guessed, it is declared

Start with the side everyone thinks they have covered.

To know who pushed, you need to know which side the aggression came from: a buyer lifting the ask, or a seller hitting the bid. Standard market data does not provide that information. It is **inferred**: you compare the trade price to the bid and ask quoted at the nearest moment, and you decide. That is the historical approach, it works roughly, and it fails precisely where it matters, in fast bursts where the book moves between two quote updates.

On CME Globex the inference is unnecessary. The *Trade Summary* message in the MDP 3.0 feed carries a dedicated field, tag 5797 *AggressorSide*, and the [official documentation](https://cmegroupclientsite.atlassian.net/wiki/spaces/EPICSANDBOX/pages/457418925/MDP+3.0+-+Trade+Summary) gives two values: 1 for a bid aggressor, 2 for an ask aggressor. The same page defines what the message represents: a distinct match comprised of all orders that traded together as the result of a single aggressing order.

Read that twice, because it contains the operational definition of effort. A *Trade Summary* is **one aggressive intention and everything it consumed**. Not a pile of ticks to reassemble, not an estimate: the unit of effort, as the matching engine experienced it.

This is where order-by-order data stops being a luxury. A [footprint](/lexique/footprint) built on that data splits aggressive buying and selling with no attribution error. A footprint built on aggregated data reconstructs an estimate. The two look alike on screen. They do not say the same thing tick by tick, and effort versus result is decided tick by tick.

One word on measuring the result, because it is botched more often than the effort. The result is not the size of the candle. It is the **net distance travelled from the price where the effort started**, counted in ticks. A five minute candle with a long wick moved a lot and went nowhere: its net result is close to zero, and the zero is the part that counts.

---

## 3. What retail culture misses: the relationship is concave

Here is the core of the article.

When an institution executes a large order sliced over minutes or hours, market microstructure calls it a metaorder, and it has measured for a long time how far price moves as a function of executed size. This is not an academic question: it is the real cost of execution, so brokers and funds have a direct financial interest in estimating it correctly.

The finding is consistent from study to study: **impact is not proportional to size, it is concave.** The move grows markedly slower than the volume. The reference study by [Almgren, Thum, Hauptmann and Li](https://www.cis.upenn.edu/~mkearns/finread/costestim.pdf), published in *Risk* in 2005 on 29,509 orders from an equity execution desk between December 2001 and June 2003, measures a temporary impact exponent of 0.600 with a margin of 0.038, and explicitly rejects the square root model in favour of a 3/5 power law. Other work, on other markets and other periods, lands back on the square root, exponent 0.5. The debate is about the second decimal. It is not about the concavity, which is settled.

Translate that into ticks and the reading changes completely:

| Effort multiplied by | Expected result, exponent 0.5 | Expected result, exponent 0.6 |
|---|---|---|
| 2 | × 1.41 | × 1.52 |
| 4 | × 2.00 | × 2.30 |
| 10 | × 3.16 | × 3.98 |

![Effort versus result curve: the proportional line dashed against the 0.5 and 0.6 exponent curves](/uploads/blog/eff-01-courbe-concave-en.png)

Ten times the usual volume should produce roughly **four times** the move, not ten times. Which means the scene in the introduction, 2,400 contracts for a couple of ticks, is not abnormal in itself. It probably is abnormal, but you cannot say so from the raw number.

Three direct consequences for your reading:

1. **There is no universal threshold.** "More than 1,000 contracts with no movement equals absorption" is a rule with no content: it depends on the instrument, the hour, the day's volatility and how thick the book is at that exact moment.
2. **The volume per tick ratio naturally degrades as volume rises.** On an extension of a move it is mechanically worse than in quiet conditions. Reading it without correcting for that effect makes you see absorption everywhere in active phases, exactly where there is least of it.
3. **The only usable measurement is relative.** Effort and result at this level, compared with effort and result at neighbouring levels in the same session, in the same volatility regime. It is more tedious than a threshold, and it is the only thing that holds.

This relationship between volume and displacement has a name in microstructure: it is the inverse of market depth, formalised by Albert Kyle in *Continuous Auctions and Insider Trading* ([Econometrica, 1985](https://www.econometricsociety.org/publications/econometrica/1985/11/01/continuous-auctions-and-insider-trading)). A deep market absorbs a lot of volume for little price. A thin market does the opposite. What you call effort versus result, a microstructure researcher calls a measure of local liquidity, and that is exactly the right way to think about it: **you are not measuring how strong the buyers are, you are measuring how much resistance the book offers.**

---

## 4. Effort and delta are not the same thing

This is the most expensive of the three mistakes, and the most widespread, because both numbers sit side by side on the screen.

[Delta](/lexique/delta) is a **balance**: aggressive buying minus aggressive selling. Effort is a **total**: aggressive buying plus aggressive selling. At a level where 1,200 contracts were bought at market and 1,150 were sold at market, delta reads +50, a meaningless number, while 2,350 contracts fought each other. The effort is enormous, the delta is nil.

![The same level read twice: a delta of +50 against 2,350 contracts of total effort](/uploads/blog/eff-02-effort-vs-delta-en.png)

And that is precisely the signature of a level that matters. A balanced fight on heavy volume inside a narrow price band is a battle whose outcome will produce a move. A trader watching delta alone sees nothing at all there, and instead sees a signal where 300 contracts were bought with no counterparty, which is a liquidity desert, not a show of strength.

The separation rule fits in one line: **delta gives direction, total aggressive volume gives effort, and only effort is compared to the result.** [Cumulative delta](/lexique/cvd) serves a third purpose again: tracking the drift of that balance across the session. Three readings, three uses, one screen.

The practical corollary: the famous "delta divergence", cumulative delta rising while price stops following, is just one case of effort result disharmony. It is the most visible case, not the only one, and not the most reliable.

---

## 5. Disharmony has two faces, and the second one is never read

Everyone knows the first: **a lot of effort, little result.** Sustained aggression that fails to move price has met a passive counterparty taking it in. That is [absorption](/lexique/absorption), most often fed by hidden size reloading at the same price, the mechanism detailed in the article on [iceberg orders](/blog/how-to-detect-iceberg-orders). Its sharpest form has a name, the [Punch to the Wall](/blog/punch-to-the-wall-order-flow-pattern), and its own article: that one gives you the anatomy of the pattern, this one gives you the measurement that tells you whether anything abnormal is happening at all. The signal has two stages: while it absorbs, the level holds; when it stops absorbing, the level breaks, and the break is often violent because all that volume was stored fuel.

The second face appears almost nowhere in retail content, and it is worth at least as much: **little effort, a lot of result.**

![The two faces of disharmony: a lot of effort little result, little effort a lot of result](/uploads/blog/eff-03-deux-faces-en.png)

Two hundred contracts that move the NQ fifteen ticks do not prove buyers are powerful. They prove nobody was there. The book was empty, price slid across a void, and the move rests on almost no traded volume. Three things follow:

- the move created **no level**: nobody holds a position to defend along the path, so nothing will support it on the way back;
- it replays in reverse on the same small effort, which is what makes the retracement look "unjustified" when you only watch the candle;
- it happens at identifiable moments: ahead of macro releases, at session handovers, in the first seconds of the cash open, during rollover periods.

Small effort for an oversized result is therefore a **fragility warning**, the exact opposite of what the candle suggests. It is also why a [liquidity heatmap](/blog/how-to-read-liquidity-heatmap) completes the effort count: it shows what is waiting, before it gets consumed or pulled.

---

## 6. Reading it in three steps

Everything above collapses into a short method that needs no particular indicator.

**Step one, set the baseline.** Over the last two hours on the same instrument, how much aggressive volume for how many net ticks, on average? That ratio is your yardstick for the day. It changes every day, it changes between the open and mid session, and it does not travel between contracts: a FDAX tick and an NQ tick cost neither the same money nor the same effort.

**Step two, measure the gap at the level you care about.** Not on the candle, on the price band. How much aggressive volume executed between these two ticks, and where is price since? A gap of two or three times the yardstick is significant; a gap of 20 % is noise.

**Step three, wait for the effort to end.** This is the step almost everyone skips. An effort result divergence does not give an entry signal, it designates a **level to watch**. The decision is made when the aggression stops: if price falls away decisively as soon as the pressure ends, the passive counterparty won and the level holds; if it stays glued to the level, the pressure will come back and the level will eventually give. The tradable fact is not the divergence, it is how price behaves after it.

That last step is also what makes the reading testable: it turns an impression into a rule with an invalidation condition, and a rule with an invalidation condition can be counted over a hundred occurrences.

---

## 7. What DeepCharts does with it

The ecosystem covers the three measurements separately, which is consistent with the distinction laid out above.

For raw effort and its direction, [Deep Prints](/deepcharts/footprint) gives the exact price-by-price split on order-by-order data, and [Deep Delta](/deepcharts/deep-delta) the bar by bar balance. For the passive side, the one the effort hits, the [liquidity heatmap](/deepcharts/heatmap-liquidite) and [Deep Wall](/deepcharts/deep-wall) show what is waiting and what gets pulled.

The in-house model that addresses this question explicitly is [Deep-M Effort](/deepcharts/deep-m-effort). Three facts to know before using it, taken from the vendor's own documentation: it is **designed specifically for the NQ**, it is **optimised for 40 Range charts**, and it is **preconfigured**, with the vendor stating that users do not need to adjust core settings. On screen it works as coloured zones marking the path of least resistance, green to the upside, purple to the downside, with a moving average that adjusts to price action.

That framing is both a strength and a limit. A strength, because a model calibrated on one instrument and one chart type beats a generic setting. A limit, because none of it transfers as is to the ES, the FDAX or a different chart type: on those contracts the reading stays manual, with the three step method from the previous section.

And the trap is the same as for any proprietary model: a coloured zone is a hypothesis about the path of least resistance, not a truth about what will happen. It is read with context, levels and the liquidity facing it, and it is tested on your own practice before anyone trusts it mechanically. If you want to turn an effort reading into rules with entry and invalidation conditions, that is what [Deep Pattern Builder](/deepcharts/deep-pattern-builder) is for.

All of these readings assume the same thing upstream: order-by-order data. That is the real cost of entry, and it is what the [DeepCharts ecosystem](/deepcharts) provides on CME futures and on the [Eurex feed](/eurex). [See the plans](/go/deepcharts).

---

## 8. The worked example, back to the introduction

Take the NQ scene again, with the method.

**Baseline for the day**: over the previous two hours, roughly 180 aggressive contracts per net tick travelled. That is the yardstick.

**The level**: 2,400 contracts for two net ticks, so 1,200 contracts per tick. A factor of 6.7 against the yardstick. Even after correcting for concavity, the gap stays well beyond what size alone explains. That is significant.

**Breakdown**: cumulative delta +900 on 2,400 contracts traded. So roughly 1,650 aggressive buys against 750 aggressive sells. This is not a balanced fight, it is a one-sided push that obtains nothing. The counterparty is not aggressing, it is taking the fills at the bid. Passive absorption signature.

**Waiting for the effort to end**: the buying dries up, no more bursts, volume drops below normal. Two outcomes, two readings. Price drops six ticks within the minute: the buyers who paid are trapped at the top, the passive seller won, the level is a ceiling. Price stays glued under the high without backing off: nobody is taking their money back, the passive seller has finished the job, and the next push will go through.

In both cases the divergence decided nothing. It designated the level, what followed settled it. That is the whole difference between reading order flow and reading an indicator.

---

## Frequently asked questions

**What is effort versus result in trading?**
Effort is the aggressive volume executed, result is the distance price travels. The law comes from Richard Wyckoff in the 1930s: when effort and result agree, the move continues; when they diverge, a change of direction becomes likely. In modern order flow, effort is measured on order-by-order data, with the aggressor side declared by the exchange.

**Why does heavy volume sometimes fail to move price?**
Two very different reasons. The first is structural: market impact is concave, so ten times the volume produces only about four times the move, which makes lots of volume for little price the normal state. The second is situational: a passive counterparty is absorbing the aggression at the same price, often with hidden size that reloads. Only comparison with the market's recent baseline separates the two.

**What is the difference between effort and delta?**
Delta is a balance, aggressive buying minus aggressive selling. Effort is a total, buying plus selling. A level where 1,200 contracts are bought and 1,150 sold shows a delta of +50, meaningless, while 2,350 contracts fought each other. Delta gives direction, effort gives intensity, and only effort is compared with the result.

**Does doubling the volume double the price move?**
No. Market impact studies measure a concave relationship, with an exponent between 0.5 and 0.6 depending on the study. Doubling volume produces about one and a half times the move, multiplying it by ten produces about four times. This is why no absolute threshold such as "a thousand contracts with no movement" means anything out of context.

**Is a small volume that moves price a lot a sign of strength?**
It is the opposite. A move obtained on little aggressive volume indicates a thin book, not powerful buyers. Price slid across a void, no level was created along the way, and the move replays in reverse on the same small effort. These episodes cluster around macro releases, session handovers and rollover periods.

**How do you measure effort correctly?**
You need the aggressor side of every execution. On CME Globex it is declared by the exchange in the Trade Summary message of the MDP 3.0 feed, field AggressorSide, value 1 for a bid aggressor and 2 for an ask aggressor. Without that data the side is inferred from the trade price compared with the bid and ask, an estimate that degrades exactly in the fast bursts where the reading matters most.
