Rolling and Expanding Windows
Install and import#
npm install fintech-algorithmsimport { rollingAndExpandingWindows } from "fintech-algorithms/foundations/financial-time-series-foundations/rolling-and-expanding-windows";Signature#
rollingAndExpandingWindows(input)Computes a fixed-length rolling mean of the series next to its expanding mean, so a window that forgets can be compared with one that never does.
Parameters#
| Name | Type | Notes |
|---|---|---|
input | D00Input | Reads values, a non-empty list of finite numbers, timestamps of the same length, and window, the number of observations each rolling average covers. |
Returns#
D00Output
rollingMean has one entry per observation and is null at every position with fewer than window observations behind it. expandingMean averages everything up to and including each position. window is echoed back.
Errors#
- When
valuesis absent, empty, or holds a non-finite number — throws RangeError - When
timestampsandvalueshave different lengths — throws RangeError - When the series holds fewer than two observations — throws RangeError
- When
windowis not an integer between one and the observation count — throws RangeError
Complexity: time O(n^2),
space O(n).
Worked example#
verified This is the worked example published in the article, replayed by the test suite on every run. The output cannot drift.
Input#
{
"timestamps": [
"2025-01-01T00:00:00Z",
"2025-01-02T00:00:00Z",
"2025-01-03T00:00:00Z",
"2025-01-04T00:00:00Z",
"2025-01-05T00:00:00Z",
"2025-01-06T00:00:00Z"
],
"values": [100, 102, 101, 104, 106, 105],
"lag": 1,
"window": 3,
"resampleSize": 2,
"period": 3,
"stationarityTolerance": 3,
"alpha": 0.4,
"splitIndex": 4
}Call#
rollingAndExpandingWindows(input)Returns#
object with 2 fields: rollingMean, expandingMean
{
"rollingMean": [null, null, 101, 102.33333333333333, 103.66666666666667, 105],
"expandingMean": [100, 101, 101, 101.75, 102.6, 103]
}Diagrams#
How it works#
This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.
References#
- Time Series Plot — NIST/SEMATECH e-Handbook
- Common Pitfalls and Recommended Practices — scikit-learn
- Historical-example decision