Created
September 5, 2026 21:22
-
-
Save xcollantes/993c9b67d0fa232f4bd86141bac60112 to your computer and use it in GitHub Desktop.
stock-driver-analysis
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- | |
| name: stock-driver-analysis | |
| description: Use when analyzing why a stock is moving. Given a ticker symbol, identifies news, earnings, analyst actions, and market conditions from the last few minutes to the last day, with recency verification for every source. | |
| --- | |
| # Stock Movement Drivers | |
| Analyze the factors behind a stock's recent price movement using free web data sources. Prioritizes **real-time and same-day data**, no API key required. | |
| ## Overview | |
| Given a ticker symbol (e.g., `AAPL`, `TSLA`, `NVDA`), this skill identifies _why_ the stock is moving **right now**. It prioritizes data from the last few minutes to hours, with explicit recency verification on every source. The workflow relies on publicly accessible endpoints and browser-based news extraction, so it works out of the box with zero credentials. | |
| ## When to Use | |
| - User just sends message with a ticker symbol, no other context | |
| - User asks "Why is X up/down today?" or "What's moving X?" | |
| - User asks "What just happened to X?" or "Any news on X?" | |
| - User wants a quick intraday or same-day movement analysis | |
| - User asks about pre-market / after-hours price action | |
| ## Recency-First Workflow | |
| The guiding principle: **the market prices in news within seconds to minutes**. A story from yesterday may be stale. A story from an hour ago may be the sole driver. | |
| ### Step 1: Get real-time price and magnitude ( Target: < 1 minute old) | |
| **Primary:** Yahoo Finance quote page (browser-based, reliable) | |
| ``` | |
| browser_navigate: "https://finance.yahoo.com/quote/{TICKER}/" | |
| ``` | |
| Extract from the snapshot: | |
| - Current price and $ / % change | |
| - Timestamp ("As of HH:MM:SS [timezone]") | |
| - Previous close for context | |
| **Fallback:** If Yahoo is unavailable, use: | |
| ``` | |
| browser_navigate: "https://www.marketwatch.com/investing/stock/{TICKER}" | |
| ``` | |
| **Record the timestamp.** Every analysis must state: "As of [time], [ticker] is at $X ([change])." | |
| ### Step 2: Pull same-day news headlines (Target: < 4 hours old, ideally < 1 hour) | |
| **Primary:** Yahoo Finance News tab | |
| ``` | |
| browser_navigate: "https://finance.yahoo.com/quote/{TICKER}/news/" | |
| ``` | |
| What to look for: | |
| - Headlines with timestamps: "2h ago", "30m ago", "Just now" | |
| - Press releases vs. third-party articles | |
| - SEC filings tab for 8-K or form 4 (insider trades) | |
| **Cross-reference with Google News:** | |
| ``` | |
| browser_navigate: "https://news.google.com/search?q={TICKER}+stock+today" | |
| ``` | |
| **Recency rule:** Only extract articles dated today or within the last 6 hours. If a headline says "yesterday" or shows a calendar date older than today, flag it as context, not as the driver. | |
| ### Step 3: Extract full text of top 2–3 most recent catalysts | |
| For each headline that is **≤ 4 hours old**: | |
| ``` | |
| browser_click: [article link ref] | |
| browser_snapshot (full page) | |
| ``` | |
| Read the article body for: | |
| - Specific numbers (earnings beats/misses, guidance changes, contract values) | |
| - Named analyst firms and rating changes | |
| - Quotes from management or regulators | |
| - Timestamps within the article (e.g., "announced at 9:30 AM") | |
| **If the article is paywalled or blocked:** Note the headline and source, then search for a free mirror: | |
| ``` | |
| web_search: "{headline text}" | |
| ``` | |
| ### Step 4: Check for earnings / events / filings (Target: calendar accuracy) | |
| From the Yahoo quote page, click **Analysis** or **Earnings** tab: | |
| ``` | |
| browser_click: ["Analysis" menuitem ref] | |
| ``` | |
| Look for: | |
| - Next earnings date | |
| - Recent EPS surprises | |
| - Analyst rating changes in the last 24–48 hours | |
| **Pre-market / after-hours special case:** If the user asks before 9:30 AM ET or after 4:00 PM ET, check if the move is earnings-driven: | |
| ``` | |
| web_search: "{TICKER} earnings {today's date}" | |
| ``` | |
| ### Step 5: Sector and market context (Target: same timestamp as price) | |
| Always check the broad market at the same time as the stock price: | |
| - S&P 500, Nasdaq, sector ETF (e.g., XLK for tech, XLF for financials) | |
| From Yahoo Finance sidebar or dedicated search: | |
| ``` | |
| browser_navigate: "https://finance.yahoo.com/quote/%5EGSPC" # S&P 500 | |
| browser_navigate: "https://finance.yahoo.com/quote/%5EIXIC" # Nasdaq | |
| ``` | |
| **Key question:** Is the stock moving _with_ the market, _against_ it, or _disproportionately_ to it? | |
| ## Balance Sheet Fundementals | |
| Give some highlights of the balance sheet, and any changes from the last earnings report. | |
| ### Get CIK | |
| The CIK is a 10-digit central index key, including leading zeros. You need this | |
| for every API call to find a company's SEC filings. | |
| Look up a company's CIK by ticker at: | |
| ``` | |
| web_search: "TSLA CIK" | |
| browser_navigate: "https://www.sec.gov/cgi-bin/browse-edgar?company=&CIK=AAPL&type=10-K&action=getcompany" | |
| ``` | |
| Or use the ticker-to-CIK mapping file: | |
| ``` | |
| web_search: "Ticker-to-CIK mapping" | |
| browser_navigate: "https://www.sec.gov/files/company_tickers.json" | |
| ``` | |
| Pad the CIK to 10 digits with leading zeros (e.g., 320193 becomes 0000320193). | |
| ### Get the filing history | |
| Each entity's current filing history is available at https://data.sec.gov/submissions/CIK##########.json. | |
| Example for Apple: https://data.sec.gov/submissions/CIK0000320193.json | |
| This JSON contains metadata like current name, former name, stock exchanges, and ticker symbols. The recentFilings property contains at least one year or up to 1,000 of the most recent filings in a compact columnar data array. | |
| In the response, the recent object has parallel arrays: form, filingDate, accessionNumber, primaryDocument, etc. Filter where form === "10-K" to get the 10-K entries. | |
| ### Download the actual 10-K document | |
| Once you have the accessionNumber and primaryDocument filename from the submissions JSON, build the document URL: https://www.sec.gov/Archives/edgar/data/{CIK}/{accessionNumber-no-dashes}/{primaryDocument} | |
| The accession number needs dashes stripped (e.g., 0000320193-23-000106 becomes 000032019323000106). | |
| ### Get structured financial data from the 10-K | |
| The XBRL company facts API returns all company concepts data in a single call: https://data.sec.gov/api/xbrl/companyfacts/CIK##########.json. | |
| This gives you parsed financial line items (revenue, net income, assets, etc.) | |
| across all filings, so you don't have to parse the 10-K HTML yourself. | |
| ### Examine the balance sheet | |
| When you have the balance sheet, you can examine the changes from the last earnings report for highlights such as large changes in cash, accounts receivable, accounts payable, | |
| inventory, and other current assets and liabilities. | |
| ## Presenting Results | |
| Format the answer for maximum temporal clarity: | |
| - **Ticker + Snapshot Time**, "As of 2:45 PM ET, GOOGL is $385.64 (-0.77%)" | |
| - **Move magnitude vs. benchmark**, "Nasdaq is -1.70%, so GOOGL is outperforming by ~93 bps" | |
| - **Headline driver**, The single biggest catalyst, with **source and timestamp** | |
| - Example: _"12:15 PM, Reuters reports Alphabet is exploring a yen-denominated bond sale (TipRanks, 1h ago)"_ | |
| - **Supporting factors**, 2–4 bullets, each with recency noted: | |
| - _"This morning, Profit-taking after 52-week high run (+159% YoY)"_ | |
| - _"Today, Broader tech selloff on inflation fears"_ | |
| - **Stale vs. live distinction**, Clearly separate: | |
| - _"Today's catalyst: [X]"_ | |
| - _"Background context: Q1 earnings beat last week, CapEx doubled"_ | |
| - **Upcoming near-term catalysts**, Events in the next 24–72 hours if known | |
| ## One-Shot Recipes | |
| ### Intraday surprise move (last hour) | |
| ``` | |
| browser_navigate: "https://finance.yahoo.com/quote/AAPL/news/" | |
| # Read timestamps on top 3 headlines | |
| # Click any headline < 1h old | |
| # Check if AAPL is moving with or against SPY/QQQ | |
| ``` | |
| ### Pre-market earnings gap | |
| ``` | |
| web_search: "TSLA earnings today" | |
| browser_navigate: "https://finance.yahoo.com/quote/TSLA" | |
| # Read "As of" timestamp, if pre-market, note the session | |
| # Click top news headline | |
| ``` | |
| ### After-hours news-driven spike | |
| ``` | |
| web_search: "NVDA news after hours today" | |
| browser_navigate: "https://finance.yahoo.com/quote/NVDA/news/" | |
| # Filter headlines by time, after-hours catalysts often hit 4:05–5:00 PM | |
| ``` | |
| ## Common Pitfalls | |
| 1. **Reporting stale news as today's driver**, A headline from "yesterday" about earnings is not why the stock is moving at 11 AM today unless the market is just reacting (e.g., pre-market). Always check the article dateline. | |
| 2. **Ignoring the timestamp on the quote**, "GOOGL is down 2%" means nothing without knowing if that's as of 9:45 AM (early volatility) or 3:30 PM (confirmed trend). Always state the snapshot time. | |
| 3. **Missing pre-market / after-hours**, Moves at 7:00 AM ET and 4:30 PM ET have different news cycles. Specify the market session when quoting price. | |
| 4. **Attributing macro moves to company news**, If the Nasdaq is down 3% and GOOGL is down 2.8%, the driver is macro. Don't invent a company-specific story. | |
| 5. **Trusting aggregator timestamps**, Google News sometimes shows "2h ago" for a reprint of a 2-day-old story. Click through and verify the original dateline inside the article. | |
| 6. **Yahoo Finance blocking from cloud IPs**, If curl / terminal-based API calls timeout, pivot immediately to `browser_navigate` on finance.yahoo.com. The browser stack handles JavaScript-rendered pages. | |
| ## Verification Checklist | |
| - [ ] Ticker symbol verified (no look-alike confusion: GOOGL vs GOOG) | |
| - [ ] Price data includes exact timestamp and market session (regular / pre / after-hours) | |
| - [ ] News sources are dated today or within the last 6 hours | |
| - [ ] Article datelines verified (not just aggregator timestamps) | |
| - [ ] Broad market and sector context checked at the same time | |
| - [ ] Stocks moving with the market are flagged as macro-driven | |
| - [ ] Stocks moving disproportionately to the market have a specific catalyst identified | |
| - [ ] Upcoming 24–72 hour catalysts noted if known |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment