Exposure: a Crowding switch, and honest gold copy - #62
Merged
Conversation
The help text said the crowd sits "at the 98th percentile of their own history in dollars and the 67th in ounces", a 31 point gap. That was measured and true when written, and it is a reading that moves every Tuesday, so static copy quoting it rots in silence. Against the pinned store on 2026-08-24 the same pair reads 97.0 and 73.1, so 23.9 points. It was also the widest week standing in for the effect. Gold's median displacement on this composite is about 6 points and the ninetieth about 14, so the sentence oversold the switch by roughly four times for a typical reader. The copy now states the distribution, which moves slowly, rather than one week, which does not survive a fortnight. The tooltip's drift figures go the same way for a different reason. It carried "Equities 4.2x to 1.3x since 2002", inherited from a comment in cotmetrics.exposure that records no leg, no unit, no membership and no date range, so nothing can reproduce it and this page's own default membership is four markets rather than the whole class. Replaced with figures measured under the page's OWN defaults: 3.2x in dollars against 0.8x in gold. Every figure here comes from npf's exposure-numeraire study, which ran against pinned stores and left its JSON beside its write-up: npf/docs/analysis/2026-08-24-exposure-numeraire-levels.md. The test that pinned "98th percentile" is replaced rather than updated. Asserting a moving number's presence is what let it rot for as long as it did, so the new test asserts the opposite: that no live percentile appears in this copy, and that the distributional framing is there. The live reading belongs in the headline above the chart, and already is one. Nothing about what the switch DOES changes, and the WillVal credit, the not-an-inflation- adjustment framing and the circularity caveat are all untouched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…et this is Divides by the same set's own open interest, so the chart reads as the share of the market a group holds rather than the money it has at stake. cotmetrics 0.8.0 computes it; this is the control. Earned by measurement, not proposed as an idea. npf/docs/analysis/2026-08-24-exposure-numeraire-levels.md scored four ways of reading this page's level series against each other on 43 markets: dollars, CPI-deflated dollars, gold, and this. It moves a reader's percentile by 10 points or more, or flips the headline band on 10% of weeks, on 7 of 9 asset classes on both units. CPI managed 0 of 9, which is why there is no CPI switch here and will not be one. It is the only control on the page that removes market GROWTH rather than the price level, which is all a deflator can remove. On the drift this page exists to fight it is the strongest of the three: Metals runs 24.4 times its early history in dollars and 1.8 in share, Fixed Income 14.1 and 1.0. The switch is a change of COLUMN, not a second code path. `unit` is the column name everything downstream already resolves against, so the share columns join the same UNIT_LABELS / UNIT_RANK_COLUMN / UNIT_NOTES maps and swapping the name gives the chart, the headline, the rank, the band and the axis their share versions at once. Three things follow from a share being a share, each tested. It prints as a percentage with no currency mark and no ounces, because a ratio of two quantities in the same unit has no denomination. It reads identically with Gold on or off, verified through the headline rather than asserted. And it never rescales: `unit_scale` exists so an axis reads $55bn instead of 55,387,601,984, and a half is not "0.5k". The contribution table deliberately does NOT follow the chart. Per-market shares do not add up to the set's share the way dollars do, so it stays in dollars while the switch is on and the copy says so, rather than leaving two panels in different units for a reader to discover by misreading them. Two limits are in the copy rather than in a doc nobody opens. It adds almost nothing on Softs and Currencies, so it is a switch and not a new default. And it answers how crowded relative to the market and NOT how much money is at stake, so a set can grow its share while cutting its position if the market shrank faster. Verified against the real store: Metals speculators sit at 51.1% of that complex's open-interest risk, the 98th percentile of their own history, where the same week in dollars reads the 99th. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…and it did nothing The DOCUMENT outcome of the study that produced the Crowding switch. A twenty-year chart of dollars invites "shouldn't this be inflation adjusted", and until now the page had no answer, which reads as an oversight rather than as a decision. It was tested. Across 43 markets, deflating by CPI moved the percentile by one or two points and changed the headline on at most 6% of weeks, clearing on none of the nine asset classes where gold clears eight. The drift on this page is mostly the market getting bigger, and consumer prices have not quite doubled while some of these markets grew twenty-fold, so there was never enough in CPI to remove it. A second entry says what does answer the drift: the percentile, which is why it is on every reading here rather than left to the axis, and then the Crowding switch, which removes the growth itself. Neither is a deflator. Kept narrow, as the study's frozen gate requires. This is a result about CPI and not about deflators as a class: no placebo divisor and no trade-weighted dollar were tested, and the copy says the trade-weighted dollar would be the next thing to try. Two copy guards are narrowed rather than deleted, and the narrowing is the point. They asserted that "inflation" and "cpi" appeared NOWHERE in the page copy, which was a fine proxy for the real rule while the page had nothing to say about either. A blanket word ban would now force the page to stay silent about the one measurement that settles the question a dollar chart provokes. The rule is that GOLD is never sold as an inflation adjustment, and that is what the tests now check, scoped to the gold and crowding entries, each with an assertion that the scope is non-empty so neither can pass vacuously. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The previous commit narrowed two copy guards from the whole body to the gold and crowding entries, so the new copy could report that a price-index adjustment was built and found inert. On reflection that traded the wrong thing. The words are what a reader takes away. A body containing them at all can be skimmed into the framing the rule exists to prevent, whichever entry they happen to sit in, and the rule is worth more as an invariant than as a precise statement. The copy says exactly the same thing without them, which cost one sentence to rewrite: "divide by a general price index" rather than naming the series, and "that ONE index rather than the whole idea" for the scope limit the frozen gate requires. Guards restored to the whole body. The reasoning is recorded in the test docstring rather than lost, including why the narrowing looked reasonable, so the next person to hit this does not rediscover the argument and reach the other answer. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Four commits, all downstream of one study:
npf/docs/analysis/2026-08-24-exposure-numeraire-levels.md, which scored four ways of reading this page's level series on 43 markets.Needs cotmetrics 0.8.0 (mspinola/cotmetrics#31, merged). Floor raised accordingly.
1. A Crowding switch
Divides by the same set's own open interest, so the chart reads as the share of the market a group holds rather than the money it has at stake.
It is the only control here that removes market GROWTH rather than the price level, which is all a deflator can remove. On drift: Metals 24.4x to 1.8x, Fixed Income 14.1x to 1.0x.
The switch is a change of COLUMN, not a second code path.
unitis the column name everything already resolves against, so the share columns join the sameUNIT_LABELS/UNIT_RANK_COLUMN/UNIT_NOTESmaps and one swap moves the chart, headline, rank, band, second panel and axis together.The contribution table deliberately does not follow. Per-market shares do not add up to the set's share the way dollars do, so it stays in dollars and the copy says so, rather than leaving two panels in different units for a reader to discover by misreading them.
Three consequences of a share being a share, each tested: it prints as a percentage with no currency mark and no ounces; it reads identically with Gold on or off; and it never rescales, because a half is not "0.5k".
2. The gold copy stops quoting one week as the effect
The help text said the crowd sits "at the 98th percentile in dollars and the 67th in ounces", a 31 point gap. True when written, and a number that moves every Tuesday: against the pinned store it reads 97.0 and 73.1, so 23.9 points. It was also the widest week standing in for the effect, where the median is about 6 points, so the copy oversold the switch roughly fourfold for a typical reader.
The tooltip's "Equities 4.2x to 1.3x since 2002" went too, for a different reason: it was inherited from a
cotmetricscomment recording no leg, no unit, no membership and no date range, so nothing could reproduce it. Replaced with figures measured under this page's own defaults.The test that pinned "98th percentile" is replaced rather than updated. Asserting a moving number's presence is what let it rot; the new test asserts no live percentile appears in this copy at all.
3. Why there is no inflation switch
The DOCUMENT outcome the study's frozen gate specified. A twenty-year chart of dollars invites the question, and until now the page had no answer, which reads as an oversight rather than a decision. It was tested and it moved almost nothing.
Kept narrow as the gate requires: a result about one index, not about the whole idea. No placebo divisor and no trade-weighted dollar were tested, and the copy says the trade-weighted dollar would be the next thing to try.
4. One guard narrowed, then restored
The new copy needed to discuss a price-index adjustment, and two guards banned those words page-wide. I narrowed them to the sections they protect, then reverted: the words are what a reader takes away, and the copy says the same thing without them at the cost of one sentence. Both rounds and the reasoning are in the test docstring, so the next person does not rediscover the argument and reach the other answer.
Verification
457 tests pass, ruff clean on
src tests, dependency floors clean. Verified end to end against the real store: Metals speculators read$2,383.0m, higher than 99%in dollars and51.1% of open interest, higher than 98%with the switch on, and the share headline is byte-identical with Gold on or off.🤖 Generated with Claude Code