82d7479011
* fix(core): de-duplicate 3 indicators by correcting their definitions Behavioral audit found these computed identically to another indicator: - AverageDrawdown was the mean per-bar under-water fraction = PainIndex. Now the conventional average drawdown: mean of the maximum depths of the distinct drawdown episodes in the window. - IntradayIntensity was a cumulative line = the A/D Line (Adl); its normalized form is the Chaikin Money Flow (Cmf). Now the raw per-bar Bostian intensity volume*(2c-h-l)/(h-l), distinct from both. - AwesomeOscillatorHistogram was AO - SMA(AO, n) = AcceleratorOscillator. Now the AO momentum AO[t] - AO[t-lookback] (the histogram delta); the 3rd parameter is reinterpreted from sma_period to lookback (default 1). Constructor signatures are unchanged, so the bindings keep their API. Core unit tests rewritten with the new reference values; workspace tests + clippy green. Binding value-tests and deep-dive docs are updated separately. * fix(core): redefine AdOscillator as the A/D Oscillator (was a Wad duplicate) AdOscillator computed the cumulative volume-free Williams A/D line, identical to the Wad indicator. Redefine it as the Williams A/D *Oscillator*: the same line minus its 13-bar SMA, so it oscillates around zero (mean-reverting) while Wad stays the drifting cumulative line for divergence analysis. The canonical name AdOscillator is now accurate; the trait name() becomes "ADOSC". Constructor stays no-arg (internal 13-bar signal). Unit tests rewritten and cross-checked against Wad - SMA(Wad, 13). The native bindings' "WilliamsAD" alias is renamed to "ADOSC" separately. * fix(bindings): rename WilliamsAD alias to ADOSC and update value tests Follows the core de-duplication: the native bindings exposed the Williams A/D line as 'WilliamsAD', which is now the A/D Oscillator. Rename the Python / Node.js / WASM alias to 'ADOSC' (regenerated node index.js / index.d.ts) and update the binding value-tests for the four redefined indicators (AverageDrawdown episode mean, AwesomeOscillatorHistogram momentum warmup, the Wad-line reference test now uses ta.Wad()). Python suite and node suite both pass (pytest all green, node 584/584). * docs: record indicator de-duplication in README and CHANGELOG README volume family: 'Williams A/D' -> 'Williams A/D Oscillator', 'Intraday Intensity Index' -> 'Intraday Intensity'. CHANGELOG [Unreleased] documents the four redefinitions and the native WilliamsAD -> ADOSC rename as breaking. * test(core): cover Default impl and drop dead match arm Codecov flagged AdOscillator::default() (never exercised) and the unreachable _ => panic!() arm in the AwesomeOscillatorHistogram test. Exercise Default in the accessors test and rewrite the histogram check as an if-let, removing the dead arm.