docs(crowdmon): UC-2 recommended widening a stop, which does not protect - #21
Merged
Conversation
UC-2 "Stop placement and gap risk" told the reader to set "a wider stop with a smaller position, sized so the wider stop costs the same dollars". That prices a protection the instrument does not deliver in the one regime the document was written about. A stop is a trigger, not a guarantee. It converts to a market order when touched and fills wherever the market next trades, so in a gapping name it fires because the cascade has started, not before it. Widening does not buy protection, it moves where you find out. The document already contained the refutation twice and did not connect it. UC-2's own premise says "the unwind gaps through it and fills far below", which is as true of a wide stop as a tight one, and UC-1 states the mechanism outright: "when it falls, it will fall through your stop". UC-2 now leads with defined-risk protection (long put, or a collar where the premium is unattractive), which is the only structure that pays in the gap rather than transacting into it, and was previously offered second as an alternative. Where a stop is the only tool available, the guidance is to size so a gap through the level is survivable rather than sizing to the stop distance, since the stop distance does not determine the loss. Widening is kept, demoted to a trade-off with both sides named: a wide stop keeps you in a positioning unwind, which UC-6 says usually mean-reverts, and costs more in a fundamental repricing, which UC-6 says does not. That makes it UC-6's decision, taken during the drawdown, rather than an assumption made when the stop is placed. Also corrects the section 7 preamble, which promised "stops that survive". Found while correcting the same error in crowdmon's plain-language summary (crowdmon#57). Recorded there as docs/design/amendments-2026-08-03.md section C28, which reasoned about this file but did not edit it. Docs only. crucible-stack suite unchanged at 407 passed under npf/.venv. 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.
docs/design/crowdmon_system_description.mdUC-2 recommended widening a stop on a crowded name. That is advice the rest of the document refutes.The error
A stop is a trigger, not a guarantee. It converts to a market order when touched and fills wherever the market next trades. In a gapping or limit-locked name it fires because the cascade has started, not before it, so widening does not buy protection. It moves where you find out.
The document already contained the refutation, twice, and did not connect it:
A stop that will be fallen through is not made into protection by being further away.
The fix
Defined-risk protection now leads. A long put, or a collar where the premium is unattractive on its own. This was already in UC-2 and was offered second, as the alternative rather than the recommendation. It is the only structure that pays in the gap rather than transacting into it.
Sizing guidance corrected. Where a stop is the only tool available: size so that a gap through the level is survivable, rather than sizing to the stop distance. The stop distance is not what determines the loss, which is the whole point.
Widening kept, demoted to a trade-off with both sides named. A wide stop keeps you in a positioning unwind, which UC-6 says usually mean-reverts, and costs more in a fundamental repricing, which UC-6 says does not. That makes it UC-6's decision, taken during the drawdown when the metrics can distinguish the two, rather than an assumption baked in when the stop is placed. The §4.2 and §5.2 pointers are retained, since pricing the gap explicitly is still the right instruction.
§7 preamble. Promised "stops that survive", which is the same claim in miniature. Now "protection that pays in a gap rather than triggering into one".
Provenance
Found while correcting the identical error in crowdmon's plain-language summary (mspinola/crowdmon#57). Recorded there as
docs/design/amendments-2026-08-03.md§C28, which reasoned about this file but deliberately did not edit it, since it is a shared working tree in another repo. This PR is that follow-up. §C28 will be annotated with the outcome once this lands, so it does not read as an open item and invite a second fix.Testing
Docs only, no code touched.
407 passedundernpf/.venv, unchanged;ruff check .clean.Unrelated, flagged in passing: the isolated
crucible-stack/.venvcannot collect the suite at all, failing withImportError: cannot import name 'EdgeBaseline' from 'crucible.validation'. Itssite-packagesholds a non-editable pre-0.5.0crucible. This reproduces on an untouchedmain, so it is a stale-venv issue rather than anything from this branch, but it means that venv has not run the decay stack since 0.5.0 shipped.🤖 Generated with Claude Code