The Stochastic Oscillator is a momentum indicator that shows where the latest closing price sits inside a recent high-low range. It plots that location on a scale from 0 to 100.
A reading of 90 means the close is near the top of the selected range. A reading of 10 means it is near the bottom. It does not mean an asset is 90% overvalued or 10% undervalued.
The idea is simple. In a persistent advance, prices often close near the top of their recent range. In a decline, they often close near the bottom. Stochastic makes that behavior visible.
This distinction fixes the most common mistake traders make with Stochastic:
Above 80 is not an automatic sell signal. Below 20 is not an automatic buy signal.
This is how I read the basic picture:
| Reading | What it actually says |
|---|---|
| %K near 100 | The latest close is near the top of the recent range. |
| %K near 0 | The latest close is near the bottom of the recent range. |
| %K above %D | The faster line is above its smoothed average. Short-term momentum has improved. |
| %K below %D | Short-term momentum has weakened relative to its recent average. |
| Both lines above 80 | Price is closing near recent highs. A trend may keep them there. |
| Both lines below 20 | Price is closing near recent lows. A decline can keep them there. |
How the Stochastic Oscillator is calculated
The first calculation compares the current close with the highest high and lowest low over a chosen number of candles.
Raw %K = 100 x (Close - Lowest low) / (Highest high - Lowest low)
Suppose the highest high over 14 candles is 110, the lowest low is 90, and the latest close is 106:
Raw %K = 100 x (106 - 90) / (110 - 90)
Raw %K = 80
The close finished 80% of the way from the bottom of the range to the top.
Despite the name, 80 is not an 80% probability that price will rise or fall. The calculation knows nothing about earnings, valuation, market news or the next candle. It only knows the close and the recent range.
What %K and %D mean
Most Stochastic charts show two lines.
%K is the faster line. It comes from the close-to-range calculation, sometimes with additional smoothing.
%D is a moving average of %K. It changes more slowly and acts as the signal line.
The charts in this guide use 14,3,3:
- 14 candles for the high-low range;
- a 3-period average to smooth raw %K;
- a 3-period average of smoothed %K to calculate %D.
Platforms do not always use the same names. Some show Fast, Slow or Full Stochastic. Others display Period K, Smoothing and Period D. I check the settings panel before comparing readings from two charts. A raw 14-period %K will move faster than a 14,3,3 version even though both may be called Stochastic.
The period counts candles, not days. A 14 setting covers 14 daily candles on a daily chart and 14 five-minute candles on a five-minute chart.
Why overbought does not mean price must fall
The labels overbought and oversold are easy to misunderstand. They describe location within the recent range. They do not measure how far price is from fair value.
NVDA’s smoothed %K moved above 80 on June 4, 2025. It remained above 80 for 33 trading sessions through July 22. The closing price rose from 141.92 to 167.03 during that stretch, about 17.7%.
Selling on the first reading above 80 would have meant taking the opposite side of a persistent move.
When Stochastic stays above 80 while price keeps making higher highs and higher lows, I read it as strong range position. I start looking for weakness only when price structure breaks or the oscillator loses the zone and fails to recover.
The same logic works below 20. In a downtrend, repeated closes near the bottom of the range can keep Stochastic oversold while price continues lower.
What a %K and %D crossover tells you
A bullish crossover occurs when %K moves above %D. A bearish crossover occurs when %K moves below %D.
The crossover says that the faster reading has changed relative to its short average. It does not say that the wider trend has reversed.
Location helps. A bullish crossover below 20 tells me that price has started closing higher within a range where it had recently been near the bottom. That is more specific than a crossover near 50, but it still needs a price level that defines failure.
AAPL produced two similar returns above 20 in September and October 2021. After the September 23 signal, the stock was 2.4% lower ten sessions later. After the October 5 signal, it was 5.4% higher ten sessions later.
The indicator did not know which one would work. What I could control was the risk definition.
For the first attempt, the September 20 low offered a nearby invalidation level. Price broke it six sessions later. For the second, the October 4 low provided a new level. It held during the following ten sessions.
I do not need a crossover to be right every time. I need to know where the idea is wrong before I act on it.
Three ways I use Stochastic without turning it into a buy button
1. A range rejection
Stochastic is easiest to interpret when price is rotating between visible support and resistance.
For a possible move up, I look for price to test support, reject the level, and close back inside the range. A bullish Stochastic crossover or a return above 20 can support that reading.
The order matters. Support and rejection define the trade idea. The oscillator describes the momentum change. If price closes below support, an oversold reading does not rescue the setup.
2. A pullback within a trend
In an uptrend, I do not sell simply because Stochastic is above 80. I wait for a pullback and watch whether price holds the latest higher low or another planned support area.
If Stochastic falls during the pullback and then turns up while price holds that level, it can help with timing. The trend comes from price. Stochastic tells me whether the close is moving back toward the top of its short-term range.
For a downtrend, the logic is reversed.
3. Divergence as a warning
Bearish divergence appears when price makes a higher high while Stochastic makes a lower high. Bullish divergence is a lower price low with a higher oscillator low.
Divergence shows that the close has become less dominant within the recent range. It does not identify the exact reversal candle. I wait for price to break a swing level before treating divergence as more than a warning.
Stochastic settings: faster is not automatically better
| Change | Effect |
|---|---|
| Shorter %K period | Reacts faster, reaches extremes more often and produces more noise. |
| Longer %K period | Uses a wider range and changes more slowly. |
| Less smoothing | Keeps more of raw %K’s movement. Crossovers increase. |
| More smoothing | Reduces small swings but makes turns later. |
| Lower timeframe | The same settings describe a shorter piece of market history. |
I start with 14,3,3 because it gives me a common reference. I only change it when I can state what problem the change solves.
Making the oscillator faster because a missed move looks obvious in hindsight is not a test. I want the same settings applied to enough trades to measure signal frequency, false starts, average loss and results after costs.
Stochastic Oscillator vs RSI and Stoch RSI
Stochastic and RSI both run from 0 to 100, but they measure different things.
| Indicator | What it measures |
|---|---|
| Stochastic Oscillator | The close’s location inside a recent price range. |
| RSI | The balance between recent average gains and losses. |
| Stochastic RSI | The current RSI reading’s location inside its own recent range. |
A Stochastic reading of 80 and an RSI reading of 80 are not interchangeable. Stoch RSI is also not a faster version of ordinary Stochastic. Its input is RSI rather than price.
When I ignore a Stochastic signal
I pass on a crossover when:
- price has no clear support, resistance or trend structure;
- the signal appears in the middle of a noisy range;
- a strong trend is pinning the oscillator at an extreme and I would be fading it;
- the expected move is too small after spread and other trading costs;
- I cannot define the price level that invalidates the idea.
More signals do not make the indicator more useful. A crossover becomes useful when it answers a question already visible on the price chart.
