Tim Tilson's smoothing filter built from six nested EMAs blended by a 'volume factor' coefficient set.
The T3 Moving Average was published by Tim Tilson in 1998 as a smoother, lower-lag alternative to standard moving averages. Despite often being described vaguely as 'a better EMA', it has an exact, fully deterministic construction: six exponential moving averages applied in sequence (an EMA of an EMA, six layers deep), combined with four fixed coefficients derived from a single parameter called the volume factor (usually written v or b, default 0.7). The 'volume factor' has nothing to do with traded volume — it is just a weighting constant that controls how aggressively the filter compensates for lag. The result is a very smooth line that reacts faster than its smoothness would suggest, at the cost of some overshoot around sharp turns. Like every moving average, T3 is a summary of past prices: it describes what price has done, not what it will do. This entry is educational only, not financial advice, and all trading involves risk of loss.
The full expansion — which many sites hand-wave — is as follows. First compute six nested EMAs of the source, all with the same length N: e1 = EMA(price, N), e2 = EMA(e1, N), e3 = EMA(e2, N), e4 = EMA(e3, N), e5 = EMA(e4, N), e6 = EMA(e5, N). Then, with volume factor v (default 0.7), compute four coefficients: c1 = −v³, c2 = 3v² + 3v³, c3 = −6v² − 3v − 3v³, and c4 = 1 + 3v + v³ + 3v². The output is T3 = c1·e6 + c2·e5 + c3·e4 + c4·e3. Conceptually, T3 is a 'generalized DEMA' applied three times: where DEMA uses 2·EMA − EMA(EMA) to cancel lag, Tilson's version uses (1+v)·EMA − v·EMA(EMA), and composing that operation three times produces the coefficient set above. At v = 0 the formula collapses to a plain triple-smoothed EMA (maximum smoothness, maximum lag); at v = 1 it becomes a triple DEMA (least lag, most overshoot). The default 0.7 sits between those extremes. Note the coefficients sum to 1, so T3 stays on price scale.
Common defaults are length 14 (some platforms use 5 or 8 for faster variants) with volume factor 0.7, applied to the close. Raising the volume factor toward 1 reduces lag but increases overshoot; lowering it toward 0 gives a very smooth, very slow triple-EMA. Note that because six EMAs are nested, the effective smoothing window is much longer than the nominal length — a T3(14) is far slower than an EMA(14), so lengths are not comparable one-to-one across average types.
//@version=6
indicator("T3 Moving Average", overlay = true)
length = input.int(14, "Length", minval = 1)
vf = input.float(0.7, "Volume Factor", minval = 0.0, maxval = 1.0, step = 0.05)
src = input.source(close, "Source")
// Six nested EMAs
e1 = ta.ema(src, length)
e2 = ta.ema(e1, length)
e3 = ta.ema(e2, length)
e4 = ta.ema(e3, length)
e5 = ta.ema(e4, length)
e6 = ta.ema(e5, length)
// Tilson coefficients (sum to 1)
c1 = -math.pow(vf, 3)
c2 = 3 * math.pow(vf, 2) + 3 * math.pow(vf, 3)
c3 = -6 * math.pow(vf, 2) - 3 * vf - 3 * math.pow(vf, 3)
c4 = 1 + 3 * vf + math.pow(vf, 3) + 3 * math.pow(vf, 2)
t3 = c1 * e6 + c2 * e5 + c3 * e4 + c4 * e3
plot(t3, "T3", color = color.purple, linewidth = 2)Pro tip: Set the volume factor to 0 and then to 1 and watch the line transform from a slow triple-EMA into a fast, overshooting triple-DEMA — that single experiment teaches you exactly what the coefficient blend does and where your chosen setting sits on the smoothness-versus-overshoot spectrum. Remember the effective window is far longer than the nominal length when comparing T3 to other averages. Educational information only, not financial advice; no moving average predicts price, and all trading carries risk of loss.
Educational only — not financial advice, not a recommendation to trade. No indicator is predictive; trading involves substantial risk of loss.