The Lens · Radical Honesty

Corrections & Changed-Our-Mind Log

When we get something wrong, we say so — publicly, time-stamped, and we never quietly delete it. This is the running record.

Our promise. Most of finance markets only its winners and buries its misses — which is exactly why nobody fully trusts it. We do the opposite, on purpose. Every correction below is dated and stays visible forever: here is what we said, here is what changed, here is what we now think. Being right builds a track record. Being honest about being wrong builds trust — and trust is the thing worth earning.

A weather forecaster you can trust isn't the one who never misses. It's the one who tells you afterward, “I got yesterday wrong, and here's why.”

How this works

Two kinds of entries. Data / method — a correction to our data, numbers, or research process. Changed our mind — a view or call we have revised as new evidence came in. Newest first. We edit the log only to add entries or fix typos; we never remove or rewrite what an entry originally said.

The log

2026-10-15 · Changed our mind

We showed the overnight pattern as the example that lasts. Our own later tests say it is mostly exposure.

What we said: in “We Found a Real Edge. It Died in 2017” (11 September), the last row of the table listed “do not hold a position overnight” as the kind of constraint that survives, “still present over 18 years.”
What changed: on 21 September we tested it against the years when the underlying assets fell. In gold’s down years the overnight return was -1.07 basis points a night, against +5.88 in up years. In Russell 2000 futures’ down years it was -0.85, against +5.27. The continuous overnight drift also fell 40 to 66 percent after 2021, while the close-to-open return held because it moved into the gaps between trades.
Where we landed: the rule in that piece is unchanged (can the person on the other side choose when to trade?), but the overnight row is a reward for holding certain exposure, not an edge. We added a dated update to the piece and left its original text in place.
2026-08-13 · Data / method

We started keeping a visible “Updates” log on every article — and tracking how reliable each source proves to be

What we did: added a dated Updates to this piece box to the top of each deep-dive. When a figure changes, we show the old value struck through next to the new one, with the source — so a revision is never silent. First examples: we refreshed the nuclear-for-AI piece's uranium numbers to the latest 2025 data (the old figures were a year stale, not wrong), and updated the Musk piece after SpaceX agreed to remove the Colossus turbines by 2027.
The bigger idea: as we publish more, some sources will prove more reliable than others. We're starting to track that. A live example: we find AI chatbots useful for spotting themes but unreliable on dates and specifics — so we web-verify every hard fact against a primary source before it goes up, and we note when a source lets us down.
Why we're telling you: good research isn't never being wrong — it's having a system that catches and shows the changes, and that gets better at judging its sources over time. That system should be visible to you, not hidden.
2026-08 · Data / method

We found our historical gold price data was corrupted — and rebuilt it clean

What we found: a large share of the historical gold prices in our research database were at the wrong level (two different price series had been merged during an old import), which would have made some gold analysis look far better than reality.
What we did: rebuilt the entire gold history cleanly from the original per-contract source, verified it now matches real gold prices year by year, and added an automated price-plausibility check so this class of error gets caught the moment it appears, instead of hiding for months.
Why we're telling you: a bad data point is how a research shop fools itself first. Catching and disclosing it is the job — not something to bury.
2026-08 · Changed our mind

We downgraded a promising research idea after a cleaner re-test

What we said: an "overnight" market pattern looked like a real, repeatable edge in an early test.
What changed: a stricter, cleaner re-test on better data showed the effect was weaker and inconsistent in recent years — and part of the original signal was a data artifact.
Where we landed: downgraded it from "promising" to "marginal, not proven," and said so rather than quietly dropping it. We would rather kill our own idea than let a shaky one survive.
2026-09-21 · Data / method

Our new tracker cited the wrong ASML document for its own validation

What we said: the Chip-Tool Tracker validated itself against “ASML reported” regional shares — China 41% in 2024, 33% in 2025 — and cited ASML’s full-year results and 2025 annual report.
What is true: those are ASML’s net system sales by ship-to region, from its investor presentations (the 2024 figure is on page 11 of the Q4 FY2024 deck; we checked it). The annual report publishes a different series — total net sales including servicing installed machines — in which China is 36.1% (2024) and 29.1% (2025). A reader who followed our citation would have found numbers that did not match ours.
What we changed: the page now shows both ASML series side by side with the right source for each, and adds Korea and Taiwan for 2024 from ASML’s own deck. The result is a stronger validation than before: five of six comparisons fall within two points of ASML’s system sales, and against total sales China diverges by 5.7 to 9.5 points — which is what a series of new-equipment shipments should do. We also added two misuses the data cannot support (as a test of export controls, or as an early read on ASML’s earnings), named ASM International as another exporter under the same customs code, and narrowed our claim that nobody else publishes the series: a paid tracker may.
How we found it: two outside reviews, independently, on the day the page went up.
2026-09-21 · Data / method

Four footnotes printed the wrong number, and six figures had no source at all

What we found: in the waste-streams piece, the source list ran 1–6, 8, 9, 10, 7, so notes 7 to 10 printed next to the wrong source for anyone reading rather than clicking — on a page whose selling point is that every figure can be checked. The same page gave six figures about Stockholm’s heat-recovery scheme with no footnote, and we could not find a source for any of them.
What we changed: the footnotes are in order; the six figures are replaced with the European Commission’s dated ones (20 suppliers, about 30,000 apartments, 2022). Two readings of German law were tightened — the later reuse tiers are a planned share, and the agreement route is a ten-year deferral, not an escape — and we added what we had left out: the same bill delays 100% renewable electricity for data centres from 2027 to 2030, which we confirmed in the bill text. Meta’s figure for its Odense heat plant (165,000 MWh) now sits next to its designer’s (215,000 MWh), because nobody publishes a metered number.
2026-09-21 · Data / method

We corrected Japan's debt figures twice, and the first correction was also wrong

What we originally published: Japan at 204.4% gross, 134.3% net, attributed to the IMF.
The first correction, yesterday: a source pass could not locate 134.3 in any IMF publication, so we replaced the pair with the IMF's own ~207% gross / ~137% net from Finance & Development, and said 134.3 looked like a stale vintage.
What actually turned out to be true: a second pass downloaded the April 2026 World Economic Outlook database and read the series directly. JPN.GGXWDN_NGDP gives net 134.306 and gross 204.351 — for 2026, as a projection. Our two original numbers were the same source, the same vintage and the same year as each other. Nothing was stale. And the pair we replaced them with (206.5 / 136.5) is the same vintage's 2025 projection — so the correction swapped one unlabelled forecast for another and called it a fix.
The real error, which neither version addressed: we published a forecast for an unfinished year as a present-tense fact, with no year attached. That is the same failure as publishing a cumulative return with no holding period, which is the error this entire log exists because of. The page now leads with the 2024 actual — 214.5% gross, 141.7% net, which is also the figure Japan's Ministry of Finance quotes — and shows the projection path beneath it, labelled as projections.
Why we are publishing the failed correction rather than just the fixed number: a corrections log that only shows successful corrections is a highlight reel. This one took two outside passes and the second contradicted the first. That is what the process actually looks like, and the reviewer also withdrew two of its own earlier claims before giving us this — which is the only reason we trusted the third version over the second.
2026-09-21 · Framing

The rule we published to stop this error contained the error, twice

What happened: on 21 September we published a distinction between binding and fragile constraints, specifically to stop ourselves moving true numbers into places where they mean something else. A reviewer re-read the live pages the next morning and found that the rule box itself did it twice.
One: the definition of “binding” read “transformers on four-year lead times.” In the same commit, on the same morning, we corrected exactly that figure on the transformer page — the average is about 128 weeks, roughly 2.5 years, and four years is the tail. So the number we withdrew from one page was pasted into the definition that two other pages now teach from. Corrected to the average.
Two: the definition listed HBM and advanced substrates as fragile — in the same commit where we demoted Ibiden, an advanced-substrate maker, to CONCENTRATED precisely because three named peers sit alongside it. Our own definition contradicted our own reclassification, in the same file. Both moved to CONCENTRATED, and the rule now carries all three words.
Two more badges we had not corrected enough: rad-hard chips were tagged SPOF with four suppliers named in the cell (BAE, Honeywell, Microchip, Frontgrade) — now CONCENTRATED, with the note that the ~3 Trusted Foundry sites are the real constraint, not the vendor. And EUV photoresist was tagged SPOF with three named firms; it is now split, because the geography is the single point of failure (Japan ~95%) while the makers are not. The reviewer explicitly said it would rather tell us we under-corrected than let it stand, and on re-check it confirmed none of the five earlier demotions went too far.
And a stale entry on the nuclear page: the 13 August update box still said the fuel chain is “the real bottleneck,” directly contradicting the 21 September box above it. That is the same failure that left a fixed item under “still wrong” last week — an old note left standing. Marked as superseded rather than deleted.
Why we are publishing this rather than quietly repairing it: a rule that cannot survive its own author is worth less than one that shows where it failed. The paragraph admitting it now sits inside the rule box on both pages, permanently.
2026-09-21 · Data / method

Four cells in the IPO tracker were real numbers kept past the date they described

Anthropic. The column was headed “Revenue (2025)” and the cell read ~$45B run-rate. That is a May 2026 figure. Anthropic's 2025 exit run-rate was about $9B, and Sacra put the run-rate near $65B by July 2026. The ~20× price-to-revenue multiple was computed off the hybrid, so the multiple was wrong too. The column header now states the basis per row.
SpaceX. Read “Debuts Jun 12 2026” three months after it listed and began trading. Now “Listed 12 Jun 2026,” with the 21 September close.
OpenAI. Read “Q4 target.” Sam Altman told Fortune on 12 September 2026 that going public in 2026 would be “ill-advised” and said “I would say not 2026”; the company now targets 2027. Nine days stale on a page people read as a calendar.
Cerebras. Showed a ~$23B valuation, which was the pre-IPO target, not the outcome. It priced at $185 on 14 May 2026, raised $5.5B, opened at $385 and closed day one at $311 — about $66B, roughly $44B at the 21 September close of $208.71. We had the target where the result belonged, and the ~45× multiple inherited the error.
The pattern, again: all four are true figures left past the moment they described. A page stamped “figures as of June 2026” does not excuse a status column that reads as a live calendar. This is the fourth distinct instance of the same failure mode in today's log.
2026-09-21 · Framing

We called the nuclear fuel chain “the bottleneck” on a page whose own timeline runs without it

What we said: the nuclear piece called HALEU “the bottleneck nobody names” and the fuel chain “the real scarce layer.”
Why that breaks our own rule: the megawatts arriving in 2026 and 2027 come from restarts of existing reactors — Crane and Susquehanna — which run on ordinary low-enriched uranium and do not wait on HALEU at all. HALEU gates small modular reactors, which the same page dates to 2030 and later. Under the binding-versus-fragile distinction we published the same morning, HALEU is fragile: a single-source geography risk on a future category, severe if it fails, but not what limits this year's supply. The page now says so.
And a number that overstated it: we wrote that US commercial HALEU output is “~zero.” Centrus has produced and delivered over 920 kg to the Department of Energy from Piketon since 2023, runs at about 900 kg a year, and in January 2026 won a $900 million task order to build commercial-scale capacity toward a planned 12 t/yr. Against a >50 t/yr requirement that is roughly 2% of the need — small, and the argument survives it — but “zero” described an empty map where a demonstration cascade was already delivering.
2026-09-21 · Data / method

Three errors in the correction article itself, including a dead link we shipped this morning

The worked example was wrong. The article taught readers to divide a return by its time, then said the same 400% over two years is about 71% a year. 400% total is 5x; over two years that is +123.6% a year. 71.0% is exactly the three-year figure. The rate was right and the period was wrong — an arithmetic error inside the paragraph explaining the arithmetic, on the page about publishing a number without its time.
The stated cause could not explain both rows. We wrote that the stale figures flattered us because prices moved down. That works for our own average falling from +380% to +343.5%. It cannot work for the benchmark: the S&P 500 total-return index rose about 2.3% between end-June and 11 September 2026 (16,774.07 to 17,164.10), so the matched-window S&P figure could not have fallen from +117% to +109.6% through drift. The two were computed on different bases and we are re-deriving which. We would rather publish that than a tidy cause the price history contradicts.
And a link we broke this morning. Every correction notice we published earlier today linked to ../corrections.html, which resolves outside the /learn/ directory and does not exist. Four articles, four dead links, on notices whose entire purpose is to send you here. Fixed.
How we found it: outside review. The index-direction check took them one lookup and us nothing at all, because we never did it.
2026-09-21 · Data / method

We said SpaceX and xAI were private. Both had stopped being true months earlier.

What we said: the Musk bottleneck piece said in five separate places that SpaceX and xAI are private, and built its investing takeaway on it: you mostly cannot buy the purest pieces.
What is true: xAI merged into SpaceX in February 2026 in a $1.25 trillion all-stock deal and ceased to exist as a separate company by May. The combined entity listed on Nasdaq as SPCX on 12 June 2026 at $135 a share, raising about $75 billion at a $1.77 trillion valuation.
Why this is embarrassing rather than merely wrong: the page was updated on 13 August 2026, two months after the listing, and we still did not catch it. Our own AI IPO tracker carried the 12 June debut date the entire time. Two of our pages disagreed about whether the largest IPO in history had happened.
Does it change the conclusion: yes, and it inverts it. The article argued you could not buy pure bottleneck exposure. You can, in one ticker, at a price that already reflects everything the article says. That is a different and harder problem, and the page now says so.
2026-09-21 · Framing

A single-point-of-failure badge sitting next to three named alternatives

What we found: the supply-chain map tagged five things SPOF that its own text showed were not single. Ibiden, with Shinko, Unimicron and AT&S named alongside. Dielectric fluids, with four majors in the same sentence. Precision reducers, where the next cell reads two firms dominate. Roller screws, described as the Swiss duopoly. And Blue Canyon, whose cell says capacity is expanding 400% — a constraint that is loosening, which is the opposite of fragile.
What we changed: a second badge. SPOF now means one supplier, one process, no substitute. CONCENTRATED means a tight oligopoly or duopoly: few suppliers, but more than one. Eleven entries keep SPOF; five were reclassified. The map read as more fragile than its own evidence supported, which is the direction that sells better and therefore the direction to be suspicious of.
Same pass, same failure class: the transformer piece led with a 4-year waiting list and repeated it as the general figure, while its own body said standard units average ~128 weeks, about 2.5 years, with four years being the tail for the largest custom units. The headline contradicted the paragraph beneath it. Now corrected to the average, with the tail named as a tail.
The pattern: every serious error in this log is one error — a true number moved to a place where it means something else. A drawdown reported as a decade return. Tokens reported as words. A tail reported as a typical. A publication year reported as a measurement date. We now check the unit, the window, the vintage and the denominator before the arithmetic, because the arithmetic is almost never what is wrong.
2026-09-21 · Framing

We called four different things “the bottleneck”

What we said: intelligence per watt said the genuine scarcity is energy and memory, and called compute silicon “plentiful-ish.” Picks and shovels said power delivery is the binding constraint — and also that ASML is the only maker of EUV machines on Earth, and also that “the magnet is the bottleneck, not the AI.” The greenhouse piece said whoever solves power and cooling wins. Four different “the” bottlenecks across three pages.
What was wrong with it: not the facts. Every one of those claims is defensible on its own. The error was using a single word for two different kinds of constraint, so that a reader moving between our pages found us apparently contradicting ourselves about the most important thing we cover.
What we changed: both words are now defined once and used deliberately on every page. BINDING is what limits the next megawatt energised this year — power delivery, transformers, interconnect queues. It is slow rather than rare, and it sets the pace. FRAGILE is a single point of failure — EUV, photomask inspection, rare-earth separation. It is rare rather than slow, and it sets the tail risk. You own the binding constraint for the grind; you watch the fragile node for the break.
Does it change the conclusion: no, and it makes the map more useful rather than less. Nothing is retracted. What changes is that we now say which kind of constraint we mean, every time.
How we found it: an outside review read eight of our pages as a set rather than one at a time, which is the one thing we cannot do from inside. It was the most valuable thing the review produced, and it was not a factual error at all.
2026-09-21 · Data / method

We wrote “words” where the source said “tokens” — and let a price curve stand in for a physics curve

What we said: in intelligence per watt, the cost to match GPT-3’s level fell from “$60 to $0.06 per million words”, and “the falling price of AI is the efficiency curve, made visible.”
What the source says: a16z’s “LLMflation” measures tokens, not words — “$60 per million tokens” for GPT-3 in November 2021, “$0.06 per million tokens” for Llama 3.2 3B in November 2024, holding an MMLU score of 42 fixed. A token is roughly three-quarters of a word. The unit was wrong, and the thing being held constant was missing.
The bigger half of the correction: that thousand-fold is not a thousand-fold improvement in tokens-per-watt. Most of it came from a far smaller model reaching the same score — Llama 3.2 3B against GPT-3’s 175 billion parameters — plus margin compression as open-weight models commoditised inference. Real hardware efficiency is in there, but it is not the whole curve. Calling the price curve the efficiency curve implied you could read the physics off a price list. You cannot. The page now says so.
Does it change the conclusion: not the direction, but it weakens the evidence. The article’s thesis is that energy is the binding constraint; a reader is entitled to notice that a capability getting a thousand times cheaper without a thousand times more power is an argument against that thesis, not for it. We would rather host that objection than hide the unit that raises it.
How we found it: outside review, same pass as the decade and debt corrections.
2026-09-21 · Data / method

We reported the 1970s stock loss as four times its actual size

What we said: in the decade-by-decade comparison, “The 1970s lost ~50% in real terms for stocks (~5.9% nominal vs ~7.4% inflation × 10 years compounded).”
What it should have said: about −13%. The arithmetic we printed in our own parenthesis produces −13%, and the table higher up the same page gives −1.5% a year for the 1970s, which compounds to −14%. Both of our own numbers contradicted the headline figure sitting between them.
Where the wrong number came from: ~50% is a real and widely quoted figure — it is the peak-to-trough real drawdown of the 1973–74 bear market, not the decade’s return. We welded a drawdown onto a decade and presented the result as a decade return. This is the same error class as quoting a cumulative gain with no holding period: a true number, moved to a place where it means something else.
Does it change the conclusion: no. The section argues the 1970s were a worse decade for stocks than the 2000s, and that still holds — −13% real is worse than the 2000s’ −7%. The argument survived; the number that made it feel dramatic did not.
Two smaller fixes on the same page: “the 2010s and 2020s have averaged ~7% real” became “the 2010s ran ~7.7%, the 2020s nearer ~3%” — averaging them contradicted the page’s own table. And “only halfway through” the 2020s became “three years still to run”; the decade is in year seven.
How we found it: an outside review of our published pages, again. That is three times now. We have started a six-month review of every article for exactly this reason, and it is clearly not running often enough.
2026-09-21 · Data / method

Three figures in the debt piece, and two challenges that did not survive checking

What we fixed in the debt machine: Canada’s federal debt was given as ~42–46% of GDP; Finance Canada’s Spring Economic Update 2026, Table A1.7, runs 40.7% to 41.9% across 2024-25 to 2030-31 and never approaches 46%. Now ~41–42%. Federal debt charges were given as ~10% of federal revenues; the same table gives $58.7bn against $529.6bn in 2026-27, which is ~11%. And the Bank of England’s 97% broad-money figure was dated 2014 — that is the paper’s publication year, while its own footnote (6) reads “As of December 2013.”
Why the third one stings: that passage exists to make a point about dating a figure to when it was measured rather than when it was published. We made the exact error the paragraph warns against, inside the paragraph.
What we checked and did not change: the review also flagged that $58.7bn and 1.7% of GDP were different fiscal years, and that our $41bn Japanese figure was unsupported. Neither held up. Table A1.7 shows $58.7bn and 1.7% of GDP in the same 2026-27 column, and the $41bn was already carried in the article’s “what we could not confirm” section with an explicit instruction to treat it as an order of magnitude. We are recording the challenges we rejected as well as the ones we accepted, because a corrections log that only shows accepted criticism is a different and more flattering document than an honest one.
2026-09-20 · Data / method

Our track record compared every position to the same benchmark number

What we found: the track-record table showed an S&P 500 comparison beside each position, and every one of the eleven displayed rows read “+110%”. The footnote under the table said the benchmark was “matched to identical holding period”. It was not. Those positions were entered between January 2020 and May 2024, so they cannot share a benchmark figure. +110% was the portfolio-wide comparison, printed once per row as though it had been computed for each.
What it should have said: computed per position from dividend-adjusted S&P closes over each position’s own window, the column ranges from +51% (OKLO, entered May 2024) to +158% (WPM, entered January 2020). Two rows really are +110% — VRT and NVDA, both entered 3 January 2023 — which is how a wrong column can look right if you only check one line.
Does it change the conclusion: no, and we are saying so rather than letting anyone assume it does. Every position return on that page was already correct; only the comparison column was wrong. It made the weaker positions look like they had cleared a lower bar than they did, and the strongest ones look less remarkable.
How we found it: not by ourselves, again. An outside review we commissioned read the live page and noticed that five rows with different entry dates all carried the same benchmark. This is the second time in ten days that an outside reader has found an arithmetic error in our track record before we did. The first was the +380% headline we had already corrected elsewhere and left standing on the homepage.
What we did: recomputed all eleven rows from the underlying data, published the per-position figures, and rewrote the footnote to say plainly what the column is, what it was, and that a reviewer caught it. The working file is data/track_record_spy_per_position.json.
2026-09-18 · Claims / terms

We advertised a 30-day refund our own Terms of Service denied

What we found: the homepage said “First 30 days, full refund — no questions asked” and our upgrade emails promised a “30-day money-back guarantee”. Our Terms of Service said cancellation takes effect at the end of the billing period, “no partial refunds”. The cancel page refunded automatically inside 24 hours and then told anyone past that point the refund window had closed. Three documents, three different promises, and the two a subscriber would actually be held to were the narrow ones.
How we found it: ourselves, while acting on an outside review of the rebuilt site. The review did not catch this one. We were checking every public claim against the code that was supposed to deliver it and this fell out of that sweep.
What we did: resolved it in the subscriber’s favour rather than by quietly shrinking the advertised promise. The Terms now carry the 30-day guarantee, state that it overrides anything narrower on that page, and explain that inside 24 hours it is automatic and after that we issue it by hand. The cancel page now tells you the guarantee still applies instead of implying you are too late.
Why we’re telling you: nobody had asked for a refund, so nothing went wrong for anyone. It would have, and the version a court reads is the one denying it. A promise you make in marketing and take back in the terms is not a promise, and we would rather find that ourselves in a week with four subscribers than be told about it in a week with four hundred.
2026-09-18 · Data / method

We corrected our track record in September, and left the old numbers on our own homepage

What we found: on 11 September we recomputed the track record and published the correction — cumulative +380% became +343.5%, and the S&P comparison +117% became +109.6%. We updated the track-record page and wrote an article about it. The homepage kept the old pair in seven places, including the headline figure and the text people share, for a week.
How we found it: not by ourselves. An outside review we commissioned read the live page and flagged the figure we had already corrected elsewhere.
What we did: corrected all seven, and on the same day deleted every advertised feature our code did not actually deliver (a 60-day Premium trial that was never built, a macro bar, monthly recaps, a smart-money tracker whose data was never deployed, a pre-market brief that is switched off, a community and a live Q&A), closed the leaks that served paid data to anyone, and moved the weekly digest to the Friday we had been advertising.
Why we're telling you: publishing a correction and leaving the stale number on the front page is worse than not correcting it, because it looks like the honest version was for show. The whole list is dated in our changelog.
2026-06 · Data / method

We reconciled inconsistent track-record numbers to one audited source

What we found: our published track-record figures did not perfectly agree across every page of the site.
What we did: traced every number to a single audited source of truth, corrected the displays to match, and set a schedule to re-freeze and re-verify them on a regular cadence so they stay consistent.
Why we're telling you: if we ask you to trust a track record, the least we can do is make sure it says the same thing everywhere — and admit it when it didn't.

This log grows as we publish — and, inevitably, sometimes get things wrong. That's the point. See how we test and prove our claims in the first place:

How we prove our edge →

Educational research, not personalized investment advice. Dragonfly Lens is not a registered investment advisor. This log records corrections to our own data, methods, and views; it is maintained in good faith and updated as needed. Entries are added, never removed.