agentsclimarketplace

Earnings prep

Skill ssurmic/claude-investment-skills/earnings-prep

Investment-research skills for Claude Code: top-down macro-aware framework, bilingual EN/CN NL triggers, Telegram alerts (2-min cron + 1-3s webhook). For personal-finance buy-side use (swing/position/LEAPS) — not HFT. See NEXT-STEPS.md for roadmap.

Install
npx -y skills add ssurmic/claude-investment-skills --skill earnings-prep

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Pre-earnings analysis: pulls consensus, implied move from ATM straddle, historical 8-quarter reactions, what's already priced in, 4 scenarios with probability weighting, position-specific recommendations (hold/trim/hedge/add). Triggers in English ("X reports tomorrow", "should I hold X through earnings", "earnings prep for X", "what's priced in for X earnings", "X earnings expected move") or Chinese ("X 财报前怎么看", "X 财报怎么处理", "X 财报应该减仓吗", "X implied move", "X 财报前分析").

SKILL.md

11.3 KB, as published. Nobody here has run it

Earnings Prep — Pre-Earnings Decision Framework

🔍 Pre-flight checklist — run BEFORE building scenarios or making recommendations

Earnings reactions are ±8-20%. That's not where to skip the discipline layers.

  1. Macro regime — trigger macro-warning skill first. In 🔴 RED regime, even a 20% beat can sell off (AMD 2/3/2026 beat 23%, dropped -17.31%). RED regime → recommend trim/hedge only, no adds regardless of expected reaction.
  2. Insider 60d window$(ls ~/.claude/{skills,plugins/claude-investment-skills}/review-investment-screenshot/scripts/insider_ratio.py 2>/dev/null | head -1) TICKER --window 60 (60d catches pre-earnings ad-hoc activity that 90d dilutes). Pre-earnings C-suite distribution = they know something. Never trust yfinance "% Net Shares" headline (RSU pollutes it). Form 4 code "P" only counts as buy.
  3. Position context first — if user already holds, lead with their position size + cost basis + holding period. Generic "buy/sell" without position context is useless.
  4. 3-tier entry if recommending add — Don't say "buy after earnings". Map T1 = post-earnings reaction level, T2 = 50DMA support, T3 = 200DMA / pre-earnings level. NEVER "buy at market" on earnings hype.
  5. Tax for trims — If trimming a position held < 12 months, run tax-optimize for STCG vs LTCG impact. STCG ~25-37% federal vs LTCG 15-20%. Often changes the recommendation (hold 30 more days → save 10%).
  6. Sizing — ≤ 10% single name; if recommending add post-earnings, current allocation must allow it.

"Look carefully" rule: the most common pre-earnings mistake is treating "beat consensus" as automatic upside. Always answer "what's already priced in" (Step 4 below) — if Forward P/E expanded 30% in 3 months, the beat is already discounted.

See README's Hard Rules for the full anti-pattern list.


Goal

Answer 3 questions:

  1. What's the market expecting? (consensus + implied move)
  2. What's the historical pattern? (last 8 quarters reactions)
  3. What should I do with my position? (hold / trim / hedge / add)

The 5-Step Workflow

Step 1 — Pull consensus + guidance

Tools:

  • WebSearch: "[ticker] Q[X] FY[YEAR] earnings consensus revenue EPS"
  • mcp__yfmcp__yfinance_get_ticker_info for current price + earnings date

Capture:

ItemValue
Earnings dateYYYY-MM-DD (BMO/AMC)
Revenue consensus$X.XB (+Y% YoY)
EPS consensus$X.XX (+Y% YoY)
Company self-guide$X.XB ± $Y
Last quarter beat/missBeat by X% / Missed
Days awayN

Step 2 — Calculate implied move

Method 1 (preferred): ATM straddle

  • Pull option chain for first expiry after earnings
  • Find ATM call + ATM put
  • Implied move % = (call mid + put mid) / current price × 100
  • Convert to $ range: current ± implied move

Method 2: WebSearch fallback

  • WebSearch: "[ticker] earnings expected move implied volatility"

Output:

Current: $XXX
Implied move: ±X.X%
Expected range: $YYY - $ZZZ

Step 3 — Historical 8-quarter reactions

Pull last 8 quarter reactions. Use optionsai.com, optionslam.com, or WebSearch.

Output table:

DateResultOne-day reactionNotes
8 quarters backBeat/Miss+X% / -X%Why
7.........
............
Last quarterBeat 23%-17.31%Despite beat (AMD pattern)

Key statistics:

  • Average absolute move: X.X%
  • Win rate: Y/8 (Z%)
  • Largest up: +X% / Largest down: -X%
  • Recent trend: Last 3-4 quarters skew (often more important than 8q average)

Step 4 — Predictability assessment (NEW)

Before scenario building, assess earnings predictability based on growth model:

Growth ModelEarnings PredictabilityImplication
Capacity-bottlenecked (Optical, OSAT)🔴 LowHigh variance, "shipments < demand" common
Demand-elastic (GPU, ASIC)🟡 MediumCan beat but expectations also high
Independent capex (Memory, Storage)🟢 HighCapacity locked, contracts visible
Long-cycle infra (Power, Materials)🟢🟢 HighestBacklog-driven, low surprise
Recurring SaaS/ARR🟢🟢 HighestQuarterly steady

For each model, watch for these red flags pre-earnings:

  • Capacity-bottlenecked: "缺料" / component shortage rumors → likely miss on operational metrics even if EPS beats (FN pattern 5/4/2026)
  • Demand-elastic: "guide in-line" without raise → "beat but priced in" (AMD pattern)
  • Cyclical: Inventory buildup at customers → next-quarter weak guide
  • Recurring: Customer churn news → revenue miss

Step 5 — What's priced in vs not?

Critical analysis — this is what separates pros from amateurs.

Question 1: What's already in the price?

  • Current Forward P/E vs historical avg
  • Distance from 50DMA / 200DMA
  • 1Y price change
  • If +50% in 3 months → expectations极高

Question 2: What's NOT in the price?

  • Specific business optionalities
  • Geographic recovery (e.g., NVDA China = $0 priced in)
  • New product cycles
  • M&A rumors

Examples:

  • NVDA 5/2026: China = $0 priced in → any China good news = pure upside
  • ORCL 6/2026: Capex concerns priced in → any FCF improvement = upside
  • AMD 5/2026: MI400 + OpenAI已 priced in → 需要"上修指引"才能涨

Step 5 — Build 4 scenarios with weighting

ScenarioProbabilityConditionsReactionTarget Price
🚀 Mega-bullX%Big beat + raise + new catalyst+12 to +20%$YYY
🟢 BullX%Solid beat + in-line guide+3 to +8%$YYY
🟡 Flat/-SellX%Beat but priced-in-3 to -10%$YYY
🔴 BearX%Miss or guide cut-10 to -20%$YYY

Weighted average price = Σ(probability × target) If weighted < current → 期望值是负的,市场已 priced in 利好

Position-Specific Recommendations

Based on the 4 scenarios, give SPECIFIC action:

Already long the stock?

Pre-earnings setupAction
Already +30%+ in last monthTrim 25-50% before
At 1Y high + earnings ≤7dTrim 25-50% (Rule #5 from review-screenshot)
Healthy trend, not parabolicHold + set 50DMA stop
Below 50DMA, beaten downHold, low expectations = upside skew
Insider distributed pre-earningsTrim, they know something

Want to make a directional bet?

SetupStrategy
Bullish + IV reasonableLong call (1-2 weeks out)
Bullish + IV very highCall spread (cap upside, reduce cost)
Bullish + already long stockBuy upside call as add (don't sell stock)
Bearish + IV highPut spread (cheaper than naked put)
Uncertain but want to play volStrangle or straddle (rare, expensive)

Want to hedge existing long position?

SetupHedge
Want full protectionLong put at ATM (expensive but full hedge)
Want protection at lower costPut spread (gives up tail)
Have core, willing to sell at +X%Covered call (income, caps upside)
Want to stay in but reduce deltaSell some shares + use proceeds for puts

Output format

# [TICKER] Earnings Prep — [Date]
**Earnings: [Date BMO/AMC] | Days away: N**

## TL;DR
[One paragraph: what to do with current position + size]

## Consensus
| Revenue | EPS | YoY |

## Implied Move
- ATM straddle: ±X.X%
- Range: $YYY - $ZZZ

## Historical Pattern (Last 8 Quarters)
[Table]
- Avg abs move: X.X%
- Win rate: Y/8

## What's Priced In
- ✅ Already in price: [list]
- ❌ NOT priced in: [list — these are upside catalysts]

## 4 Scenarios
| Scenario | Prob | Reaction | Target |
| Mega-bull | X% | +X% | $Y |
| Bull | X% | +X% | $Y |
| Flat | X% | -X% | $Y |
| Bear | X% | -X% | $Y |
**Weighted avg target: $X (vs current $Y) → +/-Z%**

## My Recommendation
- **If I'm long [N shares]**: [trim X / hold / add Y]
- **If I'm not in**: [skip / play call spread / wait]
- **Specific orders**: [exact ticker, qty, price, type]

## Watch list (next 24h)
- [Pre-market reaction signals]
- [Key levels: $X = breakout, $Y = breakdown]

Hard rules

  1. Pre-flight before recommending. Skip the checklist at top = incomplete call. Macro + insider 60d + position context are not optional.
  2. Never recommend "hold through earnings" without setting a stop. Implied move is real money.
  3. Compare last 3-4 quarters more heavily than 8q avg. Pattern recently changed = more relevant.
  4. Big beats sometimes lead to big drops. AMD 2/3/2026: EPS beat 23% → -17.31%. Always check "is this priced in".
  5. In 🔴 RED macro regime, no new longs regardless of earnings setup — trim/hedge only. Document the regime call in the output.
  6. IV crush is real. Buy options 5+ days out, sell into earnings hype.
  7. Never sell naked puts on stocks you wouldn't own. Sell put = "I want to buy at $X". If $X isn't a level you'd actually buy at, don't sell.
  8. Cite implied move source. Either ATM straddle calculation or WebSearch with link.
  9. When user is already long: lead with their position, not generic analysis.
  10. 3-tier entry for any add recommendation. "Buy at market post-earnings" = wrong answer. Always map T1/T2/T3.
  11. Tax-aware trims. If position held < 12 months, surface STCG impact in the recommendation, not as footnote.

Common pitfalls

PitfallExampleLesson
"Earnings will beat, stock will rise"AMD 2/3/26 (beat 23%, -17.31%)Beat alone is not enough
"Sell put before earnings = easy money"Multiple timesUntil it's not, then you lose 10x premium
Ignoring IV crushBought ATM call before earningsNeed stock to move > implied + IV crush
Not checking insiderDropping after CFO sold $5M pre-earningsInsider sold for a reason
Only checking 8q avgRecent trend was -10%, -8%, -17%Trend > average

Tool cheat-sheet

NeedTool
Current price + earnings datemcp__yfmcp__yfinance_get_ticker_info
Option chain for straddlemcp__yfmcp__yfinance_get_option_chain
Historical earnings reactionsWebSearch: "optionslam [ticker] earnings history"
Implied moveCalculate from straddle OR WebSearch: "[ticker] expected move"
ConsensusWebSearch: "[ticker] Q[X] earnings consensus"
Insider pre-earnings`$(ls ~/.claude/{skills,plugins/claude-investment-skills}/review-investment-screenshot/scripts/insider_ratio.py 2>/dev/null

When to invoke

  • User asks: "Should I hold X through earnings?"
  • User asks: "X reports tomorrow, what do I do?"
  • User asks: "Should I sell put before earnings?"
  • Auto: 7 days before any earnings of a stock the user holds
  • Auto: Day-of for any stock with options position expiring within 1 month of earnings

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.