Skip to content
Data
Skill

/eodhd-screen

Screen stocks by fundamental and technical criteria using the EODHD screener — market cap, P/E, dividend yield, sector, exchange, and signals, with currency- aware thresholds. Invoke as /eodhd-screen <criteria>.

From plugin
eodhd-api
3913 skills1 agent1 MCP
Install
$ npx -y skills add EodHistoricalData/eodhd-claude-skills --skill eodhd-screen --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/eodhd-screen

Context preview

The summary Claude sees to decide when to auto-load this skill.

Screen stocks by fundamental and technical criteria using the EODHD screener — market cap, P/E, dividend yield, sector, exchange, and signals, with currency- aware thresholds. Invoke as /eodhd-screen <criteria>.

SKILL.md

eodhd-screen.SKILL.md
name: eodhd-screen
description: >-
  Screen stocks by fundamental and technical criteria using the EODHD screener —
  market cap, P/E, dividend yield, sector, exchange, and signals, with currency-
  aware thresholds. Invoke as /eodhd-screen <criteria>.
argument-hint: "<criteria, e.g. high dividend large cap US>"

Screen stocks using EODHD screener based on these criteria: $ARGUMENTS

Translate the user's criteria into EODHD screener filters.

**Filter format (critical):** `filters` is a **JSON array of `[field, operation, value]` triples**, NOT dot-notation and NOT a JSON object. A JSON object is rejected with HTTP 422 ("must be an array"). Operations: `=`, `!=`, `>`, `>=`, `<`, `<=`, `match`.

**Sort format:** `--sort field.direction`, e.g. `market_capitalization.desc` or `pe.asc`. A bare field name (or a separate order flag) is rejected with HTTP 422 ("sort.0.direction is required").

**Currency caveat (important):** absolute-money fields — `market_capitalization`, `revenue`, `ebitda` — are reported in each listing's **local currency**, not normalized to USD. So a raw threshold leaks huge non-USD companies (e.g. a Vietnam-listed firm shows "3.88T" ₫ ≈ $150M but passes a `>= 10B` filter). Each result row carries a `currency_symbol` field telling you the currency. Therefore:

  • When filtering/sorting by an absolute-money field, **scope to one market** — add `["exchange","=","us"]`

(or the user's intended exchange) so the threshold is currency-consistent.

  • For multi-market screens, you cannot compare raw caps across rows — group/label by `currency_symbol`.
  • Ratio/percent fields (`pe`, `pb`, `ps`, `peg`, `roe`, `roa`, `beta`, `dividend_yield`) are currency-independent and safe to compare across markets.

**Instrument-type noise (important — the screener has NO `type` filter):** there is no field to restrict results to common stock. Passing `["type", ...]` is rejected with HTTP 422 (`filters.0.field is invalid`). Two kinds of junk leak into unscoped screens, especially dividend screens:

  • **OTC / foreign cross-listings** — the combined `["exchange","=","us"]` virtual exchange *includes* OTC

grey-market listings (codes ending in `F`/`Y`, e.g. `TCANF`, `RNECF`) with broken `dividend_yield` (55–110%). **Scope to a real venue instead** — `["exchange","=","nyse"]` or `["exchange","=","nasdaq"]` — to drop them. (`us` is still fine when you only need currency consistency, not clean common stock.)

  • **Preferred shares / baby bonds** — these list on NYSE/NASDAQ too, carry a `-` in `code`

(e.g. `JPM-PD`, `DLR-PJ`) and a coupon rate in `name`, and dominate high-yield screens. The API can't filter them, so **post-filter the results**: for a common-stock screen, drop rows whose `code` contains `-`.

  • **Sanity-cap broken yields** — for any dividend screen add `["dividend_yield","<=",0.25]` (no real common

stock yields >25%) to discard rows with corrupt data.

Common mappings (note: `dividend_yield` is a **fraction** — 0.03 = 3%):

  • "large cap" → `["market_capitalization",">=",10000000000]`
  • "mid cap" → `["market_capitalization",">=",2000000000],["market_capitalization","<=",10000000000]`
  • "small cap" → `["market_capitalization","<=",2000000000]`
  • "high dividend" → `["dividend_yield",">=",0.03],["dividend_yield","<=",0.25]` (upper cap drops broken-data OTC/preferred rows)
  • "low P/E" or "cheap" → `["pe",">",0],["pe","<",15]` + `--sort pe.asc`
  • "tech" → `["sector","=","Technology"]`
  • "healthcare" → `["sector","=","Healthcare"]`
  • US stocks → `["exchange","=","nyse"]` or `["exchange","=","nasdaq"]` for clean common stock (avoids OTC junk); use `["exchange","=","us"]` only when you need currency consistency, not a clean instrument set
  • Sector names, industry names, exchange codes as additional `[field,"=",value]` triples

Example: "high dividend large cap (US)" → `--filters '[["dividend_yield",">=",0.03],["dividend_yield","<=",0.25],["market_capitalization",">=",10000000000],["exchange","=","nyse"]]' --sort dividend_yield.desc` (then drop result rows whose `code` contains `-` — those are preferred shares, not common stock)

Use the `stock-screener` skill workflow: 1. Run screener with translated filters (limit 20) 2. Unless the user explicitly wants preferred shares/ETFs, drop result rows whose `code` contains `-` (preferred shares) before presenting — the API has no instrument-type filter to do this server-side 3. For top 5-10 results, fetch fundamentals for deeper detail 4. Fetch recent price data for performance context

Present:

  • **Filters Applied** — show the JSON filter used
  • **Results Table** — ticker, name, sector, market cap (with its `currency_symbol`), P/E, dividend yield, price, 30d change. Show the currency next to any cap/revenue figure; never present a non-USD cap as if it were USD.
  • **Top 5 Deep Dive** — expanded valuation and growth metrics for best matches
  • **Summary** — key themes and patterns in results

If criteria are vague, ask for clarification or suggest reasonable defaults.

Include disclaimer: "This is not financial advice. Data is for informational purposes only."

Read more
Ships witheodhd-api

Developer-first financial data for Claude — 150,000+ tickers across 70+ exchanges, powered by EODHD API and an OAuth-secured MCP Server. ⚠ Not financial advice. This plugin delivers AI-generated analysis on top of EODHD market data.

Get the whole plugin
Stats
39
Stars
10
Forks
Active
Maintenance
Python
Language
MIT
License
21d ago
Last commit
6mo ago
Created

Repo: EodHistoricalData/eodhd-claude-skills

Other skills on eodhd-api.