peptrendGet the app

Why your weight trend barely moves when the scale jumps (EWMA)

Your trend barely moves because an EWMA travels only a fraction of the way toward each new weigh-in: T = α × today's weigh-in + (1 − α) × yesterday's trend. At the default α = 0.10 a 5.4 lb morning shifts the line 0.54 lb, and half of that is gone 6.6 days later. On one user's log — 84 weigh-ins over 225 days — the EWMA line moves 0.103 lb/day and ignores 75.9% of the scale's daily movement.

A row of upright bars each shorter than the last by the same proportion, crossed by a dashed horizontal rule at half the tallest bar's height.

How is a weight trend line actually calculated?

An exponentially weighted moving average is a single number, updated once a day, by mixing a fraction of today’s weigh-in into yesterday’s answer. That is the entire algorithm:

T₀ = W₀
Tₜ = α·Wₜ + (1 − α)·Tₜ₋₁

The line starts on your first weigh-in and never restarts. Peptrend runs exactly this recurrence for its EWMA method, with α defaulting to 0.10 and clamped to the range 0.001 to 0.999, so no setting can freeze the line on your first weigh-in or collapse it onto the raw scale.

Two things happen before the recurrence sees anything. Weigh-ins you marked excluded are dropped, and several weigh-ins on one calendar day are averaged into one value. Then, with interpolation on — the default — days you skipped are filled by a straight line between the two days either side, so a fortnight away from the scale does not compress into a single violent step. That fill changes the shape of the output more than most people expect, which is its own subject.

The rate the app prints beside the line comes from a seven-index look-back on the trend itself — today’s trend value minus the trend value seven days ago — rather than from a regression through the raw points.

What does alpha mean in a weight trend?

Alpha is the fraction of the gap between today’s reading and yesterday’s trend that the line actually travels. Expand the recurrence backwards and the structure falls out:

Tₜ = α·Wₜ + α(1−α)·Wₜ₋₁ + α(1−α)²·Wₜ₋₂ + α(1−α)³·Wₜ₋₃ + …

The weight on a reading k days old is α(1 − α)ᵏ. Those weights sum to one, and they shrink geometrically — each day back is worth (1 − α) times the day in front of it. At α = 0.10 that means today’s number carries 10% of the total, yesterday’s 9%, the reading from a week ago 4.8%.

Add the newest seven together and they hold 52.2% of all the weight in the line (1 − 0.9⁷). The other half is spread across every weigh-in you have ever logged, thinning but never vanishing. A reading from thirty days ago still carries 4.2% of the influence it had the morning it landed. Six weeks out it is down to 1.2%, and it slips under 1% on day 44 — which is about where the line stops caring what value it started on.

How long does one bad weigh-in move the line? Half of it is gone in 6.6 days

Take one absurd reading, Δ pounds above where the trend sat, and the line jumps by α·Δ that day. If the scale then returns to normal, that displacement gets multiplied by (1 − α) every day afterwards. Solve for when half of it is left:

(1 − α)ᵗ = 0.5
t = ln(0.5) / ln(1 − α)
t = ln(0.5) / ln(0.9) = 6.58 days

Put a real number through it. The largest single-day swing in one user’s log — 84 weigh-ins over 225 days — is 5.4 lb. Hand an EWMA at α = 0.10 a reading that far clear of the line and it moves 0.54 lb the day that lands. About 6.6 days later, 0.27 lb of the displacement remains. Four weeks out it is 0.03 lb, below the 0.1 lb the app prints.

Half-life is the honest way to describe alpha, because it converts a unitless dial into days:

αWeight on today’s readingHalf-life of a shockSame average data age as
0.055%13.5 daysa 39-day average
0.10 (default)10%6.6 daysa 19-day average
0.2020%3.1 daysa 9-day average
0.3030%1.9 daysa 5.7-day average

Why does a 7-day average count every spike twice?

A 7-day simple moving average hands each of the last seven readings exactly 1/7 of the weight and the eighth day nothing at all. That cliff edge is the problem. A reading 5.4 lb clear of the one it displaces moves the 7-day mean 0.77 lb — and then, seven days later, moves it 0.77 lb back as that reading falls out of the window, on a morning when the scale may not have moved at all. Every outlier gets charted twice, once going in and once coming out.

The EWMA has no window to fall out of. The spike’s contribution decays smoothly from the moment it lands and never produces a second event.

There is a practical difference too. A moving average has to remember the last seven numbers to compute anything; an EWMA remembers one. That is why the same recurrence has survived since Roberts introduced it for quality-control charts in 1959, the attribution NIST still prints beside the formula. It was designed for a world where holding seven numbers in memory was a real cost, and it turned out to behave better anyway.

How much of the scale movement does an EWMA ignore? 75.9%, measured

Run the methods over the same log at the app’s default parameters and the trade shows up clearly. “Line moves” is the mean absolute day-to-day change in the trend line itself. “Ignored” is the share of the scale’s own daily movement the line refuses to pass through.

MethodLine moves per dayScale movement ignoredFinal reading
SMA, 7-day window0.295 lb74.7%184.7 lb
EWMA, α = 0.100.103 lb75.9%184.5 lb
Robust Adaptive EWMA0.094 lb78.1%185.0 lb

The two reject essentially the same amount of noise — a little over a percentage point apart — while the EWMA’s own line jitters 2.85 times less. They finish within 0.2 lb of each other after 225 days, against a 4.0 lb spread across all fifteen methods the app computes on that file.

That noise is worth sizing. Across this user’s log the mean day-over-day change is 1.16 lb while the underlying drift is 0.098 lb/day, so the daily noise runs 11.9 times the daily signal, and 30 of 83 intervals showed a gain during a stretch that lost 22 lb. At nearly 12 to 1, the drift is hard to see until something smooths it, a point worth reading alongside why the scale jumps overnight and what the signal-to-noise ratio actually is.

How many days of weigh-ins does alpha 0.10 remember?

At α = 0.10 the EWMA holds the same average data age as a 19-day simple average. The identity is short: a moving average of order m has an average data age of (m + 1)/2, and simple exponential smoothing has an average age of 1/α, as Robert Nau sets out in the Duke forecasting notes. Set them equal and m = 2/α − 1, which is 19 at α = 0.10.

John Walker landed on the same constant in The Hacker’s Diet, the 1990s book that put this filter in front of dieters. He recommends a smoothing constant of 0.9 and calls it “roughly equivalent to a 20 day simple moving average” — a comparison he makes about lag rather than data age, though the α underneath is the same 0.10. He writes the coefficient on yesterday’s trend where the control-chart literature writes the coefficient on today’s reading.

Peptrend ships that filter as its own method, and the difference from plain EWMA is not the alpha. Hacker’s Diet fixes α at 0.10 and forces interpolation off, so missing days are skipped rather than filled — that one choice is what still separates the two.

What can a plain EWMA not handle?

An EWMA has no idea a reading is unusual. Every value gets the same α whether it sits 0.2 lb or 5 lb off the line, which is exactly why the shock arithmetic above works out so neatly, and also why the line takes a visible bruise from every bad morning. It also cannot change pace: α is whatever you set until you set something else, so the filter is equally sluggish when you are genuinely dropping half a pound a week and when you are flat.

Both limits have answers among the fifteen methods. The default, Robust Adaptive EWMA, slides α between 0.04 and 0.22 based on how directional the recent path has been, then down-weights any reading further than 2.5 MAD from the line. On this user’s log it ignores 78.1% of the daily movement while its own line travels a quieter 0.094 lb/day. DEMA and TEMA attack the lag instead, by subtracting the smoothing error back out.

The lag is the part worth understanding before you touch anything, because every fix for it costs something elsewhere. Comparing EWMA and SMA on lag directly is the shortest route to that, and choosing a trend method covers the rest of the field.

Where do you change alpha in the app?

EWMA appears in the method list once Advanced Mode is on, which is a Pro feature; α itself is edited in the trend parameter editor, also Pro. Simple Mode offers four methods — Robust Adaptive EWMA, Hacker’s Diet, Weekly Average and Rolling Median. From 1.4.0, coming soon, a fresh install shows three of those on the chart’s method strip; Hacker’s Diet starts hidden behind its eye toggle in Settings. The weight trend chart is Pro as a whole, and the free Scale tab draws your raw weigh-ins with no smoothing on them at all.

Whichever method is selected, each one carries an in-app explainer with its formula, its behaviour, and a list of what it is bad at.

A trend method explainer sheet in Peptrend, showing the method's formula, a description of how it behaves, and separate lists of pros and cons
Every method carries its own formula sheet in the trend settings.

Common questions

What does alpha mean in an EWMA weight trend?

Alpha is the share of today's weigh-in that gets mixed into the trend. At α = 0.10 the line moves one tenth of the way toward today's number, and yesterday's trend supplies the other nine tenths.

How long does one bad weigh-in move the EWMA?

Its effect halves every ln(0.5)/ln(1 − α) days — 6.6 days at α = 0.10. A 5 lb water spike pushes the line 0.5 lb on the day, leaves 0.24 lb a week later, and under 0.1 lb after four weeks.

Is an EWMA better than a 7-day average for bodyweight?

On this user's log the two reject almost identical amounts of daily noise — 75.9% versus 74.7% — but the EWMA's own line moves 0.103 lb/day against the 7-day average's 0.295 lb. The moving average also replays every spike a second time when it falls out of the window.

Why is my trend line different from what the scale said this morning?

Because it only travels α of the way toward each new reading — a tenth at the default — and holds the rest of your history behind it. On one user's log the EWMA line ignores 75.9% of the scale's daily movement, which is the job it was picked for.

Sources