Overview
Learn here is the foundation for FlowMapTrader.com — how to read bubbles, heat, COB / CVP / SVP, volume bars, BBO, VWAP, and the CVD strip on Binance Futures BTCUSDT. FlowMapTrader.com does not place orders. Open FlowMapTrader.com; use Desk only when you need signal cards or history.
- Executed flow — bubbles / tape / CVD from aggTrade (what already filled)
- Resting liquidity — heat, COB, BBO, Spread / OBI from the order book (what can be pulled)
- Where size traded — CVP / SVP / POC and volume bars in the visible window
- Absorption — hold at a level, then wait for reaction (Continuation / Fade / Chop)
- Forced flow — liquidations (context only; not a FlowMapTrader.com layer)
Rule of thumb: bubbles + CVD = aggression that filled; heat + COB = resting book. Absorption only matters after the reaction. Desk OI / Funding are secondary context — this page stays on what you see on FlowMapTrader.com.
FlowMapTrader.com
Open / for a live orderflow map: time on the X-axis, price on the Y-axis, and executed trades as bubbles. Side rails show resting book (COB) and session volume-by-price (CVP). A CVD strip runs under the chart. Same Binance Futures BTCUSDT aggTrade + depth feeds as the dashboard — spatial view, not a separate signal engine.
Read left → right for time, bottom → top for price. Bubbles = what already filled. COB = what is resting now. Heat = where liquidity sat recently. CVD strip = running net taker buy − sell in the view.
Bubbles
Each bubble is an aggressive print from aggTrade:
- X — fill time · Y — fill price
- Size — quantity (larger print → larger bubble)
- Color — green = taker buy (lift ask) · red = taker sell (hit bid)
Hover a bubble for a tooltip: side / qty @ price / time. Prints at or above the large threshold (default LARGE_TRADE_MIN_QTY, currently 5 BTC) get an amber halo and show LARGE BUY / LARGE SELL in the tooltip when the Large toggle is on.
Dense clusters at one price = repeated aggression into that level (absorption / hold candidates). A trail of bubbles climbing or falling with the price line = directional flow.
How to read the chart
| Layer | What it shows | How to use |
|---|---|---|
| Price line | Last trade path through visible bubbles | Context for where prints sit relative to the move |
| Heat | Recent resting liquidity by time × price bucket | Bright bands = size that sat on the book; toggle Contrast to emphasize thick spots |
| PRICE | Dense price ladder (aligned to heat/book buckets) | Current last price highlighted; zoom/pan with the chart |
| COB | Current order book size by price (bids green / asks red) | Resting walls vs aggressive bubbles — same idea as desk OBI, but visual by level |
| CVP + POC | Volume profile for the visible time window (buy/sell stacked); amber POC = highest-volume price in view | Where the session traded most in this window — not the full day unless you zoom out |
| CVD strip | Running cumulative delta for visible prints; value box on the right = latest CVD in view | Rising green segments = net buying; falling red = net selling. Compare to bubble color and price direction (surge vs divergence) |
Controls
- Wheel — zoom time · Shift / Alt + wheel (or wheel over PRICE / COB) — zoom price
- Left-drag — pan time + price (drag the chart)
- Follow live — stick to the right edge · Reset view — clear manual time/price window
- Min qty — hide small bubbles · Heat / CVP / Large — toggle layers
With the dashboard
- Bubbles + CVD strip ↔ desk CVD / Tape (executed flow)
- COB / heat ↔ OBI · book depth (resting intent)
- Large bubbles ↔ Latest Signal Large lane (same size floor)
FlowMapTrader.com does not place trades and does not replace Absorption classification. Use it to see where size hit and where the book was thick — then confirm Cont / Fade on Desk if needed.
Liquidation
A forceOrder event — the exchange forcibly closes under-margined positions. The UI shows the latest liquidation, not a window total.
- SELL @ price
- Usually a long liquidation (exchange sells).
- BUY @ price
- Usually a short liquidation (exchange buys).
BTCUSDT can stay quiet for a long time — — is normal. Small size (e.g. 0.6 BTC) matters less than clustered liquidations.
In FlowMapTrader.com: Squeeze rules need a recent liquidation plus a sharp price move and falling OI.
CVD — Cumulative Volume Delta
CVD measures who was the taker inside a time window:
CVD = buy_volume − sell_volume
- Trade is not buyer-maker → taker buy (lifting the ask)
- Trade is buyer-maker → taker sell (hitting the bid)
On the UI: CVD (30s) / CVD (60s) with B … / S … = buy / sell volume in the window (BTC units). API fields are cvd_30s / cvd_60s (not “short/long”, to avoid confusion with trade direction).
| CVD | Rough meaning |
|---|---|
| Large positive | Net taker buying — executed buy pressure |
| Large negative | Net taker selling |
| ~0 | Balanced / noise |
How FlowMapTrader.com uses it
- CVD_SURGE — CVD and price move the same way, above abs and % price floors (filters noise).
- CVD_DIVERGENCE — price and CVD disagree (e.g. price down, CVD still positive → bullish divergence).
- Strategy confirm — Pressure/Squeeze only pass when CVD (± OBI) agrees with direction.
- Absorption classifier — CVD follow vs exhaust helps decide Continuation vs Fade after a hold.
Large CVD alone is not a trade. Always check price direction, OBI / COB walls, tape rhythm, and cooldown. CVD+ with tape weak is not a clean Cont — see Tape vs CVD. On BTCUSDT, CVD +9 is often noise; +85 in 30s is worth a look.
Buyer / seller rising or fading
Separate from net CVD and total-vol strength: compare each side’s 30s aggressive volume to ~CVD_SIDE_TREND_LOOKBACK_SEC ago (default 30s). If current ≥ lookback × CVD_SIDE_TREND_MULT (1.15) → rising; if ≤ lookback ÷ 1.15 → fading. UI shows e.g. buyer rising · seller fading only when the change is clear.
Spread · OBI
Derived from partial order-book depth — resting liquidity, not executed trades.
Spread
spread = best_ask − best_bid
The UI also shows bps = (spread / mid) × 10000. Tight spread → healthy liquidity. A sudden widen → thin or stressed book.
OBI — Order Book Imbalance
OBI = (bid_vol − ask_vol) / (bid_vol + ask_vol)
Computed on the full Book Depth ladder (same rungs as the card, after price-bucket aggregation). Range roughly [−1, +1]. The UI shows the classic signed value first, then appends lean as ~2× bid / ~3× ask (heavy ÷ light; OBI +0.33 ≈ 2×):
- OBI → +1 — bids dominate (supports upside / absorbs sells)
- OBI → −1 — asks dominate (sell wall / downside pressure)
- ~0 — balanced
OBI is intent on the book and can be pulled. CVD is already executed. Positive CVD with deeply negative OBI often means buy flow hitting a sell wall — common after a surge before a pullback.
Tape · Levels · Prints
FlowMapTrader.com builds a lightweight footprint from the same aggTrade stream used for CVD. These feed the Absorption panel.
Order book — waiting
- Bids / asks sitting on the book
- Not filled yet — can be cancelled (spoof)
- Source of Spread / OBI
Tape — already filled
- Each chip = 1 print = 1 fill
- Already happened — cannot undo
- Source of Tape / CVD / Levels
One print — illustrated
Tape is the time-ordered list of those fills (aggTrade). One market order that filled = one print:
Green = taker buy (filled). Red = taker sell (filled). Amber = pause — no fill.
Strong tape — prints keep landing (no pause):
Weak tape — a gap > 500ms between fills:
Strong sequence written out (all the same second — no pause):
| Time | Price | Fill | Read |
|---|---|---|---|
| 16:28:01 | 78872.9 | buy 0.12 | Market buy (lift ask) — filled |
| 16:28:01 | 78872.8 | sell 0.05 | Market sell (hit bid) — filled |
| 16:28:01 | 78873.0 | buy 0.40 | Next print, same second — filled |
That filled sequence is the tape. A 2s gap between prints would be a pause → weak tape, not this example.
Print metrics
In FlowMapTrader.com, each Binance aggTrade = 1 print. Classifier metrics on the last ~30s:
- Print rate — prints per second inside the tape window (~30s). Steady rate → market still aggressive.
- Pause — gap between prints longer than the pause threshold (default 500ms). Many pauses → market hesitating / weakening.
-
Volume decay (decay) — volume in the
recent half of the tape window ÷ volume in the
prior half.
- > 1 — volume accelerating
- ≈ 1 — steady
- < 1 (e.g. < 0.7) — aggression fading (weak tape → Fade more valid after absorption)
Tape weak vs tape strong
After absorption, the classifier asks whether aggression is still printing, or has paused / faded. Weak does not mean “nobody bought” — it means they are not hitting steadily right now.
| Flag | True when |
|---|---|
| tape_weak | Any of: decay < ABSORPTION_TAPE_DECAY_WEAK (default 0.7); pause_count ≥ 1 (gap > TAPE_PAUSE_MS, default 500ms); or print_count == 0 |
| tape_strong | All of: decay ≥ ABSORPTION_TAPE_DECAY_STRONG (default 1.0); no pause; at least one print |
Tape vs CVD
Same fills, two questions. CVD asks who won on net size. Tape asks whether they are still firing.
| CVD (30s / 60s) | Tape (~30s) | |
|---|---|---|
| Measures | Buy volume − sell volume | Print rate, pauses, volume decay |
| Question | Who was heavier? | Are they still hitting, or resting? |
| Can disagree | CVD still + from earlier buying | Last 30s already thin / paused |
CVD+ and tape weak can happen together: the 60s window still shows net buying, but prints have thinned. Like a team that just attacked and is catching its breath — the scoreboard still leans their way; the next push is not confirmed. Cont playbook wants both.
Dirty Cont — cont_clean
Continuation can still fire when score cont ≥ 2 from CVD follow + price hold, even if tape is weak (tape does not get the Cont point). Execution then fails gate cont_clean — signal reason contains tape weak / tape_weak=true. Paper/live does not enter. Fade’s “not fully clean” CVD note does not dirty Cont.
Tape (UI row)
Summary of aggression over the tape window: print rate, pause count, buy aggression %, volume decay. Playbook mapping:
| Tape read | Meaning |
|---|---|
| Steady prints, few pauses | Market still in control (continuation bias after hold) |
| Prints thin out / pauses | Market weakening (fade becomes more valid) |
| On / off aggression | Chop — no clear winner |
Levels (footprint-lite)
Trades are bucketed into price ticks (default 0.1 for BTCUSDT). Each level tracks buy volume, sell volume, delta ((buy − sell), and print count.
The UI shows top levels by |delta| — hot zones where market aggression clustered.
Example: level 64000.0 with prints=3 and large positive delta means three fills around that price were mostly taker buys.
Absorption
Absorption = limit orders absorb market orders so price is held at a level. It does not mean reversal by itself.
Central question: after absorption, does the market still have force? Answer with Tape + Volume + CVD + Price reaction — not with the absorption event alone.
Two sides
- BUY absorption
- Large taker buy delta at a level, but price does not break meaningfully above → limit sellers are holding (resistance-style hold).
- SELL absorption
- Large taker sell delta at a level, but price does not break meaningfully below → limit buyers are holding (support-style hold).
How FlowMapTrader.com detects it
Detection is tape footprint-lite only — filled aggTrade buckets, not the resting order book. Idea: at one price level, takers hit hard (large signed delta) but price does not break through → treat as absorbed (limit side temporarily winning).
- Bucket trades into price ticks (~ LEVEL_WINDOW_SEC=30s, tick = PRICE_TICK_SIZE default 0.1).
- Each bucket: buy/sell volume, delta = buy − sell, print count. Keep top levels by |delta|.
- Require enough aggression: |delta| ≥ ABSORPTION_MIN_ABS_DELTA (default 15) and prints ≥ ABSORPTION_MIN_PRINTS (default 3).
- Last price still near the level (≤ ABSORPTION_NEAR_TICKS, default 5 ticks).
- BUY absorption (delta > 0): market buys dominate, but price does not push more than ABSORPTION_MAX_BREAK_TICKS (default 2) above the level.
- SELL absorption (delta < 0): market sells dominate, but price does not break more than that buffer below the level.
- Among valid levels, pick the strongest |delta|. Publish AbsorptionDetectedEvent with status waiting_reaction — do not trade yet. Edge + cooldown reduce spam when metrics flicker around thresholds.
Detection alone does not send Telegram. Only Continuation / Fade after classification may alert (and Telegram can further filter by BB near/outside bands).
After absorption — three outcomes
| Outcome | Read | FlowMapTrader.com signal |
|---|---|---|
| Continuation | Reloading — tape still strong, CVD follows aggression, price does not reject hard. Market still wins. | ABSORPTION_CONTINUATION_LONG / _SHORT |
| Fade | Limit wins — tape weakens / pauses, price rejects away from the level (bounce or dump). Valid fade only here. | ABSORPTION_FADE_LONG / _SHORT |
| Chop | Mixed tape / CVD / price — no edge. UI only, no Telegram. | — |
Mapping examples:
- SELL absorption then bounce + weak tape → ABSORPTION_FADE_LONG
- BUY absorption then dump + weak tape → ABSORPTION_FADE_SHORT
- Same-side aggression continues after the hold → Continuation in that direction.
How Cont / Fade is scored
After detect, the classifier watches a short window (tape, CVD, price move) and scores two sides (max 3 each):
| Cont (+1 each) | Fade (+1 each) |
|---|---|
| Tape strong | Tape weak / pause |
| CVD still follows the absorption aggressors | CVD exhausts / flips against them |
| Price holds (no hard reject) | Price rejects away from the level |
Winner needs score ≥ 2 and strictly greater than the other side — e.g. cont 2 > fade 1 → Continuation. Cont can win on CVD + price hold while tape is still weak — that is a dirty Cont. Telegram / EXEC checklist then fail cont_clean (detail tape weak); paper/live does not fill. See Tape · Levels · Prints.
How trustworthy is detection?
Treat absorption as a desk hint, not a standalone entry. Prefer setups with clear hold + strong delta/prints, Cont/Fade that is clean, and supportive context (BB near/outside, CVD aligned). Be skeptical in quiet markets (fixed thresholds can false-trigger), mid-band locations, thin tape, spoofy books, or when the tip says “not clean”.
Telegram alerts use a short decision-brief layout (setup → BB/EMA/CVD → meaning/tip). Dashboard History still stores fuller reason text.
Orderflow glossary
- Market order
- Fills immediately at the best available price — attacks price.
- Limit order
- Rests on the book — holds / blocks price until filled or pulled.
- Market buyer / seller
- Taker who lifts the ask / hits the bid — creates a print.
- Limit buyer / seller
- Passive resting on the bid / ask — absorbs market sells / buys.
- Tape
- Time-ordered list of executed prints (aggTrades) — not candles, not the order book. Shows the rhythm of aggression.
- Tape window
- Short lookback for tape metrics (default ~30s). Not a book depth window.
- Tape weak
- Prints thinning, a pause (> 500ms), or no prints in the tape window. Aggression is resting — not “CVD is wrong”.
- Tape strong
- Volume at least holding (decay ≥ 1), no pause, still printing — reload / continuation-quality tape.
- cont_clean
- Execution gate for Continuation: fail if reason has tape weak. Dirty Cont (CVD+ / price hold, weak tape) is desk-only.
- One filled trade on the tape (one aggTrade in FlowMapTrader.com).
- Pause
- Clear gap on the tape — market hesitation / weakness.
- Decay (volume decay)
- Recent-half volume ÷ prior-half volume in the tape window. < 1 = fading aggression.
- Order book
- Resting bids/asks (depth). Source of Spread / OBI — can be spoofed or pulled. Opposite of tape fills.
- Delta
- Buy volume − sell volume at a price level or in a window.
- CVD
- Cumulative volume delta — which taker side pressed harder.
- Absorption
- Limits absorb market aggression; price is held — not auto-reversal.
- Reloading
- Limits hold temporarily so market can continue (continuation).
- Exhaustion
- Market aggression fades on its own (volume/prints die out).
- Fade
- Trade against the absorbed market side after a clear price reject.
- Continuation
- Price resumes after the pause/hold — market never truly lost.
FlowMapTrader.com signals — reading types
| Type | Idea | Needs |
|---|---|---|
| BULLISH_PRESSURE | Long accumulation | Price↑ + OI↑ + funding≤0 + CVD confirm |
| BEARISH_PRESSURE | Short accumulation | Price↓ + OI↑ + funding≥0 + CVD confirm |
| LONG_SQUEEZE | Longs forced out | Sharp price↓ + OI↓ + SELL liq |
| SHORT_SQUEEZE | Shorts forced out | Sharp price↑ + OI↓ + BUY liq |
| CVD_SURGE | Flow + price aligned | |CVD| large + |Δprice| ≥ min |
| CVD_DIVERGENCE | Flow ≠ price direction | |CVD| + |Δprice| enough, opposite signs |
| ABSORPTION_CONTINUATION_* | Hold then market still wins | Absorption + strong tape/CVD + no hard reject |
| ABSORPTION_FADE_* | Hold then limit wins | Absorption + weak tape and/or price reject |
Confidence scales with how far past the gate you are (~0.5 just clears → 1.0 near ~3× strength). Edge trigger, cooldown, and clear-hold cut spam when metrics flicker around thresholds. Absorption detection alone never pages Telegram — only classified Continuation / Fade do.
How to read live (checklist)
- Feed connected? Depth events → Spread/OBI show numbers. Liquidation may still be —.
- CVD 30s vs 60s — same sign = sustained flow; sharp mismatch = the short window is turning.
- Tape / Levels — executed flow only (~30s window): print rate, pauses, decay — not the order book. Check which price buckets hold large |delta|. CVD+ with tape weak = dirty Cont; wait for cont_clean.
- FlowMapTrader.com — where did size hit on the time×price plane? Clusters vs COB walls; CVD strip vs price direction; Large bubbles vs desk Large lane.
- Absorption card — waiting reaction means watch; wait for Continuation / Fade / Chop before acting.
- OBI — book intent; same sign as CVD = agreement; opposite = conflict (be careful).
- Signal History — read as a sequence (surge then divergence, or absorption then fade), not isolated alerts. Use pager when the list is long.
- Context / Detail — Context is the human read; Detail is raw metrics. Prefer Context first, then verify Detail.
Limits — do not over-read
- Not buy/sell advice; no order execution.
- BTCUSDT futures only; short windows (30–60s for tape/CVD, ~30s for levels).
- Footprint-lite levels are not a full liquidity heatmap — no sticky-limit reload visualization. FlowMapTrader.com heat/COB is a lighter resting-book view of recent liquidity.
- OBI / depth can be spoofed; CVD depends on exchange taker classification.
- Absorption ≠ reversal. Detect uses tape buckets only (no true resting-limit view). Fade only after reaction; Chop means no trade. Fixed delta/print thresholds are heuristics — quieter or hotter regimes change reliability.
- Liquidation on the UI is last event, not a heatmap.
- AI Analysis is off by default — narrative is separate from rules.
Back to the Desk to match live numbers with the sections above, or open FlowMapTrader.com for the spatial view.