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

# Interpolated IV

> Receive live interpolated IV and expected move updates at fixed horizons (1-365 days) for every ticker at once, or for a single ticker.

**NOTE:**
This is the documentation for websocket channels `interpolated_iv` and `interpolated_iv:<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 you wish to stream, for example `interpolated_iv:AAPL` for live interpolated IV updates for AAPL.
Omit the ticker suffix (`interpolated_iv`) to receive the updates for every ticker.

This is the live counterpart of the [`/stock/:ticker/interpolated-iv`](https://api.unusualwhales.com/docs/operations/PublicApi.TickerController.interpolated_iv) endpoint.
A ticker updates at most every \~5 seconds, with one message per horizon (1, 5, 7, 14, 30, 60, 90, 180, 365 trading days).
If a horizon lines up with a real option expiry the values are taken from that expiry (`is_exact: true`); otherwise they are
interpolated between the two surrounding expiries in total variance space (`is_exact: false`).

Payload format:

```
[
  "interpolated_iv:AAPL",
  {
    "ticker": "AAPL",
    "date": "2026-08-20",
    "days": 30,
    "volatility": 0.299,
    "implied_move": 12.345,
    "implied_move_perc": 0.058,
    "is_exact": false
  }
]
```

### Field reference

| Field | Type | Description |
| - | - | - |
| `ticker` | string | Ticker of the underlying. |
| `date` | string | The trading date in `YYYY-MM-DD` format. |
| `days` | integer | The horizon in trading days this entry is interpolated to. One of 1, 5, 7, 14, 30, 60, 90, 180, 365. |
| `volatility` | number | The interpolated implied volatility at this horizon, as a decimal (e.g. `0.299` = 29.9%). |
| `implied_move` | number | The expected absolute move of the underlying in dollars by this horizon. |
| `implied_move_perc` | number | The expected move as a fraction of the underlying price by this horizon. |
| `is_exact` | boolean | True if an actual option expiry matched this horizon exactly, false if the values were interpolated. |
