STRASMORE/EXPLORE 2,170 QUERIES

RSI(14) on identical closes: Wilder's smoothing against a simple average

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-08-17, from Why Your RSI Differs Between Platforms.

as of series 60×4read in context →
RSI(14) on identical closes: Wilder's smoothing against a simple average — 60 rows by 4 columns, computed from US exchange, SIP and OPRA data.
datersi_wilderrsi_simplersi_spread
2026-04-0654.4159.735.32
2026-04-0746.8848.962.08
2026-04-0853.8162.418.6
2026-04-0955.6565.710.05
2026-04-1055.6367.4711.84
2026-04-1353.6461.57.86
2026-04-1453.0560.657.6
2026-04-1562.2467.14.86
2026-04-1657.4262.184.76
2026-04-1764.1673.369.2
2026-04-2066.5278.411.88
2026-04-2156.7263.396.67
2026-04-2262.7367.064.33
2026-04-2362.9467.044.1
2026-04-2459.762.012.31
2026-04-2755.2464.439.19
2026-04-2858.2662.674.41
2026-04-2957.5360.633.1
2026-04-3058.7461.642.9
2026-05-0166.4369.312.88
2026-05-0461.7665.753.99
2026-05-0567.2665.591.67
2026-05-0669.4171.071.66
2026-05-0769.3167.062.25
2026-05-0872.9468.944
2026-05-1171.9478.046.1
2026-05-1273.2575.512.26
2026-05-1375.5977.531.94
2026-05-1474.4580.516.06
2026-05-1575.6687.8812.22
2026-05-1871.3582.0310.68
2026-05-1972.1683.5411.38
2026-05-2074.4184.39.89
2026-05-2176.1581.875.72
2026-05-2278.3690.4812.12
2026-05-2677.3786.989.61
2026-05-2778.8586.657.8
2026-05-2879.7987.57.71
2026-05-2978.7783.464.69
2026-06-0167.0170.583.57
2026-06-0273.5875.582
2026-06-0365.7463.981.76
2026-06-0466.565.850.65
2026-06-0560.7258.282.44
2026-06-0853.2953.990.7
2026-06-0942.6442.510.13
2026-06-1043.7840.113.67
2026-06-1148.1241.536.59
2026-06-1244.0534.199.86
2026-06-1549.4640.199.27
2026-06-1652.1240.4911.63
2026-06-1748.8936.7912.1
2026-06-1850.9439.0711.87
2026-06-2249.8942.197.7
2026-06-2347.0730.4116.66
2026-06-2445.8132.6913.12
2026-06-2532.222.99.3
2026-06-2641.2533.487.77
2026-06-2939.935.354.55
2026-06-3046.9149.072.16
Rows × columns
60 × 4
Period covered
to
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for RSI(14) on identical closes: Wilder's smoothing against a simple average, derived from the stored result.
ColumnTypeRangeNotes
date date 2026-04-06 to 2026-06-30
rsi_wilder number 32.2 to 79.79
rsi_simple number 22.9 to 90.48
rsi_spread number 0.13 to 16.66

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

the exact SQL behind every number
WITH
    daily AS
    (
        SELECT arraySort(groupArray((day, px))) AS pts
        FROM
        (
            SELECT
                date                  AS day,
                toFloat64(max(close)) AS px
            FROM global_markets.stocks_daily_aggs
            WHERE ticker = 'AAPL'
              AND date >= '2025-01-02'
              AND date <= '2026-06-30'
            GROUP BY day
        )
    ),
    steps AS
    (
        SELECT
            arrayMap(p -> p.1, pts)                                 AS days,
            arrayPopFront(arrayDifference(arrayMap(p -> p.2, pts))) AS chg
        FROM daily
    ),
    points AS
    (
        SELECT
            days,
            arrayMap(x -> greatest(x, 0.0),  chg) AS up,
            arrayMap(x -> greatest(-x, 0.0), chg) AS dn,
            arrayJoin(arrayMap(k -> toInt64(k), arraySlice(arrayEnumerate(chg), -60))) AS e
        FROM steps
    ),
    averages AS
    (
        SELECT
            days[e + 1] AS day,
            (arraySum(arraySlice(up, 1, 14)) / 14) * pow(13.0 / 14.0, e - 14)
                + arraySum(arrayMap((g, j) -> g * pow(13.0 / 14.0, toInt64(j) - 1),
                      arrayReverse(arraySlice(up, 15, e - 14)),
                      arrayEnumerate(arraySlice(up, 15, e - 14)))) / 14 AS up_wilder,
            (arraySum(arraySlice(dn, 1, 14)) / 14) * pow(13.0 / 14.0, e - 14)
                + arraySum(arrayMap((g, j) -> g * pow(13.0 / 14.0, toInt64(j) - 1),
                      arrayReverse(arraySlice(dn, 15, e - 14)),
                      arrayEnumerate(arraySlice(dn, 15, e - 14)))) / 14 AS dn_wilder,
            arraySum(arraySlice(up, e - 13, 14)) / 14 AS up_simple,
            arraySum(arraySlice(dn, e - 13, 14)) / 14 AS dn_simple
        FROM points
    )
SELECT
    toString(day)                                                         AS date,
    round(100 - 100 / (1 + up_wilder / greatest(dn_wilder, 0.000001)), 2) AS rsi_wilder,
    round(100 - 100 / (1 + up_simple / greatest(dn_simple, 0.000001)), 2) AS rsi_simple,
    round(abs(rsi_wilder - rsi_simple), 2)                                AS rsi_spread
FROM averages
ORDER BY date

Run your own version of this

The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.

More from this analysisWhy Your RSI Differs Between Platforms
Two definitions of one daily close, side by side series 21×4 Where the minute bars actually are, by ET hour ranking 16×3 One session, one formula, different amounts of warm-up ranking 10×3 SPY volume by minute into the close, June 10 2026 series 25×3 Odd lot share of prints and of volume, minute by minute series 15×4 One-minute AAPL bars rebuilt from individual trades, June 10 2026 series 15×6 See all 2,170 queries →