Skip to content
Back to skills

Eodhd Screen

ASecurity

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>.

  • 38 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added August 31, 2026
ai-agentsapiperformance

Works with

  • api

Security analysis

A100/100

Scanned August 31, 2026

npx -y skills add EodHistoricalData/eodhd-claude-skills --skill eodhd-screen --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Eodhd Screen?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Eodhd Screen
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/eodhistoricaldata-eodhd-screen/badge)](https://www.skillsdirectory.com/skills/eodhistoricaldata-eodhd-screen)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
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."

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.