The Footprint — reading aggression, bucket by bucket
A candle tells you where price went. A footprint tells you who pushed it there — how much volume hit the bid versus lifted the ask at every price level inside the bar. It's the difference between seeing the score and watching the game.
- Each row is a price bucket. The bar is sliced into horizontal cells. The left number is volume that traded on the bid (sellers hitting it); the right is volume that lifted the ask (buyers paying up).
- Delta = ask − bid. Green-heavy cells mean buyers were aggressive at that level; red-heavy means sellers were. Net delta over the bar is the tug-of-war's result.
- POC (point of control) — the highlighted row is the price with the most total volume in the bar. It's where the auction spent the most time agreeing on value.
- Imbalances — an outlined cell is a diagonal stack: buy volume at a level that dwarfs the sell volume one tick below (3:1 here). Stacked imbalances mark where one side ran the other over — often support/resistance on the retest.
- Naked POCs — a POC that later price never traded back through. Untested value that often acts like a magnet.
Every number here is reconstructed from raw trades by perplog-core::orderflow::footprint — pure, deterministic, unit-tested. No black box. The rules:
- Aggressor side — a trade's taker side classifies it: a market buy adds to
ask_sz, a market sell tobid_sz. (HL/Binance/Bybit all stamp the taker side; no inference, no tick rule guessing.) - Bucketing — price is floored to the ladder step (
bucket = ⌊price / step⌋, Euclidean so it's correct across zero). Default step ≈ 5 bp of price; re-bucketed losslessly when you zoom. - Delta = Σ(ask − bid) over the bar's cells. POC = argmax of (bid+ask) per bucket, ties broken low (deterministic).
- Diagonal imbalance at bucket
i(buy side):ask[i] ≥ 3 × bid[i−1]. Sell side:bid[i] ≥ 3 × ask[i+1]. The 3:1 ratio is the orderflow convention (Steidlmayer/Dalton lineage), not a Perplog invention. - Naked POC — a bar's POC whose price falls outside every later bar's traded range. Touch it once and it's no longer naked.
Reproduce it yourself: the footprint, CVD, VWAP and value-area math live in the open-source perplog-core crate. Same code runs in the recorder, the browser, and the tests — bit-identical by construction.
Footprint tools show you the market's aggression. Perplog shows you yours, inside it. Because every trade you place goes through the terminal (0.01% fee, no CSV import), Perplog can pin your fills on the footprint — see exactly which imbalance you entered on, whether you bought into absorption or breakout, where your stop sat relative to the POC. Then replay the session and watch your decision unfold against the order flow that was actually printing.
The competition has the footprint. None of them have your footprint. That's the journal.
Open the terminal -> · zoom in until the candles bloom into footprints.