I Predict My Weight Every Morning: The Live Log

Every evening a model predicts my fasted weight for the next morning. Every morning the scale grades it. The live log, the method, and what it has learned about me.

Mark prommer.net as a preferred source Our articles show up more often, with a Preferred badge
Chart of predicted weight ranges against actual morning weigh-ins
Chart of predicted weight ranges against actual morning weigh-ins

Short answer: every evening my athlete API predicts my fasted weight for the next morning, with a range. Every morning I step on the same scale and the prediction is graded. The block below is live. It reads the same database my training plan does, so you can see exactly how often it is right, and by how much it misses.

I built it because I was reading the scale wrong. A big sweaty day, a low number expected, and then 87.0 again. The daily number moves about 0.7 kg on an average day, and the real change in fat over the same day is closer to 0.1 to 0.2 kg. If you react to the daily number, you are mostly reacting to water. A prediction that has to show its error in public is the cleanest way I know to stop doing that.

The live log

Scored days
9
since 23 Oct
Average miss
0.50 kg
last 14 scored days
Inside the range
44%
of scored days
Bias
−0.39 kg
scale came in lighter
84.585.085.586.086.587.087.588.088.589.023 Oct: predicted 87.86 kg (87.56–88.16), actual 87.0 kg23 Oct24 Oct: predicted 86.50 kg (86.20–86.80), actual 87.0 kg24 Oct25 Oct: predicted 87.32 kg (86.64–88.00), actual 87.4 kg25 Oct26 Oct: predicted 87.81 kg (87.33–88.29), actual 87.3 kg26 Oct27 Oct: predicted 87.97 kg (87.48–88.46), actual 87.2 kg27 Oct28 Oct: predicted 87.32 kg (86.77–87.86), actual 87.0 kg28 Oct29 Oct: predicted 87.33 kg (86.82–87.83), actual 86.7 kg29 Oct30 Oct: predicted 87.02 kg (86.49–87.54), actual 86.4 kg30 Oct31 Oct: predicted 87.00 kg (86.47–87.54), actual 87.4 kg31 Oct1 Nov: predicted 86.80 kg (86.28–87.32), actual 86.5 kg1 Nov

prediction and range, made the evening before · actual, inside the range · actual, outside it

DatePredicted (kg)Range (kg)Actual (kg)Error (kg)Biggest factorTDEE used (kcal)Weigh-inModel
1 Nov86.8086.3–87.386.5−0.30Energy balance −0.353055fastedv2
31 Oct87.0086.5–87.587.4+0.40Energy balance −0.083671fastedv2
30 Oct87.0286.5–87.586.4−0.62Energy balance −0.243056fasted, after BMv2
29 Oct87.3386.8–87.886.7−0.63Energy balance −0.052953fastedv2
28 Oct87.3286.8–87.987.0−0.32Energy balance −0.202758fastedv2
27 Oct87.9787.5–88.587.2−0.77Carbs +0.38–fastedv1
26 Oct87.8187.3–88.387.3−0.51Carbs +0.34–fasted, after BMv1
25 Oct87.3286.6–88.087.4+0.08Bowel movement −0.30 (known only after)–fasted, after BMv1
24 Oct86.5086.2–86.887.0+0.50trend only–fastedmanual
23 Oct87.8687.6–88.287.0−0.86Energy balance −0.14–fastedv1

What the model has learned about me

Each scored morning refits these four numbers, pulled towards the starting values so one odd day cannot flip them.

FactorStarted atNowUnit
Carbs0.300.07kg per 100 g
Salt0.100.01kg per 1,000 mg
Energy balance0.130.39kg per 1,000 kcal
Bowel movement0.300.31kg per event

Live from the athlete API · updated Wed, 04 Nov 2026 23:21:56 UTC

How the prediction works

It is a heuristic, not machine learning, and every part of it can be written on one line:

  1. Trend. An exponentially weighted average of my fasted weigh-ins over the last 10 days, each new reading counting 25%. Readings after a flight or flagged as outliers are left out. 20 October (92.2 kg, the morning after a long-haul flight) is the reason that rule exists.
  2. Carbs. Carbs eaten the day before, compared with my 7-day average. Glycogen is stored with water, so a carb-heavy day should read heavier the next morning. Capped at ±0.5 kg.
  3. Salt. Sodium above my 7-day average holds water. Only counted upwards, capped at +0.3 kg, and skipped on any day where a logged food has no sodium value, because a missing value would read as zero.
  4. Energy balance. Calories eaten minus my adaptive TDEE for that day. Capped at ±0.5 kg.
  5. Bowel movement. A movement between two weigh-ins lowers the reading. I flag it when I log the weight; the prediction cannot know it the evening before, so the log shows it as an explained miss rather than hiding it. More on that in does pooping change your weight.

The range is the average miss over the last 14 scored mornings, never narrower than ±0.3 kg. Since 27 October (model v2) the size of each factor is refitted after every weigh-in, starting from textbook values and pulled back towards them, so a handful of mornings cannot produce a silly coefficient. The coefficient table in the log shows where they stand today.

What it has learned so far

The first week overturned the factor I trusted most. The textbook says 0.3 kg of water per extra 100 g of carbs. On 27 October I ate 341 g against a 214 g average, the model added 0.38 kg, and I weighed 0.77 kg less than it said. After five scored mornings the fitted carb effect for me is close to zero, while the calorie balance of the day before counts about three times more than 1 kg per 7,700 kcal suggests. That is not fat. A day in deficit is also a day with less food in the gut and less glycogen, and the short-term scale sees all of it.

Five mornings is not evidence, and I will not claim the coefficients mean anything until there are 21 or more. What the log does show already: hydration is not the problem I thought it was. Over a week the body evens out water on its own, which is why the trend line works at all. The next-morning swing is food, salt and the toilet.

The conditions every weigh-in has to meet

The model is only as good as the readings it learns from, so each weigh-in is logged with its conditions: fasted or not, which scale, and whether there was a bowel movement since the last one. Since mid-October that is the same scale at the same gym, first thing after waking and before any food or drink. Readings that break the rules are stored but not scored. The full protocol and why each rule exists is in the best time to weigh yourself.

TDEE and training: the other half of the log

The energy-balance factor needs a TDEE, and a calculator guess would poison it. Mine is adaptive. It starts from a formula estimate and is corrected by what actually happened: average intake plus the weight trend’s slope times 7,700 kcal per kg, weighted by how much data there is. Planned workouts from intervals.icu add the expected burn for the day. The TDEE used column in the log is the number each prediction ran with.

Week ofTraining load (TSS)Fitness (CTL)Fatigue (ATL)
2026-11-0123745.173.4
2026-10-2562643.782.6
2026-10-1844535.459.4
2026-10-113053040.7
2026-10-0419627.732.2
2026-09-2730227.842.8
2026-09-201372524.8
2026-09-131412632.3

Weekly training load from intervals.icu, the same series as the training chart on the homepage. Hard weeks raise the TDEE the model uses, so a 1,000 kcal day reads very differently after a long ride than after a rest day.

Use it yourself

The prediction, the adaptive TDEE and the workout log all run inside aitrainingplan.app, the training app I build and use. If you would rather understand the method than use an app, the strategy guides on hybridathlete.guide cover water weight for athletes and plateau or just water. For the drug side of my weight story, see my GLP-1 log.

Frequently Asked Questions

Can you predict tomorrow morning’s weight?

To within about half a kilo on most days, if you weigh under the same conditions. The 10-day trend gets you most of the way. Carbs, salt, the calorie balance of the day before and whether you have been to the toilet explain part of the rest. The remainder is noise the model shows as a range rather than hides.

Why does the prediction come with a range?

Because a single number would claim more precision than the scale has. The range is the model’s own average miss over its last 14 scored mornings, never narrower than ±0.3 kg. If the model starts missing more, the range widens on its own.

What does the model learn over time?

How strongly each factor moves my scale. It starts from textbook values (0.3 kg per extra 100 g of carbs, 0.1 kg per extra 1,000 mg of sodium, 1 kg per 7,700 kcal, 0.3 kg per bowel movement) and refits them after every weigh-in, pulled back towards those starting values so one strange morning cannot flip them.

Does drinking more water change the prediction?

No. Plain water and sweat level out within a day or two if you drink back what you lose, so the model has no hydration input. Carbs and salt are what make the body hold water overnight, and those are in the model.

Used by 50,000+ athletes

Ready to Train Smarter?

Get personalized training zones, race predictions, and performance insights with our free calculators.