
Earnings Recap
FreeGenerate detailed post-earnings analyses for stocks.
Free · Opens the source repo
What Earnings Recap does
The Earnings Recap skill allows users to generate comprehensive analyses of a company's earnings results using data sourced from Yahoo Finance via the yfinance library. This skill is particularly useful for investors, analysts, and anyone interested in understanding the financial performance of publicly traded companies after their earnings announcements. By simply providing the stock ticker or mentioning the company's earnings, users can receive a structured summary that includes key metrics like earnings per share (EPS), revenue figures, stock price reactions, and contextual insights from recent news and analyst recommendations.
To use the skill, users must ensure that the yfinance library is installed in their Python environment. The skill automates the process of fetching relevant data, including historical earnings results, financial statements, and stock price movements around the earnings date. By analyzing this data, the skill can determine whether a company beat or missed earnings estimates, the magnitude of surprises, and how the stock reacted in the market following the earnings report.
The output is structured into several sections, starting with a headline result that summarizes the key figures. Users can expect detailed tables that display earnings versus estimates, quarterly financial trends, and a breakdown of stock price reactions. Additionally, the skill provides context regarding changes in revenue growth, margin trends, and overall analyst sentiment, making it a valuable tool for anyone looking to make informed decisions based on earnings reports.
This skill is designed for those who want to quickly assess the implications of earnings reports without sifting through raw data manually. It serves as a practical tool for enhancing financial literacy and improving investment decision-making based on concrete data analysis.
When to use it
Use this skill when you want to quickly understand a company's earnings results and their impact on stock performance after an earnings announcement.
When not to use it
This skill is not suitable for real-time trading decisions or for users seeking personalized investment advice.
What you can build with it
Quick Earnings Review
After a company reports earnings, use this skill to get a concise summary of the results and stock reaction.
Comparative Analysis
Analyze and compare earnings results across multiple quarters to identify trends in performance.
Investor Research
Gather detailed insights into a company's financial health for informed investment decisions.
How to install Earnings Recap
View source1. Install with the skills CLI
npx skills add himself65/finance-skills/earnings-recap --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by himself65Earnings Recap Skill
Generates a post-earnings analysis using Yahoo Finance data via yfinance. Covers the actual vs estimated numbers, surprise magnitude, stock price reaction, and financial context — a complete picture of what happened.
Important: Data is for research and educational purposes only. Not financial advice. yfinance is not affiliated with Yahoo, Inc.
Step 1: Ensure yfinance Is Available
Current environment status:
!`python3 -c "import yfinance; print('yfinance ' + yfinance.__version__ + ' installed')" 2>/dev/null || echo "YFINANCE_NOT_INSTALLED"`
If YFINANCE_NOT_INSTALLED, install it:
import subprocess, sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "-q", "yfinance"])
If already installed, skip to the next step.
Step 2: Identify the Ticker and Gather Data
Extract the ticker from the user's request. Fetch all relevant post-earnings data in one script.
import yfinance as yf
import pandas as pd
from datetime import datetime, timedelta
ticker = yf.Ticker("AAPL") # replace with actual ticker
# --- Earnings result ---
earnings_hist = ticker.earnings_history
# --- Financial statements ---
quarterly_income = ticker.quarterly_income_stmt
quarterly_cashflow = ticker.quarterly_cashflow
quarterly_balance = ticker.quarterly_balance_sheet
# --- Price reaction ---
# Get ~30 days of history to capture the reaction window
hist = ticker.history(period="1mo")
# --- Context ---
info = ticker.info
news = ticker.news
recommendations = ticker.recommendations
What to extract
| Data Source | Key Fields | Purpose |
|---|---|---|
earnings_history | epsEstimate, epsActual, epsDifference, surprisePercent | Beat/miss result |
quarterly_income_stmt | TotalRevenue, GrossProfit, OperatingIncome, NetIncome, BasicEPS | Actual financials |
history() | Close prices around earnings date | Stock price reaction |
info | currentPrice, marketCap, forwardPE | Current context |
news | Recent headlines | Earnings-related news |
Step 3: Determine the Most Recent Earnings
The most recent earnings result is the first row (most recent date) in earnings_history. Use its date to:
- Identify the earnings date for the price reaction analysis
- Match to the corresponding quarter in the financial statements
- Calculate stock price reaction — compare the close before earnings to the next trading day's close (or open, depending on whether earnings were before/after market)
Price reaction calculation
import numpy as np
# Find the earnings date from earnings_history index
earnings_date = earnings_hist.index[0] # most recent
# Get daily prices around the earnings date
hist_extended = ticker.history(start=earnings_date - timedelta(days=5),
end=earnings_date + timedelta(days=5))
# The reaction is typically measured as:
# - Close on the last trading day before earnings -> Close on the first trading day after
# Be careful with before/after market reports
if len(hist_extended) >= 2:
pre_price = hist_extended['Close'].iloc[0]
post_price = hist_extended['Close'].iloc[-1]
reaction_pct = ((post_price - pre_price) / pre_price) * 100
Note: The exact reaction window depends on when the company reported (before market open vs after close). The price data will reflect this — look for the biggest gap between consecutive closes near the earnings date.
Step 4: Build the Earnings Recap
Section 1: Headline Result
Lead with the key numbers:
- EPS: Actual vs. Estimate, beat/miss by how much, surprise %
- Revenue: Actual vs. prior year (from quarterly_income_stmt TotalRevenue)
- Stock reaction: % move on earnings day
Example: "AAPL beat Q3 EPS estimates by 3.7% ($1.40 actual vs $1.35 expected). Revenue grew 5.4% YoY to $94.3B. The stock rose +2.1% on the report."
Section 2: Earnings vs. Estimates Detail
| Metric | Estimate | Actual | Surprise |
|---|---|---|---|
| EPS | $1.35 | $1.40 | +$0.05 (+3.7%) |
If the user asked about a specific quarter (not the most recent), look further back in earnings_history.
Section 3: Quarterly Financial Trends
Show the last 4 quarters of key metrics from quarterly_income_stmt:
| Quarter | Revenue | YoY Growth | Gross Margin | Operating Margin | EPS |
|---|---|---|---|---|---|
| Q3 2024 | $94.3B | +5.4% | 46.2% | 30.1% | $1.40 |
| Q2 2024 | $85.8B | +4.9% | 46.0% | 29.8% | $1.33 |
| Q1 2024 | $119.6B | +2.1% | 45.9% | 33.5% | $2.18 |
| Q4 2023 | $89.5B | -0.3% | 45.2% | 29.2% | $1.26 |
Calculate margins from the raw financials:
- Gross Margin = GrossProfit / TotalRevenue
- Operating Margin = OperatingIncome / TotalRevenue
Section 4: Stock Price Reaction
- The % move on the earnings day/next session
- How it compares to the stock's average earnings-day move (calculate the average absolute move from the last 4 earnings dates in
earnings_history) - Where the stock is now relative to the earnings-day move (has it held, given back gains, extended further?)
Section 5: Context & What Changed
Based on the data, note:
- Whether margins expanded or compressed vs prior quarter
- Any notable changes in revenue growth trajectory
- How the beat/miss compares to the stock's historical pattern (from the full
earnings_history) - Current analyst sentiment from
recommendationsif available
Step 5: Respond to the User
Present the recap as a clean, structured summary:
- Lead with the headline: "AAPL reported Q3 2024 earnings on [date]: Beat EPS by 3.7%, revenue +5.4% YoY."
- Show the tables for detail
- Highlight what matters: Was this a meaningful beat or a low-bar situation? Is the trend improving or deteriorating?
- Keep it factual — present the data, avoid making investment recommendations
Caveats to include
- Yahoo Finance data may not include all details from the earnings call (guidance, segment breakdowns)
- Revenue estimates are harder to compare precisely — yfinance provides YoY comparison from financial statements
- Price reaction may be influenced by broader market moves on the same day
- This is not financial advice
Reference Files
references/api_reference.md— Detailed yfinance API reference for earnings history and financial statement methods
Read the reference file when you need exact method signatures or to handle edge cases in the financial data.
Frequently asked questions about Earnings Recap
Similar skills
Initiating Coverage
Create institutional-quality equity research reports.
Financial Tear Sheet Generator
Create professional company profiles with live data.
Pitch Deck Population
Effortlessly fill pitch deck templates with data.
Tax Season Organizer
Streamline your tax prep for accountants.
Month End Prep
Streamline your month-end close process with ease.
Funding Digest
Summarize funding rounds in a single slide.
