Analyze recent post-earnings stocks using a 5-factor scoring system (Gap Size, Pre-Earnings Trend, Volume Trend, MA200 Position, MA50 Position). Scores each stock 0-100 and assigns A/B/C/D grades. Use when user asks about earnings trade analysis, post-earnings momentum screening, earnings gap scoring, or finding best recent earnings reactions.
71
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Analyze recent post-earnings stocks using a 5-factor weighted scoring system to identify the strongest earnings reactions for potential momentum trades.
FMP_API_KEY environment variable or pass --api-key)Execute the analyzer script:
# Default: last 2 days of earnings, top 20 results
python3 skills/earnings-trade-analyzer/scripts/analyze_earnings_trades.py --output-dir reports/
# Custom lookback and market cap filter
python3 skills/earnings-trade-analyzer/scripts/analyze_earnings_trades.py \
--lookback-days 5 \
--min-market-cap 1000000000 \
--top 30 \
--output-dir reports/
# With entry quality filter
python3 skills/earnings-trade-analyzer/scripts/analyze_earnings_trades.py \
--apply-entry-filter \
--output-dir reports/If the analyzer reports a 404, an implausible empty earnings calendar, or exhausts its API-call budget before producing scored candidates during a scheduled after-close/pre-market run, do not report "no earnings reactions" immediately. A clean empty response over a date window containing at least one XNYS session exits 1 with ZERO_RESULT_REASON=earnings_calendar_empty_with_market_sessions. If the shared XNYS calendar cannot classify the window, it exits 1 with ZERO_RESULT_REASON=market_calendar_unavailable. Budget or daily rate-limit exhaustion during profile fetching exits 1 with ZERO_RESULT_REASON=profiles_budget_exhausted. Treat each as a failed run to retry or fall back on, not a quiet day. Only a clean empty response over a zero-session window exits 0 as ZERO_RESULT_REASON=no_earnings_rows.
python3 skills/earnings-trade-analyzer/scripts/analyze_earnings_trades.py \
--lookback-days 2 \
--min-market-cap 5000000000 \
--top 20 \
--max-api-calls 600 \
--output-dir reports/<routine-date>curl "https://financialmodelingprep.com/stable/earnings-calendar?from=YYYY-MM-DD&to=YYYY-MM-DD&apikey=$FMP_API_KEY"Then optionally enrich returned US tickers through the analyzer's stable-first FMP client or per-symbol /stable/quote?symbol=<ticker> calls to rank by same-day changesPercentage, market cap, and liquidity. Use legacy /api/v3 quote calls only as a legacy-key fallback after stable has failed. Present these as preliminary / ungraded reactions because the 5-factor scorer did not run; do not assign A/B/C/D grades from the fallback alone.
No-candidate output pitfall: The analyzer may print Candidates after filtering: 0 / No candidates found matching criteria. and exit successfully without writing an earnings_trade_analyzer_*.json file. In that case, do not try to run PEAD Mode B from a nonexistent candidate file. Say explicitly that no scored analyzer JSON was produced, run the endpoint/quote enrichment fallback above if the routine needs an earnings section, and label any names as manual-review only. This success-exit path does not cover budget exhaustion during profile fetching: that case exits 1 (ZERO_RESULT_REASON=profiles_budget_exhausted) instead.
references/scoring_methodology.md for scoring interpretation contextFor each top candidate, present:
Based on grades:
earnings_trade_analyzer_YYYY-MM-DD_HHMMSS.json - Structured results with schema_version "1.0"earnings_trade_analyzer_YYYY-MM-DD_HHMMSS.md - Human-readable report with tablesFMP does not confirm a bmo/amc session for every earnings row; unconfirmed
rows report earnings_timing: "unknown" and the gap calculation assumes the
AMC window as a fallback. Both reports surface timing_unknown_count out of
timing_candidates_total so this assumption stays visible rather than
blending unnoticed into the scores.
references/scoring_methodology.md - 5-factor scoring system, grade thresholds, and entry quality filter rulesc894e74
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.