Orderflow Atlas

Guides

Footprint charts — the complete guide

A footprint chart is the candle taken apart. This page walks through what is inside one, cell by cell, and then through the part nobody sells you: the settings that decide what you see, and the questions the instrument is structurally unable to answer.

A footprint chart opens each bar to show how much volume executed at the bid and at the ask, price by price. It recovers what a candle discards: where inside the range the business was done, and which side crossed the spread to do it. It measures aggression, never intention.

What a candle throws away

A candle is a summary of a summary. Four prices — open, high, low, close — stand in for every transaction in the interval. Two bars can share those four numbers exactly and describe opposite sessions: one where 1 900 contracts changed hands in a slow drift, one where 19 000 traded with most of them piled at a single price near the low. A candle draws them identically.

What is lost is not decoration. It is the distribution — where inside the range the business was actually done — and the initiative — which side was paying the spread to get filled. Both are recorded for every transaction. Both are discarded the moment a chart aggregates trades into a bar.

A footprint chart is the decision not to discard them. It keeps the bar as the unit of time, splits it into one row per price, and splits each row into the volume that executed at the bid and the volume that executed at the ask. Everything else in this guide — delta, imbalances, finished and unfinished extremes — is arithmetic on those two numbers, including the readings sold as proprietary.

A footprint is not an indicator: nothing is smoothed, fitted or lagged. It is a rendering of the executed record at a finer resolution. The numbers are counts, not opinions — which is its strength, and also the source of every limitation in the last section, because a finer rendering of the past is still a rendering of the past.

One cell, then one bar

Each cell holds two figures at one price. Volume at the bid means an aggressive seller crossed the spread and hit a resting buyer. Volume at the ask means an aggressive buyer lifted a resting offer. The party named in each case is the impatient one, the one who paid the spread. The passive counterparty who was already waiting there is not counted anywhere in the display.

Below is a constructed five-row bar. Every number in it is invented for the illustration, and the arithmetic in the rest of this page refers back to it.

Read it as a whole first. The bar traded 1 931 contracts: 726 at the bid, 1 205 at the ask. Aggressive buyers were the majority by 479 contracts — a delta of +479, close to 25% of what traded. The heaviest row is 4 512.50 with 529 contracts, and it sits one tick under the high rather than in the middle of the range.

None of that is a signal, and this is where most readings go wrong. Whether it was buyers finishing a move or buyers being handed inventory by a patient seller depends on what price does next, which is not in the table. The footprint reports the effort; the chart beside it reports the result.

A synthetic five-row footprint bar. Bid volume is aggressive selling; ask volume is aggressive buying.
PriceAt bidAt ask
4 512.751896
4 512.50141388
4 512.2592306
4 512.00265240
4 511.75210175

Delta measures impatience, not direction

Delta is ask volume minus bid volume: net aggression over whatever window you compute it on. In the bar above it is +479. The temptation is to read that as a bullish bar, and that temptation is the most expensive habit in the subject.

Every transaction has a buyer and a seller, always, in equal size. Delta does not count buyers against sellers — that difference is zero by construction. It counts who crossed the spread. Paying the spread is a cost, not an edge. Heavy aggressive buying that produces no higher prices is buyers paying for immediacy and receiving nothing for it.

So the informative object is never delta alone. It is the pair (delta, displacement). Large delta with a large move is unremarkable: that is what a trend looks like. Large delta with no move is the interesting case, and it has competing explanations — absorption, or aggression spread thinly across a wide range. Small delta with a large move usually means price travelled on thin resting size rather than on conviction.

Two practical notes. Raw delta is not comparable across bars of different size, so dividing by the bar's volume gives a figure that is: +479 on 1 931 contracts is a different bar from +479 on 19 000. And where the exchange does not publish which side crossed the spread, the aggressor is inferred from the trade price against the quote — wrong most often when quotes move fastest. Accumulated across a session, the same measure becomes cumulative volume delta.

Why imbalances are compared diagonally

An imbalance flags a cell where one side got far more done than the other. The comparison is diagonal: ask volume at a price against bid volume at the price one tick below. It looks like a mistake the first time you see it, and it is the one piece of footprint mechanics worth deriving rather than memorising.

Consider the spread. When the market is bid at 4 512.25 and offered at 4 512.50, an aggressive buyer trades at 4 512.50 and an aggressive seller trades at 4 512.25 — at the same moment, against the same book, competing for the same liquidity. Those two populations met. Now pair the bid and the ask at the same price instead. For both to occur the quote has to move in between, so those two numbers are separated by a change in the market rather than by a confrontation.

The bar above shows why the axis matters more than the threshold. At 4 512.50 the diagonal comparison is 388 against the 92 one tick lower: just over four to one, a flag under any common setting. The comparison at that same price, 388 against 141, is just under three to one — no flag under the usual default. Identical data, two answers, and the whole difference is which pair you decided was meaningful. A stacked run of three or more flags at adjacent prices is a different object again: aggression stayed one-sided while price travelled through a band, rather than at a single tick.

Finished and unfinished extremes

At the top and bottom rows of a bar one extra reading is available. A high is called finished when the highest price traded on both sides — some volume at the ask and some at the bid — and unfinished when it traded on one side only. The low is the mirror image.

The mechanism is worth stating, because the labels are usually taught as vocabulary. For price to leave a high, someone has to sell there — and aggressive selling at the top price appears as bid volume in the top cell. Above zero, the market found a counterparty at its own extreme and turned away from it: the auction at that price completed. At zero, nothing sold at the high; buyers were still lifting offers when the bar ended, and the bar ended because the clock said so.

That is the structural argument for why unfinished extremes attract attention: an auction that stopped mid-sentence never established that the price was refused, so the question stays open. It is an argument rather than a frequency — no public dataset defines the pattern in terms another person could replicate, and the definition is unusually sensitive to a setting you chose.

Look at the top row of the bar above: 96 at the ask against 18 at the bid. It is finished, by the definition, on 18 contracts. Had the bar closed a few trades earlier, the same price in the same session would read unfinished. The label flips on a boundary the market has no knowledge of — a reason to treat finished and unfinished as properties of your chart settings first and of the auction second.

The calibration problem

Every reading described so far depends on numbers you chose: a ratio, a minimum volume, a row height, a bar length. None of them is given by the market. All of them ship as defaults, and a default is how a setting quietly becomes a belief.

The best known is the three-to-one imbalance ratio. It has no published derivation and no public test; it propagated because it shipped as a default. Two to one and four to one are equally defensible, and each produces a visibly different chart from identical data. It is a knob you set, not a property of the auction.

The setting that actually decides whether a flag means anything is the one nobody configures: an absolute minimum volume per cell. A cell holding 12 contracts against 3 clears four to one and carries fifteen contracts of information. Ratios explode wherever denominators are small, and denominators are smallest at the edges of a bar — so flags cluster exactly where the sample is thinnest, which is also where the eye lands.

And a threshold is not portable. It encodes an instrument's tick size, its typical trade size, the bar length it was tuned on and the hours it was tuned in. Copying one imports all four without telling you: a floor of 150 contracts per cell is severe where the typical trade is one lot and invisible where it is fifty.

The procedure that works is dull and costs one session. Fix every setting in the table below in writing, before you look at anything. Then move each one a single step — ratio up and down, floor up and down, row height doubled. What survives is a reading. What does not was a rendering choice.

The settings that decide what a footprint shows, and what copying someone else's imports.
SettingWhat it decidesWhat copying it imports
Imbalance ratioHow lopsided a diagonal pair must be to be flaggedNothing measurable — no derivation exists, only a habit
Minimum volume per cellWhether a flag may come from a thin sampleSomeone else's instrument and its typical trade size
Row height, in ticksWhich pairs of cells are compared at allTheir tick size, and how much tape they merged
Bar type and lengthWhere every bar is cut, and therefore every extremeTheir session, their volatility, their unit of time
Stack countHow many consecutive flags make a bandA zone definition not comparable with yours

What a footprint cannot tell you

This section is not a disclaimer bolted on at the end. It is the part that decides whether the rest of the page is worth trusting. A footprint is an unusually honest instrument, and it still cannot do most of what it gets sold as doing.

A footprint records executions. Most of what a trader wants to know concerns resting size and intention, and neither is an execution. The limits below do not recede with experience, with a faster feed, or with a more expensive subscription.

In short

  • A footprint keeps two numbers per price: volume executed at the bid and at the ask. Every other reading is arithmetic on those two.
  • Delta measures who crossed the spread, not who was right. The informative object is delta together with the displacement it did or did not produce.
  • Imbalances are diagonal because the bid at one price and the ask at the price above are the two sides of the same spread, quoted at the same moment.
  • Finished and unfinished extremes flip when the bar boundary moves, so they describe your chart settings before they describe the auction.
  • A copied threshold imports someone else's instrument, bar length and session. Fix your settings, move each one a step, and keep what survives.

Frequently asked

What is the difference between a footprint chart and a volume profile?
Resolution and axis. A volume profile aggregates volume by price over a session or a range and usually does not split it by aggressor. A footprint keeps the bar as its unit and splits every price row into bid and ask volume. The profile answers where business was done; the footprint answers who was paying the spread, bar by bar.
What imbalance ratio should I use?
There is no derived answer, and anyone offering one with confidence is repeating a default. Three to one is the common convention. What matters more is pairing it with an absolute minimum volume per cell, sized to your instrument and bar length, and never changing either mid-session.
Can I see absorption on a footprint chart alone?
Not from the numbers alone. A cell with enormous volume on one side is only absorption if price failed to move, and the failure to move lives on the price axis, not in the cell. You also never see the resting order doing the absorbing; it is inferred from the absence of displacement.
Do I need a footprint chart to learn order flow?
No, and it is the most data-hungry of the instruments. The mechanics — matching, aggression, passive size, acceptance — are the same whether or not you see them at one-tick resolution, and much order flow work is done from a profile and the tape. The chart makes some observations easier to see after the fact; it does not supply the concepts themselves.
Why does my footprint look different from someone else's on the same instrument?
Settings before data, almost always: row height, bar type and length, imbalance ratio, volume floor, and which session hours are included. Feed differences add to it. Two footprints of one session are comparable only when both parties can state all of that.