Imported from arjundrath-star/klade-analyst (
clients/_archived/alexander-wysk/skills/market-scan/SKILL.md). Install upstream withnpx skills add arjundrath-star/klade-analyst --skill market-scan. Copyright stays with the author.
market-scan
The market-scan is the intelligence engine underneath the morning-brief. While the morning-brief is the polished deliverable, market-scan is the systematic process that ensures nothing material is missed. It scans prices, filings, news, and calendar events for the client's entire coverage universe. A market scan answers one question: what changed in the last 24 hours that affects our investment theses?
Trigger
- Daily cron (configurable, default 6:30 AM client timezone — runs before morning-brief)
- On-demand: "What happened in markets today?" / "Market scan" / "Scan my watchlist"
- "Any news on my holdings?"
- "Overnight developments"
Inputs
- Client watchlist: from CLIENT.md (required)
- Scan window: last 24 hours / custom range (default: 24 hours)
- Scope: watchlist-only / watchlist + sector peers / broad market (default: watchlist + sector)
- Market indices: S&P 500, NASDAQ, Dow, Russell 2000, 10Y Treasury, VIX
- Global markets: Nikkei, FTSE, DAX, Hang Seng, STOXX 600
- Economic calendar: Fed, CPI, jobs, PMI, retail sales, housing
Dependencies
- financial-data-api — required for market data and watchlist prices (see
../financial-data-api/SKILL.md) - sec-edgar-fetch — required for filing checks (see
../sec-edgar-fetch/SKILL.md)
⚠️ DATA SOURCING MANDATE (NON-NEGOTIABLE)
This hierarchy is MANDATORY. Violations = automatic grade downgrade.
-
SEC EDGAR (PRIMARY for all filing alerts):
web_fetch("https://data.sec.gov/submissions/CIK{CIK_PADDED_10}.json")withUser-Agent: Klade AI arjun@kladeai.com- Check
recentFilingsarray for any filings within scan window - For each watchlist company: check for 8-K, 10-Q, 10-K, SC 13D/G, Form 4, S-1, DEFA14A
- EFTS full-text search for material event detection:
web_fetch("https://efts.sec.gov/LATEST/search-index?q=%22{COMPANY}%22&dateRange=custom&startdt={START}&enddt={END}") - Zero tolerance for missed filings — if EDGAR has it, the scan must catch it.
-
Massive.com API (PRIMARY for all price data):
web_fetch("https://api.massive.com/v2/aggs/ticker/{TICKER}/prev?apiKey=${MASSIVE_API_KEY}")for each watchlist tickerweb_fetch("https://api.massive.com/v2/snapshot/locale/us/markets/stocks/tickers/{TICKER}?apiKey=${MASSIVE_API_KEY}")for real-time/pre-marketweb_fetch("https://api.massive.com/v2/snapshot/locale/us/markets/stocks/gainers?apiKey=${MASSIVE_API_KEY}")for market movers- Pull all index proxies: SPY, QQQ, DIA, IWM, VIX proxy, TLT
-
FRED API (PRIMARY for rates and macro data):
web_fetch("https://api.stlouisfed.org/fred/series/observations?series_id={ID}&api_key=${FRED_API_KEY}&file_type=json&limit=1&sort_order=desc")- Essential: DGS10, DGS2, DFF, BAMLH0A0HYM2, BAMLC0A0CM, T10YIE
-
web_search (SUPPLEMENTARY ONLY):
- Use for: breaking news, analyst upgrades/downgrades, M&A rumors, earnings previews
- Use for: global market closes, economic calendar, earnings calendar
- Use for: competitor news affecting watchlist companies
- NEVER use for US stock prices or treasury yields
Methodology
Step 0: EDGAR Data Pull (MANDATORY)
Before any web_search, run the EDGAR XBRL extraction for the target company:
python3 skills/sec-edgar-fetch/scripts/edgar_xbrl_extract.py TICKER --preset all
Use the extracted summary and data fields as PRIMARY source for all financial metrics.
Only use web_search for data NOT available in XBRL (analyst estimates, market sentiment, forward guidance, CDS spreads).
Cite all EDGAR-sourced numbers as "Source: SEC EDGAR XBRL".
Step 1: Index & Macro Scan
Pull from Massive.com and FRED:
US Indices (from Massive.com):
- SPY (S&P 500), QQQ (NASDAQ 100), DIA (Dow 30), IWM (Russell 2000)
- Previous close, after-hours, pre-market indication where available
Rates & Spreads (from FRED):
- 10Y yield (DGS10), 2Y yield (DGS2), Fed Funds (DFF)
- IG OAS (BAMLC0A0CM), HY OAS (BAMLH0A0HYM2)
- Breakeven inflation (T10YIE)
- Calculate: 2s10s spread, change in HY/IG spreads (widening = risk-off)
Volatility:
- VIX level and change — contextualize with regime (VIX <15 complacent, 15-20 normal, 20-30 elevated, >30 fear)
Global (from web_search):
web_search("Asian markets close today Nikkei Hang Seng")
web_search("European markets today FTSE DAX")
Step 2: Watchlist Price Screening
For every ticker in the client watchlist, pull from Massive.com:
- Previous close price and % change
- After-hours / pre-market moves (if available via snapshot endpoint)
- Volume vs average (flag unusual volume >2x 20-day average)
Materiality thresholds for flagging:
| Category | Threshold | Priority |
|---|---|---|
| Price move >5% (intraday) | Automatic flag | 🔴 High |
| Price move 3-5% | Flag with context | 🟡 Medium |
| Price move 1-3% with catalyst | Flag if thesis-relevant | 🟢 Low |
| Unusual volume >2x avg | Flag regardless of price | 🟡 Medium |
| New 52-week high/low | Automatic flag | 🟡 Medium |
Step 3: Filing Scan
For every watchlist ticker, check EDGAR for filings within the scan window:
| Filing Type | What It Means | Priority |
|---|---|---|
| 8-K | Material event (M&A, earnings, officer change, bankruptcy) | 🔴 High |
| 10-Q / 10-K | Quarterly/annual earnings filing | 🔴 High |
| SC 13D | Activist investor >5% stake (with intentions) | 🔴 High |
| SC 13G | Passive investor >5% stake | 🟡 Medium |
| Form 4 | Insider buy/sell transaction | 🟡 Medium (🔴 if >$1M or cluster) |
| S-1 / S-3 | New offering / shelf registration | 🟡 Medium |
| DEFA14A | Proxy contest / shareholder proposal | 🟡 Medium |
| 8-K/A | Amendment to prior 8-K (restatement risk) | 🟡 Medium |
For each filing detected, note:
- Filing type and item numbers (for 8-K)
- Filing date and time
- One-line summary of what it contains
Step 4: News & Catalyst Scan
For each watchlist ticker, run targeted searches:
web_search("[COMPANY] news today")
web_search("[TICKER] analyst upgrade downgrade rating")
For sector-level news:
web_search("[SECTOR] industry news today")
web_search("[COMPETITOR] news") # for key competitors of watchlist companies
Classify each news item by thesis impact:
- Thesis-confirming: Supports the current investment view
- Thesis-challenging: Contradicts or threatens the investment view
- Neutral/informational: Context without direct thesis impact
- Catalyst: Event that could trigger re-rating (earnings, M&A, regulatory)
Step 5: Economic & Earnings Calendar
web_search("economic calendar today [DATE] data releases")
web_search("earnings calendar today [DATE]")
web_search("Fed speakers schedule this week")
Document:
- Today's economic releases: time, release name, consensus, prior
- Today's earnings: company, time (BMO/AMC), consensus EPS and revenue
- Fed speakers: who, when, topic
- This week: remaining major events
Step 6: Credit Market Signals
From FRED data pulled in Step 1:
- Is HY OAS widening or tightening? (Widening >10bp in a day = risk-off signal)
- Is IG OAS widening? (More significant — IG widening signals broad stress)
- 2s10s spread direction (inversion = recession signal; steepening = normalization)
Step 7: Materiality Scoring & Triage
Score each detected event on a 1-5 materiality scale:
| Score | Criteria | Example |
|---|---|---|
| 5 | Requires immediate portfolio action | Watchlist company acquired, fraud allegation, bankruptcy |
| 4 | Material thesis impact, monitor closely | Earnings miss/beat >10%, activist stake, major contract |
| 3 | Thesis-relevant, warrants deeper analysis | Analyst rating change, peer earnings signal, guidance revision |
| 2 | Context — good to know | Sector news, minor insider transaction, conference presentation |
| 1 | Background noise — include only in detailed mode | General market commentary, old news recycled |
Only surface items scoring ≥2 in standard mode, ≥3 in express mode.
Output Format
📊 Market Scan — [Date] [Time]
Scan Window: [Start] to [End] | Watchlist: [XX] tickers | Sources: Massive.com, FRED, EDGAR
━━━ MATERIALITY SUMMARY ━━━
🔴 Critical (Score 5): [count] items
🟡 High (Score 3-4): [count] items
🟢 Context (Score 2): [count] items
Total scan items: [count]
━━━ MARKET SNAPSHOT ━━━
| Index/Rate | Level | Change | Context |
|-------------------|-----------|---------|-------------------|
| S&P 500 (SPY) | X,XXX.XX | +/-X.X% | [brief context] |
| NASDAQ (QQQ) | XXX.XX | +/-X.X% | [brief context] |
| Russell 2000 (IWM)| X,XXX.XX | +/-X.X% | [brief context] |
| VIX | XX.XX | +/-X.XX | [regime label] |
| 10Y Yield | X.XX% | +/-Xbp | [direction] |
| 2s10s Spread | +/-XXbp | +/-Xbp | [signal] |
| HY OAS | XXXbp | +/-Xbp | [risk signal] |
| IG OAS | XXXbp | +/-Xbp | [risk signal] |
| DXY | XXX.XX | +/-X.X% | [direction] |
Global: Nikkei [+/-X.X%] | Hang Seng [+/-X.X%] | FTSE [+/-X.X%] | DAX [+/-X.X%]
━━━ WATCHLIST ALERTS (Score ≥3) ━━━
| Ticker | Event Type | Score | Detail |
|--------|-----------|-------|--------|
| [TICK] | [Filing/Price/News] | [X] | [One-line summary with thesis impact tag] |
| [TICK] | [Filing/Price/News] | [X] | [One-line summary with thesis impact tag] |
**Detail:**
- **[TICKER] (Score X):** [Full paragraph: what happened, why it matters for thesis, suggested action]
━━━ FILINGS DETECTED ━━━
| Company | Filing | Items | Filed | Summary |
|---------|--------|-------|-------|---------|
| [Name] | [8-K] | [X.XX]| [Date]| [One-line] |
━━━ ECONOMIC CALENDAR ━━━
| Time (ET) | Release | Consensus | Prior | Impact |
|-----------|-------------------|-----------|--------|--------|
| X:XX AM | [Release] | X.X% | X.X% | [🔴/🟡] |
**Earnings Today:**
| Time | Company | Ticker | Est. EPS | Est. Rev |
|------|---------|--------|----------|----------|
| BMO | [Name] | [TICK] | $X.XX | $X.XXB |
━━━ CREDIT MARKET SIGNALS ━━━
HY Spreads: [XXXbp, +/-Xbp] — [tightening/widening, what it signals]
IG Spreads: [XXXbp, +/-Xbp] — [tightening/widening, what it signals]
Assessment: [Risk appetite expanding / stable / contracting]
━━━ TRIPLE-THREAT LENS ━━━
🏦 Banker: [Market conditions for deal execution — IPO window open/closed? M&A sentiment from overnight activity? Credit market accessibility for leveraged deals? Any announced transactions to analyze?]
📊 Accountant: [Filing review queue — which new filings need quality-of-earnings review? Any Form 4 cluster buying/selling suggesting information asymmetry? 8-K items that warrant deeper accounting analysis?]
💰 Wealth Manager: [Portfolio action items — any positions triggering stop-loss or rebalancing thresholds? Tax-loss harvesting candidates from laggards? Concentration risk from big movers? Client communication needed for material events?]
━━━ THESIS IMPACT TAGS ━━━
✅ Confirming: [Tickers where today's news supports current thesis]
⚠️ Challenging: [Tickers where today's news challenges current thesis]
🔄 Catalyst: [Tickers with upcoming catalysts (earnings, FDA, trial results)]
━━━ SOURCES ━━━
[Complete source list with timestamps and endpoints]
Quality Gates
- Every watchlist ticker scanned for price, filings, and news (zero gaps)
- All prices from Massive.com with explicit timestamps (not web-scraped)
- EDGAR filing check covers all watchlist CIKs within scan window
- Materiality scoring applied consistently (not subjective flagging)
- Economic calendar includes consensus estimates and release times
- Credit market spreads from FRED (HY OAS, IG OAS) included
- Global markets covered (Asia + Europe close)
- Thesis impact tags applied to every watchlist alert
- No item scored ≥3 without a detail paragraph explaining thesis relevance
- Triple-threat lens references specific scan findings, not generic commentary
- Scan timestamp clearly documented (data freshness is critical)
- Volume anomalies flagged (>2x average)
Professional Standards
What separates A from B:
- A-grade: Zero missed filings — every EDGAR submission in the scan window is caught and classified. Price data from Massive.com with pre-market/after-hours where available. Materiality scoring is consistent and defensible (not just "this feels important"). Thesis impact tags connect each event to the specific investment thesis for that name. Credit market spreads provide risk appetite context. News items are verified against filings (don't flag a "rumored" event when the 8-K already confirms it). Detail paragraphs for high-scoring items include specific suggested actions.
- B-grade: Most tickers scanned but occasional gaps. Prices present but no pre-market data. Filing check incomplete (missed a Form 4 or SC 13G). No materiality scoring — everything treated equally. Credit spreads not included. News items from unreliable sources without cross-referencing. No thesis impact tagging.
Common pitfalls:
- Missing overnight filings because EDGAR wasn't queried for every CIK
- Flagging price moves without checking if there's an already-known catalyst
- Including stale news (>24 hours old) in a daily scan
- Not checking pre-market/after-hours — this is where earnings reactions happen
- Treating all 8-K filings equally (Item 2.02 earnings release ≠ Item 5.07 shareholder meeting results)
- Ignoring credit spreads — they often lead equity markets by days or weeks
- Not distinguishing confirmed events from rumors/speculation
- Scanning only watchlist names without checking sector peers (a competitor's earnings miss IS relevant)
See Also
morning-brief— polished deliverable that consumes market-scan outputsector-heatmap— sector rotation contextcommodity-tracker— commodity market contextcredit-market-pulse— deeper credit market analysisearnings-summary— detailed earnings analysis for flagged names