OpenCGM-StateEventSource ↗

What the model actually tells you

6 real days from one person’s sensor, run through the released model. Nothing below is illustrative — these are the outputs, including the ones that are unhelpful.

The recording is from a consenting adult volunteer and is de-identified: no name, device, sensor identifier or calendar date is carried through. The days are numbered in the order they were recorded.

1. The week, as their own app would show it

6 days on one shared scale. Average glucose between 97 and 111 mg/dL, and at least 92% of every complete day inside the 70–180 band a clinician would target. By those numbers the days are interchangeable. Everything below is what the model adds on top of them.

Click a day to follow it through the rest of the page. Grey blocks are stretches the sensor did not record.

2. Friday in detail, and split in two

Before the model reads anything it separates the slow drift through the day (green) from what is left over (rust). Meals and exercise land in the rust line. This split is the only part of the design that measurably matters: remove it and the model loses six times more accuracy than the noise between training runs.

701800006121824
109.6 mg/dL
Average
0.316
Variability (CV)
92%
Time in 70-180
73-218 mg/dL
Range

3. What the model actually returns

This, and nothing else: 128 numbers. Every claim further down is a small classifier reading them — the model itself has never been told what diabetes is.

To the eye the five days’ bar codes look nearly the same. The differences that matter are small and spread across many of the numbers, which is why the next section measures the distance between them instead of eyeballing it.

4. Which days were alike

No classifier is involved here — this is the raw distance between the 128-number summaries. It is also the thing a CGM app does not do: it compares the shape of a whole day rather than its summary statistics.

Thu0.954
Wed0.948
Sat0.947
Fri0.932
Tue0.931
Sun0.882
most like the rest of the weekleast like it

Wednesday and Saturday read as near-twins to the model (0.996), despite peaks of 167 and 151 mg/dL. Friday is the least like the other complete days, and the trace shows why: it climbs to 218 mg/dL, and its variability is 0.32 against 0.14 for the rest. Time in range barely separates them. Tuesday sits furthest out mostly because 50% of it is missing.

Every pair, as a matrix
TueWedThuFriSatSun
Tue
Wed
Thu
Fri
Sat
Sun

5. What the classifiers say about Friday

The model itself answers no questions — it returns the 128 numbers above. The questions come from 18 classifiers fitted on top of them, covering seven subjects in all: insulin resistance, diabetes risk, blood lipids, body-mass category, glucose variability subtype, insulin production, and low-glucose episodes. Fewer than seven get answered on any one day, and which ones depends on how much of the day the sensor recorded.

18
classifiers shipped
14of 18
better than chance
9of 14
accept this day
5of 9
distinct questions

4 of the eighteen never beat chance in cross-validation and are switched off — one of them, Hall high blood lipids, scores 0.41, which is worse than guessing. The rest are filtered by how much of the day was recorded. What remains is drawn below: each dot is one classifier placing this day against 20,000 days from the training data. Filled dots are the more accurate ones. Hover a dot for its cohort and accuracy.

Glucose variability subtype1 classifier
Hall
Insulin resistance3 classifiers
CGMacros
Stanford
Hall
Diabetes risk3 classifiers
CGMacros
Stanford
Hall
Body-mass category1 classifier
CGMacros
Reduced insulin production1 classifier
Stanford
lower than most corpus dayshigher than most

The spread within a row is the finding, not a flaw in the drawing. Three classifiers were trained to answer “diabetes risk” on three different cohorts, and they place the same day at very different points. Averaged over every question and cohort the model beats a strong hand-built baseline by a small, repeatable margin. On any single question, the disagreement you can see here is why no individual result survives statistical correction. Read the rows together, never one at a time.

The same rows as a table, with cohort sizes and accuracies
QuestionTrained onPercentileAccuracy
Glucose variability subtypeHall, 57 people65th0.88 ROC-AUC
Insulin resistanceCGMacros, 45 people30th0.87 ROC-AUC
Diabetes riskCGMacros, 45 people40th0.77 ROC-AUC
Diabetes riskStanford, 29 people22th0.77 ROC-AUC
Body-mass categoryCGMacros, 45 people66th0.76 ROC-AUC
Insulin resistanceStanford, 29 people88th0.76 ROC-AUC
Diabetes riskHall, 57 people52th0.72 ROC-AUC
Reduced insulin productionStanford, 29 people91th0.69 ROC-AUC
Insulin resistanceHall, 56 people73th0.64 ROC-AUC

6. Why this page never shows you a percentage

The raw output of these classifiers is a number between 0 and 1, and it is tempting to read it as a probability. Here is what that number is actually made of. Each bar below is 5% of the 20,000 reference days; where the bars are wide, corpus days are spread out, and where they are invisible, thousands of days share almost the same score.

Diabetes risk on Sunday: raw score 0.993 — which an app would show as “99.3%”

this day 0.993
score 0score 1

Most of the reference corpus scores at least that high. The day is unremarkable: the 42th percentile.

These classifiers push almost everything toward 0 or 1 regardless of the input. The ranking carries information; the raw number does not. If a product ever shows you a percentage built from a day of glucose data, this is what is underneath it.

7. The days the model would not score

Tuesday recorded 50% of the day and no classifier would score it at all. The rule is mechanical: a classifier only scores days whose coverage falls inside the range it saw during its own training, so it is never asked to extrapolate to a recording unlike anything it learned from.

This produces a result that looks backwards and is not. Sunday recorded 45% — less than Tuesday — and 5 classifiers accepted it. The classifiers do not share one threshold. Those fitted on intermittently scanned sensors accept days between roughly 14% and 48% coverage; those fitted on near-continuous recordings want 59% or more. Tuesday falls in the gap between the two, so nothing claims it. A single “enough data?” cutoff would have hidden that; per-classifier bands make it visible.

A tool that returned a confident number for these days would be inventing one.

What this particular reading means

Across every day and every classifier, this person’s percentiles run from the 4th to the 91th. There is no single verdict in there. The two classifiers with the highest held-out accuracy place the fully-recorded days low, which reads as reassuring; weaker ones place the same days near the middle or above it. Where they disagree, the accuracy column is the only tiebreaker on offer, and even the best of them is a research result fitted on a few dozen people.

A low ranking here is also worth reading carefully. The training corpus is largely people with diabetes or prediabetes, so a day from someone without it is genuinely unusual within that corpus. The model is saying this day looks unlike its training data. For this corpus that happens to coincide with looking healthy. They are not the same statement, and only one of them is something the model can support.

Day-to-day variability is not a straight line either: the coefficient of variation runs 0.14, 0.15, 0.32, 0.12 across the complete days — climbing to a peak and settling again, not rising steadily. Clinical guidance generally treats anything under 0.36 as stable, so all of them sit inside that.

What you get

  • A 128-number summary of a day. Days that behave alike land close together, and you can measure that distance.
  • The slow and fast parts of the day, separated. Useful on its own for seeing which excursions are meals and which are drift.
  • A ranking against 20,000 corpus days for each question the classifiers can answer for that day — at most seven — each labelled with how accurate that classifier is.
  • A refusal when the recording is too sparse for a classifier to have anything to say.

What you do not get

  • A prediction of your future glucose. The model reads a day that has already happened. It forecasts nothing.
  • A diagnosis, or anything close to one. The best classifier here is wrong about one person in four, and it was fitted on a few dozen people.
  • A probability. The raw classifier outputs saturate near 0 and 1 regardless of the input, which is why this page shows rankings instead.
  • Advice. Nothing here should change what you eat, what you take, or what you do. That conversation belongs with a clinician.