CuteMarkets Docs

API Reference

Everything you need to integrate market data, build faster, and scale.

Tip: open /docs/indicators-ema.md directly for raw markdown (easy copy/paste into an LLM).

The Exponential Moving Average weights recent prices more heavily than a Simple Moving Average, making it more responsive to new price action. It is widely used for trend detection, EMA crossover signals, and dynamic support/resistance levels.

Example Endpoint

/v1/options/indicators/ema/O:NFLX260402C00075000/?timespan=day&window=20&limit=10

Endpoint

bash
GET /v1/options/indicators/ema/{ticker}

Path parameters

ParameterTypeRequiredDescription
tickerstringYesFull options ticker (for example O:NFLX260402C00075000).

Query parameters

ParameterTypeRequiredDescription
timestampstringNoAnchor time: YYYY-MM-DD or millisecond Unix timestamp.
timestamp.gtestringNoRange lower bound (date or ms timestamp).
timestamp.gtstringNoStrictly greater.
timestamp.ltestringNoRange upper bound.
timestamp.ltstringNoStrictly less.
timespanstringNoAggregate bar width: minute, hour, day, week, month, quarter, or year.
adjustedbooleanNoUse split-adjusted aggregates when true (default). false uses non-adjusted bars.
windowintegerNoNumber of bars in the moving average window (for example 20 with timespan=day → 20-day EMA).
series_typestringNoWhich aggregate field drives the calculation (commonly close).
expand_underlyingbooleanNoWhen true, results.underlying includes an aggregates array and a url for the matching aggregates range. When false or omitted, underlying is omitted.
orderstringNoSort order of points by timestamp (asc / desc).
limitintegerNoMax points returned. Default 10, maximum 1000.
pagestringNoPagination continuation: use the URL in next_url, or pass the page query value from that URL here.

Response

FieldTypeDescription
statusstringOutcome (for example OK).
request_idstringUnique identifier for this request, assigned by CuteMarkets.
resultsobjectIndicator payload.
next_urlstringWhen more values exist, full URL for the next page.

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

results contains:

FieldTypeDescription
valuesarrayObjects with timestamp (ms) and value (EMA at that time).
underlyingobjectOnly when you pass expand_underlying=true. Contains aggregates 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/ema/O:NFLX260402C00075000/?timespan=day&window=20&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

Sample response

bash
{
  "results": {
    "values": [
      { "timestamp": 1775102400000, "value": 18.49000953885931 },
      { "timestamp": 1775016000000, "value": 18.046852648212923 },
      { "timestamp": 1774929600000, "value": 17.767573979603757 }
    ]
  },
  "status": "OK",
  "request_id": "cm_2de95a6462ce46928c2aabf152f813cf"
}

EMA-specific behavior

EMA gives more weight to recent bars. That makes it faster than SMA when an option price changes quickly around earnings, macro events, or expiration week. The tradeoff is that EMA can react to noisy prints in thin contracts, so it should be paired with liquidity and quote-quality checks.

DecisionEMA guidanceWhy it matters for options
ResponsivenessUse EMA when recent movement should dominate the signal.Short-dated options can reprice quickly as delta and IV change.
Noise controlRequire volume or quote evidence before using a crossover.One sparse print can move an EMA more than an SMA.
PairingCompare EMA with SMA or MACD for confirmation.A single fast line can overreact to microstructure noise.

Implementation note

When a dashboard displays EMA beside option chain fields, label the source bar interval clearly. A 20 period EMA on daily bars and a 20 period EMA on five-minute bars are different signals even if the label looks similar.

Practical interpretation for options

EMA is most useful when the recent bars are more informative than older bars. That is common for contracts near earnings, index events, macro releases, or the final weeks before expiration. In those windows, the option premium can change because the underlying moved, implied volatility moved, time value compressed, or the spread widened. The EMA does not explain which cause drove the move, but it gives a responsive line that can be compared with quotes, trades, IV, and open interest.

Use EMA as an input to a richer decision, not as a standalone signal. A rising EMA on a contract with tight quotes and steady volume means something different from a rising EMA created by one isolated print. For production scanners, store the bar timestamp, window, timespan, series_type, quote age, and spread at the same time as the EMA value.

EMA quality checks

Before ranking contracts by EMA behavior, apply a few filters:

  • Exclude contracts with very few bars in the lookback window.
  • Require recent bid/ask evidence when the signal will drive a fill model.
  • Compare the EMA slope with underlying movement and IV movement.
  • Treat very short-dated contracts separately from longer-dated contracts.

These checks make the indicator easier to defend when a signal looks strong in a chart but weak in a real execution workflow.

Next steps

Move from the docs into the product workflow

If you are evaluating the API rather than implementing a specific endpoint right now, the product pages map live and historical workflows for stocks, options, and WebSockets.