I called it the KST, because it stands for “K”now “S”ure “T”hing

From http://www.pring.com/articles/article28.htm

There are many different cycles that operate over many different time frames.  An example would be a 12-month rate of change (ROC) indicator.  It only reflects a limited number of cycles associated with the set 12-month timeframe.  It occurred to me that an indicator that combines several different time spans could offer better results.  Also, the raw ROC indicator can be quite jagged, so one- or two month’s data could easily give you a false sense of a trend reversal.  A smoothed version of the ROC might also prove useful in identifying trend reversals.  For these reasons, I developed a smooth summed rate of change indicator called the KST.

Tired of hearing market forecasters talking about their indicators as if they were guaranteed to make the user rich, I called it the KST, because it stands for “K”now “S”ure “T”hing.  I’ve learned after all my years trading that nothing is a sure thing, but the indicator does offer a good charting rendition of the economic growth path that revolves around the business cycle.  Actually, the concept of a summed rate of change is not new.  Joseph Schumpeter used it in his classic book, Business Cycles (McGraw Hill 1939).  My friend, Ian Notley of Yelton Fiscal, adopted this concept for his own cycle work and gave me the idea to develop my own formula.

The table below shows how the KST formula is calculated, along with the corresponding time frames for monthly data.


Rate of Change

Smoothing Factor



= Total


9-month ROC

6-month MA





12-month ROC

6-month MA





18-month ROC

6-month MA





24-month ROC

9-month MA











The KST concept was originally derived for long-term trends, but the idea of four (4) smoothed summed ROCs can easily be applied to short-, intermediate-, and even intraday trends.  I’m not suggesting they are the best parameters that can be devised; it’s very likely they can be improved.  It is important though to bear in mind that most of us are looking for perfect indicators, which is an unrealistic Holy Grail.  The best anyone can hope for is reasonable consistency, and that’s my objective with the KST.

The formula for the long-term KST assumes the series being plotted experiences cyclic rhythms associated with the business cycle.  This means that when a linear up or down trend is experienced, the KST, like any momentum indicator, gives false or excessively premature signals. Fortunately, linear trends are the exception, rather than the rule.  Recent examples include the Japanese stock market in the 1970’s and 1980’s, and U.S. equities in the 1980’s and 1990’s.  Also, since the indicator involves several moving averages, the KST is not affected by sudden and/or sharp turns, such as those associated with the 1987 crash or the decline in the Hong Kong equity market immediately following the Tiananmen Square massacre in 1989.

KST signals are triggered either when the series changes direction, or the indicator crosses its 9-month moving average (MA).  The red and green highlights in Chart 1 indicate when the KST is below or above the dashed red line; i.e., the 9-month MA. 

KSTs occasionally throw up positive and negative divergences, as well.   A positive divergence developed between 1999 and 2002, when the Index moved lower but the KST bottomed out at a higher level (this has been is flagged on the chart by the two green arrows.)  Overbought and oversold zones can also be constructed and used to indicate when the price series in question is close to its normal overbought level.  Like all momentum series, KST signals should be confirmed by some kind of a trend reversal confirmation from the series it is monitoring.  After all, we are buying and selling the price, not the momentum, and price occasionally experiences a linear trend that does not conveniently fall into the usual business cycle rhythm assumed by the KST formula.



# Martin Pring's KNOW SURE THING (KST) Indicator
# Daily KST Simple Moving Average
# ————————————————
declare lower;

#–Input variables
input rocLength1 = 10;
input rocLength2 = 15;
input rocLength3 = 20;
input rocLength4 = 30;

def sumRocLength = rocLength1+rocLength2+rocLength3+rocLength4;
def avgLength1 = 10;
def avgLength2 = 10;
def avgLength3 = 10;
def avgLength4 = 15;

#–Calc ROC – RateOfChange(length, color norm length, price)
def ROC1 = RateOfChange(rocLength1, rocLength1, close);
def ROC2 = RateOfChange(rocLength2, rocLength2, close);
def ROC3 = RateOfChange(rocLength3, rocLength3, close);
def ROC4 = RateOfChange(rocLength4, rocLength4, close);

#–Plot lines
plot zeroLine = 0;

plot fastKST = (Average(ROC1,avgLength1)*(rocLength1/sumRocLength))+

plot slowKST = Average(fastKST,rocLength1);

#–Set Colors and Style

#–End Code————————————–

Posted in Charting & Analysis Tagged with: , , , , ,