基于 SOC 职业分类
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/majiayu000/claude-skill-registry --skill news-impact命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
LLM token logprobs and calibration. Per-decision confidence, ECE, Brier, reliability diagrams, low-confidence triage.
Analyze LLM token logprobs and calibration. Use for per-decision confidence, ECE, Brier scores, reliability diagrams, and low-confidence triage.
回顾最近 N 天的 Claude Code 使用记录——扫描原始会话数据,按主题分组汇总"我都做了什么",并从个人操作系统视角输出模式、风险与增删建议。当用户说 /recap、"看看我这几天做了什么"、"回顾一下我最近的会话"、"这两天我用 claude 干了啥"、"活动回顾" 时使用。
| name | news-impact |
| description | Identify what drives stock price moves with drivers, confidence, and returns |
| argument-hint | TICKER START_DATE END_DATE [THRESHOLD] [--no-perplexity] |
| context | fork |
| allowed-tools | ["Skill","mcp__neo4j-cypher__read_neo4j_cypher","WebSearch","mcp__perplexity__perplexity_search","mcp__perplexity__perplexity_research"] |
Identify what drives stock price moves with maximum accuracy, comprehensiveness, and confidence.
Received: $ARGUMENTS
Parse as: TICKER START_DATE END_DATE [THRESHOLD] [--no-perplexity]
3s (default), 1.5s, 2s, or fixed percent--no-perplexity: Skip Perplexity for gap days (faster)If no arguments received, ask user for TICKER, START_DATE, END_DATE.
CRITICAL: Run this query BEFORE any other step. STOP if validation fails.
MATCH (c:Company {ticker: $ticker})
OPTIONAL MATCH (d:Date)-[r:HAS_PRICE]->(c)
WITH c, max(d.date) AS latest_date, min(d.date) AS earliest_date, count(r) AS price_count
RETURN c.name AS company_name,
latest_date,
earliest_date,
price_count,
CASE WHEN latest_date >= date($start) THEN true ELSE false END AS has_start_data,
CASE WHEN latest_date >= date($end) THEN true ELSE false END AS has_end_data
Validation Rules:
company_name is null → STOP: ERROR: Ticker {ticker} not found in databaseprice_count = 0 → STOP: ERROR: No price data for {ticker}has_start_data = false → STOP: ERROR: No price data for {ticker} in requested range. Latest available: {latest_date}has_end_data = false → WARN but continue: WARNING: Data only available through {latest_date}, analysis will end thereDO NOT proceed to Step 1 if validation fails. DO NOT fall back to web search for missing price data.
Call /get-bz-news $ARGUMENTS
Returns news where |daily_adj| >= threshold (default 1.5σ) with:
volatility: trailing adjusted volatility usedz_score: how many sigmas this move wasIf INSUFFICIENT_HISTORY returned, fall back to fixed 3% threshold.
For each news item from Step 1:
Read title AND body - titles can be vague
Check market_session for timing context:
pre_market: News likely CAUSED the day's move → HIGH confidencein_market: News aligns with intraday action → MEDIUM-HIGH confidencepost_market: News EXPLAINS today's move, but impacts NEXT trading day → MEDIUM confidence (reactive)Note: Post-market news (earnings, guidance) will move the stock at next market open. Associate post_market news with the NEXT day's return.
Generate driver phrase (5-15 words explaining why stock moved)
Assess confidence (0-100%) based on:
Query daily returns to find big moves without news coverage.
First, get the volatility (or use the one from Step 1):
MATCH (d:Date)-[r:HAS_PRICE]->(c:Company {ticker: $ticker})
WHERE d.date >= date($start) - duration('P365D') AND d.date < date($start)
MATCH (d)-[m:HAS_PRICE]->(idx:MarketIndex {ticker: 'SPY'})
WHERE r.daily_return IS NOT NULL AND m.daily_return IS NOT NULL
WITH stdev(r.daily_return - m.daily_return) AS adj_vol
RETURN adj_vol
Then find all significant move days:
MATCH (d:Date)-[r:HAS_PRICE]->(c:Company {ticker: $ticker})
WHERE d.date >= date($start) - duration('P365D') AND d.date < date($start)
MATCH (d)-[m:HAS_PRICE]->(idx:MarketIndex {ticker: 'SPY'})
WHERE r.daily_return IS NOT NULL AND m.daily_return IS NOT NULL
WITH c, stdev(r.daily_return - m.daily_return) AS adj_vol
MATCH (d2:Date)-[r2:HAS_PRICE]->(c)
WHERE d2.date >= $start AND d2.date < $end
MATCH (d2)-[m2:HAS_PRICE]->(idx:MarketIndex {ticker: 'SPY'})
WITH d2.date AS date,
r2.daily_return AS stock,
m2.daily_return AS macro,
(r2.daily_return - m2.daily_return) AS daily_adj,
adj_vol
WHERE abs(daily_adj) >= $multiplier * adj_vol
RETURN date, stock, macro, daily_adj, adj_vol,
abs(daily_adj) / adj_vol AS z_score
ORDER BY date
Compare with news dates from Step 1. Gap = date with big move but no news.
Skip this step if --no-perplexity flag is set. Just list gaps as UNKNOWN with confidence=0.
Otherwise, for each gap day:
4a. WebSearch first (faster, multi-source validation):
4b. Perplexity fallback (if WebSearch insufficient):
perplexity_search - "{ticker} stock news {date}"perplexity_research - only for major moves (>5%) with no resultsGenerate driver and confidence from research. Include z-score context.
Combine news (Step 2) + gaps (Step 4), sort by date ASC.
Pipe-delimited, one per line:
date|news_id|driver|confidence|daily_stock|daily_adj|sector_adj|industry_adj|z_score|volatility|market_session|source
| Field | Description |
|---|---|
| date | Event timestamp |
| news_id | Neo4j ID or URL(s) for external research |
| driver | Short phrase (5-15 words) explaining move |
| confidence | 0-100% certainty |
| daily_stock | Raw daily return |
| daily_adj | daily_stock - daily_macro (vs SPY) |
| sector_adj | daily_stock - daily_sector (idiosyncratic vs sector) |
| industry_adj | daily_stock - daily_industry (idiosyncratic vs industry) |
| z_score | How many sigmas (e.g., 2.1) |
| volatility | Trailing adjusted vol used |
| market_session | pre_market / in_market / post_market (empty for perplexity) |
| source | neo4j, websearch, or perplexity |
Move Type Interpretation:
CRITICAL - Date Range Enforcement:
NO_SIGNIFICANT_MOVES: No moves exceeding {threshold} found for {ticker} between {start} and {end}