Building a Dataset to Track My Own Gym Performance

I go to the gym every day and I love statistics. So I built a personal dataset to find out whether creatine, sleep, diet, temperature, and mood actually move the needle — without any medical tests.

I go to the gym every day. I also spend an embarrassing amount of time looking at charts. Eventually it made sense to combine the two habits.

The question I kept coming back to was how much any of this matters. I know protein matters and sleep matters in general. What I wanted to know was how much they matter for me. How much does skipping creatine for a week affect what I can lift? Does eating too little the day before show up in my reps? Does a 35°C day change anything? I wanted numbers instead of conventional wisdom, because what gets measured gets improved.

So I started building a dataset.

The problem with being consistent

The ideal experiment would be perfectly controlled: same diet, same supplement timing, same sleep every day, varying one thing at a time. That’s not how I live.

I forget to take creatine for a week. I eat way too much one day and almost nothing the next. I sometimes skip pre-workout. My mood varies, and so does life. If I were trying to publish research, that would be a problem.

For a personal dataset the inconsistency helps. If I were perfectly consistent, every row would look nearly identical and I’d have nothing to regress on. The variation in my real habits creates the signal. Skipping creatine for seven days and then coming back gives me a natural before and after. Eating at a deficit two days in a row shows up against my baseline.

What I’m tracking

Gym performance

The core of the dataset is simple: exercise, weight, sets, reps, and a subjective effort rating from 1 to 10 for each working set. I log every session. Over time that gives me a strength curve per movement, so I can see whether I’m progressing and also whether a given session was above or below my recent baseline.

I track the main compound lifts and a few accessories I care about. I don’t log every warm-up set and cable pull-down, because I’m after signal and don’t need completeness.

Diet

I use FatSecret for dietary logging. It isn’t perfect, since estimating portions is imprecise and I don’t weigh every meal, but it gives me reasonable ballpark numbers for:

  • Total calories
  • Protein, carbs, and fat in grams
  • Rough meal timing (did I eat close to the session or hours before?)

I don’t need precision here. I need enough resolution to tell “ate well” from “barely ate” from “ate a lot of the wrong things,” and rough numbers are enough for that.

Supplements

This is where my inconsistency gets interesting. My supplement stack is basic: creatine monohydrate, glutamine, and pre-workout on some sessions. I log whether I took each one and roughly when.

I don’t fully understand how creatine and glutamine work at a biochemical level. I know the high-level claims (creatine replenishes phosphocreatine faster, glutamine may help with recovery), but not the timelines, saturation curves, or how they interact. I don’t need to model the mechanism, though. I just need to see whether taking or skipping each supplement lines up with differences in performance.

When I’ve skipped creatine for a week or two, I get a window into my numbers without it, and when I reload, I get the before and after. The dataset can show the correlation even if I can’t explain the mechanism.

External variables

I also add a few things to each session row that I wouldn’t have thought to track at first.

Temperature is one. I train indoors, but the gym has almost no air conditioning, so in summer it’s hot and humid and in winter it’s uncomfortably cold and damp. The indoor temperature follows the season closely enough that the day’s outside temperature is a reasonable proxy. I also log the season as a categorical variable, which turned out to be interesting on its own. It lets me compare whole cold months against whole hot months, a coarser but sometimes cleaner signal than one day’s reading.

Mood is another, on a simple 1 to 5 scale logged before the session. It’s subjective, but surprisingly predictive. My data shows a real correlation between pre-session mood and how the session goes, which sounds obvious in hindsight but is easy to dismiss before you’ve seen it.

I log hours of sleep the night before. I don’t wear a tracker, so it’s a rough estimate, but that’s better than nothing.

And I note whether the previous day was a rest day or a training day, since accumulated fatigue is a real variable.

The dataset structure

Each row is a single working set:

date | exercise | weight_kg | reps | sets | effort_rating
calories | protein_g | carbs_g | fat_g | pre_session_meal_hours
creatine | glutamine | preworkout
sleep_hours | mood | temp_celsius | rest_day_prior

I keep it in a flat CSV. One row per set means the dataset grows quickly (a typical session produces 15 to 25 rows), but per-exercise analysis is straightforward without any joins.

What I’ve found so far

The creatine effect is visible. When I’ve taken a week off creatine and come back, max output dips during the break and recovers over about a week after I resume. The effect is real in my data, but modest.

Calories the day before matter more than calories on the day. I expected same-day nutrition to dominate, and it doesn’t. What I ate 24 hours earlier correlates more strongly with performance than what I ate that morning.

Mood is the strongest single-session predictor, ahead of sleep, diet, and supplements. A 2/5 mood session almost always underperforms a 4/5 session, controlling for everything else. I can’t tell whether mood causes the bad session or whether the mood rating is picking up pre-session fatigue, but the correlation is strong either way.

Temperature has a threshold effect. Performance is stable across a wide range but drops noticeably once the gym gets hot and humid; above roughly 30°C outside I see a consistent dip. Winter is different: there’s a modest uptick compared with midsummer, though the cold and damp bring their own problems with joints and warm-up time. The most interesting result is at the seasonal level. Looking at monthly averages, my best numbers cluster in the cooler transition months of autumn and spring, when the gym is neither a sauna nor a cold box. You can’t see that pattern in individual sessions, but it’s obvious once you group by season.

What I’m not doing

This isn’t a controlled study. There’s no blinding, no control group, and no randomization, and confounders are everywhere. I can find correlations but I can’t establish causation.

I’m also not getting bloodwork done. I don’t know my actual creatine saturation or my inflammatory markers after hard sessions, and a sports physiologist could tell me things this dataset can’t.

What I can do is build a personal baseline and notice deviations. If my numbers drop and the data doesn’t explain it, that’s worth investigating. If I see a consistent pattern around one variable, I can test it on purpose: stop creatine for two weeks, log carefully, then reload and compare. The dataset makes that kind of self-experiment manageable.

Getting started

If you want to try something similar, the minimum version is:

  1. Log every set: exercise, weight, reps, effort out of 10
  2. Log calories and protein from a diet app (FatSecret, Cronometer, MyFitnessPal, whatever you like)
  3. Note whether you took your main supplements that day
  4. Log sleep hours and a mood rating before each session

That’s six or seven data points per session, and most take under a minute to enter. Give it three months and you’ll have enough data to see patterns that would otherwise stay invisible.

The gym is already a controlled environment compared with the rest of your life. You show up, do measurable things, and track a number. Adding a few columns to that log costs almost nothing and gives you a dataset nobody else has: your own physiology, in your own context, over time.

Being your own guinea pig

There’s something absurd about being your own guinea pig. You’re the researcher, the subject, the IRB, and the one who has to live with the results. No ethics board approved my creatine deload and no lab validated my mood scale. My sample size is one, and I’m deeply biased about my own performance.

That’s also what makes it useful. No study of “men aged 20 to 40” will tell you what your body does when you skip glutamine for two weeks and eat at a 400-calorie deficit the day before leg day. Only you can run that experiment, and only you care enough about the answer. You aren’t averaging over a population; you’re building a precise model of one specific system, your own body.

You also develop a kind of body literacy that’s hard to get any other way. After a few months of logging, you notice things before you open a spreadsheet. You walk into the gym thinking “I slept badly, I barely ate yesterday, it’s humid, this is going to be rough,” and you’re right, and you know why. That’s pattern recognition built on data you collected yourself.

Worst case, you spend five minutes a day logging and learn nothing. Best case, your own body rarely surprises you anymore. Either way, the gym sessions still happened.