diff --git a/lib/channels/apchannel/apchannel.md b/lib/channels/apchannel/apchannel.md index 4886da06..b58a86c2 100644 --- a/lib/channels/apchannel/apchannel.md +++ b/lib/channels/apchannel/apchannel.md @@ -4,17 +4,17 @@ | ---------------- | -------------------------------- | | **Category** | Channel | | **Inputs** | OHLCV bar (TBar) | -| **Parameters** | None | -| **Outputs** | Single series (Apchannel) | +| **Parameters** | `alpha` (default 0.2) | +| **Outputs** | Multiple series (Upper, Lower) | | **Output range** | Tracks input | -| **Warmup** | 1 bar | +| **Warmup** | `⌈3/alpha⌉` bars (default 15) | ### TL;DR - APCHANNEL applies exponential smoothing independently to price highs and lows, creating a dynamic envelope that "remembers" significant extremes wh... -- No configurable parameters; computation is stateless per bar. +- Parameterized by `alpha` (default 0.2). - Output range: Tracks input. -- Requires 1 bar of warmup before first valid output (IsHot = true). +- Requires `⌈3/alpha⌉` bars (default 15) of warmup before first valid output (IsHot = true). - Validated against TA-Lib, Skender, and Tulip reference implementations where available. APCHANNEL applies exponential smoothing independently to price highs and lows, creating a dynamic envelope that "remembers" significant extremes while gradually fading their influence over time. Unlike rigid Donchian channels that drop price extremes abruptly when they exit the lookback window (the "cliff effect"), APCHANNEL decays them smoothly through leaky integration. The result is a channel with continuously sloping boundaries that responds to volatility without the discontinuous jumps that plague fixed-window approaches. The algorithm is $O(1)$ per bar with only two state variables and no buffers. diff --git a/lib/channels/jbands/jbands.md b/lib/channels/jbands/jbands.md index c72e18e3..534e13b5 100644 --- a/lib/channels/jbands/jbands.md +++ b/lib/channels/jbands/jbands.md @@ -7,14 +7,14 @@ | **Parameters** | `period`, `phase` (default 0) | | **Outputs** | Multiple series (Upper, Lower) | | **Output range** | Tracks input | -| **Warmup** | 1 bar | +| **Warmup** | `⌈20 + 80 × period^0.36⌉` bars | ### TL;DR - JBANDS expose the internal adaptive envelope mechanism of the Jurik Moving Average (JMA), producing asymmetric bands that snap instantly to new pri... - Parameterized by `period`, `phase` (default 0). - Output range: Tracks input. -- Requires 1 bar of warmup before first valid output (IsHot = true). +- Requires `⌈20 + 80 × period^0.36⌉` bars of warmup before first valid output (IsHot = true). - Validated against TA-Lib, Skender, and Tulip reference implementations where available. JBANDS expose the internal adaptive envelope mechanism of the Jurik Moving Average (JMA), producing asymmetric bands that snap instantly to new price extremes and decay exponentially during consolidation. Unlike standard volatility bands (Bollinger, Keltner) which maintain symmetric width around a center line, JBANDS feature "snap-and-decay" hysteresis: expansion is instantaneous (plasticity), contraction is gradual (elasticity). The decay rate is dynamically modulated by a two-stage volatility estimator — a 10-bar SMA feeding a 128-bar trimmed mean — making the bands tight during quiet markets and expansive during trends. The center line is the full JMA: a 2-pole IIR filter with phase control and adaptive alpha. diff --git a/lib/channels/uchannel/uchannel.md b/lib/channels/uchannel/uchannel.md index c82672b9..cda324df 100644 --- a/lib/channels/uchannel/uchannel.md +++ b/lib/channels/uchannel/uchannel.md @@ -7,14 +7,14 @@ | **Parameters** | `strPeriod` (default DefaultStrPeriod), `centerPeriod` (default DefaultCenterPeriod), `multiplier` (default DefaultMultiplier) | | **Outputs** | Multiple series (Upper, Middle, Lower, STR) | | **Output range** | Tracks input | -| **Warmup** | 1 bar | +| **Warmup** | `Math.Max(strPeriod, centerPeriod)` bars | ### TL;DR - Ehlers Ultimate Channel applies the Ultrasmooth Filter (USF) twice: once to the close price for the centerline and once to True Range for band widt... - Parameterized by `strperiod` (default defaultstrperiod), `centerperiod` (default defaultcenterperiod), `multiplier` (default defaultmultiplier). - Output range: Tracks input. -- Requires 1 bar of warmup before first valid output (IsHot = true). +- Requires `Math.Max(strPeriod, centerPeriod)` bars of warmup before first valid output (IsHot = true). - Validated against TA-Lib, Skender, and Tulip reference implementations where available. Ehlers Ultimate Channel applies the Ultrasmooth Filter (USF) twice: once to the close price for the centerline and once to True Range for band width, creating a channel where both the trend estimate and the volatility measure share the same low-lag, zero-overshoot filter characteristics. Unlike UBANDS which uses RMS of price residuals, UCHANNEL uses Smoothed True Range (STR) for band width, making it responsive to gap-inclusive volatility. Separate period parameters allow independent tuning of centerline smoothness and band-width responsiveness. diff --git a/lib/cycles/ebsw/ebsw.md b/lib/cycles/ebsw/ebsw.md index f2859512..65bead80 100644 --- a/lib/cycles/ebsw/ebsw.md +++ b/lib/cycles/ebsw/ebsw.md @@ -7,14 +7,14 @@ | **Parameters** | `hpLength` (default 40), `ssfLength` (default 10) | | **Outputs** | Single series (Ebsw) | | **Output range** | Varies (see docs) | -| **Warmup** | 1 bar | +| **Warmup** | `Math.Max(hpLength, ssfLength) + 3` bars (default 43) | ### TL;DR - EBSW is a refined cycle oscillator that combines a high-pass filter (trend removal), a Super-Smoother filter (noise removal), and Automatic Gain Co... - Parameterized by `hplength` (default 40), `ssflength` (default 10). - Output range: Varies (see docs). -- Requires 1 bar of warmup before first valid output (IsHot = true). +- Requires `Math.Max(hpLength, ssfLength) + 3` bars (default 43) of warmup before first valid output (IsHot = true). - Validated against TA-Lib, Skender, and Tulip reference implementations where available. EBSW is a refined cycle oscillator that combines a high-pass filter (trend removal), a Super-Smoother filter (noise removal), and Automatic Gain Control to produce a normalized $[-1, +1]$ output representing the current position within the dominant market cycle. Developed by John Ehlers as an improvement over the original Hilbert Transform SineWave, it provides cleaner turning point detection without requiring complex phase extraction mathematics. diff --git a/lib/cycles/homod/homod.md b/lib/cycles/homod/homod.md index 7366c1cb..40800f5d 100644 --- a/lib/cycles/homod/homod.md +++ b/lib/cycles/homod/homod.md @@ -7,14 +7,14 @@ | **Parameters** | `minPeriod` (default 6.0), `maxPeriod` (default 50.0) | | **Outputs** | Single series (Homod) | | **Output range** | Varies (see docs) | -| **Warmup** | 1 bar | +| **Warmup** | `maxPeriod * 2` bars (default 100) | ### TL;DR - HOMOD estimates the dominant cycle period of a market using homodyne mixing, a technique from radio engineering where a signal is multiplied by a d... - Parameterized by `minperiod` (default 6.0), `maxperiod` (default 50.0). - Output range: Varies (see docs). -- Requires 1 bar of warmup before first valid output (IsHot = true). +- Requires `maxPeriod * 2` bars (default 100) of warmup before first valid output (IsHot = true). - Validated against TA-Lib, Skender, and Tulip reference implementations where available. HOMOD estimates the dominant cycle period of a market using homodyne mixing, a technique from radio engineering where a signal is multiplied by a delayed copy of itself to expose the angular phase change between samples. The output is a continuously varying period measurement (in bars) that tracks the market's instantaneous cycle length, enabling adaptive indicator tuning. Developed by John Ehlers, it offers better noise rejection and stability than the raw Hilbert Transform period estimator.