一键导入
earnings-prediction
Predicts stock direction/magnitude at T=0 (report release). Uses PIT data only. Run before earnings-attribution.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Predicts stock direction/magnitude at T=0 (report release). Uses PIT data only. Run before earnings-attribution.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
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
| name | earnings-prediction |
| description | Predicts stock direction/magnitude at T=0 (report release). Uses PIT data only. Run before earnings-attribution. |
| context | fork |
| allowed-tools | Read, Write, Grep, Glob, Bash, TodoWrite, Skill |
| model | claude-opus-4-5 |
| permissionMode | dontAsk |
Goal: Predict stock direction and magnitude before market reacts, using point-in-time data only.
Thinking: ALWAYS use ultrathink for maximum reasoning depth.
Input: Accession number of 8-K earnings filing
When called by earnings-orchestrator (required in pipeline):
ticker (from metadata)filing_datetime (PIT anchor)quarter_label (format: Q{N}_FY{YYYY}) — used to set {quarter} and {year} in consensus queries| Field | Values |
|---|---|
| Direction | up / down |
| Magnitude | small (0-2%) / medium (2-5%) / large (5%+) |
| Confidence | high / medium / low |
Tiny surprises (<1%): Predict small_up or small_down based on sign, use low confidence.
All sub-agent queries MUST use PIT filtering: [PIT: {filing_datetime}]
Allowed:
NOT Allowed:
ALL data queries go through the filter agent. This includes Neo4j AND Perplexity.
YOU (earnings-prediction)
│
│ /filtered-data --agent {source} --query "[PIT: X] ..."
▼
┌─────────────────────────────────────┐
│ FILTER AGENT │
│ │
│ Sources: neo4j-*, perplexity-search│
│ │
│ Validates: │
│ 1. Forbidden patterns │
│ 2. PIT compliance (dates <= PIT) │
│ │
│ You NEVER see contaminated data │
└─────────────────────────────────────┘
│
│ Clean data only
▼
YOU (continue with clean data)
Return data (daily_stock, hourly_stock, etc.) is what we're trying to predict. Post-filing articles mention stock reactions. If either enters your context, the prediction is contaminated. The filter agent ensures you never see it.
Use TodoWrite to track progress. Mark each step in_progress before starting, completed immediately after.
IMPORTANT: Read ./QUERIES.md and execute the exact commands shown there. Do not modify them.
Before Step 1:
./QUERIES.md[PIT:, STOP and report: "PIT filtering is disabled. Run ./enable-filter.sh and retry."Execute the metadata query from QUERIES.md.
Extract: ticker, filing_datetime (this becomes your PIT).
Pipeline rule: If ticker, filing_datetime, or quarter_label were provided by the orchestrator:
{quarter} and {year} from quarter_label (e.g., Q2_FY2023 → quarter=2, year=2023).Set PIT = filing_datetime (from orchestrator or metadata).
Read these files:
earnings-analysis/Companies/{TICKER}/guidance.csvearnings-analysis/Companies/{TICKER}/news.csvFilter (PIT‑safe):
given_date <= filing_datetime and quarter == quarter_labelsource_pub_date <= filing_datetime and quarter == quarter_label
source_pub_date is empty, fall back to dateSummarize relevant guidance/news for use in prediction reasoning (do not change the data).
If either file is missing: STOP and report (the orchestrator must create header‑only files when no data exists).
Execute the exhibit query from QUERIES.md.
Extract: Actual EPS, actual revenue, any guidance.
Execute these queries from QUERIES.md: xbrl, transcript, news, entity
consensus_av_earnings query from QUERIES.md.Use AV EPS consensus only if:
reportedDate <= filing_datetime, andconsensus_ppx query from QUERIES.md.Use Perplexity for:
If EPS consensus is missing from both, STOP and report missing EPS consensus.
Calculate surprise:
Surprise % = ((Actual - Consensus) / |Consensus|) × 100
Reason from the data. Consider: surprise magnitude, guidance direction, historical patterns, sector context. Output prediction with reasoning.
File: earnings-analysis/predictions.csv
Columns:
accession_no,ticker,filing_datetime,prediction_datetime,predicted_direction,predicted_magnitude,confidence,primary_reason,actual_direction,actual_magnitude,actual_return,correct
Append each prediction as a new row. Leave actual_* columns empty (filled by attribution later).
"reason with, comma"First run: If CSV doesn't exist, create it with header row first.
Save the full analysis (metadata, actuals, historical context, consensus, surprise calculations, rationale, and prediction) to earnings-analysis/Companies/{TICKER}/pre_{accession_no}.md, then append prediction to earnings-analysis/predictions.csv (see CSV Output section).
This step is REQUIRED. Execute this exact command:
python3 scripts/build-thinking-index.py {accession_no}
Replace {accession_no} with the actual accession number from your analysis (e.g., 0001234567-24-000001).
This extracts thinking from all sessions and sub-agents and saves to Obsidian.
Run /earnings-attribution separately to fill actual_* columns and verify prediction.
# In .claude/skills/earnings-prediction/
./enable-filter.sh # PIT filtering ON (default)
./disable-filter.sh # Direct mode (no filtering)
State persists until you run the other script.
History file: .claude/shared/earnings/subagent-history.csv (shared with earnings-attribution)
Format: See subagent-history.md for full documentation.
accession_no,skill,created_at,primary_session_id,agent_type,agent_id,resumed_from
0001514416-24-000020,prediction,2026-01-13T09:00:00,aaa11111,primary,,
0001514416-24-000020,prediction,2026-01-13T09:01:05,aaa11111,neo4j-entity,abc12345,
On analysis start:
primary row: {accession},prediction,{timestamp},{session_id},primary,,Before calling a subagent:
grep "{accession}" | grep ",{agent_type}," | tail -1 | cut -d',' -f6resume: <id> in Task callAfter each subagent completes:
agentId from Task response{accession},prediction,{timestamp},{session_id},{agent_type},{agent_id},{resumed_from}Version 2.2 | 2026-01-16 | Made thinking index build mandatory (Step 7)