Skip to main content

Module keltner

Module keltner 

Source
Expand description

§Keltner Channels

middle = EMA(ema_period) of close
atr    = Wilder ATR(atr_period) of high/low/close
upper  = middle + atr_mult * atr
lower  = middle − atr_mult * atr

Default pack: EMA 20, ATR 10, mult 2 (KeltnerParams::standard).

§Word problem

Compare Bollinger(20, 2) and Keltner(20, 10, 2) on the same closes. Which uses volatility of closes only, and which uses true range of the bar?

Bollinger → close stdev. Keltner → Wilder ATR (high/low/close). Teaching tables for both show warm-up n/a until their respective windows fill.

§Quant pattern

use finance_solution::stocks::ta::{KeltnerParams, ValidatedKeltner, KeltnerState};

const KC: KeltnerParams = KeltnerParams::standard();
let eng = ValidatedKeltner::new(KC).unwrap();
let s = eng.compute(&high, &low, &close).unwrap();
let mut live = KeltnerState::new(KC).unwrap();
let _ = live.push_bars(&high, &low, &close).unwrap();
assert_eq!(s.middle.len(), n);

§Sample solution table

period   close  middle   upper   lower     atr
------  ------  ------  ------  ------  ------
     9  100.90     n/a     n/a     n/a     n/a
    19  101.90  101.20  103.00   99.40  0.9000

Structs§

KeltnerParams
Keltner parameter pack (Wilder ATR).
KeltnerSeries
KeltnerSolution
ValidatedKeltner
Validated Keltner config.

Functions§

keltner
keltner_solution
Examples