Weight Trend Line Explained: Moving Average vs. Exponential Smoothing vs. Regression
Life Forecast team · Reviewed against cited sources, November 2026
A weight trend is a summary of many weigh-ins. A 7-day moving average is their mean. The Hacker's Diet trend moves 10% of the way from yesterday's trend to today's weight. A least-squares line has a slope you can turn into a weekly rate and a projected date. Life Forecast's goal date is that straight line through the last 30 days of weigh-ins, one per day, at least 3, with no extra smoothing. The date is an estimate.
Why the raw number needs a summary
One morning includes water, food, and timing. A trend is a summary of many mornings. "How to calculate weight trend," "moving average weight loss," "weight trend calculator," and "Hacker's Diet trend" usually mean one of three summaries: a simple moving average, an exponentially smoothed average, or a least-squares line. Each example below uses made-up numbers you can recompute. The last section states which one Life Forecast uses for a projected goal date.
Sum = 180.2 + 179.6 + 180.8 + 179.4 + 179.8 + 180.0 + 179.2 = 1259.0. Average = 1259.0 ÷ 7 = 179.857 lb, which is 179.9 lb to one decimal.
Next morning the scale says 181.4. The new window drops 180.2 and adds 181.4. Sum = 1259.0 − 180.2 + 181.4 = 1260.2. Average = 1260.2 ÷ 7 = 180.029 lb, or 180.0 lb to one decimal.
The spike was 1.2 lb above the value it replaced, and the average moved by only 1.2 ÷ 7 = 0.17 lb. That 181.4 then stays in the window for seven days. "Today's" average still holds the previous six days, so a turn shows up late. A missed morning is your problem to define: last 7 logs, or 7 calendar days. The formula does not choose.
Exponential smoothing, the Hacker's Diet way
John Walker's The Hacker's Diet popularized a daily trend that is an exponentially smoothed moving average with 10% smoothing. On the first day the trend equals the weight. After that:
Walker writes the same line as Tn = Tn−1 + 0.1 (Wn − Tn−1). His by-hand version subtracts yesterday's trend from today's weight, shifts the decimal one place left, rounds to one decimal, and adds that to yesterday's trend. In his published example, today's weight is 171.5 and yesterday's trend is 173.2. The gap is −1.7. Shifted, −0.17 rounds to −0.2. Then 173.2 + (−0.2) = 173.0, which is the trend he enters.
Equivalently, trend today = 0.9 × trend yesterday + 0.1 × weight today. His smoothing section derives that form. He treats a smoothing constant of 0.9 as roughly a 20-day simple average in lag.
Here is the update on a fresh series, without his one-decimal rounding, so you can see the 10% directly. Start trend = 180.20.
Synthetic pounds. Trend today = trend yesterday + 0.1 × (weight today − trend yesterday), carried without intermediate rounding. Displayed to two decimals.
Day
Weight (lb)
Trend (lb)
1
180.20
180.20
2
179.60
180.14
3
180.80
180.21
4
179.40
180.13
5
179.80
180.09
6
180.00
180.08
7
179.20
180.00
8
181.40
180.14
Day 2, in full: 180.20 + 0.1 × (179.60 − 180.20) = 180.14. Day 8 uses the same 181.40 spike: 10% of a gap near 1.4 lb moves the trend by about 0.14 lb, to 180.14. The spike then fades. It does not sit in the window for seven days. Walker's page assumes a weight on the day you update. A missed day adds no new term. Do not enter zero.
Get your own projected date
Paste weigh-ins into the goal weight date calculator, or type a weekly pace. Free, no account required for the calculator.
Least squares is the straight line that minimizes the squared vertical gaps. Time goes on x, weight on y. Multiply the per-day slope by 7 for a weekly rate, then extend the line to the goal for a projected date.
Seven synthetic mornings, days 0 through 6: 82.0, 81.6, 81.9, 81.4, 81.2, 81.5, 80.9 kg. Mean of x is 3. Mean of y is 570.5 ÷ 7 = 81.5 kg.
The slope numerator is the sum of (x − 3) × (y − 81.5):
Synthetic kilograms, chosen so the products sum to −4.2 and the squared x-gaps sum to 28. Not a recommended pace.
Day
kg
x − 3
y − 81.5
Product
0
82.0
−3
+0.5
−1.5
1
81.6
−2
+0.1
−0.2
2
81.9
−1
+0.4
−0.4
3
81.4
0
−0.1
0
4
81.2
+1
−0.3
−0.3
5
81.5
+2
0
0
6
80.9
+3
−0.6
−1.8
Sum of products = −1.5 − 0.2 − 0.4 − 0.3 − 1.8 = −4.2. Sum of squared x-gaps = 9 + 4 + 1 + 0 + 1 + 4 + 9 = 28. Slope per day = −4.2 ÷ 28 = −0.15 kg/day. Slope per week = −0.15 × 7 = −1.05 kg/week. Using 1 kg = 2.20462 lb, 1.05 × 2.20462 = 2.31 lb/week. That is faster than the 1–2 lb per week pace the CDC describes as gradual. It is here because −4.2 and 28 divide cleanly. It is not a target.
The intercept, at day 0, is 81.5 − (−0.15 × 3) = 81.5 + 0.45 = 81.95 kg. On day 6 the line says 81.95 − 0.15 × 6 = 81.05 kg. The scale that morning said 80.9 kg. The point and the line are not the same number. A projection extends the line.
Suppose the goal is 75 kg. Days from day 0 until the line hits 75: (75 − 81.95) ÷ (−0.15) = 46.3 days. From day 6 that is 40.3 days, about 5.8 weeks. Starting from the last scale reading instead, (80.9 − 75) ÷ 1.05 = about 5.6 weeks. Close, and not the same. Extend the line. Call the result a projected date: it assumes the slope continues. A missed day is a missing point, not a zero.
Pros and cons
How the three summaries behave. Life Forecast's goal date is the regression row, on a fixed 30-day window.
Lag
Outliers
Gaps
7-day simple moving average
Holds the previous 6 days. A turn shows up late.
Moves the average by the spike ÷ 7, then stays 7 days.
Last 7 logs, or 7 calendar days. A miss breaks the calendar window.
10% exponential smoothing
Moves 10% of the way to today's weight. Walker likens this to roughly a 20-day average in lag.
Moves the trend by 10% of the gap, then fades.
A missed day adds no new term. Do not enter zero.
Least-squares line
Every point in the window pulls the slope. No extra smoother.
A spike pulls the slope until it leaves the window.
A missed day is a missing point. Fit the dates you have.
What Life Forecast actually fits
The goal date is not the 7-day average, and it is not a 10% exponential smooth. How the forecast works states the method in three steps:
Take weigh-ins from the last 30 calendar days, one per day, morning preferred. Days without a log are skipped. Gaps are allowed. The window is fixed.
Fit an ordinary least-squares line with calendar date on the x-axis and weight on the y-axis. There is no extra smoothing, no outlier removal, and no recency weighting.
The projected goal date is where that line crosses the goal weight. The app also shows the fitted weekly rate.
It needs at least 3 weigh-ins in those 30 days. It does not show a date when the recent trend is flat or moving away from the goal, when the line would land more than 3 years out, or when you are already within 0.05 kg of the goal. Calories, workouts, sleep, Garmin, and Strava do not enter the date. The chart can still show each morning as a dot plus a 7-day average. That average is a display. The date is the 30-day line.
The 7-point example is the same kind of fit on a shorter window. Three weigh-ins are enough for a date, and few enough that the date should be expected to move. The method page does not publish a measured accuracy figure. Get your own projected date from a typed pace or pasted weigh-ins. The app is free, with no ads. Plateau detection flags a flattening pace; it does not replace the line with a moving average. A flat stretch is a plateau. A chosen rate, before you have a line, is the timeline table.
TrendWeight and Happy Scale, only as our comparison pages state them
This site's TrendWeight comparison describes TrendWeight's trend as an exponentially weighted moving average, 10% of the way toward today's weight — the same update as Walker's formula. That page also says Life Forecast shows a 7-day average on the chart plus daily dots, and an estimated goal date from a straight-line fit through the last 30 days (at least 3). It does not state a goal-date method for TrendWeight, and this article does not add one.
The Happy Scale comparison says Happy Scale offers four smoothing methods, including a moving average and "Happy Scale Smoothing" (per happyscale.com/support), and that it predicts a future weight. It says Life Forecast's goal date is linear regression on the last 30 days. It does not describe Happy Scale's smoother beyond that, and neither does this article.
FAQ
How do you calculate a weight trend?
Three common ways are a 7-day simple moving average (add the last 7 weigh-ins and divide by 7), a 10% exponentially smoothed average (trend today = trend yesterday + 0.1 times the gap between today and yesterday), and a least-squares line whose slope is the weekly rate. Life Forecast uses the third method for the goal date: a straight line through the last 30 days, one weigh-in per day, at least 3, with no extra smoothing.
What is the Hacker's Diet weight trend?
John Walker's The Hacker's Diet uses an exponentially smoothed moving average with 10% smoothing. The first day, the trend equals the weight. After that, trend today = trend yesterday + 0.1 × (weight today − trend yesterday). He also describes a by-hand version that shifts the decimal one place and rounds to one decimal.
How does a moving average differ from regression?
A 7-day moving average is the mean of a short window. It lags, and a spike stays inside it for 7 days and then drops out. Least-squares regression fits one straight line to every point in the window and reports a slope. Life Forecast projects the goal date from that line on the last 30 days, not from the 7-day average on the chart.
Does Life Forecast smooth the goal date?
No. The goal date is ordinary least squares of weight against calendar date for weigh-ins in the last 30 days, one per day, at least 3. The method page states there is no extra smoothing, no outlier removal, and no recency weighting. The chart can also show daily dots and a 7-day average. That average is not the date.
General information, not medical advice. Worked numbers are synthetic. Life Forecast's projected goal date is an estimate from the 30-day least-squares line, not a guarantee.
Get your own projected date
Life Forecast fits the 30-day line for you once you have at least 3 weigh-ins. The calculator can sketch a date before that. Free.