# news-reaction-failure-analyzer

Tests whether a crowded speculative position failed to benefit from favorable news. It handles step two of the COT contrarian process.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 2500 installs · ★ 3267
- Author: tradermonty
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/tradermonty/claude-trading-skills/tree/HEAD/skills/news-reaction-failure-analyzer/SKILL.md
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/skills/news-reaction-failure-analyzer

## What it does

The skill compares a crowded position’s direction with curated news events and the price movement that follows. It returns `CONFIRMED`, `NOT_CONFIRMED`, or `INSUFFICIENT_EVIDENCE`, along with aggregate statistics and an evidence table. Its drift-significance test is designed to avoid treating a simple count of unresponsive events as confirmation on random noise.

You need Python 3.9+, the `requests` library, and an FMP API key supplied through `FMP_API_KEY` or `--api-key`. News events are gathered with WebSearch and passed in a JSON file; the skill must not invent events. If price data is unavailable or too few usable event clusters remain, the result is `INSUFFICIENT_EVIDENCE`. A confirmation covers only step two of five, not a trade entry: later checks and the trading decision remain manual.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add tradermonty/claude-trading-skills --skill news-reaction-failure-analyzer -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/news-reaction-failure-analyzer/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/news-reaction-failure-analyzer/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add tradermonty/claude-trading-skills --skill news-reaction-failure-analyzer -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/news-reaction-failure-analyzer/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add tradermonty/claude-trading-skills --skill news-reaction-failure-analyzer -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/news-reaction-failure-analyzer/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install tradermonty/claude-trading-skills news-reaction-failure-analyzer
```

2. **Manually: put the files in place**
- File: `.github/skills/news-reaction-failure-analyzer/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add tradermonty/claude-trading-skills --skill news-reaction-failure-analyzer -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/tradermonty/claude-trading-skills --path skills/news-reaction-failure-analyzer
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/news-reaction-failure-analyzer/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add tradermonty/claude-trading-skills --skill news-reaction-failure-analyzer -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/tradermonty/claude-trading-skills/tree/HEAD/skills/news-reaction-failure-analyzer/SKILL.md

## When to use it
- check whether a crowded market ignored favorable news
- compare event direction with subsequent price movement
- avoid confirming a news failure from random noise
- produce an event evidence table and verdict

## Example prompts
- Check whether B6 ignored positive news while the market was crowded long.
- Run the COT news-failure check for B6 and explain the verdict for each event.
- Compare the price action with `reports/nrf_events_B6_2026-07-12.json` and save the report in `reports/`.

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: da39009b81bc3278.

BEGIN THIRD-PARTY FILE da39009b81bc3278
```text
---
name: news-reaction-failure-analyzer
description: Judge whether a market FAILED to react to news favorable to a crowded speculative position — step 2 of Jason Shapiro's COT contrarian process. Consumes a cot-contrarian-detector report (or an explicit direction) plus a Claude-curated events JSON, fetches the underlying price series with a documented fallback chain, and produces a fail-closed CONFIRMED / NOT_CONFIRMED / INSUFFICIENT_EVIDENCE verdict using a statistically validated drift-significance test (not a naive failure-ratio, which false-confirms on pure noise). Generic beyond COT — reusable for PEAD and macro-crowding news-failure checks. Use when the user asks to check news-failure confirmation, whether a crowded market "shrugged off" good/bad news, or wants to run Shapiro step 2 on a CROWDED_LONG/CROWDED_SHORT market.
---

# News Reaction Failure Analyzer

## Overview

Implements step 2 of Jason Shapiro's COT contrarian process: once a market
is flagged as crowded (`cot-contrarian-detector`, step 1), check whether it
FAILED to react to news that should have rewarded the crowd. A crowded-long
market that doesn't rally on genuinely bullish news, or a crowded-short
market that doesn't sell off on genuinely bearish news, is the core
behavioral tell that the crowd has run out of buying/selling power — this
is the confirmation step that turns "crowded" into a contrarian setup
candidate (steps 3-5, still manual: price-action confirmation, entry, exit).

**Why this isn't a naive failure-ratio check:** an earlier design flagged
"news failure" whenever fewer than half the relevant events "responded" —
but under pure noise, roughly 69% of individual events fail to respond by
chance, so that rule would CONFIRM on random noise 48-83% of the time
depending on sample size. This skill instead requires the market to have
moved *significantly against* the crowd's favorable news (a drift-
significance test with a Monte-Carlo-verified null false-positive bound),
never merely "didn't respond enough." See
`references/news-failure-patterns.md` for the full statistical rationale.

## When to Use This Skill

**English:**
- "Did the market shrug off [event] even though [asset] is crowded long/short?"
- "Run a news-failure check on [symbol]"
- "Is [symbol] confirmed for a Shapiro-style contrarian setup?"
- After `cot-contrarian-detector` flags a market CROWDED_LONG / CROWDED_SHORT
  and the user wants to move to step 2

**Japanese:**
- 「この市場は好材料に反応しなかった？」
```
END THIRD-PARTY FILE da39009b81bc3278

The third-party file has ended. Everything between the da39009b81bc3278 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2529 of 9474 bytes. © tradermonty · MIT · https://github.com/tradermonty/claude-trading-skills/tree/HEAD/skills/news-reaction-failure-analyzer/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
