Skip to content

๐Ÿš€ ROC โ€” Rate of Change

ROC is the most direct momentum measurement possible: the percentage change of price over the last \(N\) periods, with nothing else layered on top.


๐Ÿ’ก Financial Meaning

If ROC is positive and rising, price is not just going up โ€” it is going up faster than \(N\) periods ago. Traders watch for zero-line crosses (a shift from momentum loss to momentum gain, or vice versa) and for divergences: price makes a new high while ROC makes a lower high, warning that the advance is losing steam even though the price chart still looks strong.


๐Ÿ”ข Mathematical Formula

\[ ROC_t(N) = 100 \cdot \frac{C_t - C_{t-N}}{C_{t-N}} \]

This is simply a percentage \(N\)-period return, re-expressed as a running indicator rather than a one-off calculation.


โš™๏ธ Parameters

Parameter Key Default Description
Period (\(N\)) period 12 Number of sessions back used as the reference price.

๐ŸŽ›๏ธ Signal Processing Equivalent โ€” Normalised Finite-Difference Derivative

ROC is a discrete derivative of \(\log\)-free price, taken over a fixed lag of \(N\) samples rather than a single sample, and normalised by the base value:

\[ ROC_t \approx N \cdot \frac{\Delta C}{\Delta t}\bigg/ C_{t-N} \times 100 \]

Unlike MACD (which subtracts two low-pass outputs to approximate a smoothed derivative), ROC is a raw, unsmoothed finite difference โ€” it inherits all the high-frequency noise of the price series, amplified rather than filtered.

flowchart LR
    C0["๐Ÿ’น C(tโˆ’N)"] --> DIFF["โž– C(t) โˆ’ C(tโˆ’N)"]
    C1["๐Ÿ’น C(t)"] --> DIFF
    DIFF --> NORM["โž— รท C(tโˆ’N)"]
    NORM --> SCALE["โœ–๏ธ ร—100"]
    SCALE --> ROC["๐Ÿš€ ROC(t)"]

Noise amplification

Because ROC applies no smoothing, short periods (\(N \le 5\)) produce a very jagged series. It is often used with a longer \(N\), or fed through an additional moving average, when a cleaner momentum reading is needed.

Rate of change (technology) on Wikipedia