The most useful thing this desk publishes is not a rating. It is the level that says the rating is wrong.

A rating is an opinion, and opinions are cheap. An invalidation level is a commitment made in advance, in public, with a number attached, at a moment when we do not know which way price is going to go. It is the part that cannot be argued with afterwards.

On August 12 we published one for CoreWeave. Price went through it on August 18.

We found out on August 31.

The call

Our technical layer runs after the committee has voted and has no vote of its own. It does not decide whether a name is worth owning. It answers a narrower question: if a position existed, where would it be mechanically wrong.

For CoreWeave on August 12 it published this, in its own words:

The structure is likely wrong for a long position below the 94.82 swing low. Falling below this level violates multiple prior turns and places price back near the 200 day moving average at 93.23.

The reference price was 107.66. The level was 94.82, 11.9 percent below. The tool also recorded that ordinary daily noise for CoreWeave was 11.67 percent, on an average true range of 8.37 points.

That last pairing matters, because it is the whole point of publishing a level. A move to 94.82 would be marginally larger than the name's own routine movement. It would therefore carry information rather than being the sort of wobble that means nothing. The tool said so before the move happened.

What happened

On August 17 CoreWeave closed at 106.00. On August 18 it closed at 93.17.

That is a fall of 12.1 percent in one session, against a stated noise band of 11.67 percent. The move did not drift through the level. It gapped through it, and it did so by just enough to qualify as the informative move the tool had described in advance.

It has closed below 94.82 every session since. Eleven consecutive closes:

DateClose
August 18, 202693.17
August 19, 202690.87
August 20, 202689.76
August 21, 202687.85
August 24, 202686.25
August 25, 202688.04
August 26, 202688.01
August 27, 202686.80
August 28, 202684.23
August 31, 202684.89
September 1, 202681.85

At 81.85 the price is 13.7 percent below the level we published and 24.0 percent below the reference price of the call.

The part that is actually embarrassing

Not the loss. A published invalidation level that gets hit is the system working. That is what the number is for. A desk that never breaches a level is a desk that never committed to one.

The failure is that nothing checked.

We wrote the level into a log on August 12 and then never looked at that log again. It had no resolution step. Nothing compared a stored level against a current price, on any schedule, ever. The call sat there marked open while the thing that would close it had already happened.

Thirteen days passed between the breach and anyone noticing. Nineteen days passed between making the call and noticing. In that window we published two articles, and neither mentioned that one of our own published levels had gone.

There is a second, sharper version of the same failure. On the same day, hours before the technical layer produced that long invalidation level, the committee had voted on CoreWeave. Four seats: Avoid, Avoid, Avoid, Hold. Not one seat at Buy or better, three of four explicitly negative. We published that verdict on August 12 and stand by it.

So the record contains a unanimous instruction to stay away from a name, and a long invalidation level for the same name, recorded the same day, with nothing anywhere connecting the two.

To be precise about what did and did not go wrong there: the direction is an input to the technical layer, not its opinion. It was asked where a long would break, and it answered correctly. It is not supposed to have a view, and it did not have one. Nothing about that is a malfunction.

But a system that can hold both of those records at once and flag neither is not a system. It is two logs in the same folder.

What the price was doing while we were not watching

The gap on August 18 followed a specific piece of news. On August 17, Nvidia announced an investment of up to $105 billion in an OpenAI data center in Ohio, and separately called on Wall Street to help finance the AI chip buildout. Groq raised $350 million the same day to fund a pivot into the neocloud business.

Read together, those are three datapoints about the same risk. The companies that buy compute are increasingly financing and building their own, and new entrants are being funded to compete for what is left. A neocloud is a margin between the cost of chips and the price of renting them, and every one of those announcements presses on that margin from one side or the other.

Then something more interesting happened. On August 20, Hudson River signed a multibillion dollar deal with CoreWeave. That is unambiguously good news, the kind that normally puts in a floor.

The stock closed at 89.76 that day, 87.85 the next, and has not traded above the level since.

We have a published position on exactly this. On August 21 we wrote that CoreWeave's growing backlog does not answer the question we had asked, because the backlog is itself an obligation. One seat put it plainly, calling it "a liability disguised as an asset, because it locks the company into a capital expenditure path it cannot deviate from without breaching contracts."

A very large new contract arriving without margin disclosure, followed by the stock declining anyway, is consistent with that reading. It is not proof of it. One week of price action proves nothing at all, and we are not going to pretend otherwise.

What we changed

Since August 31 the desk runs a scheduled check every thirty minutes. It reads every open technical call against its published invalidation level, every committee verdict that has never been scored against what price has done since the session, and any move larger than half of a name's own average true range.

Two design decisions in it are worth stating publicly, because they are the ones that determine whether it is honest.

The arithmetic is not done by a model. The check computes every comparison itself, deterministically, from stored numbers. A language model is never asked whether one date is after another or what the difference between two prices is. A model asked to do arithmetic will eventually get it wrong in a way that reads exactly like getting it right, and that failure is invisible on the page. The model is only allowed to decide what is worth raising.

It cannot write an outcome. It can surface a breach and it can propose a score. It cannot mark a verdict resolved. That stays a decision a person makes, because a system that both grades the work and files the grade is not a record, it is a press release.

The check found the CoreWeave breach on its first run. That is the argument for it, produced by it, immediately.

What is still not fixed

We can now see that a level was breached. We still cannot score a verdict.

Twelve committee sessions across seven names, plus one rated claim, and not one has been resolved against an outcome. There is no scoring rule. Writing one is harder than it sounds, because half the record is Watch or Hold, and neither of those is directional. A rule that can only grade Buy and Sell is a rule that grades half the record and ignores the rest.

Until that exists, everything in the verdict log is an opinion with a date on it. We would rather say that plainly than let a run of agreeable prices imply something we have not measured.

The other two open technical calls, for the record and without commentary on where they go next. A Micron short published August 12 at 933.55, invalidation 1089.29, trading 933.44. A Cheniere long published August 31 at 289.38, invalidation 254.04, trading 294.13. Both levels intact.

One of three has broken. It broke in public, at a number we published in advance, and the only thing we got wrong was not looking.