Earnings Preview logo

Earnings Preview

Community
yennanliu
earnings-preview

The before-earnings skill — consensus vs. whisper, 8-quarter beat rate and post-print move distribution, options-implied vs. realized move, what the current price already assumes, the KPIs to watch, and a three-scenario grid (beat-and-raise / beat-and-lower / miss) with expected reaction and a position rule for each

Overview

Publisheryennanliu
RepositoryInvestSkill
Skill nameearnings-preview
Stars
254
Forks
61
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by yennanliu on GitHub. Read the source before you install it.

Installation

Install the Earnings Preview AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/yennanliu/InvestSkill/tree/main/plugins/us-stock-analysis/skills/earnings-preview
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/yennanliu/InvestSkill.git /tmp/InvestSkill
mkdir -p .claude/skills
cp -r /tmp/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview .claude/skills/earnings-preview
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Earnings Preview in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Earnings Preview on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Earnings Preview is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Earnings Preview — What Is Priced In Before the Print

⚠️ Data Verification — Do This Before Any Analysis

Before running any analysis, always retrieve the latest market data for the ticker:

  1. Fetch current price — use web search or ask the user for the live price, 52-week range, and market cap. Never assume a price from training data.
  2. Confirm the event and the expectations — the confirmed earnings date and time (BMO / AMC) from the company's IR page (not a calendar estimate), the current consensus revenue / EPS / guidance with its as-of date, the prior guidance range management gave last quarter, and current option prices for the expiration that spans the print (at-the-money straddle, or implied volatility). Never carry consensus from memory — it moves in the final two weeks.
  3. State your data source — fill in the Data & Sources header (next section) so the origin, as-of date, retrieval path, and confidence of every figure are explicit at the top of the output.
  4. Flag stale data explicitly — if live data is unavailable, display this warning before proceeding:

⚠️ Live data unavailable. The following analysis uses training-data estimates which may be significantly out of date. Verify all prices and metrics before making any decisions.

Never silently substitute training-data estimates for current prices. When in doubt, ask the user to paste the latest quote.


📋 Data & Sources Header — Open Every Output With It

The first thing in the output is this provenance block, filled in — never left as placeholders. It is the standard documented on the Data & Accuracy page and the first thing result-validator looks for:

Data & Sources
  As of:      <date the figures represent, e.g. 2026-06-30>
  Source:     <primary docs — SEC EDGAR 10-K/10-Q, company IR, FRED, exchange data …>
  Retrieval:  <pasted by user | web/tool retrieval | model memory>
  Confidence: <HIGH | MEDIUM | LOW>
  • Retrieval: model memory must be paired with Confidence: LOW — memory is a placeholder until confirmed against a primary source.
  • Mixed sources: list each with its own as-of date rather than blending them.
  • Sources disagree on the same figure (a closing price, a deal term): prefer the primary source (SEC filing, company release, exchange data) over an aggregator, then the most recent dated one. Show both values with their sources and dates, say which you used and why, and never average them.
  • Data the user pasted is reported as pasted by user; do not upgrade its confidence beyond what the user's own source supports.

Overview

The catalog already covers earnings after the fact: earnings-call-analysis reads the transcript, financial-report-analyst reads the 10-Q, catalyst-calendar puts the date on a list. None of them answers the question a holder actually has in the week before the print: what does the market already expect, how has this stock treated good news before, and what am I going to do in each outcome — decided now, while I am calm?

This skill is that pre-commitment. It produces four things no post-call skill can:

  1. The expectation stack — published consensus, the buy-side "whisper" above it, and management's own prior guidance, so a "beat" can be judged against the number that actually matters.
  2. The stock's own history with beats — eight quarters of beat/miss against the next-day move, which is where "beat and drop" patterns live.
  3. What the price already assumes — the growth and margin the current quote requires, so the reader knows whether a beat is news or merely confirmation.
  4. A three-scenario grid with a rule attached to each cell — so the reaction on print day is execution, not decision.

What it is not. It does not predict the print. Nobody knows the number; the skill's value is in knowing what others expect and what you will do. It is also not an options strategy tool — it reads the options market for its implied move and hands strategy selection to options-analysis.

Pairs with earnings-call-analysis (run it after, on the transcript), options-analysis (strategy for the implied move), catalyst-calendar (the date and the events around it), thesis-tracker (the print is a scheduled next-check — the KPIs here should be the KPIs there), and position-ladder (the position rules in the scenario grid should respect its share-count ceiling).


1. Inputs

InputRequiredDefault if unstated
Ticker✅—
Confirmed earnings date and time (BMO / AMC)✅fetch from company IR; if only a calendar estimate exists, say so and mark Confidence MEDIUM at best
Current consensus: revenue, EPS, next-quarter / FY guidance✅fetch or ask; state the as-of date
Management's prior guidance range✅from the last press release / call
Current price, ATM straddle price or IV for the expiry spanning the print✅fetch or ask
Last 8 quarters: reported vs. consensus, next-day moverecommendedfetch or ask; fewer than 6 quarters → note the thin sample
Prior-quarter transcript or earnings-call-analysis outputoptionalimproves the KPI list and the "what management promised" line
Existing thesis-tracker file or stock-eval outputoptionalsupplies the KPIs and thresholds that should decide the reaction
Position: shares, cost basis, ceiling from position-ladderoptionalneeded for the position rules; otherwise rules are stated generically

Whisper numbers are estimates, and are labeled as such. The "whisper" is the buy-side expectation sitting above (rarely below) published consensus — the number the stock actually trades against. It is inferred from sell-side note revisions, the direction of estimate changes in the last 30 days, options skew, and sentiment sources; it is never a hard figure. Report it as a range with a source, or write whisper: not estimable rather than inventing one.


2. Framework

Phase 1 — The expectation stack

Build the table of numbers the print will be judged against, in the order the market judges them:

LayerRevenueEPSNext-Q guideFY guideSource · as of
Management's prior guidance (range and midpoint)
Published consensus
Consensus 30 / 90 days ago (direction of revisions)
Whisper (estimate, range)
Gap: whisper − consensus

Rules of thumb:

  • A rising consensus into the print raises the bar: a beat against a number that has already been marked up is a smaller beat than it looks.
  • Whisper gap > ~2% of revenue or > ~5% of EPS means a consensus-level beat is likely to be treated as a miss. Say so plainly.
  • The guide is the number that moves the stock for most growth companies. If prior guidance exists, the market is asking "raise, hold, or cut?" — not "beat or miss?".

Phase 2 — How this stock treats beats (8-quarter history)

QuarterRev vs. consensusEPS vs. consensusGuide vs. consensusNext-day moveMove vs. implied
Q-1+x.x%+x.x%raised / held / cut±x.x%above / within / below
…

Then summarize:

  • Beat rate (revenue and EPS separately) and the average / median next-day move, with the largest gap-up and gap-down.
  • The "beat and drop" count — quarters in which both lines beat and the stock fell. Three or more in eight is a pattern: this stock is graded on the guide or on a KPI, not on the headline.
  • Realized vs. implied — how often the actual move exceeded the options-implied move. This is the input for Phase 4.

Fewer than six quarters (recent IPO, spin-off) — say the sample is too thin for a base rate and lean on Phases 3 and 5 instead.

Phase 3 — What is priced in

Borrow the reverse-DCF logic from stock-valuation in a lighter form:

  1. Take the current price and a defensible forward multiple (the stock's own 3-year median, or the peer median from competitor-analysis).
  2. Back out the forward revenue / EPS the multiple requires over the next 12 months.
  3. Compare with consensus: is the price above what consensus supports (the market already assumes a beat-and-raise), at it, or below it (a plain beat is genuine news)?
  4. State the implied growth rate the price needs, in one line: "At $X and 32× forward, the price needs ~Y% EPS growth; consensus is Z%."

Add the positioning read where data exists: short interest and days-to-cover (short-interest), recent insider and institutional flow (insider-trading, institutional-ownership), and the stock's move over the last 30 days relative to its sector. A stock up 20% into the print with rising estimates has already had its beat; a stock down 15% with a stable consensus has room for relief.

Phase 4 — The implied move, and whether it is fairly priced

MeasureValueHow
Options-implied move (event only)±x.x%ATM straddle price ÷ stock price for the first expiry after the print. If that expiry is more than one session past the print, strip the non-event days so the horizon matches the next-day realized move: event move² ≈ near-straddle move² − (normal daily move)² × extra sessions, where the normal daily move comes from a longer-dated expiry's IV (IV × √(1/252)). State the horizon used
Realized average move (8 quarters)±x.x%from Phase 2
Realized median move±x.x%robust to one outlier quarter
Ratio: implied ÷ realized medianx.x> 1.2 the market is paying up for the event; < 0.8 it is complacent

Interpretation for a stockholder (not an options trader): the implied move is the market's estimate of the size of the reaction, in either direction — it says nothing about direction and is not a downside estimate. Model the miss-side downside separately in the scenario grid (the realized moves on past misses, the distance to the valuation floor from stock-valuation, the bear-case target). Then compare: if the larger of the implied move and the modelled miss-side downside exceeds the distance to the holder's stop or the bottom rung of the position-ladder, the position size is too large for the event — that is the finding, and it belongs in the grid's "miss" rule. Options strategy selection goes to options-analysis.

Phase 5 — The KPIs that will decide the reaction

List 3–5 company-specific numbers the market will read past the headline for — segment growth (data-center, cloud, subscribers), gross margin, unit economics (ARPU, take rate, deliveries), backlog / RPO, free cash flow, and the guidance range itself. For each: the consensus or prior value, the threshold that would count as good or bad, and where it will appear (press release vs. call). Then name the one number that has driven the stock in the last four prints. If a thesis-tracker file exists, its KPIs and thresholds take precedence — the print is that file's scheduled check.

Phase 6 — The scenario grid

Fill every cell before the print; leave nothing to be decided in the after-hours session.

ScenarioProbabilityTriggerExpected reactionPosition rule (decided now)
Beat & raise—Revenue and EPS ≥ whisper, guide midpoint above consensus+ implied move or more; fades if the stock ran into the printHold; add only if a position-ladder rung fills and the ceiling is not reached; never chase the gap
Beat & lower—Headline beat, guide midpoint below consensusFlat to − implied move; the most common "beat and drop"Trim into any early strength if the guide cut touches the thesis's mechanism; otherwise hold and re-run thesis-tracker --update
Miss—Revenue or EPS below consensus, or guide cut with no offsetting KPI− implied move or more; larger if positioning was longRespect the pre-set stop or the thesis-tracker exit trigger; do not average down inside the first two sessions
In line (state if material)—All three within ±1% of consensus, guide heldDrift, then trades on the call's toneNo action; run earnings-call-analysis on the transcript

Probabilities are the analyst's stated judgment, must sum to 100%, and must be justified by Phases 1–3 (a rising whisper lowers the "beat & raise" probability; a 15% drawdown into the print raises it). Where the user holds no position, the rules become entry rules: which scenario, at what price, would justify opening one — and which would not, regardless of price.

Phase 7 — What not to do

State these every time; they are the errors this skill exists to prevent:

  • Do not add size into the print on conviction. The print is a coin with a known payout distribution (Phase 4) and an unknown outcome; conviction does not change the distribution. Size for the miss case.
  • Do not hold undefined-risk short options through the event (short straddles, strangles, naked puts). The implied move is an estimate; the realized move has exceeded it in a measurable share of quarters (Phase 2). options-analysis covers defined-risk alternatives.
  • Do not react to the headline EPS before the guide and the KPI in Phase 5 are out. Most post-print reversals happen between the press release and the end of the call.
  • Do not treat a beat against a lowered bar as a beat. Compare with the 90-day-ago consensus (Phase 1), not only with today's.
  • Do not confuse the stock's reaction with the quality of the quarter. A drop on a good quarter is positioning; a rise on a poor one is relief. Log which one it was — thesis-tracker needs that distinction.

Phase 8 — Earnings Setup Score (0–10)

The headline number. It measures asymmetry for a holder — how much good news is already in the price versus how the stock has treated good news — not whether the print will be good.

ComponentWeight10 looks like0 looks like
Expectation bar (Phases 1, 3)35%Consensus flat or falling into the print; price implies less growth than consensus; whisper gap ≈ 0Consensus marked up sharply; price needs a beat-and-raise; whisper well above consensus
Beat history vs. reaction (Phase 2)25%High beat rate and positive median move on beats (the stock rewards good news)"Beat and drop" in ≥ 3 of 8 quarters
Event pricing (Phase 4)20%Implied move ≥ 1.2× realized median (downside is over-insured)Implied move < 0.8× realized median (complacency)
Positioning (Phase 3)10%Stock down and de-rated into the print; short interest elevated; no crowdingUp > 15% in 30 days with estimates rising; crowded long
Plan quality (Phases 5–6)10%A specific KPI threshold and a rule in every cellGeneric KPIs; rules left to "see how it trades"

A high score is not "buy before earnings." It means the setup is asymmetric in a holder's favour: the bar is low, the stock rewards beats, the downside is insured by the options market. A low score means the opposite — good news is largely priced and the stock has a habit of falling on beats — which for a holder argues for smaller size into the print, not for a short. Read the direction of the business from stock-eval; read the odds of the event from here.


3. Output Format

  1. Data & Sources header (above), including the confirmed date/time and the consensus as-of date
  2. Setup in three lines — the bar (consensus vs. whisper vs. prior guide), what the price assumes, and how this stock has treated beats
  3. Expectation stack table (Phase 1)
  4. 8-quarter history table and its three summary lines (Phase 2)
  5. What is priced in — the implied-growth sentence and the positioning read (Phase 3)
  6. Implied vs. realized move table and the position-size finding (Phase 4)
  7. KPIs to watch, with the one number that decides the reaction (Phase 5)
  8. Scenario grid with probabilities and position rules (Phase 6)
  9. What not to do (Phase 7)
  10. Thesis Invalidation and the Investment Signal block (below), with the Earnings Setup Score
  11. Hand-off line — "After the print: paste the release and transcript into earnings-call-analysis; then run thesis-tracker --update."

Example

User: earnings-preview NVDA — reports Aug 27 after the close. I hold 40 shares at $118;
      ladder ceiling is 60. Consensus and the last 8 quarters are pasted below. [pasted]

The assistant opens with the Data & Sources header (IR page for the date, pasted
consensus dated Aug 20, live straddle), then the setup in three lines: consensus has
been revised up 6% in 90 days and the whisper sits ~3% above it, so a consensus-level
beat will read as a miss; at the current price and a 3-year median forward multiple the
stock needs ~35% forward EPS growth against a consensus of ~30%, so the price already
assumes a beat-and-raise; the stock beat both lines in 8 of 8 quarters but fell the next
day in 3 of them — every time the guide midpoint was below the whisper.

The implied move is ±7.8% against a realized median of ±6.1% (ratio 1.28 — the event is
over-insured). The KPI that decides the reaction is data-center revenue growth versus
the ~40% whisper, then the next-quarter guide midpoint; gross margin is the tiebreaker.

Scenario grid: beat & raise 45% (hold; no add — the ladder's next rung is $105, far
below), beat & lower 35% (trim 10 shares into strength only if the guide cut names
demand, not supply), miss 20% (the exit trigger is the thesis-tracker file's ≥40% DC
growth KPI, not a price). What not to do: no adding into the print at 40 shares with a
60 ceiling and an implied move that reaches $112 on the downside.

Earnings Setup Score 4.6 / 10 — NEUTRAL: the bar is high and largely priced, but the
stock has rewarded beats and the downside is over-insured. Signal block, then the
hand-off to earnings-call-analysis and thesis-tracker --update.

Notes

  • Confirm the date from the company, not a calendar aggregator. Estimated dates are wrong often enough to matter — an implied move measured on the wrong expiry is meaningless.
  • Consensus is a moving target. Restate the as-of date next to every consensus figure; a number from three weeks ago is not the bar the stock will trade against.
  • Whisper is labeled an estimate every time it appears. A range with a rationale beats a false-precision point.
  • The score is about the event, not the company. A great business can have a poor setup (crowded, fully priced) and a mediocre one a good setup (washed out, low bar). Say which is which; do not blend them.
  • Position rules must respect position-ladder's ceiling and thesis-tracker's triggers when those exist. This skill never raises a ceiling or overrides an exit trigger.
  • After the print, close the loop. earnings-call-analysis on the transcript, then thesis-tracker --update, then record in its decision log which scenario occurred and whether the pre-set rule was followed. That log is what makes the next preview better.

Thesis Invalidation

After delivering the analysis signal, specify what would reverse it:

If signal is BULLISH (asymmetric setup for a holder) — the read breaks if:

  • Consensus or the whisper is revised up by more than ~3% (EPS) in the final week — the bar has moved and Phases 1 and 3 must be redone
  • The stock rallies more than the implied move before the print (a pre-announcement, a peer's blowout, a sector re-rating) — the relief has been taken in advance
  • A peer reports first and reveals the KPI in Phase 5 is deteriorating industry-wide

If signal is BEARISH (good news fully priced, poor beat history) — the read breaks if:

  • The stock sells off into the print by more than the implied move on no company news — the bar has been reset lower
  • Consensus is cut ahead of the print (the company or its peers guided down) — a beat against a lowered bar is not the same setup, and Phase 7's warning applies in reverse
  • Short interest rises sharply into the event — positioning has flipped and the reaction distribution with it

Re-run this analysis when:

  • The print itself — this analysis expires at the release; run earnings-call-analysis on the transcript and thesis-tracker --update on the numbers
  • Consensus, the guide, or the confirmed date changes
  • The stock moves more than half the implied move before the event
  • A direct peer reports
  • The options-implied move changes by more than 20% relative (repricing of the event)

Standard Signal Output

This skill measures the asymmetry of the earnings setup for a holder, not the direction of the business or the likely outcome of the print, so state the mapping explicitly: Signal: BULLISH means the bar is low, the stock rewards beats, and the downside is over-insured — the setup favours holding through the event at the current size; NEUTRAL means the setup is balanced or mixed — hold at current size, no adding; BEARISH means good news is largely priced and the stock has a habit of falling on beats — for a holder this argues for a smaller position into the print, not for a short. Action: BUY here means "the setup supports holding, and adding only via a pre-planned position-ladder rung"; Action: SELL means "reduce size into the event", never "short the print." Read the direction of the stock from stock-eval or bear-case, not from this block.

All analysis concludes with this standardized block:

╔══════════════════════════════════════════════╗
║              INVESTMENT SIGNAL               ║
╠══════════════════════════════════════════════╣
║ Signal:      BULLISH / NEUTRAL / BEARISH     ║
║ Confidence:  HIGH / MEDIUM / LOW             ║
║ Horizon:     SHORT / MEDIUM / LONG-TERM      ║
║ Score:       X.X / 10                        ║
╠══════════════════════════════════════════════╣
║ Action:      BUY / HOLD / SELL               ║
║ Conviction:  STRONG / MODERATE / WEAK        ║
╚══════════════════════════════════════════════╝

Score Guide: 8.0–10.0 Strongly Bullish | 6.0–7.9 Moderately Bullish | 4.0–5.9 Neutral | 2.0–3.9 Moderately Bearish | 0.0–1.9 Strongly Bearish Confidence: HIGH (strong data, clear signals) | MEDIUM (mixed signals) | LOW (limited data, conflicting signals) Horizon: SHORT-TERM (1 week–3 months) | MEDIUM-TERM (3 months–1 year) | LONG-TERM (1+ years)

Note: The Score above is the Earnings Setup Score, mapped onto the standard scale for cross-skill comparability. It rates how asymmetric the event is for a holder — not how attractive the stock is and not the likelihood of a beat. Horizon is SHORT-TERM by construction: the analysis expires at the print. Confidence is capped at MEDIUM when the earnings date is unconfirmed, the whisper is not estimable, or fewer than six quarters of history exist.

Disclaimer: Educational analysis only. Not financial advice. Earnings outcomes are unknowable in advance; probabilities and scenario rules are a pre-commitment framework under stated assumptions, not a forecast or a trade instruction.

Frequently asked questions

What does the Earnings Preview AI skill do?

The before-earnings skill — consensus vs. whisper, 8-quarter beat rate and post-print move distribution, options-implied vs. realized move, what the current price already assumes, the KPIs to watch, and a three-scenario grid (beat-and-raise / beat-and-lower / miss) with expected reaction and a position rule for each

Why use Earnings Preview on TypingMind?

Because you install it once and use it with any model. Earnings Preview is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Earnings Preview in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/yennanliu/InvestSkill/tree/main/plugins/us-stock-analysis/skills/earnings-preview. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Earnings Preview?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Earnings Preview?

As many as you like. As long as a model supports skills, you can use Earnings Preview with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Earnings Preview AI skill free?

Yes. It is published on GitHub by yennanliu under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇