# Simple Moving Average (SMA)

The **Simple Moving Average** smooths option (aggregate) prices over a fixed number of periods, useful for trend context, crossover ideas, and level-style analysis.

<div data-try-url="/v1/options/indicators/sma/O:NFLX260402C00075000/?timespan=day&window=20&limit=10"></div>

## Endpoint

```
GET /v1/options/indicators/sma/{ticker}
```

### Path parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `ticker` | string | Yes | Full options ticker (for example `O:NFLX260402C00075000`). |

### Query parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `timestamp` | string | No | Anchor time: `YYYY-MM-DD` or **millisecond** Unix timestamp. |
| `timestamp.gte` | string | No | Range lower bound (date or ms timestamp). |
| `timestamp.gt` | string | No | Strictly greater. |
| `timestamp.lte` | string | No | Range upper bound. |
| `timestamp.lt` | string | No | Strictly less. |
| `timespan` | string | No | Aggregate bar width (for example `minute`, `hour`, `day`, `week`, `month`, `quarter`, `year`). |
| `adjusted` | boolean | No | Use split-adjusted aggregates when `true` (default). `false` uses non-adjusted bars. |
| `window` | integer | No | Number of bars in the moving average (e.g. `20` with `timespan=day` → 20-day SMA). |
| `series_type` | string | No | Which aggregate field drives the calculation (commonly `close`). |
| `expand_underlying` | boolean | No | When `true`, `results.underlying` includes an `aggregates` array and a `url` for the matching [aggregates](/docs/aggregates) range. When `false` or omitted, `underlying` is omitted. See **Response**. |
| `order` | string | No | Sort order of points by timestamp (`asc` / `desc`). |
| `limit` | integer | No | Max points returned. Default **10**, maximum **1000**. |
| `page` | string | No | Pagination continuation: use the URL in `next_url`, or pass the `page` query value from that URL here. |

### Response

| Field | Type | Description |
| --- | --- | --- |
| `status` | string | Outcome (for example `OK`). |
| `request_id` | string | Unique identifier for this request, assigned by CuteMarkets. |
| `results` | object | Indicator payload. |
| `next_url` | string | When more values exist, full URL for the next page. |

Use `limit` and timestamp filters per page; follow `next_url` when present.

`results` contains:

| Field | Type | Description |
| --- | --- | --- |
| `values` | array | Objects with `timestamp` (ms) and `value` (SMA at that time). |
| `underlying` | object | **Only when** you pass `expand_underlying=true`. Contains `aggregates` (OHLC bars used in the calculation) and `url`, an absolute URL to the same contract’s aggregates over the inferred date range (for example `https://api.cutemarkets.com/v1/options/aggs/{ticker}/1/day/{from}/{to}/`). |

### Example request

```bash
curl \
  "https://api.cutemarkets.com/v1/options/indicators/sma/O:NFLX260402C00075000/?timespan=day&window=20&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### Sample response

```json
{
  "results": {
    "values": [
      { "timestamp": 1775016000000, "value": 19.801499999999997 },
      { "timestamp": 1774929600000, "value": 20.021499999999996 },
      { "timestamp": 1774843200000, "value": 20.137499999999996 }
    ]
  },
  "status": "OK",
  "request_id": "cm_54709e440a0a40f6988c4cede291c443"
}
```
