# Tickers

The row axis of the state table: every row is one tradeable instrument — every US-listed equity plus curated rates, FX and crypto series — in one canonical namespace prefixed by asset class so identifiers never collide.

## Tickers and the universe

A **ticker** is one tradeable instrument: an equity (`AAPL`), an interest rate (`R:SOFR`), a currency pair (`X:EURUSD`) or a cryptocurrency (`X:BTCUSD`). The universe is 20,798+ tickers across 4 asset classes.

The non-equity series are **curated, not exhaustive**: the full US Treasury par-yield curve and the Fed policy rates rather than every rate published; the major currency pairs and spot metals rather than every cross.

Each ticker is one row of the computed state table (https://tickerbot.io/docs/schema.md), carrying every signal column that applies to its class (https://tickerbot.io/docs/signals.md). The universe tracks the market: new listings appear as they start trading, and a symbol always resolves to whoever holds it now — for delisted companies and reused symbols, read the row as-of a past date (https://tickerbot.io/docs/asof.md) and the symbol resolves to whoever held it then.

## The asset classes

Equities are bare symbols; every other class carries a prefix.

| Asset class | Prefix | Example | What it covers |
|-------------|--------|---------|----------------|
| `stocks` | (none) | `AAPL` | Every US-listed equity — NYSE, Nasdaq and AMEX — including ETFs, ADRs and preferred shares. |
| `rates` | `R:` | `R:SOFR` | The full US Treasury par-yield curve, the Fed policy rates (SOFR, EFFR, and both ends of the target band), and the headline curve spreads. |
| `crypto` | `X:` | `X:BTCUSD` | The major crypto pairs by liquidity, quoted against USD. |
| `fx` | `X:` | `X:EURUSD` | The major currency pairs, plus spot gold and spot silver — metals quote and trade as FX pairs, and carry ISO 4217 codes (XAU, XAG). |

`X:` appears twice on purpose. FX and crypto both quote one thing in terms of another, so the prefix tells you a symbol isn't an equity but does **not** tell you which class it is. Don't branch on the prefix alone.

## No auto-resolution

The API doesn't guess. Passing `BTC` to a stock endpoint returns the Grayscale Bitcoin Mini Trust ETF — a real US-listed equity with that ticker — not bitcoin spot. If you want the cryptocurrency, ask for `X:BTCUSD`.

## Symbols that collide

- `BTC`: Grayscale Bitcoin Mini Trust ETF (equity) vs `X:BTCUSD` (bitcoin spot).
- `ETH`: Grayscale Ethereum Staking Mini ETF (equity) vs `X:ETHUSD` (ether spot).

## What each class carries

Every class goes through the same endpoints. What changes is which columns are populated — the signal vocabulary was built for equities, and most of it is meaningless elsewhere. A Treasury yield has no P/E ratio and no earnings date.

- `stocks` carries the full schema: price, volume, price action, technicals, fundamentals, events, profile, analyst ratings and news.
- `rates`, `fx` and `crypto` carry `price` and daily OHLCV history. Equity-specific columns are `null` on these rows — *not* `false` or `0`. A null never satisfies a filter, so a non-equity row cannot accidentally match an equity screen.
- Corporate-event, analyst and news endpoints (`/v2/events`, `/v2/analyst`, `/v2/news`) are equities-only by definition. Passing a non-equity symbol returns an error naming its asset class, not an empty result.

## History depth, by class

| Class | Daily history from | Note |
|-------|--------------------|------|
| US equities `stocks` | 2003 | Full OHLCV, plus intraday bars and the whole signal schema. Each ticker's own history starts at its first day of coverage. |
| Rates `rates` | 1990 | One value per business day, and no open/high/low or volume — a rate has no intraday range and nothing trades. |
| Crypto `crypto` | 2010 | Genuine traded volume. |
| FX `fx` | 1968 | Spot metals reach furthest back (1968); the currency pairs begin in 2007. Pre-2024 metal bars are a single daily fixing (open = high = low = close, no volume). FX has no consolidated traded size, so the volume field carries a tick count. |

Intraday coverage (`1h`, `1m`) varies by class and is expanding — the major crypto pairs have it, most non-equity series do not yet. Rather than guess from this page, ask: a request for an uncovered interval returns an explicit `coverage` marker, never a silent empty list, and `/v2/tickers/{ticker}/coverage` reports exactly what is held per ticker.
