
Earnings Recap
- 1.7k installs
- 3.1k repo stars
- Updated July 21, 2026
- himself65/finance-skills
earnings-recap is an agent skill that summarizes company earnings reports with key metrics, guidance changes, and investor takeaways.
About
The earnings-recap skill distills quarterly or annual earnings releases into concise investor-ready summaries. It extracts revenue, EPS, margins, segment performance, guidance updates, and management commentary themes from filings or press releases. Agents highlight beats or misses versus consensus when data is provided, flag one-time items, and separate operational trends from accounting noise. Output uses scannable bullets suitable for research notes or morning briefings. Use when users want earnings call or press release recaps without reading full transcripts manually.
- Summarizes earnings releases into investor-ready bullet recaps.
- Extracts revenue, EPS, margins, segments, and guidance changes.
- Separates one-time items from operational performance trends.
- Highlights consensus beats or misses when comparison data exists.
- Produces scannable research notes from filings or press releases.
Earnings Recap by the numbers
- 1,708 all-time installs (skills.sh)
- +160 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #84 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
earnings-recap capabilities & compatibility
- Capabilities
- earnings metric extraction · guidance change summarization · one time item flagging · consensus beat miss highlighting · investor ready bullet output
- Use cases
- research · trading
What earnings-recap says it does
earnings-recap
npx skills add https://github.com/himself65/finance-skills --skill earnings-recapAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.7k |
|---|---|
| repo stars | ★ 3.1k |
| Security audit | 2 / 3 scanners passed |
| Last updated | July 21, 2026 |
| Repository | himself65/finance-skills ↗ |
What were the key earnings results, guidance changes, and takeaways from this quarterly report?
Summarize company earnings reports with key metrics, guidance changes, and investor takeaway bullets.
Who is it for?
Investors or analysts needing fast earnings release or call summaries from primary documents.
Skip if: Skip for long-term valuation modeling without a specific earnings document to summarize.
When should I use this skill?
User asks for an earnings recap, quarterly summary, or investor takeaway bullets from a report.
What you get
A concise earnings recap with metrics, segment notes, guidance updates, and flagged one-time items.
- post-earnings analysis report
- EPS surprise summary
- four-quarter trend table
By the numbers
- Covers quarterly financial trends across the last 4 quarters
- Compares earnings-day price reaction to the stock’s average earnings-day move
Files
Earnings 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.recommendationsWhat 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:
1. Identify the earnings date for the price reaction analysis 2. Match to the corresponding quarter in the financial statements 3. 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) * 100Note: 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:
1. Lead with the headline: "AAPL reported Q3 2024 earnings on [date]: Beat EPS by 3.7%, revenue +5.4% YoY." 2. Show the tables for detail 3. Highlight what matters: Was this a meaningful beat or a low-bar situation? Is the trend improving or deteriorating? 4. 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.
Earnings Recap
Generate a post-earnings analysis for any stock using Yahoo Finance data.
What it does
- Shows the EPS beat/miss result with surprise percentage
- Presents quarterly financial trends (revenue, margins, EPS) over the last 4 quarters
- Calculates the stock price reaction on earnings day
- Compares the reaction to the stock's average earnings-day move
- Provides context on margin trends and revenue growth trajectory
Triggers
AAPL earnings recap, how did TSLA earnings go, MSFT earnings results, did NVDA beat earnings, post-earnings analysis, earnings surprise, what happened with GOOGL earnings, earnings reaction, stock moved after earnings, earnings report summary, EPS beat or miss, quarterly results, AMZN reported last night
Prerequisites
- Python 3.8+
yfinance(auto-installed if missing)
Platform
All platforms (Claude Code, Claude.ai, other agents)
Setup
No setup required — yfinance pulls data from Yahoo Finance without authentication.
Reference Files
references/api_reference.md— yfinance API reference for earnings history and financial statement methods
Earnings Recap — yfinance API Reference
Detailed reference for the yfinance methods used by the earnings-recap skill.
---
Earnings History
ticker.earnings_historyReturns a DataFrame with the last 4 quarters of actual vs estimated earnings:
Columns:
epsEstimate— consensus EPS estimate at the time of reportingepsActual— reported EPSepsDifference— actual minus estimatesurprisePercent— surprise as a percentage (decimal form: 0.037 = 3.7%)
Index is datetime of each earnings report date.
Usage for recap: The most recent row (index[0]) is the latest earnings report. Use this as the primary data point for the recap.
---
Quarterly Financial Statements
Income Statement
ticker.quarterly_income_stmtReturns a DataFrame with financial line items as rows and quarter-end dates as columns (most recent first).
Key rows for earnings recap:
Total Revenue— top-line revenueCost Of Revenue— COGSGross Profit— revenue minus COGSOperating Income— EBITNet Income— bottom lineBasic EPS— earnings per share (basic)Diluted EPS— earnings per share (diluted)EBITDA— if available
Margin calculations:
gross_margin = df.loc['Gross Profit'] / df.loc['Total Revenue']
operating_margin = df.loc['Operating Income'] / df.loc['Total Revenue']
net_margin = df.loc['Net Income'] / df.loc['Total Revenue']YoY Growth:
# Columns are ordered most-recent-first
# Column 0 = latest quarter, Column 4 = same quarter last year (if available)
# Match by quarter (e.g., Q3 2024 vs Q3 2023)
revenue = df.loc['Total Revenue']
yoy_growth = (revenue.iloc[0] - revenue.iloc[3]) / abs(revenue.iloc[3])Note: Column indexing depends on how many quarters are returned. Typically 4-5 quarters are available.
Cash Flow Statement
ticker.quarterly_cashflowKey rows:
Operating Cash Flow— cash from operationsCapital Expenditure— capexFree Cash Flow— OCF minus capex
Balance Sheet
ticker.quarterly_balance_sheetKey rows:
Total AssetsTotal DebtCash And Cash EquivalentsTotal Stockholders Equity
---
Historical Prices
# Around earnings date
from datetime import timedelta
hist = ticker.history(
start=earnings_date - timedelta(days=10),
end=earnings_date + timedelta(days=10)
)Returns DataFrame with: Open, High, Low, Close, Volume.
Price reaction calculation tips:
- After-hours reporters: compare prior day's Close to next day's Open (gap) and next day's Close (full reaction)
- Before-market reporters: compare prior day's Close to same day's Close
- The biggest single-day |%change| near the earnings date is usually the reaction day
- Volume spike confirms the reaction day
---
Company Info
ticker.infoKey fields for context:
shortName— company namesector,industrymarketCapcurrentPrice,previousCloseforwardPE,trailingPEfiftyTwoWeekHigh,fiftyTwoWeekLow
---
News
ticker.newsReturns a list of dicts:
title— headlinelink— URLpublisher— source nameproviderPublishTime— unix timestamp
Filter for recent news around the earnings date for earnings-related headlines.
---
Recommendations
ticker.recommendationsReturns a DataFrame with columns: strongBuy, buy, hold, sell, strongSell.
Use the most recent row to show current analyst sentiment distribution. Compare to the prior period to detect any post-earnings sentiment shifts.
---
Error Handling
try:
hist = ticker.earnings_history
if hist is None or (hasattr(hist, 'empty') and hist.empty):
print("No earnings history — ticker may not have reported recently")
except Exception as e:
print(f"Error: {e}")Common issues:
- No earnings history: Company hasn't reported yet, or it's an ETF/fund
- Missing financial statement rows: Not all companies report the same line items; check with
.locand handle KeyError - Quarterly alignment: Q-end dates in financial statements don't always align perfectly with calendar quarters; use the dates as-is from yfinance
Related skills
How it compares
Choose earnings-recap for quick Yahoo Finance post-earnings summaries; use deeper fundamental research skills when you need SEC filings or custom valuation models.
FAQ
What metrics does earnings-recap extract?
Revenue, EPS, margins, segment performance, guidance updates, and notable management themes.
How are one-time items handled?
They are flagged separately from operational performance trends in the recap.
Can it compare to consensus?
It highlights beats or misses when consensus comparison data is provided in inputs.
Is Earnings Recap safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.