How Schaff Trend Cycle Is Calculated: Formula, Inputs, and Limits

Learn Schaff Trend Cycle calculation inputs and limitations.

Direct answer

Schaff Trend Cycle (STC) is commonly calculated by taking a MACD-like momentum line and then converting it into a bounded oscillator using a two-step Stochastic-style normalization. In practice, you compute an intermediate MACD, smooth it, and then apply a rolling min/max normalization to map the result into a 0–100 scale. Some implementations apply the stochastic normalization more than once (often described as a “double stochastic” approach), which is why STC is sensitive to the chosen lookback periods and smoothing.

Mechanism and definition (what STC is doing)

STC is an oscillator intended to express trend-cycle behavior. “Oscillator” here means the output is mapped into a fixed range (commonly 0 to 100) rather than reported in raw price units. That mapping lets you compare turning points over time even when price levels change.

A widely used conceptual pipeline is:

  1. Compute a MACD-like series from a chosen price input.
    • A MACD-like line is formed from two moving averages with different lengths.
    • A second moving average (often called the signal) is applied to the MACD line, producing a smoothed momentum measure.
    • The STC calculation typically uses the smoothed MACD or a closely related line as the input to the stochastic normalization.
  2. Normalize that momentum series with a rolling min/max window.
    • For each time step, find the lowest and highest values of the momentum series over a lookback window.
    • Compute a fraction that expresses where the current value sits between that min and max.
    • Multiply by 100 to get a 0–100 scale.
  3. Optionally apply normalization again (double stochastic behavior).
    • Many descriptions of STC include an additional stochastic mapping step, which further smooths and reshapes the oscillator.

Because implementations can differ (for example, how many stochastic passes are used, how smoothing is applied, and which exact momentum line is fed into the normalization), the most reliable way to verify STC on any platform is to check the platform’s exact definition and then reproduce the same intermediate steps.

Formula, parameters, and data requirements (how to verify independently)

Data requirements

To calculate STC, you need:

  • A time-ordered price series (for example, a closing price series). The exact price field matters.
  • A consistent time step (e.g., one bar per period).
  • The chosen parameters for moving-average lengths and normalization lookback.

If you want to independently verify an STC calculation, you must use the same input series and the same parameter values as the implementation you are testing.

A common parameter set

Many STC descriptions use parameters such as:

  • A fast moving average length
  • A slow moving average length
  • A signal smoothing length for the MACD-like component
  • A cycle lookback window used for the stochastic min/max normalization
  • Optional settings defining which smoothing method is used in intermediate steps

Because there is not one single universally identical formula across all vendors, treat these as “typical” roles of parameters rather than guaranteed names.

Core normalization step (stochastic-style)

The normalization step uses a rolling window. For a given input series (x_t) and lookback length (L):

[ \text{Osc}t = 100\times \frac{x_t - \min(x{t-L+1\ldots t})}{\max(x_{t-L+1\ldots t}) - \min(x_{t-L+1\ldots t})} ]

Two important edge cases arise here:

  • If (\max = \min) over the lookback window (no variation), the denominator becomes zero. Many implementations define the oscillator as 0, 100, or “carry forward” a previous value; you need to match the specific platform’s rule.
  • Rolling min/max makes STC path-dependent: changing (L) changes the normalization history.

Combining the steps into STC

A typical STC implementation follows this idea:

  • Let (m_t) be the MACD-like momentum series after applying the chosen moving averages and any signal smoothing.
  • Apply the stochastic normalization to (m_t) using the cycle lookback to produce an intermediate oscillator.
  • If the implementation uses the “double stochastic” approach, apply the stochastic normalization again to the intermediate oscillator (using the same or a related lookback and the same 0–100 mapping).

If you compare results across platforms and they differ, the difference usually comes from one of these “mechanics”:

  • Which exact line is used as (x_t) (raw MACD vs. signal vs. difference)
  • Whether the stochastic step is applied once or twice
  • The smoothing method used in the MACD-like component
  • The handling of zero-range windows ((\max=\min))

Limitations and risks (where STC can break down)

  1. Parameter sensitivity. STC depends on multiple lookback and smoothing lengths. Small changes can shift turning points, which can make the same market look more “trend-like” or more “cyclical” depending on settings.

  2. Normalization instability in low-range conditions. When the input series has very little variation over the lookback window, the min/max range can become tiny, making the oscillator jumpy or dominated by the implementation’s zero-denominator rule.

  3. Regime and noise effects. STC is an oscillator derived from momentum and rolling extremes. In noisy, sideways, or rapidly changing regimes, the oscillator can produce frequent swings that do not correspond to sustained directional movement in the underlying price.

  4. Misinterpretation risk. A bounded oscillator is not automatically a standalone “buy” or “sell” signal. Interpreting STC crossings or levels requires context and a consistent rule set; otherwise, the same oscillator behavior can mean different things under different market conditions.

Verification and next questions (how to check your calculation)

To independently verify STC:

  • Reproduce the computation step-by-step using the same input price series and identical parameters.
  • Record intermediate results: the MACD-like component, the first normalization output, and the second normalization output (if used).
  • Check the platform-specific handling of the (\max=\min) case and confirm whether smoothing is applied before or after each transformation.

If you want, share the exact parameter names and the platform’s STC description you are trying to match (for example, the lengths used for the MACD-like part and the cycle lookback). Then you can compare each intermediate step rather than relying only on the final oscillator shape.

Trading foreign exchange and CFDs involves substantial risk. Information on FoxiForex is educational and is not personal financial advice. Sponsored placements are labelled clearly.