Python API Reference¶
All functions accept np.ndarray and pd.Series and return the same
type. The min_periods parameter follows pandas semantics: positions with
fewer valid observations than min_periods are set to nan.
High-level functions¶
- robustrolling.rolling_max(x, window_size: int, min_periods: int | None = None)[source]¶
Compute the rolling maximum over a sliding window.
- Parameters:
x (array-like) – Input sequence. Accepts
np.ndarrayandpd.Series.window_size (int) – Number of observations in the sliding window.
min_periods (int, optional) – Minimum number of non-NaN observations required to return a result. Defaults to
window_size(pandas-compatible semantics).
- Returns:
numpy.ndarray or pandas.Series – Rolling maximum values. Positions with fewer than
min_periodsvalid observations arenan.
Examples
>>> import numpy as np >>> import robustrolling as rr >>> x = np.array([1.0, 3.0, 2.0, 5.0, 4.0]) >>> rr.rolling_max(x, 3) array([nan, nan, 3., 5., 5.])
- robustrolling.rolling_min(x, window_size: int, min_periods: int | None = None)[source]¶
Compute the rolling minimum over a sliding window.
- Parameters:
x (array-like) – Input sequence. Accepts
np.ndarrayandpd.Series.window_size (int) – Number of observations in the sliding window.
min_periods (int, optional) – Minimum number of non-NaN observations required to return a result. Defaults to
window_size(pandas-compatible semantics).
- Returns:
numpy.ndarray or pandas.Series – Rolling minimum values. Positions with fewer than
min_periodsvalid observations arenan.
Examples
>>> import numpy as np >>> import robustrolling as rr >>> x = np.array([1.0, 3.0, 2.0, 5.0, 4.0]) >>> rr.rolling_min(x, 3) array([nan, nan, 1., 2., 2.])
- robustrolling.rolling_variance(x, window_size: int, min_periods: int | None = None, method: str = 'stable')[source]¶
Compute the rolling sample variance (ddof=1) over a sliding window.
- Parameters:
x (array-like) – Input sequence. Accepts
np.ndarrayandpd.Series.window_size (int) – Number of observations in the sliding window.
min_periods (int, optional) – Minimum number of non-NaN observations required to return a result. Defaults to
window_size(pandas-compatible semantics).method ({“stable”, “fast”}, optional) –
"stable"uses the Welford online algorithm (numerically stable, default)."fast"uses a prefix-sum approach (faster for large arrays, but susceptible to catastrophic cancellation when values are large and variance is small).
- Returns:
numpy.ndarray or pandas.Series – Rolling sample variance. Returns
nanwhen fewer thanmin_periodsvalid observations are present, or when fewer than two observations are available (variance undefined).
Examples
>>> import numpy as np >>> import robustrolling as rr >>> x = np.array([1.0, 2.0, 3.0, 4.0, 5.0]) >>> rr.rolling_variance(x, 3) array([nan, nan, 1., 1., 1.])
- robustrolling.rolling_median(x, window_size: int, min_periods: int | None = None)[source]¶
Compute the rolling median over a sliding window.
Uses a
std::multisetwith a tracked median iterator. Time complexity: O(log n) per element.- Parameters:
x (array-like) – Input sequence. Accepts
np.ndarrayandpd.Series.window_size (int) – Number of observations in the sliding window.
min_periods (int, optional) – Minimum number of non-NaN observations required to return a result. Defaults to
window_size(pandas-compatible semantics).
- Returns:
numpy.ndarray or pandas.Series – Rolling median values. Positions with fewer than
min_periodsvalid observations arenan.
Examples
>>> import numpy as np >>> import robustrolling as rr >>> x = np.array([1.0, 3.0, 2.0, 5.0, 4.0]) >>> rr.rolling_median(x, 3) array([nan, nan, 2., 3., 4.])
- robustrolling.rolling_mean(x, window_size: int, min_periods: int | None = None, assume_finite: bool = False)[source]¶
Compute the rolling arithmetic mean over a sliding window.
- Parameters:
x (array-like) – Input sequence. Accepts
np.ndarrayandpd.Series.window_size (int) – Number of observations in the sliding window.
min_periods (int, optional) – Minimum number of non-NaN observations required to return a result. Defaults to
window_size(pandas-compatible semantics).assume_finite (bool, optional) – If
True, assumes the input contains noNaNvalues and uses a faster single-pass prefix-sum path with SIMD acceleration. PassingTruewhen the input does containNaNproduces incorrect results. Defaults toFalse.
- Returns:
numpy.ndarray or pandas.Series – Rolling mean values. Positions with fewer than
min_periodsvalid observations arenan.
Examples
>>> import numpy as np >>> import robustrolling as rr >>> x = np.array([1.0, 2.0, 3.0, 4.0, 5.0]) >>> rr.rolling_mean(x, 3) array([nan, nan, 2., 3., 4.])
- robustrolling.rolling_skewness(x, window_size: int, min_periods: int | None = None, method: str = 'stable')[source]¶
Compute the rolling adjusted Fisher-Pearson skewness over a sliding window.
- Parameters:
x (array-like) – Input sequence. Accepts
np.ndarrayandpd.Series.window_size (int) – Number of observations in the sliding window.
min_periods (int, optional) – Minimum number of non-NaN observations required to return a result. Defaults to
window_size(pandas-compatible semantics).method ({“stable”, “fast”}, optional) –
"stable"uses Terriberry’s online algorithm (numerically stable, default)."fast"uses a prefix-sum approach (faster for large arrays, but susceptible to catastrophic cancellation).
- Returns:
numpy.ndarray or pandas.Series – Rolling skewness values. Returns
nanwhen fewer thanmin_periodsvalid observations are present, or when fewer than three observations are available.
Examples
>>> import numpy as np >>> import robustrolling as rr >>> x = np.array([1.0, 2.0, 3.0, 4.0, 5.0]) >>> rr.rolling_skewness(x, 3) array([nan, nan, 0., 0., 0.])
- robustrolling.rolling_kurtosis(x, window_size: int, min_periods: int | None = None, method: str = 'stable')[source]¶
Compute the rolling excess kurtosis (Fisher definition) over a sliding window.
Returns excess kurtosis (normal distribution = 0). Requires at least 4 valid observations per window.
- Parameters:
x (array-like) – Input sequence. Accepts
np.ndarrayandpd.Series.window_size (int) – Number of observations in the sliding window.
min_periods (int, optional) – Minimum number of non-NaN observations required to return a result. Defaults to
window_size(pandas-compatible semantics).method ({“stable”, “fast”}, optional) –
"stable"uses Terriberry’s online algorithm (numerically stable, default)."fast"uses a prefix-sum approach (faster for large arrays, but susceptible to catastrophic cancellation).
- Returns:
numpy.ndarray or pandas.Series – Rolling excess kurtosis values. Returns
nanwhen fewer thanmin_periodsvalid observations are present, or when fewer than four observations are available.
Examples
>>> import numpy as np >>> import robustrolling as rr >>> x = np.array([1.0, 2.0, 3.0, 4.0, 5.0]) >>> rr.rolling_kurtosis(x, 4) array([nan, nan, nan, -1.2, -1.2])
- robustrolling.rolling_cov(x, y, window_size: int, min_periods: int | None = None)[source]¶
Compute the rolling sample covariance (ddof=1) over a sliding window.
Uses the 2D Welford online algorithm for O(1) updates.
- Parameters:
x (array-like) – First input sequence. Accepts
np.ndarrayandpd.Series.y (array-like) – Second input sequence, same length as
x.window_size (int) – Number of observations in the sliding window.
min_periods (int, optional) – Minimum number of valid (non-NaN) pairs required to return a result. Defaults to
window_size(pandas-compatible semantics).
- Returns:
numpy.ndarray or pandas.Series – Rolling sample covariance values. Positions with fewer than
min_periodsvalid pairs arenan.
Examples
>>> import numpy as np >>> import robustrolling as rr >>> x = np.array([1.0, 2.0, 3.0, 4.0, 5.0]) >>> y = np.array([2.0, 4.0, 6.0, 8.0, 10.0]) >>> rr.rolling_cov(x, y, 3) array([nan, nan, 2., 2., 2.])
- robustrolling.rolling_cor(x, y, window_size: int, min_periods: int | None = None)[source]¶
Compute the rolling Pearson correlation coefficient over a sliding window.
Uses the 2D Welford online algorithm for O(1) updates.
- Parameters:
x (array-like) – First input sequence. Accepts
np.ndarrayandpd.Series.y (array-like) – Second input sequence, same length as
x.window_size (int) – Number of observations in the sliding window.
min_periods (int, optional) – Minimum number of valid (non-NaN) pairs required to return a result. Defaults to
window_size(pandas-compatible semantics).
- Returns:
numpy.ndarray or pandas.Series – Rolling Pearson correlation values in [-1, 1]. Positions with fewer than
min_periodsvalid pairs arenan.
Examples
>>> import numpy as np >>> import robustrolling as rr >>> x = np.array([1.0, 2.0, 3.0, 4.0, 5.0]) >>> y = np.array([2.0, 4.0, 6.0, 8.0, 10.0]) >>> rr.rolling_cor(x, y, 3) array([nan, nan, 1., 1., 1.])
Low-level classes¶
Six C++ classes are exposed directly for streaming (one observation at a time) or for computing multiple statistics in a single pass without calling several high-level functions.
Class |
Algorithm |
Key methods |
|---|---|---|
Monotonic deque |
|
|
Monotonic deque |
|
|
|
|
|
Welford + ring buffer |
|
|
Terriberry 4th-moment |
|
|
2-D Welford |
|