research
MAmattpocock/skills288k近 7 天新增 10,178 个 star
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.
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/
# Deterministic anchor date (America/New_York); the window is anchored on the
# ET calendar date, not the runner's local clock. For reproducible runs/tests.
python3 skills/earnings-trade-analyzer/scripts/analyze_earnings_trades.py \
--as-of 2026-09-15 \
--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.
The earnings calendar window is inclusive and uses the America/New_York
calendar date from --as-of (or the current ET date). A clean provider []
is a benign quiet-window result only when the shared XNYS calendar successfully
counts zero exchange sessions in that exact window, such as a weekend or
holiday. If the window contains an XNYS session, the same clean [] exits 1
with ZERO_RESULT_REASON=earnings_calendar_empty_with_market_sessions so a
provider drop is not reported as a quiet day. If the XNYS calendar cannot be
queried, the run also exits 1 with
ZERO_RESULT_REASON=market_calendar_unavailable.
--lookback-days 0 is valid and queries exactly the single ET as-of date. Use
it after the relevant announcements have been published (normally after the
session close); an empty response on an XNYS session remains intentionally
fail-closed. A non-empty response whose rows do not carry a symbol retains
the separate ZERO_RESULT_REASON=no_earnings_rows behavior; that case is not
the literal-empty-list session check above.
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 rulesMAmattpocock/skills288k近 7 天新增 10,178 个 star
AFaffaan-m/ECC278k近 7 天新增 4,046 个 star
GAgarrytan/gstack136k近 7 天新增 883 个 star
NEnextlevelbuilder/ui-ux-pro-max-skill135k近 7 天新增 1,864 个 star
NEnextlevelbuilder/ui-ux-pro-max-skill135k近 7 天新增 1,864 个 star
NEnexu-io/open-design101k近 7 天新增 1,126 个 star