# Risk reversal skew `GET` `https://api.unusualwhales.com/api/socket/risk_reversal_skew` **NOTE:** This is the documentation for the websocket channel `risk_reversal_skew`. 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=` then `join` the `risk_reversal_skew` channel. Each message carries the risk reversal skew — the put implied volatility minus the call implied volatility — at one delta bucket for one expiry of one ticker. A positive value means puts are more expensive than calls, the usual state for equity index options. ### Delivery characteristics Read these before writing a client, they are not obvious from the payload: - **Updates arrive in a batch at most every ~30 seconds**, not continuously. - **The channel is only live between 04:00 and 16:00 ET.** Outside that window nothing is published at all and the socket is silent. This is expected, not a fault. - **One message per (ticker, expiry, delta) pair.** Because this is a global channel covering the whole option universe and each ticker has many expiries, every batch is a large burst of messages. Your client must read from the socket promptly: a slow consumer is not disconnected, but frames it fails to keep up with are dropped. - Only two delta buckets are published: `25` and `10`. This is the live counterpart of the [`/stock/:ticker/historical-risk-reversal-skew`](https://api.unusualwhales.com/docs/operations/PublicApi.TickerController.historical_risk_reversal_skew) endpoint, which returns the identical value under the same `risk_reversal` name. Note only that the REST endpoint renders it as a decimal string, while this channel sends a JSON number. Payload format: ``` [ "risk_reversal_skew", { "ticker": "AAPL", "date": "2026-08-20", "expiry": "2026-09-18", "delta": 25, "risk_reversal": 0.0142 } ] ``` ### Field reference | Field | Type | Description | |-----------------|---------|-------------| | `ticker` | string | Ticker of the underlying. | | `date` | string | The trading date in `YYYY-MM-DD` format. | | `expiry` | string | The option expiry this entry belongs to, in `YYYY-MM-DD` format. | | `delta` | integer | The delta bucket as a whole number out of 100: `25` means the 0.25 delta, `10` means the 0.10 delta. | | `risk_reversal` | number | Put implied volatility minus call implied volatility at that delta. Positive means puts are more expensive than calls. | ## Authentication ``` Authorization: Bearer YOUR_API_KEY ``` ## Example ### curl ```bash curl -X GET "https://api.unusualwhales.com/api/socket/risk_reversal_skew" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json" ``` ### Python ```python import http.client conn = http.client.HTTPSConnection("api.unusualwhales.com") headers = {"Authorization": "Bearer YOUR_API_KEY", "Accept": "application/json"} conn.request("GET", "/api/socket/risk_reversal_skew", headers=headers) response = conn.getresponse() print(response.read().decode("utf-8")) ``` ## Response Example ```json { "data": [] } ```