# Stock Screener

> >-

- **Type:** Skill
- **Install:** `agentstack add skill-eodhistoricaldata-eodhd-claude-skills-stock-screener`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [EodHistoricalData](https://agentstack.voostack.com/s/eodhistoricaldata)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [EodHistoricalData](https://github.com/EodHistoricalData)
- **Source:** https://github.com/EodHistoricalData/eodhd-claude-skills/tree/main/skills/stock-screener
- **Website:** https://eodhd.com

## Install

```sh
agentstack add skill-eodhistoricaldata-eodhd-claude-skills-stock-screener
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Skill: stock-screener

## Purpose

Find stocks matching user-defined criteria using EODHD's screener endpoint, then enrich top results with detailed fundamentals and price data for comparison.

## Trigger

Activate when the user asks for:
- Stock screening or filtering ("find stocks with P/E under 15")
- "Best dividend stocks" or "cheap growth stocks"
- Sector-specific stock lists
- Signal-based screening (new highs, oversold, etc.)
- Comparative analysis of filtered stocks
- "What should I invest in?" (screen first, then analyze)

## Workflow

1. **Translate criteria to filters** — map user language to EODHD screener JSON filters
2. **Run screener** — `screener` endpoint with filters, sort, signals, limit
3. **Review results** — present initial list with key metrics
4. **Enrich top picks** — `fundamentals` for detailed data on top 5-10 results
5. **Add price context** — `eod` for recent price trends
6. **Compile screener report**

## Filter Format (critical)

`filters` is a **JSON array of `[field, operation, value]` triples** — NOT dot-notation
(`market_capitalization.gte`) and NOT a JSON object. If the shape is wrong, the EODHD API
silently ignores the filter and returns unfiltered, irrelevant results.

Operations: `=`, `!=`, `>`, `>=`, `=",10000000000],["sector","=","Technology"]]
```

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

**Currency caveat (important):** absolute-money fields — `market_capitalization`, `revenue`, `ebitda` — are
in each listing's **local currency**, not USD. A raw threshold leaks huge non-USD companies (e.g. a
Vietnam-listed firm at "3.88T" ₫ ≈ $150M passes `>= 10B`). Each result row has a `currency_symbol` field
indicating its currency. So:
- Filtering/sorting by an absolute-money field → **scope to one market** with `["exchange","=","us"]` (or the
  intended exchange) so the threshold is currency-consistent.
- Multi-market screens → don't 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 (the screener has NO `type` filter — `["type",...]` → HTTP 422):** the combined
`["exchange","=","us"]` includes OTC foreign cross-listings (codes ending `F`/`Y`, broken 55–110%
`dividend_yield`) and preferred shares (codes with a `-`, e.g. `JPM-PD`). For a clean common-stock screen:
scope to a real venue (`["exchange","=","nyse"]`/`"nasdaq"`), add `["dividend_yield"," This is not financial advice. Data is for informational purposes only.

## Example Filters

```bash
# High-dividend large caps (dividend_yield is a fraction: 0.03 = 3%; nyse avoids OTC junk; =",0.03],["dividend_yield","=",10000000000],["exchange","=","nyse"]]' --sort dividend_yield.desc --limit 20
# then drop rows whose code contains '-' (preferred shares)

# Undervalued growth stocks
python eodhd_client.py --endpoint screener --filters '[["market_capitalization",">=",1000000000],["earnings_share",">=",1],["exchange","=","us"]]' --signals 200d_new_lo --limit 20

# Tech sector screening
python eodhd_client.py --endpoint screener --filters '[["sector","=","Technology"],["market_capitalization",">=",5000000000],["exchange","=","us"]]' --sort market_capitalization.desc --limit 30
```

## Endpoints Used

| Endpoint | Purpose | Cost |
|----------|---------|------|
| `screener` | Filter and rank stocks | 1 call |
| `fundamentals` | Detailed data for top picks | 10 calls/ticker |
| `eod` | Price context | 1 call/ticker |

## References

- `../eodhd-api/references/endpoints/stock-screener-data.md`
- `../eodhd-api/references/endpoints/fundamentals-data.md`
- `../eodhd-api/references/endpoints/historical-stock-prices.md`

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [EodHistoricalData](https://github.com/EodHistoricalData)
- **Source:** [EodHistoricalData/eodhd-claude-skills](https://github.com/EodHistoricalData/eodhd-claude-skills)
- **License:** MIT
- **Homepage:** https://eodhd.com

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-eodhistoricaldata-eodhd-claude-skills-stock-screener
- Seller: https://agentstack.voostack.com/s/eodhistoricaldata
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
