ワンクリックで
news-impact
Identify what drives stock price moves with drivers, confidence, and returns
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Identify what drives stock price moves with drivers, confidence, and returns
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
Predict stock direction post 8-K earnings & refine using 10-Q/10-K outcomes
Predict stock direction after an 8-K earnings release from a prebuilt earnings context bundle
Post-event causal attribution — explains why a stock moved after 8-K earnings, compares against prediction, writes reusable lessons for future predictions. Production invocation via SDK embed (main session), not fork.
Core Neo4j schema reference with all labels, relationships, data types, and indexes. Use when exploring database structure, checking field types, or understanding the financial knowledge graph schema.
V1105_LONGDESC_START_MARKER. This skill tests v2.1.105's skill-description cap raise from 250 to 1536 characters. If this description appears truncated in the skill listing system-reminder at around character 250, the cap was not raised; if it appears truncated at around 1536, the cap was raised correctly per changelog. The test sentinel markers are placed at specific character offsets: V1105_OFFSET_100 is at char 100 approximately, V1105_OFFSET_300 is at char 300 approximately (old cap would truncate this), V1105_OFFSET_700 is at char 700 approximately, V1105_OFFSET_1000 is at char 1000, V1105_OFFSET_1200 is at char 1200, V1105_OFFSET_1400 is at char 1400, and V1105_END_MARKER is the last visible sentinel. This description also contains deliberately redundant filler to reach the target length without substantive content since the purpose is only to verify truncation behavior rather than to provide meaningful guidance. filler filler filler filler filler filler filler filler filler filler filler filler filler
Child skill for v2.1.107 nesting retest — writes marker and returns
SOC 職業分類に基づく
| 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_ask","mcp__perplexity__perplexity_search","mcp__perplexity__perplexity_reason","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 agent — "{ticker} stock news {date}"perplexity-research agent — 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}