Student Wyckoff · Elliott Wave

Blog and practice

OBV, VWAP and anchored VWAP: volume, weights and source boundaries

Teaching tables and diagrams with explicit inputs, formulas, seeds, local conditions and limits when checking Elliott wave hypotheses.

Student Wyckoff editorial team

Published: (UTC+3)

Русский · English · Deutsch · Español · Français · Italiano · 繁體中文 · 日本語 · 한국어

This lab connects indicators to a wave hypothesis through explicit calculations. Every example price, volume and parameter is invented. A positive indicator condition describes a local state; it does not establish an entire Elliott count or measure a probability of profit.

Invented inputs and calculation rules

The table contains completed bars. t is an ordinal index; O/H/L/C mean open/high/low/close and V is invented volume from one source, not an entire-market total. Dataset A has a preceding bar t=−1 with C=99, H=100, L=98. Windows include the current bar unless explicitly stated otherwise.

SMA_n is the mean of the latest n values. EMA_n uses α=2/(n+1) and RMA_n uses α=1/n; both recursions y_t=αx_t+(1−α)y_(t−1) start with the mean of the first n available values. Intermediate values are not rounded; tables display up to six decimals. “—” means insufficient history or an undefined value, not zero. Missing inputs are not replaced with zero. Short teaching periods are not recommended settings; the seeds and zero policies are declared here, without a claim of parity with every platform.

DatasettOHLCV
A099.51019910010
A1101.510310110212
A2100.51021001018
A3103.510510310415
A4102.51041021039
A5105.510710510620
A6103.510510310411
A7106.510810610718
A8104.510610410514
A9107.510910710822
A10103.510510310416

Can an early undefined indicator value be replaced by zero and counted as a negative signal?

No. A missing full window and a calculated zero are different states; freeze the warm-up policy in advance.

OBV: close direction and whole-bar volume

OBV adds or subtracts the whole V based on the close change, not each trade’s direction. Formula and worked calculation: OBV_t=OBV_(t−1)+sgn(C_t−C_(t−1))V_t. OBV_(−1)=0; C_(−1)=99; OBV0=10. t7: 29+18=47.

An unchanged close adds 0; missing V is not zero. Shifting the OBV seed changes its level but not differences; compare the same volume source and type.

Local research predicate: t7: OBV_t>OBV_(t−1). OBV’s rise at t7 proves neither cash inflow nor aggressive buying of all 18 units. If V is tick volume, OBV weights update counts rather than executed volume. That series is not interchangeable with exchange volume without validation.

OBV: close direction and whole-bar volumeOBV: close direction and whole-bar volumePrice C99.04102.346667105.653333108.96CValue4.623.241.860.4OBV0246810t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales.
tCVΔCOBV
010010110
110212222
21018-114
310415329
41039-120
510620340
610411-229
710718347
810514-233
910822355
1010416-439

Reproduce the highlighted calculation and evaluate the local predicate. Does the result establish the entire wave count?

47>29; ΔOBV=18. No. It is the result of the stated calculation on invented data, not proof of a wave structure or profit.

VWAP: price source and session start

This is a bar-based HLC3 VWAP proxy, not a sum over actual trades; the session begins at t0 and includes t0–10. Formula and worked calculation: TP=(H+L+C)/3; VWAPbar_t=Σ_(i=0..t)(TP_iV_i)/Σ_(i=0..t)V_i. t10: 16219/155=104.638710.

A new session resets both cumulative sums. ΣV=0 makes VWAP undefined; a single zero-volume bar is valid. Here TP=C because of input symmetry, not a general identity.

Local research predicate: t10: C>VWAPbar. At t10 C=104 is below VWAPbar. The level is neither a compulsory magnet nor every participant’s price. Tick weights would average update counts; a different venue or session timezone would produce another series.

VWAP: price source and session startVWAP: price source and session startPrice C99.04102.346667105.653333108.96CValue99.434532101.382254103.329976105.277698VWAPbar0246810t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales.
tCTP_HLC3VΣPVΣVVWAPbar
010010010100010100
110210212222422101.090909
21011018303230101.066667
310410415459245102.044444
41031039551954102.203704
510610620763974103.22973
610410411878385103.329412
71071071810709103103.970874
81051051412179117104.094017
91081082214555139104.71223
101041041616219155104.63871

Reproduce the highlighted calculation and evaluate the local predicate. Does the result establish the entire wave count?

104<16219/155=104.638710. No. It is the result of the stated calculation on invented data, not proof of a wave structure or profit.

Anchored VWAP: an anchor fixed in advance

Fix the anchor at t5 using the same HLC3 proxy and V as the session VWAP. Formula and worked calculation: AVWAP5_t=Σ_(i=5..t)(TP_iV_i)/Σ_(i=5..t)V_i, t≥5. t10: 10700/101=105.940594; VWAP0_10=16219/155=104.638710.

There is no value before t5; ΣV=0 is undefined. An anchor must be available when chosen: a pivot confirmed later cannot make the line retrospectively known earlier.

Local research predicate: t10: C>AVWAP5. The same bars give different levels for anchors 0 and 5. Choosing whichever line fits a price already seen is hindsight fitting. Neither anchor turns an average price into a wave-count invalidation rule.

Anchored VWAP: an anchor fixed in advanceAnchored VWAP: an anchor fixed in advancePrice C99.04102.346667105.653333108.96CValue99.243294101.849725104.456157107.062588VWAP0AVWAP50246810t
Original calculation on invented completed bars; warm-up gaps are not connected. Price and indicator use separate panels and scales.
tCVVWAP0AVWAP5ΣPV5ΣV5
010010100———
110212101.090909———
21018101.066667———
310415102.044444———
41039102.203704———
510620103.22973106212020
610411103.329412105.290323326431
710718103.970874105.918367519049
810514104.094017105.714286666063
910822104.71223106.305882903685
1010416104.63871105.94059410700101

Reproduce the highlighted calculation and evaluate the local predicate. Does the result establish the entire wave count?

104<10700/101=105.940594; AVWAP5≠VWAP0. No. It is the result of the stated calculation on invented data, not proof of a wave structure or profit.

A testable condition and a wave strategy

For a study, freeze the source, timeframe, parameters, formula, availability time and alternative wave count first. Each section gives a local predicate with a threshold chosen for arithmetic practice. Record both positive and negative outcomes at bar close without selecting settings after seeing the result. Check a structural wave-rule violation from price separately.

RSI, averages, MACD and other price transforms share overlapping inputs. Several agreeing lines are not independent votes and do not supply probabilities that can be multiplied. A strategy test needs a separate sample and a predeclared outcome; simulated trades also need execution and cost assumptions. This lab supplies no trading performance, accuracy rate or product features.

ValueLocal research predicate
OBV: close direction and whole-bar volumet7: OBV_t>OBV_(t−1)
VWAP: price source and session startt10: C>VWAPbar
Anchored VWAP: an anchor fixed in advancet10: C>AVWAP5

Three price transforms agree. Does that provide three independent confirmations and establish the count?

No. Shared inputs create dependence; local filters are checked separately from price rules, and usefulness needs another sample.

Sources and limits