⚠ MVP PreviewReport a Bug

Signals

Keltner Channels

Wrap an EMA with ATR-based envelopes for trend and breakout analysis.

What it is

Keltner Channels wrap an EMA with ATR-based upper and lower envelopes. They are useful for measuring whether price is stretching beyond a volatility-adjusted trend baseline.

When to use it

  • Framing breakout entries with volatility-aware channel boundaries.
  • Spotting trend continuation when price rides the upper channel.
  • Building pullback rules that fade toward the middle band instead of a flat average.

The maths

Middle = EMA(N), Upper = EMA(N) + (multiplier × ATR(N)), Lower = EMA(N) - (multiplier × ATR(N)) The default multiplier is 2.

What it tells you

Keltner Channels behave like Bollinger Bands but use ATR instead of standard deviation, so they are less sensitive to volatility spikes. A close above the upper band in a trending market is bullish confirmation, and a breakout from a narrow channel often precedes a directional move.

REST example

python
import os
import requests

response = requests.get(
  'https://api.financedata.com/v1/signals/KELTNER/AAPL',
  params={'start_date': '2025-01-01', 'end_date': '2025-04-30', 'period': 20, 'multiplier': 2.0},
  headers={'X-API-Key': os.environ['FDA_KEY']},
  timeout=30,
)
response.raise_for_status()
print(response.json())

MCP example

Tool call body

{
"name": "run_signals",
"arguments": {
  "symbols": ["AAPL"],
  "signal_names": ["KELTNER"],
  "start_date": "2025-01-01",
  "end_date": "2025-04-30",
  "signal_parameters": {
    "KELTNER": { "period": 20, "multiplier": 2.0 }
  }
}
}

KELTNER returns upper, mid, and lower, so the batch MCP output is ideal when the agent needs to reason about channel location.

Agent prompt that triggers it

Run Keltner Channels for AAPL and tell me whether price is breaking out above the upper band, mean-reverting, or still centered in the channel.