zeonta.kst() — Four weighted-and-smoothed ROC cycles combined into one long-cycle momentum line.
What it measures
Martin Pring combines four separately smoothed roc cycles into one line, weighting the longer cycles more heavily on the theory that they capture significant momentum shifts better than short-term noise does.
Formula
KST = 1*SMA(ROC(roc1),sma1) + 2*SMA(ROC(roc2),sma2) + 3*SMA(ROC(roc3),sma3) + 4*SMA(ROC(roc4),sma4)
Parameters
Required inputs: close
| Parameter | Default |
|---|---|
roc1 |
10 |
roc2 |
15 |
roc3 |
20 |
roc4 |
30 |
sma1 |
10 |
sma2 |
10 |
sma3 |
10 |
sma4 |
15 |
signal |
9 |
Returns
| Column |
|---|
KST_10_15_20_30 |
KSTs_10_15_20_30 |
Usage
Examples run against the 300-bar OHLCV fixture in tests/data/ohlcv.csv, loaded as df. The output shown is the real output.
import pandas as pd
import zeonta
df = pd.read_csv('tests/data/ohlcv.csv', parse_dates=['date']).set_index('date')
zeonta.kst(df['close']).tail(3)
KST_10_15_20_30 KSTs_10_15_20_30
date
2024-10-25 -10.961943 -10.673602
2024-10-26 -12.683430 -10.766873
2024-10-27 -14.701257 -11.235720
Accessor form: df.zta.kst(...)
How to read it
Read like macd: the crossover between KST and its own signal line, or KST crossing its own zero line, are the two standard reads.
Pitfalls
Nine parameters in total (four ROC lengths, four matching SMA lengths, one signal length) — Pring’s own daily-chart defaults are widely used as-is rather than tuned per symbol.
Reference
Formula source: https://chartschool.stockcharts.com/table-of-contents/technical-indicators-and-overlays/technical-indicators/prings-know-sure-thing-kst