KST Backtest on BTC/USDT: +57.40% Net, the Best New Momentum Rule in the Lab
Know Sure Thing (KST) on real hourly BTC/USDT 2023: +109.28% naive, +57.40% after fees and funding, Sharpe 1.63. The multi-period ROC momentum rule outranks MACD, PPO, and every momentum rule except TRIX.
KST Backtest on BTC/USDT (2023, hourly, real fees)
The Know Sure Thing, Martin Pring's momentum oscillator, does something none of the other momentum rules in this lab do: it measures momentum over four different horizons at once, weighting the longer ones more heavily. The idea is that a single ROC period is either too jumpy (short) or too slow (long), so you blend them. It worked — KST is the best new momentum rule tested since post 32, at +57.40% net. Strategy Lab #55.
The setup
KST = SMA(ROC10) + 2×SMA(ROC15) + 3×SMA(ROC20) + 4×SMA(ROC30), with smoothing windows 10/10/10/15, compared to its own 9-period SMA. Long when KST is above its signal. Same engine, same costs.
Results
| Strategy | Category | Total return | CAGR | MaxDD | Sharpe | Trades |
|---|---|---|---|---|---|---|
| kst | momentum | +57.40% | +57.40% | -23.73% | 1.63 | 235 |

The fee bill
| Scenario | Cost/leg | Total return | MaxDD | Sharpe | Trades | |---|---:|---:|---:|---:|---:|---:| | naive (zero cost) | 0.00% | +109.28% | -15.53% | 2.55 | 235 | | taker fee 0.05%/leg | 0.05% | +65.53% | -22.45% | 1.79 | 235 | | + funding 0.01%/8h | 0.05% | +57.40% | -23.73% | 1.63 | 235 | | + slippage 10bp/leg | 0.15% | -1.57% | -36.23% | 0.10 | 235 | | + slippage 25bp/leg | 0.30% | -51.37% | -60.40% | -2.12 | 235 |
The gross Sharpe of 2.55 is the highest of any strategy in the entire lab — above even the EMA envelope. The multi-period blend gave KST the momentum family's cleanest trend capture: +109.28% naive with only a -15.5% drawdown. Costs still took half of it (the lab's universal tax), and 235 trades put KST in the coin-flip band at 25bp, where it lost.
The momentum ranking, rewritten
| Strategy | Post | Trades | Naive | Fees+funding |
|---|---|---|---|---|
| TRIX | 32 | 201 | +111.94% | +64.74% |
| KST (this) | — | 235 | +109.28% | +57.40% |
| Awesome | 34 | 216 | +84.99% | +41.14% |
| PPO | 45 | 333 | +79.20% | +22.32% |
| MACD | 15 | 333 | +79.08% | +22.21% |
The top two momentum rules — TRIX and KST — have something in common beyond being good: they are the two that smooth the signal the most (triple-EMA and multi-period ROC) before deciding. The single-period sign-flippers (ROC, momentum, CMO) all died. KST's four-horizon averaging did exactly what Pring designed it to do: it kept the rule in the trend without flipping on every hourly wiggle.
What this does NOT prove
- KST's parameter set here is Pring's textbook default. The 4× weighting on the 30-period ROC is doing much of the work; other weights will change results.
- At 25bp KST is -51.37% — this is a fees-are-real strategy, not a slippage-proof one.
- One pair, one year, one regime.
Code
from backtest_base import fetch, backtest_signal, metrics
from strategy import sig_kst
df = fetch("BTCUSDT", "binance", "2023-01-01", "2023-12-31", "1h")
signal = sig_kst(df)
res = backtest_signal(df, signal, cost_per_leg=0.0005, funding_per_bar=0.0000125)
print(metrics(res, 8760))Reproduce it
cd blog-drafts/scripts
python gen_post_assets.py --ids 55Data: Binance public API, hourly OHLCV, 8,735 bars. Tables above reproduce exactly from this command.
This is a backtest on historical data, not investment advice. Past performance does not predict future results.