Wilder's Smoothing: Why Your RSI Doesn't Match Someone Else's
The math behind RSI's smoothing method, the platform differences, and how to validate signals across tools
Three ways to calculate an average
RSI is built on a simple idea: average recent gains and compare them to average recent losses. The "average" part sounds trivial, but it hides the most important detail in the entire calculation. There are three common methods for averaging, and each produces a different RSI value from the same input data:
- Simple Moving Average (SMA): Every period in the window carries equal weight. Stable, but slow to react to new information. The most volatile of the three when a new period drops out of the window — sudden "ghost" changes appear simply because an old value left the average.
- Exponential Moving Average (EMA): Recent periods receive exponentially more weight. Faster to react, but more sensitive to short-term volatility. For a 14-period EMA, the most recent candle contributes about 13% of the new value.
- Wilder's Smoothing: Technically an EMA with α = 1 / period — so for a 14-period RSI, each new candle contributes about 7% of the new average. Reacts more slowly than a standard EMA, but is smoother than both. This is the method originally published by J. Welles Wilder Jr. in 1978.
The math, with a concrete example
Suppose you have a 14-period window with an average gain of 1.40 and an average loss of 0.60 after the previous candle. A new candle closes with a gain of 2.00. Each method computes the new average gain differently:
- SMA: drop the oldest gain, add the newest, divide by 14. If the oldest gain was 0.80, new average = (14 × 1.40 − 0.80 + 2.00) / 14 ≈ 1.49.
- EMA (14-period, α ≈ 0.133): new average = previous + α × (new − previous) = 1.40 + 0.133 × (2.00 − 1.40) ≈ 1.48.
- Wilder (α = 1/14 ≈ 0.071): new average = 1.40 + 0.071 × (2.00 − 1.40) ≈ 1.44.
Three different averages from the exact same input. Compute the RSI from each and you get three different RSI values. Over a window of 50 candles, these compound into meaningfully different traces — which is why traders comparing RSI across tools often see numbers that are 5–10 points apart on the same coin.
Why Wilder picked his method
Wilder developed RSI in the 1970s commodity markets, where he wanted an indicator that responded to genuine momentum shifts without being whipsawed by single-period noise. Pure SMA was too jerky as old values dropped out; standard EMA was too reactive to single candles. Wilder's smoothing — effectively a slower EMA — sat in between: responsive enough to track real momentum, smooth enough to filter daily-cycle noise in the commodity markets he was studying.
Almost fifty years later, the choice still holds up. Wilder's smoothing produces RSI traces that align well with intuitive readings of momentum, without generating the false signals that plague faster smoothing methods. That is why TradingView, Binance, OKX, KuCoin, and most professional charting platforms adopted it as the default.
Why RSI values differ across platforms
TradingView, Binance, OKX, KuCoin, MetaTrader, and RSI Monitor all use Wilder's smoothing by default — so RSI values on these platforms should agree to within a fraction of a point. The discrepancies start to appear when you compare against:
- Some retail mobile apps that default to EMA — values will run 3–7 points ahead or behind during trending moves.
- Custom indicators built by third-party developers, which may use SMA, EMA, or proprietary smoothing.
- Backtesting platforms that may use different smoothing depending on the library — Pandas-based notebooks frequently default to EMA unless explicitly configured otherwise.
- Older charting tools and educational materials that predate the consolidation around Wilder's method.
The result: the same 14-period RSI can display materially different values across platforms purely because of the smoothing method. When traders complain that "my RSI on app X shows 35 but TradingView shows 28", it is almost always a smoothing mismatch — not a bug, not a data issue.
Platform-by-platform reference
A quick reference for the platforms most crypto traders use:
- TradingView — Wilder's smoothing (default and only option).
- Binance — Wilder's smoothing in the native chart.
- OKX — Wilder's smoothing in the native chart.
- Bybit — Wilder's smoothing in the native chart.
- KuCoin — Wilder's smoothing in the native chart.
- Coinglass — Wilder's smoothing for RSI heatmaps.
- RSI Monitor — Wilder's smoothing, matching all of the above.
- MetaTrader 4/5 — Wilder's smoothing (default).
- Some retail crypto apps — EMA (varies by app, check documentation).
- Custom indicators / scripts — varies; common defaults in Python's
pandas-taandta-libcan differ.
The practical takeaway: if you stay within the mainstream charting and exchange platforms above, you can compare RSI values directly. If you bring in a tool from outside this list — especially mobile apps or custom indicators — verify the smoothing method before trusting cross-platform comparisons.
When the difference matters most
The Wilder/EMA gap is largest exactly when traders most need RSI to be reliable:
- Sharp directional moves. During fast pumps and dumps, EMA RSI overshoots Wilder RSI by 5–10 points. A trader using EMA may see "overbought" while a Wilder user sees "approaching overbought" — same coin, different decisions.
- Near key thresholds. If your strategy triggers at RSI = 30, a smoothing mismatch can cause one platform's RSI to print 29 while another prints 32. Two different "valid" reads of the same data.
- During divergences. Divergences appear at slightly different points across smoothing methods. A divergence that's clear on a Wilder chart may be marginal on an EMA chart, and vice versa.
- Backtesting. A strategy that uses RSI thresholds will produce different equity curves on Wilder vs EMA. Backtest with the smoothing you intend to trade.
Implications for backtesting and signal validation
Two pitfalls regularly catch traders moving between platforms:
- Backtesting in one library, trading in another. A Python backtest using
pandas-tawith default EMA smoothing produces different signals than the same strategy live-traded on TradingView (Wilder). Backtested edge can evaporate when ported to a different smoothing method. - Cross-platform validation of "real-time" signals. If your alert fires at RSI = 28 on RSI Monitor (Wilder) but TradingView shows 32, the alert isn't wrong — your validation tool is using a different smoothing. Either fix the validation tool, or stop using it as the source of truth.
The fix in both cases is the same: standardize on one smoothing method end-to-end. Pick Wilder (the mainstream default) unless you have a specific reason to prefer EMA, and use it consistently from backtest to alert to chart.
RSI Monitor's approach
RSI Monitor follows Wilder's original smoothing method exactly. The
implementation lives in Rsi::Calculator and uses the same
α = 1 / period formula Wilder published in 1978. This choice means three
things in practice:
- Values match TradingView. If you cross-reference an RSI alert against a TradingView chart, the numbers will agree to within a fraction of a point.
- Values match the major exchanges. Binance, OKX, KuCoin, Bybit native charts will show the same RSI value RSI Monitor's alerts are computed from.
- Signals are backtest-portable. A backtest built with Wilder smoothing will produce signals consistent with what RSI Monitor delivers live.
If a future RSI Monitor release adds EMA as an option, it will be opt-in for paid-tier users who specifically want faster signals — not a default change that breaks every existing alert configuration.
A validation workflow for cross-platform RSI
A quick checklist when an RSI value somewhere doesn't match what you expect:
- Verify the period. RSI(14) is the default, but some platforms or scripts use 9 or 21. Match the period before suspecting smoothing.
- Verify the smoothing. Check the platform's documentation or settings for "Wilder", "RMA", "EMA", or "SMA". The terms RMA (Relative Moving Average) and Wilder's smoothing are synonymous.
- Verify the data source. Different exchanges have different price feeds; RSI on Binance BTCUSDT will differ from RSI on Coinbase BTCUSD because the underlying candles are slightly different.
- Verify candle close timing. RSI computed on an intra-candle snapshot will differ from RSI computed on closed candles. Standard practice is to wait for candle close.
Once these four match, RSI values across platforms should be identical or within rounding error. If they still don't match, you've found a bug worth reporting — but the cause is almost always one of the four above.
Why this matters in practice
If you are comparing signals across platforms, confirm that all of them use the same smoothing method first. Otherwise you are not comparing the same indicator — even when both are labeled "RSI 14". This single check resolves probably 80% of "why doesn't my RSI match?" support questions.
The deeper lesson is that every "standard" indicator carries hidden configuration choices that can change the values you read. Wilder's smoothing is the closest thing to a universal default in RSI, and standardizing on it eliminates an entire category of avoidable confusion.
Where to go next
- What Is RSI? A Complete Guide to the Relative Strength Index — foundation reading on what RSI measures and the formula it's built from.
- RSI Oversold and Overbought: Why 30 and 70 aren't magic numbers — once smoothing is consistent, threshold calibration becomes the next lever.
- RSI Divergence: How to spot momentum weakness before price reverses — divergences are sensitive to smoothing; cross-platform divergence comparison requires same-smoothing inputs.
- Multi-timeframe RSI: Using 1H, 4H, and 1D as a complete trading framework — the multi-timeframe approach assumes all frames use the same smoothing method.
Wilder's smoothing is the quiet standard that holds professional RSI usage together. Once you know what it is, the cross-platform discrepancies that confuse most retail traders make sense — and the fix is simply to use the same smoothing everywhere.