# Schaff Trend Cycle

A Momentum & Oscillators concept (MACD lineage) in the LuxAlgo Library, with 1 indicator implementation.

## 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](https://www.luxalgo.com/library/concept/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](https://www.luxalgo.com/library/concept/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](https://www.luxalgo.com/library/concept/stochastic-rsi/): both rescale an already derived oscillator against its own recent range, the same generalization behind [RSI of other sources](https://www.luxalgo.com/library/concept/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](https://www.luxalgo.com/library/concept/overbought-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. Apply 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. Read 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. Treat time spent flat at an extreme as trend-in-progress, not as a reversal setup.
4. Before 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](https://www.luxalgo.com/library/concept/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](https://www.luxalgo.com/library/concept/momentum/) or [ROC](https://www.luxalgo.com/library/concept/roc/) baselines as well as MACD, to confirm the extra machinery earns its keep.

## Schaff Trend Cycle vs similar oscillators

- **MACD** (https://www.luxalgo.com/library/concept/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** (https://www.luxalgo.com/library/concept/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** (https://www.luxalgo.com/library/concept/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.

## FAQ

### How is the Schaff Trend Cycle different from MACD?

STC starts from a MACD but does not read it directly. It measures where the MACD sits inside its recent range using two rounds of stochastic normalization, which produces a bounded 0-100 line that typically turns earlier than a MACD signal-line cross. The cost is more false turns in sideways markets; the underlying trend information is still MACD's.

### What do the 25 and 75 levels on the Schaff Trend Cycle mean?

They are the conventional trigger lines. A cross up through 25 is read as an uptrend getting started, a cross down through 75 as a downtrend getting started, and readings held beyond them as an established move still running. They are not overbought or oversold levels in the reversal sense, and crossings still fail regularly in ranges.

### Who created the Schaff Trend Cycle?

Doug Schaff, a currency trader, developed it during the 1990s from the idea that FX trends expand and contract in roughly cyclical waves. It spread through foreign-exchange practice and later through charting platforms rather than a single canonical publication, so sourcing details are thinner than for indicators documented in books or journals.

### What are the standard Schaff Trend Cycle settings?

Common defaults are 23 and 50 for the MACD EMAs, a 10-bar window for the stochastic passes, and 25/75 trigger lines. Shortening the inputs makes an already fast line frantic; most users adjust by moving up a timeframe or adding filters instead. Settings tuned to look perfect on history tend to disappoint forward.

### Is the Schaff Trend Cycle better than MACD?

It is earlier, not better. The bounded cycle reading typically turns before a signal-line cross, which helps at genuine reversals and hurts in ranges, where the speed manufactures false starts. Which trade-off wins depends on the market and the filters around it; the better-MACD label oversells a real but conditional edge.

## Implementations in the Library

- Schaff Trend Cycle (LuxAlgo): https://www.luxalgo.com/library/indicator/schaff-trend-cycle/

## Related concepts

- MACD: https://www.luxalgo.com/library/concept/macd/
- PPO: https://www.luxalgo.com/library/concept/ppo/
- APO: https://www.luxalgo.com/library/concept/apo/
- OsMA: https://www.luxalgo.com/library/concept/osma/
- Zero-lag MACD: https://www.luxalgo.com/library/concept/zero-lag-macd/
- MACD-V: https://www.luxalgo.com/library/concept/macd-v/
- Impulse MACD: https://www.luxalgo.com/library/concept/impulse-macd/
- Volume-weighted MACD: https://www.luxalgo.com/library/concept/volume-weighted-macd/

---

Source: https://www.luxalgo.com/library/concept/schaff-trend-cycle/ (LuxAlgo Library, the encyclopedia of trading & technical analysis). Free to use with attribution: https://www.luxalgo.com/library/license/