# Exponential Moving Average (EMA) Indicator

> Exponential Moving Average (EMA) Indicator is a paid API for AI agents from agent.massive.com, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-13).

Returns the exponential moving average for a stock ticker over a configurable time window and timespan

## Facts

- Endpoint: GET https://agent.massive.com/v1/indicators/ema/:stockTicker
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/exponential-moving-average-ema-indicator-d7c4fdb9
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_5zRj2jY6T3dvdWyjNxDCV

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability exponential-moving-average-ema-indicator-d7c4fdb9
```

Example prompt: What's the 20-day EMA for AAPL using daily close prices for the last 30 results, in ascending order?

## When to prefer this

Use this endpoint when you need exponential moving averages for technical analysis of US stocks or OTC tickers with configurable windows and timespans. Prefer EMA over SMA when you want more weight placed on recent prices. Choose this over the Simple Moving Average sibling endpoint when responsiveness to recent price changes matters (e.g. momentum or trend-following strategies). Best for agents performing technical charting, trend detection, or quantitative backtesting.

## Known failure modes

- Invalid or unsupported ticker symbol returns an error or empty results
- Window size too large for available data history returns sparse or empty series
- Case-sensitive ticker mismatch causes no results (e.g. 'aapl' instead of 'AAPL')
- Timestamp range with no market data (weekends, holidays) may return empty results
- Exceeding max limit of 5000 returns a validation error
- Unavailable timespan for a given ticker (e.g. minute-level data not available for OTC)

## How this service works

Get the exponential moving average (EMA) for a ticker symbol over a given time range. Can't find what you're looking for? POST feedback to /feedback, no charge.

## Output

Returns a time-ordered series of EMA values for the requested ticker, each entry containing a timestamp and the computed EMA price. Supports filtering by date range, configuring the smoothing window, timespan granularity, price series type (open/high/low/close), and split-adjustment. Results can be paginated up to 5000 entries.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "pathParams": {
     "type": "object",
     "required": [
      "stockTicker"
     ],
     "properties": {
      "stockTicker": {
       "type": "string",
       "description": "Specify a case-sensitive ticker symbol for which to get exponential moving average (EMA) data. For example, AAPL represents Apple Inc."
      }
     }
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "limit": {
       "type": "integer",
       "default": 10,
       "maximum": 5000,
       "description": "Limit the number of results returned, default is 10 and max is 5000"
      },
      "order": {
       "enum": [
        "asc",
        "desc"
       ],
       "type": "string",
       "default": "desc",
       "description": "The order in which to return the results, ordered by timestamp."
      },
      "window": {
       "type": "integer",
       "default": 50,
       "description": "The window size used to calculate the exponential moving average (EMA). i.e. a window size of 10 with daily aggregates would result in a 10 day moving average."
      },
      "adjusted": {
       "type": "boolean",
       "default": true,
       "description": "Whether or not the aggregates used to calculate the exponential moving average are adjusted for splits. By default, aggregates are adjusted. Set this to false to get results that are NOT adjusted for splits."
      },
      "timespan": {
       "enum": [
        "minute",
        "hour",
        "day",
        "week",
        "month",
        "quarter",
        "year"
       ],
       "type": "string",
       "default": "day",
       "description": "The size of the aggregate time window."
      },
      "timestamp": {
       "type": "string",
       "description": "Query by timestamp. Either a date with the format YYYY-MM-DD or a millisecond timestamp."
      },
      "series_type": {
       "enum": [
        "open",
        "high",
        "low",
        "close"
       ],
       "type": "string",
       "default": "close",
       "description": "The price in the aggregate which will be used to calculate the exponential moving average. i.e. 'cl
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/exponential-moving-average-ema-indicator-d7c4fdb9/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agent.massive.com](https://www.zero.xyz/host/agent.massive.com/llms.txt)
