EstimatedVolume
EstimatedVolume projects the final volume of the current bar in a ProScreener by extrapolating the volume already recorded over the time elapsed so far.
Syntax
EstimatedVolumeHow it works
While a bar is forming, Volume only reflects the transactions recorded so far, which makes intraday volume comparisons misleading early in the period. EstimatedVolume corrects for this by extrapolating the recorded volume across the full bar:
EstimatedVolume = Volume * Multiplier
Multiplier = bar period / time the current bar has been activeFor example, 30 minutes into a 1-hour bar with 500 units recorded, the multiplier is 60 / 30 = 2 and the projection is 500 * 2 = 1000 units. The projection assumes trading continues at the same pace for the rest of the period.
The value is a linear extrapolation, not a forecast model. It answers the question "if activity keeps this pace, where does volume end up", which is usually enough to flag instruments trading well above or below their normal levels while the session is still open. On a bar that has completed its period there is nothing left to estimate, so the projection converges to the recorded volume.
Examples
Example 1, Projected volume surge filter (ProScreener)
// Flag instruments on track to trade at least twice their average volume
avgVol = Average[20](Volume)
surge = EstimatedVolume > 2 * avgVol
SCREENER[surge](EstimatedVolume AS "Projected volume" NUMBERFORMAT)The screener fires when the current bar is on pace to exceed twice the 20-bar average volume, and displays the projection as an abbreviated figure.
Example 2, Breakout confirmed by projected volume (ProScreener)
// Price breakout with volume on pace to beat the previous bar's total
breakout = close > Highest[50](close[1])
volPace = EstimatedVolume > Volume[1]
SCREENER[breakout AND volPace](close AS "Breakout price")A 50-bar closing breakout only qualifies when the forming bar is projected to trade more volume than the last completed bar, filtering out low-participation moves.
Example 3, Relative volume ranking column (ProScreener)
// Rank results by projected relative volume
avgVol = Average[20](Volume)
relVol = EstimatedVolume / avgVol
SCREENER[relVol > 1.5](relVol AS "Relative volume")Dividing the projection by average volume produces a relative volume figure. Sorting the result column ranks instruments by how unusual their current activity is.
Common errors and gotchas
- Wild values early in the bar. A few minutes into a daily bar, the multiplier is very large and a single burst of trades produces an extreme projection. Screens that run near the session open should require a minimum elapsed time or use a smaller timeframe before trusting the value.
- Linear pace assumption. Intraday volume is typically heaviest near the open and close, not evenly spread. A mid-session projection based on the quiet middle hours tends to understate the final total, while an early projection overstates it.
- No estimation on completed bars. In an end-of-day scan of finished bars the value matches recorded volume, so
EstimatedVolumeadds nothing overVolume. The instruction earns its keep only on live, still-forming bars. - ProScreener only. The keyword does not compile in indicators or strategies. To approximate the same idea elsewhere, the extrapolation must be built manually from
Volumeand the bar's elapsed time.
Related instructions
Volume, the transaction volume recorded on a bar.SCREENER, defines the filter condition and result column of a screener.NUMBERFORMAT, abbreviates large numeric values in a screener column.Average, moving average, used to build average volume baselines.VolumeROC, rate of change of volume.VolumeOscillator, difference between fast and slow volume averages.OBV, on-balance volume, a cumulative volume flow indicator.TIMEFRAME (PS), sets the timeframe used by subsequent screener code.
