Volume profile methodology
Volume profile shows how much volume traded at each price over a chosen window — a volume-by-price histogram, rotated so price is the vertical axis. How the point of control, value area, and multi-day windows are computed: sources, formulas, limits.
See the live module at /perpetuals/volume-profile.
What it is
Unlike a time chart, a volume profile bins trades by price, not time. That is what reveals where trading concentrated — the prices the market accepted — versus the thin prices it passed through and rejected. The histogram is rotated so price runs up the vertical axis and traded volume extends horizontally at each price level.
Data sources
Every profile is built from the consolidated cross-exchange trade tape — the same tape that powers the rest of the site.
- Intraday & session profiles. Computed client-side, directly from the live trade tape as it streams.
- Multi-day profiles (1D / 7D / 30D). Served by the
/api/volume-profileendpoint, which runs DuckDB over the 30-day Parquet trade tape. Queries are date-pruned, so a request only scans the days it actually needs. - The live tail. The most recent bucket is rebuilt each frame, so the current price stays live instead of freezing at the last completed slice.
Point of control
The Point of Control (POC) is the single price bucket with the most traded volume — the histogram's peak, and the session's fairest, most-accepted price.
A naked POCis a prior session's POC that price has not since traded back to: an untested magnet level that often draws price later.
Value area
The Value Area (VA) is the contiguous price range that holds about 70%of the window's total traded volume. It is grown outward from the POC, adding the heavier adjacent bucket on each step, until 70% is captured. Its bounds are the Value Area High (VAH) and Value Area Low (VAL).
POC = argmax(volume[bucket]) // heaviest price bucket band = [POC] grow band outward, adding the heavier adjacent bucket, until Σ volume(band) ≥ 0.70 × total // ~70% of total volume VAH, VAL = top(band), bottom(band)
The 70% convention is the standard — roughly a one-standard-deviation band of accepted trade around the POC.
Windows & resolution
Bucket size sets the price granularity, and therefore the resolution of the profile. Too fine and the histogram is noisy with no clear peak; too coarse and it smears several levels together and hides the POC.
Windows come in two families: intraday and session profiles computed client-side, and 1D / 7D / 30D profiles served from DuckDB. Every profile is consolidated across venues — not a single venue's own book.
Limitations
- Bucket-size sensitivity. The POC and value-area bounds shift with the chosen bucket size; there is no single correct granularity.
- Consolidated, not single-venue.The profile aggregates every covered venue, so it is not any one venue's own profile — a venue whose flow diverges will not match it.
- Conventions, not signals. The 70% value area and the POC are descriptive conventions, not trade signals.
- Descriptive, not predictive. A profile summarizes where volume has already traded; it does not forecast where price goes next.
Versioning
Methodology version v1.0.0 · updated 2026-07-05. Material changes (new sources, formula tweaks, threshold changes) bump the version and update dateModified in the structured data above.
v1.0.0 (2026-07-05): first published methodology for the volume profile module (POC, value area, multi-day windows).