feed.api.float.window.ewm module¶
ewm.py contains functions and classes for exponential weighted moving stream operations.
-
class
feed.api.float.window.ewm.EWM(com: float = None, span: float = None, halflife: float = None, alpha: float = None, min_periods: int = 0, adjust: bool = True, ignore_na: bool = False)[source]¶ Bases:
feed.core.base.StreamProvide exponential weighted (EW) functions.
Exactly one parameter: com, span, halflife, or alpha must be provided.
Parameters: - com (float, optional) – Specify decay in terms of center of mass, \(\alpha = 1 / (1 + com)\), for \(com \geq 0\).
- span (float, optional) – Specify decay in terms of span, \(\alpha = 2 / (span + 1)\), for \(span \geq 1\).
- halflife (float, str, timedelta, optional) – Specify decay in terms of half-life,
\(\alpha = 1 - \exp\left(-\ln(2) / halflife\right)\), for
\(halflife > 0\).
If
timesis specified, the time unit (str or timedelta) over which an observation decays to half its value. Only applicable tomean()and halflife value will not apply to the other functions. - alpha (float, optional) – Specify smoothing factor \(\alpha\) directly, \(0 < \alpha \leq 1\).
- min_periods (int, default 0) – Minimum number of observations in window required to have a value (otherwise result is NA).
- adjust (bool, default True) –
Divide by decaying adjustment factor in beginning periods to account for imbalance in relative weightings (viewing EWMA as a moving average). - When
adjust=True(default), the EW function is calculated using weights\(w_i = (1 - \alpha)^i\). For example, the EW moving average of the series [\(x_0, x_1, ..., x_t\)] would be:\[y_t = \frac{x_t + (1 - \alpha)x_{t-1} + (1 - \alpha)^2 x_{t-2} + ... + (1 - \alpha)^t x_0}{1 + (1 - \alpha) + (1 - \alpha)^2 + ... + (1 - \alpha)^t}\]- When
adjust=False, the exponentially weighted function is calculated recursively:
\[\begin{split}\begin{split} y_0 &= x_0\\ y_t &= (1 - \alpha) y_{t-1} + \alpha x_t, \end{split}\end{split}\] - When
- ignore_na (bool, default False) – Ignore missing values when calculating weights.
- When
ignore_na=False(default), weights are based on absolute positions. - Whenignore_na=True, weights are based on relative positions.
See also
References
[1] https://github.com/pandas-dev/pandas/blob/d9fff2792bf16178d4e450fe7384244e50635733/pandas/core/window/ewm.py#L65 -
forward() → Tuple[List[float], List[float]][source]¶ Generates the next value from the underlying data streams.
Returns: The next value in the stream. Return type: T
-
has_next() → bool[source]¶ Checks if there is another value.
Returns: If there is another value or not. Return type: bool
-
mean() → feed.core.base.Stream[float][float][source]¶ Computes the exponential weighted moving average.
Returns: The exponential weighted moving average stream based on the underlying stream of values. Return type: Stream[float]
-
class
feed.api.float.window.ewm.ExponentialWeightedMovingAverage(alpha: float, adjust: bool, ignore_na: bool, min_periods: int)[source]¶ Bases:
feed.core.base.StreamA stream operator that computes an exponential weighted moving average on a given float stream.
Parameters: - alpha (float) – The smoothing factor \(\alpha\) directly, \(0 < \alpha \leq 1\).
- adjust (bool) – Divide by decaying adjustment factor in beginning periods to account for imbalance in relative weightings (viewing EWMA as a moving average).
- ignore_na (bool) – Ignore missing values when calculating weights.
- min_periods (int) – Minimum number of observations in window required to have a value (otherwise result is NA).
References
[1] https://github.com/pandas-dev/pandas/blob/d9fff2792bf16178d4e450fe7384244e50635733/pandas/_libs/window/aggregations.pyx#L1801 -
forward() → float[source]¶ Generates the next value from the underlying data streams.
Returns: The next value in the stream. Return type: T
-
class
feed.api.float.window.ewm.ExponentialWeightedMovingCovariance(alpha: float, adjust: bool, ignore_na: bool, min_periods: int, bias: bool)[source]¶ Bases:
feed.core.base.StreamA stream operator that computes an exponential weighted moving average on a given float stream.
Parameters: - alpha (float) – The smoothing factor \(\alpha\) directly, \(0 < \alpha \leq 1\).
- adjust (bool) – Divide by decaying adjustment factor in beginning periods to account for imbalance in relative weightings (viewing EWMA as a moving average).
- ignore_na (bool) – Ignore missing values when calculating weights.
- min_periods (int) – Minimum number of observations in window required to have a value (otherwise result is NA).
- bias (bool) – Use a standard estimation bias correction
-
forward() → float[source]¶ Generates the next value from the underlying data streams.
Returns: The next value in the stream. Return type: T
-
feed.api.float.window.ewm.ewm(s: feed.core.base.Stream[float][float], com: float = None, span: float = None, halflife: float = None, alpha: float = None, min_periods: int = 0, adjust: bool = True, ignore_na: bool = False) → feed.core.base.Stream[typing.Tuple[typing.List[float], typing.List[float]]][Tuple[List[float], List[float]]][source]¶ Computes the weights and values in order to perform an exponential weighted moving operation.
Parameters: - s (Stream[float]) – A float stream.
- com (float, optional) – Specify decay in terms of center of mass, \(\alpha = 1 / (1 + com)\), for \(com \geq 0\).
- span (float, optional) – Specify decay in terms of span, \(\alpha = 2 / (span + 1)\), for \(span \geq 1\).
- halflife (float, optional) – Specify decay in terms of half-life, \(\alpha = 1 - \exp\left(-\ln(2) / halflife\right)\), for \(halflife > 0\).
- alpha (float, optional) – Specify smoothing factor \(\alpha\) directly, \(0 < \alpha \leq 1\).
- min_periods (int, default 0) – Minimum number of observations in window required to have a value (otherwise result is NA).
- adjust (bool, default True) – Divide by decaying adjustment factor in beginning periods to account for imbalance in relative weightings (viewing EWMA as a moving average).
- ignore_na (bool, default False) – Ignore missing values when calculating weights.
Returns: A stream of weights and values to be used for computation of exponential weighted moving operations.
Return type: Stream[Tuple[List[float], List[float]]]