A signal with no stop has an opening and no ending, so whoever scores it afterwards gets to choose when to stop counting. In our corpus that describes just over half of everything — and 95% of that half comes from a single channel.
Why can't a signal without a stop be scored?
Because it never says when the trade is over.
A signal with an entry, a ladder and a stop is a complete instruction. Price goes one way and hits a target, or it goes the other and hits the stop, and either way the trade has an ending that was fixed before it started. Anybody can replay it afterwards and get the same answer.
Take the stop away and the ending is missing. The position is open until somebody decides it is not, and that decision happens after the outcome is known. A trade 30% underwater is not a loss yet; it is a trade that has not been closed. Give the same stopless signal to two people and you can get a win and a blow-up from the same post.
That is not a scoring inconvenience. It is the thing that makes a published record unfalsifiable.
How much of our corpus is in that state
Of 3,487 signals parsed from indexed channels between November 2021 and 12 August 2026:
| Signals | Share | |
|---|---|---|
| Published a stop | 1,689 | 48% |
| Published no stop at all | 1,798 | 52% |
And when we replay those signals as published — each one against its own stop and its own ladder — 1,809 of them come back as unresolvable. Not "lost", not "still open". Unresolvable: the rule set the channel gave us does not contain enough to decide what happened.
The two figures differ by eleven, and they are counting slightly different things: 1,798 is signals with no stop in the parse, 1,809 is outcomes the replay could not resolve as published. The gap is signals that published a stop we could not use — a stop on the profit side of the entry, targets that contradict the direction. We quote both, because the rounder single figure would hide the difference.
Just over half. It is worth being blunt about what that means for us and not only for the channels. The largest single category in our own replay is "we cannot tell you", and it is that large because the source material does not support an answer.
One caveat belongs here rather than in the footnotes, because it changes what the number is about. 1,708 of those 1,798 stopless signals — 95% — come from one channel, which by itself is 49% of everything we have indexed. Three channels account for 99% of them. The rest of the archive looks nothing like this: strip that one channel out and 95% of what remains carries a stop. So "half our archive cannot be scored" is a true sentence about our archive and a misleading one about the market, and the section below is where that becomes visible.
What people do instead, and why it flatters
The obvious workaround is to supply a stop of your own. Apply a standard one — say 10% — to every signal that arrived without one, and suddenly everything is scoreable.
We did exactly that, as a second run, and the result is a good demonstration of why the workaround is not a fix:
| Group | Outcomes | Actually scored | Hit rate |
|---|---|---|---|
| Channel published its own stop | 1,628 | 1,267 | 59.0% |
| A 10% stop applied by us | 1,797 | 433 | 79.2% |
The fallback group looks dramatically better. It is worth less. Of its 1,797 outcomes, 1,361 were cancelled before they were ever scored, so the 79.2% is computed on 433 trades out of 1,797 — under a quarter of the group. A stop far enough away that price rarely reaches it produces a high percentage and very little evidence, which is the same effect a wide-stop strategy has in real trading.
So the choice is between not scoring half the corpus and scoring it with a number the channel never published, which inflates the result. We publish the first and label it, because the alternative is putting our assumption in a channel's record and letting it read as their performance. That distinction is the subject of what a backtest can and cannot prove.
The stops that do exist are all over the place
Among the 1,569 signals that published a price stop, the distance from entry is not a convention:
| p25 | Median | p75 | Mean |
|---|---|---|---|
| 2.40% | 4.79% | 10.61% | 11.67% |
285 of them sit closer than 2% from entry, which is tighter than the +2% move our public metric scores against. 423 sit beyond 10%. The mean is more than double the median, which is what a long tail of very wide stops looks like.
A stop is not a formality that makes a post complete. Where it sits changes what the same signal means, and two channels publishing "stop loss" can be describing risks that differ by a factor of five. Why win rate alone means nothing is the general version of this point; the stop distribution is where it comes from.
The part that complicated the story, and how it resolved
We also ran the question over the raw channel archives in this repository, a recent scrape covering months where the index covers years. It gave a very different answer.
Of 549 posts there shaped like a fresh signal — a direction, an entry, a real ladder — 7 publish no stop at all, 1.3%. Another 11 (2.0%) carry something our parser read as a stop but which cannot be a level on that trade, and we count those separately, because a rung index misread as a stop is our failure and not a channel's. That leaves 531 of 549, 96.7%, with a usable published stop.
96.7% against 48% is not a small disagreement. The first version of this article said we would not resolve it here, and named the two candidates: the corpora are different, or the parsers are. We have since done the work, because writing this piece turned up four separate ways our own new parse missed a stop that was plainly there — a currency symbol between the label and the price, a price on the line below the label, a dash where a colon was expected, a rung index captured in place of a level — and a parser with that record is not one to trust about missing data.
It was not the parsers. Both were pointed at the same posts: first the recent archives, then the production database itself, comparing every stored signal against a second reading of its own text. Of 1,818 signals stored without a stop, 20 had one written in the post — 1.1%. Five masks were expecting the colon to sit directly against the label, so a channel that typed a space in front of its colon published a stop into a blank field; one channel had 18% of its own record misfiled that way, which is worth fixing on its own terms. Fixing all five moved the corpus figure by half a percentage point. Every number above is the corrected one.
It was the corpora, and specifically one channel. The archive holds 1,708 stopless signals from a single channel, 95% of every stopless signal we have and 49% of the entire index. That channel does not appear in the recent scrape at all. Remove it and the two measurements land in the same place: 95% of the remaining archive publishes a stop, against 96.7% in the scrape. The disagreement was never about the years or the reading — it was one large publisher, doing one thing, at a volume that swamped everything else.
What that one thing is, the channel's own feed spells out. We pulled 999 of its recent posts. 163 are signals — entry zone, a ladder of targets, direction, leverage, and no stop anywhere. Around them sit 164 "proof" screenshots and 163 posts of a fixed shape: "BUY posted in Premium: 11:51 UTC … Public channel saw it after +131.12%. Timing is the difference." One per signal, claiming the paid room got in earlier, with missed gains quoted from 17% to 569%. A third of the feed exists to sell the room that the free signals are a shop window for.
The other two channels in the trio holding 99% of our unresolvable signals run the same model with less subtlety. One posts a single line — "SPOT BUY HERE AT 0.1057" — 66 signals with no target and no stop, averaging 34 characters. The other ends every signal with an invitation to contact an account and "enter the premium group & trade with perfect targets & stop loss levels." In that sentence the stop is not omitted. It is priced.
That is the more useful finding. A number about missing data is also a number about who is in your sample, and a corpus statistic can be dominated by a single member without anything looking wrong. We report the share and the concentration together from here on, because either one alone tells a story the other corrects.
What does not move: a signal with no stop cannot be resolved as published, and 1,809 signals in our replay are in that state today.
What it means for you, reading one post
You are not scoring a corpus. You are looking at one message, and the question is narrower: what has this post actually told me?
If there is no stop, the post has given you an opening and left the ending to you. That is the most expensive of the four decisions a signal can hand over, and it has been handed over in silence. Whatever the channel later claims about that trade, the claim will describe an exit you chose or an exit they chose in hindsight, and neither is evidence about the signal.
There is a second, quieter consequence. A channel that does not publish stops cannot be scored by anybody — not by us, not by a rival channel, not by a subscriber with a spreadsheet. Whether that is the intent or a side effect varies by channel, and where a post is silent we do not guess. But the three channels above are not silent: each one's feed advertises a paid room, and one of them names the stop as what you get when you pay. Why so many signals arrive without a stop covers the reasons channels give and the ones they do not.
Either way, the effect is the same: the record is unfalsifiable, and an unfalsifiable record does the work of no record at all.
What this does not prove
Neither figure is a survey of the market. 3,487 signals from 17 publishing accounts, and 549 posts from 13 channels. Both are what we happened to index, and neither was sampled to represent anything wider. The concentration above is the sharpest illustration of that: one channel decides the headline share.
The prod figures are a snapshot taken on one day. They were taken read-only on 12 August 2026, after the mask corrections described above and a re-run of the affected channels; resolve_signals moves these counts as it runs. Read them as of that date. The earlier version of this article quoted the 7 August snapshot — 3,227 signals, 1,653 unresolvable — and those are the same measurements five days and 260 signals earlier.
"Unresolvable" is a property of our rule set, not a verdict on the trade. Those 1,809 signals may have made money for people who followed them. We are saying we cannot demonstrate either way from what was published, which is a much smaller claim than "they lost".
The 1.3% from the recent scrape rests on a parse we corrected four times while writing this. It is the most fragile number on the page, which is why it appears beside its own error bucket. Sensitivity runs move it between 1.4% and 2.5% depending on how narrowly a post must look like a signal.
We are not saying a stop makes a signal good. A published stop makes a signal checkable. Those are different properties, and the second one is all this article is about.
The practical read
Before you follow anything, look for the ending. Entry, targets, and the level at which the idea is wrong: if the third is missing, everything the channel later says about that trade is a story you have no way to test.
If you follow it anyway, write down the exit you used, at the time you used it. That single habit converts an unscoreable signal into one data point you personally can score, and after a month you will have a record of the channel that the channel cannot produce for itself. Keeping your own trade log is the fifteen-second version.
And when a channel advertises a hit rate, ask what happened to the trades with no stop. If the answer is that they were scored against a stop the channel supplied after the fact, the percentage is a description of the scoring rule and not of the trading. How to check a track record in 10 minutes walks the rest of that check.
What the channels we can score have historically published is at Signal Providers. Nothing here recommends any channel, any asset, or any stop distance.
Sources
- Corpus counts, the concentration by channel, the as-published replay categories, the fallback-stop comparison and the stop-distance distribution, quoted as line items rather than summary rows:
work/_snapshot-2026-08-12-stops.md, prod read-only snapshot of 2026-08-12 taken withwork/_tools/snapshot-stops.py. 3,487 parsed signals dated 2021-11-09 to 2026-08-12 from 17 accounts; 1,689 with a published stop and 1,798 without; BASELINE_UNRESOLVABLE 1,809; 1,708 stopless signals under one mask and 1,795 under three; channel-stop group 1,628 outcomes and 1,267 scored at 59.0%; fallback group 1,797 outcomes, 1,361 cancelled, 433 scored at 79.2%; stop distances over 1,569 price stops. The 2026-08-07 figures the first version quoted are inwork/_snapshot-2026-08-07-batch2.md. - The audit that closed the 96.7%-against-48% question, both runs and their disagreements read by eye:
work/_audit-2026-08-12-prod-parser.md, withwork/_tools/audit-prod-parser.pyover the dumps andwork/_tools/audit-prod-db-stops.pyover the production table. 20 of 1,818 stopless signals carried a stop in their own text; the five mask corrections and their before/after comparison are inwork/_mask-fix-2026-08-12/. - The shop-window measurement over the largest stopless channel's own feed — 999 posts of 2026-08-07..08-12, 163 signal posts against 164 "proof" screenshots and 163 premium-timing posts, missed gains claimed at 17–569%, and the verbatim posts quoted for all three channels:
work/when-a-channel-publishes-no-stop/parse_funnel.py, output committed asparse_funnel-output.txt. - Missing-stop rates in the recent archive, the separate implausible-capture count, the per-channel table and every sensitivity run:
work/when-a-channel-publishes-no-stop/parse_no_stop.py, run againstdata/channel_dumps/(36 channels, 23,707 messages, 16,694 after exact deduplication). 549 fresh signal posts across 13 channels. Output committed asparse_no_stop-output.txt, stable acrossPYTHONHASHSEED0..4. As of 7 August 2026. - The four parse defects described in the text, with the raw post shapes that exposed each:
work/_tools/signal_parse.pyandwork/_batch9-shared-research.md. Fourteen stopless posts and four with stops read against their raw text before publication.