1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//! Simple Moving Average — Polars Series interface.
//!
//! Wraps [`polars_ta_core::trend::sma`] for ergonomic use with Polars DataFrames.
//!
//! # Example
//!
//! ```rust,no_run
//! use polars::prelude::*;
//! use polars_ta::trend::sma_series;
//!
//! let close = Series::new("close".into(), &[1.0f64, 2.0, 3.0, 4.0, 5.0]);
//! let sma20 = sma_series(&close, 3).unwrap();
//! // Output length = 5 - (3 - 1) = 3
//! assert_eq!(sma20.len(), 3);
//! ```
use *;
use sma as sma_core;
/// Compute Simple Moving Average on a Polars `Series`.
///
/// # Arguments
///
/// - `series` — input price series (Float64); NaN values are propagated
/// - `period` — averaging window size (≥ 1)
///
/// # Returns
///
/// A `Series` of length `series.len() - (period - 1)`.
/// Returns an empty `Series` when `series.len() < period`.
///
/// # Errors
///
/// Returns `PolarsError` if the series cannot be cast to `Float64`.