Every Grade Here Has a Vintage

TL;DR A number read today may not be the number that was there yesterday. Data providers go back and rewrite old figures. This site grades bitcoin every day, over a price history reaching back to 2010, and every one of those grades was worked out from data as it stood that day. Nobody had gone back to check whether that data has since changed. Here is the check. The site runs on four raw files. Git keeps every past copy, so each file can be rebuilt as it looked in April and compared with today's, row by row. Two of the four look like they changed and did not: 501 rows in the price file and 1,101 in the dollar file differ only in the final decimal place, which is a rounding artifact, not a correction. One file changed enormously, but only in columns this dashboard never opens. That leaves the money-supply file, where 203 of 206 old rows were rewritten, going back to 2009. Then the test that matters: rerun every daily grade using today's code and April's data, and see what moves. Nothing moved. Across 5,735 days, no indicator grade changed and no verdict changed. That is the good news. The catch is the margin. The rewrites were small, around 0.02 percent. But the biggest one was 6.4 times larger than the closest any reading ever came to a grade boundary. Nine months out of 194 sit near enough to a boundary that one ordinary revision would tip them, and those months govern 277 days of published history, about one day in twenty. The grades held. They held on luck, not on design.

On 8 August the daily fund-flow table kept by Farside Investors recorded $15.4m of net selling out of American bitcoin funds for the day before. On 9 August the same table, for the same day, recorded $101.7m of net buying. Both are figures as recorded on those dates, and neither was checked here. That table gathers what each fund issuer reports and states on its own pages that it cannot vouch for the result. A count still coming in is a count that can move. But waiting was not the only thing at work. A second tally of the same funds, kept by SoSoValue, was reported on 8 August too. It put that same day, 7 August, at $98.85m of net buying, while Farside still showed selling. Neither count is called wrong here: two tallies can cut a day differently and both be honest. A figure quoted on its own tells the reader neither who counted it nor when.

The Farside row did not merely move. It changed sign. A number that comes in too small makes a published sentence imprecise. A number that comes in with the wrong sign makes it false. Read on 8 August, the week ended with money leaving the funds. Read a day later, it ended with money arriving. And it was not the first. The row for 5 August was first recorded at $36.3m and read $244.4m the next day, almost sevenfold. The row for 6 August went from $30.9m to $137.6m. Four corrections in one week, every one upward, every one on the newest row of the table. The newest row is also the row a writer most wants to quote, because it is the day's news. A run of buying that breaks is a story. A run of buying that carries on is not. So the figure under the most pressure to be published is the figure least likely to survive the week.

None of that data feeds this dashboard, which holds no fund-flow figures at all. But the dashboard does publish a daily grade for bitcoin, built from thirteen indicators, and every one of those grades was worked out from vendor data as it stood that day. Vendors rewrite. So every grade here has a vintage, and until now nobody had checked what that vintage is worth. This article covers three things: which of the site's own raw files have been rewritten since they were saved, whether any published grade moved because of it, and how close the answer came to being different.

How the Check Works

The dashboard reads four raw files: bitcoin's daily price, a set of on-chain figures from Coin Metrics, American money supply from the Federal Reserve, and the dollar index. Git has stored every version of all four since April 2026. Any past copy can be pulled back out.

So the method is direct, with nothing estimated. Take a file as it stood in April. Compare it against today's copy. Look only at rows dated before April, because those were already settled history at the time and should never have moved. Count the ones that did.

One trap sits in the way, and stepping into it would have wrecked the result. The site also keeps a file of the finished daily grades. Reading old copies of that file would be easier and would prove nothing, because a difference there could come from rewritten data or from a change to the scoring code. The weights have been changed before, and that change retracted a published finding. So the test holds the code fixed at today's version and swaps only the data underneath it. That is what makes an answer attributable.

Every figure below comes from one command: python3 ml/research/input_vintage.py.

Which Files Were Rewritten

The first answer is that two of the four files never changed at all, despite appearing to.

In the price file, 501 old rows differ from today's copy. In the dollar-index file, 1,101 differ. Those look like large numbers. They are noise. A price recorded as 19310.233218521833 now reads 19310.23321852184. The value is identical to fifteen significant figures. What moved is how the number is printed, not what it is. Counting raw text differences would have put 1,602 rewritten rows in this article's opening line. The true count for both files is zero.

That distinction is the first thing worth taking away, because it cuts the other way as easily. A test that flags rounding as revision cries wolf. A test that ignores it cannot tell the difference between a rounding artifact and a real correction.

The on-chain file is the opposite case. There, 6,298 old rows were genuinely rewritten, and the changes are enormous: across six columns the typical row moved by 46.7 percent at the mildest and 79.6 percent at the worst. Those columns track how many coins sit on exchanges and how many move in and out. Coin Metrics publishes a revision policy stating that it "occasionally recalculates limited portions of history to improve quality", and that a revised value "differs from the value originally printed at that timestamp". That language is written about its reference rates and market data, and does not set out a rule for the network figures held here, so the policy documents the mechanism while the diff above measures the size.

The dashboard opens none of those columns. Its grades take four figures from that file, and every one of them was untouched.

Which leaves the money supply. In that file 203 of 206 old rows were rewritten, running back to January 2009. The changes are small: half of them under 0.02 percent, the largest 0.22 percent. And unlike the other three files, this one feeds an indicator. Money supply carries 6.5 percent of the composite score.

The rewrite arrived in a single refresh. Across the first three updates, between April and June, 53, then 10, then 47 rows moved. In the update saved on 29 July, 207 of 209 moved at once. The Federal Reserve's H.6 release of 28 July 2026 announced a change to how one component of the money supply is counted, and said the change is "applicable back to the start of the time series". The refresh here landed the following day. Whether those are the same event, the release does not say, and this article does not claim it.

What It Did to the Grades

Now the test. Take today's scoring code. Feed it April's money-supply file, with all three other files left at today's version, so that anything that moves can only have come from the swap. Recompute the whole history. Compare it against today's code on today's data, day by day.

The comparison covers 5,735 days. The money-supply grade changed on none of them. The composite score changed on none of them. No day crossed a verdict boundary.

That is a null result, and it is the strongest thing this article has to report. A dashboard whose published grades survive a rewrite of nearly its entire money-supply history, back to 2009, stands on firmer ground than one that needs an apology. The 203 rewritten rows did reach the indicator. They moved it too little to matter.

A second check points the same way from the other side. The file of finished daily grades, the one this test deliberately avoided using, differs on exactly one date across 5,736 settled days, in four on-chain indicators at once. Four indicators moving together on a single day is the signature of a code change, not a data revision. That is precisely the confusion the method was built to avoid, and it shows up here as a single date rather than as a number anyone could have misread as a data problem.

How Close It Came

A null result means nothing without its margin. Zero band changes could mean the grades are built to absorb revisions, or it could mean this one happened to land in open space. The two readings carry opposite lessons, and telling them apart takes one more measurement.

The money-supply indicator grades year-on-year growth, and its grade boundaries sit at 10, 5, 0 and minus 2 percent. A reading of 5.03 percent is a B. A reading of 4.97 percent is a C. So the question is how far each reading sat from the nearest boundary, against how far the rewrites moved them.

The rewrites shifted year-on-year growth by 0.0059 percentage points in the median month, and by 0.1884 points at the largest. The closest any reading came to a boundary was July 2019, at 5.030 percent: 0.0296 points from the line between a B and a C.

The largest revision observed is 6.4 times that gap.

It landed elsewhere. July 2019 was shifted by 0.0052 points, and stayed a B. Had the revision that hit February 2026 landed on July 2019 instead, the grade would have flipped. Nine of the 194 months sit within one such revision of a boundary, and those nine govern 277 of the 5,863 days this site has graded, close to one day in twenty.

The dashboard passed. It did not pass by a wide margin.

What This Leaves

Three things came out of this that were not known before.

The first is a count. Of the four files behind every grade on this site, one has had its settled history rewritten in a way that reaches an indicator: the money supply, 203 rows of 206, back to 2009. Two changed only in their final decimal. The fourth was rewritten heavily in columns nothing here reads. A test that counted text differences would have reported 1,602 revisions that are not revisions, and missed the single file that mattered.

The second is the result. Holding the code fixed and swapping April's data for today's moves no grade, no composite score and no verdict across 5,735 days. That is a robustness claim about this dashboard, and it is now on the record with a command attached to it.

The third is the caveat, and it is the one to keep. Zero is not the same as immune. The largest rewrite seen in four months of history is 6.4 times wider than the tightest gap between a reading and a grade boundary, and roughly one published day in twenty sits inside that range. The result held because of where the revisions fell, not because the grades are built to withstand them.

Which is why this check now has a script rather than a conclusion. Every grade here has a vintage. The honest thing is not to claim the vintage never matters, but to rerun the command and find out.