"AI picked these stocks" is one of the most repeated claims on FinTwit right now.
Almost none of it is reproducible.
Screenshot of a ChatGPT chat. No data source. No filters. No way to check if the tickers even exist. If you're:
this one's different. Every number below came from a live screen. There's code for developers and a copy-paste prompt for everyone else.
Most "AI stock picking" content fails for one boring reason: the model never touches real data.
You ask an LLM to "analyze the market," and it answers from training data that's months or years stale. It might invent a ticker. It might quote a P/E ratio from memory that hasn't been true since 2023.
Developers discover this too late — usually after publishing a "top 10 AI stock picks" post and getting called out in the comments for a ticker that delisted last year.
The reasoning isn't the problem.
The data pipeline is.
Claude can reason extremely well over structured data — rank by valuation, weigh momentum against volatility, spot a sector cluster.
What it can't do on its own is see the market.
Give it that, and the "AI stock picker" stops being a parlor trick and starts being an actual screening assistant.
EODHD exposes a stock screener as an MCP tool. Instead of scraping pages or hardcoding a REST client, Claude connects directly to it and calls it like any other tool.
Through the MCP connection, Claude gets:
No scraping. No stale CSV exports. No hallucinated tickers — every result is a real, currently-listed instrument.
If you're already using EODHD for other projects, this is the same dataset — just exposed as a tool Claude can call directly instead of a REST endpoint you wrap yourself.
👉 Explore the EODHD MCP integration
You don't need an API key or a Python environment to test this. If you have Claude with the EODHD connector enabled, paste this prompt directly into the chat:
Connect to the EODHD MCP stock screener and run this exact query:
- US-listed stocks only
- Market capitalization above $10 billion
- Average 200-day volume above 1 million shares
- Sort by 5-day return, descending
- Return the top 10 results
For each result, show: ticker, company name, sector, 5-day return %,
and market cap. Then add one sentence identifying any sector pattern
across the list — don't force a narrative if there isn't one.
That's it. Claude calls the tool, gets back real rows, and reasons over them the same way it would for the code version below.
A few ways to push it further once you've run the base prompt:
Now filter that same list down to only the Technology sector
and explain what's driving the move in plain English.
Re-run the screen but swap 5-day return for market cap above $50B
and dividend yield above 2%. I want value, not momentum.
The MCP config is what makes this work for anyone building it into an app instead of chatting it manually.
MCP server config (Claude Desktop or API):
{
"mcpServers": {
"eodhd": {
"url": "https://mcpv2.eodhd.dev/v2/mcp",
"type": "url"
}
}
}
Calling it via the API:
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-sonnet-4-6",
max_tokens=2000,
mcp_servers=[
{
"type": "url",
"url": "https://mcpv2.eodhd.dev/v2/mcp",
"name": "eodhd-mcp"
}
],
messages=[{
"role": "user",
"content": (
"Screen US stocks with market cap above $10B and average "
"200-day volume above 1M shares. Sort by 5-day return descending. "
"Return the top 10 with sector and a one-line reason for momentum."
)
}],
extra_headers={"anthropic-beta": "mcp-client-2025-04-04"}
)
print(response.content)
Behind the scenes, Claude translates the plain-language request into a structured call to the screener tool — filtering by market_capitalization
, avgvol_200d
, and sorting by refund_5d_p
— and gets back real rows, not a guess.
From here you can build:
Filters: US-listed, market cap above $10B, average 200-day volume above 1M shares, sorted by 5-day return.
This wasn't curated. It's the raw output, ranked by Claude after the screener returned the candidates.
| Ticker | Company | Sector | 5d Return | Mkt Cap |
|---|---|---|---|---|
| WDC | Western Digital | Technology | +40.99% | $257B |
| BE | Bloom Energy | Industrials | +32.16% | $93.6B |
| NBIS | Nebius Group | Communication Services | +29.00% | $72.8B |
| CIFR | Cipher Mining | Technology | +28.94% | $11.9B |
| MRNA | Moderna | Healthcare | +28.85% | $25.4B |
| ARM | Arm Holdings | Technology | +28.41% | $469B |
| ENTG | Entegris | Technology | +23.36% | $27.2B |
| STX | Seagate Technology | Technology | +23.29% | $242B |
| CRWV | CoreWeave | Technology | +23.20% | $64.4B |
| ALGM | Allegro Microsystems | Technology | +23.02% | $11B |
Claude's read on the cluster: seven of the ten sit in storage, semiconductors, or AI infrastructure — Western Digital and Seagate riding a hard-drive demand spike, Arm and Entegris tied to the chip cycle, CoreWeave and Nebius both pure AI-compute plays.
That's not Claude being clever. That's the screen surfacing a real sector rotation, and Claude naming the pattern instead of leaving you to spot it in a spreadsheet.
Moderna is the outlier — a biotech name riding its own news cycle, disconnected from the hardware story.
Running one screen is easy. Getting useful output every time takes a bit more discipline.
1. Always specify liquidity, not just size.
Market cap alone lets illiquid OTC tickers sneak in — names that move 200% on 200 shares traded. Add a volume filter (avgvol_200d > 1,000,000
) or you'll get noise dressed up as momentum.
2. Separate the screen from the narrative.
Ask Claude to return raw data first. Then, in a second message, ask it to interpret the pattern. Mixing both in one prompt makes it more likely Claude reaches for a story before checking if one's actually there.
3. Re-run before you publish.
Market data is a snapshot. A screen run on Monday is stale by Friday. If you're writing this up for a newsletter or post, re-run it the morning you publish.
4. Pin your filters in the prompt, not in your head.
"Large, liquid, momentum stocks" means nothing to a screener. "Market cap > $10B, avgvol_200d > 1M, sorted by refund_5d_p descending" means everything. Specificity is the whole game.
5. Use sector clustering as a sanity check, not a conclusion.
If 7 of 10 picks share a sector, that's a real signal worth investigating — not proof you've found alpha. Treat it as a research starting point.
6. Cross-check anything you'd act on.
A screener tells you what moved. It doesn't tell you why a specific company moved, or whether the move is sustainable. Pull the news, check the earnings calendar, read the filing — before any of this touches real money.
❓ Can I run this without writing any code?
✅ Yes. If you have the EODHD MCP connector enabled in Claude, just paste the prompt in the "Try It Yourself" section above. Claude calls the screener tool directly — no API key setup or Python environment needed.
❓ Is the EODHD MCP server free to use?
✅ It depends on your EODHD API plan — the screener tool consumes API calls against your existing subscription tier. Check EODHD's pricing page for current limits on screener calls per day.
❓ Does Claude ever hallucinate tickers when using MCP?
✅ No, not when the data comes through the tool call. Every ticker in the results above came directly from the screener response — Claude is reasoning over real rows, not generating them from memory.
❓ Can I use this for sectors other than tech?
✅ Yes. Swap the filters in the prompt — set sector = "Healthcare"
or sector = "Energy"
and re-run. The screener supports filtering by sector, industry, country, and several other fields.
❓ Is this financial advice?
✅ No. This is a demonstration of a reproducible screening workflow. The output is a filtered list based on price momentum and market cap, not a recommendation to buy or sell anything.
❓ What's the difference between this and just asking ChatGPT to pick stocks?
✅ Without a connected data tool, an LLM answers from training data that can be stale by months. With MCP, Claude is calling a live screener and reasoning over real, current numbers — the difference between guessing and looking.
If you're a software or API company looking to explain your product through high-quality educational content (not marketing fluff), feel free to connect with me on LinkedIn.
👉 Get started with EODHD's API and MCP server
Looking for technical content for your company? I can help — LinkedIn · kevinmenesesgonzalez@gmail.com