Quick answer
A moving average (rolling average) is a series of averages, each taken over a fixed number of the most recent values, used to smooth short-term noise and show the underlying trend in time-series data.
Formula: SMAₜ = (xₜ + xₜ₋₁ + … + xₜ₋ₙ₊₁) / n
What is a moving average?
A moving average replaces each point in a series with the average of the last n points. It smooths out day-to-day noise so the trend is easier to see:
SMAₜ = (xₜ + xₜ₋₁ + … + xₜ₋ₙ₊₁) / n
For daily web and product data, a 7-day window is the usual choice: every average contains exactly one Monday, one Tuesday and so on, so the weekly cycle cancels out.
A worked 7-day example
Daily sign-ups over two weeks (sample numbers), with the 7-day trailing average:
| Day | Sign-ups | 7-day average |
|---|---|---|
| Mon | 120 | — |
| Tue | 132 | — |
| Wed | 128 | — |
| Thu | 125 | — |
| Fri | 110 | — |
| Sat | 70 | — |
| Sun | 65 | 107.1 |
| Mon | 126 | 108.0 |
| Tue | 140 | 109.1 |
| Wed | 135 | 110.1 |
| Thu | 131 | 111.0 |
| Fri | 116 | 111.9 |
| Sat | 72 | 112.1 |
| Sun | 69 | 112.7 |
The raw series swings between 65 and 140 every week. The average shows the actual story: steady growth of about 5% from one week to the next.
Simple, weighted and exponential
| Type | How it weights values | Use when |
|---|---|---|
| Simple (SMA) | Equally over the window | You want a clean, explainable trend |
| Weighted (WMA) | Linearly more weight on recent values | You want less lag with a fixed window |
| Exponential (EMA) | Each step: EMAₜ = α·xₜ + (1 − α)·EMAₜ₋₁ | You want fast reaction; good for monitoring |
An EMA with α = 0.25 on the series above reacts to the Saturday dip within a day, while the 7-day SMA barely moves. That is useful for alerts, less so for reporting.
Choosing the window
- 7 days for daily data with a weekly cycle.
- 28 days (four full weeks) for a steadier monthly view without calendar-month noise.
- 91 days (13 weeks) for quarterly trends.
Longer windows are smoother but lag more. A trailing window of n days lags by about (n − 1) / 2 days. A centred window (3 days before, 3 after) has no lag but cannot be computed for the last 3 days.
Common mistakes
- Averaging rates. Daily conversion rates of 5%, 3%, 4% (on 200, 1,000 and 300 visitors) average 4.0%, but the pooled rate is (10 + 30 + 12) / 1,500 = 3.5%. Sum numerators and denominators over the window instead.
- Reading the last point as "now". A 7-day trailing average still includes last week.
- Smoothing over real events. A one-day outage becomes a gentle dip; keep the raw series visible.
- Using it to hide noise from small samples. If daily counts are tiny, use a weekly grain instead.
In TapCub
TapCub charts show the raw daily (or hourly, weekly, monthly) values; switching the grain to weekly gives a similar smoothing effect without any calculation. To plot a true 7-day moving average, use the data report's table with a daily grain, export it, and compute the rolling sum of conversions and of visitors before dividing. For alerts that handle weekly cycles for you, the monitor forecast band and anomaly conditions compare against the same weekday. See also anomaly detection.
See also
Was this explanation clear?
We use your answers to fix and expand this page.
Couldn’t send. Please try again in a minute.
Thanks for the feedback. We’ll use it to improve this page.You’ve already sent feedback on this page. Thanks.

Product Experience Specialist
Writes about product experience, practical workflows, and growth, turning complex processes into clear steps for everyday decisions.