> ## Documentation Index
> Fetch the complete documentation index at: https://api.unusualwhales.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> API requests use the base URL https://api.unusualwhales.com and require a bearer token in the `Authorization` header (`Authorization: Bearer <API_KEY>`). Create and manage API tokens at https://unusualwhales.com/dashboard/api.
> For live market data inside an AI tool, use the Unusual Whales MCP server at https://unusualwhales.com/public-api/mcp.
> Instructions for agents using Unusual Whales tools: https://unusualwhales.com/skill.md

# Technical analysis indicators

> Receive live technical-analysis indicator values on the daily candle for the given ticker.

**NOTE:**
This is the documentation for the websocket channel `ta_1d_live:<TICKER>`.
Websocket access for personal use is only available through the [Advanced plan](https://unusualwhales.com/pricing?product=api).

You can find fully-functional examples that stream data from many channels here:

* Python: [https://github.com/unusual-whales/api-examples/tree/main/examples/ws-multi-channel-multi-output](https://github.com/unusual-whales/api-examples/tree/main/examples/ws-multi-channel-multi-output)
* Javascript: [https://github.com/unusual-whales/api-examples/tree/main/examples/ws-multi-channel-multi-output-nodejs](https://github.com/unusual-whales/api-examples/tree/main/examples/ws-multi-channel-multi-output-nodejs)

Connect to the websocket URI:

`wss://api.unusualwhales.com/socket?token=<YOUR_API_TOKEN>`

then `join` the channel for the ticker you want, for example `ta_1d_live:AAPL`.

Each message carries one ticker's technical-analysis indicators computed on **daily**
candles.

The `1d` in the channel name is the candle interval and `live` means the values track
the session while it is still open.

### Delivery characteristics

Read these before writing a client, they are not obvious from the payload:

* **Messages describe the day that is still forming, not a finished candle.** While the
  session is open, a new message is sent each time the price moves, up to once a second,
  and each one supersedes the one before it for that ticker. The values it carries are
  the ones a calculation over the finished daily candles produces.
* **The channel is live during regular trading hours only.** Outside them nothing is
  published and the socket is silent for this channel.
* **An indicator is `null` until enough daily history exists to compute it.** Each one
  opens on its own schedule: on-balance volume from the first session, `rsi_14` from the
  15th, `sma_200` from the 200th. Every field is present on every message, so an
  indicator that is not ready reads as `null` rather than being left out.
* **The channel sends nothing when you join.** The first message arrives on the next
  price move, which outside regular hours means the next session.
* **The number in a field name is its configuration.** `rsi_14` is the relative strength
  index over 14 periods, `bb_20_2` is Bollinger bands over 20 periods at 2 standard
  deviations, `macd_12_26_9` is MACD with fast period 12, slow period 26 and signal
  period 9, and `stoch_5_3_3` is the stochastic oscillator with fast K 5, slow K 3 and
  slow D 3.
* **Read `obv` as a relative series, never as a level.** On-balance volume accumulates
  from wherever the calculation started, so the absolute number is not comparable across
  restarts. Its direction and its crossovers carry the meaning.

Payload format:

```
[
  "ta_1d_live:AAPL",
  {
    "ticker": "AAPL",
    "adx_14": 23.45,
    "aroon_14": {"down": 21.43, "up": 78.57},
    "atr_14": 3.25,
    "bb_14_2": {"upper": 236.5, "middle": 230.0, "lower": 223.5},
    "bb_20_2": {"upper": 238.0, "middle": 229.5, "lower": 221.0},
    "cci_14": 88.1,
    "ema_9": 231.2,
    "ema_14": 230.4,
    "ema_20": 229.8,
    "ema_21": 229.7,
    "ema_50": 225.1,
    "macd_12_26_9": {"macd": 1.75, "signal": 1.25, "histogram": 0.5},
    "mfi_14": 61.3,
    "obv": 1234567890.0,
    "rsi_14": 57.8,
    "sma_10": 231.0,
    "sma_14": 230.2,
    "sma_20": 229.5,
    "sma_50": 224.9,
    "sma_200": 210.3,
    "stoch_5_3_3": {"k": 72.5, "d": 68.1},
    "willr_14": -27.5
  }
]
```

### Field reference

Every indicator field is a JSON number or `null`. The values are TA-Lib outputs passed
through unchanged, so each indicator's scale is the one TA-Lib defines for it. Prices
are in dollars, matching the daily closes the indicators are computed from.

| Field | Type | Description |
| - | - | - |
| `ticker` | string | Underlying ticker. Same as the `:` suffix on the channel name. |
| `adx_14` | number | Average directional index over 14 periods, from 0 to 100. |
| `aroon_14` | object | Aroon over 14 periods, as `down` and `up`, each from 0 to 100. `up` reports how recently the period high was set and `down` how recently the period low was set. |
| `atr_14` | number | Average true range over 14 periods. |
| `bb_14_2` | object | Bollinger bands over 14 periods at 2 standard deviations, as `upper`, `middle` and `lower`. `middle` is the simple moving average the bands are built around, and the outer bands sit 2 standard deviations either side of it. |
| `bb_20_2` | object | Bollinger bands over 20 periods at 2 standard deviations, same shape as `bb_14_2`. |
| `cci_14` | number | Commodity channel index over 14 periods. |
| `ema_9` | number | Exponential moving average of the close over 9 periods. |
| `ema_14` | number | Exponential moving average of the close over 14 periods. |
| `ema_20` | number | Exponential moving average of the close over 20 periods. |
| `ema_21` | number | Exponential moving average of the close over 21 periods. |
| `ema_50` | number | Exponential moving average of the close over 50 periods. |
| `macd_12_26_9` | object | MACD with fast period 12, slow period 26 and signal period 9, as `macd`, `signal` and `histogram`. `macd` is the fast EMA minus the slow EMA, `signal` is an EMA of `macd`, and `histogram` is `macd` minus `signal`. |
| `mfi_14` | number | Money flow index over 14 periods, from 0 to 100. |
| `obv` | number | On-balance volume. Cumulative from wherever the calculation started, so compare direction and crossovers rather than the level. |
| `rsi_14` | number | Relative strength index over 14 periods, from 0 to 100. |
| `sma_10` | number | Simple moving average of the close over 10 periods. |
| `sma_14` | number | Simple moving average of the close over 14 periods. |
| `sma_20` | number | Simple moving average of the close over 20 periods. |
| `sma_50` | number | Simple moving average of the close over 50 periods. |
| `sma_200` | number | Simple moving average of the close over 200 periods. |
| `stoch_5_3_3` | object | Stochastic oscillator with fast K 5, slow K 3 and slow D 3, as `k` and `d`, each from 0 to 100. `k` is the faster line and `d` is a moving average of it. |
| `willr_14` | number | Williams %R over 14 periods, from -100 to 0. |
