Conversation
Defines offside (adverse >=1-sigma 4-week move against a trailing NPF extreme) and capitulation (top-decile one-week unwind of the crowded net) on the 8 Legacy markets of the NPF variance check, and freezes a two-sided event study - the washout and stampede folk claims disagree on the sign, so the sign is the question. Controls and the recentred block-bootstrap p inherit the forced-flow verdict's mean-reversion lesson from the start. This sandbox's network policy blocks cftc.gov and every probed price host, so execution is handed to a trusted-network session per the CLAUDE.md precedent; the script degrades to COT-only descriptives and reports a blocked run as blocked, never as a null. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RMg9W6WCCNS69zx3cEaCKb
Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RMg9W6WCCNS69zx3cEaCKb
The author's point: the data already lives in the stores this repo produces. COT now comes from COTDATA_STORE via cotdata.get_cot and daily closes from MARKETDATA_STORE via marketdata.get_bars (propadj, then backadj, logged), with the cftc.gov and stooq downloads demoted to fallback for store-less environments. Verified against the npf fixture store: gold loads 1,829 weeks through the real read path. Section 4 of the handoff is untouched; the amendment is recorded in section 5, dated and pre-execution. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RMg9W6WCCNS69zx3cEaCKb
|
Closing as covered, never executed (no results were produced on this branch). The question this pre-registers, whether an offside crowd's capitulation is followed by continuation or reversal in price, was taken up in npf the same day this spec was written, in work this cloud sandbox could not see:
Two further reasons not to move it into npf and run it: npf's review seam (added 2026-08-24) requires a separate review session before any spec with a new outcome variable or conditioning window executes, and this spec's 18 declared readings would add looks to a family whose price question already returned a null. Its placement was also against ADR-0007 (a price-outcome script reading The branch |
Description
"Offside capitulation evaluation": the phrase names a concept the workspace has vocabulary for but no measurement of — crowdmon's offside term (crowding = lopsided / offside / trapped) and the npf/cotmetrics capitulation signal family. This PR pre-registers a first-look event study and hands its execution to a trusted-network session, because this sandbox's network policy blocks cftc.gov and every probed price host (the same block the NPF variance check hit).
docs/handoffs/2026-08-23-offside-capitulation-evaluation.md— the frozen design. Offside = adverse ≥1σ 4-week move against a trailing NPF extreme; capitulation = top-decile one-week unwind of the crowded net; outcome = forward σ-scaled returns signed so the washout (claim A) and stampede (claim B) folk readings — both of which cotmetrics itself carries, inFLAG_BULL_CAPITULATIONvsCAPITULATION/COMMS_CAPITULATION— predict opposite signs. Controls and the recentred block-bootstrap p inherit the forced-flow verdict's mean-reversion lesson up front. Declared readings: 18; primaries: the two 4-week event readings; pre-committed verdict rules including an "insufficient data" outcome.scripts/offside_capitulation_check.py— the executable form, in thenpf_check.pymold: downloads CFTC Legacy zips (same URLs asproviders/cftc.py) and stooq daily continuous closes, with a local-CSV fallback and an honest degraded COT-only mode.--selftestruns the full pipeline on synthetic data offline and passes in this sandbox in ~0.5s..gitignore— excludes the script's download cache.Results, when the executing session pushes them, land as new dated
docs/analysis/files on this branch; §§1–5 of the handoff and the script's frozen parameters are not to be edited.Fixes # (no linked issue — task arrived as a branch assignment)
Type of change
Checklist:
pytest) and they pass locally — the existing suite is untouched by this additive change; the new script's--selftestpassesGenerated by Claude Code