Repository navigation
"1 token today" read as a surveyed field, when the screen had four candidates - #2796
Merged
Merged
Conversation
…ndidates The divergence list on /capital prints how many rows carry a signal and not how many it had to choose from, so a short list reads as a field that was swept and produced one answer. The usual cause is the reverse. On the live board today: 62 of the 67 protocols are testable, 33 of them grew fees past 20% and 38 sit under their category median, both about half the field. Only 4 saw their token fall more than 10%, against 39 that rose more than 10%. The fees-up-token-down screen wants a falling token in a month where tokens rose, so it had four candidates before any other clause applied, and one survived. That is the month, not the filter, and the page said neither. Prints the three counts under the table. They are taken from the rows the table itself renders, so a reader can recompute every one. Same lesson as the spec tokens: a count published without the set it came from is not a reading. Also names the rows that can never qualify. Five protocols sit in Yield (2 members) and DEX Aggregator (3), under the floor where a category median is a peer comparison rather than a pair, so they are excluded before any clause is tested. Two of them would otherwise have cleared both legs today. And the section heading described one screen while the tab counted two. It read "fees up, token down, price to fees under the category median" above a list that also carries the mirror signal, which is why a reader seeing 2 on the tab and one row under that heading cannot reconcile them.
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.
Reported from the live page: the Valuation divergences tab shows 2 while the visible section lists one token, and it is not obvious whether something is broken.
Nothing is broken, and that is the problem
The tab counts protocols carrying either signal. There are two screens,
fees-up-token-down(Moonwell) and its mirrorfees-down-token-up(Sushi), one row each, and the second sits below the fold. Correct, but unreadable.Measured against
/api/capitaltoday:The fee leg and the P/F leg each match about half the field. The token leg matches four rows. The screen wants a falling token in a month where 39 of 62 rose more than 10%, so it had four candidates before any other clause applied and one survived.
So the short list is the market's direction, not the filter's strictness, and the page communicated neither. "1 token today" with no denominator reads as a swept field. This is the
{{count}}/{{ranked_count}}lesson from #2782 in a different surface.What changes
The three counts, printed under the table. Taken from the rows the table itself renders, so a reader can recompute each one.
divergenceFunnel()incapital-hub-rules.ts, pure, five tests.The rows that can never qualify, named. Five protocols sit in Yield (2 members) and DEX Aggregator (3), below
SIGNAL_MIN_CATEGORY_MEMBERS, so they are excluded before any clause is tested. Two of them would have cleared both legs today. The page did not say they were ineligible, only that they were absent.The heading. It read "fees up, token down, price to fees under the category median" over a list that also carries the mirror, which is exactly why a 2 on the tab and one row underneath could not be reconciled. Now "fee trend against token move, in both directions".
No harness change, no API change: every number was already on the row.
Rendered today
Those figures match an independent read of
/api/capitalexactly.Verified
pnpm typecheck, eslint clean on all three files,pnpm test430 pass / 0 fail (+5), page renders 200 with the copy above.