← Back to Blog
2026-10-24 Strategy

Volume Spread Analysis in a Trading Journal: How to Find Out Which VSA Signals Pay You

Our eight-part Volume Spread Analysis series teaches you to read a bar: no supply, the test, the spring, the upthrust, the climax. A chart can teach you to recognize those bars. It cannot tell you which of them you actually make money on. That takes a record of every VSA trade you take, written down at the time, with the bar's numbers in it. This is the companion to the series: what to record, one trade logged from the quiet bar to the exit, and what a simulated journal of 49 rule-generated VSA trades showed. Every screenshot comes from a demo account; nothing here was traded by a person.

The Series: Eight Episodes, One Idea Each

Every episode teaches one VSA idea step by step, then on a dated chart built from real daily bars, with a volume panel colored by each bar's multiple of its 20-session median. They are free on YouTube, in order, in the Volume Spread Analysis playlist.

EpisodeThe idea
1. No Supply vs No DemandA narrow, light bar can be bullish or bearish. The bars before it decide which, and a confirming bar decides whether it is a trade.
2. Effort vs ResultVolume is the effort; spread and close are the result. When they disagree, someone is usually absorbing.
3. Stopping VolumeHeavy volume on down bars in a downtrend, closing off the low: a warning that the selling is being bought, not a buy signal on its own.
4. The TestA lower low back toward an earlier heavy-volume low, on lighter volume, closing in its upper half. Then wait for demand.
5. Springs and ShakeoutsInside a range, a break below support that closes back above it. A low-volume spring is the stronger form; a high-volume one needs a test.
6. The UpthrustThe mirror image: pushes up, usually to a new high, and closes on or near its low. Later rallies fail below its high.
7. The Buying ClimaxUltra-high volume and wide spreads at a new high after a long run, often over several bars.
8. Reading the Whole StoryThe signals in sequence: read the background first, then the bar, then wait for confirmation.

Why VSA Needs a Journal More Than Most Methods

A moving-average crossover is the same trade every time. A VSA signal is not. Episode 1 opens with two quiet bars that look alike and lead to opposite moves, because VSA is read in context: a narrow, light bar is no supply after a selling climax and no demand after a rally. The judgment is the method.

That makes VSA hard to evaluate from memory, for three reasons:

What to Record on Every VSA Trade

None of this is on a broker statement. It has to be written down as it happens, while you still know why you are watching the trade.

FieldWhat to writeWhere it goes in SignalDeck
The signalNo supply, test, spring, upthrust. One name per setup, used the same way every time.Strategy (one per setup)
The signal barVolume as a multiple of the 20-day median and against each of the two prior bars; spread against the average; close location; up or down on the prior close.A dated trade note
The backgroundThe last climax, where the bar sits in its range, whether a test came. Whatever you actually judge it by.Signals
The invalidation lineThe close that proves the setup wrong. Not a round number.Original stop, and R from it
The confirmationThe confirming bar and its date, and the price you could have had without waiting for it.A later note on the same trade
The chartThe picture you were looking at, with the bars marked.Entry and exit screenshots
The exitTarget, invalidation or time stop, and the R you actually realized, not just the R you planned.A tag, and the trade's realized R

The split between signals and tags is deliberate. Signals hold what you knew at entry, so trades can be compared fairly. Tags hold what happened afterward. Mixing the two lets hindsight into the comparison: trades that ran in your direction will tend to look better, because those are the ones that got their confirming bar.

The definition itself belongs in an entry checklist, so the shape check happens before the order, not after. Hold your own trades to the standard the series' chart examples were held to: if a clause of the definition fails, it is a different trade, not the same trade with a softer description.

SignalDeck new trade form, checklist section with four unchecked items: Background read: the last climax, and where the bar sits in its range; Signal bar fits every clause: open, wick, close, volume; Confirming bar: wide, above-average volume, closes in my direction; Stop is the invalidation line (a close beyond it), not a round number. A yellow warning reads: You are unable to submit your trade until these following checklist items are checked off.
A VSA entry checklist set as a hard gate: the trade cannot be logged until every item is ticked.

One Trade, Logged End to End: AAPL No Supply

This trade, like every screenshot in this article, is from a demo account. Its trades were generated mechanically by rules (described in the next section), entered after the fact, and given notes dated to the sessions they describe. In your own journal, each note is stamped when you write it. Every price and volume figure below is from Polygon daily bars. AAPL is one of only two no-supply trades the rules produced, and it was chosen because it shows every stage.

AAPL daily chart, July 17 to September 1, 2026, with a volume panel. July 31 is marked selling climax 2.7x with a gold volume bar; August 20 is marked bounce top: supply; August 25 is marked no supply 0.56x; September 1 is highlighted as demand 1.3x. A red dashed line at 300.00 reads invalid on a close below 300.00.
The entry screenshot attached to the trade, drawn in the same style as the series: volume colored gold at 2× median or more, gray for normal, dim below 0.8×.

Demand arrived on September 1: a wide up bar (2.07× the average spread) on 1.31× volume, closing at 83% of its range and above the $320.28 bounce high. The trade was entered at the next open, $326.87, with the idea wrong on a close below $300.00. That is $26.87 of risk, so 2R was $380.61. Price rose as high as $345.34 but never reached it, and the time stop (15 sessions after the confirming bar) closed the trade on September 23 at $337.02: +0.38R.

Here is the question the journal exists to answer. Buying the quiet bar at the August 26 open of $310.30, against the method, would have cost $16.57 a share less, and its own 2R target of $330.90 was reached on September 11. On this one trade, waiting cost most of the result. One trade cannot say whether that is the rule or the exception. A record of the confirmed price and the unconfirmed price on every no-supply trade can.

SignalDeck trade details for AAPL, strategy VSA No Supply, four checked checklist items and a Time Exit tag. The Trade Journal tab shows five dated notes: the watch note on Aug 25, the unconfirmed up day on Aug 26, the demand bar on Sep 1, the fill at 326.87 on Sep 2 with 2R at 380.61, and the time stop at 337.02 for +0.38R on Sep 23, noting the Aug 26 open would have reached its own 2R on Sep 11.
The trade's journal: the watch, the non-confirmation, the confirmation, the fill and what the wait cost, the exit. Each is a separate dated note.
AAPL daily chart, July 17 to September 23, 2026, subtitle entry 326.87 and 2R = 380.61, marking the September 1 demand bar and September 23 highlighted as time stop +0.38R. Dashed lines show the entry at 326.87 and the stop, a close below 300.00.
The exit screenshot on the same trade: the demand bar, the entry, and the time stop.

We graded the setup B rather than A in the post-mortem, because the no-supply bar was only just narrow and the bounce top had closed weak. The post-mortem records the question, not a conclusion.

SignalDeck post-mortem for the AAPL trade: setup quality B, entry trigger Reversal Signal, stop management Held Thesis Stop (Correct), exit timing N/A, market condition Range-Bound, verdict Good Win. Lesson learned: Waited for the Sep 1 demand bar as the method says: +0.38R. Buying the quiet bar would have made 2R. One trade settles nothing. Log both prices on every no-supply trade and let twenty of them answer.
The post-mortem, using the form's own fields: a small win, taken by the rules, and a question for the next twenty trades.

What 49 Rule-Generated VSA Trades Showed

To show what a journal does with many trades, we filled the demo account mechanically, using the series' own definitions and entry rules on the same Polygon daily bars the episodes were built from:

The rules were not tuned to the results. The first version of this demo did break episode 1's main rule: it bought the signal bar itself. A review against the course caught it, and rebuilding it to wait for confirmation changed every number below That is a reason to write your rules down. This is not a backtest of VSA and not a recommendation. Forty-nine trades is a small sample, and VSA traded by a person uses judgment that rules cannot.

SignalDeck Strategy Performance screen with four cards. VSA No Supply, 2 trades, net P&L plus $100. VSA Spring, 36 trades, minus $1,801, profit factor 0.69. VSA Test, 0 trades, no closed trades yet. VSA Upthrust, 11 trades, minus $250, profit factor 0.79. Each card has its own equity curve.
One strategy per VSA setup, each with its own equity curve. An account total would hide that the spring produced most of the trades and almost all of the loss.
SetupTradesTotal RR per trade
No supply (long)2+0.41R+0.21R
Test (long)0––
Spring (long)36−7.20R−0.20R
Upthrust (short)11−0.99R−0.09R
All49−7.78R−0.16R

Four things a VSA trader would want to know from this, none of which a chart shows:

1. Waiting for confirmation makes the clean setups rare

SetupSignal bars that met the definitionConfirmed in timeTraded
Spring1944136
Upthrust261311
No supply622
Test100

In 20 months across 50 tickers, the full no-supply sequence ending in confirmation appeared twice, and the test never confirmed. Most spring bars either broke their line or went 20 sessions without a confirming bar. A journal tells you how often your signal actually occurs, which tells you how long it will take to learn anything about it. At two no-supply trades in 20 months on this universe, that is years.

2. The stop is a close, so losses run past 1R

The series defines invalidation as a close beyond the line (for the upthrust, a strong close on good volume), and this demo acted on each one at the next open. Fifteen trades were invalidated, and they averaged −1.50R, not −1R: 13 of the 15 lost more than the risk they planned. Had each cost exactly 1R, the whole sample would have finished at −0.30R instead of −7.78R, so the overshoot accounts for nearly all of the loss. That is not an achievable result, though: a hard stop at the line would also have cut five other trades that traded through it during the day and recovered (one of them a 2R winner), and that version finishes near −8.6R, worse than the close-based line.

SignalDeck Performance by Tag bar chart in R: Invalidated about minus 22.5, Time Exit about plus 2.7, Target Hit about plus 12.
Analytics → Quant → Performance by Tag, total R by how each trade exited: invalidated −22.5R over 15 trades, time exits +2.7R over 28, targets +12.0R over 6.

JPM shows how. A spring confirmed on September 15, 2026, and the trade was entered at $353.38 the next morning, with the spring low of $348.69 as the line: $4.69 of risk. On September 16 it closed at $348.92, 23 cents above the line. On September 22 a wide down bar on 2.08× volume closed at $340.00, and the exit at the next open, $337.61, was −3.36R. XLY lost −3.25R for the other reason a close-based stop overshoots: its line was only 75 cents below a $114.61 entry, so a modest miss was several times the planned risk.

The journal exposed something else about those two trades. On both, the confirming bar had itself traded below the line during the day before closing back above it: JPM's September 15 low was $343.07, under its $348.69 line, and XLY's March 9 low was $110.99, under $113.86. The rule kept a line that the market had already broken intraday. A trader looking at the chart would probably have redrawn it, or passed. That is a flaw in the rule, found by reading the worst trades one by one.

SignalDeck trade overview for JPM: final P/L minus 4.46%, minus $835.81, minus 3.36R, exit Sep 23, 2026 at $337.61. Planned risk / reward: risk (1R) $248.57, reward $497.14, 2.00R. Original stop $348.69.
Planned risk $248.57; realized loss $835.81, or −3.36R. The journal keeps both numbers on the same trade.

None of this says a close-based line is wrong; it is what the method teaches, and as the hard-stop comparison shows, it kept trades that an intraday stop would have cut. It says the planned R is not the R you will realize, and that only a record of both shows by how much. What you do about it (a minimum distance to the line, redrawing the line when the confirming bar breaks it, or a hard limit some way beyond it) is a rule you can then test.

3. Springs by volume: no conclusion yet

Each trade carried a signal for its signal bar's volume. Low-volume springs (under the 20-day median), which only had to wait for confirmation, made −0.03R over 20 trades. Higher-volume springs, which waited for a test and then confirmation, lost −7.17R over 16, or −0.45R a trade. Episode 5 says a low-volume spring is the stronger form, and the totals lean that way. But the gap is JPM and XLY, the two stale-line trades above: without them, the other 14 tested springs made −0.56R, close to the low-volume springs' −0.03R. Sixteen and twenty trades cannot separate either from noise. It is a question to keep logging, not a finding.

SignalDeck Performance by Signal bar chart in R: High-Volume Signal Bar about minus 8.2, Waited for Test about minus 7.2, Low-Volume Signal Bar about plus 0.4.
Analytics → Quant → Performance by Signal, total R. Low-Volume Signal Bar (+0.38R over 22) is the 20 low-volume springs plus the 2 no-supply trades. Signals overlap: every upthrust is also a high-volume signal bar, and every tested spring carries two signals, so the bars do not add up to the total.

4. Most trades never resolved

Twenty-eight of the 49 trades neither reached 2R nor broke their line within 15 sessions, and ended on the time stop, for +2.7R between them. That makes the time stop, a rule the series never sets, one of the most important rules in the sample. If your own journal shows the same, it is the rule to examine first.

Setting Up a VSA Journal in SignalDeck

  1. One strategy per setup (Setup → Strategies, in the profile menu), with the definition, the confirmation rule and the exits in its notes, so the definition you trade is the definition on file.
  2. Signals for what you knew at entry (Setup → Signals): the signal bar's volume class, whether a test came, where the bar sat in its range. Keep them to things you knew before the order.
  3. Tags for the exit: target hit, invalidated, time exit.
  4. An entry checklist with the shape checks and the confirmation, set as a hard gate in Trade Preferences if you want it enforced.
  5. On each trade: the stop at the invalidation line, a note with the signal bar's numbers, a note when confirmation comes (with the price you could have had without it), and your chart as the entry and exit screenshots.

Then read the results by strategy on the Runs page, and by signal and tag under Analytics → Quant, all in R. The journal does not tag VSA bars for you, and none of the backtester's built-in strategies is a VSA strategy, so the signal on your own trades has to come from you. What it adds is a running count of how each signal you trade has actually done, without you building or maintaining the formulas. You can also connect an AI assistant such as Claude or ChatGPT to the journal and ask about your trades in plain English.

What to Do With This

Watch the series in order, starting with episode 1. Then pick the one or two signals you actually trade, write their definitions and your confirmation rule down as a checklist, and log every trade with the signal bar's numbers, the price you could have had without waiting, and the R you realized. Twenty trades is where a signal stops being an anecdote, not where it is proven; read it by background only once each background has twenty of its own. The chart teaches you the bar. The journal tells you whether it pays you.

Frequently Asked Questions

What is Volume Spread Analysis (VSA)?

Volume Spread Analysis reads each bar as effort and result. Volume is the effort. The spread (high minus low) and where the bar closes in its range are the result. When effort and result agree, the move is more likely genuine; when they disagree, for example heavy volume on a narrow bar, or a push to new highs that closes near its low, someone is usually absorbing or distributing. VSA grew out of Richard Wyckoff's work and was developed by Tom Williams. It is always read in context: the same bar means different things after a long fall and after a long rally.

What is the difference between no supply and no demand?

Both are narrow bars on light volume, so on their own they look alike. No supply is a down bar on less volume than either of the two bars before it, appearing in a pullback after a selling climax has held: sellers are not showing up, which is bullish. No demand is an up bar on light volume near the highs after a rally and a heavy bar that closed off its high: buyers are not following through, which is bearish. The bars before the quiet bar decide which one it is, and neither is a trade until a wide bar on above-average volume confirms it in its own direction.

What should I record in a VSA trading journal?

Record the signal by name, and the signal bar itself: its volume as a multiple of the 20-day median and against each of the two prior bars, its spread against the average, its close location, and whether it closed up or down on the prior close. Record the background (the last climax, and where the bar sits in its range), the invalidation line, the confirming bar and its date, the price you could have had without waiting, and the R you actually realized, not just the R you planned. A broker statement has none of this.

Does SignalDeck detect VSA signals automatically?

Not in your journal, and not in the backtester. SignalDeck's own scanner runs several VSA-based strategies, such as stopping volume, shakeout and no supply, but the trades you take and log are labeled by you, and none of the backtester's built-in strategies is a VSA strategy. You record the signal yourself: each setup as its own strategy, what you knew at entry as signals, the exit as a tag, the bar's numbers in a dated note, and your chart as a screenshot. SignalDeck then breaks the results down by strategy, signal and tag in R, without you building or maintaining the formulas.

Start tracking which VSA signals pay you

Log each setup as its own strategy, record the bar and what you knew at entry, and see your results by signal in R. Free during beta; Pro is $30/mo and Elite $50/mo when billing launches.