Concept

Schaff Trend Cycle

Schaff Trend Cycle is a Momentum & Oscillators concept. The Library holds 1 implementation, a working definition you can pull into Quant.

MACD + stochastic cycle

Top Schaff Trend Cycle indicator

The top custom implementation, built on the original standard Schaff Trend Cycle formula.

1 total

Want to trade Schaff Trend Cycle? The implementation below is one prompt away from a backtested strategy in Quant.

What is the Schaff Trend Cycle?

The Schaff Trend Cycle (STC) is a momentum oscillator developed by currency trader Doug Schaff that runs a stochastic calculation on MACD values instead of price. A MACD line is computed first (23- and 50-period EMAs are the common defaults, slower than the classic 12/26), then a stochastic oscillator normalization is applied to that MACD over a cycle window, commonly 10 bars, smoothed, and applied a second time. The result is a 0-100 line that moves quickly between its bounds and flattens against them while a trend runs.

Schaff developed the indicator out of foreign-exchange work in the 1990s, starting from the observation that currency trends tend to accelerate and decelerate in broadly cyclical waves regardless of direction. His design fuses the two standard tool families, wrapping a cycle-measuring stochastic around a trend-measuring MACD, with the slower MACD inputs keeping the trend leg stable while the stochastic passes supply the speed. It spread through retail charting platforms, where it is often marketed as a faster MACD; the speed is real, and so is the extra noise.

The premise is that MACD identifies trend turns but arrives late; measuring where the MACD sits inside its own recent range registers the shift before a signal-line cross does. Convention places trigger lines at 25 and 75: a cross up through 25 flags an emerging uptrend, a cross down through 75 an emerging downtrend, and time spent pinned near 0 or 100 reads as trend-in-progress rather than a reversal warning. The extra speed is paid for in choppy conditions, where STC whipsaws like any fast oscillator.

Structurally it belongs to the transform-of-a-transform family alongside Stochastic RSI: both rescale an already derived oscillator against its own recent range, the same generalization behind RSI of other sources. Each normalization pass shortens effective memory, which is where the earliness comes from and why the line saturates: once the MACD holds near the top of its recent range, the doubled stochastic pins at 100 until the trend tires. That behavior makes classic overbought and oversold readings mostly inapplicable, and divergence work on STC is rare for the same reason; a line living at its bounds has little swing structure to compare with price.

How to read the Schaff Trend Cycle on a chart

Defaults are a 23/50 EMA MACD, a 10-bar cycle window, and trigger lines at 25 and 75.

  1. 1Apply STC in a pane below price and note its two modes: fast traverses between the bounds, and long flat stretches pinned near 0 or 100.
  2. 2Read a cross up through 25 after basing near 0 as the emerging-uptrend signal; a cross down through 75 after riding near 100 is the bearish mirror.
  3. 3Treat time spent flat at an extreme as trend-in-progress, not as a reversal setup.
  4. 4Before acting, check the underlying MACD and the higher-timeframe direction; a signal against both is the weakest form of the pattern.

How traders use it

  • Trigger-line crossings: long bias on a cross up through 25, short or flat bias on a cross down through 75, usually filtered by a higher-timeframe trend filter so signals are only taken with the larger flow.
  • As an early-warning layer over MACD itself: when STC hooks away from an extreme while the MACD has not yet crossed its signal line, the hook is treated as advance notice to tighten stops or scale down, pending confirmation.
  • Saturation as a regime read: an STC pinned near a bound says the move is still one-sided, while rapid full-range oscillation marks rangebound conditions in which its own trend signals degrade.
  • As a bounded component in multi-oscillator layouts: the fixed 0-100 scale lets STC sit beside RSI or stochastic readings without rescaling, contributing the trend-cycle vote to a combined view.
  • In systematic testing: the construction is fully mechanical, so it drops cleanly into backtests, where the fair comparison is against plain momentum or ROC baselines as well as MACD, to confirm the extra machinery earns its keep.

Schaff Trend Cycle vs similar oscillators

MACD: MACD is the raw material: two EMAs, their difference, and a signal line. STC re-expresses that difference as a bounded cycle position, trading MACD's slower but steadier crosses for earlier, noisier threshold breaks. The same information at two processing depths.

Stochastic Oscillator: The stochastic normalizes price against its recent range in one pass. STC points the same normalization at a MACD and applies it twice, inheriting the stochastic's speed while aiming it at trend data instead of raw closes.

Stochastic RSI: The closest structural sibling: an oscillator of an oscillator, built by rescaling RSI against its own range. Both saturate at the bounds in trends and whipsaw in chop; the difference is the engine inside, mean-reversion-leaning RSI versus trend-leaning MACD.

Concept family

Momentum & Oscillators

91 concepts mapped · 91 in the Library

Schaff Trend Cycle FAQ

Turn Schaff Trend Cycle into a trading strategy.

Take the implementation from this page into Quant, then build on it, backtest it on real data, and keep refining it in conversation.