F7: add NATR, StdDev, Ulcer Index and Historical Volatility

Completes the F7 family (Volatility) end to end:

- Rust core: natr.rs (ATR as a percentage of close), std_dev.rs
  (rolling population standard deviation), ulcer_index.rs (RMS of
  trailing-high drawdowns — downside-only risk), historical_volatility.rs
  (annualised sample stddev of log returns). Each with a full Indicator
  impl, runnable doctest and reference / constant-series / warmup /
  reset / batch==streaming tests.
- Python: PyNatr / PyStdDev / PyUlcerIndex / PyHistoricalVolatility
  PyO3 classes + module registration + .pyi stubs.
- Node: StdDevNode / UlcerIndexNode via the scalar macro, explicit
  NatrNode and HistoricalVolatilityNode; index.d.ts and index.js updated.
- WASM: WasmStdDev / WasmUlcerIndex / WasmHistoricalVolatility via the
  scalar macro, explicit WasmNatr.
- Wiki: Indicator-Natr/StdDev/UlcerIndex/HistoricalVolatility.md plus
  rows in Indicators-Overview.md and entries in Home.md.

cargo fmt + clippy (core/wickra/data/wasm/node) clean; 350 core tests,
25 data tests and 49 doctests green.
This commit is contained in:
kingchenc
2026-05-22 18:26:29 +02:00
parent 16c0639f0c
commit 6c58d3827c
17 changed files with 1943 additions and 6 deletions
+8
View File
@@ -17,6 +17,7 @@ mod dema;
mod donchian;
mod dpo;
mod ema;
mod historical_volatility;
mod hma;
mod kama;
mod keltner;
@@ -24,6 +25,7 @@ mod macd;
mod mass_index;
mod mfi;
mod mom;
mod natr;
mod obv;
mod pmo;
mod ppo;
@@ -32,6 +34,7 @@ mod roc;
mod rsi;
mod sma;
mod smma;
mod std_dev;
mod stoch_rsi;
mod stochastic;
mod t3;
@@ -39,6 +42,7 @@ mod tema;
mod trima;
mod trix;
mod tsi;
mod ulcer_index;
mod ultimate_oscillator;
mod vortex;
mod vwap;
@@ -60,6 +64,7 @@ pub use dema::Dema;
pub use donchian::{Donchian, DonchianOutput};
pub use dpo::Dpo;
pub use ema::Ema;
pub use historical_volatility::HistoricalVolatility;
pub use hma::Hma;
pub use kama::Kama;
pub use keltner::{Keltner, KeltnerOutput};
@@ -67,6 +72,7 @@ pub use macd::{MacdIndicator, MacdOutput};
pub use mass_index::MassIndex;
pub use mfi::Mfi;
pub use mom::Mom;
pub use natr::Natr;
pub use obv::Obv;
pub use pmo::Pmo;
pub use ppo::Ppo;
@@ -75,6 +81,7 @@ pub use roc::Roc;
pub use rsi::Rsi;
pub use sma::Sma;
pub use smma::Smma;
pub use std_dev::StdDev;
pub use stoch_rsi::StochRsi;
pub use stochastic::{Stochastic, StochasticOutput};
pub use t3::T3;
@@ -82,6 +89,7 @@ pub use tema::Tema;
pub use trima::Trima;
pub use trix::Trix;
pub use tsi::Tsi;
pub use ulcer_index::UlcerIndex;
pub use ultimate_oscillator::UltimateOscillator;
pub use vortex::{Vortex, VortexOutput};
pub use vwap::{RollingVwap, Vwap};