Skip to content

docs(crowdmon): UC-2 recommended widening a stop, which does not protect - #21

Merged
mspinola merged 1 commit into
mainfrom
claude/uc2-stop-advice
Aug 4, 2026
Merged

docs(crowdmon): UC-2 recommended widening a stop, which does not protect#21
mspinola merged 1 commit into
mainfrom
claude/uc2-stop-advice

Conversation

@mspinola

@mspinola mspinola commented Aug 4, 2026

Copy link
Copy Markdown
Owner

docs/design/crowdmon_system_description.md UC-2 recommended widening a stop on a crowded name. That is advice the rest of the document refutes.

The error

Action: a wider stop with a smaller position, sized so the wider stop costs the same dollars.

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:

  • UC-2's own premise, one paragraph above the action: "the unwind gaps through it and fills far below." That is as true of a wide stop as a tight one.
  • UC-1, one section earlier: "the asymmetry the system is flagging is not 'this will fall' — it is 'when it falls, it will fall through your stop.'"

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 passed under npf/.venv, unchanged; ruff check . clean.

Unrelated, flagged in passing: the isolated crucible-stack/.venv cannot collect the suite at all, failing with ImportError: cannot import name 'EdgeBaseline' from 'crucible.validation'. Its site-packages holds a non-editable pre-0.5.0 crucible. This reproduces on an untouched main, 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

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>
@mspinola
mspinola merged commit 3efc36f into main Aug 4, 2026
1 check passed
@mspinola
mspinola deleted the claude/uc2-stop-advice branch August 4, 2026 01:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant