WhitmanTrading

Volume Flow Indicator (VFI): Formula, Settings and How Often It Flips on SPY

Volume flow indicator accumulates volume signed by price direction, but discards bars whose move was smaller than a volatility-based threshold and caps unusually large volume. The filtering is meant to leave only decisive participation, and the thresholds that decide what counts are set by the author.

Volume Flow Indicator (VFI): Formula, Settings and How Often It Flips on SPY — illustrated on a chart Watch: Volume Flow Indicator (LazyBear) Tutorial

Covered on this page: TradingView.

The volume flow indicator (VFI) is a running 130-bar volume total that adds a day’s volume when the typical price rises by more than a volatility cutoff, subtracts it when price falls by more, and skips the days in between. On SPY’s daily bars the default cutoff ignored 17.1% of days, and the line crossed zero 186 times from February 1994 to October 2026.

It is on-balance volume with two repairs: a filter for days that barely moved and a cap for days that traded an extraordinary amount. Whether those repairs help depends entirely on the settings, so this page gives the exact formula, runs one real day through it by hand, and shows what the settings change.

How it works: the VFI formula step by step

Markos Katsanos introduced it in a June 2004 magazine article and publishes the formula and defaults on his own site. In plain steps, for each daily bar:

  1. Typical price = (high + low + close) / 3.
  2. The move = today’s typical price minus yesterday’s.
  3. The cutoff = 0.2 × the 30-bar standard deviation of the daily log changes in typical price × today’s close. This makes the cutoff a dollar amount that widens when the market is jumpy.
  4. Capped volume = today’s volume, but no more than 2.5 times the average volume of the previous 130 bars.
  5. Signed volume = capped volume if the move is above the cutoff, minus capped volume if it is below minus the cutoff, and zero otherwise.
  6. VFI = the sum of the last 130 signed volumes divided by that 130-bar average volume, then smoothed with a 3-bar exponential moving average. Many platforms add a signal line, a 30-bar average of the VFI.

Because step 6 divides by average volume, the result is measured in days of average volume. A reading of 5 means the last 130 bars added about five average days more on the up side than the down side. That is why, unlike on-balance volume, VFI can be compared across years and across funds.

Platforms differ in the details. The thinkorswim version divides by a 50-bar average volume instead of the 130-bar one, so its numbers will not match a chart built on Katsanos’s own code to the decimal.

A worked example: SPY on Friday 30 October 2026

Here is the full calculation for one real day. SPY’s bar was high $761.46, low $750.36, close $755.72, on 77,625,800 shares.

The day’s single value swung the unsmoothed VFI from 1.27 to −1.10. The plotted line, a 3-bar exponential average, still read 0.30, above zero: half of the day’s −1.10 plus half of the previous smoothed value, 1.70. One heavy down day pushed the raw line through zero, and the smoothing kept the plotted line just above it at that close.

Two 2026 days where VFI and OBV disagreed

Friday 28 August 2026. SPY’s high was $775.30, its low $768.31 and its close $769.35, a typical price of $770.99. The day before it was $770.21, so the typical price rose $0.78. The cutoff was about $0.93, so VFI added nothing. On-balance volume saw the close fall $1.75 from $771.10 and subtracted all 36,744,300 shares.

Tuesday 22 September 2026. The typical price rose $2.22, from $771.47 to $773.70, against a cutoff of about $0.85, so VFI added the day’s 34,802,300 shares. The close, $773.38, was $0.12 below the day before, so on-balance volume subtracted the same shares. Same volume, opposite signs, because one tool reads the close and the other reads the whole bar.

VFI settings: what 0.2, 2.5 and 130 each decide

The cutoff coefficient, 0.2, is the setting that matters most. Katsanos suggests 0.1 for 5- to 15-minute bars. On SPY daily bars, each extra 0.1 removed roughly another seven to nine percent of days from the count (table below).

The volume cap, 2.5, rarely bites on an index fund. Katsanos uses 3.5 for intraday data. On SPY it trimmed 208 days in 33 years.

The length, 130 bars, is about six months of daily trading; Katsanos uses 26 on weekly charts. It is both the window and the volume average, so it sets how slowly the line turns.

Three parameters are three chances to fit the past. Each has a purpose and none has a correct value, so a “best settings” claim tuned on old charts is overfitting by another name.

The original data

How much of the tape the cutoff ignores

We ran Katsanos’s rules over every SPY session from 5 August 1993, the first day with 130 earlier bars, to 25 September 2026: 8,342 days, using Yahoo Finance’s unadjusted daily bars and the population standard deviation (the sample form moves the headline share from 17.1% to 17.4%).

At the default cutoff of 0.2, VFI ignored 1,425 of the 8,342 days, or 17.1%, and those days carried 15.3% of all shares traded. It counted 3,808 days up and 3,109 down. The cap bit on 208 days (2.5%) and trimmed 0.98% of total volume.

Cutoff coefficient Days ignored Share of 8,342 days
0.0 13 0.2%
0.1 770 9.2%
0.2 (default) 1,425 17.1%
0.3 2,113 25.3%
0.4 2,707 32.5%
0.5 3,311 39.7%
Horizontal bars showing the share of SPY trading days the VFI ignores at cutoff settings from 0.1 to 0.5, rising from 9.2% to 39.7% with the 0.2 default at 17.1%.
Share of SPY trading days the VFI ignores at each cutoff setting, August 1993 to September 2026. Source: Yahoo Finance, SPY daily bars (m50-spy-vfi-filter-1993-2026.csv).

Over 130-day windows, VFI’s signed total and the change in on-balance volume pointed opposite ways on 1,421 of 8,213 days, 17.3%. The other 83% of the time they agreed, which is why running both is not two pieces of evidence. The year-by-year table is in the VFI filter data.

How often the zero line flips

The most common way to read VFI is above zero bullish, below zero bearish, and Katsanos treats a cross of zero as the trigger. So we counted the crosses. On the full calculation, with Katsanos’s 3-bar exponential smoothing, SPY had a VFI value on 8,238 sessions from 7 February 1994 to 30 October 2026. Every value is in the SPY VFI data.

The line crossed zero 186 times, and 92 of the 185 crosses that had a later one, 49.73%, were followed by another cross within 10 sessions. The median gap between crosses was 11 sessions. VFI sat above zero on 4,569 sessions, 55.46%, in a fund that rose over the period.

Two panels: SPY's daily close from January 2025 to October 2026 above its VFI line, with the eight zero-line crosses circled.
SPY daily close and its VFI line, 2 January 2025 to 30 October 2026, with the zero-line crosses circled. Source: Yahoo Finance daily bars (m108-spy-vfi-1994-2026.csv).

The last 459 sessions show the pattern. The line crossed zero eight times: down on 11 March 2025, up three sessions later, down again on 21 March, up on 30 June 2025, down on 13 March 2026, up on 1 June, down on 8 June and up on 13 August 2026. Three of them were reversed within five sessions. This count says how often the line changes sides; it is not a test of whether trading those changes paid, and this page makes no such claim.

What volume can and cannot tell you

Every trade has a buyer and a seller. Volume counts shares that changed hands, and both sides of each trade are equal by construction.

So “buying volume” describes the price, not the participants. A rising VFI means a lot of shares changed hands on days the typical price rose by more than the cutoff. That is a narrower claim than “accumulation”, and any tool said to show institutions buying is claiming something the feed does not carry.

The defensible reading is about agreement. A price reached on heavy volume had more trading behind it than one reached on almost none. The heaviest days were big moves rather than one-sided ones: SPY’s 50 busiest sessions since 1993 had a median move of 4.13%, against 0.53% for all days, as measured on the trading volume page.

How it compares

Against on-balance volume, VFI is the same idea with a noise filter, an outlier cap and a fixed window. More considered, with three more settings to get wrong.

Against Chaikin money flow, the weighting comes from a different place: Chaikin uses where the close sits inside the bar’s range, VFI the change between bars.

Against accumulation-distribution, all three sign volume by some measure of direction and add it up; they differ in how direction is defined.

Money flow index is the bounded cousin, weighting the same typical price by volume but squeezing the result into a 0 to 100 scale instead of a running total.

When it fails

Reading the line as a record of who was buying. It recorded that prices rose on days with meaningful volume, which the price chart already showed.

Treating every zero cross as a turn. On SPY about half the crosses were undone within 10 sessions.

Tuning the cutoff on past data. Moving it from 0.2 to 0.3 on SPY stopped another 688 days from counting, so a “better” setting found that way mostly records which days happened to be left out.

Stacking it with OBV or Chaikin and treating agreement as confirmation, when they agreed on about 83% of days because they are built from the same bars.

Expecting it to lead price. It is computed from price and volume, so it holds no information that neither had.

Questions people ask

How is the volume flow indicator different from OBV?

OBV adds or subtracts a day’s full volume on any change in the close. VFI uses the typical price, ignores moves smaller than the cutoff, caps outsized volume and keeps only the last 130 bars, divided by average volume.

What does it mean when VFI is above zero?

Over the last 130 bars, more average-sized days of volume came on qualifying up moves than on down moves. It describes the recent past, and on SPY the line changed sides 186 times from February 1994 to October 2026.

What are the standard VFI settings?

Katsanos’s daily defaults are a 130-bar length, a 0.2 cutoff, a 2.5 volume cap and 3-bar exponential smoothing, with a 30-bar signal line. He suggests 0.1 and 3.5 for 5- to 15-minute bars and a 26-bar length on weekly charts.

Which timeframe suits VFI?

It was designed for daily bars, where 130 bars is about six months. On short intraday bars it needs the lower cutoff, and relative volume is a simpler way to judge whether a session was busy at all.

On-balance volume covers the unfiltered version, and how to use on-balance volume walks through reading its slope. Volume analysis covers what volume can honestly support, and WaveTrend is another widely used indicator from the same author as the common TradingView version of this one.

The practical check

The filtering idea here is genuinely better than plain on-balance volume, which counts a bar that moved a hundredth of a point the same as one that moved a full range. What it cannot fix is the thing underneath: every trade has a buyer and a seller, so ‘buying volume’ is a description of the price, not a count of buyers.

— Michael Whitman

This page is educational, not financial advice. Test every idea on your own charts before risking money. Some links on this page earn a commission if you buy through them. It costs you nothing and it does not decide what appears here or in what order — how these pages are made is set out in our methodology.