A volume profile answers a question a normal chart cannot: how many contracts changed hands at each price, not in each minute. Rotating that axis turns a session into a distribution, and the shape of that distribution is the information. Most material stops at naming the Point of Control and the value area. The useful part is why those levels behave as they do, how much of any level is a settings artifact, and how badly a coarse feed corrupts the fine structure the technique depends on.
A volume profile puts price on the vertical axis and traded volume on the horizontal axis, so it shows where trade has already occurred rather than when. The Point of Control is the single price with the most traded volume in the profiled period, and the value area is the price range holding a set share of that volume, conventionally about 70 percent, though platform defaults genuinely differ. High volume nodes are prices the market accepted and tends to stall inside; low volume nodes are prices it rejected and tends to travel through quickly.
What is a volume profile actually plotting?
A standard volume histogram plots volume against time: each bar sits under a minute or a day and says how much traded in that slice. A volume profile rotates the axes so price runs up the vertical axis and volume extends horizontally from each price level. TradingView's documentation describes it as a charting indicator that displays trading activity over a specified time period at specified price levels.
The time axis is thrown away. Two fills six hours apart at 5,600.00 land on the same row; two fills in the same second at 5,600.00 and 5,600.25 land on different rows. What remains is a distribution of transacted size across price.
The lineage matters when reading older material. Market Profile came first, developed by J. Peter Steidlmayer with the Chicago Board of Trade and distributed publicly from the mid-1980s. That original construct counted time at each price, not contracts. Volume profile is the later relative, and the two are not synonyms.
What do the POC and value area really mean?
The Point of Control is the price level with the greatest traded volume in the profiled period. NinjaTrader's Order Flow Volume Profile guide calls it the single largest data point in the profile. It is the mode of the distribution, one row, nothing mystical.
The value area is the contiguous price range containing a specified share of the period's total traded volume, bounded by the Value Area High (VAH) and the Value Area Low (VAL). The conventional share is about 70 percent, borrowed from the fact that roughly 68 percent of a normal distribution falls within one standard deviation of the mean, rounded up in common practice. That is the origin of the convention, not a property of your data. Real session profiles are routinely skewed, bimodal or truncated, and none of those are normal.
Picture one session's fills drawn twice. On the left, a conventional histogram: time across the bottom, one bar per minute. On the right, the identical fills re-binned by price, each row extending horizontally by the contracts traded there. Fills from a single minute scatter across several rows, because that minute covered several prices. Fills from minutes hours apart collapse onto one row, because they shared a price. Nothing is added or discarded: the timestamp is dropped and price becomes the bin. The tallest row is the POC, the band between VAL and VAH is the value area, the bulges are high volume nodes, the pinches are low volume nodes.
Why 70 percent is a convention, not a standard
The value area is not measured, it is walked outward from the POC one row at a time. TradingView documents the procedure: start at the Point of Control, take the next row above and the next row below, compare their volumes, add the larger, then repeat with the next row on the side you just added against the current row on the opposite side, until the accumulated volume reaches the target. CQG's Market Profile Value Areas documentation describes the same expansion, one price at a time in either direction, for its TPO based value area.
Two consequences fall out, and neither is obvious. Because rows are added whole, the finished value area almost always contains more than the target: a 70 percent value area is really an at-least-70-percent value area. And because the walk stops the moment the target is met, a different target stops one row earlier and hands you a different VAH.
Here is an illustrative ES session profile. It is not a real session, but every number derived from it below is exact. Nine price rows, 100,000 contracts: 5,620.00 = 4,000; 5,615.00 = 6,000; 5,610.00 = 9,000; 5,605.00 = 14,000; 5,600.00 = 20,000; 5,595.00 = 16,000; 5,590.00 = 19,000; 5,585.00 = 8,000; 5,580.00 = 4,000. The POC is 5,600.00, the largest single row.
Walk it at a 70 percent target (70,000 contracts). Start at 5,600.00 with 20,000. Compare 5,605.00 (14,000) against 5,595.00 (16,000), add 16,000, total 36,000. Compare 5,605.00 against 5,590.00 (19,000), add 19,000, total 55,000. Compare 5,605.00 against 5,585.00 (8,000), add 14,000, total 69,000, still short. Compare 5,610.00 (9,000) against 5,585.00 (8,000), add 9,000, total 78,000, target met. VAL 5,590.00, VAH 5,610.00, width 20.00 points, 78 percent of volume captured for a 70 percent target.
Run the same walk at 68 percent (68,000 contracts). The first three steps are identical, reaching 69,000, which already clears the target, so it stops one row earlier: VAL 5,590.00, VAH 5,605.00, width 15.00 points. One settings default apart, the VAH moves 5.00 points, which is 20 ticks, or $250 per ES contract at the standard $50 per point multiplier.
| Platform | Documented value area default | VAH that default produces on the profile above |
|---|---|---|
| TradingView volume profile | 70%, described as typical | 5,610.00 |
| CQG Market Profile (TPO based) | 70% of TPOs | 5,610.00 |
| NinjaTrader Order Flow Volume Profile | 68%, documented as a 1 standard deviation range and customizable | 5,605.00 |
The third column applies each documented percentage to the illustrative volume rows. CQG's figure is documented for TPO counts, so it is listed to show the convention, not to claim CQG draws this profile. Neither default is wrong; both are settings. A value area edge is partly an artifact of a checkbox, so a level someone posts in a chatroom is not necessarily the level your platform draws.
Why do high and low volume nodes behave differently?
A high volume node (HVN) is a price band where a large amount of volume transacted; a low volume node (LVN) is a band where little did. TradingView's documentation calls HVNs peaks in volume at specific price levels and LVNs the valleys where volume dropped significantly. The trading interpretation attached to those peaks and valleys appears in no vendor's documentation. It comes from the mechanism.
And the mechanism is why the rest of the technique works at all. An HVN is a price where many participants hold position, so price arriving there meets two-sided flow: people scaling out, adding, defending an average. It stalls and rotates. An LVN is a price where almost nobody has position, so price arriving there meets nothing that slows it and traverses fast.
On the illustrative profile, the 5,590.00 to 5,600.00 band holds 19,000 + 16,000 + 20,000 = 55,000 contracts, which is 55 percent of the entire session inside a 10.00 point range ($500 of price travel per ES contract). That is the HVN. Below it, 5,585.00 holds 8,000 (40 percent of the POC row) and 5,580.00 holds 4,000 (20 percent of it). Those thin rows are the LVN under value. Volume outside the 70 percent value area totals 100,000 - 78,000 = 22,000 contracts, split into a 10,000 upper tail and a 12,000 lower tail.
Most traders have the practical inversion backwards. An HVN is a poor place for a stop, because the stop sits inside the churn. An LVN is a good thing to put a stop beyond, because price reaching and holding past a low volume node means the fast-traversal expectation failed, which is information rather than noise.
A stop placed inside a high volume node sits in the most contested price band of the session, where rotation is the norm. If the profile told you the market spends its time there, do not park your risk there.
What does the shape of the profile tell you?
Shape tells you what kind of period you just traded through, and it is the fastest read available. A balanced bell or D shape with a central POC is a two-sided auction rotating around agreed value, and mean reversion from the value area edges fits it. A thin elongated profile with no fat area means price moved directionally and accepted nothing on the way: one-time framing, where fading extremes is the losing trade all day. A P shape, thin lower tail with a fat top and the POC near the high, is an upward drive that then accepted a new higher area; a b shape is the mirror. A double distribution, two fat areas separated by a thin waist, means the market found two areas of acceptance in one period, and the waist is the LVN dividing them.
Shape is also what separates the profile from VWAP, and the difference is exact. The POC is the mode of the session's volume distribution; VWAP is its volume-weighted mean. On the illustrative profile the sum of price times volume is 559,860,000, so VWAP is 559,860,000 / 100,000 = 5,598.60 while the POC sits at 5,600.00. The 1.40 point gap ($70 per ES contract) exists because the heavy 19,000 shelf at 5,590.00 drags the mean down while the tallest row stays at 5,600.00. That gap is a skew reading, invisible if you only watch the VWAP line.
VWAP loses the shape, the profile loses the sequence, and neither one is a superset of the other.
How good does your volume data have to be?
Better than most traders assume, and the failure mode is silent. Sierra Chart's Volume by Price documentation states you need intraday data records of 1 tick or 1 second for good accuracy, and documents what happens without them: the volume for a price level inside a record's range becomes the average volume per price, calculated by dividing the record's total volume by the number of prices in its range. In plain terms, the bar's volume is spread evenly across every price it touched. NinjaTrader documents the same dependency, calling tick the most accurate and most resource intensive way to generate a profile.
Work one bar. A 1-minute ES bar touches 8 distinct prices, a 1.75 point range at the 0.25 tick, and 4,000 contracts trade in that minute. With tick data, the true distribution might be 3,300 contracts at a single price and 100 at each of the other seven: 3,300 + (7 x 100) = 4,000. That 3,300 row is a genuine spike. Without tick data, the platform writes 4,000 / 8 = 500 contracts onto every one of the eight rows.
The spike is understated by 3,300 - 500 = 2,800 contracts, and each of the other seven rows is overstated by 500 - 100 = 400, which is 7 x 400 = 2,800 in total. The errors net to zero, so the bar's total volume is still exactly right and every sanity check passes while the shape has been destroyed. Worse, all eight rows now tie at 500, so the POC falls to the platform's tiebreak rule. CQG documents its rule for Market Profile: when several prices share the maximum count, the price closest to the middle of the price range becomes the POC. Tiebreak rules are platform specific, so check yours. Either way, an arithmetic convention is standing in for a market fact.
Two related cautions. A feed that publishes periodic snapshots rather than every print delivers aggregated fills, so several executions at several prices arrive collapsed into one, correct in aggregate and wrong in exactly the fine structure the technique reads. Confirm what your feed delivers. And TradingView documents that its profiles use trade volume for stocks but tick volume for indices, forex and crypto CFDs, where tick volume counts price updates rather than contracts, so a CFD profile pictures quote activity and will not match the futures profile. TradingView warns separately that on Renko, Heikin Ashi, Kagi, Point and Figure and Range charts the data does not represent actual prices and the volume is distorted too.
How does it differ from VWAP, TPO and the DOM?
They get used interchangeably and measure different things.
| Tool | What it measures | Horizontal axis | Time order kept | Primary use |
|---|---|---|---|---|
| Volume profile | Contracts traded at each price | Volume | No | Where value formed in a chosen window |
| TPO / Market Profile | Time spent at each price | Letter count per bracket | Partly (letters encode brackets) | How the auction developed through the day |
| VWAP | Volume-weighted average price | Time | Yes, it is path dependent | One reference number per moment |
| DOM / order flow | Resting liquidity and live executions | Time (tape) or size (ladder) | Yes, live | What is happening at this price right now |
TPO and volume profile are the pair most often confused. Sierra Chart's TPO Profile Chart study carries a separate volume value area percentage input alongside its TPO settings, because the two are computed from different counts, so the same session can produce a different POC depending on which you draw. Say which one you mean.
The DOM and the tape sit at the opposite end of the time axis: resting liquidity and executions as they happen, at one price, this second. A profile is an accumulated record of completed trades across a window you chose. Order flow tells you what is happening now, the profile what has already happened. Complements, not substitutes.
Which profile period should you use?
Match the period to the question, because the levels are not interchangeable. A session profile answers where today's auction found value; a multi-day composite answers where the market has been accepting value recently. A composite POC is a slow, heavy level built from many days of participation, while a session POC is fast and disposable, so reading a 20-day composite POC with the reactivity you expect from today's POC is a timeframe mismatch dressed up as a level.
Session boundaries change the answer too. On ES, a regular-hours profile and a full 24-hour profile of the same calendar day produce a different POC and different value area edges, because the overnight session adds volume at prices the day session never traded. There is no correct choice, only a consistent one. Confirm current session hours with CME Group or your broker rather than trusting a platform's default label.
Long composites carry one more trap. On a back-adjusted series stitched across quarterly rolls, the adjustment shifts historical prices by the roll spread, so volume lands at levels never actually traded. Build composites on the front month, or accept the gap at the roll.
The developing value area also recalculates as the session builds, so today's VAH at 11:00 is not today's VAH at 16:00. Yesterday's completed value area is fixed, which is why it is the more common reference.
What do the levels cost in dollars?
Use the illustrative profile: VAL 5,590.00, POC 5,600.00, VAH 5,610.00 at the 70 percent setting. ES is $50 per index point with a 0.25 tick worth $12.50; MES is $5 per point with a tick worth $1.25, so ten MES equal one ES in notional. These are stable constants, but verify current contract specifications with CME Group or your broker.
Fading the value area high. Short 1 ES at 5,610.00, stop 5,616.00. Risk is 6.00 points, 24 ticks, $300. Target the POC at 5,600.00 for 10.00 points, $500, which is 1.67R. Run the identical rule on a platform defaulting to 68 percent and the VAH is 5,605.00: same $300 risk, but the POC target is 5.00 points away, $250, which is 0.83R. Same session, same rule, same risk, and the trade crosses from 1.67R to 0.83R because of a settings default.
Initiating at the POC instead. The POC at 5,600.00 sits inside the 5,590.00 to 5,600.00 band holding 55 percent of the session's volume. A 6.00 point stop from there lands at 5,594.00, still inside that band, parked in the most contested part of the distribution. The same 6.00 point stop from the VAH lands at 5,616.00, above the value area and inside the thin upper tail, where the only two rows above VAH hold 10,000 contracts between them, 10 percent of the session. Identical $300 risk, structurally opposite quality. The value area edge is a cleaner place to initiate than the famous level in the middle.
Long the value area low, honestly. Long 1 ES at 5,590.00 with the stop beyond the low volume node rather than inside it, under the 4,000 contract row at 5,580.00, say 5,579.00. Risk is 11.00 points, 44 ticks, $550. Targeting the POC gives 10.00 points, $500, which is 0.91R, below 1R. Targeting the VAH gives 20.00 points, $1,000, which is 1.82R. The structurally correct stop makes the POC-target version a sub-1R proposition: extend the target, size down, or skip it. What you do not do is pull the stop into the low volume node to make the arithmetic look better.
That collision with a risk budget is the normal case on a funded account, and the fix is size, not stop placement. Under an illustrative $500 per-trade cap, 1 ES at $550 does not fit. In MES, risk per contract is 11.00 x $5 = $55, so 9 MES is $495 and fits while 10 MES is $550 and does not. Nine MES is 90 percent of one ES of exposure with the correct stop intact. Firm limits vary, so check yours.
One copier-specific consequence. A leader and a follower on different brokers and feeds compute different VAH, VAL and POC for the same session, because the underlying volume records differ, so a follower verifying the level will legitimately disagree with the leader's chart. Copying the order rather than the level removes that disagreement.
Where does volume profile stop being useful?
A volume profile is descriptive, not predictive. The POC is the mode of a past distribution, not a magnet exerting force on price, and treating "price must return to the POC" as a signal is the overreach that turns a good contextual tool into a bad signal generator. There is no reliable published statistic for how often price revisits the POC, so treat any figure quoted at you as marketing until someone shows the sample.
Three concrete limits. Early in a session the profile is too thin to read, so the tool is least useful exactly when traders most want a level; prior-session levels and an opening range framework are the better inputs at the open. On a strong one-time-framing trend day, mean reversion to the POC is the wrong trade and fails repeatedly, and the thin elongated shape that warns you only exists once enough of the session has formed. On CFD instruments the volume input may be tick counts rather than contracts, which weakens the construct however carefully you read it.
The copier limit belongs in the same list. A copier does not improve a strategy whose stops sit structurally in the wrong place. If a profile-based strategy loses because stops are parked inside high volume nodes, replicating it across five accounts multiplies that loss by five with perfect fidelity. Fix the level placement first. Scale second.
Frequently asked questions
What is the Point of Control (POC) in a volume profile?
The POC is the price level that traded the most contracts during the profiled period, which makes it the mode of that period's volume distribution. NinjaTrader's documentation describes it as the single largest data point in the profile. It marks where the market did most of its business, not a level price is obliged to return to.
Is the value area always 70 percent of volume?
No, about 70 percent is a convention and platform defaults actually disagree. TradingView documents 70 percent as typical for volume profile and CQG documents 70 percent for its TPO based Market Profile value area, while NinjaTrader's Order Flow Volume Profile documents 68 percent as a 1 standard deviation range, and both are customizable. The same session opened in two platforms can therefore produce different value area highs and lows out of the box, so check your setting before trusting a level someone else posted.
Why does a 70 percent value area often contain more than 70 percent of volume?
Because the value area is built by adding whole price rows until the target is reached, so the final row usually pushes the total past the target. On the illustrative nine-row profile in this article, a 70,000 contract target lands on 78,000 contracts captured, which is 78 percent. A 70 percent value area is more accurately an at-least-70-percent value area.
What is the difference between a volume profile and VWAP?
VWAP compresses a session into one volume-weighted mean price per moment and depends on the order in which volume arrived, while a volume profile discards time ordering and keeps the full distribution across price. The POC is the mode of that distribution, VWAP is its mean, and on a skewed profile they separate. Neither contains the other, so they answer different questions.
Is Market Profile the same thing as volume profile?
No, a TPO or Market Profile counts time at each price while a volume profile counts contracts at each price. Sierra Chart's TPO Profile Chart study carries a separate volume value area percentage input alongside its TPO settings, precisely because the two are computed from different underlying counts, so the same session can produce a different POC in each. Market Profile came first, developed by J. Peter Steidlmayer with the Chicago Board of Trade and distributed publicly from the mid-1980s.
Where should a stop go relative to a high or low volume node?
Place stops beyond a low volume node, never inside a high volume node. An HVN is where many participants hold position and price rotates, so a stop sitting there gets hit by ordinary churn. An LVN is where almost nobody has position, so price reaching and holding past it means the expected fast traversal failed, which is real information.
Does price always come back to the POC?
No, and treating the POC as a magnet is the most common misuse of the tool. A profile is a record of trade that has already happened, not a forecast, and there is no reliable published statistic giving the odds of a POC revisit. On a strong trend day the mean-reversion-to-POC trade fails repeatedly and expensively.
Do you need tick data for an accurate volume profile?
Yes for accurate fine structure. Sierra Chart's documentation states you need 1 tick or 1 second data records for good accuracy, and documents that with coarser records each price level inside a record's range gets the average volume per price, found by dividing the record's total volume by the number of prices in its range. That produces a flat shelf where the real distribution had a spike, and the total volume still checks out, so the error is invisible unless you know to look for it.
Can you use volume profile on forex or CFD instruments?
You can draw one, but it is structurally weaker than on futures. TradingView documents that its profiles use trade volume for stocks and tick volume for indices, forex and crypto CFDs, and that tick volume counts the number of price updates rather than contracts traded. A CFD profile is therefore a picture of quote activity, and it will not match the profile of the equivalent futures contract.
Should you use a session profile or a multi-day composite?
Use the one that matches the question you are asking, and do not mix their levels. A session profile shows where today's auction found value, a multi-day composite shows where value has been accepted recently, and a whole-contract profile covers the contract's life. A composite POC is a slow, heavy reference while a session POC is fast and disposable, so expecting the same reactivity from both is a timeframe error.