ATMResearch
Join Overfit - free
Overfit cover card on a flat dark gradient, kicker 'Volume oscillator': the headline '6 of 294 settings cleared the luck bar.' over the line '105 settings, ES, SPY and the yen', with a corner badge reading 'ES, SPY, yen'.
  1. Overfit/
  2. Research/
  3. Volume Oscillator: 105 Settings Tested on ES, SPY and the Yen, and Whether Any Signal Holds Up

April 25, 2025

Volume Oscillator: 105 Settings Tested on ES, SPY and the Yen, and Whether Any Signal Holds Up

Share

8 min read

Written by Ali Casey, founder of StatOasis and AlgoChef, creator of the Algo Trading Masterclass (ATM), with over 10 years of experience building systematic trading tools - building algorithmic strategies, testing ideas with data, and teaching traders how to build structured, portfolio-based trading workflows.

Published April 25, 2025 · Updated October 29, 2026 · Method

← Back to Research
Table of contents▾
  • TL;DR: the answer box
  • How I tested the volume oscillator
  • Is "fast longer than slow" a better volume oscillator setting?
  • Where does the default volume oscillator setting rank?
  • What are the best volume oscillator settings?
  • Does a volume oscillator signal beat a random entry?
  • Did the yen short work?
  • The verdict, and the honest limits
  • What this means for you
  • Reference tables
  • Methodology
  • FAQs

The short version

I tested 105 volume oscillator settings on ES futures, SPY and Japanese yen futures, long and short: 3,780 backtests. The 14/28 default ranked 303 of 467 long settings on ES. The "inverted" settings I recommended in 2025 are the normal ones with the signal flipped. And among settings that traded within 25% as often as a random entry, only 6 of 294 cleared the luck bar: the random average plus two spreads.

TL;DR: the answer box

  • On ES the default is below average. 14/28, buy when it crosses below zero, sell 4 days later. Ret/DD 1.00 on ES, better than only 35.1% of reliable long settings. On SPY, 2.20, better than 68.3%.
  • Fast longer than slow is not a trick. An inverted 70/30 crosses below zero on exactly the days the normal 30/70 crosses above. Same signal, flipped.
  • The side mattered far more than the setting. On ES, 536 of 630 long backtests made money and 94 of 630 short ones did. On the yen it flipped: 205 long, 425 short.
  • Rising or falling volume, nearly the same median. On ES long, the typical Ret/DD was 1.59 after a cross below zero and 1.67 after a cross above.
  • The typical long setting did not beat drift. The median ES long setting earned -0.009% a trade more than buying any open and holding as long, and only 215 of 467 beat drift at all. On SPY, -0.022%.
  • Almost nothing cleared the luck bar. 6 of 294 comparable settings beat a random entry's average by two spreads.

How I tested the volume oscillator

The volume oscillator compares a short average of volume with a long one. The version here is TradeStation's VolumeOsc. Take the simple average of volume over the short length. Subtract the simple average over the long length. Divide by the long average and multiply by 100.

Above zero, recent volume is running above its longer-run level. Below zero, under it. That's all it measures.

Think of volume as the noise level in a room. The oscillator tells you, accurately, whether the room is louder or quieter than usual. The question this test asks is whether that tells you which way the crowd will move next.

The raw difference I described in 2025, fast average minus slow, crosses zero on exactly the same days. StockCharts' Percentage Volume Oscillator is the same idea built on exponential averages, which cross on different days. I did not test that version.

Here is one trade with the default setting, drawn bar by bar.

The short volume average dipped under the long one, the oscillator crossed below zero, and the trade made $375.

The oscillator went from 0.9 to -0.4 at the close of 2009-12-22. The trade bought the open of 2009-12-23 at 1,703.00. It sold the open of 2009-12-30 at 1,710.50. $375 on one contract. It is not the best trade. Its profit sits closest to the middle of all 174 default trades.

The sweep.

  • 105 settings. Every pair of 15 lengths from 2 to 100, with the short length below the long one.
  • Two signals each. A cross below zero (volume dropping under its usual level) and a cross above zero (volume climbing over it). Each traded long and short.
  • Three holds: 2, 4 and 10 trading days (daily bars), sold at the open. That is 1,260 backtests per market, 3,780 in all. The same grid ran again on each half of every window.
  • Three markets: ES (E-mini S&P 500 futures, one contract) from 2006-01-03, SPY on a $35,000 account from 1994-02-01, and yen futures (one contract) from 2006-01-03. All to 2026-08-20.
  • The default, fixed before the run: 14/28, crossing below zero, sold 4 days after entry.

The fills: Execution rule v2. The signal is read at the close. The trade fills at the next open. The exit fills at the open 4 bars after entry: buy Tuesday's open, sell the following Monday's open. One position at a time. No costs in the headline figures, with a costed figure kept on every row.

The scores, in plain words.

  • Drawdown: the biggest drop from a high point.
  • Ret/DD: net profit divided by the biggest drawdown. Profit per dollar of pain. Higher is better.
  • Win rate: the share of trades that made money.
  • Drift: what you earn by buying any open and holding as long, with no signal at all.
  • Reliable: a setting with 100 trades or more.

Is "fast longer than slow" a better volume oscillator setting?

No. It is the same setting with the signal flipped.

In 2025 I named 16/14, 70/30 and 60/40 as the settings that worked best, and later 75/25. All four put the fast length above the slow one. Here is why that cannot be a separate edge.

A volume average is never negative. So an inverted 70/30 and a normal 30/70 always sit on opposite sides of zero. When one crosses up, the other crosses down, on the same day.

Fast longer than slow crosses zero on the same days, the other way.

That also turns my 2025 explanation around. With an inverted setting, a cross below zero is a day when recent volume is rising above its usual level. It is not volume "losing steam".

So how did the four named settings score? All over the place.

The same four settings, scores that jump around with no pattern.

On the yen, short, the four scored a Ret/DD from -0.28 to 4.53. Typed 70/30: 4.53. Typed 60/40, its neighbour on paper: -0.28. On ES, long, they ran from 0.57 to 4.66. Neither way of typing them wins. That spread is noise.

Where does the default volume oscillator setting rank?

Below the middle on ES. In the top third on SPY.

The default beat 35.1% of long settings on ES and 68.3% on SPY.

On ES the default long rule took 174 trades. It won 55.7% of them and made $33,000. Its worst drawdown was $33,162. Ret/DD 1.00, against 1.65 for the typical long setting.

In 2025 I wrote that the default "usually doesn't work very well". On ES it ranked 303 of 467. It still made money. On SPY it ranked 192 of 605, with a Ret/DD of 2.20 and a $7,748 worst drawdown.

The other common default, 5/10, did no better: Ret/DD 1.00 on ES (rank 301 of 467) and 1.77 on SPY (rank 250 of 605).

Now put the default next to doing nothing clever at all.

Buy and hold made $286,838 with a $60,562 worst fall; the rule made $33,000 with a $33,162 worst fall.

One ES contract, bought on the first day and held, made $286,838. Its worst fall was $60,562. The default rule made $33,000 and still had a worst fall of $33,162. It sat out most of the rise and took about half the pain.

What are the best volume oscillator settings?

On the ES long map, no single setting earned the title "best". The heat map shows why.

No smooth region, just neighbours that disagree.

ES long, crossing below zero, 4-day hold. 5/28 scored 8.31. Move the short length to 10 and 10/28 scored 2.18. The default 14/28 scored 1.00. What I look for is a smooth hill of bright cells. This map shows scattered spikes.

The best long cell on ES was 5/30, crossing below zero, hold 4: Ret/DD 8.32 on 264 trades. I'm not using it. The same lengths on the opposite cross scored 3.02. On SPY the best cell, 14/16 with a 10-day hold, scored 12.30, and its opposite cross 4.42. Each is the best only in hindsight, picked after the sweep ran.

For why a hindsight winner deserves suspicion, read the probability of backtest overfitting paper by Bailey, Borwein, López de Prado and Zhu. I learned it the expensive way. I lost roughly $270K early in my trading to overfitting and leverage.

What decides the score, then?

The market, the side and the hold. The typical volume cross added almost nothing over drift.

Rising or falling volume barely moves the score. The side and the hold move it a lot.

Read across one row. On ES long, the typical setting scored 1.59 when volume was falling and 1.67 when it was rising. Almost the same. Setting by setting, the cross above won 145 of 315 pairs and the cross below 170. A coin toss.

Now read the hold columns. On ES long, the typical score went from 0.87 at 2 days to 2.44 at 10 days. A longer hold on a rising index catches more of the rise, for every-open entries and volume crosses alike.

Does the side matter more than the setting?

Far more.

Most long settings made money on the S&P 500. Most short settings made money on the yen.

On ES, 85.1% of long backtests made money and 14.9% of short ones did. On SPY, 93.0% and 7.0%. On the yen it flipped: 32.5% long, 67.5% short. Costs cut every count, the short side hard on ES and SPY: 536 and 94 fall to 518 and 70 on ES, 586 and 44 to 550 and 30 on SPY, 205 and 425 to 157 and 369 on the yen. The side that wins stays the side that wins.

Whichever length, whichever cross, whichever hold: long on the S&P 500 mostly made money and short mostly lost.

Does a volume oscillator signal beat a random entry?

This is the test that matters most. You can run it on any setting you plan to trade.

First, drift. Buy any ES open, sell 4 days later, and you earned 0.120% on average. On SPY, 0.159%. That's the money the market hands you for showing up. A signal has to beat it.

In 8 of 9 pairs, the volume signal's typical trade earned less than no signal at all.

With the volume signal, the typical ES long setting earned 0.096% a trade at a 4-day hold. With no signal at all, 0.120%. Only one of the nine pairs went the signal's way: ES long at 10 days, by 0.305% to 0.297%.

Spread every setting out and the picture holds.

The typical setting earns what a random day earns.

The typical ES long setting earned -0.009% a trade over drift. Only 215 of 467 beat drift at all, fewer than half. On SPY, -0.022% and 245 of 605. Yen short, -0.004% and 244 of 534. The money the long side made on the S&P 500 is the index rising, not the volume signal.

Second, a random entry. Pick random days, trade as often as the typical hold-4 setting, sell 4 days later, and repeat with 10 random seeds. On ES the random long test made $42,156 on average, with a spread of $27,397 across seeds. To count as beating luck, a setting had to clear the average plus two spreads.

3 of 45 on ES, 0 of 52 on SPY, 1 of 50 on the yen cleared the luck bar.

ES long: 3 of 45. SPY long: 0 of 52. Yen short: 1 of 50. The ES default sat 0.3 spreads below the random test's average.

6 of 294 settings cleared the luck bar, the random average plus two spreads. That is 2.0%.

Across all three markets and both sides, 6 of 294. In 2025 I wrote that volume "gives you early warnings before big moves". Traded on its zero cross, it cleared the random entry's two-spread bar in 2.0% of comparable settings.

Did the yen short work?

Over the full window, the default did. 14/28 crossing below zero, short for 4 days: Ret/DD 2.62 on 190 trades, $30,581, with an $11,650 worst drawdown. Rank 49 of 534. It won 54.2% of its trades.

Split the window in two, though, and most of that profit sits in the first half.

The default yen short made most of its money before 2016.

From 2006 to 2016 the default made $25,275, Ret/DD 2.17. From 2016 to 2026, $5,306, Ret/DD 0.48. 14 of 21 years made money.

The rest of the grid went the other way.

Across every setting, yen-short profits spread in the second half, with the yen's fall.

From 2006 to 2016, 281 of 630 short backtests made money. From 2016 to 2026, 532 of 630. That is the yen's trend, not the volume. One short yen contract, simply held, earned $8,525 in the first half and $62,769 in the second. And the typical yen-short setting's edge over drift stayed near zero in both halves: -0.019%, then -0.001%.

A note on direction: JY is quoted in dollars per yen. A short here is a bet on the dollar gaining against the yen.

The verdict, and the honest limits

What held up from 2025: on ES long, the 14/28 default is nothing special, ranking 303 of 467 long settings there. Testing beats guessing. And looking for stable zones, not one magic combo, is the right instinct. Here the stable zone is not a setting at all. It is the market, the side and the hold: ES and SPY, long, held 10 days.

What did not: the inverted settings are the normal ones flipped, and the "losing steam" reading is backwards. Across the grid, the yen short side followed the yen's trend. The default yen short was the exception: most of its profit came in the first half. And traded on the zero cross, the setup sold as an "early warning" cleared the random entry's two-spread bar in 6 of 294 comparable settings.

The limits, briefly.

  • Simple averages only. Exponential versions cross on different days and were not tested.
  • Futures volume is front-month volume. It shifts at each roll. SPY, with no rolls, gave the same verdict.
  • No stop loss. The largest single loss on one ES contract with the default was -$13,338.
  • No costs in the headline figures. The ES default long made $27,954 after costs.
  • Zero crosses and time exits only. Other thresholds and the filter use were not retested here.
  • A backtest is not a live edge. It is the best evidence about the past.

What this means for you

  1. Don't trust the tuned length from this sweep. On ES, 5/28 scored 8.31 and 10/28 scored 2.18. There was no smooth region around either.
  2. Don't set the fast length longer than the slow one. You get the normal oscillator, flipped. Swap the cross instead, so you know what you are trading.
  3. Pick the side first. Long ES made money in 536 of 630 backtests. Short, in 94.
  4. Test any entry against drift and a random entry. The typical ES long setting earned -0.009% a trade over drift. Put the trade lists of a few neighbouring settings into AlgoChef and check they behave alike before real money goes on the one that led the sweep.
  5. Use volume as context, if at all. I tested the filter idea, RSI(2) with the oscillator below zero, in its own article.

LuxAlgo's reference page says the indicator carries no direction on its own. This is the test behind that sentence. The room got louder or quieter. The crowd went wherever the market was already going.

In these tests, volume told you how loud the room was. Its typical zero-cross setting did not beat plain drift.

Reference tables

The default, 14/28 crossing below zero, hold 4, every market and side.

MarketSideTradesWin rateNet profitMax drawdownRet/DDProfit factorRank by Ret/DD
ESlong17455.7%$33,000$33,1621.001.22303 of 467
ESshort17444.3%-$33,000$55,025-0.600.82175 of 467
SPYlong29055.2%$17,012$7,7482.201.26192 of 605
SPYshort29044.8%-$17,012$19,284-0.880.79394 of 605
Yenlong19045.8%-$30,581$35,844-0.850.72481 of 534
Yenshort19054.2%$30,581$11,6502.621.3949 of 534

Profit factor is dollars won for each dollar lost. A setting counts in the ranking at 100 trades or more.

Each market at a glance.

Next-open fills, sell 4 days laterES 2006 to 2026SPY 1994 to 2026Yen 2006 to 2026
Default side testedlonglongshort
Default rank among reliable settings303 of 467192 of 60549 of 534
Typical edge over drift, every reliable setting-0.009%-0.022%-0.004%
Comparable settings above the random-entry bar3 of 450 of 521 of 50

Want the next study when it is finished, including the ones that overturn something I believed? That is what the newsletter is for: StatOasis.com/Overfit

Methodology and honesty footer: 3,780 backtests on ES (2006 to 2026), SPY (1994 to 2026) and Japanese yen futures (2006 to 2026) daily bars, Execution rule v2 (signal at the close, fill at the next open, time exit at the open 2, 4 or 10 bars after entry). Flat-only per setting, SPY $35,000 in whole shares, futures one contract, no compounding. Frictionless headline figures with a costed figure on every row. Buy-and-hold and seeded, frequency-matched random controls computed on the same bars. Every figure here comes from the study's own results tables. This is research, not investment advice.

Methodology

Data source
Daily bars with volume from TradingView exports: SPY (price only, share volume), and E-mini S&P 500 (ES) and Japanese yen (6J, symbol JY) continuous front-month futures, back-adjusted by the additive method so point changes are exact. Volume oscillator from engine.oscillators.volume_oscillator, TradeStation's VolumeOsc, an admitted engine indicator.
Date range
ES 2006-01-03 to 2026-08-20 (20.63 years, 5,210 bars); SPY 1994-02-01 to 2026-08-20 (32.55 years, 8,192 bars); JY 2006-01-03 to 2026-08-20 (20.63 years, 5,212 bars). Yen volume in the export is zero from 2002 to 2004, so the yen window starts with ES. The oscillator warms up on earlier bars. Halves split each window at its middle bar.
Entry / exit rules
105 volume oscillator settings (every pair of 15 lengths from 2 to 100 with the short length below the long). Each is traded on a cross below zero and a cross above zero, long and short. Every trade fills at the next open after the signal close and exits at the open 2, 4 or 10 bars after entry. No stop, no target. Default: 14/28 crossing below zero, hold 4. Inverted settings (fast longer than slow) are read off the normal setting's opposite cross, which fires on the same bars.
Sizing
SPY $35,000 in whole shares, no compounding; futures one contract (BigPointValue ES 50, 6J 12,500,000). Frictionless headline figures; every row also carries a costed net profit under the engine's atr-handbook-2026-09-24 schedule (futures $4.00 a round turn plus one tick a side; SPY $0.005 plus $0.01 a share a side).
Overlap mode
Flat-only within each setting: one position at a time; a setup while a position is open is ignored, including on the bar the exit order is placed (Execution rule v2).
Look-ahead
Every signal is read at a bar's close and every trade fills at the next bar's open. A cross compares the signal close with the close before it. No later bar decides an earlier trade.
Minimum sample
50 trades for the honesty baselines (the engine default). Rankings count a setting as reliable at 100 trades or more.
Buy-and-hold benchmark
Each market held over the same window. ES one contract: $286,837.50 net, CAGR 11.36%, worst drawdown 97.57% (2009-03-09). SPY on $35,000: $518,686.16 net, CAGR 8.85%, worst drawdown 56.45% (2009-03-09). JY one contract: $-71,437.50 net. Computed by tools/controls_report.py.
Random control
Seeded random entries, exits at the open under Execution rule v2, 10 seeds from base seed 20260803. Long controls matched to the study's median variant (ES 151 entries, SPY 244, JY 173, 4-bar hold), computed by tools/controls_report.py. The article's comparison uses per-side controls matched to the median reliable hold-4 setting (ES long 211 entries, SPY long 255, JY short 201), computed in the facts sheet with the same engine function.
Parameter scopeParameters swept

The study searched the parameter space and reports the spread, not one tuned setting.

3,780 backtests: per market, 105 settings x 2 crosses x 2 sides x 3 holds, plus the same grid on each half of every window. The default 14/28 crossing below zero, hold 4, was fixed before the run from the 2025 article. The stable region (long, hold 10, ES and SPY) is a side and a hold read after the run; the halves and the drift comparison are the checks. The single best cells are reported and not used.

Run to v1 of the StatOasis research standard - the rules every study here has to meet before it is published. The version is the study's own: a standard that gained a rule later never reaches back and claims this one met it.

Historical backtest results are not a guarantee of future returns. This content is for educational purposes only and is not investment advice. Hypothetical performance disclosure (CFTC Rule 4.41).

Frequently asked questions

What are the best volume oscillator settings?⌄

On the ES long map, no single setting stood out once you checked its neighbours. On ES, the 14/28 default ranked 303 of 467 reliable long settings. The best cell, 5/30 crossing below zero with a 4-bar hold, scored a Ret/DD of 8.32, but the same lengths on the opposite cross scored 3.02. Neighbouring settings jumped from the top of the table to the bottom. The side (long or short) and the market mattered much more than the setting.

Does the volume oscillator give a trading signal?⌄

Not much of one in this test. Only 6 of 294 comparable settings beat a random entry by two spreads. Comparable means it traded within 25% as often and exited the same way. And the typical reliable long setting on ES earned -0.009% a trade more than simply buying any open and holding as long. On SPY it was -0.022%.

Is it better to set the fast length longer than the slow length?⌄

No. A setting typed as fast 70, slow 30 crosses below zero on exactly the days the normal 30/70 crosses above zero, because volume averages are never negative. It is the same signal, flipped. On yen futures, short, the four inverted settings from my 2025 article scored a Ret/DD from -0.28 to 4.53.

What is the volume oscillator formula?⌄

The version tested here is TradeStation's VolumeOsc: the simple average of volume over the short length, minus the simple average over the long length, divided by the long average, times 100. The plain difference without dividing crosses zero on the same days. Versions built on exponential averages cross on different days and were not tested.

How do you read the volume oscillator?⌄

Above zero, recent volume is running above its longer-run level. Below zero, it is running under it. That reading is accurate. What the typical setting did not do here is beat drift: the typical reliable ES long setting earned -0.009% a trade over buying any open, and only 215 of 467 beat drift at all.

Did the volume oscillator yen short strategy work?⌄

Over the full window, the default did: 14/28 crossing below zero, short for 4 bars, scored a Ret/DD of 2.62 on 190 trades, rank 49 of 534. But it scored 2.17 from 2006 to 2016 and only 0.48 from 2016 to 2026. Across every setting, the yen short side followed the yen's trend: 281 of 630 short backtests made money in the first half and 532 of 630 in the second.

Read the Strategies, Backtested hub
← Back to Research

Table of contents

  • TL;DR: the answer box
  • How I tested the volume oscillator
  • Is "fast longer than slow" a better volume oscillator setting?
  • Where does the default volume oscillator setting rank?
  • What are the best volume oscillator settings?
  • Does a volume oscillator signal beat a random entry?
  • Did the yen short work?
  • The verdict, and the honest limits
  • What this means for you
  • Reference tables
  • Methodology
  • FAQs

Overfit - the newsletter

Skip the hype. Trust the data.One practical takeaway per issue.

Running a quick security check before this can be sent.

Delivered +2 times a month - when the work is ready, not on a calendar.I'll never sell your address.Unsubscribe in one click, any time.

Related Articles

Back to all research
#147

Mean Reversion: 40 Ways to Buy the Dip, and the 16 That Held Up

Nov 5, 2026 · 7 min read

Forty buy-the-dip entries tested on 33.5 years of SPY, 17,385 trades, every one measured against what entering on any day and holding as long paid. 35 of 37 rankable entries beat it. Then the window was cut into three periods: 16 held their edge, 11 decayed to under half, and only 4 of the top 10 held up.

Read more→
#155

Donchian Channel: What It Is, How to Trade It, and 900 Backtests on 15 Markets

Oct 29, 2026 · 9 min read

A Donchian channel is the highest high and the lowest low of the last N bars, with a middle line halfway between. I traded it both ways, as a breakout and as a fade, in 900 variants on 15 markets from 2004 to 2026. The breakout made money on the side each market drifted (283 of 300 variants) and rarely against it (43 of 300). Set beside random entries with the same exit, 111 of 900 variants beat the random 95th percentile per bar held.

Read more→

Overfit - the newsletter

Skip the hype. Trust the data.

One practical, evidence-driven takeaway per issue - strategy testing, portfolio construction, market structure, trading psychology, tactical asset allocation.

Running a quick security check before this can be sent.

Delivered +2 times a month - when the work is ready, not on a calendar.I'll never sell your address.Unsubscribe in one click, any time.

StatOasis is calm, evidence-based algorithmic-trading education, founded by Ali Casey. Ali builds systematic trading strategies and teaches the workflow behind them: research, build, test, combine, deploy. He writes the Overfit newsletter, published since 2024, and runs the Algo Trading Masterclass.

Socials

  • X ↗
  • YouTube ↗
  • Instagram ↗
  • LinkedIn ↗
  • GitHub ↗
  • Muck Rack ↗
  • LinkedIn SO ↗
  • GitHub SO ↗

Products

  • Overfit - the newsletter
  • Algo Trading Masterclass
  • StatOasis Community
  • 36 Ways to Buy the Dip
  • AlgoChef ↗

Reading & tools

  • Research
  • Methodology
  • Survive the Decade
  • Wall of Love

StatOasis

  • About Ali Casey
  • Contact
© 2026 StatOasis. Calm, evidence-based.
PrivacyTermsHypothetical resultsCalifornia