[INFO] fetching crate fin-primitives 2.12.0... [INFO] testing fin-primitives-2.12.0 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-1 [INFO] extracting crate fin-primitives 2.12.0 into /workspace/builds/worker-4-tc1/source [INFO] started tweaking crates.io crate fin-primitives 2.12.0 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate fin-primitives 2.12.0 [INFO] tweaked toml for crates.io crate fin-primitives 2.12.0 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate fin-primitives 2.12.0 on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate fin-primitives 2.12.0 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded rust_decimal_macros v1.40.0 [INFO] [stderr] Downloaded toml_datetime v1.0.1+spec-1.1.0 [INFO] [stderr] Downloaded toml_parser v1.0.10+spec-1.1.0 [INFO] [stderr] Downloaded toml_edit v0.25.5+spec-1.1.0 [INFO] [stderr] Downloaded winnow v1.0.0 [INFO] [stderr] Downloaded rust_decimal v1.40.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] af0047e4f33e1343627ac3cdfc6a5470eed3ac81f4a1021a693a1c545624a946 [INFO] running `Command { std: "docker" "start" "-a" "af0047e4f33e1343627ac3cdfc6a5470eed3ac81f4a1021a693a1c545624a946", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "af0047e4f33e1343627ac3cdfc6a5470eed3ac81f4a1021a693a1c545624a946", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "af0047e4f33e1343627ac3cdfc6a5470eed3ac81f4a1021a693a1c545624a946", kill_on_drop: false }` [INFO] [stdout] af0047e4f33e1343627ac3cdfc6a5470eed3ac81f4a1021a693a1c545624a946 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] a44e87d5c3559e476fe10a41ee25748d1f34aa8e8b2e6225a51e8d97cc7e8783 [INFO] running `Command { std: "docker" "start" "-a" "a44e87d5c3559e476fe10a41ee25748d1f34aa8e8b2e6225a51e8d97cc7e8783", kill_on_drop: false }` [INFO] [stderr] Compiling rust_decimal v1.40.0 [INFO] [stderr] Compiling arrayvec v0.7.6 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling rust_decimal_macros v1.40.0 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling fin-primitives v2.12.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `rust_decimal::Decimal` [INFO] [stdout] --> src/signals/indicators/body_volume_ratio.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use rust_decimal::Decimal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rust_decimal::Decimal` [INFO] [stdout] --> src/signals/indicators/wicks_vs_body_ratio.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use rust_decimal::Decimal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::VecDeque` [INFO] [stdout] --> src/signals/indicators/hl_midpoint_deviation.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::collections::VecDeque; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volume_acceleration_index.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_drawdown_from_high.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/high_low_symmetry.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/body_color_streak.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volatility_bias.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_session_bias.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_above_prev_low.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/low_minus_prev_close.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/high_minus_prev_close.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_minus_prev_high.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/net_body_accumulation.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/price_volume_ratio.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/open_range_position.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/weighted_close_roc.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volume_price_correlation.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_high_low_spread.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/range_position_oscillator.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/price_gap_momentum.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volume_momentum_oscillator.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/typical_price_roc.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/open_midpoint_bias.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volume_weighted_return.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/bar_polarity_streak.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 12.66s [INFO] running `Command { std: "docker" "inspect" "a44e87d5c3559e476fe10a41ee25748d1f34aa8e8b2e6225a51e8d97cc7e8783", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a44e87d5c3559e476fe10a41ee25748d1f34aa8e8b2e6225a51e8d97cc7e8783", kill_on_drop: false }` [INFO] [stdout] a44e87d5c3559e476fe10a41ee25748d1f34aa8e8b2e6225a51e8d97cc7e8783 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 247af142a82ac7696755300ef590db4fb4166a39f55d7e9a18b369cdbf98ce58 [INFO] running `Command { std: "docker" "start" "-a" "247af142a82ac7696755300ef590db4fb4166a39f55d7e9a18b369cdbf98ce58", kill_on_drop: false }` [INFO] [stderr] Compiling zerocopy v0.8.42 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling zerocopy-derive v0.8.42 [INFO] [stderr] Compiling ciborium-io v0.2.2 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling plotters-backend v0.3.7 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling tokio-macros v2.6.1 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling futures-io v0.3.32 [INFO] [stderr] Compiling cast v0.3.0 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling itertools v0.10.5 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling plotters-svg v0.3.7 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling rusty-fork v0.3.1 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling plotters v0.3.7 [INFO] [stderr] Compiling rayon v1.11.0 [INFO] [stderr] Compiling is-terminal v0.4.17 [INFO] [stderr] Compiling oorandom v11.1.5 [INFO] [stderr] Compiling anes v0.1.6 [INFO] [stderr] Compiling rand_xorshift v0.4.0 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling rust_decimal v1.40.0 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling tinytemplate v1.2.1 [INFO] [stderr] Compiling criterion-plot v0.5.0 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling fin-primitives v2.12.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `rust_decimal::Decimal` [INFO] [stdout] --> src/signals/indicators/body_volume_ratio.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use rust_decimal::Decimal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rust_decimal::Decimal` [INFO] [stdout] --> src/signals/indicators/wicks_vs_body_ratio.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use rust_decimal::Decimal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::VecDeque` [INFO] [stdout] --> src/signals/indicators/hl_midpoint_deviation.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::collections::VecDeque; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volume_acceleration_index.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_drawdown_from_high.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/high_low_symmetry.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/body_color_streak.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volatility_bias.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_session_bias.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_above_prev_low.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/low_minus_prev_close.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/high_minus_prev_close.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_minus_prev_high.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/net_body_accumulation.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/price_volume_ratio.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/open_range_position.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/weighted_close_roc.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volume_price_correlation.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_high_low_spread.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/range_position_oscillator.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/price_gap_momentum.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volume_momentum_oscillator.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/typical_price_roc.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/open_midpoint_bias.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volume_weighted_return.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/bar_polarity_streak.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling half v2.7.1 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling proptest v1.10.0 [INFO] [stderr] Compiling ciborium-ll v0.2.2 [INFO] [stderr] Compiling ciborium v0.2.2 [INFO] [stderr] Compiling criterion v0.5.1 [INFO] [stdout] warning: unused import: `rust_decimal_macros::dec` [INFO] [stdout] --> src/signals/indicators/cusum_price_change.rs:127:9 [INFO] [stdout] | [INFO] [stdout] 127 | use rust_decimal_macros::dec; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rust_decimal::Decimal` [INFO] [stdout] --> src/signals/indicators/body_volume_ratio.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use rust_decimal::Decimal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rust_decimal::Decimal` [INFO] [stdout] --> src/signals/indicators/wicks_vs_body_ratio.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use rust_decimal::Decimal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::VecDeque` [INFO] [stdout] --> src/signals/indicators/hl_midpoint_deviation.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use std::collections::VecDeque; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volume_acceleration_index.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_drawdown_from_high.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/high_low_symmetry.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/body_color_streak.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volatility_bias.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_session_bias.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_above_prev_low.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/low_minus_prev_close.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/high_minus_prev_close.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_minus_prev_high.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/net_body_accumulation.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/price_volume_ratio.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/open_range_position.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/weighted_close_roc.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volume_price_correlation.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/close_high_low_spread.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/range_position_oscillator.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/price_gap_momentum.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volume_momentum_oscillator.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/typical_price_roc.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/open_midpoint_bias.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/volume_weighted_return.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signal` [INFO] [stdout] --> src/signals/indicators/bar_polarity_streak.rs:8:32 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 32.95s [INFO] running `Command { std: "docker" "inspect" "247af142a82ac7696755300ef590db4fb4166a39f55d7e9a18b369cdbf98ce58", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "247af142a82ac7696755300ef590db4fb4166a39f55d7e9a18b369cdbf98ce58", kill_on_drop: false }` [INFO] [stdout] 247af142a82ac7696755300ef590db4fb4166a39f55d7e9a18b369cdbf98ce58 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] db574648d90818185254e1fb3912874f777288cf224b67d396c4ea8d5bb9a086 [INFO] running `Command { std: "docker" "start" "-a" "db574648d90818185254e1fb3912874f777288cf224b67d396c4ea8d5bb9a086", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `rust_decimal::Decimal` [INFO] [stderr] --> src/signals/indicators/body_volume_ratio.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use rust_decimal::Decimal; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `rust_decimal::Decimal` [INFO] [stderr] --> src/signals/indicators/wicks_vs_body_ratio.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use rust_decimal::Decimal; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::VecDeque` [INFO] [stderr] --> src/signals/indicators/hl_midpoint_deviation.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::collections::VecDeque; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/volume_acceleration_index.rs:8:32 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/close_drawdown_from_high.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/high_low_symmetry.rs:8:32 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/body_color_streak.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/volatility_bias.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/close_session_bias.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/close_above_prev_low.rs:8:32 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/low_minus_prev_close.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/high_minus_prev_close.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/close_minus_prev_high.rs:8:32 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/net_body_accumulation.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/price_volume_ratio.rs:8:32 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/open_range_position.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/weighted_close_roc.rs:8:32 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/volume_price_correlation.rs:8:32 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/close_high_low_spread.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/range_position_oscillator.rs:8:32 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/price_gap_momentum.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/volume_momentum_oscillator.rs:8:32 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/typical_price_roc.rs:8:32 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/open_midpoint_bias.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/volume_weighted_return.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Signal` [INFO] [stderr] --> src/signals/indicators/bar_polarity_streak.rs:8:32 [INFO] [stderr] | [INFO] [stderr] 8 | use crate::signals::{BarInput, Signal, SignalValue}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `fin-primitives` (lib) generated 26 warnings (run `cargo fix --lib -p fin-primitives` to apply 3 suggestions) [INFO] [stderr] warning: unused import: `rust_decimal_macros::dec` [INFO] [stderr] --> src/signals/indicators/cusum_price_change.rs:127:9 [INFO] [stderr] | [INFO] [stderr] 127 | use rust_decimal_macros::dec; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `rust_decimal::Decimal` [INFO] [stderr] --> src/signals/indicators/body_volume_ratio.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use rust_decimal::Decimal; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `fin-primitives` (lib test) generated 27 warnings (25 duplicates) (run `cargo fix --lib -p fin-primitives --tests` to apply 2 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.15s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/fin_primitives-59d4d6758dfbd018) [INFO] [stdout] [INFO] [stdout] running 4359 tests [INFO] [stdout] test error::tests::test_is_period_error_false_for_other_errors ... ok [INFO] [stdout] test error::tests::test_invalid_input_error_message ... ok [INFO] [stdout] test error::tests::test_is_period_error_true_for_invalid_period ... ok [INFO] [stdout] test ohlcv::tests::test_avg_body_size_none_for_zero_n ... ok [INFO] [stdout] test ohlcv::tests::test_avg_body_size_flat ... ok [INFO] [stdout] test ohlcv::tests::test_avg_close_minus_open_bullish ... ok [INFO] [stdout] test ohlcv::tests::test_avg_close_minus_open_none_zero_n ... ok [INFO] [stdout] test ohlcv::tests::test_avg_gap_none_when_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_avg_gap_zero_when_no_jumps ... ok [INFO] [stdout] test ohlcv::tests::test_avg_wick_pct_none_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_avg_wick_pct_none_when_zero_range ... ok [INFO] [stdout] test ohlcv::tests::test_bar_at_index_out_of_bounds ... ok [INFO] [stdout] test ohlcv::tests::test_bar_at_index_valid ... ok [INFO] [stdout] test ohlcv::tests::test_bearish_bar_count_all_flat ... ok [INFO] [stdout] test ohlcv::tests::test_bearish_bar_count_none_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_body_pct_series_full_body ... ok [INFO] [stdout] test ohlcv::tests::test_body_pct_series_zero_range_returns_none ... ok [INFO] [stdout] test ohlcv::tests::test_bullish_candle_pct_none_for_zero_n ... ok [INFO] [stdout] test ohlcv::tests::test_bullish_candle_pct_all_bullish ... ok [INFO] [stdout] test ohlcv::tests::test_candle_color_changes_alternating ... ok [INFO] [stdout] test ohlcv::tests::test_candle_color_changes_no_changes ... ok [INFO] [stdout] test ohlcv::tests::test_close_above_open_streak_last_bearish_returns_zero ... ok [INFO] [stdout] test ohlcv::tests::test_close_above_open_streak_empty_series_returns_zero ... ok [INFO] [stdout] test ohlcv::tests::test_close_above_open_streak_three_bullish ... ok [INFO] [stdout] test ohlcv::tests::test_close_momentum_flat_zero ... ok [INFO] [stdout] test ohlcv::tests::test_close_to_open_ratio_bullish ... ok [INFO] [stdout] test ohlcv::tests::test_close_momentum_none_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_efficiency_ratio_none_when_not_enough_bars ... ok [INFO] [stdout] test ohlcv::tests::test_efficiency_ratio_trending ... ok [INFO] [stdout] test ohlcv::tests::test_gap_direction_series_detects_gap_up ... ok [INFO] [stdout] test ohlcv::tests::test_efficiency_ratio_zero_period_returns_none ... ok [INFO] [stdout] test ohlcv::tests::test_gap_direction_series_empty_for_single_bar ... ok [INFO] [stdout] test ohlcv::tests::test_close_to_open_ratio_none_zero_n ... ok [INFO] [stdout] test ohlcv::tests::test_high_volume_price_none_zero_n ... ok [INFO] [stdout] test ohlcv::tests::test_high_volume_price_returns_close_of_max_vol_bar ... ok [INFO] [stdout] test ohlcv::tests::test_hl_midpoint_none_when_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_hl_midpoint_flat ... ok [INFO] [stdout] test ohlcv::tests::test_intraday_return_pct_empty ... ok [INFO] [stdout] test ohlcv::tests::test_intraday_return_pct_positive ... ok [INFO] [stdout] test ohlcv::tests::test_gap_direction_series_flat_on_equal_prices ... ok [INFO] [stdout] test ohlcv::tests::test_largest_gap_pct_no_gap ... ok [INFO] [stdout] test ohlcv::tests::test_max_drawdown_pct_declining_series ... ok [INFO] [stdout] test ohlcv::tests::test_largest_gap_pct_none_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_max_drawdown_pct_flat_returns_zero ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_aggregator_completes_bar_on_boundary ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_aggregator_flush_returns_partial ... ok [INFO] [stdout] test ohlcv::tests::test_max_drawdown_pct_single_bar_returns_none ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_aggregator_gap_fills_empty_buckets ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_aggregator_ignores_different_symbol ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_aggregator_symbol_getter ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_aggregator_new_invalid_timeframe_fails ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_bar_return_positive ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_bar_return_negative ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_aggregator_bar_count ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_body_size_bearish ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_duration_nanos_same_timestamps ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_from_tick ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_gap_pct_upward_gap ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_gap_pct_no_gap ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_bearish ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_gap_down_from_prev ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_doji_flat_range ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_gap_pct_downward_gap ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_long_candle_true ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_marubozu_false_with_shadows ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_duration_nanos ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_bullish_false ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_marubozu_full_body ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_gap_up_from_prev ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_outside_bar_false_for_inside ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_bullish_true ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_outside_bar_false_partial ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_doji_small_body ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_hammer ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_lower_shadow ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_no_gap_down ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_outside_bar_true ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_spinning_top_false_large_body ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_spinning_top_true ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_to_bar_input_fields_match ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_typical_price ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_shooting_star ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_midpoint ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_validate_high_less_than_close_fails ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_long_candle_false ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_no_gap_up ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_body_size_bullish ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_partial_eq ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_is_long_candle_flat ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_validate_low_greater_than_open_fails ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_validate_ok ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_upper_shadow ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_weighted_close_equals_hlcc4 ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_range ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_above_ema_false_when_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_validate_high_less_than_open_fails ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_above_ema_rising_close ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_average_volume_empty_returns_none ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_average_range ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_weighted_close_value ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_bar_serde_roundtrip ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_avg_volume_none_when_n_zero ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_avg_volume_none_when_empty ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_bearish_engulfing_count_zero_when_short ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_avg_volume_partial_window ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_bearish_engulfing_count_detects_pattern ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_bars_slice ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_below_sma_zero_when_all_above ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_avg_volume_correct ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_bullish_engulfing_count_detects_pattern ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_bullish_engulfing_count_zero_when_short ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_close_location_value_close_at_high ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_average_volume_all_same ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_consecutive_downs_counts_bearish_tail ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_consecutive_ups_all_bullish ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_close_location_value_close_at_midpoint ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_closes ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_close_location_value_none_when_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_consecutive_ups_broken_by_bearish ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_count_bullish ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_count_bullish_exceeds_len ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_count_bearish ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_consecutive_ups_empty ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_extend_stops_on_invalid_bar ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_extend_valid ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_extend_from_series ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_highs ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_into_iterator ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_is_empty ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_from_bars_empty ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_iter ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_last_n_closes_fewer_than_n ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_from_bars_valid ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_last_n_closes_returns_n ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_lowest_low ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_lows ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_mean_close_empty_returns_none ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_highest_high ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_max_high_empty ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_mean_close_equal_prices ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_max_high_min_low ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_percentile_rank_below_all ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_median_close_empty ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_percentile_rank_empty ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_push_invalid_fails ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_range_expansion_none_when_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_median_close_odd_count ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_n_bars_ago_out_of_bounds ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_retain_keeps_all ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_slice ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_n_bars_ago_returns_correct_bar ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_retain_removes_gap_fills ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_opens ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_mean_close_windowed ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_percentile_rank_above_all ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_price_range_correct ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_price_range_none_when_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_push_valid ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_median_close_even_count ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_range_expansion_constant_returns_one ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_slice_out_of_bounds ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_std_dev_constant_prices_is_zero ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_sortino_ratio_insufficient_data ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_std_dev_less_than_two_bars_returns_none ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_sum_volume_empty ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_sum_volume_multiple_bars ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_trend_strength_none_when_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_trend_strength_pure_trend_is_one ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_truncate_keeps_last_n ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_truncate_noop_when_n_ge_len ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_truncate_to_zero ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_volume_spike_detects_spike ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_volume_spike_false_for_normal_volume ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_typical_price_mean_single_bar ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_vwap_constant_price ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_vwap_empty_returns_none ... ok [INFO] [stdout] test ohlcv::tests::test_price_above_ma_pct_all_above ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_window_larger_than_len ... ok [INFO] [stdout] test ohlcv::tests::test_price_efficiency_none_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_window_returns_last_n ... ok [INFO] [stdout] test ohlcv::tests::test_price_efficiency_trending ... ok [INFO] [stdout] test ohlcv::tests::test_rolling_close_std_constant_prices_is_zero ... ok [INFO] [stdout] test ohlcv::tests::test_ohlcv_series_vwap_zero_volume_returns_none ... ok [INFO] [stdout] test ohlcv::tests::test_rolling_close_std_returns_none_for_fewer_than_two ... ok [INFO] [stdout] test ohlcv::tests::test_swing_high_count_detects_peak ... ok [INFO] [stdout] test ohlcv::tests::test_rolling_close_std_varying_prices_positive ... ok [INFO] [stdout] test ohlcv::tests::test_swing_high_count_flat_no_highs ... ok [INFO] [stdout] test ohlcv::tests::test_price_above_ma_pct_insufficient_bars ... ok [INFO] [stdout] test ohlcv::tests::test_timeframe_minutes_to_nanos ... ok [INFO] [stdout] test ohlcv::tests::test_timeframe_bucket_start ... ok [INFO] [stdout] test ohlcv::tests::test_swing_high_count_none_when_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_trend_continuation_pct_none_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_timeframe_weeks_to_nanos ... ok [INFO] [stdout] test ohlcv::tests::test_true_range_series_none_when_insufficient ... ok [INFO] [stdout] test ohlcv::tests::test_timeframe_seconds_to_nanos ... ok [INFO] [stdout] test ohlcv::tests::test_true_range_series_flat ... ok [INFO] [stdout] test ohlcv::tests::test_volume_trend_rising ... ok [INFO] [stdout] test orderbook::tests::test_apply_delta_inverted_spread_rolled_back_book_state ... ok [INFO] [stdout] test orderbook::tests::test_apply_delta_inverted_spread_rolls_back_sequence ... ok [INFO] [stdout] test ohlcv::tests::test_timeframe_zero_seconds_fails ... ok [INFO] [stdout] test orderbook::tests::test_apply_delta_rejects_inverted_spread ... ok [INFO] [stdout] test ohlcv::tests::test_typical_price_series_values ... ok [INFO] [stdout] test ohlcv::tests::test_up_volume_ratio_flat_bars ... ok [INFO] [stdout] test ohlcv::tests::test_volume_trend_none_insufficient ... ok [INFO] [stdout] test orderbook::tests::test_best_bid_after_many_inserts_and_removes ... ok [INFO] [stdout] test orderbook::tests::test_best_ask_after_many_inserts_and_removes ... ok [INFO] [stdout] test orderbook::tests::test_crossed_book_ask_at_bid_price_rejected ... ok [INFO] [stdout] test orderbook::tests::test_empty_book_best_bid_returns_none ... ok [INFO] [stdout] test ohlcv::tests::test_typical_price_series_empty_series_returns_empty ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_apply_delta_updates_bid ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_ask_depth_empty_book ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_ask_depth_returns_top_n_ascending ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_best_ask_min_price ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_best_bid_max_price ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_bid_ask_ratio_empty_returns_none ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_bid_ask_ratio_bid_heavy ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_bid_ask_ratio_equal_volumes ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_bid_depth_fewer_than_n ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_bid_count_ask_count ... ok [INFO] [stdout] test orderbook::tests::test_empty_book_best_ask_returns_none ... ok [INFO] [stdout] test orderbook::tests::test_empty_book_spread_returns_none ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_apply_delta_updates_ask ... ok [INFO] [stdout] test orderbook::tests::test_empty_book_mid_price_returns_none ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_clear_removes_all_levels ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_depth_at_existing_bid_level ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_clear_allows_fresh_deltas ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_has_price_absent ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_depth_at_absent_level_returns_none ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_has_price_ask_present ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_bid_depth_returns_top_n_descending ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_has_price_false_after_remove ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_imbalance_balanced ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_imbalance_bid_heavy ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_has_price_bid_present ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_level_count_asks ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_imbalance_empty_returns_none ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_imbalance_ask_heavy ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_level_count_bids ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_mid_price ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_price_impact_buy_single_level ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_price_impact_buy_spans_two_levels ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_price_impact_insufficient_depth_returns_none ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_price_impact_zero_qty_returns_none ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_remove_all_bids_clears_bid_side ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_remove_all_bids_leaves_asks_intact ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_remove_level_delta ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_sequence_mismatch_returns_error ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_snapshot_returns_top_n_both_sides ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_remove_all_asks_clears_ask_side ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_snapshot_empty_book ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_sequence_advances_correctly ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_spread_none_when_empty ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_spread_positive ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_top_asks_order ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_top_bids_order ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_total_ask_volume ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_total_bid_volume ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_total_bid_volume_empty ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_total_levels_empty_book ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_total_levels_sums_both_sides ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_vwap_insufficient_liquidity ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_vwap_multi_level ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_vwap_single_level ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_vwap_zero_qty_returns_zero ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_weighted_mid_bid_heavy ... ok [INFO] [stdout] test position::tests::test_all_flat_false_after_open_position ... ok [INFO] [stdout] test position::tests::test_all_flat_initially ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_weighted_mid_equal_qty ... ok [INFO] [stdout] test orderbook::tests::test_orderbook_weighted_mid_empty_returns_none ... ok [INFO] [stdout] test position::tests::test_all_flat_true_after_close_position ... ok [INFO] [stdout] test position::tests::test_allocation_pct_flat_position_returns_none ... ok [INFO] [stdout] test position::tests::test_allocation_pct_single_position ... ok [INFO] [stdout] test position::tests::test_avg_realized_pnl_per_symbol_none_when_empty ... ok [INFO] [stdout] test position::tests::test_avg_realized_pnl_per_symbol_with_closed_trade ... ok [INFO] [stdout] test position::tests::test_concentration_pct_missing_price_returns_none ... ok [INFO] [stdout] test position::tests::test_net_exposure_no_prices_returns_none ... ok [INFO] [stdout] test position::tests::test_concentration_pct_two_equal_positions ... ok [INFO] [stdout] test position::tests::test_position_apply_fill_reduces_position ... ok [INFO] [stdout] test position::tests::test_net_exposure_long_only ... ok [INFO] [stdout] test position::tests::test_concentration_pct_single_position ... ok [INFO] [stdout] test position::tests::test_position_avg_entry_price_after_partial_close ... ok [INFO] [stdout] test position::tests::test_position_avg_entry_price_flat_returns_none ... ok [INFO] [stdout] test position::tests::test_position_apply_fill_long ... ok [INFO] [stdout] test position::tests::test_position_avg_entry_price_long ... ok [INFO] [stdout] test position::tests::test_position_avg_cost_weighted_after_two_buys ... ok [INFO] [stdout] test position::tests::test_position_checked_unrealized_pnl_flat_position ... ok [INFO] [stdout] test position::tests::test_position_checked_unrealized_pnl_matches ... ok [INFO] [stdout] test position::tests::test_position_commission_reduces_realized_pnl ... ok [INFO] [stdout] test position::tests::test_position_direction_flat ... ok [INFO] [stdout] test position::tests::test_position_direction_long ... ok [INFO] [stdout] test position::tests::test_position_is_flat_after_close ... ok [INFO] [stdout] test position::tests::test_position_is_short ... ok [INFO] [stdout] test position::tests::test_position_is_profitable_true ... ok [INFO] [stdout] test position::tests::test_position_is_flat_after_full_close ... ok [INFO] [stdout] test position::tests::test_position_ledger_apply_fill_updates_cash ... ok [INFO] [stdout] test position::tests::test_position_is_flat_initially ... ok [INFO] [stdout] test position::tests::test_position_ledger_delta_neutral_long_short_balanced ... ok [INFO] [stdout] test position::tests::test_position_ledger_delta_neutral_no_positions ... ok [INFO] [stdout] test position::tests::test_position_ledger_delta_neutral_one_sided_not_neutral ... ok [INFO] [stdout] test position::tests::test_position_ledger_deposit_increases_cash ... ok [INFO] [stdout] test position::tests::test_position_is_long ... ok [INFO] [stdout] test position::tests::test_position_ledger_equity_calculation ... ok [INFO] [stdout] test position::tests::test_position_is_profitable_false_when_at_loss ... ok [INFO] [stdout] test position::tests::test_position_direction_short ... ok [INFO] [stdout] test position::tests::test_position_ledger_flat_positions_empty_when_all_open ... ok [INFO] [stdout] test position::tests::test_position_ledger_has_position_true_after_fill ... ok [INFO] [stdout] test position::tests::test_position_ledger_has_position_false_for_unknown ... ok [INFO] [stdout] test position::tests::test_position_ledger_flat_positions ... ok [INFO] [stdout] test position::tests::test_position_ledger_has_position_true_even_when_flat ... ok [INFO] [stdout] test position::tests::test_position_ledger_net_liquidation_missing_price ... ok [INFO] [stdout] test position::tests::test_position_ledger_insufficient_funds ... ok [INFO] [stdout] test position::tests::test_position_ledger_net_liquidation_value ... ok [INFO] [stdout] test position::tests::test_position_ledger_long_positions ... ok [INFO] [stdout] test position::tests::test_position_ledger_open_positions_excludes_flat ... ok [INFO] [stdout] test position::tests::test_position_ledger_open_symbols_empty_when_all_flat ... ok [INFO] [stdout] test position::tests::test_position_ledger_open_count_tracks_positions ... ok [INFO] [stdout] test position::tests::test_position_ledger_open_symbols_excludes_flat ... ok [INFO] [stdout] test position::tests::test_position_ledger_open_symbols_returns_non_flat ... ok [INFO] [stdout] test position::tests::test_position_ledger_open_count_zero_when_empty ... ok [INFO] [stdout] test position::tests::test_position_ledger_open_positions_empty_when_all_flat ... ok [INFO] [stdout] test position::tests::test_position_ledger_pnl_by_symbol ... ok [INFO] [stdout] test position::tests::test_position_ledger_pnl_by_symbol_missing_price ... ok [INFO] [stdout] test position::tests::test_position_ledger_position_count_includes_flat ... ok [INFO] [stdout] test position::tests::test_position_ledger_position_count_zero_on_empty ... ok [INFO] [stdout] test position::tests::test_position_ledger_positions_iterator ... ok [INFO] [stdout] test position::tests::test_position_ledger_realized_pnl_after_close ... ok [INFO] [stdout] test position::tests::test_position_ledger_realized_pnl_unknown_symbol_returns_none ... ok [INFO] [stdout] test position::tests::test_position_ledger_sell_increases_cash ... ok [INFO] [stdout] test position::tests::test_position_ledger_realized_pnl_zero_before_close ... ok [INFO] [stdout] test position::tests::test_position_ledger_short_positions_empty_for_long_only ... ok [INFO] [stdout] test position::tests::test_position_ledger_symbols_sorted_empty ... ok [INFO] [stdout] test position::tests::test_position_ledger_symbols_sorted_order ... ok [INFO] [stdout] test position::tests::test_position_ledger_total_long_exposure ... ok [INFO] [stdout] test position::tests::test_position_ledger_total_long_exposure_zero_when_flat ... ok [INFO] [stdout] test position::tests::test_position_ledger_total_market_value ... ok [INFO] [stdout] test position::tests::test_position_ledger_total_market_value_missing_price ... ok [INFO] [stdout] test position::tests::test_position_ledger_total_short_exposure_zero_when_no_shorts ... ok [INFO] [stdout] test position::tests::test_position_ledger_unrealized_pnl_total ... ok [INFO] [stdout] test position::tests::test_position_ledger_withdraw_decreases_cash ... ok [INFO] [stdout] test position::tests::test_position_ledger_withdraw_insufficient_fails ... ok [INFO] [stdout] test position::tests::test_position_market_value ... ok [INFO] [stdout] test position::tests::test_position_realized_pnl_on_close ... ok [INFO] [stdout] test position::tests::test_position_unrealized_pnl ... ok [INFO] [stdout] test position::tests::test_position_unrealized_pnl_pct_flat_returns_none ... ok [INFO] [stdout] test position::tests::test_position_unrealized_pnl_pct_long_gain ... ok [INFO] [stdout] test position::tests::test_position_unrealized_pnl_pct_loss ... ok [INFO] [stdout] test position::tests::test_positions_sorted_by_pnl_descending ... ok [INFO] [stdout] test position::tests::test_positions_sorted_by_pnl_empty_when_all_flat ... ok [INFO] [stdout] test position::tests::test_win_rate_none_when_empty ... ok [INFO] [stdout] test position::tests::test_win_rate_one_winner ... ok [INFO] [stdout] test risk::tests::test_avg_drawdown_pct_none_when_no_drawdown ... ok [INFO] [stdout] test risk::tests::test_avg_drawdown_pct_positive_when_drawdown ... ok [INFO] [stdout] test risk::tests::test_calmar_ratio_none_at_peak ... ok [INFO] [stdout] test risk::tests::test_calmar_ratio_none_when_no_drawdown ... ok [INFO] [stdout] test risk::tests::test_calmar_ratio_positive_after_drawdown ... ok [INFO] [stdout] test risk::tests::test_calmar_ratio_with_drawdown ... ok [INFO] [stdout] test risk::tests::test_consecutive_gain_updates_clears_on_reset ... ok [INFO] [stdout] test risk::tests::test_consecutive_gain_updates_resets_on_drop ... ok [INFO] [stdout] test risk::tests::test_consecutive_gain_updates_increments_on_rising_equity ... ok [INFO] [stdout] test risk::tests::test_consecutive_gain_updates_zero_initially ... ok [INFO] [stdout] test risk::tests::test_consecutive_gain_updates_resumes_after_drop ... ok [INFO] [stdout] test risk::tests::test_drawdown_monotonic_decline_full_loss ... ok [INFO] [stdout] test risk::tests::test_drawdown_flat_series_is_zero ... ok [INFO] [stdout] test risk::tests::test_drawdown_recovery ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_current_equity ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_display ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_drawdown_count_increases ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_in_drawdown_false_at_new_peak ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_drawdown_count_resets_on_peak ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_in_drawdown_false_at_peak ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_in_drawdown_true_below_peak ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_increases_below_peak ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_is_below_threshold_false ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_never_negative ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_is_below_threshold_true ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_peak_updates ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_recovery_factor ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_recovery_factor_no_drawdown ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_reset_clears_peak ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_reset_then_update ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_win_rate_all_up ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_win_rate_half ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_win_rate_none_when_empty ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_worst_drawdown_pct_accumulates ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_worst_resets_on_full_reset ... ok [INFO] [stdout] test risk::tests::test_equity_ratio_new_peak ... ok [INFO] [stdout] test risk::tests::test_drawdown_tracker_zero_at_peak ... ok [INFO] [stdout] test risk::tests::test_max_drawdown_rule_at_exact_threshold_no_breach ... ok [INFO] [stdout] test risk::tests::test_equity_ratio_in_drawdown ... ok [INFO] [stdout] test risk::tests::test_max_drawdown_rule_triggers_breach ... ok [INFO] [stdout] test risk::tests::test_max_loss_streak_tracks_longest_run ... ok [INFO] [stdout] test risk::tests::test_equity_ratio_at_peak_is_one ... ok [INFO] [stdout] test risk::tests::test_max_drawdown_rule_no_breach_within_limit ... ok [INFO] [stdout] test risk::tests::test_min_equity_rule_breach ... ok [INFO] [stdout] test risk::tests::test_min_equity_rule_no_breach ... ok [INFO] [stdout] test risk::tests::test_new_peak_count_increments ... ok [INFO] [stdout] test risk::tests::test_new_peak_count_resets ... ok [INFO] [stdout] test risk::tests::test_max_loss_streak_zero_when_no_drawdown ... ok [INFO] [stdout] test risk::tests::test_omega_ratio_no_downside_returns_none ... ok [INFO] [stdout] test risk::tests::test_omega_ratio_empty_returns_none ... ok [INFO] [stdout] test risk::tests::test_new_peak_count_zero_initially ... ok [INFO] [stdout] test risk::tests::test_omega_ratio_positive_threshold_zero ... ok [INFO] [stdout] test risk::tests::test_recovery_to_peak_pct_above_peak_is_zero ... ok [INFO] [stdout] test risk::tests::test_recovery_to_peak_pct_at_peak_is_zero ... ok [INFO] [stdout] test risk::tests::test_reset_clears_new_fields ... ok [INFO] [stdout] test risk::tests::test_recovery_to_peak_pct_with_drawdown ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_breach_count_accumulates ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_breach_count_resets ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_check_non_mutating ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_current_equity_accessor ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_check_no_breach ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_drawdown_pct_accessor ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_drawdown_duration_zero_at_peak ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_drawdown_duration_increments ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_equity_history_len ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_has_breaches_false ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_has_breaches_true ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_is_in_drawdown_false_above_peak ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_is_in_drawdown_false_at_peak ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_is_in_drawdown_true ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_max_drawdown_pct ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_no_breach_at_start ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_partial_breach ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_multiple_rules_all_must_pass ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_reset_clears_drawdown_state ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_returns_all_breaches ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_worst_drawdown_tracks_maximum ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_worst_drawdown_zero_at_start ... ok [INFO] [stdout] test risk::tests::test_risk_rule_name_returns_str ... ok [INFO] [stdout] test risk::tests::test_sharpe_ratio_basic ... ok [INFO] [stdout] test risk::tests::test_sharpe_ratio_none_when_vol_zero ... ok [INFO] [stdout] test risk::tests::test_skewness_none_below_3 ... ok [INFO] [stdout] test risk::tests::test_skewness_right_skewed_positive ... ok [INFO] [stdout] test risk::tests::test_risk_monitor_reset_restores_peak ... ok [INFO] [stdout] test risk::tests::test_time_underwater_pct_all_in_drawdown ... ok [INFO] [stdout] test risk::tests::test_tail_ratio_positive_skewed_series ... ok [INFO] [stdout] test risk::tests::test_time_underwater_pct_half_in_drawdown ... ok [INFO] [stdout] test risk::tests::test_time_underwater_pct_no_updates_returns_zero ... ok [INFO] [stdout] test signals::indicators::abs_return_mean::tests::test_arm_constant_moves ... ok [INFO] [stdout] test signals::indicators::abs_return_mean::tests::test_arm_flat_price_is_zero ... ok [INFO] [stdout] test signals::indicators::abs_return_mean::tests::test_arm_reset ... ok [INFO] [stdout] test signals::indicators::abs_return_mean::tests::test_arm_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::abs_return_mean::tests::test_arm_window_slides ... ok [INFO] [stdout] test signals::indicators::abs_return_mean::tests::test_arm_period_0_error ... ok [INFO] [stdout] test signals::indicators::abs_return_sum::tests::test_ars_alternating ... ok [INFO] [stdout] test risk::tests::test_skewness_symmetric_near_zero ... ok [INFO] [stdout] test risk::tests::test_tail_ratio_none_below_20_obs ... ok [INFO] [stdout] test signals::indicators::abs_return_sum::tests::test_ars_flat_zero ... ok [INFO] [stdout] test signals::indicators::acceleration_bands::tests::test_ab_constant_high_low_zero_spread ... ok [INFO] [stdout] test signals::indicators::acceleration_bands::tests::test_ab_period_0_error ... ok [INFO] [stdout] test signals::indicators::acceleration_bands::tests::test_ab_ready_after_period ... ok [INFO] [stdout] test signals::indicators::acceleration_bands::tests::test_ab_reset ... ok [INFO] [stdout] test signals::indicators::acceleration_bands::tests::test_ab_upper_above_lower ... ok [INFO] [stdout] test signals::indicators::adaptive_rsi::tests::test_arsi_invalid ... ok [INFO] [stdout] test signals::indicators::adaptive_rsi::tests::test_arsi_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::adaptive_rsi::tests::test_arsi_reset ... ok [INFO] [stdout] test signals::indicators::adaptive_rsi::tests::test_arsi_range_0_to_100 ... ok [INFO] [stdout] test signals::indicators::adaptive_supertrend::tests::test_ast_invalid_params ... ok [INFO] [stdout] test signals::indicators::adaptive_supertrend::tests::test_ast_ready_after_max_period ... ok [INFO] [stdout] test signals::indicators::adaptive_supertrend::tests::test_ast_reset ... ok [INFO] [stdout] test signals::indicators::adaptive_supertrend::tests::test_ast_unavailable_before_max_period ... ok [INFO] [stdout] test signals::indicators::adx::tests::test_adx_period_0_fails ... ok [INFO] [stdout] test signals::indicators::acceleration_bands::tests::test_ab_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::adx::tests::test_adx_reset ... ok [INFO] [stdout] test signals::indicators::adx::tests::test_adx_strong_trend_above_25 ... ok [INFO] [stdout] test signals::indicators::alligator::tests::test_alligator_period ... ok [INFO] [stdout] test signals::indicators::alligator::tests::test_alligator_reset ... ok [INFO] [stdout] test signals::indicators::adaptive_supertrend::tests::test_ast_long_regime_rising ... ok [INFO] [stdout] test signals::indicators::adx::tests::test_adx_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::alligator::tests::test_alligator_scalar_after_warmup ... ok [INFO] [stdout] test signals::indicators::alligator::tests::test_alligator_unavailable_before_jaw_seeded ... ok [INFO] [stdout] test signals::indicators::alma::tests::test_alma_invalid_period ... ok [INFO] [stdout] test signals::indicators::alma::tests::test_alma_flat_market_equals_price ... ok [INFO] [stdout] test signals::indicators::alligator::tests::test_alligator_all_lines_available_after_warmup ... ok [INFO] [stdout] test signals::indicators::alma::tests::test_alma_invalid_sigma ... ok [INFO] [stdout] test signals::indicators::alma::tests::test_alma_period_and_name ... ok [INFO] [stdout] test signals::indicators::alma::tests::test_alma_reset ... ok [INFO] [stdout] test signals::indicators::alma::tests::test_alma_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::amplitude_ratio::tests::test_ar_10_pct_range ... ok [INFO] [stdout] test signals::indicators::amplitude_ratio::tests::test_ar_reset ... ok [INFO] [stdout] test signals::indicators::amplitude_ratio::tests::test_ar_unavailable_first_bar ... ok [INFO] [stdout] test signals::indicators::amplitude_ratio::tests::test_ar_zero_range ... ok [INFO] [stdout] test signals::indicators::anchored_vwap::tests::test_avwap_accumulates ... ok [INFO] [stdout] test signals::indicators::anchored_vwap::tests::test_avwap_reset_reanchors ... ok [INFO] [stdout] test signals::indicators::anchored_vwap::tests::test_avwap_single_bar ... ok [INFO] [stdout] test signals::indicators::anchored_vwap::tests::test_avwap_skips_zero_volume_bars ... ok [INFO] [stdout] test signals::indicators::anchored_vwap::tests::test_avwap_unavailable_zero_volume ... ok [INFO] [stdout] test signals::indicators::apo::tests::test_apo_constant_prices_zero ... ok [INFO] [stdout] test signals::indicators::apo::tests::test_apo_fast_ge_slow_error ... ok [INFO] [stdout] test signals::indicators::apo::tests::test_apo_name ... ok [INFO] [stdout] test signals::indicators::apo::tests::test_apo_period_0_error ... ok [INFO] [stdout] test signals::indicators::apo::tests::test_apo_period_returns_slow_period ... ok [INFO] [stdout] test signals::indicators::apo::tests::test_apo_ready_after_slow_period ... ok [INFO] [stdout] test signals::indicators::apo::tests::test_apo_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::apo::tests::test_apo_rising_prices_positive ... ok [INFO] [stdout] test signals::indicators::apo::tests::test_apo_unavailable_before_slow_ready ... ok [INFO] [stdout] test signals::indicators::aroon::tests::test_aroon_name_accessor ... ok [INFO] [stdout] test signals::indicators::aroon::tests::test_aroon_period_accessor ... ok [INFO] [stdout] test signals::indicators::aroon::tests::test_aroon_period_zero_error ... ok [INFO] [stdout] test signals::indicators::aroon::tests::test_aroon_ready_after_period_plus_one ... ok [INFO] [stdout] test signals::indicators::aroon::tests::test_aroon_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::aroon::tests::test_aroon_unavailable_before_period_plus_one ... ok [INFO] [stdout] test signals::indicators::aroon::tests::test_aroon_up_returns_100_when_high_at_latest_bar ... ok [INFO] [stdout] test signals::indicators::aroon_oscillator::tests::test_aroon_osc_invalid_period ... ok [INFO] [stdout] test signals::indicators::aroon_oscillator::tests::test_aroon_osc_recent_high_bullish ... ok [INFO] [stdout] test signals::indicators::aroon_oscillator::tests::test_aroon_osc_reset ... ok [INFO] [stdout] test signals::indicators::aroon_oscillator::tests::test_aroon_osc_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::atr::tests::test_atr_period_0_fails ... ok [INFO] [stdout] test signals::indicators::atr::tests::test_atr_period_1_ready_after_two_bars ... ok [INFO] [stdout] test signals::indicators::atr::tests::test_atr_period_3_averages_true_ranges ... ok [INFO] [stdout] test signals::indicators::atr::tests::test_atr_unavailable_before_period_filled ... ok [INFO] [stdout] test signals::indicators::atr::tests::test_atr_unavailable_on_first_bar ... ok [INFO] [stdout] test signals::indicators::atr::tests::test_atr_uses_prev_close_for_gap ... ok [INFO] [stdout] test signals::indicators::atr_normalized_close::tests::test_anc_constant_price_near_zero ... ok [INFO] [stdout] test signals::indicators::atr_normalized_close::tests::test_anc_invalid_period ... ok [INFO] [stdout] test signals::indicators::atr_normalized_close::tests::test_anc_period_and_name ... ok [INFO] [stdout] test signals::indicators::atr_normalized_close::tests::test_anc_produces_value_after_warm_up ... ok [INFO] [stdout] test signals::indicators::atr_normalized_close::tests::test_anc_reset ... ok [INFO] [stdout] test signals::indicators::atr_normalized_close::tests::test_anc_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::atr_percent::tests::test_ap_flat_bars_low_atr ... ok [INFO] [stdout] test signals::indicators::atr_percent::tests::test_ap_invalid_period ... ok [INFO] [stdout] test signals::indicators::atr_percent::tests::test_ap_non_negative ... ok [INFO] [stdout] test signals::indicators::atr_percent::tests::test_ap_period_and_name ... ok [INFO] [stdout] test signals::indicators::atr_percent::tests::test_ap_reset ... ok [INFO] [stdout] test signals::indicators::atr_percent::tests::test_ap_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::atr_percentile::tests::test_atr_pct_highest_tr_is_100 ... ok [INFO] [stdout] test signals::indicators::atr_percentile::tests::test_atr_pct_invalid_period ... ok [INFO] [stdout] test signals::indicators::atr_percentile::tests::test_atr_pct_lowest_tr_is_0 ... ok [INFO] [stdout] test signals::indicators::atr_percentile::tests::test_atr_pct_range_0_to_100 ... ok [INFO] [stdout] test signals::indicators::atr_percentile::tests::test_atr_pct_reset ... ok [INFO] [stdout] test signals::indicators::atr_percentile::tests::test_atr_pct_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::atr_ratio::tests::test_ar_constant_range_is_one ... ok [INFO] [stdout] test signals::indicators::atr_ratio::tests::test_ar_high_volatility_above_one ... ok [INFO] [stdout] test signals::indicators::atr_ratio::tests::test_ar_period_0_error ... ok [INFO] [stdout] test signals::indicators::atr_ratio::tests::test_ar_reset ... ok [INFO] [stdout] test signals::indicators::atr_ratio::tests::test_ar_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::atr_stop::tests::test_atr_stop_flat_returns_multiplier ... ok [INFO] [stdout] test signals::indicators::atr_stop::tests::test_atr_stop_invalid ... ok [INFO] [stdout] test signals::indicators::atr_stop::tests::test_atr_stop_reset ... ok [INFO] [stdout] test signals::indicators::atr_stop::tests::test_atr_stop_stops_set ... ok [INFO] [stdout] test signals::indicators::atr_stop::tests::test_atr_stop_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::atrp::tests::test_atrp_constant_prices_low_atrp ... ok [INFO] [stdout] test signals::indicators::atrp::tests::test_atrp_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::atrp::tests::test_atrp_ready_after_warmup ... ok [INFO] [stdout] test signals::indicators::atrp::tests::test_atrp_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::atrp::tests::test_atrp_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::autocorrelation_1::tests::test_ac_alternating_negative ... ok [INFO] [stdout] test signals::indicators::autocorrelation_1::tests::test_ac_period_too_small ... ok [INFO] [stdout] test signals::indicators::autocorrelation_1::tests::test_ac_reset ... ok [INFO] [stdout] test signals::indicators::autocorrelation_1::tests::test_ac_trending_series_positive ... ok [INFO] [stdout] test signals::indicators::autocorrelation_1::tests::test_ac_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::average_bar_range::tests::test_abr_constant_range_known_value ... ok [INFO] [stdout] test signals::indicators::average_bar_range::tests::test_abr_invalid_period ... ok [INFO] [stdout] test signals::indicators::average_bar_range::tests::test_abr_non_negative ... ok [INFO] [stdout] test signals::indicators::average_bar_range::tests::test_abr_period_and_name ... ok [INFO] [stdout] test signals::indicators::average_bar_range::tests::test_abr_reset ... ok [INFO] [stdout] test signals::indicators::average_bar_range::tests::test_abr_rolling_window ... ok [INFO] [stdout] test signals::indicators::average_bar_range::tests::test_abr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::average_gain::tests::test_ag_all_up ... ok [INFO] [stdout] test signals::indicators::average_gain::tests::test_ag_no_gains ... ok [INFO] [stdout] test signals::indicators::average_gap::tests::test_ag_invalid_period ... ok [INFO] [stdout] test signals::indicators::average_gap::tests::test_ag_no_gap_gives_zero ... ok [INFO] [stdout] test signals::indicators::average_gap::tests::test_ag_non_negative ... ok [INFO] [stdout] test signals::indicators::average_gap::tests::test_ag_positive_gap ... ok [INFO] [stdout] test signals::indicators::average_gap::tests::test_ag_reset ... ok [INFO] [stdout] test signals::indicators::average_gap::tests::test_ag_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::average_loss::tests::test_al_all_down ... ok [INFO] [stdout] test signals::indicators::average_loss::tests::test_al_no_losses ... ok [INFO] [stdout] test signals::indicators::avg_true_range_pct::tests::test_atrpct_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::avg_true_range_pct::tests::test_atrpct_invalid_period ... ok [INFO] [stdout] test signals::indicators::avg_true_range_pct::tests::test_atrpct_positive ... ok [INFO] [stdout] test signals::indicators::avg_true_range_pct::tests::test_atrpct_ready_after_period ... ok [INFO] [stdout] test signals::indicators::avg_true_range_pct::tests::test_atrpct_reset ... ok [INFO] [stdout] test signals::indicators::avg_true_range_pct::tests::test_atrpct_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::awesome_oscillator::tests::test_ao_flat_market_zero ... ok [INFO] [stdout] test signals::indicators::awesome_oscillator::tests::test_ao_reset ... ok [INFO] [stdout] test signals::indicators::awesome_oscillator::tests::test_ao_unavailable_before_34_bars ... ok [INFO] [stdout] test signals::indicators::bar_close_rank::tests::test_bcr_highest_close_is_100 ... ok [INFO] [stdout] test signals::indicators::bar_close_rank::tests::test_bcr_lowest_close_is_0 ... ok [INFO] [stdout] test signals::indicators::bar_close_rank::tests::test_bcr_midpoint ... ok [INFO] [stdout] test signals::indicators::bar_close_rank::tests::test_bcr_period_0_error ... ok [INFO] [stdout] test signals::indicators::bar_close_rank::tests::test_bcr_reset ... ok [INFO] [stdout] test signals::indicators::bar_close_rank::tests::test_bcr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::bar_efficiency::tests::test_be_doji_zero ... ok [INFO] [stdout] test signals::indicators::bar_efficiency::tests::test_be_full_efficiency ... ok [INFO] [stdout] test signals::indicators::bar_follow_through::tests::test_bft_in_range_zero_to_one ... ok [INFO] [stdout] test signals::indicators::bar_follow_through::tests::test_bft_invalid_period ... ok [INFO] [stdout] test signals::indicators::bar_follow_through::tests::test_bft_perfect_reversal_gives_zero ... ok [INFO] [stdout] test signals::indicators::bar_follow_through::tests::test_bft_perfect_trend_gives_one ... ok [INFO] [stdout] test signals::indicators::bar_follow_through::tests::test_bft_reset ... ok [INFO] [stdout] test signals::indicators::bar_follow_through::tests::test_bft_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::bar_momentum_index::tests::test_bmi_all_aligned_up_gives_one ... ok [INFO] [stdout] test signals::indicators::bar_momentum_index::tests::test_bmi_all_opposite_gives_low_value ... ok [INFO] [stdout] test signals::indicators::bar_momentum_index::tests::test_bmi_flat_bar_gives_zero ... ok [INFO] [stdout] test signals::indicators::bar_momentum_index::tests::test_bmi_invalid_period ... ok [INFO] [stdout] test signals::indicators::bar_momentum_index::tests::test_bmi_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::bar_momentum_index::tests::test_bmi_period_and_name ... ok [INFO] [stdout] test signals::indicators::bar_momentum_index::tests::test_bmi_reset ... ok [INFO] [stdout] test signals::indicators::bar_momentum_index::tests::test_bmi_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::bar_momentum_score::tests::test_bms_bearish_score_negative ... ok [INFO] [stdout] test signals::indicators::bar_momentum_score::tests::test_bms_bullish_score_positive ... ok [INFO] [stdout] test signals::indicators::bar_momentum_score::tests::test_bms_invalid_period ... ok [INFO] [stdout] test signals::indicators::bar_momentum_score::tests::test_bms_reset ... ok [INFO] [stdout] test signals::indicators::bar_momentum_score::tests::test_bms_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::bar_open_position::tests::test_bop_always_ready ... ok [INFO] [stdout] test signals::indicators::bar_open_position::tests::test_bop_flat_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::bar_open_position::tests::test_bop_open_at_high_gives_one ... ok [INFO] [stdout] test signals::indicators::bar_open_position::tests::test_bop_open_at_low_gives_zero ... ok [INFO] [stdout] test signals::indicators::bar_open_position::tests::test_bop_open_at_midpoint ... ok [INFO] [stdout] test signals::indicators::bar_open_position::tests::test_bop_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::bar_overlap_ratio::tests::test_bor_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::bar_overlap_ratio::tests::test_bor_identical_bars_give_one ... ok [INFO] [stdout] test signals::indicators::bar_overlap_ratio::tests::test_bor_inside_bar_gives_one ... ok [INFO] [stdout] test signals::indicators::bar_overlap_ratio::tests::test_bor_no_overlap_gives_zero ... ok [INFO] [stdout] test signals::indicators::bar_overlap_ratio::tests::test_bor_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::bar_overlap_ratio::tests::test_bor_partial_overlap ... ok [INFO] [stdout] test signals::indicators::bar_overlap_ratio::tests::test_bor_reset ... ok [INFO] [stdout] test signals::indicators::bar_polarity_streak::tests::test_bps_consecutive_bullish_increments ... ok [INFO] [stdout] test signals::indicators::bar_polarity_streak::tests::test_bps_first_bar_returns_one ... ok [INFO] [stdout] test signals::indicators::bar_polarity_streak::tests::test_bps_neutral_breaks_streak ... ok [INFO] [stdout] test signals::indicators::bar_polarity_streak::tests::test_bps_polarity_flip_resets_to_one ... ok [INFO] [stdout] test signals::indicators::bar_polarity_streak::tests::test_bps_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::bar_polarity_streak::tests::test_bps_reset ... ok [INFO] [stdout] test signals::indicators::bar_quality_score::tests::test_always_ready ... ok [INFO] [stdout] test signals::indicators::bar_quality_score::tests::test_doji_low_score ... ok [INFO] [stdout] test signals::indicators::bar_quality_score::tests::test_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::bar_quality_score::tests::test_perfect_marubozu_score_one ... ok [INFO] [stdout] test signals::indicators::bar_quality_score::tests::test_score_in_range ... ok [INFO] [stdout] test signals::indicators::bar_quality_score::tests::test_strong_bar_higher_than_weak ... ok [INFO] [stdout] test signals::indicators::bar_range_consistency::tests::test_brc_constant_range_gives_one ... ok [INFO] [stdout] test signals::indicators::bar_range_consistency::tests::test_brc_invalid_period ... ok [INFO] [stdout] test signals::indicators::bar_range_consistency::tests::test_brc_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::bar_range_consistency::tests::test_brc_reset ... ok [INFO] [stdout] test signals::indicators::bar_range_consistency::tests::test_brc_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::bar_range_expansion_pct::tests::test_brep_always_contracting_gives_zero ... ok [INFO] [stdout] test signals::indicators::bar_range_expansion_pct::tests::test_brep_always_expanding_gives_one ... ok [INFO] [stdout] test signals::indicators::bar_range_expansion_pct::tests::test_brep_invalid_period ... ok [INFO] [stdout] test signals::indicators::bar_range_expansion_pct::tests::test_brep_reset ... ok [INFO] [stdout] test signals::indicators::bar_range_expansion_pct::tests::test_brep_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::bar_range_percentile::tests::test_brp_invalid_period ... ok [INFO] [stdout] test signals::indicators::bar_range_percentile::tests::test_brp_max_range_is_100 ... ok [INFO] [stdout] test signals::indicators::bar_range_percentile::tests::test_brp_min_range_is_0 ... ok [INFO] [stdout] test signals::indicators::bar_range_percentile::tests::test_brp_reset ... ok [INFO] [stdout] test signals::indicators::bar_range_percentile::tests::test_brp_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::bar_range_percentile::tests::test_brp_uniform_ranges_fifty ... ok [INFO] [stdout] test signals::indicators::bar_range_std_dev::tests::test_brsd_constant_range_gives_zero ... ok [INFO] [stdout] test signals::indicators::bar_range_std_dev::tests::test_brsd_invalid_period ... ok [INFO] [stdout] test signals::indicators::bar_range_std_dev::tests::test_brsd_reset ... ok [INFO] [stdout] test signals::indicators::bar_range_std_dev::tests::test_brsd_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::bar_range_std_dev::tests::test_brsd_varying_range_positive ... ok [INFO] [stdout] test signals::indicators::bar_strength_index::tests::test_bsi_close_at_high ... ok [INFO] [stdout] test signals::indicators::bar_strength_index::tests::test_bsi_close_at_low ... ok [INFO] [stdout] test signals::indicators::bar_type::tests::test_bt_always_ready ... ok [INFO] [stdout] test signals::indicators::bar_type::tests::test_bt_doji ... ok [INFO] [stdout] test signals::indicators::bar_type::tests::test_bt_strong_bear ... ok [INFO] [stdout] test signals::indicators::bar_type::tests::test_bt_strong_bull ... ok [INFO] [stdout] test signals::indicators::bar_type::tests::test_bt_weak_bull ... ok [INFO] [stdout] test signals::indicators::bars_since::tests::test_bars_since_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::bars_since::tests::test_bars_since_high_recent ... ok [INFO] [stdout] test signals::indicators::bars_since::tests::test_bars_since_invalid ... ok [INFO] [stdout] test signals::indicators::bars_since::tests::test_bars_since_reset ... ok [INFO] [stdout] test signals::indicators::bars_since::tests::test_bars_since_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::bearish_bar_ratio::tests::test_bearish_bar_ratio_all_bearish ... ok [INFO] [stdout] test signals::indicators::bearish_bar_ratio::tests::test_bearish_bar_ratio_half ... ok [INFO] [stdout] test signals::indicators::bearish_bar_ratio::tests::test_bearish_bar_ratio_none_bearish ... ok [INFO] [stdout] test signals::indicators::bearish_engulfing::tests::test_bearish_engulfing_detected ... ok [INFO] [stdout] test signals::indicators::bearish_engulfing::tests::test_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::bearish_engulfing::tests::test_no_pattern_when_not_bullish_first ... ok [INFO] [stdout] test signals::indicators::bearish_engulfing::tests::test_no_pattern_without_full_engulf ... ok [INFO] [stdout] test signals::indicators::bearish_engulfing::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::body_acceleration::tests::test_ba_constant_body_zero ... ok [INFO] [stdout] test signals::indicators::body_acceleration::tests::test_ba_contracting_body_negative ... ok [INFO] [stdout] test signals::indicators::body_acceleration::tests::test_ba_expanding_body_positive ... ok [INFO] [stdout] test signals::indicators::body_acceleration::tests::test_ba_invalid_period ... ok [INFO] [stdout] test signals::indicators::body_acceleration::tests::test_ba_reset ... ok [INFO] [stdout] test signals::indicators::body_acceleration::tests::test_ba_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::body_atr_ratio::tests::test_bar_atr_doji_gives_low_ratio ... ok [INFO] [stdout] test signals::indicators::body_atr_ratio::tests::test_bar_atr_invalid_period ... ok [INFO] [stdout] test signals::indicators::body_atr_ratio::tests::test_bar_atr_large_body_gives_high_ratio ... ok [INFO] [stdout] test signals::indicators::body_atr_ratio::tests::test_bar_atr_non_negative ... ok [INFO] [stdout] test signals::indicators::body_atr_ratio::tests::test_bar_atr_reset ... ok [INFO] [stdout] test signals::indicators::body_atr_ratio::tests::test_bar_atr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::body_center_position::tests::test_bcp_body_at_bottom_near_zero ... ok [INFO] [stdout] test signals::indicators::body_center_position::tests::test_bcp_body_at_top_near_one ... ok [INFO] [stdout] test signals::indicators::body_center_position::tests::test_bcp_flat_bar_half ... ok [INFO] [stdout] test signals::indicators::body_center_position::tests::test_bcp_invalid_period ... ok [INFO] [stdout] test signals::indicators::body_center_position::tests::test_bcp_persistent_upper_bodies ... ok [INFO] [stdout] test signals::indicators::body_center_position::tests::test_bcp_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::body_center_position::tests::test_bcp_reset ... ok [INFO] [stdout] test signals::indicators::body_color_streak::tests::test_bcs_bearish_first_bar_returns_neg_one ... ok [INFO] [stdout] test signals::indicators::body_color_streak::tests::test_bcs_bullish_first_bar_returns_one ... ok [INFO] [stdout] test signals::indicators::body_color_streak::tests::test_bcs_color_flip_resets ... ok [INFO] [stdout] test signals::indicators::body_color_streak::tests::test_bcs_consecutive_bearish_decrements ... ok [INFO] [stdout] test signals::indicators::body_color_streak::tests::test_bcs_consecutive_bullish_increments ... ok [INFO] [stdout] test signals::indicators::body_color_streak::tests::test_bcs_neutral_bar_returns_zero ... ok [INFO] [stdout] test signals::indicators::body_color_streak::tests::test_bcs_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::body_color_streak::tests::test_bcs_reset ... ok [INFO] [stdout] test signals::indicators::body_direction_ratio::tests::test_bdr_all_bullish_unavailable ... ok [INFO] [stdout] test signals::indicators::body_direction_ratio::tests::test_bdr_bull_dominates ... ok [INFO] [stdout] test signals::indicators::body_direction_ratio::tests::test_bdr_equal_bodies_is_1 ... ok [INFO] [stdout] test signals::indicators::body_direction_ratio::tests::test_bdr_period_0_error ... ok [INFO] [stdout] test signals::indicators::body_direction_ratio::tests::test_bdr_reset ... ok [INFO] [stdout] test signals::indicators::body_direction_ratio::tests::test_bdr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::body_fill_ratio::tests::test_bfr_doji_bars ... ok [INFO] [stdout] test signals::indicators::body_fill_ratio::tests::test_bfr_full_body_bars ... ok [INFO] [stdout] test signals::indicators::body_fill_ratio::tests::test_bfr_invalid_period ... ok [INFO] [stdout] test signals::indicators::body_fill_ratio::tests::test_bfr_reset ... ok [INFO] [stdout] test signals::indicators::body_fill_ratio::tests::test_bfr_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::body_height_ratio::tests::test_bhr_doji_gives_zero ... ok [INFO] [stdout] test signals::indicators::body_height_ratio::tests::test_bhr_invalid ... ok [INFO] [stdout] test signals::indicators::body_height_ratio::tests::test_bhr_ready_after_warm_up ... ok [INFO] [stdout] test signals::indicators::body_height_ratio::tests::test_bhr_reset ... ok [INFO] [stdout] test signals::indicators::body_height_ratio::tests::test_bhr_unavailable ... ok [INFO] [stdout] test signals::indicators::body_high_ratio::tests::test_body_ratio_positive ... ok [INFO] [stdout] test signals::indicators::body_high_ratio::tests::test_doji_gives_zero ... ok [INFO] [stdout] test signals::indicators::body_high_ratio::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::body_high_ratio::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::body_high_ratio::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::body_momentum::tests::test_bm_all_bullish ... ok [INFO] [stdout] test signals::indicators::body_momentum::tests::test_bm_mixed_zero ... ok [INFO] [stdout] test signals::indicators::body_position::tests::test_bp_always_ready ... ok [INFO] [stdout] test signals::indicators::body_position::tests::test_bp_body_at_bottom ... ok [INFO] [stdout] test signals::indicators::body_position::tests::test_bp_body_at_center ... ok [INFO] [stdout] test signals::indicators::body_position::tests::test_bp_body_at_top ... ok [INFO] [stdout] test signals::indicators::body_position::tests::test_bp_no_range_returns_half ... ok [INFO] [stdout] test signals::indicators::body_size_rank::tests::test_bsr_in_range ... ok [INFO] [stdout] test signals::indicators::body_size_rank::tests::test_bsr_invalid_period ... ok [INFO] [stdout] test signals::indicators::body_size_rank::tests::test_bsr_largest_body_gives_one ... ok [INFO] [stdout] test signals::indicators::body_size_rank::tests::test_bsr_reset ... ok [INFO] [stdout] test signals::indicators::body_size_rank::tests::test_bsr_smallest_body_gives_zero ... ok [INFO] [stdout] test signals::indicators::body_size_rank::tests::test_bsr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::body_streak::tests::test_body_streak_always_ready ... ok [INFO] [stdout] test signals::indicators::body_streak::tests::test_body_streak_bearish_accumulates ... ok [INFO] [stdout] test signals::indicators::body_streak::tests::test_body_streak_bullish_accumulates ... ok [INFO] [stdout] test signals::indicators::body_streak::tests::test_body_streak_direction_change_resets_to_one ... ok [INFO] [stdout] test signals::indicators::body_streak::tests::test_body_streak_doji_resets ... ok [INFO] [stdout] test signals::indicators::body_streak::tests::test_body_streak_reset ... ok [INFO] [stdout] test signals::indicators::body_to_range_ema::tests::test_btr_doji_returns_zero ... ok [INFO] [stdout] test signals::indicators::body_to_range_ema::tests::test_btr_ema_smoothing ... ok [INFO] [stdout] test signals::indicators::body_to_range_ema::tests::test_btr_flat_bar_returns_zero ... ok [INFO] [stdout] test signals::indicators::body_to_range_ema::tests::test_btr_full_body_returns_one ... ok [INFO] [stdout] test signals::indicators::body_to_range_ema::tests::test_btr_invalid_period ... ok [INFO] [stdout] test signals::indicators::body_to_range_ema::tests::test_btr_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::body_to_range_ema::tests::test_btr_reset ... ok [INFO] [stdout] test signals::indicators::body_to_range_ratio::tests::test_body_to_range_doji ... ok [INFO] [stdout] test signals::indicators::body_to_range_ratio::tests::test_body_to_range_marubozu ... ok [INFO] [stdout] test signals::indicators::body_to_shadow_ratio::tests::test_btsr_always_ready ... ok [INFO] [stdout] test signals::indicators::body_to_shadow_ratio::tests::test_btsr_doji_small_body ... ok [INFO] [stdout] test signals::indicators::body_to_shadow_ratio::tests::test_btsr_equal_body_and_shadows ... ok [INFO] [stdout] test signals::indicators::body_to_shadow_ratio::tests::test_btsr_no_shadows_unavailable ... ok [INFO] [stdout] test signals::indicators::body_to_wick_ratio::tests::test_bwr_body_larger_than_wicks ... ok [INFO] [stdout] test signals::indicators::body_to_wick_ratio::tests::test_bwr_doji_small_body_vs_large_wicks ... ok [INFO] [stdout] test signals::indicators::body_to_wick_ratio::tests::test_bwr_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::body_to_wick_ratio::tests::test_bwr_invalid_period ... ok [INFO] [stdout] test signals::indicators::body_to_wick_ratio::tests::test_bwr_marubozu_gives_one ... ok [INFO] [stdout] test signals::indicators::body_to_wick_ratio::tests::test_bwr_reset ... ok [INFO] [stdout] test signals::indicators::body_to_wick_ratio::tests::test_bwr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::body_trend_strength::tests::test_all_bearish_returns_neg_one ... ok [INFO] [stdout] test signals::indicators::body_trend_strength::tests::test_all_bullish_returns_one ... ok [INFO] [stdout] test signals::indicators::body_trend_strength::tests::test_mixed_near_zero ... ok [INFO] [stdout] test signals::indicators::body_trend_strength::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::body_trend_strength::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::body_trend_strength::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::body_volume_ratio::tests::test_bvr_bearish_bar_same_as_bullish ... ok [INFO] [stdout] test signals::indicators::body_volume_ratio::tests::test_bvr_doji_zero_body ... ok [INFO] [stdout] test signals::indicators::body_volume_ratio::tests::test_bvr_correct_ratio ... ok [INFO] [stdout] test signals::indicators::body_volume_ratio::tests::test_bvr_period_is_one ... ok [INFO] [stdout] test signals::indicators::body_volume_ratio::tests::test_bvr_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::body_volume_ratio::tests::test_bvr_reset ... ok [INFO] [stdout] test signals::indicators::body_volume_ratio::tests::test_bvr_zero_volume_returns_unavailable ... ok [INFO] [stdout] test signals::indicators::body_width_ratio::tests::test_bwr_doji_near_zero ... ok [INFO] [stdout] test signals::indicators::body_width_ratio::tests::test_bwr_invalid_period ... ok [INFO] [stdout] test signals::indicators::body_width_ratio::tests::test_bwr_full_body_near_one ... ok [INFO] [stdout] test signals::indicators::body_width_ratio::tests::test_bwr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::bollinger::tests::test_bollinger_close_at_upper_band_returns_one ... ok [INFO] [stdout] test signals::indicators::bollinger::tests::test_bollinger_constant_price_returns_half ... ok [INFO] [stdout] test signals::indicators::body_width_ratio::tests::test_bwr_reset ... ok [INFO] [stdout] test signals::indicators::bollinger::tests::test_bollinger_period_0_fails ... ok [INFO] [stdout] test signals::indicators::bollinger::tests::test_bollinger_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::bollinger_pct_b::tests::test_bpctb_at_sma_gives_half ... ok [INFO] [stdout] test signals::indicators::bollinger::tests::test_bollinger_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::bollinger_pct_b::tests::test_bpctb_close_above_sma_gives_pctb_above_half ... ok [INFO] [stdout] test signals::indicators::bollinger_pct_b::tests::test_bpctb_flat_prices_unavailable ... ok [INFO] [stdout] test signals::indicators::bollinger_pct_b::tests::test_bpctb_invalid_period ... ok [INFO] [stdout] test signals::indicators::bollinger_pct_b::tests::test_bpctb_reset ... ok [INFO] [stdout] test signals::indicators::bollinger_pct_b::tests::test_bpctb_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::bollinger_width::tests::test_bw_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::bollinger_width::tests::test_bw_flat_series_zero_width ... ok [INFO] [stdout] test signals::indicators::bollinger_width::tests::test_bw_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::bop::tests::test_bop_bearish_bar_negative ... ok [INFO] [stdout] test signals::indicators::bollinger_width::tests::test_bw_reset ... ok [INFO] [stdout] test signals::indicators::bop::tests::test_bop_bullish_bar_positive ... ok [INFO] [stdout] test signals::indicators::bop::tests::test_bop_doji_bar_zero ... ok [INFO] [stdout] test signals::indicators::bop::tests::test_bop_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::bop::tests::test_bop_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::bop::tests::test_bop_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::breakout_signal::tests::test_bs_downside_breakout_is_neg_one ... ok [INFO] [stdout] test signals::indicators::breakout_signal::tests::test_bs_inside_channel_is_zero ... ok [INFO] [stdout] test signals::indicators::breakout_signal::tests::test_bs_invalid_period ... ok [INFO] [stdout] test signals::indicators::breakout_signal::tests::test_bs_period_and_name ... ok [INFO] [stdout] test signals::indicators::breakout_signal::tests::test_bs_reset ... ok [INFO] [stdout] test signals::indicators::breakout_signal::tests::test_bs_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::breakout_signal::tests::test_bs_upside_breakout_is_one ... ok [INFO] [stdout] test signals::indicators::bull_bear_balance::tests::test_bbb_all_bullish_unavailable ... ok [INFO] [stdout] test signals::indicators::bull_bear_balance::tests::test_bbb_bullish_bias_above_one ... ok [INFO] [stdout] test signals::indicators::bull_bear_balance::tests::test_bbb_equal_bodies_gives_one ... ok [INFO] [stdout] test signals::indicators::bull_bear_balance::tests::test_bbb_invalid_period ... ok [INFO] [stdout] test signals::indicators::bull_bear_balance::tests::test_bbb_reset ... ok [INFO] [stdout] test signals::indicators::bull_bear_balance::tests::test_bbb_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::bull_bear_power::tests::test_bull_bear_power_not_ready ... ok [INFO] [stdout] test signals::indicators::bull_bear_power::tests::test_bull_bear_power_positive ... ok [INFO] [stdout] test signals::indicators::bull_power_bear_power::tests::test_bpbp_not_ready ... ok [INFO] [stdout] test signals::indicators::bull_power_bear_power::tests::test_bpbp_symmetric_zero ... ok [INFO] [stdout] test signals::indicators::bullish_engulfing::tests::test_bullish_engulfing_detected ... ok [INFO] [stdout] test signals::indicators::bullish_engulfing::tests::test_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::bullish_engulfing::tests::test_no_pattern_when_not_bearish_first ... ok [INFO] [stdout] test signals::indicators::bullish_engulfing::tests::test_no_pattern_without_full_engulf ... ok [INFO] [stdout] test signals::indicators::bullish_engulfing::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::bw_mfi::tests::test_bwmfi_basic ... ok [INFO] [stdout] test signals::indicators::bw_mfi::tests::test_bwmfi_flat_bar_is_zero ... ok [INFO] [stdout] test signals::indicators::bw_mfi::tests::test_bwmfi_reset ... ok [INFO] [stdout] test signals::indicators::bw_mfi::tests::test_bwmfi_zero_volume_unavailable ... ok [INFO] [stdout] test signals::indicators::calmar_ratio::tests::test_calmar_invalid_period ... ok [INFO] [stdout] test signals::indicators::calmar_ratio::tests::test_calmar_monotone_up_unavailable ... ok [INFO] [stdout] test signals::indicators::calmar_ratio::tests::test_calmar_positive_with_drawdown ... ok [INFO] [stdout] test signals::indicators::calmar_ratio::tests::test_calmar_reset ... ok [INFO] [stdout] test signals::indicators::calmar_ratio::tests::test_calmar_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::camarilla::tests::test_camarilla_levels_computed ... ok [INFO] [stdout] test signals::indicators::camarilla::tests::test_camarilla_r1_r2_symmetry ... ok [INFO] [stdout] test signals::indicators::camarilla::tests::test_camarilla_reset ... ok [INFO] [stdout] test signals::indicators::camarilla::tests::test_camarilla_unavailable_first_bar ... ok [INFO] [stdout] test signals::indicators::candle_body_size::tests::test_cbs_doji_zero ... ok [INFO] [stdout] test signals::indicators::candle_body_size::tests::test_cbs_half_body ... ok [INFO] [stdout] test signals::indicators::candle_body_size::tests::test_cbs_is_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::candle_body_size::tests::test_cbs_flat_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::candle_body_size::tests::test_cbs_marubozu_100 ... ok [INFO] [stdout] test signals::indicators::candle_body_size::tests::test_cbs_reset ... ok [INFO] [stdout] test signals::indicators::candle_color::tests::test_cc_bearish ... ok [INFO] [stdout] test signals::indicators::candle_color::tests::test_cc_bullish ... ok [INFO] [stdout] test signals::indicators::candle_color::tests::test_cc_doji ... ok [INFO] [stdout] test signals::indicators::candle_color::tests::test_cc_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::candle_color::tests::test_cc_reset ... ok [INFO] [stdout] test signals::indicators::candle_efficiency::tests::test_ce_doji_is_zero ... ok [INFO] [stdout] test signals::indicators::candle_efficiency::tests::test_ce_full_body_is_one ... ok [INFO] [stdout] test signals::indicators::candle_efficiency::tests::test_ce_half_body ... ok [INFO] [stdout] test signals::indicators::candle_efficiency::tests::test_ce_is_ready_after_first_valid_bar ... ok [INFO] [stdout] test signals::indicators::candle_efficiency::tests::test_ce_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::candle_efficiency::tests::test_ce_period_is_one ... ok [INFO] [stdout] test signals::indicators::candle_efficiency::tests::test_ce_reset ... ok [INFO] [stdout] test signals::indicators::candle_efficiency::tests::test_ce_zero_range_unavailable ... ok [INFO] [stdout] test signals::indicators::candle_momentum::tests::test_cm_all_bear_negative ... ok [INFO] [stdout] test signals::indicators::candle_momentum::tests::test_cm_all_bull_positive ... ok [INFO] [stdout] test signals::indicators::candle_momentum::tests::test_cm_alternating_zero_mean ... ok [INFO] [stdout] test signals::indicators::candle_momentum::tests::test_cm_doji_is_zero ... ok [INFO] [stdout] test signals::indicators::candle_momentum::tests::test_cm_invalid ... ok [INFO] [stdout] test signals::indicators::candle_momentum::tests::test_cm_reset ... ok [INFO] [stdout] test signals::indicators::candle_momentum::tests::test_cm_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::candle_momentum_score::tests::test_perfect_bullish_gives_one ... ok [INFO] [stdout] test signals::indicators::candle_momentum_score::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::candle_momentum_score::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::candle_momentum_score::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::candle_pattern::tests::test_bearish_engulfing ... ok [INFO] [stdout] test signals::indicators::candle_pattern::tests::test_bullish_engulfing ... ok [INFO] [stdout] test signals::indicators::candle_pattern::tests::test_candle_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::candle_pattern::tests::test_candle_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::candle_pattern::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::candle_range_ma::tests::test_crm_constant_range ... ok [INFO] [stdout] test signals::indicators::candle_range_ma::tests::test_crm_period_0_error ... ok [INFO] [stdout] test signals::indicators::candle_range_ma::tests::test_crm_reset ... ok [INFO] [stdout] test signals::indicators::candle_range_ma::tests::test_crm_rolling_average ... ok [INFO] [stdout] test signals::indicators::candle_range_ma::tests::test_crm_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::candle_symmetry::tests::test_candle_symmetry_equal_wicks ... ok [INFO] [stdout] test signals::indicators::candle_symmetry::tests::test_candle_symmetry_one_sided ... ok [INFO] [stdout] test signals::indicators::cci::tests::test_cci_constant_prices_returns_zero ... ok [INFO] [stdout] test signals::indicators::cci::tests::test_cci_is_ready_after_period ... ok [INFO] [stdout] test signals::indicators::cci::tests::test_cci_negative_when_close_below_average ... ok [INFO] [stdout] test signals::indicators::cci::tests::test_cci_period_0_fails ... ok [INFO] [stdout] test signals::indicators::cci::tests::test_cci_positive_when_close_above_average ... ok [INFO] [stdout] test signals::indicators::cci::tests::test_cci_reset ... ok [INFO] [stdout] test signals::indicators::cci::tests::test_cci_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::chaikin_osc::tests::test_chaikin_invalid ... ok [INFO] [stdout] test signals::indicators::chaikin_osc::tests::test_chaikin_period_and_name ... ok [INFO] [stdout] test signals::indicators::chaikin_osc::tests::test_chaikin_ready_after_slow ... ok [INFO] [stdout] test signals::indicators::chaikin_osc::tests::test_chaikin_reset ... ok [INFO] [stdout] test signals::indicators::chaikin_osc::tests::test_chaikin_unavailable_before_slow ... ok [INFO] [stdout] test signals::indicators::chaikin_osc::tests::test_chaikin_zero_hl_range ... ok [INFO] [stdout] test signals::indicators::chaikin_volatility::tests::test_chaikin_volatility_not_ready_initially ... ok [INFO] [stdout] test signals::indicators::chaikin_volatility::tests::test_chaikin_volatility_ready_after_period_plus_one ... ok [INFO] [stdout] test signals::indicators::chande_forecast_osc::tests::test_cfo_invalid_period ... ok [INFO] [stdout] test signals::indicators::chande_forecast_osc::tests::test_cfo_linear_trend_near_zero ... ok [INFO] [stdout] test signals::indicators::chande_forecast_osc::tests::test_cfo_reset ... ok [INFO] [stdout] test signals::indicators::chande_forecast_osc::tests::test_cfo_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::chande_forecast_osc::tests::test_cfo_upside_acceleration_positive ... ok [INFO] [stdout] test signals::indicators::chande_kroll::tests::test_ck_flat_stops_symmetric ... ok [INFO] [stdout] test signals::indicators::chande_kroll::tests::test_ck_invalid ... ok [INFO] [stdout] test signals::indicators::chande_kroll::tests::test_ck_stop_levels_set ... ok [INFO] [stdout] test signals::indicators::chande_kroll::tests::test_ck_reset ... ok [INFO] [stdout] test signals::indicators::chande_kroll::tests::test_ck_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::chande_momentum_smoothed::tests::test_cmos_all_gains_positive_output ... ok [INFO] [stdout] test signals::indicators::chande_momentum_smoothed::tests::test_cmos_invalid_period ... ok [INFO] [stdout] test signals::indicators::chande_momentum_smoothed::tests::test_cmos_name_and_period ... ok [INFO] [stdout] test signals::indicators::chande_momentum_smoothed::tests::test_cmos_output_in_bounds ... ok [INFO] [stdout] test signals::indicators::chande_momentum_smoothed::tests::test_cmos_produces_value_after_warm_up ... ok [INFO] [stdout] test signals::indicators::chande_momentum_smoothed::tests::test_cmos_reset ... ok [INFO] [stdout] test signals::indicators::chande_momentum_smoothed::tests::test_cmos_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::chandelier::tests::test_chandelier_long_exit_below_highest_high ... ok [INFO] [stdout] test signals::indicators::chandelier::tests::test_chandelier_period_0_error ... ok [INFO] [stdout] test signals::indicators::chandelier::tests::test_chandelier_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::chandelier::tests::test_chandelier_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::change_from_high::tests::test_cfh_at_high_is_zero ... ok [INFO] [stdout] test signals::indicators::change_from_high::tests::test_cfh_below_high_negative ... ok [INFO] [stdout] test signals::indicators::change_from_high::tests::test_cfh_invalid ... ok [INFO] [stdout] test signals::indicators::change_from_high::tests::test_cfh_reset ... ok [INFO] [stdout] test signals::indicators::change_from_high::tests::test_cfh_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::choppiness::tests::test_choppiness_between_0_and_100 ... ok [INFO] [stdout] test signals::indicators::choppiness::tests::test_choppiness_flat_range_returns_unavailable ... ok [INFO] [stdout] test signals::indicators::choppiness::tests::test_choppiness_invalid_period ... ok [INFO] [stdout] test signals::indicators::choppiness::tests::test_choppiness_period_and_name ... ok [INFO] [stdout] test signals::indicators::choppiness::tests::test_choppiness_ready_after_period_bars ... ok [INFO] [stdout] test signals::indicators::choppiness::tests::test_choppiness_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::choppiness::tests::test_choppiness_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::climax_volume::tests::test_climax_bullish_climax ... ok [INFO] [stdout] test signals::indicators::climax_volume::tests::test_climax_invalid_period ... ok [INFO] [stdout] test signals::indicators::climax_volume::tests::test_climax_normal_bar_zero ... ok [INFO] [stdout] test signals::indicators::climax_volume::tests::test_climax_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::climax_volume::tests::test_climax_reset ... ok [INFO] [stdout] test signals::indicators::close_above_ema::tests::test_cae_period_0_error ... ok [INFO] [stdout] test signals::indicators::close_above_ema::tests::test_cae_all_above_is_100 ... ok [INFO] [stdout] test signals::indicators::close_above_ema::tests::test_cae_reset ... ok [INFO] [stdout] test signals::indicators::close_above_ema::tests::test_cae_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::close_above_ema::tests::test_cae_window_0_error ... ok [INFO] [stdout] test signals::indicators::close_above_high_prev::tests::test_cahp_bullish_breakout ... ok [INFO] [stdout] test signals::indicators::close_above_high_prev::tests::test_cahp_bearish_breakout ... ok [INFO] [stdout] test signals::indicators::close_above_high_prev::tests::test_cahp_inside_bar ... ok [INFO] [stdout] test signals::indicators::close_above_midpoint::tests::test_cam_all_above_is_100 ... ok [INFO] [stdout] test signals::indicators::close_above_high_prev::tests::test_cahp_unavailable_first_bar ... ok [INFO] [stdout] test signals::indicators::close_above_midpoint::tests::test_cam_reset ... ok [INFO] [stdout] test signals::indicators::close_above_midpoint::tests::test_cam_all_below_is_0 ... ok [INFO] [stdout] test signals::indicators::close_above_midpoint::tests::test_cam_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::close_above_high_prev::tests::test_cahp_reset ... ok [INFO] [stdout] test signals::indicators::close_above_open::tests::test_cao_all_bearish_is_0 ... ok [INFO] [stdout] test signals::indicators::close_above_open::tests::test_cao_all_bullish_is_100 ... ok [INFO] [stdout] test signals::indicators::close_above_midpoint::tests::test_cam_period_0_error ... ok [INFO] [stdout] test signals::indicators::close_above_open::tests::test_cao_mixed_50_pct ... ok [INFO] [stdout] test signals::indicators::close_above_open::tests::test_cao_rolls_window ... ok [INFO] [stdout] test signals::indicators::close_above_open::tests::test_cao_period_0_error ... ok [INFO] [stdout] test signals::indicators::close_above_open::tests::test_cao_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::close_above_open::tests::test_cao_reset ... ok [INFO] [stdout] test signals::indicators::close_above_open_streak::tests::test_bullish_streak ... ok [INFO] [stdout] test signals::indicators::close_above_open_streak::tests::test_bearish_streak ... ok [INFO] [stdout] test signals::indicators::close_above_open_streak::tests::test_doji_resets_streak ... ok [INFO] [stdout] test signals::indicators::close_above_open_streak::tests::test_direction_switch_resets_to_one ... ok [INFO] [stdout] test signals::indicators::close_above_open_streak::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::close_above_pivot::tests::test_cap_all_above_100 ... ok [INFO] [stdout] test signals::indicators::close_above_pivot::tests::test_cap_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_above_prev_close::tests::test_capc_all_falling_is_0 ... ok [INFO] [stdout] test signals::indicators::close_above_prev_close::tests::test_capc_all_rising_is_100 ... ok [INFO] [stdout] test signals::indicators::close_above_prev_close::tests::test_capc_period_0_error ... ok [INFO] [stdout] test signals::indicators::close_above_prev_close::tests::test_capc_reset ... ok [INFO] [stdout] test signals::indicators::close_above_prev_close::tests::test_capc_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::close_above_pivot::tests::test_cap_reset ... ok [INFO] [stdout] test signals::indicators::close_above_prev_close::tests::test_capc_window_slides ... ok [INFO] [stdout] test signals::indicators::close_above_prev_close_pct::tests::test_capc_all_down_gives_zero ... ok [INFO] [stdout] test signals::indicators::close_above_prev_close_pct::tests::test_capc_all_up_gives_one ... ok [INFO] [stdout] test signals::indicators::close_above_pivot::tests::test_cap_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::close_above_prev_low::tests::test_capl_close_below_prev_low_negative ... ok [INFO] [stdout] test signals::indicators::close_above_prev_close_pct::tests::test_capc_reset ... ok [INFO] [stdout] test signals::indicators::close_above_prev_close_pct::tests::test_capc_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::close_above_prev_high::tests::test_caph_all_breakouts ... ok [INFO] [stdout] test signals::indicators::close_above_prev_low::tests::test_capl_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::close_above_prev_low::tests::test_capl_close_above_prev_low_positive ... ok [INFO] [stdout] test signals::indicators::close_above_prev_low::tests::test_capl_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_above_prev_high::tests::test_caph_no_breakouts ... ok [INFO] [stdout] test signals::indicators::close_above_prev_close_pct::tests::test_capc_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_above_prev_low::tests::test_capl_ready_after_second_bar ... ok [INFO] [stdout] test signals::indicators::close_above_prev_low::tests::test_capl_reset ... ok [INFO] [stdout] test signals::indicators::close_above_prior_close::tests::test_capc_all_down_gives_zero ... ok [INFO] [stdout] test signals::indicators::close_above_prior_close::tests::test_capc_balanced ... ok [INFO] [stdout] test signals::indicators::close_above_prior_close::tests::test_capc_all_up_gives_one ... ok [INFO] [stdout] test signals::indicators::close_above_prior_close::tests::test_capc_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_above_prior_close::tests::test_capc_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::close_above_prior_close::tests::test_capc_reset ... ok [INFO] [stdout] test signals::indicators::close_above_prior_close::tests::test_capc_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::close_above_sma_streak::tests::test_css_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_above_sma_streak::tests::test_css_reset ... ok [INFO] [stdout] test signals::indicators::close_above_sma_streak::tests::test_css_rising_streak ... ok [INFO] [stdout] test signals::indicators::close_above_sma_streak::tests::test_css_streak_resets_on_drop ... ok [INFO] [stdout] test signals::indicators::close_above_sma_streak::tests::test_css_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::close_acceleration::tests::test_close_acceleration_not_ready ... ok [INFO] [stdout] test signals::indicators::close_acceleration_sign::tests::test_cas_constant_velocity_zero ... ok [INFO] [stdout] test signals::indicators::close_acceleration::tests::test_close_acceleration_constant_momentum ... ok [INFO] [stdout] test signals::indicators::close_acceleration_sign::tests::test_cas_decelerating ... ok [INFO] [stdout] test signals::indicators::close_below_low_prev::tests::test_close_below_low_prev_always_below ... ok [INFO] [stdout] test signals::indicators::close_acceleration_sign::tests::test_cas_accelerating ... ok [INFO] [stdout] test signals::indicators::close_distance_from_ema::tests::test_cdfe_above_ema_positive ... ok [INFO] [stdout] test signals::indicators::close_distance_from_ema::tests::test_cdfe_seed_bar_zero_distance ... ok [INFO] [stdout] test signals::indicators::close_distance_from_open::tests::test_cdfo_bullish_bars_positive ... ok [INFO] [stdout] test signals::indicators::close_distance_from_open::tests::test_cdfo_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_distance_from_open::tests::test_cdfo_reset ... ok [INFO] [stdout] test signals::indicators::close_below_low_prev::tests::test_close_below_low_prev_never_below ... ok [INFO] [stdout] test signals::indicators::close_drawdown_from_high::tests::test_cdfh_below_peak_negative ... ok [INFO] [stdout] test signals::indicators::close_distance_from_open::tests::test_cdfo_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::close_drawdown_from_high::tests::test_cdfh_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_drawdown_from_high::tests::test_cdfh_reset ... ok [INFO] [stdout] test signals::indicators::close_drawdown_from_high::tests::test_cdfh_at_peak_returns_zero ... ok [INFO] [stdout] test signals::indicators::close_high_frequency::tests::test_chf_half_above_half_below ... ok [INFO] [stdout] test signals::indicators::close_drawdown_from_high::tests::test_cdfh_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::close_high_frequency::tests::test_chf_all_closes_above_mid ... ok [INFO] [stdout] test signals::indicators::close_high_frequency::tests::test_chf_reset ... ok [INFO] [stdout] test signals::indicators::close_high_frequency::tests::test_chf_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_high_low_spread::tests::test_chls_close_at_midpoint_zero ... ok [INFO] [stdout] test signals::indicators::close_high_low_spread::tests::test_chls_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_high_low_spread::tests::test_chls_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::close_in_range_pct::tests::test_cirp_close_at_high_100 ... ok [INFO] [stdout] test signals::indicators::close_high_frequency::tests::test_chf_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::close_in_range_pct::tests::test_cirp_close_at_low_zero ... ok [INFO] [stdout] test signals::indicators::close_in_range_pct::tests::test_cirp_close_at_midpoint_50 ... ok [INFO] [stdout] test signals::indicators::close_in_range_pct::tests::test_cirp_flat_bar_50 ... ok [INFO] [stdout] test signals::indicators::close_in_range_pct::tests::test_cirp_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_in_range_pct::tests::test_cirp_reset ... ok [INFO] [stdout] test signals::indicators::close_high_low_spread::tests::test_chls_close_at_high_negative ... ok [INFO] [stdout] test signals::indicators::close_high_frequency::tests::test_chf_all_closes_below_mid ... ok [INFO] [stdout] test signals::indicators::close_high_low_spread::tests::test_chls_reset ... ok [INFO] [stdout] test signals::indicators::close_in_range_pct::tests::test_cirp_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::close_high_low_spread::tests::test_chls_close_at_low_positive ... ok [INFO] [stdout] test signals::indicators::close_location_ema::tests::test_cle_close_at_high_plus_one ... ok [INFO] [stdout] test signals::indicators::close_location_ema::tests::test_cle_close_at_midpoint_zero ... ok [INFO] [stdout] test signals::indicators::close_location_ema::tests::test_cle_close_at_low_minus_one ... ok [INFO] [stdout] test signals::indicators::close_location_ema::tests::test_cle_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::close_location_ema::tests::test_cle_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::close_location_ema::tests::test_cle_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_location_ema::tests::test_cle_reset ... ok [INFO] [stdout] test signals::indicators::close_location_value::tests::test_clv_close_at_high_is_one ... ok [INFO] [stdout] test signals::indicators::close_location_ema::tests::test_cle_persistent_high_closes_positive ... ok [INFO] [stdout] test signals::indicators::close_location_value::tests::test_clv_close_at_low_is_minus_one ... ok [INFO] [stdout] test signals::indicators::close_location_value::tests::test_clv_close_at_midpoint_is_zero ... ok [INFO] [stdout] test signals::indicators::close_location_value::tests::test_clv_doji_is_zero ... ok [INFO] [stdout] test signals::indicators::close_location_value::tests::test_clv_rolling_average ... ok [INFO] [stdout] test signals::indicators::close_location_value::tests::test_clv_reset ... ok [INFO] [stdout] test signals::indicators::close_location_value::tests::test_clv_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::close_midpoint_diff::tests::test_cmd_close_at_high ... ok [INFO] [stdout] test signals::indicators::close_location_value::tests::test_clv_invalid ... ok [INFO] [stdout] test signals::indicators::close_midpoint_diff::tests::test_cmd_close_at_midpoint ... ok [INFO] [stdout] test signals::indicators::close_midpoint_diff::tests::test_cmd_period_and_name ... ok [INFO] [stdout] test signals::indicators::close_midpoint_strength::tests::test_cms_always_ready ... ok [INFO] [stdout] test signals::indicators::close_midpoint_strength::tests::test_cms_close_at_high_gives_one ... ok [INFO] [stdout] test signals::indicators::close_midpoint_strength::tests::test_cms_close_at_low_gives_neg_one ... ok [INFO] [stdout] test signals::indicators::close_midpoint_diff::tests::test_cmd_close_at_low ... ok [INFO] [stdout] test signals::indicators::close_midpoint_strength::tests::test_cms_flat_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::close_midpoint_strength::tests::test_cms_output_in_range ... ok [INFO] [stdout] test signals::indicators::close_minus_open_ma::tests::test_cmo_ma_all_bullish ... ok [INFO] [stdout] test signals::indicators::close_midpoint_strength::tests::test_cms_close_at_midpoint_gives_zero ... ok [INFO] [stdout] test signals::indicators::close_midpoint_diff::tests::test_cmd_always_ready ... ok [INFO] [stdout] test signals::indicators::close_minus_open_ma::tests::test_cmo_ma_mixed_near_zero ... ok [INFO] [stdout] test signals::indicators::close_minus_open_ma::tests::test_cmo_ma_period_0_error ... ok [INFO] [stdout] test signals::indicators::close_minus_open_ma::tests::test_cmo_ma_reset ... ok [INFO] [stdout] test signals::indicators::close_minus_open_ma::tests::test_cmo_ma_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::close_minus_prev_high::tests::test_cmph_close_above_prev_high_positive ... ok [INFO] [stdout] test signals::indicators::close_minus_prev_high::tests::test_cmph_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_minus_prev_high::tests::test_cmph_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::close_minus_prev_high::tests::test_cmph_close_below_prev_high_negative ... ok [INFO] [stdout] test signals::indicators::close_minus_prev_high::tests::test_cmph_ready_after_second_bar ... ok [INFO] [stdout] test signals::indicators::close_minus_prev_high::tests::test_cmph_reset ... ok [INFO] [stdout] test signals::indicators::close_momentum_rank::tests::test_constant_price_median_rank ... ok [INFO] [stdout] test signals::indicators::close_momentum_rank::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::close_momentum_rank::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::close_momentum_rank::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::close_open_ema::tests::test_coe_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_momentum_rank::tests::test_ready_after_period_plus_one ... ok [INFO] [stdout] test signals::indicators::close_open_ema::tests::test_coe_positive_for_consistent_bull_bars ... ok [INFO] [stdout] test signals::indicators::close_open_ema::tests::test_coe_negative_for_consistent_bear_bars ... ok [INFO] [stdout] test signals::indicators::close_open_ema::tests::test_coe_reset ... ok [INFO] [stdout] test signals::indicators::close_momentum_rank::tests::test_large_return_high_rank ... ok [INFO] [stdout] test signals::indicators::close_open_ema::tests::test_coe_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::close_open_momentum::tests::test_com_all_bearish_negative ... ok [INFO] [stdout] test signals::indicators::close_open_momentum::tests::test_com_all_bullish_positive ... ok [INFO] [stdout] test signals::indicators::close_open_momentum::tests::test_com_reset ... ok [INFO] [stdout] test signals::indicators::close_open_momentum::tests::test_com_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::close_open_momentum::tests::test_com_rolling_window ... ok [INFO] [stdout] test signals::indicators::close_open_momentum::tests::test_com_doji_zero ... ok [INFO] [stdout] test signals::indicators::close_pct_from_high::tests::test_cpfh_at_high ... ok [INFO] [stdout] test signals::indicators::close_pct_from_low::tests::test_cpfl_above_low ... ok [INFO] [stdout] test signals::indicators::close_pct_from_high::tests::test_cpfh_below_high ... ok [INFO] [stdout] test signals::indicators::close_open_momentum::tests::test_com_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_pct_rank::tests::test_cpr_highest_in_window_returns_one ... ok [INFO] [stdout] test signals::indicators::close_pct_rank::tests::test_cpr_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_pct_rank::tests::test_cpr_lowest_in_window_returns_zero ... ok [INFO] [stdout] test signals::indicators::close_pct_from_low::tests::test_cpfl_at_low ... ok [INFO] [stdout] test signals::indicators::close_pct_rank::tests::test_cpr_middle_value ... ok [INFO] [stdout] test signals::indicators::close_pct_rank::tests::test_cpr_period_one_returns_zero ... ok [INFO] [stdout] test signals::indicators::close_pct_rank::tests::test_cpr_reset ... ok [INFO] [stdout] test signals::indicators::close_position_in_range::tests::test_cpr_close_at_high ... ok [INFO] [stdout] test signals::indicators::close_pct_rank::tests::test_cpr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::close_position_in_range::tests::test_cpr_always_ready ... ok [INFO] [stdout] test signals::indicators::close_range_position::tests::test_crp_close_at_high_seeds_one ... ok [INFO] [stdout] test signals::indicators::close_position_in_range::tests::test_cpr_close_at_midpoint ... ok [INFO] [stdout] test signals::indicators::close_range_position::tests::test_crp_close_at_low_seeds_zero ... ok [INFO] [stdout] test signals::indicators::close_range_position::tests::test_crp_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::close_position_in_range::tests::test_cpr_no_range ... ok [INFO] [stdout] test signals::indicators::close_range_position::tests::test_crp_reset ... ok [INFO] [stdout] test signals::indicators::close_position_in_range::tests::test_cpr_close_at_low ... ok [INFO] [stdout] test signals::indicators::close_rank_momentum::tests::test_crm_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_range_position::tests::test_crp_ema_decays_toward_new_value ... ok [INFO] [stdout] test signals::indicators::close_rank_momentum::tests::test_crm_monotonic_rise_positive ... ok [INFO] [stdout] test signals::indicators::close_range_position::tests::test_crp_flat_bar_seeds_half ... ok [INFO] [stdout] test signals::indicators::close_range_position::tests::test_crp_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_rank_momentum::tests::test_crm_reset ... ok [INFO] [stdout] test signals::indicators::close_retrace_pct::tests::test_crp_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::close_relative_to_ema::tests::test_cre_constant_close_zero_deviation ... ok [INFO] [stdout] test signals::indicators::close_relative_to_ema::tests::test_cre_not_ready ... ok [INFO] [stdout] test signals::indicators::close_relative_to_range::tests::test_crtr_at_bottom ... ok [INFO] [stdout] test signals::indicators::close_retrace_pct::tests::test_crp_reset ... ok [INFO] [stdout] test signals::indicators::close_retrace_pct::tests::test_crp_zero_range_unavailable ... ok [INFO] [stdout] test signals::indicators::close_relative_to_range::tests::test_crtr_at_top ... ok [INFO] [stdout] test signals::indicators::close_return_acceleration::tests::test_cra_accelerating_returns_positive ... ok [INFO] [stdout] test signals::indicators::close_retrace_pct::tests::test_crp_close_at_high_is_zero ... ok [INFO] [stdout] test signals::indicators::close_return_acceleration::tests::test_cra_constant_momentum_gives_zero ... ok [INFO] [stdout] test signals::indicators::close_rank_momentum::tests::test_crm_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::close_retrace_pct::tests::test_crp_close_at_low_is_100 ... ok [INFO] [stdout] test signals::indicators::close_return_acceleration::tests::test_cra_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_return_acceleration::tests::test_cra_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::close_return_z::tests::test_crz_flat_prices_unavailable ... ok [INFO] [stdout] test signals::indicators::close_return_z::tests::test_crz_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_retrace_pct::tests::test_crp_close_at_midpoint_is_50 ... ok [INFO] [stdout] test signals::indicators::close_return_z::tests::test_crz_outlier_has_high_z ... ok [INFO] [stdout] test signals::indicators::close_return_z::tests::test_crz_reset ... ok [INFO] [stdout] test signals::indicators::close_return_acceleration::tests::test_cra_reset ... ok [INFO] [stdout] test signals::indicators::close_session_bias::tests::test_csb_bearish_negative ... ok [INFO] [stdout] test signals::indicators::close_return_z::tests::test_crz_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::close_session_bias::tests::test_csb_bullish_positive ... ok [INFO] [stdout] test signals::indicators::close_session_bias::tests::test_csb_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_session_bias::tests::test_csb_neutral_bar_zero ... ok [INFO] [stdout] test signals::indicators::close_session_bias::tests::test_csb_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::close_strength_ratio::tests::test_csr_close_at_period_high_returns_one ... ok [INFO] [stdout] test signals::indicators::close_strength_ratio::tests::test_csr_flat_range_returns_zero ... ok [INFO] [stdout] test signals::indicators::close_strength_ratio::tests::test_csr_close_at_period_low_returns_zero ... ok [INFO] [stdout] test signals::indicators::close_session_bias::tests::test_csb_reset ... ok [INFO] [stdout] test signals::indicators::close_strength_ratio::tests::test_csr_in_range ... ok [INFO] [stdout] test signals::indicators::close_strength_ratio::tests::test_csr_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_strength_ratio::tests::test_csr_reset ... ok [INFO] [stdout] test signals::indicators::close_strength_ratio::tests::test_csr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::close_to_high_ratio::tests::test_cthr_close_at_half_high ... ok [INFO] [stdout] test signals::indicators::close_to_high_ratio::tests::test_cthr_close_at_high ... ok [INFO] [stdout] test signals::indicators::close_to_low_distance::tests::test_ctld_close_above_low_positive ... ok [INFO] [stdout] test signals::indicators::close_to_low_distance::tests::test_ctld_close_at_low_gives_zero ... ok [INFO] [stdout] test signals::indicators::close_to_low_distance::tests::test_ctld_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::close_to_mid_range::tests::test_close_to_mid_at_high ... ok [INFO] [stdout] test signals::indicators::close_to_mid_range::tests::test_close_to_mid_at_mid ... ok [INFO] [stdout] test signals::indicators::close_to_low_distance::tests::test_ctld_reset ... ok [INFO] [stdout] test signals::indicators::close_to_midrange::tests::test_close_at_high_is_100 ... ok [INFO] [stdout] test signals::indicators::close_to_midrange::tests::test_close_at_midpoint_is_zero ... ok [INFO] [stdout] test signals::indicators::close_to_midrange::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::close_to_midrange::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::close_to_open::tests::test_cto_gap_up_positive ... ok [INFO] [stdout] test signals::indicators::close_to_open::tests::test_cto_invalid ... ok [INFO] [stdout] test signals::indicators::close_to_open::tests::test_cto_no_gap_is_zero ... ok [INFO] [stdout] test signals::indicators::close_to_open::tests::test_cto_reset ... ok [INFO] [stdout] test signals::indicators::close_to_open::tests::test_cto_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::close_to_low_distance::tests::test_ctld_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_to_range_top::tests::test_close_to_range_top_at_low ... ok [INFO] [stdout] test signals::indicators::close_to_vwap_pct::tests::test_cv_pct_close_above_vwap_positive ... ok [INFO] [stdout] test signals::indicators::close_to_open_gap::tests::test_ctog_no_gap ... ok [INFO] [stdout] test signals::indicators::close_to_open_gap::tests::test_ctog_upward_gap ... ok [INFO] [stdout] test signals::indicators::close_to_vwap_pct::tests::test_cv_pct_close_at_vwap_returns_zero ... ok [INFO] [stdout] test signals::indicators::close_to_open_return::tests::test_ctor_positive_overnight_gap ... ok [INFO] [stdout] test signals::indicators::close_to_open_return::tests::test_ctor_reset ... ok [INFO] [stdout] test signals::indicators::close_to_vwap_pct::tests::test_cv_pct_close_below_vwap_negative ... ok [INFO] [stdout] test signals::indicators::close_to_open_return::tests::test_ctor_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::close_to_vwap_pct::tests::test_cv_pct_ready_after_bar_with_volume ... ok [INFO] [stdout] test signals::indicators::close_to_midrange::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::close_to_vwap_pct::tests::test_cv_pct_reset ... ok [INFO] [stdout] test signals::indicators::close_to_vwap_pct::tests::test_cv_pct_zero_volume_unavailable ... ok [INFO] [stdout] test signals::indicators::close_to_open_return::tests::test_ctor_zero_gap ... ok [INFO] [stdout] test signals::indicators::close_to_open_return::tests::test_ctor_invalid_period ... ok [INFO] [stdout] test signals::indicators::close_to_range_top::tests::test_close_to_range_top_at_high ... ok [INFO] [stdout] test signals::indicators::close_vs_open_range::tests::test_close_vs_open_range_full_bull ... ok [INFO] [stdout] test signals::indicators::close_vs_prior_high::tests::test_cvph_below_prior_high ... ok [INFO] [stdout] test signals::indicators::close_vs_prior_high::tests::test_cvph_breakout_above_one ... ok [INFO] [stdout] test signals::indicators::close_vs_prior_high::tests::test_cvph_period_0_error ... ok [INFO] [stdout] test signals::indicators::close_vs_open_range::tests::test_close_vs_open_range_full_bear ... ok [INFO] [stdout] test signals::indicators::close_vs_vwap::tests::test_cvv_above_vwap_positive ... ok [INFO] [stdout] test signals::indicators::close_vs_prior_high::tests::test_cvph_reset ... ok [INFO] [stdout] test signals::indicators::close_vs_vwap::tests::test_cvv_equal_weights_gives_zero ... ok [INFO] [stdout] test signals::indicators::close_vs_vwap::tests::test_cvv_invalid ... ok [INFO] [stdout] test signals::indicators::close_vs_vwap::tests::test_cvv_reset ... ok [INFO] [stdout] test signals::indicators::close_vs_vwap::tests::test_cvv_unavailable ... ok [INFO] [stdout] test signals::indicators::close_vs_prior_high::tests::test_cvph_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::closing_strength::tests::test_close_at_high_gives_100 ... ok [INFO] [stdout] test signals::indicators::closing_strength::tests::test_close_at_low_gives_zero ... ok [INFO] [stdout] test signals::indicators::closing_strength::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::closing_strength::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::cmf::tests::test_cmf_full_buying_pressure ... ok [INFO] [stdout] test signals::indicators::closing_strength::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::cmf::tests::test_cmf_full_selling_pressure ... ok [INFO] [stdout] test signals::indicators::cmf::tests::test_cmf_period_zero_error ... ok [INFO] [stdout] test signals::indicators::cmf::tests::test_cmf_period_accessor ... ok [INFO] [stdout] test signals::indicators::cmf::tests::test_cmf_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::cmf::tests::test_cmf_ready_after_period ... ok [INFO] [stdout] test signals::indicators::cmf::tests::test_cmf_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::cmf::tests::test_cmf_zero_range_bar_contributes_zero_mfv ... ok [INFO] [stdout] test signals::indicators::cmo::tests::test_cmo_all_down_returns_neg100 ... ok [INFO] [stdout] test signals::indicators::cmo::tests::test_cmo_all_up_returns_100 ... ok [INFO] [stdout] test signals::indicators::cmo::tests::test_cmo_flat_returns_zero ... ok [INFO] [stdout] test signals::indicators::cmf::tests::test_cmf_name_accessor ... ok [INFO] [stdout] test signals::indicators::cog::tests::test_cog_period_and_name ... ok [INFO] [stdout] test signals::indicators::cmo::tests::test_cmo_reset ... ok [INFO] [stdout] test signals::indicators::cmo::tests::test_cmo_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::cog::tests::test_cog_flat_market ... ok [INFO] [stdout] test signals::indicators::cog::tests::test_cog_reset ... ok [INFO] [stdout] test signals::indicators::cmo::tests::test_cmo_period_0_error ... ok [INFO] [stdout] test signals::indicators::conditional_var5::tests::test_cvar5_big_loss_dominates ... ok [INFO] [stdout] test signals::indicators::conditional_var5::tests::test_cvar5_all_negative_returns ... ok [INFO] [stdout] test signals::indicators::cog::tests::test_cog_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::conditional_var5::tests::test_cvar5_period_0_error ... ok [INFO] [stdout] test signals::indicators::cog::tests::test_cog_invalid_period ... ok [INFO] [stdout] test signals::indicators::conditional_var5::tests::test_cvar5_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::conditional_var5::tests::test_cvar5_reset ... ok [INFO] [stdout] test signals::indicators::connors_rsi::tests::test_crsi_invalid ... ok [INFO] [stdout] test signals::indicators::connors_rsi::tests::test_crsi_ready_after_enough_bars ... ok [INFO] [stdout] test signals::indicators::consecutive_bars::tests::test_cb_consecutive_down ... ok [INFO] [stdout] test signals::indicators::consecutive_bars::tests::test_cb_consecutive_up ... ok [INFO] [stdout] test signals::indicators::consecutive_bars::tests::test_cb_reset ... ok [INFO] [stdout] test signals::indicators::consecutive_bars::tests::test_cb_reversal_resets ... ok [INFO] [stdout] test signals::indicators::consecutive_bars::tests::test_cb_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::connors_rsi::tests::test_crsi_output_range ... ok [INFO] [stdout] test signals::indicators::consecutive_higher_highs::tests::test_consecutive_higher_highs ... ok [INFO] [stdout] test signals::indicators::consecutive_new_highs::tests::test_cnh_new_high_increments_streak ... ok [INFO] [stdout] test signals::indicators::consecutive_new_highs::tests::test_cnh_no_new_high_resets_streak ... ok [INFO] [stdout] test signals::indicators::connors_rsi::tests::test_crsi_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::consecutive_new_highs::tests::test_cnh_period_0_error ... ok [INFO] [stdout] test signals::indicators::consecutive_higher_highs::tests::test_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::consecutive_bars::tests::test_cb_unavailable_first_bar ... ok [INFO] [stdout] test signals::indicators::connors_rsi::tests::test_crsi_reset ... ok [INFO] [stdout] test signals::indicators::consecutive_new_highs::tests::test_cnh_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::consolidation_score::tests::test_cs_equal_ranges_gives_zero ... ok [INFO] [stdout] test signals::indicators::consolidation_score::tests::test_cs_invalid ... ok [INFO] [stdout] test signals::indicators::consecutive_higher_highs::tests::test_equal_resets ... ok [INFO] [stdout] test signals::indicators::consolidation_score::tests::test_cs_positive_in_consolidation ... ok [INFO] [stdout] test signals::indicators::consecutive_volume_growth::tests::test_cvg_first_bar_is_zero ... ok [INFO] [stdout] test signals::indicators::consecutive_new_highs::tests::test_cnh_reset ... ok [INFO] [stdout] test signals::indicators::consecutive_higher_highs::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::consecutive_volume_growth::tests::test_cvg_reset ... ok [INFO] [stdout] test signals::indicators::consecutive_volume_growth::tests::test_cvg_growing_streak ... ok [INFO] [stdout] test signals::indicators::consecutive_volume_growth::tests::test_cvg_resets_on_decrease ... ok [INFO] [stdout] test signals::indicators::consolidation_score::tests::test_cs_unavailable ... ok [INFO] [stdout] test signals::indicators::consecutive_higher_highs::tests::test_consecutive_lower_highs ... ok [INFO] [stdout] test signals::indicators::coppock::tests::test_coppock_flat_price_zero ... ok [INFO] [stdout] test signals::indicators::consolidation_score::tests::test_cs_reset ... ok [INFO] [stdout] test signals::indicators::coppock::tests::test_coppock_reset ... ok [INFO] [stdout] test signals::indicators::consecutive_volume_growth::tests::test_cvg_resets_on_flat ... ok [INFO] [stdout] test signals::indicators::coppock::tests::test_coppock_zero_period_error ... ok [INFO] [stdout] test signals::indicators::coral_trend::tests::test_coral_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::coral_trend::tests::test_coral_flat_price_equals_price ... ok [INFO] [stdout] test signals::indicators::coppock::tests::test_coppock_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::coral_trend::tests::test_coral_ready_immediately ... ok [INFO] [stdout] test signals::indicators::coral_trend::tests::test_coral_reset ... ok [INFO] [stdout] test signals::indicators::coral_trend::tests::test_coral_accessor ... ok [INFO] [stdout] test signals::indicators::ctm::tests::test_ctm_produces_partial_score_early ... ok [INFO] [stdout] test signals::indicators::coral_trend::tests::test_coral_bullish_in_uptrend ... ok [INFO] [stdout] test signals::indicators::cum_return_momentum::tests::test_crm_flat_zero ... ok [INFO] [stdout] test signals::indicators::cumulative_delta::tests::test_cd_invalid ... ok [INFO] [stdout] test signals::indicators::coral_trend::tests::test_coral_bearish_in_downtrend ... ok [INFO] [stdout] test signals::indicators::ctm::tests::test_ctm_period ... ok [INFO] [stdout] test signals::indicators::cum_return_momentum::tests::test_crm_ten_percent_return ... ok [INFO] [stdout] test signals::indicators::cumulative_delta::tests::test_cd_mixed ... ok [INFO] [stdout] test signals::indicators::cumulative_log_return::tests::test_clr_no_change_zero ... ok [INFO] [stdout] test signals::indicators::cumulative_delta::tests::test_cd_sum ... ok [INFO] [stdout] test signals::indicators::cumulative_log_return::tests::test_clr_period_and_name ... ok [INFO] [stdout] test signals::indicators::cumulative_log_return::tests::test_clr_accumulates_over_bars ... ok [INFO] [stdout] test signals::indicators::cumulative_log_return::tests::test_clr_roundtrip_returns_zero ... ok [INFO] [stdout] test signals::indicators::cumulative_log_return::tests::test_clr_falling_market_negative ... ok [INFO] [stdout] test signals::indicators::cumulative_log_return::tests::test_clr_reset ... ok [INFO] [stdout] test signals::indicators::cumulative_delta::tests::test_cd_reset ... ok [INFO] [stdout] test signals::indicators::cusum_price_change::tests::test_cusum_flat_prices_unavailable ... ok [INFO] [stdout] test signals::indicators::cusum_price_change::tests::test_cusum_invalid_period ... ok [INFO] [stdout] test signals::indicators::cusum_price_change::tests::test_cusum_noisy_uptrend_gives_scalar ... ok [INFO] [stdout] test signals::indicators::cumulative_log_return::tests::test_clr_unavailable_on_first_bar ... ok [INFO] [stdout] test signals::indicators::cumulative_volume::tests::test_cv_period_0_error ... ok [INFO] [stdout] test signals::indicators::cumulative_volume::tests::test_cv_reset ... ok [INFO] [stdout] test signals::indicators::cusum_price_change::tests::test_cusum_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::cumulative_delta::tests::test_cd_unavailable ... ok [INFO] [stdout] test signals::indicators::cumulative_volume::tests::test_cv_sum_correct ... ok [INFO] [stdout] test signals::indicators::cyber_cycle::tests::test_cc_period_zero_invalid ... ok [INFO] [stdout] test signals::indicators::cyber_cycle::tests::test_cc_ready_after_four_bars ... ok [INFO] [stdout] test signals::indicators::daily_return_skew::tests::test_drs_invalid_period ... ok [INFO] [stdout] test signals::indicators::cumulative_volume::tests::test_cv_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::daily_return_skew::tests::test_drs_positive_spike_gives_positive_skew ... ok [INFO] [stdout] test signals::indicators::ctm::tests::test_ctm_all_above_gives_100 ... ok [INFO] [stdout] test signals::indicators::cyber_cycle::tests::test_cc_reset ... ok [INFO] [stdout] test signals::indicators::cyber_cycle::tests::test_cc_flat_price_near_zero_cycle ... ok [INFO] [stdout] test signals::indicators::cusum_price_change::tests::test_cusum_reset ... ok [INFO] [stdout] test signals::indicators::cumulative_volume::tests::test_cv_rolls_out_old ... ok [INFO] [stdout] test signals::indicators::cyber_cycle::tests::test_cc_unavailable_before_four_bars ... ok [INFO] [stdout] test signals::indicators::daily_return_skew::tests::test_drs_reset ... ok [INFO] [stdout] test signals::indicators::daily_return_skew::tests::test_drs_symmetric_returns_near_zero ... ok [INFO] [stdout] test signals::indicators::daily_return_skew::tests::test_drs_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::dark_cloud_cover::tests::test_dark_cloud_cover_detected ... ok [INFO] [stdout] test signals::indicators::dark_cloud_cover::tests::test_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::dark_cloud_cover::tests::test_no_pattern_prev_bearish ... ok [INFO] [stdout] test signals::indicators::dark_cloud_cover::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::dark_cloud_cover::tests::test_no_pattern_cur_not_bearish ... ok [INFO] [stdout] test signals::indicators::delta_momentum::tests::test_dm_invalid_period ... ok [INFO] [stdout] test signals::indicators::delta_momentum::tests::test_dm_accelerating_trend_positive ... ok [INFO] [stdout] test signals::indicators::ctm::tests::test_ctm_reset ... ok [INFO] [stdout] test signals::indicators::delta_volume::tests::test_delta_volume_positive_increase ... ok [INFO] [stdout] test signals::indicators::delta_momentum::tests::test_dm_constant_price_gives_zero_delta ... ok [INFO] [stdout] test signals::indicators::delta_volume::tests::test_delta_volume_zero_change ... ok [INFO] [stdout] test signals::indicators::delta_volume::tests::test_delta_volume_reset ... ok [INFO] [stdout] test signals::indicators::dema::tests::test_dema_constant_price_equals_price ... ok [INFO] [stdout] test signals::indicators::dema::tests::test_dema_period_0_error ... ok [INFO] [stdout] test signals::indicators::dark_cloud_cover::tests::test_no_pattern_cur_not_below_midpoint ... ok [INFO] [stdout] test signals::indicators::dema::tests::test_dema_reacts_faster_than_ema_to_jump ... ok [INFO] [stdout] test signals::indicators::delta_momentum::tests::test_dm_reset ... ok [INFO] [stdout] test signals::indicators::delta_momentum::tests::test_dm_unavailable_during_warm_up ... ok [INFO] [stdout] test signals::indicators::delta_volume::tests::test_delta_volume_negative_decrease ... ok [INFO] [stdout] test signals::indicators::delta_volume::tests::test_delta_volume_period_is_1 ... ok [INFO] [stdout] test signals::indicators::delta_volume::tests::test_delta_volume_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::delta_momentum::tests::test_dm_linear_trend_gives_zero_delta ... ok [INFO] [stdout] test signals::indicators::dema::tests::test_dema_ready_at_2_period_minus_1 ... ok [INFO] [stdout] test signals::indicators::dema::tests::test_dema_unavailable_before_ready ... ok [INFO] [stdout] test signals::indicators::dema::tests::test_dema_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::dema_cross::tests::test_dema_cross_bullish_cross ... ok [INFO] [stdout] test signals::indicators::dema_cross::tests::test_dema_cross_invalid ... ok [INFO] [stdout] test signals::indicators::dema_cross::tests::test_dema_cross_flat_no_cross ... ok [INFO] [stdout] test signals::indicators::dema_cross::tests::test_dema_cross_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::dema_cross::tests::test_dema_cross_reset ... ok [INFO] [stdout] test signals::indicators::dema_ratio::tests::test_dr_flat_is_one ... ok [INFO] [stdout] test signals::indicators::dema_ratio::tests::test_dr_invalid ... ok [INFO] [stdout] test signals::indicators::dema_ratio::tests::test_dr_reset ... ok [INFO] [stdout] test signals::indicators::dema_ratio::tests::test_dr_step_up_above_one ... ok [INFO] [stdout] test signals::indicators::dema_ratio::tests::test_dr_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::deviation_from_ma::tests::test_deviation_above_ma_positive ... ok [INFO] [stdout] test signals::indicators::deviation_from_ma::tests::test_deviation_below_ma_negative ... ok [INFO] [stdout] test signals::indicators::deviation_from_ma::tests::test_deviation_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::deviation_from_ma::tests::test_deviation_invalid_period ... ok [INFO] [stdout] test signals::indicators::deviation_from_ma::tests::test_deviation_reset ... ok [INFO] [stdout] test signals::indicators::deviation_from_ma::tests::test_deviation_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::didi_index::tests::test_bullish_needle_positive ... ok [INFO] [stdout] test signals::indicators::didi_index::tests::test_constant_price_needle_zero ... ok [INFO] [stdout] test signals::indicators::didi_index::tests::test_invalid_period_fails ... ok [INFO] [stdout] test signals::indicators::didi_index::tests::test_period_returns_long ... ok [INFO] [stdout] test signals::indicators::didi_index::tests::test_ready_after_long_period ... ok [INFO] [stdout] test signals::indicators::didi_index::tests::test_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::didi_index::tests::test_unavailable_before_long_period ... ok [INFO] [stdout] test signals::indicators::direction_changes::tests::test_dc_alternating_series_max ... ok [INFO] [stdout] test signals::indicators::direction_changes::tests::test_dc_invalid_period ... ok [INFO] [stdout] test signals::indicators::direction_changes::tests::test_dc_non_negative ... ok [INFO] [stdout] test signals::indicators::direction_changes::tests::test_dc_reset ... ok [INFO] [stdout] test signals::indicators::direction_changes::tests::test_dc_trending_series_zero ... ok [INFO] [stdout] test signals::indicators::direction_changes::tests::test_dc_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::directional_candle_ratio::tests::test_all_bearish_gives_zero ... ok [INFO] [stdout] test signals::indicators::directional_candle_ratio::tests::test_all_bullish_gives_one ... ok [INFO] [stdout] test signals::indicators::directional_candle_ratio::tests::test_half_bullish ... ok [INFO] [stdout] test signals::indicators::directional_candle_ratio::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::directional_candle_ratio::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::directional_efficiency::tests::test_de_monotonic_trend_is_one ... ok [INFO] [stdout] test signals::indicators::directional_candle_ratio::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::directional_efficiency::tests::test_de_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::directional_efficiency::tests::test_de_flat_is_unavailable ... ok [INFO] [stdout] test signals::indicators::disparity::tests::test_disparity_invalid_period ... ok [INFO] [stdout] test signals::indicators::disparity::tests::test_disparity_price_above_sma_positive ... ok [INFO] [stdout] test signals::indicators::directional_efficiency::tests::test_de_invalid_period ... ok [INFO] [stdout] test signals::indicators::disparity::tests::test_disparity_reset ... ok [INFO] [stdout] test signals::indicators::disparity::tests::test_disparity_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::directional_efficiency::tests::test_de_oscillating_is_low ... ok [INFO] [stdout] test signals::indicators::disparity::tests::test_disparity_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::directional_efficiency::tests::test_de_reset ... ok [INFO] [stdout] test signals::indicators::disparity::tests::test_disparity_price_below_sma_negative ... ok [INFO] [stdout] test signals::indicators::dmi::tests::test_dmi_flat_market_near_zero ... ok [INFO] [stdout] test signals::indicators::dmi::tests::test_dmi_period_0_error ... ok [INFO] [stdout] test signals::indicators::dmi::tests::test_dmi_reset ... ok [INFO] [stdout] test signals::indicators::dmi::tests::test_dmi_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::dmi::tests::test_dmi_uptrend_positive ... ok [INFO] [stdout] test signals::indicators::doji_detector::tests::test_doji_always_ready ... ok [INFO] [stdout] test signals::indicators::doji_detector::tests::test_doji_detects_doji ... ok [INFO] [stdout] test signals::indicators::doji_detector::tests::test_doji_invalid_threshold ... ok [INFO] [stdout] test signals::indicators::doji_detector::tests::test_doji_rejects_non_doji ... ok [INFO] [stdout] test signals::indicators::doji_detector::tests::test_doji_zero_range ... ok [INFO] [stdout] test signals::indicators::donchian::tests::test_donchian_constant_bars ... ok [INFO] [stdout] test signals::indicators::donchian::tests::test_donchian_midpoint_correct ... ok [INFO] [stdout] test signals::indicators::donchian::tests::test_donchian_period_0_error ... ok [INFO] [stdout] test signals::indicators::donchian::tests::test_donchian_reset ... ok [INFO] [stdout] test signals::indicators::donchian::tests::test_donchian_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::donchian_width::tests::test_dw_basic_width ... ok [INFO] [stdout] test signals::indicators::donchian_width::tests::test_dw_single_bar ... ok [INFO] [stdout] test signals::indicators::downside_deviation::tests::test_downside_deviation_no_losses ... ok [INFO] [stdout] test signals::indicators::downside_deviation::tests::test_downside_deviation_not_ready ... ok [INFO] [stdout] test signals::indicators::dpo::tests::test_dpo_flat_series_is_zero ... ok [INFO] [stdout] test signals::indicators::dpo::tests::test_dpo_period_accessor ... ok [INFO] [stdout] test signals::indicators::dpo::tests::test_dpo_period_less_than_2_fails ... ok [INFO] [stdout] test signals::indicators::dpo::tests::test_dpo_reset ... ok [INFO] [stdout] test signals::indicators::dpo::tests::test_dpo_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::dsp::tests::test_dsp_flat_price_converges_to_zero ... ok [INFO] [stdout] test signals::indicators::dsp::tests::test_dsp_invalid_period ... ok [INFO] [stdout] test signals::indicators::dsp::tests::test_dsp_reset ... ok [INFO] [stdout] test signals::indicators::dsp::tests::test_dsp_scalar_after_warmup ... ok [INFO] [stdout] test signals::indicators::dsp::tests::test_dsp_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::dual_atr_ratio::tests::test_dar_constant_tr_gives_one ... ok [INFO] [stdout] test signals::indicators::dual_atr_ratio::tests::test_dar_invalid_period ... ok [INFO] [stdout] test signals::indicators::dual_atr_ratio::tests::test_dar_non_negative ... ok [INFO] [stdout] test signals::indicators::dual_atr_ratio::tests::test_dar_reset ... ok [INFO] [stdout] test signals::indicators::dual_momentum::tests::test_flat_price_zero_momentum ... ok [INFO] [stdout] test signals::indicators::dual_momentum::tests::test_invalid_params ... ok [INFO] [stdout] test signals::indicators::dual_momentum::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::dual_momentum::tests::test_rising_price_positive_momentum ... ok [INFO] [stdout] test signals::indicators::dual_momentum::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::dual_rsi::tests::test_dual_rsi_invalid ... ok [INFO] [stdout] test signals::indicators::dual_rsi::tests::test_dual_rsi_produces_scalar_after_warmup ... ok [INFO] [stdout] test signals::indicators::dual_rsi::tests::test_dual_rsi_reset ... ok [INFO] [stdout] test signals::indicators::dual_rsi::tests::test_dual_rsi_unavailable_early ... ok [INFO] [stdout] test signals::indicators::dual_rsi::tests::test_dual_rsi_value_in_range ... ok [INFO] [stdout] test signals::indicators::dynamic_momentum_index::tests::test_dymi_invalid_base_period ... ok [INFO] [stdout] test signals::indicators::dynamic_momentum_index::tests::test_dymi_invalid_max_less_than_min ... ok [INFO] [stdout] test signals::indicators::dynamic_momentum_index::tests::test_dymi_invalid_min_period ... ok [INFO] [stdout] test signals::indicators::dynamic_momentum_index::tests::test_dymi_period_is_max_period ... ok [INFO] [stdout] test signals::indicators::dynamic_momentum_index::tests::test_dymi_output_in_range ... ok [INFO] [stdout] test signals::indicators::dynamic_momentum_index::tests::test_dymi_produces_value_after_warm_up ... ok [INFO] [stdout] test signals::indicators::dynamic_momentum_index::tests::test_dymi_reset ... ok [INFO] [stdout] test signals::indicators::dynamic_momentum_index::tests::test_dymi_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::ease_of_movement::tests::test_emv_invalid_period ... ok [INFO] [stdout] test signals::indicators::dual_atr_ratio::tests::test_dar_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::ease_of_movement::tests::test_emv_positive_on_rising_prices ... ok [INFO] [stdout] test signals::indicators::ease_of_movement::tests::test_emv_unavailable_initially ... ok [INFO] [stdout] test signals::indicators::ease_of_movement::tests::test_emv_zero_range_gives_unavailable ... ok [INFO] [stdout] test signals::indicators::efficiency_ratio::tests::test_er_choppy_less_than_one ... ok [INFO] [stdout] test signals::indicators::ease_of_movement::tests::test_emv_reset ... ok [INFO] [stdout] test signals::indicators::efficiency_ratio::tests::test_er_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::efficiency_ratio::tests::test_er_invalid ... ok [INFO] [stdout] test signals::indicators::efficiency_ratio::tests::test_er_reset ... ok [INFO] [stdout] test signals::indicators::efficiency_ratio::tests::test_er_range_0_to_1 ... ok [INFO] [stdout] test signals::indicators::efficiency_ratio::tests::test_er_trending_is_one ... ok [INFO] [stdout] test signals::indicators::efficiency_ratio::tests::test_er_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::elastic_volume_weighted_ma::tests::test_high_volume_bar_pulls_more ... ok [INFO] [stdout] test signals::indicators::elastic_volume_weighted_ma::tests::test_constant_price_returns_constant ... ok [INFO] [stdout] test signals::indicators::elastic_volume_weighted_ma::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::elastic_volume_weighted_ma::tests::test_ready_after_period ... ok [INFO] [stdout] test signals::indicators::elastic_volume_weighted_ma::tests::test_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::elastic_volume_weighted_ma::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::elastic_volume_weighted_ma::tests::test_zero_volume_uses_close ... ok [INFO] [stdout] test signals::indicators::elder::tests::test_elder_flat_series_zero_net ... ok [INFO] [stdout] test signals::indicators::elder::tests::test_elder_period_0_fails ... ok [INFO] [stdout] test signals::indicators::elder::tests::test_elder_reset ... ok [INFO] [stdout] test signals::indicators::elder::tests::test_elder_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::elder_impulse::tests::test_elder_impulse_invalid ... ok [INFO] [stdout] test signals::indicators::elder_impulse::tests::test_elder_impulse_produces_scalar ... ok [INFO] [stdout] test signals::indicators::elder_impulse::tests::test_elder_impulse_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::elder_impulse::tests::test_elder_impulse_reset ... ok [INFO] [stdout] test signals::indicators::ema::tests::test_ema_convergence_to_constant_series ... ok [INFO] [stdout] test signals::indicators::ema::tests::test_ema_faster_than_sma ... ok [INFO] [stdout] test signals::indicators::ema::tests::test_ema_first_value_equals_sma_seed ... ok [INFO] [stdout] test signals::indicators::ema::tests::test_ema_is_ready_after_period ... ok [INFO] [stdout] test signals::indicators::ema::tests::test_ema_not_ready_before_period ... ok [INFO] [stdout] test signals::indicators::ema::tests::test_ema_period_0_returns_invalid_period_error ... ok [INFO] [stdout] test signals::indicators::ema::tests::test_ema_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::ema::tests::test_ema_single_value_period_1 ... ok [INFO] [stdout] test signals::indicators::ema::tests::test_ema_subsequent_values_weighted ... ok [INFO] [stdout] test signals::indicators::ema_alignment::tests::test_ea_always_ready ... ok [INFO] [stdout] test signals::indicators::ema_alignment::tests::test_ea_bearish_downtrend ... ok [INFO] [stdout] test signals::indicators::ema::tests::test_ema_small_positive_values_no_panic ... ok [INFO] [stdout] test signals::indicators::ema_alignment::tests::test_ea_bullish_uptrend ... ok [INFO] [stdout] test signals::indicators::ema_alignment::tests::test_ea_invalid ... ok [INFO] [stdout] test signals::indicators::ema_alignment::tests::test_ea_reset ... ok [INFO] [stdout] test signals::indicators::ema_band_width::tests::test_ebw_constant_price_zero_width ... ok [INFO] [stdout] test signals::indicators::ema_band_width::tests::test_ebw_invalid_periods ... ok [INFO] [stdout] test signals::indicators::ema_band_width::tests::test_ebw_reset ... ok [INFO] [stdout] test signals::indicators::ema_band_width::tests::test_ebw_unavailable_before_slow_period ... ok [INFO] [stdout] test signals::indicators::ema_convergence::tests::test_ec_diverging_positive ... ok [INFO] [stdout] test signals::indicators::ema_band_width::tests::test_ebw_uptrend_positive ... ok [INFO] [stdout] test signals::indicators::ema_convergence::tests::test_ec_flat_converges_to_zero ... ok [INFO] [stdout] test signals::indicators::ema_convergence::tests::test_ec_invalid ... ok [INFO] [stdout] test signals::indicators::ema_convergence::tests::test_ec_non_negative ... ok [INFO] [stdout] test signals::indicators::ema_convergence::tests::test_ec_reset ... ok [INFO] [stdout] test signals::indicators::ema_convergence::tests::test_ec_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::ema_cross::tests::test_ema_cross_invalid ... ok [INFO] [stdout] test signals::indicators::ema_cross::tests::test_ema_cross_detects_bullish_cross ... ok [INFO] [stdout] test signals::indicators::ema_cross::tests::test_ema_cross_no_cross_flat ... ok [INFO] [stdout] test signals::indicators::ema_cross::tests::test_ema_cross_reset ... ok [INFO] [stdout] test signals::indicators::ema_cross::tests::test_ema_cross_unavailable_before_slow ... ok [INFO] [stdout] test signals::indicators::ema_ratio::tests::test_er_constant_prices_zero_ratio ... ok [INFO] [stdout] test signals::indicators::ema_ratio::tests::test_er_period_and_name ... ok [INFO] [stdout] test signals::indicators::ema_ratio::tests::test_er_ready_after_slow_period ... ok [INFO] [stdout] test signals::indicators::ema_ratio::tests::test_er_reset ... ok [INFO] [stdout] test signals::indicators::ema_ratio::tests::test_er_rising_market_positive ... ok [INFO] [stdout] test signals::indicators::ema_slope::tests::test_ema_slope_downtrend_negative ... ok [INFO] [stdout] test signals::indicators::ema_ratio::tests::test_er_unavailable_before_slow_period ... ok [INFO] [stdout] test signals::indicators::ema_slope::tests::test_ema_slope_invalid ... ok [INFO] [stdout] test signals::indicators::ema_slope::tests::test_ema_slope_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::ema_slope::tests::test_ema_slope_reset ... ok [INFO] [stdout] test signals::indicators::ema_slope::tests::test_ema_slope_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::ema_slope::tests::test_ema_slope_uptrend_positive ... ok [INFO] [stdout] test signals::indicators::ema_ratio::tests::test_er_invalid_period ... ok [INFO] [stdout] test signals::indicators::emv::tests::test_emv_period_and_name ... ok [INFO] [stdout] test signals::indicators::emv::tests::test_emv_ready_after_period_bars ... ok [INFO] [stdout] test signals::indicators::emv::tests::test_emv_invalid_period ... ok [INFO] [stdout] test signals::indicators::emv::tests::test_emv_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::emv::tests::test_emv_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::emv::tests::test_emv_zero_volume_skipped ... ok [INFO] [stdout] test signals::indicators::engulfing_detector::tests::test_ed_bearish_engulfing ... ok [INFO] [stdout] test signals::indicators::engulfing_detector::tests::test_ed_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::engulfing_detector::tests::test_ed_no_engulfing ... ok [INFO] [stdout] test signals::indicators::engulfing_detector::tests::test_ed_reset ... ok [INFO] [stdout] test signals::indicators::engulfing_detector::tests::test_ed_bullish_engulfing ... ok [INFO] [stdout] test signals::indicators::engulfing_pattern::tests::test_ep_bearish_engulfing ... ok [INFO] [stdout] test signals::indicators::engulfing_pattern::tests::test_ep_bullish_engulfing ... ok [INFO] [stdout] test signals::indicators::engulfing_pattern::tests::test_ep_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::engulfing_pattern::tests::test_ep_no_pattern ... ok [INFO] [stdout] test signals::indicators::engulfing_pattern::tests::test_ep_reset ... ok [INFO] [stdout] test signals::indicators::env::tests::test_env_bands_correct ... ok [INFO] [stdout] test signals::indicators::env::tests::test_env_invalid_pct ... ok [INFO] [stdout] test signals::indicators::env::tests::test_env_invalid_period ... ok [INFO] [stdout] test signals::indicators::env::tests::test_env_period_and_name ... ok [INFO] [stdout] test signals::indicators::env::tests::test_env_reset ... ok [INFO] [stdout] test signals::indicators::env::tests::test_env_scalar_is_sma ... ok [INFO] [stdout] test signals::indicators::env::tests::test_env_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::evening_star::tests::test_evening_star_detected ... ok [INFO] [stdout] test signals::indicators::evening_star::tests::test_invalid_pct_fails ... ok [INFO] [stdout] test signals::indicators::evening_star::tests::test_no_pattern_bar3_doesnt_close_below_midpoint ... ok [INFO] [stdout] test signals::indicators::evening_star::tests::test_no_pattern_bearish_bar1 ... ok [INFO] [stdout] test signals::indicators::evening_star::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::fair_value_gap::tests::test_fvg_bearish_gap_negative ... ok [INFO] [stdout] test signals::indicators::evening_star::tests::test_unavailable_before_two_bars ... ok [INFO] [stdout] test signals::indicators::fair_value_gap::tests::test_fvg_invalid_period ... ok [INFO] [stdout] test signals::indicators::fair_value_gap::tests::test_fvg_no_gap_gives_zero ... ok [INFO] [stdout] test signals::indicators::fair_value_gap::tests::test_fvg_reset ... ok [INFO] [stdout] test signals::indicators::fair_value_gap::tests::test_fvg_unavailable_before_atr_period_plus_2 ... ok [INFO] [stdout] test signals::indicators::fibonacci_retrace::tests::test_fib_levels_correct ... ok [INFO] [stdout] test signals::indicators::fibonacci_retrace::tests::test_fib_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::fair_value_gap::tests::test_fvg_period_and_name ... ok [INFO] [stdout] test signals::indicators::fibonacci_retrace::tests::test_fib_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::fibonacci_retrace::tests::test_fib_scalar_is_618_level ... ok [INFO] [stdout] test signals::indicators::fisher::tests::test_fisher_negative_when_close_below_mid ... ok [INFO] [stdout] test signals::indicators::fisher::tests::test_fisher_period_accessor ... ok [INFO] [stdout] test signals::indicators::fibonacci_retrace::tests::test_fib_reset ... ok [INFO] [stdout] test signals::indicators::fisher::tests::test_fisher_ready_after_period_bars ... ok [INFO] [stdout] test signals::indicators::fisher::tests::test_fisher_positive_when_close_above_mid ... ok [INFO] [stdout] test signals::indicators::fisher::tests::test_fisher_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::fisher::tests::test_fisher_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::fisher::tests::test_fisher_zero_at_midpoint ... ok [INFO] [stdout] test signals::indicators::flat_bar_pct::tests::test_fb_half_flat ... ok [INFO] [stdout] test signals::indicators::flat_bar_pct::tests::test_fb_no_flat_is_0 ... ok [INFO] [stdout] test signals::indicators::fisher::tests::test_fisher_name_accessor ... ok [INFO] [stdout] test signals::indicators::fisher::tests::test_fisher_flat_range_returns_unavailable ... ok [INFO] [stdout] test signals::indicators::flat_bar_pct::tests::test_fb_all_flat_is_100 ... ok [INFO] [stdout] test signals::indicators::fractal_dimension_index::tests::test_ready_after_period ... ok [INFO] [stdout] test signals::indicators::flat_bar_pct::tests::test_fb_period_0_error ... ok [INFO] [stdout] test signals::indicators::force_index::tests::test_force_index_negative_on_price_drop ... ok [INFO] [stdout] test signals::indicators::fractal_dimension_index::tests::test_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::flat_bar_pct::tests::test_fb_reset ... ok [INFO] [stdout] test signals::indicators::fisher::tests::test_fisher_invalid_period ... ok [INFO] [stdout] test signals::indicators::fibonacci_retrace::tests::test_fib_accessors_before_ready_return_none ... ok [INFO] [stdout] test signals::indicators::fair_value_gap::tests::test_fvg_bullish_gap_positive ... ok [INFO] [stdout] test signals::indicators::force_index::tests::test_force_index_ready_after_warmup ... ok [INFO] [stdout] test signals::indicators::force_index::tests::test_force_index_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::force_index::tests::test_force_index_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::force_index::tests::test_force_index_zero_volume_gives_zero ... ok [INFO] [stdout] test signals::indicators::force_index::tests::test_force_index_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::fractal_dimension_index::tests::test_period_too_small_fails ... ok [INFO] [stdout] test signals::indicators::flat_bar_pct::tests::test_fb_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::fractal_dimension_index::tests::test_trending_series_low_fdi ... ok [INFO] [stdout] test signals::indicators::fractal_dimension_index::tests::test_value_in_range ... ok [INFO] [stdout] test signals::indicators::frama::tests::test_frama_invalid_period_odd ... ok [INFO] [stdout] test signals::indicators::fractal_dimension_index::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::frama::tests::test_frama_flat_prices_tracks_close ... ok [INFO] [stdout] test signals::indicators::frama::tests::test_frama_produces_scalar_after_period ... ok [INFO] [stdout] test signals::indicators::frama::tests::test_frama_invalid_period_too_small ... ok [INFO] [stdout] test signals::indicators::frama::tests::test_frama_period ... ok [INFO] [stdout] test signals::indicators::frama::tests::test_frama_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::frama::tests::test_frama_reset ... ok [INFO] [stdout] test signals::indicators::gann_hilo::tests::test_gann_hilo_invalid_period ... ok [INFO] [stdout] test signals::indicators::gann_hilo::tests::test_gann_hilo_produces_scalar ... ok [INFO] [stdout] test signals::indicators::gann_hilo::tests::test_gann_hilo_reset ... ok [INFO] [stdout] test signals::indicators::gann_hilo::tests::test_gann_hilo_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::gap_body_ratio::tests::test_gbr_no_gap_returns_zero ... ok [INFO] [stdout] test signals::indicators::gap_body_ratio::tests::test_gbr_period_is_one ... ok [INFO] [stdout] test signals::indicators::gap_body_ratio::tests::test_gbr_ready_after_second_bar ... ok [INFO] [stdout] test signals::indicators::gap_body_ratio::tests::test_gbr_reset ... ok [INFO] [stdout] test signals::indicators::gann_hilo::tests::test_gann_hilo_flat_stays_at_price ... ok [INFO] [stdout] test signals::indicators::gap_continuation_ratio::tests::test_gcr_all_continuation_one ... ok [INFO] [stdout] test signals::indicators::gap_continuation_ratio::tests::test_gcr_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::gap_body_ratio::tests::test_gbr_body_larger_than_gap ... ok [INFO] [stdout] test signals::indicators::gap_body_ratio::tests::test_gbr_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::gap_continuation_ratio::tests::test_gcr_invalid_period ... ok [INFO] [stdout] test signals::indicators::gap_body_ratio::tests::test_gbr_gap_larger_than_body ... ok [INFO] [stdout] test signals::indicators::gap_body_ratio::tests::test_gbr_doji_returns_unavailable ... ok [INFO] [stdout] test signals::indicators::gap_continuation_ratio::tests::test_gcr_no_gaps_zero ... ok [INFO] [stdout] test signals::indicators::gap_continuation_ratio::tests::test_gcr_reset ... ok [INFO] [stdout] test signals::indicators::gap_continuation_ratio::tests::test_gcr_reversal_zero ... ok [INFO] [stdout] test signals::indicators::gap_continuation_ratio::tests::test_gcr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::gap_detector::tests::test_gap_down ... ok [INFO] [stdout] test signals::indicators::gap_detector::tests::test_gap_no_gap ... ok [INFO] [stdout] test signals::indicators::gap_detector::tests::test_gap_reset ... ok [INFO] [stdout] test signals::indicators::gap_detector::tests::test_gap_up ... ok [INFO] [stdout] test signals::indicators::gap_direction_streak::tests::test_gds_consecutive_gap_ups_increment ... ok [INFO] [stdout] test signals::indicators::gap_direction_streak::tests::test_gds_direction_change_resets_to_one ... ok [INFO] [stdout] test signals::indicators::gap_direction_streak::tests::test_gds_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::gap_detector::tests::test_gap_unavailable_first_bar ... ok [INFO] [stdout] test signals::indicators::gap_direction_streak::tests::test_gds_first_gap_up_gives_one ... ok [INFO] [stdout] test signals::indicators::gap_direction_streak::tests::test_gds_flat_open_resets_to_zero ... ok [INFO] [stdout] test signals::indicators::gap_direction_streak::tests::test_gds_period_is_one ... ok [INFO] [stdout] test signals::indicators::gap_direction_streak::tests::test_gds_ready_after_second_bar ... ok [INFO] [stdout] test signals::indicators::gap_direction_streak::tests::test_gds_reset ... ok [INFO] [stdout] test signals::indicators::gap_fill_detector::tests::test_gfd_first_bar_is_zero ... ok [INFO] [stdout] test signals::indicators::gap_fill_detector::tests::test_gfd_gap_up_filled ... ok [INFO] [stdout] test signals::indicators::gap_fill_detector::tests::test_gfd_gap_up_not_filled ... ok [INFO] [stdout] test signals::indicators::gap_fill_detector::tests::test_gfd_reset ... ok [INFO] [stdout] test signals::indicators::gap_fill_ratio::tests::test_gfr_gap_filled ... ok [INFO] [stdout] test signals::indicators::gap_fill_ratio::tests::test_gfr_no_gaps ... ok [INFO] [stdout] test signals::indicators::gap_momentum::tests::test_gm_invalid_period ... ok [INFO] [stdout] test signals::indicators::gap_momentum::tests::test_gm_no_gap_gives_zero ... ok [INFO] [stdout] test signals::indicators::gap_momentum::tests::test_gm_positive_gaps ... ok [INFO] [stdout] test signals::indicators::gap_fill_detector::tests::test_gfd_gap_down_filled ... ok [INFO] [stdout] test signals::indicators::gap_momentum::tests::test_gm_reset ... ok [INFO] [stdout] test signals::indicators::gap_momentum::tests::test_gm_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::gap_range_ratio::tests::test_grr_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::gap_range_ratio::tests::test_grr_gap_up_contribution ... ok [INFO] [stdout] test signals::indicators::gap_range_ratio::tests::test_grr_no_gap_gives_zero ... ok [INFO] [stdout] test signals::indicators::gap_range_ratio::tests::test_grr_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::gap_range_ratio::tests::test_grr_reset ... ok [INFO] [stdout] test signals::indicators::gap_signal::tests::test_gs_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::gap_signal::tests::test_gs_no_gap ... ok [INFO] [stdout] test signals::indicators::gap_signal::tests::test_gs_gap_down ... ok [INFO] [stdout] test signals::indicators::gap_signal::tests::test_gs_gap_up ... ok [INFO] [stdout] test signals::indicators::gap_signal::tests::test_gs_reset ... ok [INFO] [stdout] test signals::indicators::gap_streak::tests::test_gs_consecutive_gap_downs ... ok [INFO] [stdout] test signals::indicators::gap_streak::tests::test_gs_reset ... ok [INFO] [stdout] test signals::indicators::gap_streak::tests::test_gs_flat_open_gives_zero ... ok [INFO] [stdout] test signals::indicators::gap_volatility::tests::test_gv_invalid_period ... ok [INFO] [stdout] test signals::indicators::gap_volatility::tests::test_gv_reset ... ok [INFO] [stdout] test signals::indicators::gap_volatility::tests::test_gv_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::gap_volatility::tests::test_gv_varied_gaps_positive ... ok [INFO] [stdout] test signals::indicators::gap_volatility::tests::test_gv_zero_gaps_zero_std ... ok [INFO] [stdout] test signals::indicators::gap_streak::tests::test_gs_streak_resets_on_direction_change ... ok [INFO] [stdout] test signals::indicators::garman_klass_volatility::tests::test_flat_bar_skipped ... ok [INFO] [stdout] test signals::indicators::garman_klass_volatility::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::garman_klass_volatility::tests::test_ready_after_period ... ok [INFO] [stdout] test signals::indicators::garman_klass_volatility::tests::test_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::garman_klass_volatility::tests::test_sigma_non_negative ... ok [INFO] [stdout] test signals::indicators::gap_streak::tests::test_gs_consecutive_gap_ups ... ok [INFO] [stdout] test signals::indicators::gap_streak::tests::test_gs_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::garman_klass_volatility::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::golden_cross_signal::tests::test_death_cross_falling_trend ... ok [INFO] [stdout] test signals::indicators::golden_cross_signal::tests::test_golden_cross_rising_trend ... ok [INFO] [stdout] test signals::indicators::golden_cross_signal::tests::test_invalid_params ... ok [INFO] [stdout] test signals::indicators::golden_cross_signal::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::golden_cross_signal::tests::test_unavailable_before_slow_period ... ok [INFO] [stdout] test signals::indicators::half_trend::tests::test_half_trend_invalid_amplitude ... ok [INFO] [stdout] test signals::indicators::half_trend::tests::test_half_trend_invalid_period ... ok [INFO] [stdout] test signals::indicators::half_trend::tests::test_half_trend_outputs_one_or_neg_one ... ok [INFO] [stdout] test signals::indicators::half_trend::tests::test_half_trend_period_and_name ... ok [INFO] [stdout] test signals::indicators::half_trend::tests::test_half_trend_reset ... ok [INFO] [stdout] test signals::indicators::half_trend::tests::test_half_trend_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::garman_klass_volatility::tests::test_wider_range_larger_vol ... ok [INFO] [stdout] test signals::indicators::half_trend::tests::test_half_trend_uptrend_on_rising_prices ... ok [INFO] [stdout] test signals::indicators::hammer_detector::tests::test_hd_always_ready ... ok [INFO] [stdout] test signals::indicators::hammer_detector::tests::test_hd_flat_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::hammer_detector::tests::test_hd_hammer_detected ... ok [INFO] [stdout] test signals::indicators::hammer_detector::tests::test_hd_invalid_wick_ratio ... ok [INFO] [stdout] test signals::indicators::hammer_detector::tests::test_hd_neutral_bar_gives_zero ... ok [INFO] [stdout] test signals::indicators::hammer_detector::tests::test_hd_period_and_name ... ok [INFO] [stdout] test signals::indicators::hammer_detector::tests::test_hd_shooting_star_detected ... ok [INFO] [stdout] test signals::indicators::hammer_pattern::tests::test_hp_always_ready ... ok [INFO] [stdout] test signals::indicators::hammer_pattern::tests::test_hp_detects_hammer ... ok [INFO] [stdout] test signals::indicators::hammer_pattern::tests::test_hp_detects_inverted_hammer ... ok [INFO] [stdout] test signals::indicators::hammer_pattern::tests::test_hp_no_pattern_full_body ... ok [INFO] [stdout] test signals::indicators::hammer_pattern::tests::test_hp_reset_is_noop ... ok [INFO] [stdout] test signals::indicators::harami_detector::tests::test_bearish_harami ... ok [INFO] [stdout] test signals::indicators::harami_detector::tests::test_bullish_harami ... ok [INFO] [stdout] test signals::indicators::harami_detector::tests::test_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::harami_detector::tests::test_invalid_pct_fails ... ok [INFO] [stdout] test signals::indicators::harami_detector::tests::test_large_inner_bar_not_harami ... ok [INFO] [stdout] test signals::indicators::harami_detector::tests::test_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::harami_detector::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::heikin_ashi::tests::test_ha_close_formula ... ok [INFO] [stdout] test signals::indicators::heikin_ashi::tests::test_ha_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::heikin_ashi::tests::test_ha_period ... ok [INFO] [stdout] test signals::indicators::heikin_ashi::tests::test_ha_reset ... ok [INFO] [stdout] test signals::indicators::heikin_ashi::tests::test_ha_second_bar_produces_scalar ... ok [INFO] [stdout] test signals::indicators::high_break_count::tests::test_hbc_invalid_period ... ok [INFO] [stdout] test signals::indicators::high_break_count::tests::test_hbc_no_breaks ... ok [INFO] [stdout] test signals::indicators::high_break_count::tests::test_hbc_reset ... ok [INFO] [stdout] test signals::indicators::high_low_crossover::tests::test_hlx_middle_returns_zero ... ok [INFO] [stdout] test signals::indicators::high_low_crossover::tests::test_hlx_new_high_returns_plus1 ... ok [INFO] [stdout] test signals::indicators::high_low_crossover::tests::test_hlx_new_low_returns_minus1 ... ok [INFO] [stdout] test signals::indicators::high_low_crossover::tests::test_hlx_period_0_error ... ok [INFO] [stdout] test signals::indicators::high_break_count::tests::test_hbc_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::high_break_count::tests::test_hbc_all_breaks ... ok [INFO] [stdout] test signals::indicators::high_low_crossover::tests::test_hlx_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::high_low_divergence::tests::test_hl_divergence_bullish ... ok [INFO] [stdout] test signals::indicators::high_low_crossover::tests::test_hlx_reset ... ok [INFO] [stdout] test signals::indicators::high_low_divergence::tests::test_hl_divergence_symmetric_expansion ... ok [INFO] [stdout] test signals::indicators::high_low_midpoint::tests::test_high_low_midpoint_basic ... ok [INFO] [stdout] test signals::indicators::high_low_midpoint::tests::test_high_low_midpoint_rolling ... ok [INFO] [stdout] test signals::indicators::high_low_momentum::tests::test_hlm_constant_bars_zero ... ok [INFO] [stdout] test signals::indicators::high_low_momentum::tests::test_hlm_invalid_period ... ok [INFO] [stdout] test signals::indicators::high_low_momentum::tests::test_hlm_reset ... ok [INFO] [stdout] test signals::indicators::high_low_momentum::tests::test_hlm_trending_up_positive ... ok [INFO] [stdout] test signals::indicators::high_low_momentum::tests::test_hlm_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::high_low_oscillator::tests::test_hlo_close_above_midpoint ... ok [INFO] [stdout] test signals::indicators::high_low_oscillator::tests::test_hlo_close_at_midpoint ... ok [INFO] [stdout] test signals::indicators::high_low_pct::tests::test_hlp_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::high_low_pct::tests::test_hlp_invalid ... ok [INFO] [stdout] test signals::indicators::high_low_pct::tests::test_hlp_known_value ... ok [INFO] [stdout] test signals::indicators::high_low_pct::tests::test_hlp_positive ... ok [INFO] [stdout] test signals::indicators::high_low_pct::tests::test_hlp_reset ... ok [INFO] [stdout] test signals::indicators::high_low_pct::tests::test_hlp_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::high_low_pct_range::tests::test_hlp_known_value ... ok [INFO] [stdout] test signals::indicators::high_low_pct_range::tests::test_hlp_non_negative ... ok [INFO] [stdout] test signals::indicators::high_low_pct_range::tests::test_hlp_reset ... ok [INFO] [stdout] test signals::indicators::high_low_pct_range::tests::test_hlp_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::high_low_persistence::tests::test_hlp_all_inside_bars_one ... ok [INFO] [stdout] test signals::indicators::high_low_persistence::tests::test_hlp_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::high_low_persistence::tests::test_hlp_invalid_period ... ok [INFO] [stdout] test signals::indicators::high_low_persistence::tests::test_hlp_reset ... ok [INFO] [stdout] test signals::indicators::high_low_ratio_ma::tests::test_hlrma_flat_bars_ratio_one ... ok [INFO] [stdout] test signals::indicators::high_low_ratio_ma::tests::test_hlrma_invalid_period ... ok [INFO] [stdout] test signals::indicators::high_low_persistence::tests::test_hlp_no_inside_bars_zero ... ok [INFO] [stdout] test signals::indicators::high_low_ratio_ma::tests::test_hlrma_reset ... ok [INFO] [stdout] test signals::indicators::high_low_ratio_ma::tests::test_hlrma_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::high_low_return_correlation::tests::test_hlrc_not_ready ... ok [INFO] [stdout] test signals::indicators::high_low_return_correlation::tests::test_hlrc_perfect_correlation ... ok [INFO] [stdout] test signals::indicators::high_low_spread::tests::test_hls_invalid_period ... ok [INFO] [stdout] test signals::indicators::high_low_spread::tests::test_hls_known_value ... ok [INFO] [stdout] test signals::indicators::high_low_spread::tests::test_hls_reset ... ok [INFO] [stdout] test signals::indicators::high_low_pct_range::tests::test_hlp_invalid_period ... ok [INFO] [stdout] test signals::indicators::high_low_ratio_ma::tests::test_hlrma_ratio_above_one_for_wide_bar ... ok [INFO] [stdout] test signals::indicators::high_low_spread::tests::test_hls_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::high_low_squeeze::tests::test_hls_compressed_bar_low ... ok [INFO] [stdout] test signals::indicators::high_low_squeeze::tests::test_hls_invalid_period ... ok [INFO] [stdout] test signals::indicators::high_low_squeeze::tests::test_hls_reset ... ok [INFO] [stdout] test signals::indicators::high_low_squeeze::tests::test_hls_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::high_low_squeeze::tests::test_hls_uniform_ranges_100 ... ok [INFO] [stdout] test signals::indicators::high_low_squeeze::tests::test_hls_widest_bar_is_100 ... ok [INFO] [stdout] test signals::indicators::high_low_spread::tests::test_hls_flat_range_zero ... ok [INFO] [stdout] test signals::indicators::high_low_symmetry::tests::test_hls_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::high_low_symmetry::tests::test_hls_in_range ... ok [INFO] [stdout] test signals::indicators::high_low_symmetry::tests::test_hls_invalid_period ... ok [INFO] [stdout] test signals::indicators::high_low_symmetry::tests::test_hls_open_at_high_one ... ok [INFO] [stdout] test signals::indicators::high_low_symmetry::tests::test_hls_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::high_low_symmetry::tests::test_hls_reset ... ok [INFO] [stdout] test signals::indicators::high_low_symmetry::tests::test_hls_symmetric_open_zero ... ok [INFO] [stdout] test signals::indicators::high_minus_prev_close::tests::test_hmpc_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::high_minus_prev_close::tests::test_hmpc_invalid_period ... ok [INFO] [stdout] test signals::indicators::high_minus_prev_close::tests::test_hmpc_no_extension_negative ... ok [INFO] [stdout] test signals::indicators::high_minus_prev_close::tests::test_hmpc_positive_extension ... ok [INFO] [stdout] test signals::indicators::high_minus_prev_close::tests::test_hmpc_ready_after_second_bar ... ok [INFO] [stdout] test signals::indicators::high_minus_prev_close::tests::test_hmpc_reset ... ok [INFO] [stdout] test signals::indicators::high_of_period::tests::test_hop_period_0_error ... ok [INFO] [stdout] test signals::indicators::high_of_period::tests::test_hop_reset ... ok [INFO] [stdout] test signals::indicators::high_of_period::tests::test_hop_rolls_out_old_max ... ok [INFO] [stdout] test signals::indicators::high_of_period::tests::test_hop_returns_max ... ok [INFO] [stdout] test signals::indicators::high_of_period::tests::test_hop_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::high_open_range::tests::test_hor_basic ... ok [INFO] [stdout] test signals::indicators::high_volume_bar_ratio::tests::test_hvbr_invalid_period ... ok [INFO] [stdout] test signals::indicators::high_open_range::tests::test_hor_open_at_high ... ok [INFO] [stdout] test signals::indicators::higher_close_streak::tests::test_hcs_streak_resets_on_flat ... ok [INFO] [stdout] test signals::indicators::high_volume_bar_ratio::tests::test_hvbr_reset ... ok [INFO] [stdout] test signals::indicators::high_volume_bar_ratio::tests::test_hvbr_two_high_two_low ... ok [INFO] [stdout] test signals::indicators::high_volume_bar_ratio::tests::test_hvbr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::higher_low_streak::tests::test_hls_ascending_lows ... ok [INFO] [stdout] test signals::indicators::high_volume_bar_ratio::tests::test_hvbr_uniform_volume_zero ... ok [INFO] [stdout] test signals::indicators::higher_low_streak::tests::test_hls_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::higher_low_streak::tests::test_hls_equal_low_resets ... ok [INFO] [stdout] test signals::indicators::higher_low_streak::tests::test_hls_reset ... ok [INFO] [stdout] test signals::indicators::higher_close_streak::tests::test_hcs_ascending_streak ... ok [INFO] [stdout] test signals::indicators::higher_close_streak::tests::test_hcs_reset ... ok [INFO] [stdout] test signals::indicators::higher_close_streak::tests::test_hcs_unavailable_first_bar ... ok [INFO] [stdout] test signals::indicators::higher_high_count::tests::test_higher_high_count_all_higher ... ok [INFO] [stdout] test signals::indicators::higher_high_lower_low::tests::test_hhll_inside_bar ... ok [INFO] [stdout] test signals::indicators::higher_high_lower_low::tests::test_hhll_neutral ... ok [INFO] [stdout] test signals::indicators::higher_low_count::tests::test_hlc_all_higher_lows ... ok [INFO] [stdout] test signals::indicators::higher_high_count::tests::test_higher_high_count_none_higher ... ok [INFO] [stdout] test signals::indicators::higher_high_lower_low::tests::test_hhll_outside_bar ... ok [INFO] [stdout] test signals::indicators::higher_timeframe_trend::tests::test_invalid_params ... ok [INFO] [stdout] test signals::indicators::higher_timeframe_trend::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::higher_low_count::tests::test_hlc_no_higher_lows ... ok [INFO] [stdout] test signals::indicators::higher_timeframe_trend::tests::test_rising_trend_gives_one ... ok [INFO] [stdout] test signals::indicators::higher_low_streak::tests::test_hls_streak_resets_on_lower_low ... ok [INFO] [stdout] test signals::indicators::historical_volatility::tests::test_hv_constant_prices_zero_vol ... ok [INFO] [stdout] test signals::indicators::higher_timeframe_trend::tests::test_unavailable_before_enough_bars ... ok [INFO] [stdout] test signals::indicators::historical_volatility::tests::test_hv_positive_for_volatile_prices ... ok [INFO] [stdout] test signals::indicators::historical_volatility::tests::test_hv_reset ... ok [INFO] [stdout] test signals::indicators::historical_volatility::tests::test_hv_zero_period_fails ... ok [INFO] [stdout] test signals::indicators::historical_volatility::tests::test_hv_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::hl_midpoint_deviation::tests::test_hmd_close_at_low_negative ... ok [INFO] [stdout] test signals::indicators::hl_midpoint_deviation::tests::test_hmd_close_at_high_positive ... ok [INFO] [stdout] test signals::indicators::hl_midpoint_deviation::tests::test_hmd_close_at_midpoint_zero ... ok [INFO] [stdout] test signals::indicators::hl_midpoint_deviation::tests::test_hmd_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::hl_midpoint_deviation::tests::test_hmd_persistent_upper_closes_positive ... ok [INFO] [stdout] test signals::indicators::hl_midpoint_deviation::tests::test_hmd_invalid_period ... ok [INFO] [stdout] test signals::indicators::hl_ratio::tests::test_hlr_range ... ok [INFO] [stdout] test signals::indicators::hl_midpoint_deviation::tests::test_hmd_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::hl_midpoint_deviation::tests::test_hmd_reset ... ok [INFO] [stdout] test signals::indicators::hl_ratio::tests::test_hlr_reset ... ok [INFO] [stdout] test signals::indicators::hl_ratio::tests::test_hlr_flat_is_one ... ok [INFO] [stdout] test signals::indicators::hullma::tests::test_hullma_period_0_error ... ok [INFO] [stdout] test signals::indicators::hl_ratio::tests::test_hlr_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::hullma::tests::test_hullma_constant_price_equals_price ... ok [INFO] [stdout] test signals::indicators::hullma::tests::test_hullma_period_1 ... ok [INFO] [stdout] test signals::indicators::hl_ratio::tests::test_hlr_invalid ... ok [INFO] [stdout] test signals::indicators::hullma::tests::test_hullma_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::hurst_exponent::tests::test_hurst_invalid_period ... ok [INFO] [stdout] test signals::indicators::hurst_exponent::tests::test_hurst_output_in_range ... ok [INFO] [stdout] test signals::indicators::hurst_exponent::tests::test_hurst_reset ... ok [INFO] [stdout] test signals::indicators::hurst_exponent::tests::test_hurst_trending_above_half ... ok [INFO] [stdout] test signals::indicators::hurst_exponent::tests::test_hurst_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::hurst_exponent::tests::test_hurst_ready_after_warm_up ... ok [INFO] [stdout] test signals::indicators::ichimoku::tests::test_ichimoku_lines_accessor ... ok [INFO] [stdout] test signals::indicators::ichimoku::tests::test_ichimoku_period_0_fails ... ok [INFO] [stdout] test signals::indicators::ichimoku::tests::test_ichimoku_reset ... ok [INFO] [stdout] test signals::indicators::ichimoku::tests::test_ichimoku_tenkan_flat_price_equals_price ... ok [INFO] [stdout] test signals::indicators::ichimoku::tests::test_ichimoku_unavailable_before_tenkan_bars ... ok [INFO] [stdout] test signals::indicators::inertia::tests::test_inertia_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::inertia::tests::test_inertia_flat_near_zero ... ok [INFO] [stdout] test signals::indicators::inertia::tests::test_inertia_invalid ... ok [INFO] [stdout] test signals::indicators::inertia::tests::test_inertia_produces_scalar ... ok [INFO] [stdout] test signals::indicators::inside_bar_counter::tests::test_ibc_inside_bar_gives_one ... ok [INFO] [stdout] test signals::indicators::inside_bar_counter::tests::test_ibc_outside_bar_gives_zero ... ok [INFO] [stdout] test signals::indicators::inertia::tests::test_inertia_reset ... ok [INFO] [stdout] test signals::indicators::inside_bar_counter::tests::test_ibc_outside_bar_resets_streak ... ok [INFO] [stdout] test signals::indicators::inside_bar_ratio::tests::test_inside_bar_ratio_all_inside ... ok [INFO] [stdout] test signals::indicators::inside_bar_ratio::tests::test_inside_bar_ratio_none_inside ... ok [INFO] [stdout] test signals::indicators::inside_bar_counter::tests::test_ibc_consecutive_inside_bars_increments ... ok [INFO] [stdout] test signals::indicators::inside_bar_counter::tests::test_ibc_period_and_name ... ok [INFO] [stdout] test signals::indicators::inside_bar_counter::tests::test_ibc_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::inside_bar_counter::tests::test_ibc_unavailable_on_first_bar ... ok [INFO] [stdout] test signals::indicators::intrabar_momentum::tests::test_ibm_all_bearish_negative ... ok [INFO] [stdout] test signals::indicators::intrabar_momentum::tests::test_ibm_all_bullish_positive ... ok [INFO] [stdout] test signals::indicators::inside_bar_counter::tests::test_ibc_reset ... ok [INFO] [stdout] test signals::indicators::intrabar_momentum::tests::test_ibm_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::intrabar_momentum::tests::test_ibm_invalid_period ... ok [INFO] [stdout] test signals::indicators::intrabar_momentum::tests::test_ibm_reset ... ok [INFO] [stdout] test signals::indicators::intrabar_momentum::tests::test_ibm_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::intrabar_return::tests::test_ir_bullish_bar ... ok [INFO] [stdout] test signals::indicators::intrabar_return::tests::test_ir_always_ready ... ok [INFO] [stdout] test signals::indicators::intraday_spread_pct::tests::test_isp_always_ready ... ok [INFO] [stdout] test signals::indicators::intrabar_return::tests::test_ir_bearish_bar ... ok [INFO] [stdout] test signals::indicators::intraday_spread_pct::tests::test_isp_period_is_1 ... ok [INFO] [stdout] test signals::indicators::intraday_spread_pct::tests::test_isp_spread_correct ... ok [INFO] [stdout] test signals::indicators::intraday_spread_pct::tests::test_isp_zero_range_is_zero ... ok [INFO] [stdout] test signals::indicators::jurik_ma::tests::test_jma_constant_price_returns_constant ... ok [INFO] [stdout] test signals::indicators::jurik_ma::tests::test_jma_follows_trend ... ok [INFO] [stdout] test signals::indicators::jurik_ma::tests::test_jma_period_one_fails ... ok [INFO] [stdout] test signals::indicators::jurik_ma::tests::test_jma_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::jurik_ma::tests::test_jma_reset ... ok [INFO] [stdout] test signals::indicators::kama::tests::test_kama_flat_prices_stays_near_price ... ok [INFO] [stdout] test signals::indicators::kama::tests::test_kama_invalid_period ... ok [INFO] [stdout] test signals::indicators::intrabar_return::tests::test_ir_doji_bar ... ok [INFO] [stdout] test signals::indicators::kama::tests::test_kama_period_and_name ... ok [INFO] [stdout] test signals::indicators::kama::tests::test_kama_ready_after_period_plus_one_bars ... ok [INFO] [stdout] test signals::indicators::kama::tests::test_kama_trending_prices_tracks_price ... ok [INFO] [stdout] test signals::indicators::kaufman_er::tests::test_er_invalid_period ... ok [INFO] [stdout] test signals::indicators::kaufman_er::tests::test_er_oscillating_price_low_er ... ok [INFO] [stdout] test signals::indicators::kaufman_er::tests::test_er_perfect_trend_equals_one ... ok [INFO] [stdout] test signals::indicators::kama::tests::test_kama_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::kaufman_er::tests::test_er_reset ... ok [INFO] [stdout] test signals::indicators::kaufman_er::tests::test_er_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::keltner::tests::test_keltner_period_0_error ... ok [INFO] [stdout] test signals::indicators::keltner::tests::test_keltner_constant_price_equals_price ... ok [INFO] [stdout] test signals::indicators::kama::tests::test_kama_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::keltner::tests::test_keltner_reset ... ok [INFO] [stdout] test signals::indicators::keltner::tests::test_keltner_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::key_reversal::tests::test_kr_bearish_reversal ... ok [INFO] [stdout] test signals::indicators::key_reversal::tests::test_kr_bullish_reversal ... ok [INFO] [stdout] test signals::indicators::kaufman_er::tests::test_er_flat_returns_one ... ok [INFO] [stdout] test signals::indicators::key_reversal::tests::test_kr_reset ... ok [INFO] [stdout] test signals::indicators::kst::tests::test_kst_ready_after_warmup ... ok [INFO] [stdout] test signals::indicators::kvo::tests::test_kvo_invalid_periods ... ok [INFO] [stdout] test signals::indicators::kst::tests::test_kst_reset ... ok [INFO] [stdout] test signals::indicators::kvo::tests::test_kvo_reset ... ok [INFO] [stdout] test signals::indicators::kvo::tests::test_kvo_unavailable_before_slow_period ... ok [INFO] [stdout] test signals::indicators::kicking_pattern::tests::test_bearish_kicking ... ok [INFO] [stdout] test signals::indicators::kicking_pattern::tests::test_bullish_kicking ... ok [INFO] [stdout] test signals::indicators::kicking_pattern::tests::test_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::kicking_pattern::tests::test_invalid_pct ... ok [INFO] [stdout] test signals::indicators::kst::tests::test_kst_unavailable_early ... ok [INFO] [stdout] test signals::indicators::kicking_pattern::tests::test_no_pattern_no_gap ... ok [INFO] [stdout] test signals::indicators::kicking_pattern::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::kst::tests::test_kst_daily_period ... ok [INFO] [stdout] test signals::indicators::key_reversal::tests::test_kr_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::kst::tests::test_kst_flat_market_near_zero ... ok [INFO] [stdout] test signals::indicators::key_reversal::tests::test_kr_no_reversal_gives_zero ... ok [INFO] [stdout] test signals::indicators::kst::tests::test_kst_invalid_period ... ok [INFO] [stdout] test signals::indicators::laguerre::tests::test_laguerre_period ... ok [INFO] [stdout] test signals::indicators::laguerre::tests::test_laguerre_reset ... ok [INFO] [stdout] test signals::indicators::laguerre::tests::test_laguerre_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::laguerre::tests::test_laguerre_second_bar_produces_scalar ... ok [INFO] [stdout] test signals::indicators::linear_deviation::tests::test_ld_above_line_positive ... ok [INFO] [stdout] test signals::indicators::linear_deviation::tests::test_ld_invalid_period ... ok [INFO] [stdout] test signals::indicators::laguerre::tests::test_laguerre_flat_in_range ... ok [INFO] [stdout] test signals::indicators::linear_deviation::tests::test_ld_perfectly_on_line_is_zero ... ok [INFO] [stdout] test signals::indicators::linear_deviation::tests::test_ld_below_line_negative ... ok [INFO] [stdout] test signals::indicators::linear_deviation::tests::test_ld_reset ... ok [INFO] [stdout] test signals::indicators::linear_deviation::tests::test_ld_unavailable_early ... ok [INFO] [stdout] test signals::indicators::laguerre::tests::test_laguerre_uptrend_above_50 ... ok [INFO] [stdout] test signals::indicators::linear_regression_r2::tests::test_r2_reset ... ok [INFO] [stdout] test signals::indicators::linear_regression_slope::tests::test_lrs_flat_gives_near_zero ... ok [INFO] [stdout] test signals::indicators::linear_regression_r2::tests::test_r2_range_0_to_1 ... ok [INFO] [stdout] test signals::indicators::linear_regression_r2::tests::test_r2_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::linear_regression_slope::tests::test_lrs_invalid_period ... ok [INFO] [stdout] test signals::indicators::linear_regression_slope::tests::test_lrs_perfect_downtrend_gives_negative_slope ... ok [INFO] [stdout] test signals::indicators::linear_regression_slope::tests::test_lrs_perfect_uptrend_gives_positive_slope ... ok [INFO] [stdout] test signals::indicators::linear_regression_slope::tests::test_lrs_reset ... ok [INFO] [stdout] test signals::indicators::linear_regression_slope::tests::test_lrs_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::linear_regression_r2::tests::test_r2_invalid ... ok [INFO] [stdout] test signals::indicators::linreg_channel::tests::test_lrc_flat_mid_equals_price ... ok [INFO] [stdout] test signals::indicators::linear_regression_r2::tests::test_r2_linear_is_one ... ok [INFO] [stdout] test signals::indicators::linear_regression_r2::tests::test_r2_noisy_below_one ... ok [INFO] [stdout] test signals::indicators::linear_regression_r2::tests::test_r2_flat_is_one ... ok [INFO] [stdout] test signals::indicators::laguerre::tests::test_laguerre_invalid_gamma ... ok [INFO] [stdout] test signals::indicators::linreg_channel::tests::test_lrc_reset ... ok [INFO] [stdout] test signals::indicators::linreg_forecast::tests::test_lrf_accessors ... ok [INFO] [stdout] test signals::indicators::linreg_channel::tests::test_lrc_invalid_period ... ok [INFO] [stdout] test signals::indicators::linreg_channel::tests::test_lrc_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::linreg_channel::tests::test_lrc_upper_above_lower ... ok [INFO] [stdout] test signals::indicators::linreg_forecast::tests::test_lrf_constant_price ... ok [INFO] [stdout] test signals::indicators::linreg_forecast::tests::test_lrf_perfect_trend_1_ahead ... ok [INFO] [stdout] test signals::indicators::linreg_forecast::tests::test_lrf_period_too_small ... ok [INFO] [stdout] test signals::indicators::linreg_forecast::tests::test_lrf_reset ... ok [INFO] [stdout] test signals::indicators::linreg_forecast::tests::test_lrf_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::linreg_slope::tests::test_linreg_flat ... ok [INFO] [stdout] test signals::indicators::linreg_slope::tests::test_linreg_invalid_period ... ok [INFO] [stdout] test signals::indicators::linreg_slope::tests::test_linreg_perfect_downtrend ... ok [INFO] [stdout] test signals::indicators::linreg_slope::tests::test_linreg_perfect_uptrend ... ok [INFO] [stdout] test signals::indicators::linreg_slope::tests::test_linreg_reset ... ok [INFO] [stdout] test signals::indicators::linreg_slope::tests::test_linreg_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::log_return_volatility::tests::test_lrv_constant_prices_zero_volatility ... ok [INFO] [stdout] test signals::indicators::log_return_volatility::tests::test_lrv_invalid_period ... ok [INFO] [stdout] test signals::indicators::log_return_volatility::tests::test_lrv_non_negative ... ok [INFO] [stdout] test signals::indicators::log_return_volatility::tests::test_lrv_period_and_name ... ok [INFO] [stdout] test signals::indicators::log_return_volatility::tests::test_lrv_reset ... ok [INFO] [stdout] test signals::indicators::log_return_volatility::tests::test_lrv_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::low_minus_prev_close::tests::test_lmpc_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::low_minus_prev_close::tests::test_lmpc_gap_down_negative ... ok [INFO] [stdout] test signals::indicators::low_minus_prev_close::tests::test_lmpc_gap_up_positive ... ok [INFO] [stdout] test signals::indicators::low_minus_prev_close::tests::test_lmpc_invalid_period ... ok [INFO] [stdout] test signals::indicators::low_minus_prev_close::tests::test_lmpc_ready_after_second_bar ... ok [INFO] [stdout] test signals::indicators::low_minus_prev_close::tests::test_lmpc_reset ... ok [INFO] [stdout] test signals::indicators::low_of_period::tests::test_lop_period_0_error ... ok [INFO] [stdout] test signals::indicators::low_of_period::tests::test_lop_reset ... ok [INFO] [stdout] test signals::indicators::low_of_period::tests::test_lop_returns_min ... ok [INFO] [stdout] test signals::indicators::low_of_period::tests::test_lop_rolls_out_old_min ... ok [INFO] [stdout] test signals::indicators::low_of_period::tests::test_lop_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::lower_high_count::tests::test_lhc_all_lower_highs ... ok [INFO] [stdout] test signals::indicators::lower_high_streak::tests::test_lhs_descending_highs ... ok [INFO] [stdout] test signals::indicators::lower_high_count::tests::test_lhc_no_lower_highs ... ok [INFO] [stdout] test signals::indicators::lower_high_streak::tests::test_lhs_equal_high_resets ... ok [INFO] [stdout] test signals::indicators::lower_high_streak::tests::test_lhs_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::lower_high_streak::tests::test_lhs_reset ... ok [INFO] [stdout] test signals::indicators::lower_high_streak::tests::test_lhs_streak_resets_on_higher_high ... ok [INFO] [stdout] test signals::indicators::lower_low_count::tests::test_lower_low_count_all_lower ... ok [INFO] [stdout] test signals::indicators::lower_low_count::tests::test_lower_low_count_none_lower ... ok [INFO] [stdout] test signals::indicators::lower_shadow_ratio::tests::test_lsr_all_lower_shadow ... ok [INFO] [stdout] test signals::indicators::lower_shadow_ratio::tests::test_lsr_no_lower_shadow ... ok [INFO] [stdout] test signals::indicators::lower_shadow_ratio::tests::test_lsr_always_ready ... ok [INFO] [stdout] test signals::indicators::lower_shadow_ratio::tests::test_lsr_no_range ... ok [INFO] [stdout] test signals::indicators::lower_shadow_ratio::tests::test_lsr_partial_lower_shadow ... ok [INFO] [stdout] test signals::indicators::lower_wick_pct::tests::test_lwp_full_lower_wick ... ok [INFO] [stdout] test signals::indicators::lower_wick_pct::tests::test_lwp_no_lower_wick ... ok [INFO] [stdout] test signals::indicators::lower_wick_ratio::tests::test_lwr_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::lower_wick_ratio::tests::test_lwr_full_lower_wick ... ok [INFO] [stdout] test signals::indicators::lower_wick_ratio::tests::test_lwr_no_lower_wick_returns_zero ... ok [INFO] [stdout] test signals::indicators::lower_wick_ratio::tests::test_lwr_invalid_period ... ok [INFO] [stdout] test signals::indicators::lower_wick_ratio::tests::test_lwr_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::lower_wick_ratio::tests::test_lwr_reset ... ok [INFO] [stdout] test signals::indicators::lsma::tests::test_lsma_constant_price_equals_price ... ok [INFO] [stdout] test signals::indicators::lsma::tests::test_lsma_linear_series_endpoint ... ok [INFO] [stdout] test signals::indicators::lower_wick_ratio::tests::test_lwr_persistent_lower_wicks_positive ... ok [INFO] [stdout] test signals::indicators::lsma::tests::test_lsma_period_0_error ... ok [INFO] [stdout] test signals::indicators::lsma::tests::test_lsma_reset ... ok [INFO] [stdout] test signals::indicators::macd::tests::test_macd_fast_ge_slow_fails ... ok [INFO] [stdout] test signals::indicators::lsma::tests::test_lsma_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::macd::tests::test_macd_histogram_positive_on_rising_prices ... ok [INFO] [stdout] test signals::indicators::macd::tests::test_macd_period_0_fails ... ok [INFO] [stdout] test signals::indicators::macd::tests::test_macd_period_returns_slow_period ... ok [INFO] [stdout] test signals::indicators::macd::tests::test_macd_ready_after_warmup ... ok [INFO] [stdout] test signals::indicators::macd::tests::test_macd_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::market_regime::tests::test_regime_er_accessible ... ok [INFO] [stdout] test signals::indicators::market_regime::tests::test_regime_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::market_regime::tests::test_regime_ranging_market ... ok [INFO] [stdout] test signals::indicators::market_regime::tests::test_regime_reset ... ok [INFO] [stdout] test signals::indicators::market_regime::tests::test_regime_trending_market ... ok [INFO] [stdout] test signals::indicators::market_regime::tests::test_regime_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::marubozu_detector::tests::test_always_ready ... ok [INFO] [stdout] test signals::indicators::marubozu_detector::tests::test_bearish_marubozu_detected ... ok [INFO] [stdout] test signals::indicators::marubozu_detector::tests::test_bullish_marubozu_detected ... ok [INFO] [stdout] test signals::indicators::marubozu_detector::tests::test_doji_not_marubozu ... ok [INFO] [stdout] test signals::indicators::marubozu_detector::tests::test_flat_bar_returns_zero ... ok [INFO] [stdout] test signals::indicators::marubozu_detector::tests::test_invalid_pct_fails ... ok [INFO] [stdout] test signals::indicators::marubozu_detector::tests::test_normal_candle_not_marubozu ... ok [INFO] [stdout] test signals::indicators::marubozu_detector::tests::test_loose_thresholds_detect_more ... ok [INFO] [stdout] test signals::indicators::marubozu_detector::tests::test_reset_has_no_effect ... ok [INFO] [stdout] test signals::indicators::mass_index::tests::test_mass_index_invalid_period ... ok [INFO] [stdout] test signals::indicators::mass_index::tests::test_mass_index_period_and_name ... ok [INFO] [stdout] test signals::indicators::mass_index::tests::test_mass_index_ready_after_enough_bars ... ok [INFO] [stdout] test signals::indicators::mass_index::tests::test_mass_index_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::mass_index::tests::test_mass_index_scalar_positive ... ok [INFO] [stdout] test signals::indicators::mass_index::tests::test_mass_index_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::max_adverse_excursion::tests::test_mae_downtrend ... ok [INFO] [stdout] test signals::indicators::max_adverse_excursion::tests::test_mae_period_too_small ... ok [INFO] [stdout] test signals::indicators::max_adverse_excursion::tests::test_mae_recovery_still_tracks_peak ... ok [INFO] [stdout] test signals::indicators::max_adverse_excursion::tests::test_mae_reset ... ok [INFO] [stdout] test signals::indicators::max_adverse_excursion::tests::test_mae_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::max_adverse_excursion::tests::test_mae_uptrend_zero_drawdown ... ok [INFO] [stdout] test signals::indicators::max_drawdown_window::tests::test_mdw_drawdown_positive ... ok [INFO] [stdout] test signals::indicators::max_drawdown_window::tests::test_mdw_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::max_drawdown_window::tests::test_mdw_invalid ... ok [INFO] [stdout] test signals::indicators::max_drawdown_window::tests::test_mdw_reset ... ok [INFO] [stdout] test signals::indicators::max_drawdown_window::tests::test_mdw_rising_is_zero ... ok [INFO] [stdout] test signals::indicators::max_drawdown_window::tests::test_mdw_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::max_drawup_window::tests::test_mdu_downtrend_gives_zero ... ok [INFO] [stdout] test signals::indicators::max_drawup_window::tests::test_mdu_invalid_period ... ok [INFO] [stdout] test signals::indicators::max_drawup_window::tests::test_mdu_non_negative ... ok [INFO] [stdout] test signals::indicators::max_drawup_window::tests::test_mdu_reset ... ok [INFO] [stdout] test signals::indicators::max_drawup_window::tests::test_mdu_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::max_drawup_window::tests::test_mdu_uptrend_gives_full_gain ... ok [INFO] [stdout] test signals::indicators::max_favorable_excursion::tests::test_mfe_downtrend_zero ... ok [INFO] [stdout] test signals::indicators::max_favorable_excursion::tests::test_mfe_pullback_tracks_rally ... ok [INFO] [stdout] test signals::indicators::max_favorable_excursion::tests::test_mfe_period_too_small ... ok [INFO] [stdout] test signals::indicators::max_favorable_excursion::tests::test_mfe_reset ... ok [INFO] [stdout] test signals::indicators::max_favorable_excursion::tests::test_mfe_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::max_favorable_excursion::tests::test_mfe_uptrend ... ok [INFO] [stdout] test signals::indicators::mcginley::tests::test_mcginley_constant_price_converges ... ok [INFO] [stdout] test signals::indicators::mcginley::tests::test_mcginley_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::mcginley::tests::test_mcginley_invalid_period ... ok [INFO] [stdout] test signals::indicators::mcginley::tests::test_mcginley_reset ... ok [INFO] [stdout] test signals::indicators::mcginley::tests::test_mcginley_second_bar_produces_scalar ... ok [INFO] [stdout] test signals::indicators::mean_reversion_score::tests::test_mrs_above_mean_positive ... ok [INFO] [stdout] test signals::indicators::mean_reversion_score::tests::test_mrs_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::median_body_size::tests::test_mbs_invalid_period ... ok [INFO] [stdout] test signals::indicators::median_body_size::tests::test_mbs_known_median ... ok [INFO] [stdout] test signals::indicators::median_body_size::tests::test_mbs_non_negative ... ok [INFO] [stdout] test signals::indicators::median_body_size::tests::test_mbs_outlier_resistant ... ok [INFO] [stdout] test signals::indicators::median_body_size::tests::test_mbs_reset ... ok [INFO] [stdout] test signals::indicators::median_body_size::tests::test_mbs_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::median_close_dev::tests::test_mcd_above_median_positive ... ok [INFO] [stdout] test signals::indicators::median_close_dev::tests::test_mcd_reset ... ok [INFO] [stdout] test signals::indicators::median_close_dev::tests::test_mcd_invalid ... ok [INFO] [stdout] test signals::indicators::median_close_dev::tests::test_mcd_same_prices_zero_dev ... ok [INFO] [stdout] test signals::indicators::median_close_dev::tests::test_mcd_unavailable ... ok [INFO] [stdout] test signals::indicators::median_high_low::tests::test_mhl_constant_range ... ok [INFO] [stdout] test signals::indicators::median_high_low::tests::test_mhl_even_period_median ... ok [INFO] [stdout] test signals::indicators::median_high_low::tests::test_mhl_invalid_period ... ok [INFO] [stdout] test signals::indicators::median_high_low::tests::test_mhl_odd_period_median ... ok [INFO] [stdout] test signals::indicators::median_high_low::tests::test_mhl_outlier_robustness ... ok [INFO] [stdout] test signals::indicators::median_high_low::tests::test_mhl_reset ... ok [INFO] [stdout] test signals::indicators::median_high_low::tests::test_mhl_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::median_price::tests::test_mp_even_period_median ... ok [INFO] [stdout] test signals::indicators::median_price::tests::test_mp_hl_midpoint ... ok [INFO] [stdout] test signals::indicators::median_price::tests::test_mp_invalid ... ok [INFO] [stdout] test signals::indicators::median_price::tests::test_mp_odd_period_median ... ok [INFO] [stdout] test signals::indicators::median_price::tests::test_mp_reset ... ok [INFO] [stdout] test signals::indicators::median_price::tests::test_mp_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::median_return_deviation::tests::test_mrd_invalid_period ... ok [INFO] [stdout] test signals::indicators::median_return_deviation::tests::test_mrd_large_outlier_gives_big_score ... ok [INFO] [stdout] test signals::indicators::median_return_deviation::tests::test_mrd_reset ... ok [INFO] [stdout] test signals::indicators::median_return_deviation::tests::test_mrd_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::median_return_deviation::tests::test_mrd_zero_for_typical_return ... ok [INFO] [stdout] test signals::indicators::median_volume::tests::test_mv_even_period_median ... ok [INFO] [stdout] test signals::indicators::median_volume::tests::test_mv_odd_period_median ... ok [INFO] [stdout] test signals::indicators::median_volume::tests::test_mv_period_0_error ... ok [INFO] [stdout] test signals::indicators::median_volume::tests::test_mv_reset ... ok [INFO] [stdout] test signals::indicators::median_volume::tests::test_mv_spike_resistant ... ok [INFO] [stdout] test signals::indicators::median_volume::tests::test_mv_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::mesa_adaptive_ma::tests::test_mama_fama_accessible ... ok [INFO] [stdout] test signals::indicators::mesa_adaptive_ma::tests::test_mama_invalid_limits ... ok [INFO] [stdout] test signals::indicators::mesa_adaptive_ma::tests::test_mama_flat_price_converges ... ok [INFO] [stdout] test signals::indicators::mesa_adaptive_ma::tests::test_mama_ready_after_seven_bars ... ok [INFO] [stdout] test signals::indicators::mesa_adaptive_ma::tests::test_mama_reset ... ok [INFO] [stdout] test signals::indicators::mesa_adaptive_ma::tests::test_mama_unavailable_before_seven_bars ... ok [INFO] [stdout] test signals::indicators::mfi::tests::test_mfi_all_positive_flow_returns_100 ... ok [INFO] [stdout] test signals::indicators::mfi::tests::test_mfi_name_accessor ... ok [INFO] [stdout] test signals::indicators::mfi::tests::test_mfi_period_accessor ... ok [INFO] [stdout] test signals::indicators::mfi::tests::test_mfi_period_zero_error ... ok [INFO] [stdout] test signals::indicators::mfi::tests::test_mfi_ready_after_period_plus_one_bars ... ok [INFO] [stdout] test signals::indicators::mfi::tests::test_mfi_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::mfi::tests::test_mfi_unavailable_before_period_plus_one ... ok [INFO] [stdout] test signals::indicators::midpoint_oscillator::tests::test_mo_always_ready ... ok [INFO] [stdout] test signals::indicators::midpoint_oscillator::tests::test_mo_close_at_high ... ok [INFO] [stdout] test signals::indicators::midpoint_oscillator::tests::test_mo_close_at_low ... ok [INFO] [stdout] test signals::indicators::midpoint_oscillator::tests::test_mo_close_at_midpoint ... ok [INFO] [stdout] test signals::indicators::momentum::tests::test_momentum_constant_is_zero ... ok [INFO] [stdout] test signals::indicators::midpoint_oscillator::tests::test_mo_no_range ... ok [INFO] [stdout] test signals::indicators::momentum::tests::test_momentum_known_value ... ok [INFO] [stdout] test signals::indicators::momentum::tests::test_momentum_negative ... ok [INFO] [stdout] test signals::indicators::momentum::tests::test_momentum_period_0_error ... ok [INFO] [stdout] test signals::indicators::momentum::tests::test_momentum_reset ... ok [INFO] [stdout] test signals::indicators::momentum_consistency::tests::test_mc_all_up ... ok [INFO] [stdout] test signals::indicators::momentum_consistency::tests::test_mc_half_up ... ok [INFO] [stdout] test signals::indicators::momentum_divergence::tests::test_md_aligned_momentum_near_zero ... ok [INFO] [stdout] test signals::indicators::momentum_divergence::tests::test_md_invalid_period ... ok [INFO] [stdout] test signals::indicators::momentum_divergence::tests::test_md_period_and_name ... ok [INFO] [stdout] test signals::indicators::momentum_divergence::tests::test_md_price_led_positive ... ok [INFO] [stdout] test signals::indicators::momentum_divergence::tests::test_md_produces_value_after_period_plus_one ... ok [INFO] [stdout] test signals::indicators::momentum_divergence::tests::test_md_reset ... ok [INFO] [stdout] test signals::indicators::momentum_divergence::tests::test_md_unavailable_before_period_plus_one ... ok [INFO] [stdout] test signals::indicators::momentum_divergence::tests::test_md_volume_led_negative ... ok [INFO] [stdout] test signals::indicators::momentum_oscillator::tests::test_mo_flat_prices_zero_momentum ... ok [INFO] [stdout] test signals::indicators::momentum_oscillator::tests::test_mo_invalid_period ... ok [INFO] [stdout] test signals::indicators::momentum_oscillator::tests::test_mo_period_and_name ... ok [INFO] [stdout] test signals::indicators::momentum_oscillator::tests::test_mo_ready_after_2x_period ... ok [INFO] [stdout] test signals::indicators::momentum_oscillator::tests::test_mo_reset ... ok [INFO] [stdout] test signals::indicators::momentum_oscillator::tests::test_mo_unavailable_before_2x_period ... ok [INFO] [stdout] test signals::indicators::momentum_oscillator::tests::test_mo_rising_market_positive ... ok [INFO] [stdout] test signals::indicators::momentum_quality::tests::test_mq_flat_price_is_0_or_low ... ok [INFO] [stdout] test signals::indicators::momentum_quality::tests::test_mq_period_0_error ... ok [INFO] [stdout] test signals::indicators::momentum_quality::tests::test_mq_reset ... ok [INFO] [stdout] test signals::indicators::momentum_quality::tests::test_mq_strongly_rising_is_positive ... ok [INFO] [stdout] test signals::indicators::momentum_quality::tests::test_mq_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::momentum_regime::tests::test_flat_returns_zero ... ok [INFO] [stdout] test signals::indicators::momentum_regime::tests::test_invalid_params ... ok [INFO] [stdout] test signals::indicators::momentum_regime::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::momentum_regime::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::momentum_reversal::tests::test_momentum_reversal_alternating ... ok [INFO] [stdout] test signals::indicators::momentum_reversal::tests::test_momentum_reversal_trending ... ok [INFO] [stdout] test signals::indicators::momentum_streak::tests::test_streak_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::momentum_streak::tests::test_streak_flat_resets_to_zero ... ok [INFO] [stdout] test signals::indicators::momentum_streak::tests::test_streak_reset ... ok [INFO] [stdout] test signals::indicators::momentum_streak::tests::test_streak_resets_on_direction_change ... ok [INFO] [stdout] test signals::indicators::momentum_streak::tests::test_streak_up_bars_count ... ok [INFO] [stdout] test signals::indicators::morning_star::tests::test_invalid_pct_fails ... ok [INFO] [stdout] test signals::indicators::morning_star::tests::test_morning_star_detected ... ok [INFO] [stdout] test signals::indicators::morning_star::tests::test_no_pattern_bullish_bar1 ... ok [INFO] [stdout] test signals::indicators::morning_star::tests::test_no_pattern_large_star ... ok [INFO] [stdout] test signals::indicators::morning_star::tests::test_ready_after_two_bars ... ok [INFO] [stdout] test signals::indicators::morning_star::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::morning_star::tests::test_unavailable_before_two_bars ... ok [INFO] [stdout] test signals::indicators::narrow_range_bar::tests::test_nr_invalid_period ... ok [INFO] [stdout] test signals::indicators::narrow_range_bar::tests::test_nr_narrowest_bar_gives_one ... ok [INFO] [stdout] test signals::indicators::narrow_range_bar::tests::test_nr_period_1_always_narrowest ... ok [INFO] [stdout] test signals::indicators::narrow_range_bar::tests::test_nr_reset ... ok [INFO] [stdout] test signals::indicators::narrow_range_bar::tests::test_nr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::narrow_range_bar::tests::test_nr_wider_bar_gives_zero ... ok [INFO] [stdout] test signals::indicators::natr::tests::test_natr_invalid_period ... ok [INFO] [stdout] test signals::indicators::natr::tests::test_natr_is_ready ... ok [INFO] [stdout] test signals::indicators::natr::tests::test_natr_period1_after_two_bars ... ok [INFO] [stdout] test signals::indicators::natr::tests::test_natr_reset ... ok [INFO] [stdout] test signals::indicators::natr::tests::test_natr_unavailable_on_first_bar ... ok [INFO] [stdout] test signals::indicators::negative_volume_index::tests::test_nvi_falls_on_low_volume_down_day ... ok [INFO] [stdout] test signals::indicators::negative_volume_index::tests::test_nvi_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::negative_volume_index::tests::test_nvi_reset ... ok [INFO] [stdout] test signals::indicators::negative_volume_index::tests::test_nvi_rises_on_low_volume_up_day ... ok [INFO] [stdout] test signals::indicators::negative_volume_index::tests::test_nvi_unchanged_on_high_volume ... ok [INFO] [stdout] test signals::indicators::net_bar_bias::tests::test_nbb_all_bearish_gives_neg_one ... ok [INFO] [stdout] test signals::indicators::net_bar_bias::tests::test_nbb_all_bullish_gives_one ... ok [INFO] [stdout] test signals::indicators::net_bar_bias::tests::test_nbb_balanced_gives_zero ... ok [INFO] [stdout] test signals::indicators::net_bar_bias::tests::test_nbb_invalid_period ... ok [INFO] [stdout] test signals::indicators::net_bar_bias::tests::test_nbb_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::net_bar_bias::tests::test_nbb_reset ... ok [INFO] [stdout] test signals::indicators::net_bar_bias::tests::test_nbb_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::net_body_accumulation::tests::test_nba_all_bullish_positive ... ok [INFO] [stdout] test signals::indicators::net_body_accumulation::tests::test_nba_invalid_period ... ok [INFO] [stdout] test signals::indicators::net_body_accumulation::tests::test_nba_mixed_sums_correctly ... ok [INFO] [stdout] test signals::indicators::net_body_accumulation::tests::test_nba_reset ... ok [INFO] [stdout] test signals::indicators::net_body_accumulation::tests::test_nba_sliding_window ... ok [INFO] [stdout] test signals::indicators::net_body_accumulation::tests::test_nba_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::net_high_low_count::tests::test_nhl_all_higher_highs ... ok [INFO] [stdout] test signals::indicators::net_high_low_count::tests::test_nhl_all_lower_lows ... ok [INFO] [stdout] test signals::indicators::net_high_low_count::tests::test_nhl_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::net_high_low_count::tests::test_nhl_period_0_error ... ok [INFO] [stdout] test signals::indicators::net_high_low_count::tests::test_nhl_reset ... ok [INFO] [stdout] test signals::indicators::net_high_low_count::tests::test_nhl_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::net_volume::tests::test_nv_all_down_bars_negative ... ok [INFO] [stdout] test signals::indicators::net_volume::tests::test_nv_all_up_bars_positive ... ok [INFO] [stdout] test signals::indicators::net_volume::tests::test_nv_alternating_cancels ... ok [INFO] [stdout] test signals::indicators::net_volume::tests::test_nv_invalid ... ok [INFO] [stdout] test signals::indicators::net_volume::tests::test_nv_reset ... ok [INFO] [stdout] test signals::indicators::net_volume::tests::test_nv_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::new_high_pct::tests::test_nhp_flat_prices_give_zero ... ok [INFO] [stdout] test signals::indicators::new_high_pct::tests::test_nhp_in_range_zero_to_one ... ok [INFO] [stdout] test signals::indicators::new_high_pct::tests::test_nhp_invalid_period ... ok [INFO] [stdout] test signals::indicators::new_high_pct::tests::test_nhp_perfect_uptrend_gives_one ... ok [INFO] [stdout] test signals::indicators::new_high_pct::tests::test_nhp_reset ... ok [INFO] [stdout] test signals::indicators::new_high_pct::tests::test_nhp_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::new_high_streak::tests::test_nhs_consecutive_highs ... ok [INFO] [stdout] test signals::indicators::new_high_streak::tests::test_nhs_invalid_period ... ok [INFO] [stdout] test signals::indicators::new_high_streak::tests::test_nhs_no_negative ... ok [INFO] [stdout] test signals::indicators::new_high_streak::tests::test_nhs_reset ... ok [INFO] [stdout] test signals::indicators::new_high_streak::tests::test_nhs_streak_resets_on_pullback ... ok [INFO] [stdout] test signals::indicators::new_high_streak::tests::test_nhs_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::new_low_pct::tests::test_nlp_in_range_zero_to_one ... ok [INFO] [stdout] test signals::indicators::new_low_pct::tests::test_nlp_invalid_period ... ok [INFO] [stdout] test signals::indicators::new_low_pct::tests::test_nlp_perfect_downtrend_gives_one ... ok [INFO] [stdout] test signals::indicators::new_low_pct::tests::test_nlp_reset ... ok [INFO] [stdout] test signals::indicators::new_low_pct::tests::test_nlp_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::new_low_pct::tests::test_nlp_uptrend_gives_zero ... ok [INFO] [stdout] test signals::indicators::normalized_atr::tests::test_natr_positive ... ok [INFO] [stdout] test signals::indicators::normalized_atr::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::normalized_atr::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::normalized_atr::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::normalized_momentum::tests::test_nm_above_mean_positive ... ok [INFO] [stdout] test signals::indicators::normalized_momentum::tests::test_nm_below_mean_negative ... ok [INFO] [stdout] test signals::indicators::normalized_momentum::tests::test_nm_constant_price_unavailable ... ok [INFO] [stdout] test signals::indicators::normalized_momentum::tests::test_nm_invalid_period ... ok [INFO] [stdout] test signals::indicators::normalized_momentum::tests::test_nm_reset ... ok [INFO] [stdout] test signals::indicators::normalized_momentum::tests::test_nm_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::normalized_price::tests::test_np_close_at_bottom_equals_0 ... ok [INFO] [stdout] test signals::indicators::normalized_price::tests::test_np_close_at_top_equals_100 ... ok [INFO] [stdout] test signals::indicators::normalized_price::tests::test_np_invalid_period ... ok [INFO] [stdout] test signals::indicators::normalized_price::tests::test_np_midpoint_equals_50 ... ok [INFO] [stdout] test signals::indicators::normalized_price::tests::test_np_reset ... ok [INFO] [stdout] test signals::indicators::normalized_price::tests::test_np_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::normalized_volume::tests::test_nvol_double_avg_gives_two ... ok [INFO] [stdout] test signals::indicators::normalized_volume::tests::test_nvol_equal_volumes_gives_one ... ok [INFO] [stdout] test signals::indicators::normalized_volume::tests::test_nvol_invalid_period ... ok [INFO] [stdout] test signals::indicators::normalized_volume::tests::test_nvol_period_and_name ... ok [INFO] [stdout] test signals::indicators::normalized_volume::tests::test_nvol_reset ... ok [INFO] [stdout] test signals::indicators::normalized_volume::tests::test_nvol_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::normalized_volume::tests::test_nvol_zero_average_returns_unavailable ... ok [INFO] [stdout] test signals::indicators::nvi::tests::test_nvi_period_and_name ... ok [INFO] [stdout] test signals::indicators::nvi::tests::test_nvi_ready_on_second_bar ... ok [INFO] [stdout] test signals::indicators::nvi::tests::test_nvi_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::nvi::tests::test_nvi_unavailable_on_first_bar ... ok [INFO] [stdout] test signals::indicators::nvi::tests::test_nvi_unchanged_on_equal_or_higher_volume ... ok [INFO] [stdout] test signals::indicators::obv::tests::test_obv_down_close_subtracts_volume ... ok [INFO] [stdout] test signals::indicators::nvi::tests::test_nvi_updates_on_lower_volume ... ok [INFO] [stdout] test signals::indicators::obv::tests::test_obv_first_bar_returns_zero ... ok [INFO] [stdout] test signals::indicators::obv::tests::test_obv_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::obv::tests::test_obv_unchanged_close_no_change ... ok [INFO] [stdout] test signals::indicators::obv::tests::test_obv_up_close_adds_volume ... ok [INFO] [stdout] test signals::indicators::obv_momentum::tests::test_obvm_flat_price_zero ... ok [INFO] [stdout] test signals::indicators::obv_momentum::tests::test_obvm_invalid ... ok [INFO] [stdout] test signals::indicators::obv_momentum::tests::test_obvm_produces_scalar ... ok [INFO] [stdout] test signals::indicators::obv_momentum::tests::test_obvm_reset ... ok [INFO] [stdout] test signals::indicators::obv_momentum::tests::test_obvm_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::ohlc_spread::tests::test_os_invalid_period ... ok [INFO] [stdout] test signals::indicators::ohlc_spread::tests::test_os_constant_spread ... ok [INFO] [stdout] test signals::indicators::ohlc_spread::tests::test_os_reset ... ok [INFO] [stdout] test signals::indicators::ohlc_spread::tests::test_os_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::on_balance_volume_ma::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::on_balance_volume_ma::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::on_balance_volume_ma::tests::test_rising_prices_positive_obv ... ok [INFO] [stdout] test signals::indicators::on_balance_volume_ma::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::open_above_prev_close::tests::test_oapc_all_gap_up_gives_one ... ok [INFO] [stdout] test signals::indicators::open_above_prev_close::tests::test_oapc_in_range_zero_to_one ... ok [INFO] [stdout] test signals::indicators::open_above_prev_close::tests::test_oapc_invalid_period ... ok [INFO] [stdout] test signals::indicators::open_above_prev_close::tests::test_oapc_no_gap_up_gives_zero ... ok [INFO] [stdout] test signals::indicators::open_above_prev_close::tests::test_oapc_reset ... ok [INFO] [stdout] test signals::indicators::open_above_prev_close::tests::test_oapc_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::open_close_balance::tests::test_ocb_all_bearish_minus_one ... ok [INFO] [stdout] test signals::indicators::open_close_balance::tests::test_ocb_all_bullish_one ... ok [INFO] [stdout] test signals::indicators::open_close_balance::tests::test_ocb_all_doji_unavailable ... ok [INFO] [stdout] test signals::indicators::open_close_balance::tests::test_ocb_balanced_zero ... ok [INFO] [stdout] test signals::indicators::open_close_balance::tests::test_ocb_reset ... ok [INFO] [stdout] test signals::indicators::open_close_balance::tests::test_ocb_invalid_period ... ok [INFO] [stdout] test signals::indicators::open_close_balance::tests::test_ocb_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::open_close_gap::tests::test_ocg_invalid_period ... ok [INFO] [stdout] test signals::indicators::open_close_gap::tests::test_ocg_positive_gap_bias ... ok [INFO] [stdout] test signals::indicators::open_close_gap::tests::test_ocg_reset ... ok [INFO] [stdout] test signals::indicators::open_close_gap::tests::test_ocg_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::open_close_gap::tests::test_ocg_zero_gap_flat ... ok [INFO] [stdout] test signals::indicators::open_close_momentum::tests::test_ocm_invalid_period ... ok [INFO] [stdout] test signals::indicators::open_close_momentum::tests::test_ocm_negative_for_consistent_bear_bars ... ok [INFO] [stdout] test signals::indicators::open_close_momentum::tests::test_ocm_positive_for_consistent_bull_bars ... ok [INFO] [stdout] test signals::indicators::open_close_momentum::tests::test_ocm_reset ... ok [INFO] [stdout] test signals::indicators::open_close_momentum::tests::test_ocm_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::open_close_pressure::tests::test_ocp_all_bearish_bars_negative ... ok [INFO] [stdout] test signals::indicators::open_close_pressure::tests::test_ocp_all_bullish_bars_positive ... ok [INFO] [stdout] test signals::indicators::open_close_pressure::tests::test_ocp_doji_bars_zero ... ok [INFO] [stdout] test signals::indicators::open_close_pressure::tests::test_ocp_invalid_period ... ok [INFO] [stdout] test signals::indicators::open_close_pressure::tests::test_ocp_reset ... ok [INFO] [stdout] test signals::indicators::open_close_pressure::tests::test_ocp_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::open_close_ratio::tests::test_open_close_ratio_bullish ... ok [INFO] [stdout] test signals::indicators::open_close_ratio::tests::test_open_close_ratio_equal ... ok [INFO] [stdout] test signals::indicators::open_close_spread::tests::test_ocs_constant_gap ... ok [INFO] [stdout] test signals::indicators::open_close_spread::tests::test_ocs_invalid_period ... ok [INFO] [stdout] test signals::indicators::open_close_spread::tests::test_ocs_no_gaps ... ok [INFO] [stdout] test signals::indicators::open_close_pressure::tests::test_ocp_flat_bar_pressure_zero ... ok [INFO] [stdout] test signals::indicators::open_close_spread::tests::test_ocs_reset ... ok [INFO] [stdout] test signals::indicators::open_close_spread::tests::test_ocs_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::open_close_symmetry::tests::test_ocs_doji_gives_one ... ok [INFO] [stdout] test signals::indicators::open_close_symmetry::tests::test_ocs_full_body_gives_zero ... ok [INFO] [stdout] test signals::indicators::open_close_velocity::tests::test_ocv_all_bearish_negative ... ok [INFO] [stdout] test signals::indicators::open_close_velocity::tests::test_ocv_all_bullish_positive ... ok [INFO] [stdout] test signals::indicators::open_close_velocity::tests::test_ocv_invalid_period ... ok [INFO] [stdout] test signals::indicators::open_close_velocity::tests::test_ocv_mixed_near_zero ... ok [INFO] [stdout] test signals::indicators::open_close_velocity::tests::test_ocv_reset ... ok [INFO] [stdout] test signals::indicators::open_close_velocity::tests::test_ocv_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::open_drive::tests::test_od_always_ready ... ok [INFO] [stdout] test signals::indicators::open_drive::tests::test_od_no_range ... ok [INFO] [stdout] test signals::indicators::open_drive::tests::test_od_open_at_high_all_downside ... ok [INFO] [stdout] test signals::indicators::open_drive::tests::test_od_open_at_low_all_upside ... ok [INFO] [stdout] test signals::indicators::open_drive::tests::test_od_open_at_midpoint ... ok [INFO] [stdout] test signals::indicators::open_gap_direction::tests::test_ogd_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::open_gap_direction::tests::test_ogd_gap_down ... ok [INFO] [stdout] test signals::indicators::open_gap_direction::tests::test_ogd_gap_up ... ok [INFO] [stdout] test signals::indicators::open_gap_direction::tests::test_ogd_no_gap ... ok [INFO] [stdout] test signals::indicators::open_gap_direction::tests::test_ogd_reset ... ok [INFO] [stdout] test signals::indicators::open_gap_pct::tests::test_ogp_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::open_gap_pct::tests::test_ogp_gap_down ... ok [INFO] [stdout] test signals::indicators::open_gap_pct::tests::test_ogp_gap_up ... ok [INFO] [stdout] test signals::indicators::open_gap_pct::tests::test_ogp_no_gap ... ok [INFO] [stdout] test signals::indicators::open_gap_pct::tests::test_ogp_reset ... ok [INFO] [stdout] test signals::indicators::open_gap_size::tests::test_open_gap_size_no_gap ... ok [INFO] [stdout] test signals::indicators::open_high_low_close_avg::tests::test_ohlca_all_same ... ok [INFO] [stdout] test signals::indicators::open_gap_size::tests::test_open_gap_size_symmetric ... ok [INFO] [stdout] test signals::indicators::open_high_low_close_avg::tests::test_ohlca_symmetric_bar ... ok [INFO] [stdout] test signals::indicators::open_high_ratio::tests::test_ohr_open_at_high_is_0 ... ok [INFO] [stdout] test signals::indicators::open_high_ratio::tests::test_ohr_open_at_low_is_100 ... ok [INFO] [stdout] test signals::indicators::open_high_ratio::tests::test_ohr_open_at_midpoint_is_50 ... ok [INFO] [stdout] test signals::indicators::open_high_ratio::tests::test_ohr_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::open_high_ratio::tests::test_ohr_reset ... ok [INFO] [stdout] test signals::indicators::open_high_ratio::tests::test_ohr_zero_range_unavailable ... ok [INFO] [stdout] test signals::indicators::open_interest_proxy::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::open_interest_proxy::tests::test_all_bearish_gives_neg_one ... ok [INFO] [stdout] test signals::indicators::open_interest_proxy::tests::test_all_bullish_gives_one ... ok [INFO] [stdout] test signals::indicators::open_interest_proxy::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::open_interest_proxy::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::open_interest_proxy::tests::test_zero_volume_gives_zero ... ok [INFO] [stdout] test signals::indicators::open_low_range::tests::test_olr_basic ... ok [INFO] [stdout] test signals::indicators::open_low_range::tests::test_olr_open_at_low ... ok [INFO] [stdout] test signals::indicators::open_midpoint_bias::tests::test_omb_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::open_midpoint_bias::tests::test_omb_invalid_period ... ok [INFO] [stdout] test signals::indicators::open_midpoint_bias::tests::test_omb_open_at_high_positive ... ok [INFO] [stdout] test signals::indicators::open_midpoint_bias::tests::test_omb_open_at_low_negative ... ok [INFO] [stdout] test signals::indicators::open_midpoint_bias::tests::test_omb_open_at_midpoint_zero ... ok [INFO] [stdout] test signals::indicators::open_midpoint_bias::tests::test_omb_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::open_midpoint_bias::tests::test_omb_reset ... ok [INFO] [stdout] test signals::indicators::open_midpoint_deviation::tests::test_omd_always_ready ... ok [INFO] [stdout] test signals::indicators::open_midpoint_deviation::tests::test_omd_no_range ... ok [INFO] [stdout] test signals::indicators::open_midpoint_deviation::tests::test_omd_open_at_high ... ok [INFO] [stdout] test signals::indicators::open_midpoint_deviation::tests::test_omd_open_at_low ... ok [INFO] [stdout] test signals::indicators::open_midpoint_deviation::tests::test_omd_open_at_midpoint ... ok [INFO] [stdout] test signals::indicators::open_range_position::tests::test_orp_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::open_range_position::tests::test_orp_invalid_period ... ok [INFO] [stdout] test signals::indicators::open_range_position::tests::test_orp_open_at_high_one ... ok [INFO] [stdout] test signals::indicators::open_range_position::tests::test_orp_open_at_low_zero ... ok [INFO] [stdout] test signals::indicators::open_range_position::tests::test_orp_open_at_midpoint_half ... ok [INFO] [stdout] test signals::indicators::open_range_position::tests::test_orp_reset ... ok [INFO] [stdout] test signals::indicators::open_range_position::tests::test_orp_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::open_range_strength::tests::test_ors_close_at_high_gives_one ... ok [INFO] [stdout] test signals::indicators::open_range_strength::tests::test_ors_close_at_midpoint_gives_zero ... ok [INFO] [stdout] test signals::indicators::open_range_strength::tests::test_ors_in_range_neg_one_to_one ... ok [INFO] [stdout] test signals::indicators::open_range_strength::tests::test_ors_invalid_period ... ok [INFO] [stdout] test signals::indicators::open_range_strength::tests::test_ors_reset ... ok [INFO] [stdout] test signals::indicators::open_range_strength::tests::test_ors_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::open_to_close_ratio::tests::test_ocr_fully_bearish_bars ... ok [INFO] [stdout] test signals::indicators::open_to_close_ratio::tests::test_ocr_fully_bullish_bars ... ok [INFO] [stdout] test signals::indicators::open_to_close_ratio::tests::test_ocr_invalid_period ... ok [INFO] [stdout] test signals::indicators::open_to_close_ratio::tests::test_ocr_reset ... ok [INFO] [stdout] test signals::indicators::open_to_close_return::tests::test_otcr_bullish ... ok [INFO] [stdout] test signals::indicators::open_to_close_ratio::tests::test_ocr_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::open_to_close_return::tests::test_otcr_flat_zero ... ok [INFO] [stdout] test signals::indicators::open_to_high_ratio::tests::test_othr_open_at_high ... ok [INFO] [stdout] test signals::indicators::open_to_high_ratio::tests::test_othr_open_at_low ... ok [INFO] [stdout] test signals::indicators::open_vs_prev_close::tests::test_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::open_vs_prev_close::tests::test_gap_up ... ok [INFO] [stdout] test signals::indicators::open_vs_prev_close::tests::test_gap_down ... ok [INFO] [stdout] test signals::indicators::open_vs_prev_close::tests::test_no_gap ... ok [INFO] [stdout] test signals::indicators::outside_bar_count::tests::test_obc_no_outside_bars ... ok [INFO] [stdout] test signals::indicators::outside_bar_count::tests::test_obc_all_outside_bars ... ok [INFO] [stdout] test signals::indicators::open_vs_prev_close::tests::test_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::outside_bar_count::tests::test_obc_period_0_error ... ok [INFO] [stdout] test signals::indicators::outside_bar_count::tests::test_obc_one_outside_in_window ... ok [INFO] [stdout] test signals::indicators::overnight_return::tests::test_ovr_gap_down ... ok [INFO] [stdout] test signals::indicators::outside_bar_count::tests::test_obc_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::overnight_return::tests::test_ovr_gap_up ... ok [INFO] [stdout] test signals::indicators::overnight_return::tests::test_ovr_no_gap ... ok [INFO] [stdout] test signals::indicators::open_vs_prev_close::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::parkinson_volatility::tests::test_flat_bar_skipped ... ok [INFO] [stdout] test signals::indicators::outside_bar_count::tests::test_obc_reset ... ok [INFO] [stdout] test signals::indicators::parkinson_volatility::tests::test_ready_after_period ... ok [INFO] [stdout] test signals::indicators::overnight_return::tests::test_ovr_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::parkinson_volatility::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::parkinson_volatility::tests::test_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::overnight_return::tests::test_ovr_reset ... ok [INFO] [stdout] test signals::indicators::parkinson_volatility::tests::test_sigma_positive_for_range_bars ... ok [INFO] [stdout] test signals::indicators::parkinson_volatility::tests::test_rolls_window ... ok [INFO] [stdout] test signals::indicators::payoff_ratio::tests::test_pr_invalid_period ... ok [INFO] [stdout] test signals::indicators::parkinson_volatility::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::payoff_ratio::tests::test_pr_large_wins_small_losses ... ok [INFO] [stdout] test signals::indicators::parkinson_volatility::tests::test_wider_range_gives_higher_vol ... ok [INFO] [stdout] test signals::indicators::payoff_ratio::tests::test_pr_reset ... ok [INFO] [stdout] test signals::indicators::payoff_ratio::tests::test_pr_symmetric_returns_near_one ... ok [INFO] [stdout] test signals::indicators::payoff_ratio::tests::test_pr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::percent_rank::tests::test_pr_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::percent_rank::tests::test_pr_max_when_always_rising ... ok [INFO] [stdout] test signals::indicators::percent_rank::tests::test_pr_reset ... ok [INFO] [stdout] test signals::indicators::percent_rank_range::tests::test_prr_narrowest_bar_low_rank ... ok [INFO] [stdout] test signals::indicators::percent_rank::tests::test_pr_zero_when_always_falling ... ok [INFO] [stdout] test signals::indicators::percent_rank::tests::test_pr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::percent_rank_range::tests::test_prr_reset ... ok [INFO] [stdout] test signals::indicators::percent_rank_range::tests::test_prr_uniform_ranges_fifty ... ok [INFO] [stdout] test signals::indicators::percent_rank_range::tests::test_prr_widest_bar_high_rank ... ok [INFO] [stdout] test signals::indicators::percent_rank_range::tests::test_prr_invalid_period ... ok [INFO] [stdout] test signals::indicators::percent_rank_range::tests::test_prr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::pfe::tests::test_pfe_period_and_name ... ok [INFO] [stdout] test signals::indicators::pfe::tests::test_pfe_flat_market_near_zero ... ok [INFO] [stdout] test signals::indicators::pfe::tests::test_pfe_ready_after_warmup ... ok [INFO] [stdout] test signals::indicators::pgo::tests::test_pgo_flat_market_zero ... ok [INFO] [stdout] test signals::indicators::pfe::tests::test_pfe_reset ... ok [INFO] [stdout] test signals::indicators::pgo::tests::test_pgo_period_0_error ... ok [INFO] [stdout] test signals::indicators::pgo::tests::test_pgo_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::pfe::tests::test_pfe_invalid_period ... ok [INFO] [stdout] test signals::indicators::piercing_line::tests::test_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::pgo::tests::test_pgo_reset ... ok [INFO] [stdout] test signals::indicators::piercing_line::tests::test_no_pattern_cur_not_above_midpoint ... ok [INFO] [stdout] test signals::indicators::pfe::tests::test_pfe_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::piercing_line::tests::test_no_pattern_cur_not_bullish ... ok [INFO] [stdout] test signals::indicators::piercing_line::tests::test_no_pattern_prev_bullish ... ok [INFO] [stdout] test signals::indicators::piercing_line::tests::test_piercing_line_detected ... ok [INFO] [stdout] test signals::indicators::piercing_line::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::pivot_distance::tests::test_pd_above_pivot_positive ... ok [INFO] [stdout] test signals::indicators::pivot_distance::tests::test_pd_at_pivot_is_zero ... ok [INFO] [stdout] test signals::indicators::pivot_distance::tests::test_pd_below_pivot_negative ... ok [INFO] [stdout] test signals::indicators::pivot_distance::tests::test_pd_pivot_accessor ... ok [INFO] [stdout] test signals::indicators::pivot_distance::tests::test_pd_reset ... ok [INFO] [stdout] test signals::indicators::pivot_distance::tests::test_pd_unavailable_first_bar ... ok [INFO] [stdout] test signals::indicators::pivot_point::tests::test_pp_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::pivot_point::tests::test_pp_known_values ... ok [INFO] [stdout] test signals::indicators::pivot_point::tests::test_pp_reset ... ok [INFO] [stdout] test signals::indicators::pivot_point::tests::test_pp_second_bar_gives_value ... ok [INFO] [stdout] test signals::indicators::pivot_strength::tests::test_ps_close_at_pivot_gives_zero ... ok [INFO] [stdout] test signals::indicators::pivot_strength::tests::test_ps_period_and_name ... ok [INFO] [stdout] test signals::indicators::pivot_strength::tests::test_ps_produces_value_after_warm_up ... ok [INFO] [stdout] test signals::indicators::pivot_strength::tests::test_ps_invalid_period ... ok [INFO] [stdout] test signals::indicators::pivot_strength::tests::test_ps_reset ... ok [INFO] [stdout] test signals::indicators::pivot_strength::tests::test_ps_unavailable_early ... ok [INFO] [stdout] test signals::indicators::pivots::tests::test_pivots_correct_values ... ok [INFO] [stdout] test signals::indicators::pivots::tests::test_pivots_accessors ... ok [INFO] [stdout] test signals::indicators::pivots::tests::test_pivots_reset ... ok [INFO] [stdout] test signals::indicators::pivots::tests::test_pivots_unavailable_first_bar ... ok [INFO] [stdout] test signals::indicators::pmo::tests::test_pmo_default_params_period ... ok [INFO] [stdout] test signals::indicators::pmo::tests::test_pmo_flat_price_near_zero ... ok [INFO] [stdout] test signals::indicators::pmo::tests::test_pmo_invalid_period ... ok [INFO] [stdout] test signals::indicators::pmo::tests::test_pmo_reset ... ok [INFO] [stdout] test signals::indicators::pmo::tests::test_pmo_produces_scalar_after_warmup ... ok [INFO] [stdout] test signals::indicators::pmo::tests::test_pmo_unavailable_before_ready ... ok [INFO] [stdout] test signals::indicators::positive_volume_index::tests::test_pvi_falls_on_high_volume_down_day ... ok [INFO] [stdout] test signals::indicators::positive_volume_index::tests::test_pvi_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::positive_volume_index::tests::test_pvi_reset ... ok [INFO] [stdout] test signals::indicators::positive_volume_index::tests::test_pvi_rises_on_high_volume_up_day ... ok [INFO] [stdout] test signals::indicators::ppo::tests::test_ppo_fast_ge_slow_error ... ok [INFO] [stdout] test signals::indicators::positive_volume_index::tests::test_pvi_unchanged_on_low_volume ... ok [INFO] [stdout] test signals::indicators::ppo::tests::test_ppo_constant_prices_zero ... ok [INFO] [stdout] test signals::indicators::ppo::tests::test_ppo_period_0_error ... ok [INFO] [stdout] test signals::indicators::ppo::tests::test_ppo_period_returns_slow_period ... ok [INFO] [stdout] test signals::indicators::ppo::tests::test_ppo_ready_after_slow_period ... ok [INFO] [stdout] test signals::indicators::ppo::tests::test_ppo_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::ppo::tests::test_ppo_unavailable_before_slow_ready ... ok [INFO] [stdout] test signals::indicators::price_above_ma::tests::test_pama_all_above_is_100 ... ok [INFO] [stdout] test signals::indicators::price_above_ma::tests::test_pama_all_below_is_zero ... ok [INFO] [stdout] test signals::indicators::price_above_ma::tests::test_pama_invalid ... ok [INFO] [stdout] test signals::indicators::price_above_ma::tests::test_pama_reset ... ok [INFO] [stdout] test signals::indicators::price_above_ma::tests::test_pama_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::price_above_ma_pct::tests::test_pamp_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_above_ma_pct::tests::test_pamp_reset ... ok [INFO] [stdout] test signals::indicators::price_above_ma_pct::tests::test_pamp_flat_prices_give_zero ... ok [INFO] [stdout] test signals::indicators::price_above_ma_pct::tests::test_pamp_uptrend_gives_high_fraction ... ok [INFO] [stdout] test signals::indicators::price_above_ma_pct::tests::test_pamp_in_range_zero_to_one ... ok [INFO] [stdout] test signals::indicators::price_above_rolling_high::tests::test_parh_breakout_gives_one ... ok [INFO] [stdout] test signals::indicators::price_above_rolling_high::tests::test_parh_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_above_ma_pct::tests::test_pamp_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::price_above_rolling_high::tests::test_parh_no_breakout_gives_zero ... ok [INFO] [stdout] test signals::indicators::price_above_rolling_high::tests::test_parh_reset ... ok [INFO] [stdout] test signals::indicators::price_above_rolling_high::tests::test_parh_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::price_acceleration::tests::test_price_acceleration_accelerating_positive ... ok [INFO] [stdout] test signals::indicators::price_acceleration::tests::test_price_acceleration_constant_trend_zero ... ok [INFO] [stdout] test signals::indicators::price_acceleration::tests::test_price_acceleration_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_acceleration::tests::test_price_acceleration_reset ... ok [INFO] [stdout] test signals::indicators::price_action_index::tests::test_bearish_close_at_low ... ok [INFO] [stdout] test signals::indicators::price_action_index::tests::test_bullish_close_at_high ... ok [INFO] [stdout] test signals::indicators::price_acceleration::tests::test_price_acceleration_unavailable_early ... ok [INFO] [stdout] test signals::indicators::price_action_index::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::price_action_index::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::price_action_index::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::price_bandwidth::tests::test_pb_close_at_channel_bottom ... ok [INFO] [stdout] test signals::indicators::price_bandwidth::tests::test_pb_close_at_channel_top ... ok [INFO] [stdout] test signals::indicators::price_bandwidth::tests::test_pb_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_bandwidth::tests::test_pb_reset ... ok [INFO] [stdout] test signals::indicators::price_bandwidth::tests::test_pb_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::price_change_count::tests::test_pcc_all_change ... ok [INFO] [stdout] test signals::indicators::price_change_count::tests::test_pcc_no_change ... ok [INFO] [stdout] test signals::indicators::price_change_mad::tests::test_pcm_constant_change ... ok [INFO] [stdout] test signals::indicators::price_change_mad::tests::test_pcm_flat_prices_zero ... ok [INFO] [stdout] test signals::indicators::price_change_mad::tests::test_pcm_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_change_mad::tests::test_pcm_mixed_moves ... ok [INFO] [stdout] test signals::indicators::price_change_mad::tests::test_pcm_reset ... ok [INFO] [stdout] test signals::indicators::price_change_mad::tests::test_pcm_sliding_window ... ok [INFO] [stdout] test signals::indicators::price_change_mad::tests::test_pcm_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::price_change_pct::tests::test_pcp_gain ... ok [INFO] [stdout] test signals::indicators::price_change_pct::tests::test_pcp_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::price_change_pct::tests::test_pcp_loss ... ok [INFO] [stdout] test signals::indicators::price_channel::tests::test_pc_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_change_pct::tests::test_pcp_no_change ... ok [INFO] [stdout] test signals::indicators::price_channel::tests::test_pc_rolling_window ... ok [INFO] [stdout] test signals::indicators::price_channel::tests::test_pc_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::price_change_pct::tests::test_pcp_reset ... ok [INFO] [stdout] test signals::indicators::price_channel_position::tests::test_price_channel_position_at_high ... ok [INFO] [stdout] test signals::indicators::price_channel::tests::test_pc_reset ... ok [INFO] [stdout] test signals::indicators::price_channel_width::tests::test_pcw_reset ... ok [INFO] [stdout] test signals::indicators::price_channel_width::tests::test_pcw_flat_market_zero_width ... ok [INFO] [stdout] test signals::indicators::price_channel_width::tests::test_pcw_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_compression::tests::test_pc_invalid ... ok [INFO] [stdout] test signals::indicators::price_channel_width::tests::test_pcw_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::price_compression::tests::test_pc_large_bar_above_one ... ok [INFO] [stdout] test signals::indicators::price_compression::tests::test_pc_reset ... ok [INFO] [stdout] test signals::indicators::price_channel_position::tests::test_price_channel_position_at_low ... ok [INFO] [stdout] test signals::indicators::price_compression::tests::test_pc_small_bar_below_one ... ok [INFO] [stdout] test signals::indicators::price_channel_width::tests::test_pcw_known_value ... ok [INFO] [stdout] test signals::indicators::price_compression::tests::test_pc_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::price_channel_width::tests::test_pcw_non_negative ... ok [INFO] [stdout] test signals::indicators::price_compression_breakout::tests::test_pcb_bearish_breakout ... ok [INFO] [stdout] test signals::indicators::price_compression_breakout::tests::test_pcb_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_channel_width::tests::test_pcw_period_and_name ... ok [INFO] [stdout] test signals::indicators::price_compression_breakout::tests::test_pcb_no_breakout_gives_zero ... ok [INFO] [stdout] test signals::indicators::price_channel::tests::test_pc_midpoint_correct ... ok [INFO] [stdout] test signals::indicators::price_compression::tests::test_pc_uniform_is_one ... ok [INFO] [stdout] test signals::indicators::price_compression_index::tests::test_pci_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_compression_index::tests::test_pci_constant_close_gives_zero ... ok [INFO] [stdout] test signals::indicators::price_compression_breakout::tests::test_pcb_reset ... ok [INFO] [stdout] test signals::indicators::price_compression_breakout::tests::test_pcb_unavailable_before_period_plus_1 ... ok [INFO] [stdout] test signals::indicators::price_compression_index::tests::test_pci_trending_close_positive ... ok [INFO] [stdout] test signals::indicators::price_compression_breakout::tests::test_pcb_bullish_breakout ... ok [INFO] [stdout] test signals::indicators::price_compression_index::tests::test_pci_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::price_compression_ratio::tests::test_pcr_full_overlap ... ok [INFO] [stdout] test signals::indicators::price_compression_ratio::tests::test_pcr_non_overlapping ... ok [INFO] [stdout] test signals::indicators::price_compression_streak::tests::test_pcs_counts_narrowing_ranges ... ok [INFO] [stdout] test signals::indicators::price_compression_streak::tests::test_pcs_equal_range_resets ... ok [INFO] [stdout] test signals::indicators::price_compression_streak::tests::test_pcs_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::price_compression_streak::tests::test_pcs_period_is_one ... ok [INFO] [stdout] test signals::indicators::price_compression_streak::tests::test_pcs_ready_after_second_bar ... ok [INFO] [stdout] test signals::indicators::price_compression_streak::tests::test_pcs_reset ... ok [INFO] [stdout] test signals::indicators::price_compression_breakout::tests::test_pcb_period_and_name ... ok [INFO] [stdout] test signals::indicators::price_compression_streak::tests::test_pcs_resets_on_wider_range ... ok [INFO] [stdout] test signals::indicators::price_compression_index::tests::test_pci_reset ... ok [INFO] [stdout] test signals::indicators::price_density::tests::test_pd_choppy_below_100 ... ok [INFO] [stdout] test signals::indicators::price_density::tests::test_pd_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::price_density::tests::test_pd_invalid ... ok [INFO] [stdout] test signals::indicators::price_density::tests::test_pd_monotone_is_100 ... ok [INFO] [stdout] test signals::indicators::price_density::tests::test_pd_reset ... ok [INFO] [stdout] test signals::indicators::price_density::tests::test_pd_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::price_density::tests::test_pd_uses_high_low_for_range ... ok [INFO] [stdout] test signals::indicators::price_distance_ma::tests::test_pdma_invalid ... ok [INFO] [stdout] test signals::indicators::price_distance_ma::tests::test_pdma_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::price_distance_ma::tests::test_pdma_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::price_distance_ma::tests::test_pdma_at_sma_is_zero ... ok [INFO] [stdout] test signals::indicators::price_efficiency_ratio::tests::test_efficiency_ratio_choppy ... ok [INFO] [stdout] test signals::indicators::price_distance_ma::tests::test_pdma_reset ... ok [INFO] [stdout] test signals::indicators::price_efficiency_ratio::tests::test_efficiency_ratio_straight_line ... ok [INFO] [stdout] test signals::indicators::price_entropy::tests::test_pe_all_same_direction_low_entropy ... ok [INFO] [stdout] test signals::indicators::price_entropy::tests::test_pe_alternating_moderate_entropy ... ok [INFO] [stdout] test signals::indicators::price_entropy::tests::test_pe_period_too_small ... ok [INFO] [stdout] test signals::indicators::price_entropy_score::tests::test_pes_all_same_direction_low_entropy ... ok [INFO] [stdout] test signals::indicators::price_entropy::tests::test_pe_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::price_entropy_score::tests::test_pes_mixed_higher_entropy ... ok [INFO] [stdout] test signals::indicators::price_envelope::tests::test_pe_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::price_envelope::tests::test_pe_bands_set ... ok [INFO] [stdout] test signals::indicators::price_envelope::tests::test_pe_invalid ... ok [INFO] [stdout] test signals::indicators::price_envelope::tests::test_pe_reset ... ok [INFO] [stdout] test signals::indicators::price_entropy::tests::test_pe_reset ... ok [INFO] [stdout] test signals::indicators::price_excursion::tests::test_pe_always_ready ... ok [INFO] [stdout] test signals::indicators::price_excursion::tests::test_pe_bullish_large_adverse ... ok [INFO] [stdout] test signals::indicators::price_excursion::tests::test_pe_bullish_no_adverse ... ok [INFO] [stdout] test signals::indicators::price_gap::tests::test_pg_alternating_zero_mean ... ok [INFO] [stdout] test signals::indicators::price_gap::tests::test_pg_constant_rise ... ok [INFO] [stdout] test signals::indicators::price_gap::tests::test_pg_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::price_excursion::tests::test_pe_bearish_large_adverse ... ok [INFO] [stdout] test signals::indicators::price_gap::tests::test_pg_invalid ... ok [INFO] [stdout] test signals::indicators::price_gap::tests::test_pg_reset ... ok [INFO] [stdout] test signals::indicators::price_gap::tests::test_pg_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::price_gap_frequency::tests::test_pgf_all_gaps ... ok [INFO] [stdout] test signals::indicators::price_gap_frequency::tests::test_pgf_no_gaps ... ok [INFO] [stdout] test signals::indicators::price_gap_frequency::tests::test_pgf_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_gap_frequency::tests::test_pgf_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::price_gap_frequency::tests::test_pgf_reset ... ok [INFO] [stdout] test signals::indicators::price_excursion::tests::test_pe_no_range ... ok [INFO] [stdout] test signals::indicators::price_gap_momentum::tests::test_pgm_gap_down_seeds_negative ... ok [INFO] [stdout] test signals::indicators::price_gap_momentum::tests::test_pgm_gap_up_seeds_positive ... ok [INFO] [stdout] test signals::indicators::price_gap_momentum::tests::test_pgm_ready_after_second_bar ... ok [INFO] [stdout] test signals::indicators::price_gap_momentum::tests::test_pgm_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_gap_momentum::tests::test_pgm_reset ... ok [INFO] [stdout] test signals::indicators::price_gap_momentum::tests::test_pgm_unavailable_first_bar ... ok [INFO] [stdout] test signals::indicators::price_gravity::tests::test_pg_above_mean_negative ... ok [INFO] [stdout] test signals::indicators::price_gravity::tests::test_pg_below_mean_positive ... ok [INFO] [stdout] test signals::indicators::price_gravity::tests::test_pg_constant_price_unavailable ... ok [INFO] [stdout] test signals::indicators::price_gravity::tests::test_pg_reset ... ok [INFO] [stdout] test signals::indicators::price_gravity::tests::test_pg_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_impulse::tests::test_pi_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_gravity::tests::test_pg_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::price_impulse::tests::test_pi_positive_impulse ... ok [INFO] [stdout] test signals::indicators::price_intensity::tests::test_pi_close_at_high_is_one ... ok [INFO] [stdout] test signals::indicators::price_impulse::tests::test_pi_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::price_impulse::tests::test_pi_reset ... ok [INFO] [stdout] test signals::indicators::price_intensity::tests::test_pi_close_at_low_is_minus_one ... ok [INFO] [stdout] test signals::indicators::price_intensity::tests::test_pi_doji_is_zero ... ok [INFO] [stdout] test signals::indicators::price_intensity::tests::test_pi_range_minus_one_to_one ... ok [INFO] [stdout] test signals::indicators::price_intensity::tests::test_pi_reset ... ok [INFO] [stdout] test signals::indicators::price_intensity::tests::test_pi_invalid ... ok [INFO] [stdout] test signals::indicators::price_intensity::tests::test_pi_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::price_level_oscillator::tests::test_invalid_params ... ok [INFO] [stdout] test signals::indicators::price_level_oscillator::tests::test_equal_prices_zero ... ok [INFO] [stdout] test signals::indicators::price_level_oscillator::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::price_level_pct::tests::test_pl_flat_market_unavailable ... ok [INFO] [stdout] test signals::indicators::price_level_pct::tests::test_pl_midpoint_is_50 ... ok [INFO] [stdout] test signals::indicators::price_level_oscillator::tests::test_rising_gives_positive ... ok [INFO] [stdout] test signals::indicators::price_level_pct::tests::test_pl_period_0_error ... ok [INFO] [stdout] test signals::indicators::price_level_oscillator::tests::test_unavailable_before_slow_period ... ok [INFO] [stdout] test signals::indicators::price_level_pct::tests::test_pl_reset ... ok [INFO] [stdout] test signals::indicators::price_level_pct::tests::test_pl_close_at_bottom_is_0 ... ok [INFO] [stdout] test signals::indicators::price_level_pct::tests::test_pl_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::price_mean_deviation::tests::test_pmd_symmetric ... ok [INFO] [stdout] test signals::indicators::price_mean_deviation::tests::test_pmd_flat_zero ... ok [INFO] [stdout] test signals::indicators::price_momentum_rank::tests::test_pmr_in_bounds ... ok [INFO] [stdout] test signals::indicators::price_momentum_rank::tests::test_pmr_invalid_period_zero ... ok [INFO] [stdout] test signals::indicators::price_level_pct::tests::test_pl_close_at_top_is_100 ... ok [INFO] [stdout] test signals::indicators::price_momentum_rank::tests::test_pmr_invalid_window_zero ... ok [INFO] [stdout] test signals::indicators::price_momentum_rank::tests::test_pmr_ready_after_period_plus_window ... ok [INFO] [stdout] test signals::indicators::price_momentum_rank::tests::test_pmr_reset ... ok [INFO] [stdout] test signals::indicators::price_momentum_rank::tests::test_pmr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::price_oscillator2::tests::test_po2_flat_price_is_zero ... ok [INFO] [stdout] test signals::indicators::price_oscillator2::tests::test_po2_invalid_periods ... ok [INFO] [stdout] test signals::indicators::price_momentum_oscillator::tests::test_pmo_trending_up_positive ... ok [INFO] [stdout] test signals::indicators::price_oscillator2::tests::test_po2_unavailable_before_slow_period ... ok [INFO] [stdout] test signals::indicators::price_oscillator::tests::test_po_downtrend_negative ... ok [INFO] [stdout] test signals::indicators::price_oscillator::tests::test_po_reset ... ok [INFO] [stdout] test signals::indicators::price_momentum_oscillator::tests::test_pmo_equal_smas_zero ... ok [INFO] [stdout] test signals::indicators::price_oscillator::tests::test_po_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::price_oscillator::tests::test_po_uptrend_positive ... ok [INFO] [stdout] test signals::indicators::price_oscillator2::tests::test_po2_reset ... ok [INFO] [stdout] test signals::indicators::price_oscillator::tests::test_po_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::price_oscillator_pct::tests::test_pop_flat_zero ... ok [INFO] [stdout] test signals::indicators::price_oscillator_pct::tests::test_pop_trend_positive ... ok [INFO] [stdout] test signals::indicators::price_oscillator2::tests::test_po2_rising_prices_positive ... ok [INFO] [stdout] test signals::indicators::price_oscillator::tests::test_po_invalid ... ok [INFO] [stdout] test signals::indicators::price_oscillator_sign::tests::test_pos_flat_zero ... ok [INFO] [stdout] test signals::indicators::price_oscillator_sign::tests::test_pos_uptrend_bullish ... ok [INFO] [stdout] test signals::indicators::price_path_efficiency::tests::test_ppe_flat_prices_unavailable ... ok [INFO] [stdout] test signals::indicators::price_path_efficiency::tests::test_ppe_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_path_efficiency::tests::test_ppe_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::price_path_efficiency::tests::test_ppe_perfectly_trending_gives_one ... ok [INFO] [stdout] test signals::indicators::price_path_efficiency::tests::test_ppe_period_and_name ... ok [INFO] [stdout] test signals::indicators::price_path_efficiency::tests::test_ppe_unavailable_before_period_plus_1 ... ok [INFO] [stdout] test signals::indicators::price_path_efficiency::tests::test_ppe_reset ... ok [INFO] [stdout] test signals::indicators::price_position::tests::test_pp_at_bottom_is_zero ... ok [INFO] [stdout] test signals::indicators::price_position::tests::test_pp_at_top_is_100 ... ok [INFO] [stdout] test signals::indicators::price_position::tests::test_pp_flat_unavailable ... ok [INFO] [stdout] test signals::indicators::price_position::tests::test_pp_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_position::tests::test_pp_reset ... ok [INFO] [stdout] test signals::indicators::price_position::tests::test_pp_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::price_position_rank::tests::test_ppr_at_bottom ... ok [INFO] [stdout] test signals::indicators::price_position_rank::tests::test_ppr_at_middle ... ok [INFO] [stdout] test signals::indicators::price_position_rank::tests::test_ppr_at_top ... ok [INFO] [stdout] test signals::indicators::price_range_expansion::tests::test_range_expansion_always_expanding ... ok [INFO] [stdout] test signals::indicators::price_range_expansion::tests::test_range_expansion_never_expanding ... ok [INFO] [stdout] test signals::indicators::price_range_momentum::tests::test_constant_range_zero_roc ... ok [INFO] [stdout] test signals::indicators::price_range_momentum::tests::test_contracting_range_negative ... ok [INFO] [stdout] test signals::indicators::price_range_momentum::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::price_range_momentum::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::price_range_momentum::tests::test_expanding_range_positive ... ok [INFO] [stdout] test signals::indicators::price_range_pct::tests::test_prp_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::price_range_momentum::tests::test_ready_after_period_plus_one ... ok [INFO] [stdout] test signals::indicators::price_range_pct::tests::test_prp_period ... ok [INFO] [stdout] test signals::indicators::price_range_pct::tests::test_prp_reset_noop ... ok [INFO] [stdout] test signals::indicators::price_range_rank::tests::test_prr_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_range_momentum::tests::test_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::price_range_momentum::tests::test_zero_reference_range_returns_zero ... ok [INFO] [stdout] test signals::indicators::price_range_rank::tests::test_prr_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::price_range_rank::tests::test_prr_narrowest_bar_gives_zero ... ok [INFO] [stdout] test signals::indicators::price_range_pct::tests::test_prp_10_percent_range ... ok [INFO] [stdout] test signals::indicators::price_range_rank::tests::test_prr_reset ... ok [INFO] [stdout] test signals::indicators::price_range_pct::tests::test_prp_is_ready_immediately ... ok [INFO] [stdout] test signals::indicators::price_range_rank::tests::test_prr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::price_relative_strength::tests::test_prs_all_up_max ... ok [INFO] [stdout] test signals::indicators::price_relative_strength::tests::test_prs_equal_gains_losses_one ... ok [INFO] [stdout] test signals::indicators::price_return_skew::tests::test_prs_flat_prices_unavailable ... ok [INFO] [stdout] test signals::indicators::price_return_skew::tests::test_prs_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_range_rank::tests::test_prr_widest_bar_gives_one ... ok [INFO] [stdout] test signals::indicators::price_return_skew::tests::test_prs_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::price_reversal::tests::test_pr_above_median_positive ... ok [INFO] [stdout] test signals::indicators::price_reversal::tests::test_pr_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::price_reversal::tests::test_pr_reset ... ok [INFO] [stdout] test signals::indicators::price_reversal::tests::test_pr_invalid ... ok [INFO] [stdout] test signals::indicators::price_reversal::tests::test_pr_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::price_return_skew::tests::test_prs_positive_outlier_positive_skew ... ok [INFO] [stdout] test signals::indicators::price_reversal_index::tests::test_alternating_gives_one ... ok [INFO] [stdout] test signals::indicators::price_reversal_index::tests::test_period_less_than_2_fails ... ok [INFO] [stdout] test signals::indicators::price_return_skew::tests::test_prs_reset ... ok [INFO] [stdout] test signals::indicators::price_reversal_index::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::price_return_skew::tests::test_prs_symmetric_near_zero ... ok [INFO] [stdout] test signals::indicators::price_reversal_index::tests::test_pure_trend_zero ... ok [INFO] [stdout] test signals::indicators::price_reversal_index::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::price_reversal_strength::tests::test_prs_close_at_high_is_100 ... ok [INFO] [stdout] test signals::indicators::price_reversal_strength::tests::test_prs_close_at_low_is_0 ... ok [INFO] [stdout] test signals::indicators::price_reversal_strength::tests::test_prs_period_0_error ... ok [INFO] [stdout] test signals::indicators::price_reversal_strength::tests::test_prs_reset ... ok [INFO] [stdout] test signals::indicators::price_reversal_strength::tests::test_prs_rolling_average ... ok [INFO] [stdout] test signals::indicators::price_reversal_strength::tests::test_prs_zero_range_unavailable ... ok [INFO] [stdout] test signals::indicators::price_spread_ratio::tests::test_identical_bars_gives_zero_spread ... ok [INFO] [stdout] test signals::indicators::price_spread_ratio::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::price_spread_ratio::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::price_spread_ratio::tests::test_spread_ratio_positive ... ok [INFO] [stdout] test signals::indicators::price_spread_ratio::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::price_symmetry::tests::test_ps_always_ready ... ok [INFO] [stdout] test signals::indicators::price_symmetry::tests::test_ps_open_at_high_gives_neg_half ... ok [INFO] [stdout] test signals::indicators::price_symmetry::tests::test_ps_open_at_low_gives_half ... ok [INFO] [stdout] test signals::indicators::price_symmetry::tests::test_ps_reset_noop ... ok [INFO] [stdout] test signals::indicators::price_symmetry::tests::test_ps_symmetric_bar_gives_zero ... ok [INFO] [stdout] test signals::indicators::price_symmetry::tests::test_ps_zero_range_gives_zero ... ok [INFO] [stdout] test signals::indicators::price_to_sma_ratio::tests::test_ptsr_above_sma ... ok [INFO] [stdout] test signals::indicators::price_to_sma_ratio::tests::test_ptsr_at_sma_is_one ... ok [INFO] [stdout] test signals::indicators::price_to_sma_ratio::tests::test_ptsr_period_0_error ... ok [INFO] [stdout] test signals::indicators::price_to_sma_ratio::tests::test_ptsr_reset ... ok [INFO] [stdout] test signals::indicators::price_to_sma_ratio::tests::test_ptsr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::price_velocity::tests::test_pv_constant_up ... ok [INFO] [stdout] test signals::indicators::price_velocity::tests::test_pv_flat_zero ... ok [INFO] [stdout] test signals::indicators::price_velocity_ratio::tests::test_pvr_bullish_positive ... ok [INFO] [stdout] test signals::indicators::price_velocity_ratio::tests::test_pvr_doji_gives_zero ... ok [INFO] [stdout] test signals::indicators::price_velocity_ratio::tests::test_pvr_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_velocity_ratio::tests::test_pvr_reset ... ok [INFO] [stdout] test signals::indicators::price_velocity_ratio::tests::test_pvr_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::price_velocity_score::tests::test_pvs_ready_after_warm_up ... ok [INFO] [stdout] test signals::indicators::price_velocity_score::tests::test_pvs_invalid ... ok [INFO] [stdout] test signals::indicators::price_velocity_score::tests::test_pvs_unavailable ... ok [INFO] [stdout] test signals::indicators::price_velocity_score::tests::test_pvs_reset ... ok [INFO] [stdout] test signals::indicators::price_volatility_ratio::tests::test_pvr_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_volatility_ratio::tests::test_pvr_flat_baseline_unavailable ... ok [INFO] [stdout] test signals::indicators::price_volatility_ratio::tests::test_pvr_reset ... ok [INFO] [stdout] test signals::indicators::price_volatility_ratio::tests::test_pvr_large_move_high_ratio ... ok [INFO] [stdout] test signals::indicators::price_volatility_ratio::tests::test_pvr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::price_volume_ratio::tests::test_pvr_invalid_period ... ok [INFO] [stdout] test signals::indicators::price_volume_ratio::tests::test_pvr_constant_returns_ratio ... ok [INFO] [stdout] test signals::indicators::price_volume_ratio::tests::test_pvr_reset ... ok [INFO] [stdout] test signals::indicators::price_volume_ratio::tests::test_pvr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::price_zscore::tests::test_pz_constant_price_unavailable ... ok [INFO] [stdout] test signals::indicators::price_zscore::tests::test_pz_mean_price_is_zero ... ok [INFO] [stdout] test signals::indicators::price_zscore::tests::test_pz_period_0_error ... ok [INFO] [stdout] test signals::indicators::price_zscore::tests::test_pz_period_less_than_2_error ... ok [INFO] [stdout] test signals::indicators::price_zscore::tests::test_pz_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::profit_factor::tests::test_pf_balanced_returns_near_one ... ok [INFO] [stdout] test signals::indicators::price_zscore::tests::test_pz_reset ... ok [INFO] [stdout] test signals::indicators::profit_factor::tests::test_pf_invalid_period ... ok [INFO] [stdout] test signals::indicators::profit_factor::tests::test_pf_reset ... ok [INFO] [stdout] test signals::indicators::profit_factor::tests::test_pf_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::profit_factor::tests::test_pf_bull_run_high_profit_factor ... ok [INFO] [stdout] test signals::indicators::psar::tests::test_psar_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::psar::tests::test_psar_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::psar::tests::test_psar_invalid_params ... ok [INFO] [stdout] test signals::indicators::psychological_line::tests::test_pl_all_down ... ok [INFO] [stdout] test signals::indicators::psychological_line::tests::test_pl_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::psar::tests::test_psar_second_bar_ready ... ok [INFO] [stdout] test signals::indicators::psychological_line::tests::test_pl_invalid_period ... ok [INFO] [stdout] test signals::indicators::psychological_line::tests::test_pl_mixed ... ok [INFO] [stdout] test signals::indicators::psychological_line::tests::test_pl_reset ... ok [INFO] [stdout] test signals::indicators::pvo::tests::test_pvo_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::pvo::tests::test_pvo_period_and_name ... ok [INFO] [stdout] test signals::indicators::psychological_line::tests::test_pl_all_up ... ok [INFO] [stdout] test signals::indicators::pvo::tests::test_pvo_ready_after_slow_period ... ok [INFO] [stdout] test signals::indicators::qqe::tests::test_qqe_invalid ... ok [INFO] [stdout] test signals::indicators::pvo::tests::test_pvo_invalid_period ... ok [INFO] [stdout] test signals::indicators::qqe::tests::test_qqe_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::qqe::tests::test_qqe_produces_scalar ... ok [INFO] [stdout] test signals::indicators::range_breakout_count::tests::test_rbc_alternating_wide_narrow ... ok [INFO] [stdout] test signals::indicators::range_breakout_count::tests::test_rbc_invalid_period ... ok [INFO] [stdout] test signals::indicators::range_breakout_count::tests::test_rbc_reset ... ok [INFO] [stdout] test signals::indicators::pvo::tests::test_pvo_zero_when_flat_volume ... ok [INFO] [stdout] test signals::indicators::pvo::tests::test_pvo_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::qqe::tests::test_qqe_reset ... ok [INFO] [stdout] test signals::indicators::range_breakout_count::tests::test_rbc_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::qqe::tests::test_qqe_bands_set_when_ready ... ok [INFO] [stdout] test signals::indicators::range_compression_ratio::tests::test_rcr_in_range_zero_to_one ... ok [INFO] [stdout] test signals::indicators::range_breakout_count::tests::test_rbc_uniform_ranges_near_half ... ok [INFO] [stdout] test signals::indicators::range_compression_ratio::tests::test_rcr_invalid_period ... ok [INFO] [stdout] test signals::indicators::range_compression_ratio::tests::test_rcr_narrow_after_wide_gives_low_ratio ... ok [INFO] [stdout] test signals::indicators::range_compression_ratio::tests::test_rcr_reset ... ok [INFO] [stdout] test signals::indicators::range_compression_ratio::tests::test_rcr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::range_contraction_count::tests::test_rcc_contracting_streak ... ok [INFO] [stdout] test signals::indicators::range_compression_ratio::tests::test_rcr_uniform_ranges_give_one ... ok [INFO] [stdout] test signals::indicators::range_contraction_count::tests::test_rcc_expansion_resets ... ok [INFO] [stdout] test signals::indicators::range_contraction_count::tests::test_rcc_reset ... ok [INFO] [stdout] test signals::indicators::range_contraction_count::tests::test_rcc_unavailable_first_bar ... ok [INFO] [stdout] test signals::indicators::range_contraction_index::tests::test_rci_current_is_minimum_gives_one ... ok [INFO] [stdout] test signals::indicators::range_contraction_index::tests::test_rci_expansion_above_one ... ok [INFO] [stdout] test signals::indicators::range_contraction_index::tests::test_rci_invalid_period ... ok [INFO] [stdout] test signals::indicators::range_contraction_index::tests::test_rci_reset ... ok [INFO] [stdout] test signals::indicators::range_contraction_index::tests::test_rci_sliding_window ... ok [INFO] [stdout] test signals::indicators::range_contraction_index::tests::test_rci_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::range_efficiency::tests::test_re_flat_is_unavailable ... ok [INFO] [stdout] test signals::indicators::range_efficiency::tests::test_re_invalid_period ... ok [INFO] [stdout] test signals::indicators::range_efficiency::tests::test_re_monotonic_trend ... ok [INFO] [stdout] test signals::indicators::range_efficiency::tests::test_re_reset ... ok [INFO] [stdout] test signals::indicators::range_efficiency::tests::test_re_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::range_expansion_index::tests::test_rei_constant_range ... ok [INFO] [stdout] test signals::indicators::range_expansion_index::tests::test_rei_doubling_range ... ok [INFO] [stdout] test signals::indicators::range_expansion_rate::tests::test_rer_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::range_filter::tests::test_rf_filter_lags_on_small_moves ... ok [INFO] [stdout] test signals::indicators::range_filter::tests::test_rf_flat_output_zero ... ok [INFO] [stdout] test signals::indicators::range_expansion_rate::tests::test_rer_constant_range_returns_one ... ok [INFO] [stdout] test signals::indicators::range_expansion_rate::tests::test_rer_expanding_ranges_above_one ... ok [INFO] [stdout] test signals::indicators::range_filter::tests::test_rf_invalid ... ok [INFO] [stdout] test signals::indicators::range_expansion_rate::tests::test_rer_invalid_period ... ok [INFO] [stdout] test signals::indicators::range_expansion_rate::tests::test_rer_reset ... ok [INFO] [stdout] test signals::indicators::range_filter::tests::test_rf_reset ... ok [INFO] [stdout] test signals::indicators::range_filter::tests::test_rf_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::range_midpoint_position::tests::test_rmp_close_at_high_gives_positive ... ok [INFO] [stdout] test signals::indicators::range_midpoint_position::tests::test_rmp_close_at_midpoint_gives_zero ... ok [INFO] [stdout] test signals::indicators::range_midpoint_position::tests::test_rmp_in_range_negative_one_to_one ... ok [INFO] [stdout] test signals::indicators::range_midpoint_position::tests::test_rmp_invalid_period ... ok [INFO] [stdout] test signals::indicators::range_midpoint_position::tests::test_rmp_reset ... ok [INFO] [stdout] test signals::indicators::range_midpoint_position::tests::test_rmp_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::range_momentum::tests::test_rm_constant_range_zero ... ok [INFO] [stdout] test signals::indicators::range_momentum::tests::test_rm_expanding_positive ... ok [INFO] [stdout] test signals::indicators::range_pct_of_close::tests::test_rpc_always_ready ... ok [INFO] [stdout] test signals::indicators::range_pct_of_close::tests::test_rpc_basic ... ok [INFO] [stdout] test signals::indicators::range_pct_of_close::tests::test_rpc_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::range_pct_of_close::tests::test_rpc_non_negative ... ok [INFO] [stdout] test signals::indicators::range_percentile::tests::test_largest_range_is_one ... ok [INFO] [stdout] test signals::indicators::range_percentile::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::range_percentile::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::range_percentile::tests::test_smallest_range_is_zero ... ok [INFO] [stdout] test signals::indicators::range_percentile::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::range_persistence::tests::test_rp_all_expanding ... ok [INFO] [stdout] test signals::indicators::range_persistence::tests::test_rp_no_expansion ... ok [INFO] [stdout] test signals::indicators::range_position_oscillator::tests::test_rpo_bullish_bars_eventually_positive ... ok [INFO] [stdout] test signals::indicators::range_position_oscillator::tests::test_rpo_invalid_period ... ok [INFO] [stdout] test signals::indicators::range_position_oscillator::tests::test_rpo_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::range_position_oscillator::tests::test_rpo_reset ... ok [INFO] [stdout] test signals::indicators::range_position_oscillator::tests::test_rpo_seeds_zero_on_first_bar ... ok [INFO] [stdout] test signals::indicators::range_pressure_index::tests::test_rpi_all_closes_at_high_returns_one ... ok [INFO] [stdout] test signals::indicators::range_pressure_index::tests::test_rpi_all_closes_at_low_returns_negative_one ... ok [INFO] [stdout] test signals::indicators::range_pressure_index::tests::test_rpi_all_closes_at_mid_returns_zero ... ok [INFO] [stdout] test signals::indicators::range_pressure_index::tests::test_rpi_invalid_period ... ok [INFO] [stdout] test signals::indicators::range_pressure_index::tests::test_rpi_reset ... ok [INFO] [stdout] test signals::indicators::range_pressure_index::tests::test_rpi_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::range_ratio::tests::test_rr_expanding_above_one ... ok [INFO] [stdout] test signals::indicators::range_ratio::tests::test_rr_flat_returns_one ... ok [INFO] [stdout] test signals::indicators::range_pressure_index::tests::test_rpi_zero_volume_unavailable ... ok [INFO] [stdout] test signals::indicators::range_ratio::tests::test_rr_invalid ... ok [INFO] [stdout] test signals::indicators::range_ratio::tests::test_rr_contracting_below_one ... ok [INFO] [stdout] test signals::indicators::range_return_ratio::tests::test_rrr_basic ... ok [INFO] [stdout] test signals::indicators::range_return_ratio::tests::test_rrr_zero_range ... ok [INFO] [stdout] test signals::indicators::range_to_atr_ratio::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::range_to_atr_ratio::tests::test_equal_ranges_gives_one ... ok [INFO] [stdout] test signals::indicators::range_ratio::tests::test_rr_uniform_is_one ... ok [INFO] [stdout] test signals::indicators::range_to_atr_ratio::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::range_to_atr_ratio::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::range_trend_slope::tests::test_rts_expanding_ranges_positive_slope ... ok [INFO] [stdout] test signals::indicators::range_ratio::tests::test_rr_reset ... ok [INFO] [stdout] test signals::indicators::range_trend_slope::tests::test_rts_flat_ranges_near_zero_slope ... ok [INFO] [stdout] test signals::indicators::range_trend_slope::tests::test_rts_contracting_ranges_negative_slope ... ok [INFO] [stdout] test signals::indicators::range_ratio::tests::test_rr_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::range_trend_slope::tests::test_rts_invalid_period ... ok [INFO] [stdout] test signals::indicators::range_trend_slope::tests::test_rts_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::range_volatility_ratio::tests::test_rvr_invalid_period ... ok [INFO] [stdout] test signals::indicators::range_trend_slope::tests::test_rts_reset ... ok [INFO] [stdout] test signals::indicators::range_volatility_ratio::tests::test_rvr_narrow_bar_below_one ... ok [INFO] [stdout] test signals::indicators::range_volatility_ratio::tests::test_rvr_reset ... ok [INFO] [stdout] test signals::indicators::range_volatility_ratio::tests::test_rvr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::range_volatility_ratio::tests::test_rvr_uniform_ranges_one ... ok [INFO] [stdout] test signals::indicators::range_volatility_ratio::tests::test_rvr_wide_bar_above_one ... ok [INFO] [stdout] test signals::indicators::range_z_score::tests::test_range_z_score_constant_zero ... ok [INFO] [stdout] test signals::indicators::range_z_score::tests::test_range_z_score_not_ready ... ok [INFO] [stdout] test signals::indicators::rate_of_change_pct::tests::test_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::rate_of_change_pct::tests::test_loss_negative ... ok [INFO] [stdout] test signals::indicators::rate_of_change_pct::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::rate_of_change_pct::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::rate_of_change_pct::tests::test_ten_pct_gain ... ok [INFO] [stdout] test signals::indicators::rate_of_change_pct::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::regime_volatility::tests::test_rv_expanding_volatility ... ok [INFO] [stdout] test signals::indicators::regime_volatility::tests::test_rv_produces_scalar_after_warm_up ... ok [INFO] [stdout] test signals::indicators::regime_volatility::tests::test_rv_invalid_params ... ok [INFO] [stdout] test signals::indicators::regime_volatility::tests::test_rv_reset ... ok [INFO] [stdout] test signals::indicators::regime_volatility::tests::test_rv_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::relative_bar_range::tests::test_rbr_constant_range_gives_one ... ok [INFO] [stdout] test signals::indicators::relative_bar_range::tests::test_rbr_invalid_period ... ok [INFO] [stdout] test signals::indicators::relative_bar_range::tests::test_rbr_narrow_bar_below_one ... ok [INFO] [stdout] test signals::indicators::relative_bar_range::tests::test_rbr_period_and_name ... ok [INFO] [stdout] test signals::indicators::relative_bar_range::tests::test_rbr_non_negative ... ok [INFO] [stdout] test signals::indicators::relative_bar_range::tests::test_rbr_wide_bar_above_one ... ok [INFO] [stdout] test signals::indicators::relative_close::tests::test_rc_always_ready ... ok [INFO] [stdout] test signals::indicators::relative_close::tests::test_rc_close_at_high ... ok [INFO] [stdout] test signals::indicators::relative_bar_range::tests::test_rbr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::relative_close::tests::test_rc_close_at_low ... ok [INFO] [stdout] test signals::indicators::relative_close::tests::test_rc_close_at_midpoint ... ok [INFO] [stdout] test signals::indicators::relative_bar_range::tests::test_rbr_reset ... ok [INFO] [stdout] test signals::indicators::relative_close::tests::test_rc_zero_range_unavailable ... ok [INFO] [stdout] test signals::indicators::relative_range_rank::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::relative_range_rank::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::relative_range_rank::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::relative_volatility::tests::test_rv_flat_is_one ... ok [INFO] [stdout] test signals::indicators::relative_volatility::tests::test_rv_reset ... ok [INFO] [stdout] test signals::indicators::relative_volatility::tests::test_rv_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::relative_volume_rank::tests::test_rvr_highest_volume_gives_one ... ok [INFO] [stdout] test signals::indicators::relative_volume_rank::tests::test_rvr_invalid_period ... ok [INFO] [stdout] test signals::indicators::relative_volume_rank::tests::test_rvr_lowest_volume_gives_zero ... ok [INFO] [stdout] test signals::indicators::relative_range_rank::tests::test_equal_ranges_all_100 ... ok [INFO] [stdout] test signals::indicators::relative_volume_rank::tests::test_rvr_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::relative_volume_rank::tests::test_rvr_reset ... ok [INFO] [stdout] test signals::indicators::relative_volatility::tests::test_rv_invalid ... ok [INFO] [stdout] test signals::indicators::relative_volume_score::tests::test_rvs_double_volume ... ok [INFO] [stdout] test signals::indicators::relative_volume_score::tests::test_rvs_reset ... ok [INFO] [stdout] test signals::indicators::return_above_zero_pct::tests::test_razp_all_down_gives_zero ... ok [INFO] [stdout] test signals::indicators::return_above_zero_pct::tests::test_razp_all_up_gives_one ... ok [INFO] [stdout] test signals::indicators::relative_volume_score::tests::test_rvs_constant_volume_gives_one ... ok [INFO] [stdout] test signals::indicators::relative_range_rank::tests::test_largest_range_is_100 ... ok [INFO] [stdout] test signals::indicators::return_autocorrelation::tests::test_autocorr_not_ready ... ok [INFO] [stdout] test signals::indicators::return_autocorrelation::tests::test_autocorr_trending_positive ... ok [INFO] [stdout] test signals::indicators::return_concentration::tests::test_flat_returns_zero ... ok [INFO] [stdout] test signals::indicators::relative_volume_score::tests::test_rvs_invalid_period ... ok [INFO] [stdout] test signals::indicators::relative_volume_score::tests::test_rvs_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::return_concentration::tests::test_ready_after_period_plus_one ... ok [INFO] [stdout] test signals::indicators::return_concentration::tests::test_invalid_params ... ok [INFO] [stdout] test signals::indicators::return_concentration::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::return_concentration::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::return_above_zero_pct::tests::test_razp_invalid_period ... ok [INFO] [stdout] test signals::indicators::relative_volume_rank::tests::test_rvr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::return_consistency::tests::test_rc_invalid_period ... ok [INFO] [stdout] test signals::indicators::return_above_zero_pct::tests::test_razp_reset ... ok [INFO] [stdout] test signals::indicators::return_above_zero_pct::tests::test_razp_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::return_consistency::tests::test_rc_net_zero_unavailable ... ok [INFO] [stdout] test signals::indicators::return_consistency::tests::test_rc_retracement_below_100 ... ok [INFO] [stdout] test signals::indicators::return_consistency::tests::test_rc_reset ... ok [INFO] [stdout] test signals::indicators::return_consistency::tests::test_rc_straight_trend_100 ... ok [INFO] [stdout] test signals::indicators::return_consistency::tests::test_rc_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::return_dispersion::tests::test_return_dispersion_constant_returns ... ok [INFO] [stdout] test signals::indicators::return_dispersion::tests::test_return_dispersion_not_ready ... ok [INFO] [stdout] test signals::indicators::return_iqr::tests::test_iqr_invalid_period ... ok [INFO] [stdout] test signals::indicators::return_iqr::tests::test_iqr_non_negative ... ok [INFO] [stdout] test signals::indicators::return_iqr::tests::test_iqr_reset ... ok [INFO] [stdout] test signals::indicators::return_iqr::tests::test_iqr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::return_iqr::tests::test_iqr_volatile_greater_than_flat ... ok [INFO] [stdout] test signals::indicators::return_kurtosis::tests::test_rk_fat_tails_positive ... ok [INFO] [stdout] test signals::indicators::return_kurtosis::tests::test_rk_flat_prices_unavailable ... ok [INFO] [stdout] test signals::indicators::return_kurtosis::tests::test_rk_invalid_period ... ok [INFO] [stdout] test signals::indicators::return_kurtosis::tests::test_rk_reset ... ok [INFO] [stdout] test signals::indicators::return_kurtosis::tests::test_rk_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::return_mean_deviation::tests::test_rmd_constant_returns_gives_zero ... ok [INFO] [stdout] test signals::indicators::return_mean_deviation::tests::test_rmd_invalid_period ... ok [INFO] [stdout] test signals::indicators::return_mean_deviation::tests::test_rmd_reset ... ok [INFO] [stdout] test signals::indicators::return_mean_deviation::tests::test_rmd_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::return_mean_deviation::tests::test_rmd_varying_returns_positive ... ok [INFO] [stdout] test signals::indicators::return_over_volatility::tests::test_rov_constant_prices_unavailable ... ok [INFO] [stdout] test signals::indicators::return_over_volatility::tests::test_rov_invalid_period ... ok [INFO] [stdout] test signals::indicators::return_over_volatility::tests::test_rov_reset ... ok [INFO] [stdout] test signals::indicators::return_over_volatility::tests::test_rov_trending_series_positive ... ok [INFO] [stdout] test signals::indicators::return_over_volatility::tests::test_rov_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::return_percent_rank::tests::test_rpr_highest_return_gives_one ... ok [INFO] [stdout] test signals::indicators::return_percent_rank::tests::test_rpr_invalid_period ... ok [INFO] [stdout] test signals::indicators::return_percent_rank::tests::test_rpr_lowest_return_gives_zero ... ok [INFO] [stdout] test signals::indicators::return_percent_rank::tests::test_rpr_period_and_name ... ok [INFO] [stdout] test signals::indicators::return_percent_rank::tests::test_rpr_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::return_percent_rank::tests::test_rpr_reset ... ok [INFO] [stdout] test signals::indicators::return_percent_rank::tests::test_rpr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::return_persistence::tests::test_rp_alternating_series_is_0 ... ok [INFO] [stdout] test signals::indicators::return_persistence::tests::test_rp_period_0_error ... ok [INFO] [stdout] test signals::indicators::return_persistence::tests::test_rp_trending_series_is_100 ... ok [INFO] [stdout] test signals::indicators::return_persistence::tests::test_rp_reset ... ok [INFO] [stdout] test signals::indicators::return_sign_changes::tests::test_rsc_invalid_period ... ok [INFO] [stdout] test signals::indicators::return_sign_changes::tests::test_rsc_alternating_gives_max_changes ... ok [INFO] [stdout] test signals::indicators::return_persistence::tests::test_rp_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::return_sign_changes::tests::test_rsc_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::return_sign_sum::tests::test_return_sign_sum_all_up ... ok [INFO] [stdout] test signals::indicators::return_sign_sum::tests::test_return_sign_sum_mixed ... ok [INFO] [stdout] test signals::indicators::return_sign_changes::tests::test_rsc_trending_gives_zero_changes ... ok [INFO] [stdout] test signals::indicators::return_sign_changes::tests::test_rsc_reset ... ok [INFO] [stdout] test signals::indicators::roc::tests::test_roc_constant_prices_is_zero ... ok [INFO] [stdout] test signals::indicators::roc::tests::test_roc_known_value ... ok [INFO] [stdout] test signals::indicators::rmi::tests::test_rmi_all_down_equals_0 ... ok [INFO] [stdout] test signals::indicators::rmi::tests::test_rmi_all_up_equals_100 ... ok [INFO] [stdout] test signals::indicators::rmi::tests::test_rmi_in_bounds ... ok [INFO] [stdout] test signals::indicators::rmi::tests::test_rmi_invalid_period ... ok [INFO] [stdout] test signals::indicators::rmi::tests::test_rmi_unavailable_initially ... ok [INFO] [stdout] test signals::indicators::roc::tests::test_roc_period_0_error ... ok [INFO] [stdout] test signals::indicators::roc::tests::test_roc_reset ... ok [INFO] [stdout] test signals::indicators::roc::tests::test_roc_unavailable_before_period_plus_1 ... ok [INFO] [stdout] test signals::indicators::roc_acceleration::tests::test_ra_constant_roc_zero_acceleration ... ok [INFO] [stdout] test signals::indicators::rmi::tests::test_rmi_reset ... ok [INFO] [stdout] test signals::indicators::roc_acceleration::tests::test_ra_reset ... ok [INFO] [stdout] test signals::indicators::roc_ratio::tests::test_roc_ratio_invalid_params ... ok [INFO] [stdout] test signals::indicators::roc_acceleration::tests::test_ra_produces_scalar_after_warmup ... ok [INFO] [stdout] test signals::indicators::roc_ratio::tests::test_roc_ratio_period_is_slow ... ok [INFO] [stdout] test signals::indicators::roc_acceleration::tests::test_ra_invalid_period ... ok [INFO] [stdout] test signals::indicators::roc_acceleration::tests::test_ra_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::roc_ratio::tests::test_roc_ratio_ready_after_warmup ... ok [INFO] [stdout] test signals::indicators::roc_ratio::tests::test_roc_ratio_reset ... ok [INFO] [stdout] test signals::indicators::roc_ratio::tests::test_roc_ratio_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::rogers_satchell_volatility::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::rogers_satchell_volatility::tests::test_ready_after_period ... ok [INFO] [stdout] test signals::indicators::rogers_satchell_volatility::tests::test_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::rogers_satchell_volatility::tests::test_doji_bar_gives_zero ... ok [INFO] [stdout] test signals::indicators::rogers_satchell_volatility::tests::test_sigma_non_negative ... ok [INFO] [stdout] test signals::indicators::rogers_satchell_volatility::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::rogers_satchell_volatility::tests::test_wider_range_larger_vol ... ok [INFO] [stdout] test signals::indicators::rolling_beta::tests::test_rb_alternating_mean_reverts_negative ... ok [INFO] [stdout] test signals::indicators::rolling_beta::tests::test_rb_invalid_period ... ok [INFO] [stdout] test signals::indicators::rolling_beta::tests::test_rb_reset ... ok [INFO] [stdout] test signals::indicators::rolling_beta::tests::test_rb_trending_positive ... ok [INFO] [stdout] test signals::indicators::rolling_beta::tests::test_rb_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::rolling_correlation::tests::test_rc_output_in_range ... ok [INFO] [stdout] test signals::indicators::rolling_correlation::tests::test_rc_invalid_period ... ok [INFO] [stdout] test signals::indicators::rolling_correlation::tests::test_rc_perfect_negative_correlation ... ok [INFO] [stdout] test signals::indicators::rolling_correlation::tests::test_rc_reset ... ok [INFO] [stdout] test signals::indicators::rolling_high_low_position::tests::test_rhlp_close_at_high_gives_one ... ok [INFO] [stdout] test signals::indicators::rolling_high_low_position::tests::test_rhlp_close_at_low_gives_zero ... ok [INFO] [stdout] test signals::indicators::rolling_high_low_position::tests::test_rhlp_flat_channel_unavailable ... ok [INFO] [stdout] test signals::indicators::rolling_correlation::tests::test_rc_perfect_positive_correlation ... ok [INFO] [stdout] test signals::indicators::rolling_high_low_position::tests::test_rhlp_invalid_period ... ok [INFO] [stdout] test signals::indicators::rolling_high_low_position::tests::test_rhlp_reset ... ok [INFO] [stdout] test signals::indicators::rolling_correlation::tests::test_rc_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::rolling_high_low_position::tests::test_rhlp_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::rolling_high_low_position::tests::test_rhlp_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::rolling_high_low_ratio::tests::test_rhlr_constant_gives_ratio ... ok [INFO] [stdout] test signals::indicators::rolling_high_low_position::tests::test_rhlp_period_and_name ... ok [INFO] [stdout] test signals::indicators::rolling_high_low_ratio::tests::test_rhlr_invalid_period ... ok [INFO] [stdout] test signals::indicators::rolling_high_low_ratio::tests::test_rhlr_reset ... ok [INFO] [stdout] test signals::indicators::rolling_high_low_ratio::tests::test_rhlr_same_high_low_gives_one ... ok [INFO] [stdout] test signals::indicators::rolling_high_low_ratio::tests::test_rhlr_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::rolling_kurtosis::tests::test_rk_flat_prices_unavailable ... ok [INFO] [stdout] test signals::indicators::rolling_kurtosis::tests::test_rk_invalid_period ... ok [INFO] [stdout] test signals::indicators::rolling_kurtosis::tests::test_rk_reset ... ok [INFO] [stdout] test signals::indicators::rolling_kurtosis::tests::test_rk_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::rolling_low_break::tests::test_rlb_invalid_period ... ok [INFO] [stdout] test signals::indicators::rolling_low_break::tests::test_rlb_break_gives_positive ... ok [INFO] [stdout] test signals::indicators::rolling_kurtosis::tests::test_rk_spike_gives_high_kurtosis ... ok [INFO] [stdout] test signals::indicators::rolling_low_break::tests::test_rlb_no_break_gives_zero ... ok [INFO] [stdout] test signals::indicators::rolling_low_break::tests::test_rlb_reset ... ok [INFO] [stdout] test signals::indicators::rolling_low_break::tests::test_rlb_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::rolling_mad::tests::test_mad_constant_prices_gives_zero ... ok [INFO] [stdout] test signals::indicators::rolling_mad::tests::test_mad_invalid_period ... ok [INFO] [stdout] test signals::indicators::rolling_mad::tests::test_mad_non_negative ... ok [INFO] [stdout] test signals::indicators::rolling_mad::tests::test_mad_reset ... ok [INFO] [stdout] test signals::indicators::rolling_mad::tests::test_mad_symmetric_values ... ok [INFO] [stdout] test signals::indicators::rolling_mad::tests::test_mad_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::rolling_max_dd::tests::test_rmdd_peak_then_trough ... ok [INFO] [stdout] test signals::indicators::rolling_max_dd::tests::test_rmdd_monotone_rising_no_drawdown ... ok [INFO] [stdout] test signals::indicators::rolling_max_dd::tests::test_rmdd_period_0_error ... ok [INFO] [stdout] test signals::indicators::rolling_max_dd::tests::test_rmdd_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::rolling_max_dd::tests::test_rmdd_window_slides_out_peak ... ok [INFO] [stdout] test signals::indicators::rolling_max_dd::tests::test_rmdd_reset ... ok [INFO] [stdout] test signals::indicators::rolling_max_drawdown::tests::test_rmd_no_drawdown ... ok [INFO] [stdout] test signals::indicators::rolling_open_bias::tests::test_rob_all_bearish_negative ... ok [INFO] [stdout] test signals::indicators::rolling_max_drawdown::tests::test_rmd_ten_percent_drawdown ... ok [INFO] [stdout] test signals::indicators::rolling_max_return::tests::test_rmr_max_return_correct ... ok [INFO] [stdout] test signals::indicators::rolling_max_return::tests::test_rmr_period_0_error ... ok [INFO] [stdout] test signals::indicators::rolling_open_bias::tests::test_rob_all_bullish_positive ... ok [INFO] [stdout] test signals::indicators::rolling_max_return::tests::test_rmr_reset ... ok [INFO] [stdout] test signals::indicators::rolling_max_return::tests::test_rmr_rolling_drops_old_max ... ok [INFO] [stdout] test signals::indicators::rolling_max_return::tests::test_rmr_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::rolling_open_bias::tests::test_rob_mixed_near_zero ... ok [INFO] [stdout] test signals::indicators::rolling_min_return::tests::test_rminr_min_return_correct ... ok [INFO] [stdout] test signals::indicators::rolling_min_return::tests::test_rminr_reset ... ok [INFO] [stdout] test signals::indicators::rolling_min_return::tests::test_rminr_period_0_error ... ok [INFO] [stdout] test signals::indicators::rolling_open_bias::tests::test_rob_invalid_period ... ok [INFO] [stdout] test signals::indicators::rolling_min_return::tests::test_rminr_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::rolling_open_bias::tests::test_rob_period_and_name ... ok [INFO] [stdout] test signals::indicators::rolling_open_bias::tests::test_rob_reset ... ok [INFO] [stdout] test signals::indicators::rolling_open_bias::tests::test_rob_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::rolling_return_kurtosis::tests::test_rrk_constant_prices_zero ... ok [INFO] [stdout] test signals::indicators::rolling_shadow_balance::tests::test_rsb_all_lower_shadow_negative ... ok [INFO] [stdout] test signals::indicators::rolling_return_kurtosis::tests::test_rrk_not_ready ... ok [INFO] [stdout] test signals::indicators::rolling_shadow_balance::tests::test_rsb_all_upper_shadow_positive ... ok [INFO] [stdout] test signals::indicators::rolling_shadow_balance::tests::test_rsb_invalid_period ... ok [INFO] [stdout] test signals::indicators::rolling_shadow_balance::tests::test_rsb_reset ... ok [INFO] [stdout] test signals::indicators::rolling_shadow_balance::tests::test_rsb_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::rolling_skew_returns::tests::test_rsr_constant_returns_unavailable ... ok [INFO] [stdout] test signals::indicators::rolling_skew_returns::tests::test_rsr_period_too_small ... ok [INFO] [stdout] test signals::indicators::rolling_skew_returns::tests::test_rsr_reset ... ok [INFO] [stdout] test signals::indicators::rolling_skew_returns::tests::test_rsr_symmetric_returns_near_zero_skew ... ok [INFO] [stdout] test signals::indicators::rolling_skew_returns::tests::test_rsr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::rolling_skewness::tests::test_rs_not_ready ... ok [INFO] [stdout] test signals::indicators::rolling_skewness::tests::test_rs_flat_zero ... ok [INFO] [stdout] test signals::indicators::rolling_volume_cv::tests::test_rcv_constant_volume_gives_zero ... ok [INFO] [stdout] test signals::indicators::rolling_volume_cv::tests::test_rcv_invalid_period ... ok [INFO] [stdout] test signals::indicators::rolling_volume_cv::tests::test_rcv_non_negative ... ok [INFO] [stdout] test signals::indicators::rolling_volume_cv::tests::test_rcv_reset ... ok [INFO] [stdout] test signals::indicators::rolling_volume_cv::tests::test_rcv_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::rolling_volume_cv::tests::test_rcv_zero_volume_unavailable ... ok [INFO] [stdout] test signals::indicators::rolling_vwap::tests::test_rvwap_equal_volume_is_avg_tp ... ok [INFO] [stdout] test signals::indicators::rolling_vwap::tests::test_rvwap_higher_volume_weights_more ... ok [INFO] [stdout] test signals::indicators::rsi::tests::test_rsi_all_gains_equals_100 ... ok [INFO] [stdout] test signals::indicators::rsi::tests::test_rsi_all_losses_equals_zero ... ok [INFO] [stdout] test signals::indicators::rsi::tests::test_rsi_period_returns_configured_value ... ok [INFO] [stdout] test signals::indicators::rsi::tests::test_rsi_ready_after_period_plus_one_bars ... ok [INFO] [stdout] test signals::indicators::rsi::tests::test_rsi_fewer_bars_than_period_returns_unavailable ... ok [INFO] [stdout] test signals::indicators::rsi::tests::test_rsi_equal_up_down_moves_stays_in_range ... ok [INFO] [stdout] test signals::indicators::rsi::tests::test_rsi_in_bounds ... ok [INFO] [stdout] test signals::indicators::rsi::tests::test_rsi_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::rsi::tests::test_rsi_overbought_at_70 ... ok [INFO] [stdout] test signals::indicators::rsi::tests::test_rsi_unavailable_before_period_plus_one ... ok [INFO] [stdout] test signals::indicators::rsi::tests::test_rsi_name_returns_configured_value ... ok [INFO] [stdout] test signals::indicators::rsi::tests::test_rsi_scalar_value_on_period_plus_one_bar ... ok [INFO] [stdout] test signals::indicators::rsi_divergence::tests::test_rsi_div_reset ... ok [INFO] [stdout] test signals::indicators::rsi_divergence::tests::test_rsi_div_invalid_period ... ok [INFO] [stdout] test signals::indicators::rsi_divergence::tests::test_rsi_div_unavailable_early ... ok [INFO] [stdout] test signals::indicators::rsi_divergence::tests::test_rsi_div_scalar_after_warmup ... ok [INFO] [stdout] test signals::indicators::rsi_ma::tests::test_rsi_ma_invalid ... ok [INFO] [stdout] test signals::indicators::rsi_ma::tests::test_rsi_ma_produces_scalar_after_warmup ... ok [INFO] [stdout] test signals::indicators::rsi_ma::tests::test_rsi_ma_reset ... ok [INFO] [stdout] test signals::indicators::rsi_ma::tests::test_rsi_ma_range_0_100 ... ok [INFO] [stdout] test signals::indicators::rsi_ma::tests::test_rsi_ma_uptrend_above_50 ... ok [INFO] [stdout] test signals::indicators::rsi_slope::tests::test_rsi_slope_flat_market_zero_slope ... ok [INFO] [stdout] test signals::indicators::rsi_slope::tests::test_rsi_slope_invalid_period ... ok [INFO] [stdout] test signals::indicators::rsi_slope::tests::test_rsi_slope_period_and_name ... ok [INFO] [stdout] test signals::indicators::rsi_slope::tests::test_rsi_slope_produces_value_after_warm_up ... ok [INFO] [stdout] test signals::indicators::rsi_slope::tests::test_rsi_slope_reset ... ok [INFO] [stdout] test signals::indicators::rsi_slope::tests::test_rsi_slope_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::rsi_stochastic::tests::test_rsi_stoch_invalid ... ok [INFO] [stdout] test signals::indicators::rsi_stochastic::tests::test_rsi_stoch_all_rising_near_one ... ok [INFO] [stdout] test signals::indicators::rsi_stochastic::tests::test_rsi_stoch_reset ... ok [INFO] [stdout] test signals::indicators::rsi_stochastic::tests::test_rsi_stoch_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::rsi_stochastic::tests::test_rsi_stoch_range_0_to_1 ... ok [INFO] [stdout] test signals::indicators::rsx::tests::test_rsx_always_falling_near_0 ... ok [INFO] [stdout] test signals::indicators::rsx::tests::test_rsx_always_rising_near_100 ... ok [INFO] [stdout] test signals::indicators::rsx::tests::test_rsx_invalid_period ... ok [INFO] [stdout] test signals::indicators::rsx::tests::test_rsx_reset ... ok [INFO] [stdout] test signals::indicators::rsx::tests::test_rsx_range ... ok [INFO] [stdout] test signals::indicators::rsx::tests::test_rsx_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::rvi::tests::test_rvi_bullish_bars_positive ... ok [INFO] [stdout] test signals::indicators::rvi::tests::test_rvi_period_too_small ... ok [INFO] [stdout] test signals::indicators::rvi::tests::test_rvi_reset ... ok [INFO] [stdout] test signals::indicators::rvi::tests::test_rvi_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::rwi::tests::test_rwi_accessors ... ok [INFO] [stdout] test signals::indicators::rwi::tests::test_rwi_flat_price_is_zero ... ok [INFO] [stdout] test signals::indicators::rwi::tests::test_rwi_invalid_period ... ok [INFO] [stdout] test signals::indicators::rwi::tests::test_rwi_produces_scalar_after_period ... ok [INFO] [stdout] test signals::indicators::rwi::tests::test_rwi_reset ... ok [INFO] [stdout] test signals::indicators::rwi::tests::test_rwi_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::shadow_imbalance::tests::test_si_all_lower_shadow ... ok [INFO] [stdout] test signals::indicators::shadow_imbalance::tests::test_si_all_upper_shadow ... ok [INFO] [stdout] test signals::indicators::shadow_imbalance::tests::test_si_balanced_shadows ... ok [INFO] [stdout] test signals::indicators::shadow_imbalance::tests::test_si_body_consumes_range ... ok [INFO] [stdout] test signals::indicators::shadow_imbalance::tests::test_si_no_range ... ok [INFO] [stdout] test signals::indicators::shadow_pressure::tests::test_lower_wick_dominant_positive ... ok [INFO] [stdout] test signals::indicators::shadow_pressure::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::shadow_pressure::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::shadow_pressure::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::shadow_pressure::tests::test_upper_wick_dominant_negative ... ok [INFO] [stdout] test signals::indicators::shadow_ratio::tests::test_sr_equal_body_and_wicks ... ok [INFO] [stdout] test signals::indicators::shadow_ratio::tests::test_sr_no_wicks ... ok [INFO] [stdout] test signals::indicators::sharpe_ratio::tests::test_sr_downtrend_negative ... ok [INFO] [stdout] test signals::indicators::sharpe_ratio::tests::test_sr_flat_prices_unavailable ... ok [INFO] [stdout] test signals::indicators::sharpe_ratio::tests::test_sr_invalid_period ... ok [INFO] [stdout] test signals::indicators::sharpe_ratio::tests::test_sr_reset ... ok [INFO] [stdout] test signals::indicators::sharpe_ratio::tests::test_sr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::sharpe_ratio::tests::test_sr_uptrend_positive ... ok [INFO] [stdout] test signals::indicators::signed_body_ratio::tests::test_sbr_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::signed_body_ratio::tests::test_sbr_full_bearish_body_minus_one ... ok [INFO] [stdout] test signals::indicators::signed_body_ratio::tests::test_sbr_doji_zero ... ok [INFO] [stdout] test signals::indicators::signed_body_ratio::tests::test_sbr_full_bullish_body_one ... ok [INFO] [stdout] test signals::indicators::signed_body_ratio::tests::test_sbr_invalid_period ... ok [INFO] [stdout] test signals::indicators::signed_body_ratio::tests::test_sbr_reset ... ok [INFO] [stdout] test signals::indicators::signed_body_ratio::tests::test_sbr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::signed_gap_sum::tests::test_sgs_invalid_period ... ok [INFO] [stdout] test signals::indicators::signed_gap_sum::tests::test_sgs_positive_gap_bias ... ok [INFO] [stdout] test signals::indicators::signed_gap_sum::tests::test_sgs_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::signed_gap_sum::tests::test_sgs_reset ... ok [INFO] [stdout] test signals::indicators::signed_gap_sum::tests::test_sgs_zero_gap ... ok [INFO] [stdout] test signals::indicators::slope_oscillator::tests::test_so_flat_series_zero_acceleration ... ok [INFO] [stdout] test signals::indicators::slope_oscillator::tests::test_so_invalid_period ... ok [INFO] [stdout] test signals::indicators::slope_oscillator::tests::test_so_period_and_name ... ok [INFO] [stdout] test signals::indicators::slope_oscillator::tests::test_so_produces_value_on_third_bar ... ok [INFO] [stdout] test signals::indicators::slope_oscillator::tests::test_so_reset ... ok [INFO] [stdout] test signals::indicators::slope_oscillator::tests::test_so_unavailable_for_first_two_bars ... ok [INFO] [stdout] test signals::indicators::sma::tests::test_sma_constant_series_equals_constant ... ok [INFO] [stdout] test signals::indicators::sma::tests::test_sma_empty_input_not_ready ... ok [INFO] [stdout] test signals::indicators::sma::tests::test_sma_new_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::sma::tests::test_sma_period_1_immediate_readiness ... ok [INFO] [stdout] test signals::indicators::sma::tests::test_sma_not_ready_before_period ... ok [INFO] [stdout] test signals::indicators::sma::tests::test_sma_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::sma::tests::test_sma_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::sma::tests::test_sma_rolls_window ... ok [INFO] [stdout] test signals::indicators::sma::tests::test_sma_update_with_bar_input_directly ... ok [INFO] [stdout] test signals::indicators::sma::tests::test_sma_value_correct_after_period ... ok [INFO] [stdout] test signals::indicators::sma::tests::test_sma_window_larger_than_data_returns_unavailable ... ok [INFO] [stdout] test signals::indicators::sma_distance_pct::tests::test_sdp_below_sma_negative ... ok [INFO] [stdout] test signals::indicators::sma_distance_pct::tests::test_sdp_invalid_period ... ok [INFO] [stdout] test signals::indicators::sma_distance_pct::tests::test_sdp_known_value ... ok [INFO] [stdout] test signals::indicators::sma_distance_pct::tests::test_sdp_period_and_name ... ok [INFO] [stdout] test signals::indicators::sma_distance_pct::tests::test_sdp_price_at_sma_gives_zero ... ok [INFO] [stdout] test signals::indicators::sma_distance_pct::tests::test_sdp_reset ... ok [INFO] [stdout] test signals::indicators::sma_distance_pct::tests::test_sdp_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::smi::tests::test_smi_flat_price_is_zero ... ok [INFO] [stdout] test signals::indicators::smi::tests::test_smi_invalid_period ... ok [INFO] [stdout] test signals::indicators::smi::tests::test_smi_produces_scalar_after_period ... ok [INFO] [stdout] test signals::indicators::smi::tests::test_smi_reset ... ok [INFO] [stdout] test signals::indicators::smi::tests::test_smi_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::smma::tests::test_smma_flat_market_equals_price ... ok [INFO] [stdout] test signals::indicators::smma::tests::test_smma_invalid_period ... ok [INFO] [stdout] test signals::indicators::smma::tests::test_smma_period_and_name ... ok [INFO] [stdout] test signals::indicators::smma::tests::test_smma_reset ... ok [INFO] [stdout] test signals::indicators::smma::tests::test_smma_seed_equals_sma ... ok [INFO] [stdout] test signals::indicators::smma::tests::test_smma_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::smoothed_rsi::tests::test_srsi_all_down_near_zero ... ok [INFO] [stdout] test signals::indicators::smoothed_rsi::tests::test_srsi_invalid ... ok [INFO] [stdout] test signals::indicators::smoothed_rsi::tests::test_srsi_all_up_near_100 ... ok [INFO] [stdout] test signals::indicators::smoothed_rsi::tests::test_srsi_range_0_to_100 ... ok [INFO] [stdout] test signals::indicators::smoothed_rsi::tests::test_srsi_reset ... ok [INFO] [stdout] test signals::indicators::smoothed_rsi::tests::test_srsi_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::sortino_ratio::tests::test_sor_downtrend_negative ... ok [INFO] [stdout] test signals::indicators::sortino_ratio::tests::test_sor_invalid_period ... ok [INFO] [stdout] test signals::indicators::sortino_ratio::tests::test_sor_only_gains_unavailable ... ok [INFO] [stdout] test signals::indicators::sortino_ratio::tests::test_sor_reset ... ok [INFO] [stdout] test signals::indicators::sortino_ratio::tests::test_sor_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::sortino_ratio::tests::test_sor_uptrend_with_pullback_positive ... ok [INFO] [stdout] test signals::indicators::spinning_top::tests::test_always_ready ... ok [INFO] [stdout] test signals::indicators::spinning_top::tests::test_bearish_spinning_top ... ok [INFO] [stdout] test signals::indicators::spinning_top::tests::test_bullish_spinning_top ... ok [INFO] [stdout] test signals::indicators::spinning_top::tests::test_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::spinning_top::tests::test_invalid_pct_fails ... ok [INFO] [stdout] test signals::indicators::spinning_top::tests::test_marubozu_not_spinning_top ... ok [INFO] [stdout] test signals::indicators::spinning_top::tests::test_one_sided_wick_not_spinning_top ... ok [INFO] [stdout] test signals::indicators::stc::tests::test_stc_invalid_period ... ok [INFO] [stdout] test signals::indicators::stc::tests::test_stc_ready_after_warmup ... ok [INFO] [stdout] test signals::indicators::stc::tests::test_stc_reset ... ok [INFO] [stdout] test signals::indicators::stc::tests::test_stc_unavailable_initially ... ok [INFO] [stdout] test signals::indicators::std_dev_channel::tests::test_sdc_above_mean_positive ... ok [INFO] [stdout] test signals::indicators::std_dev_channel::tests::test_sdc_below_mean_negative ... ok [INFO] [stdout] test signals::indicators::std_dev_channel::tests::test_sdc_flat_unavailable ... ok [INFO] [stdout] test signals::indicators::std_dev_channel::tests::test_sdc_invalid_period ... ok [INFO] [stdout] test signals::indicators::std_dev_channel::tests::test_sdc_reset ... ok [INFO] [stdout] test signals::indicators::std_dev_channel::tests::test_sdc_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::stddev::tests::test_stddev_constant_prices_is_zero ... ok [INFO] [stdout] test signals::indicators::stddev::tests::test_stddev_period_0_error ... ok [INFO] [stdout] test signals::indicators::stddev::tests::test_stddev_positive_for_varying_prices ... ok [INFO] [stdout] test signals::indicators::stddev::tests::test_stddev_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::stddev::tests::test_stddev_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::stiffness::tests::test_stiffness_all_above_is_100 ... ok [INFO] [stdout] test signals::indicators::stiffness::tests::test_stiffness_all_below_is_zero ... ok [INFO] [stdout] test signals::indicators::stiffness::tests::test_stiffness_invalid ... ok [INFO] [stdout] test signals::indicators::stiffness::tests::test_stiffness_reset ... ok [INFO] [stdout] test signals::indicators::stiffness::tests::test_stiffness_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::stoch_rsi::tests::test_stochrsi_in_range_0_to_100 ... ok [INFO] [stdout] test signals::indicators::stoch_rsi::tests::test_stochrsi_period_0_fails ... ok [INFO] [stdout] test signals::indicators::stoch_rsi::tests::test_stochrsi_period_accessors ... ok [INFO] [stdout] test signals::indicators::stoch_rsi::tests::test_stochrsi_produces_scalar_after_warmup ... ok [INFO] [stdout] test signals::indicators::stoch_rsi::tests::test_stochrsi_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::stoch_rsi::tests::test_stochrsi_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::stoch_rsi_smoothed::tests::test_stochrsi_smoothed_in_range ... ok [INFO] [stdout] test signals::indicators::stoch_rsi_smoothed::tests::test_stochrsi_smoothed_period_0_fails ... ok [INFO] [stdout] test signals::indicators::stoch_rsi_smoothed::tests::test_stochrsi_smoothed_produces_value ... ok [INFO] [stdout] test signals::indicators::stoch_rsi_smoothed::tests::test_stochrsi_smoothed_reset ... ok [INFO] [stdout] test signals::indicators::stoch_rsi_smoothed::tests::test_stochrsi_smoothed_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::stochastic::tests::test_stoch_close_at_highest_high_returns_100 ... ok [INFO] [stdout] test signals::indicators::stochastic::tests::test_stoch_close_at_lowest_low_returns_0 ... ok [INFO] [stdout] test signals::indicators::stochastic::tests::test_stoch_flat_price_returns_50 ... ok [INFO] [stdout] test signals::indicators::stochastic::tests::test_stoch_output_in_0_to_100 ... ok [INFO] [stdout] test signals::indicators::stochastic::tests::test_stoch_period_0_fails ... ok [INFO] [stdout] test signals::indicators::stochastic::tests::test_stoch_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::stochastic::tests::test_stoch_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::stochastic_d::tests::test_stochastic_d_flat_price_returns_50 ... ok [INFO] [stdout] test signals::indicators::stochastic_d::tests::test_stochastic_d_period_0_fails ... ok [INFO] [stdout] test signals::indicators::stochastic_d::tests::test_stochastic_d_period_accessors ... ok [INFO] [stdout] test signals::indicators::stochastic_d::tests::test_stochastic_d_reset ... ok [INFO] [stdout] test signals::indicators::stochastic_d::tests::test_stochastic_d_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::supertrend::tests::test_st_bullish_on_rising_prices ... ok [INFO] [stdout] test signals::indicators::supertrend::tests::test_st_invalid_period ... ok [INFO] [stdout] test signals::indicators::supertrend::tests::test_st_ready_after_period ... ok [INFO] [stdout] test signals::indicators::supertrend::tests::test_st_reset ... ok [INFO] [stdout] test signals::indicators::supertrend::tests::test_st_trend_line_present_when_ready ... ok [INFO] [stdout] test signals::indicators::supertrend::tests::test_st_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::support_resistance_distance::tests::test_sr_accessors ... ok [INFO] [stdout] test signals::indicators::support_resistance_distance::tests::test_sr_at_resistance_near_50 ... ok [INFO] [stdout] test signals::indicators::support_resistance_distance::tests::test_sr_at_support_near_minus_50 ... ok [INFO] [stdout] test signals::indicators::support_resistance_distance::tests::test_sr_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::support_resistance_distance::tests::test_sr_invalid ... ok [INFO] [stdout] test signals::indicators::support_resistance_distance::tests::test_sr_reset ... ok [INFO] [stdout] test signals::indicators::support_resistance_distance::tests::test_sr_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::support_test_count::tests::test_support_test_count_all_at_support ... ok [INFO] [stdout] test signals::indicators::support_test_count::tests::test_support_test_count_one_test ... ok [INFO] [stdout] test signals::indicators::swing_index::tests::test_asi_cumulates ... ok [INFO] [stdout] test signals::indicators::swing_index::tests::test_si_invalid ... ok [INFO] [stdout] test signals::indicators::swing_index::tests::test_si_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::swing_index::tests::test_si_unavailable_first_bar ... ok [INFO] [stdout] test signals::indicators::swing_point_detector::tests::test_lookback_zero_fails ... ok [INFO] [stdout] test signals::indicators::swing_index::tests::test_si_reset ... ok [INFO] [stdout] test signals::indicators::swing_point_detector::tests::test_period_is_two_lookback_plus_one ... ok [INFO] [stdout] test signals::indicators::swing_point_detector::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::swing_point_detector::tests::test_swing_high_detected ... ok [INFO] [stdout] test signals::indicators::swing_point_detector::tests::test_swing_low_detected ... ok [INFO] [stdout] test signals::indicators::swing_point_detector::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::swma::tests::test_swma_constant_price_equals_price ... ok [INFO] [stdout] test signals::indicators::swma::tests::test_swma_invalid_period ... ok [INFO] [stdout] test signals::indicators::swma::tests::test_swma_is_ready_after_period_bars ... ok [INFO] [stdout] test signals::indicators::swma::tests::test_swma_reset ... ok [INFO] [stdout] test signals::indicators::t3::tests::test_t3_flat_prices_near_flat ... ok [INFO] [stdout] test signals::indicators::t3::tests::test_t3_invalid_period ... ok [INFO] [stdout] test signals::indicators::t3::tests::test_t3_invalid_v_factor ... ok [INFO] [stdout] test signals::indicators::swma::tests::test_swma_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::t3::tests::test_t3_period_and_name ... ok [INFO] [stdout] test signals::indicators::t3::tests::test_t3_ready_after_warmup ... ok [INFO] [stdout] test signals::indicators::t3::tests::test_t3_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::t3::tests::test_t3_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::tail_ratio::tests::test_tail_ratio_equal_wicks ... ok [INFO] [stdout] test signals::indicators::tail_ratio_pct::tests::test_trp_all_lower_wick_gives_zero ... ok [INFO] [stdout] test signals::indicators::tail_ratio::tests::test_tail_ratio_no_upper_wick ... ok [INFO] [stdout] test signals::indicators::tail_ratio_pct::tests::test_trp_all_upper_wick_gives_one ... ok [INFO] [stdout] test signals::indicators::tail_ratio_pct::tests::test_trp_equal_wicks_gives_half ... ok [INFO] [stdout] test signals::indicators::tail_ratio_pct::tests::test_trp_no_wicks_unavailable ... ok [INFO] [stdout] test signals::indicators::tail_ratio_pct::tests::test_trp_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::td_sequential::tests::test_td_buy_count_capped_at_9 ... ok [INFO] [stdout] test signals::indicators::td_sequential::tests::test_td_buy_setup_counts_up ... ok [INFO] [stdout] test signals::indicators::td_sequential::tests::test_td_reset ... ok [INFO] [stdout] test signals::indicators::td_sequential::tests::test_td_sell_setup_counts_down ... ok [INFO] [stdout] test signals::indicators::td_sequential::tests::test_td_unavailable_before_five_bars ... ok [INFO] [stdout] test signals::indicators::tema::tests::test_tema_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::tema::tests::test_tema_faster_than_dema_on_jump ... ok [INFO] [stdout] test signals::indicators::three_bar_pattern::tests::test_tbp_no_pattern ... ok [INFO] [stdout] test signals::indicators::tema::tests::test_tema_constant_price_equals_price ... ok [INFO] [stdout] test signals::indicators::tema::tests::test_tema_period_0_error ... ok [INFO] [stdout] test signals::indicators::three_bar_pattern::tests::test_tbp_three_black_crows ... ok [INFO] [stdout] test signals::indicators::three_bar_pattern::tests::test_tbp_reset ... ok [INFO] [stdout] test signals::indicators::three_bar_pattern::tests::test_tbp_unavailable ... ok [INFO] [stdout] test signals::indicators::three_bar_pattern::tests::test_tbp_three_white_soldiers ... ok [INFO] [stdout] test signals::indicators::three_black_crows::tests::test_bullish_bar_breaks_pattern ... ok [INFO] [stdout] test signals::indicators::three_black_crows::tests::test_unavailable_before_three_bars ... ok [INFO] [stdout] test signals::indicators::three_black_crows::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::three_white_soldiers::tests::test_bearish_bar_breaks_pattern ... ok [INFO] [stdout] test signals::indicators::three_black_crows::tests::test_invalid_pct_fails ... ok [INFO] [stdout] test signals::indicators::three_black_crows::tests::test_three_black_crows_detected ... ok [INFO] [stdout] test signals::indicators::three_white_soldiers::tests::test_invalid_pct_fails ... ok [INFO] [stdout] test signals::indicators::three_white_soldiers::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::three_white_soldiers::tests::test_three_white_soldiers_detected ... ok [INFO] [stdout] test signals::indicators::three_white_soldiers::tests::test_unavailable_before_three_bars ... ok [INFO] [stdout] test signals::indicators::tick_move_ratio::tests::test_doji_zero ... ok [INFO] [stdout] test signals::indicators::tick_move_ratio::tests::test_full_bearish_body ... ok [INFO] [stdout] test signals::indicators::tick_move_ratio::tests::test_full_bullish_body ... ok [INFO] [stdout] test signals::indicators::tick_move_ratio::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::tick_move_ratio::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::tick_move_ratio::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::tii::tests::test_tii_flat_price_is_50 ... ok [INFO] [stdout] test signals::indicators::tii::tests::test_tii_in_range_0_100 ... ok [INFO] [stdout] test signals::indicators::tii::tests::test_tii_invalid_period ... ok [INFO] [stdout] test signals::indicators::tii::tests::test_tii_reset ... ok [INFO] [stdout] test signals::indicators::tii::tests::test_tii_strong_uptrend_approaches_100 ... ok [INFO] [stdout] test signals::indicators::tii::tests::test_tii_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::trend_acceleration::tests::test_constant_trend_zero_acceleration ... ok [INFO] [stdout] test signals::indicators::trend_acceleration::tests::test_period_too_small_fails ... ok [INFO] [stdout] test signals::indicators::trend_acceleration::tests::test_ready_after_warmup ... ok [INFO] [stdout] test signals::indicators::trend_acceleration::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::trend_acceleration::tests::test_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::trend_age::tests::test_ta_invalid_period ... ok [INFO] [stdout] test signals::indicators::trend_age::tests::test_ta_negative_in_downtrend ... ok [INFO] [stdout] test signals::indicators::trend_age::tests::test_ta_positive_in_uptrend ... ok [INFO] [stdout] test signals::indicators::trend_age::tests::test_ta_reset ... ok [INFO] [stdout] test signals::indicators::trend_age::tests::test_ta_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::trend_angle::tests::test_trend_angle_flat_price_is_zero ... ok [INFO] [stdout] test signals::indicators::trend_angle::tests::test_trend_angle_invalid_period ... ok [INFO] [stdout] test signals::indicators::trend_angle::tests::test_trend_angle_reset ... ok [INFO] [stdout] test signals::indicators::trend_angle::tests::test_trend_angle_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::trend_bias_index::tests::test_tbi_downtrend_negative ... ok [INFO] [stdout] test signals::indicators::trend_bias_index::tests::test_tbi_identical_returns_unavailable ... ok [INFO] [stdout] test signals::indicators::trend_bias_index::tests::test_tbi_invalid_period ... ok [INFO] [stdout] test signals::indicators::trend_bias_index::tests::test_tbi_reset ... ok [INFO] [stdout] test signals::indicators::trend_bias_index::tests::test_tbi_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::trend_consistency::tests::test_tc_alternating_with_net_up ... ok [INFO] [stdout] test signals::indicators::trend_bias_index::tests::test_tbi_uptrend_positive ... ok [INFO] [stdout] test signals::indicators::trend_angle::tests::test_trend_angle_downtrend_negative ... ok [INFO] [stdout] test signals::indicators::trend_angle::tests::test_trend_angle_uptrend_positive ... ok [INFO] [stdout] test signals::indicators::trend_consistency::tests::test_tc_invalid_period ... ok [INFO] [stdout] test signals::indicators::trend_consistency::tests::test_tc_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::trend_consistency::tests::test_tc_period_and_name ... ok [INFO] [stdout] test signals::indicators::trend_consistency::tests::test_tc_perfect_uptrend_gives_one ... ok [INFO] [stdout] test signals::indicators::trend_consistency::tests::test_tc_reset ... ok [INFO] [stdout] test signals::indicators::trend_consistency::tests::test_tc_unavailable_before_period_plus_1 ... ok [INFO] [stdout] test signals::indicators::trend_consistency_score::tests::test_tcs_all_above_sma ... ok [INFO] [stdout] test signals::indicators::trend_consistency_score::tests::test_tcs_flat_half ... ok [INFO] [stdout] test signals::indicators::trend_exhaustion::tests::test_flat_returns_zero ... ok [INFO] [stdout] test signals::indicators::trend_exhaustion::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::trend_exhaustion::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::trend_exhaustion::tests::test_steady_trend_gives_one ... ok [INFO] [stdout] test signals::indicators::trend_exhaustion::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::trend_following_filter::tests::test_tff_invalid ... ok [INFO] [stdout] test signals::indicators::trend_following_filter::tests::test_tff_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::trend_following_filter::tests::test_tff_reset ... ok [INFO] [stdout] test signals::indicators::trend_following_filter::tests::test_tff_strength_set_when_ready ... ok [INFO] [stdout] test signals::indicators::trend_following_filter::tests::test_tff_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::trend_following_filter::tests::test_tff_uptrend_is_one ... ok [INFO] [stdout] test signals::indicators::trend_magic::tests::test_tm_invalid_period ... ok [INFO] [stdout] test signals::indicators::trend_magic::tests::test_tm_bullish_in_strong_uptrend ... ok [INFO] [stdout] test signals::indicators::trend_magic::tests::test_tm_produces_signal_after_warm_up ... ok [INFO] [stdout] test signals::indicators::trend_magic::tests::test_tm_reset ... ok [INFO] [stdout] test signals::indicators::trend_magic::tests::test_tm_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::trend_persistence::tests::test_tp_all_bearish_gives_zero ... ok [INFO] [stdout] test signals::indicators::trend_persistence::tests::test_tp_all_bullish_gives_one ... ok [INFO] [stdout] test signals::indicators::trend_persistence::tests::test_tp_half_bullish ... ok [INFO] [stdout] test signals::indicators::trend_persistence::tests::test_tp_invalid_period ... ok [INFO] [stdout] test signals::indicators::trend_persistence::tests::test_tp_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::trend_persistence::tests::test_tp_period_and_name ... ok [INFO] [stdout] test signals::indicators::trend_persistence::tests::test_tp_reset ... ok [INFO] [stdout] test signals::indicators::trend_persistence::tests::test_tp_rolling_window ... ok [INFO] [stdout] test signals::indicators::trend_persistence::tests::test_tp_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::trend_purity::tests::test_tp_invalid_period ... ok [INFO] [stdout] test signals::indicators::trend_purity::tests::test_tp_noisy_uptrend_below_one ... ok [INFO] [stdout] test signals::indicators::trend_purity::tests::test_tp_perfect_uptrend_gives_one ... ok [INFO] [stdout] test signals::indicators::trend_purity::tests::test_tp_reset ... ok [INFO] [stdout] test signals::indicators::trend_purity::tests::test_tp_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::trend_score::tests::test_ts_all_down_is_zero ... ok [INFO] [stdout] test signals::indicators::trend_score::tests::test_ts_all_up_is_100 ... ok [INFO] [stdout] test signals::indicators::trend_score::tests::test_ts_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::trend_score::tests::test_ts_invalid ... ok [INFO] [stdout] test signals::indicators::trend_score::tests::test_ts_range_0_to_100 ... ok [INFO] [stdout] test signals::indicators::trend_score::tests::test_ts_reset ... ok [INFO] [stdout] test signals::indicators::trend_score::tests::test_ts_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::trend_strength::tests::test_ts_choppy_less_than_100 ... ok [INFO] [stdout] test signals::indicators::trend_strength::tests::test_ts_flat_unavailable ... ok [INFO] [stdout] test signals::indicators::trend_strength::tests::test_ts_invalid_period ... ok [INFO] [stdout] test signals::indicators::trend_strength::tests::test_ts_perfect_trend_is_100 ... ok [INFO] [stdout] test signals::indicators::trend_strength::tests::test_ts_reset ... ok [INFO] [stdout] test signals::indicators::trend_strength::tests::test_ts_unavailable_early ... ok [INFO] [stdout] test signals::indicators::trend_strength_index::tests::test_tsi_choppy_low ... ok [INFO] [stdout] test signals::indicators::trend_strength_index::tests::test_tsi_flat_unavailable ... ok [INFO] [stdout] test signals::indicators::trend_strength_index::tests::test_tsi_invalid_period ... ok [INFO] [stdout] test signals::indicators::trend_strength_index::tests::test_tsi_reset ... ok [INFO] [stdout] test signals::indicators::trend_strength_index::tests::test_tsi_straight_trend_is_100 ... ok [INFO] [stdout] test signals::indicators::trend_strength_index::tests::test_tsi_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::trima::tests::test_trima_constant_price_equals_price ... ok [INFO] [stdout] test signals::indicators::trima::tests::test_trima_period_0_error ... ok [INFO] [stdout] test signals::indicators::trima::tests::test_trima_reset ... ok [INFO] [stdout] test signals::indicators::trima::tests::test_trima_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::trix::tests::test_trix_constant_price_is_zero ... ok [INFO] [stdout] test signals::indicators::trix::tests::test_trix_name_accessor ... ok [INFO] [stdout] test signals::indicators::trix::tests::test_trix_period_accessor ... ok [INFO] [stdout] test signals::indicators::trix::tests::test_trix_period_zero_error ... ok [INFO] [stdout] test signals::indicators::trix::tests::test_trix_ready_after_sufficient_bars ... ok [INFO] [stdout] test signals::indicators::trix::tests::test_trix_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::trix::tests::test_trix_unavailable_before_ready ... ok [INFO] [stdout] test signals::indicators::true_range_ema::tests::test_tre_constant_range ... ok [INFO] [stdout] test signals::indicators::true_range_ema::tests::test_tre_invalid ... ok [INFO] [stdout] test signals::indicators::true_range_ema::tests::test_tre_positive ... ok [INFO] [stdout] test signals::indicators::true_range_ema::tests::test_tre_reset ... ok [INFO] [stdout] test signals::indicators::true_range_ema::tests::test_tre_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::true_range_expansion::tests::test_tre_equal_bar_gives_zero ... ok [INFO] [stdout] test signals::indicators::true_range_expansion::tests::test_tre_invalid_period ... ok [INFO] [stdout] test signals::indicators::true_range_expansion::tests::test_tre_narrow_bar_gives_minus_one ... ok [INFO] [stdout] test signals::indicators::true_range_expansion::tests::test_tre_reset ... ok [INFO] [stdout] test signals::indicators::true_range_expansion::tests::test_tre_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::true_range_expansion::tests::test_tre_wide_bar_gives_plus_one ... ok [INFO] [stdout] test signals::indicators::true_range_percentile::tests::test_tr_percentile_largest ... ok [INFO] [stdout] test signals::indicators::true_range_percentile::tests::test_tr_percentile_smallest ... ok [INFO] [stdout] test signals::indicators::true_range_ratio::tests::test_trr_constant_range_gives_one ... ok [INFO] [stdout] test signals::indicators::true_range_ratio::tests::test_trr_invalid_period ... ok [INFO] [stdout] test signals::indicators::true_range_ratio::tests::test_trr_large_bar_above_one ... ok [INFO] [stdout] test signals::indicators::true_range_ratio::tests::test_trr_reset ... ok [INFO] [stdout] test signals::indicators::true_range_ratio::tests::test_trr_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::true_range_zscore::tests::test_trz_invalid_period ... ok [INFO] [stdout] test signals::indicators::true_range_zscore::tests::test_trz_large_bar_gives_positive_z ... ok [INFO] [stdout] test signals::indicators::true_range_zscore::tests::test_trz_reset ... ok [INFO] [stdout] test signals::indicators::true_range_zscore::tests::test_trz_small_bar_gives_negative_z ... ok [INFO] [stdout] test signals::indicators::true_range_zscore::tests::test_trz_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::true_strength_index::tests::test_tsi_all_up_positive ... ok [INFO] [stdout] test signals::indicators::true_strength_index::tests::test_tsi_constant_zero ... ok [INFO] [stdout] test signals::indicators::tsi::tests::test_tsi_constant_price_is_zero ... ok [INFO] [stdout] test signals::indicators::tsi::tests::test_tsi_period_0_fails ... ok [INFO] [stdout] test signals::indicators::tsi::tests::test_tsi_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::tsi::tests::test_tsi_reset ... ok [INFO] [stdout] test signals::indicators::ttm_squeeze::tests::test_ttm_flat_momentum_zero ... ok [INFO] [stdout] test signals::indicators::tsi::tests::test_tsi_uptrend_positive ... ok [INFO] [stdout] test signals::indicators::ttm_squeeze::tests::test_ttm_invalid ... ok [INFO] [stdout] test signals::indicators::ttm_squeeze::tests::test_ttm_reset ... ok [INFO] [stdout] test signals::indicators::ttm_squeeze::tests::test_ttm_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::ttm_squeeze::tests::test_ttm_volatile_close_no_squeeze ... ok [INFO] [stdout] test signals::indicators::ttm_squeeze::tests::test_ttm_wide_range_squeeze_on ... ok [INFO] [stdout] test signals::indicators::tweezer_bottom::tests::test_bearish_second_bar_no_pattern ... ok [INFO] [stdout] test signals::indicators::tweezer_bottom::tests::test_different_lows_no_pattern ... ok [INFO] [stdout] test signals::indicators::tweezer_bottom::tests::test_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::tweezer_bottom::tests::test_invalid_pct_fails ... ok [INFO] [stdout] test signals::indicators::tweezer_bottom::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::tweezer_bottom::tests::test_tweezer_bottom_exact_match ... ok [INFO] [stdout] test signals::indicators::tweezer_top::tests::test_bullish_second_bar_no_pattern ... ok [INFO] [stdout] test signals::indicators::tweezer_top::tests::test_different_highs_no_pattern ... ok [INFO] [stdout] test signals::indicators::tweezer_top::tests::test_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::tweezer_top::tests::test_invalid_pct_fails ... ok [INFO] [stdout] test signals::indicators::tweezer_top::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::tweezer_top::tests::test_tweezer_top_exact_match ... ok [INFO] [stdout] test signals::indicators::typical_price::tests::test_tp_flat_equals_price ... ok [INFO] [stdout] test signals::indicators::typical_price::tests::test_tp_invalid ... ok [INFO] [stdout] test signals::indicators::typical_price::tests::test_tp_rolling_average ... ok [INFO] [stdout] test signals::indicators::typical_price::tests::test_tp_reset ... ok [INFO] [stdout] test signals::indicators::typical_price::tests::test_tp_typical_price_computed ... ok [INFO] [stdout] test signals::indicators::typical_price::tests::test_tp_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::typical_price_deviation::tests::test_typical_price_deviation_not_ready ... ok [INFO] [stdout] test signals::indicators::typical_price_deviation::tests::test_typical_price_deviation_constant_zero ... ok [INFO] [stdout] test signals::indicators::typical_price_roc::tests::test_tpr_invalid_period ... ok [INFO] [stdout] test signals::indicators::typical_price_roc::tests::test_tpr_positive_roc ... ok [INFO] [stdout] test signals::indicators::typical_price_roc::tests::test_tpr_reset ... ok [INFO] [stdout] test signals::indicators::typical_price_roc::tests::test_tpr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::typical_price_roc::tests::test_tpr_zero_change_returns_zero ... ok [INFO] [stdout] test signals::indicators::ulcer_index::tests::test_ui_falling_is_positive ... ok [INFO] [stdout] test signals::indicators::ulcer_index::tests::test_ui_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::ulcer_index::tests::test_ui_invalid ... ok [INFO] [stdout] test signals::indicators::ulcer_index::tests::test_ui_reset ... ok [INFO] [stdout] test signals::indicators::ulcer_index::tests::test_ui_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::ultimate::tests::test_uo_flat_price_returns_fifty ... ok [INFO] [stdout] test signals::indicators::ultimate::tests::test_uo_invalid_order ... ok [INFO] [stdout] test signals::indicators::ultimate::tests::test_uo_invalid_period_zero ... ok [INFO] [stdout] test signals::indicators::ultimate::tests::test_uo_ready_after_slow_bars ... ok [INFO] [stdout] test signals::indicators::ultimate::tests::test_uo_reset ... ok [INFO] [stdout] test signals::indicators::ultimate::tests::test_uo_unavailable_before_slow_bars ... ok [INFO] [stdout] test signals::indicators::up_bar_ratio::tests::test_ubr_all_up_is_100 ... ok [INFO] [stdout] test signals::indicators::up_bar_ratio::tests::test_ubr_all_down_is_0 ... ok [INFO] [stdout] test signals::indicators::up_bar_ratio::tests::test_ubr_half_half_is_50 ... ok [INFO] [stdout] test signals::indicators::up_bar_ratio::tests::test_ubr_period_0_error ... ok [INFO] [stdout] test signals::indicators::up_bar_ratio::tests::test_ubr_reset ... ok [INFO] [stdout] test signals::indicators::up_bar_ratio::tests::test_ubr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::up_close_streak::tests::test_ucs_counts_rising_closes ... ok [INFO] [stdout] test signals::indicators::up_close_streak::tests::test_ucs_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::up_close_streak::tests::test_ucs_period_is_one ... ok [INFO] [stdout] test signals::indicators::up_close_streak::tests::test_ucs_ready_after_second_bar ... ok [INFO] [stdout] test signals::indicators::up_close_streak::tests::test_ucs_reset ... ok [INFO] [stdout] test signals::indicators::up_close_streak::tests::test_ucs_resets_on_down_close ... ok [INFO] [stdout] test signals::indicators::up_close_streak::tests::test_ucs_resets_on_equal_close ... ok [INFO] [stdout] test signals::indicators::up_close_streak::tests::test_ucs_resumes_after_reset ... ok [INFO] [stdout] test signals::indicators::up_down_volume_ratio::tests::test_uvr_equal_up_down ... ok [INFO] [stdout] test signals::indicators::up_down_volume_ratio::tests::test_uvr_invalid_period ... ok [INFO] [stdout] test signals::indicators::up_down_volume_ratio::tests::test_uvr_reset ... ok [INFO] [stdout] test signals::indicators::up_down_volume_ratio::tests::test_uvr_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::up_momentum_pct::tests::test_ump_all_down_gives_zero ... ok [INFO] [stdout] test signals::indicators::up_momentum_pct::tests::test_ump_all_up_gives_one ... ok [INFO] [stdout] test signals::indicators::up_momentum_pct::tests::test_ump_in_range ... ok [INFO] [stdout] test signals::indicators::up_momentum_pct::tests::test_ump_invalid_period ... ok [INFO] [stdout] test signals::indicators::up_momentum_pct::tests::test_ump_reset ... ok [INFO] [stdout] test signals::indicators::up_momentum_pct::tests::test_ump_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::up_volume_fraction::tests::test_uvf_all_down ... ok [INFO] [stdout] test signals::indicators::up_volume_fraction::tests::test_uvf_all_up ... ok [INFO] [stdout] test signals::indicators::up_volume_ratio::tests::test_up_volume_ratio_all_up ... ok [INFO] [stdout] test signals::indicators::up_volume_ratio::tests::test_up_volume_ratio_mixed ... ok [INFO] [stdout] test signals::indicators::upper_shadow_ratio::tests::test_usr_always_ready ... ok [INFO] [stdout] test signals::indicators::upper_shadow_ratio::tests::test_usr_all_upper_shadow ... ok [INFO] [stdout] test signals::indicators::upper_shadow_ratio::tests::test_usr_no_range ... ok [INFO] [stdout] test signals::indicators::upper_shadow_ratio::tests::test_usr_no_upper_shadow ... ok [INFO] [stdout] test signals::indicators::upper_shadow_ratio::tests::test_usr_partial_upper_shadow ... ok [INFO] [stdout] test signals::indicators::upper_to_lower_wick::tests::test_utlw_double_upper_wick ... ok [INFO] [stdout] test signals::indicators::upper_to_lower_wick::tests::test_utlw_equal_wicks ... ok [INFO] [stdout] test signals::indicators::upper_to_lower_wick::tests::test_utlw_period_0_error ... ok [INFO] [stdout] test signals::indicators::upper_to_lower_wick::tests::test_utlw_reset ... ok [INFO] [stdout] test signals::indicators::upper_to_lower_wick::tests::test_utlw_rolling_average ... ok [INFO] [stdout] test signals::indicators::upper_to_lower_wick::tests::test_utlw_zero_lower_wick_unavailable ... ok [INFO] [stdout] test signals::indicators::upper_wick_pct::tests::test_uwp_half_upper_wick ... ok [INFO] [stdout] test signals::indicators::upper_wick_pct::tests::test_uwp_no_upper_wick ... ok [INFO] [stdout] test signals::indicators::upper_wick_ratio::tests::test_uwr_full_upper_wick ... ok [INFO] [stdout] test signals::indicators::upper_wick_ratio::tests::test_uwr_invalid_period ... ok [INFO] [stdout] test signals::indicators::upper_wick_ratio::tests::test_uwr_no_upper_wick_returns_zero ... ok [INFO] [stdout] test signals::indicators::upper_wick_ratio::tests::test_uwr_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::upper_wick_ratio::tests::test_uwr_flat_bar_zero ... ok [INFO] [stdout] test signals::indicators::upper_wick_ratio::tests::test_uwr_reset ... ok [INFO] [stdout] test signals::indicators::upper_wick_streak::tests::test_uws_large_upper_wick_increments ... ok [INFO] [stdout] test signals::indicators::upper_wick_streak::tests::test_uws_no_upper_wick_zero ... ok [INFO] [stdout] test signals::indicators::upper_wick_streak::tests::test_uws_period_is_one ... ok [INFO] [stdout] test signals::indicators::upper_wick_streak::tests::test_uws_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::upper_wick_streak::tests::test_uws_reset ... ok [INFO] [stdout] test signals::indicators::upper_wick_streak::tests::test_uws_streak_increments ... ok [INFO] [stdout] test signals::indicators::upper_wick_streak::tests::test_uws_streak_resets_on_small_wick ... ok [INFO] [stdout] test signals::indicators::usm::tests::test_usm_invalid ... ok [INFO] [stdout] test signals::indicators::usm::tests::test_usm_produces_scalar ... ok [INFO] [stdout] test signals::indicators::usm::tests::test_usm_reset ... ok [INFO] [stdout] test signals::indicators::usm::tests::test_usm_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::usm::tests::test_usm_uptrend_positive ... ok [INFO] [stdout] test signals::indicators::value_at_risk5::tests::test_var5_all_positive_returns ... ok [INFO] [stdout] test signals::indicators::value_at_risk5::tests::test_var5_includes_big_loss ... ok [INFO] [stdout] test signals::indicators::value_at_risk5::tests::test_var5_period_0_error ... ok [INFO] [stdout] test signals::indicators::value_at_risk5::tests::test_var5_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::value_at_risk5::tests::test_var5_reset ... ok [INFO] [stdout] test signals::indicators::vam::tests::test_vam_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::vam::tests::test_vam_invalid ... ok [INFO] [stdout] test signals::indicators::vam::tests::test_vam_reset ... ok [INFO] [stdout] test signals::indicators::vam::tests::test_vam_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::variance_ratio::tests::test_vr_invalid_params ... ok [INFO] [stdout] test signals::indicators::vam::tests::test_vam_uptrend_positive ... ok [INFO] [stdout] test signals::indicators::variance_ratio::tests::test_vr_returns_scalar_after_warmup ... ok [INFO] [stdout] test signals::indicators::variance_ratio::tests::test_vr_reset ... ok [INFO] [stdout] test signals::indicators::variance_ratio::tests::test_vr_trending_above_mean_reverting ... ok [INFO] [stdout] test signals::indicators::variance_ratio::tests::test_vr_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::vhf::tests::test_vhf_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::vhf::tests::test_vhf_invalid_period ... ok [INFO] [stdout] test signals::indicators::vhf::tests::test_vhf_trending_high ... ok [INFO] [stdout] test signals::indicators::vhf::tests::test_vhf_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::vhf::tests::test_vhf_reset ... ok [INFO] [stdout] test signals::indicators::vidya::tests::test_vidya_flat_market_tracks_price ... ok [INFO] [stdout] test signals::indicators::vidya::tests::test_vidya_period_0_error ... ok [INFO] [stdout] test signals::indicators::vidya::tests::test_vidya_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::vidya::tests::test_vidya_reset ... ok [INFO] [stdout] test signals::indicators::vix_fix::tests::test_vix_fix_invalid_period ... ok [INFO] [stdout] test signals::indicators::vix_fix::tests::test_vix_fix_positive_fear ... ok [INFO] [stdout] test signals::indicators::vix_fix::tests::test_vix_fix_reset ... ok [INFO] [stdout] test signals::indicators::vix_fix::tests::test_vix_fix_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::vix_fix::tests::test_vix_fix_zero_when_low_equals_highest_close ... ok [INFO] [stdout] test signals::indicators::vol_normalized_return::tests::test_constant_price_returns_zero ... ok [INFO] [stdout] test signals::indicators::vol_normalized_return::tests::test_large_return_gives_high_score ... ok [INFO] [stdout] test signals::indicators::vol_normalized_return::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::vol_normalized_return::tests::test_ready_after_period_plus_one ... ok [INFO] [stdout] test signals::indicators::vol_normalized_return::tests::test_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::vol_normalized_return::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volatility_adjusted_momentum::tests::test_vam_flat_zero ... ok [INFO] [stdout] test signals::indicators::volatility_adjusted_momentum::tests::test_vam_positive_momentum ... ok [INFO] [stdout] test signals::indicators::volatility_adjusted_range::tests::test_narrower_range_negative ... ok [INFO] [stdout] test signals::indicators::volatility_adjusted_range::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::volatility_adjusted_range::tests::test_average_range_zero_return ... ok [INFO] [stdout] test signals::indicators::volatility_adjusted_range::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volatility_adjusted_range::tests::test_wider_range_positive ... ok [INFO] [stdout] test signals::indicators::volatility_bands::tests::test_vb_bands_set ... ok [INFO] [stdout] test signals::indicators::volatility_bands::tests::test_vb_flat_is_zero ... ok [INFO] [stdout] test signals::indicators::volatility_bands::tests::test_vb_invalid ... ok [INFO] [stdout] test signals::indicators::volatility_adjusted_range::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::volatility_bands::tests::test_vb_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::volatility_bias::tests::test_vb_reset ... ok [INFO] [stdout] test signals::indicators::volatility_bias::tests::test_vb_result_in_range ... ok [INFO] [stdout] test signals::indicators::volatility_bands::tests::test_vb_reset ... ok [INFO] [stdout] test signals::indicators::volatility_bias::tests::test_vb_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volatility_break::tests::test_vb_invalid_multiplier ... ok [INFO] [stdout] test signals::indicators::volatility_break::tests::test_vb_invalid_period ... ok [INFO] [stdout] test signals::indicators::volatility_break::tests::test_vb_large_bar_returns_one ... ok [INFO] [stdout] test signals::indicators::volatility_break::tests::test_vb_period_and_name ... ok [INFO] [stdout] test signals::indicators::volatility_compression::tests::test_vc_reset ... ok [INFO] [stdout] test signals::indicators::volatility_break::tests::test_vb_normal_bar_returns_zero ... ok [INFO] [stdout] test signals::indicators::volatility_compression::tests::test_vc_uniform_ranges_zero ... ok [INFO] [stdout] test signals::indicators::volatility_compression::tests::test_vc_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volatility_bias::tests::test_vb_invalid_period ... ok [INFO] [stdout] test signals::indicators::volatility_momentum::tests::test_vm_reset ... ok [INFO] [stdout] test signals::indicators::volatility_break::tests::test_vb_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volatility_break::tests::test_vb_reset ... ok [INFO] [stdout] test signals::indicators::volatility_compression::tests::test_vc_compression_builds ... ok [INFO] [stdout] test signals::indicators::volatility_compression::tests::test_vc_invalid_period ... ok [INFO] [stdout] test signals::indicators::volatility_momentum::tests::test_vm_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::volatility_momentum::tests::test_vm_constant_changes_give_zero_stddev ... ok [INFO] [stdout] test signals::indicators::volatility_momentum::tests::test_vm_invalid_period ... ok [INFO] [stdout] test signals::indicators::volatility_momentum::tests::test_vm_varying_changes_positive ... ok [INFO] [stdout] test signals::indicators::volatility_of_volatility::tests::test_vov_constant_tr_gives_zero ... ok [INFO] [stdout] test signals::indicators::volatility_of_volatility::tests::test_vov_invalid_period ... ok [INFO] [stdout] test signals::indicators::volatility_of_volatility::tests::test_vov_reset ... ok [INFO] [stdout] test signals::indicators::volatility_of_volatility::tests::test_vov_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volatility_of_volatility::tests::test_vov_varying_tr_gives_positive ... ok [INFO] [stdout] test signals::indicators::volatility_percentile::tests::test_vp_max_when_largest ... ok [INFO] [stdout] test signals::indicators::volatility_percentile::tests::test_vp_invalid ... ok [INFO] [stdout] test signals::indicators::volatility_percentile::tests::test_vp_reset ... ok [INFO] [stdout] test signals::indicators::volatility_percentile::tests::test_vp_min_when_smallest ... ok [INFO] [stdout] test signals::indicators::volatility_percentile::tests::test_vp_unavailable ... ok [INFO] [stdout] test signals::indicators::volatility_ratio::tests::test_vr_invalid ... ok [INFO] [stdout] test signals::indicators::volatility_ratio::tests::test_vr_flat_is_one ... ok [INFO] [stdout] test signals::indicators::volatility_ratio::tests::test_vr_spike_above_one ... ok [INFO] [stdout] test signals::indicators::volatility_ratio::tests::test_vr_uniform_bars_is_one ... ok [INFO] [stdout] test signals::indicators::volatility_ratio::tests::test_vr_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::volatility_regime_detector::tests::test_vrd_constant_returns_one ... ok [INFO] [stdout] test signals::indicators::volatility_regime_detector::tests::test_vrd_not_ready ... ok [INFO] [stdout] test signals::indicators::volatility_ratio::tests::test_vr_reset ... ok [INFO] [stdout] test signals::indicators::volatility_skew::tests::test_vs_all_down_is_minus_100 ... ok [INFO] [stdout] test signals::indicators::volatility_skew::tests::test_vs_all_up_is_100 ... ok [INFO] [stdout] test signals::indicators::volatility_skew::tests::test_vs_invalid ... ok [INFO] [stdout] test signals::indicators::volatility_skew::tests::test_vs_reset ... ok [INFO] [stdout] test signals::indicators::volatility_skew::tests::test_vs_range_minus_100_to_100 ... ok [INFO] [stdout] test signals::indicators::volatility_skew::tests::test_vs_symmetric_is_zero ... ok [INFO] [stdout] test signals::indicators::volatility_spike::tests::test_vs_no_spike ... ok [INFO] [stdout] test signals::indicators::volatility_spike::tests::test_vs_spike_detected ... ok [INFO] [stdout] test signals::indicators::volatility_skew::tests::test_vs_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::volatility_stop::tests::test_vstop_long_regime_rising_prices ... ok [INFO] [stdout] test signals::indicators::volatility_stop::tests::test_vstop_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::volatility_stop::tests::test_vstop_ready_after_period ... ok [INFO] [stdout] test signals::indicators::volatility_stop::tests::test_vstop_reset ... ok [INFO] [stdout] test signals::indicators::volatility_stop::tests::test_vstop_stop_is_below_close_in_long_regime ... ok [INFO] [stdout] test signals::indicators::volatility_stop::tests::test_vstop_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_acceleration::tests::test_va_halved_volume ... ok [INFO] [stdout] test signals::indicators::volume_acceleration::tests::test_va_doubled_volume ... ok [INFO] [stdout] test signals::indicators::volume_acceleration::tests::test_va_reset ... ok [INFO] [stdout] test signals::indicators::volume_acceleration::tests::test_va_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_acceleration::tests::test_va_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::volume_acceleration_index::tests::test_vai_constant_volume_zero ... ok [INFO] [stdout] test signals::indicators::volume_acceleration_index::tests::test_vai_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_acceleration_index::tests::test_vai_reset ... ok [INFO] [stdout] test signals::indicators::volume_acceleration_index::tests::test_vai_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volume_acceleration_index::tests::test_vai_rising_volume_positive ... ok [INFO] [stdout] test signals::indicators::volume_accumulation::tests::test_va_all_down ... ok [INFO] [stdout] test signals::indicators::volume_accumulation::tests::test_va_all_up ... ok [INFO] [stdout] test signals::indicators::volume_at_close::tests::test_vac_close_at_high_full_volume ... ok [INFO] [stdout] test signals::indicators::volume_at_close::tests::test_vac_close_at_low_zero_volume ... ok [INFO] [stdout] test signals::indicators::volume_at_close::tests::test_vac_close_at_midpoint_half_volume ... ok [INFO] [stdout] test signals::indicators::volume_at_close::tests::test_vac_flat_bar_zero_clv ... ok [INFO] [stdout] test signals::indicators::volume_at_close::tests::test_vac_period_is_one ... ok [INFO] [stdout] test signals::indicators::volume_at_close::tests::test_vac_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::volume_at_close::tests::test_vac_reset ... ok [INFO] [stdout] test signals::indicators::volume_at_close::tests::test_vac_zero_volume_unavailable ... ok [INFO] [stdout] test signals::indicators::volume_breadth::tests::test_vb_all_down_is_zero ... ok [INFO] [stdout] test signals::indicators::volume_breadth::tests::test_vb_all_up_is_one ... ok [INFO] [stdout] test signals::indicators::volume_breadth::tests::test_vb_invalid ... ok [INFO] [stdout] test signals::indicators::volume_breadth::tests::test_vb_mixed_half ... ok [INFO] [stdout] test signals::indicators::volume_climax_ratio::tests::test_vcr_low_volume_fraction ... ok [INFO] [stdout] test signals::indicators::volume_breadth::tests::test_vb_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::volume_breadth::tests::test_vb_reset ... ok [INFO] [stdout] test signals::indicators::volume_climax_ratio::tests::test_vcr_max_volume_gives_one ... ok [INFO] [stdout] test signals::indicators::volume_climax_ratio::tests::test_vcr_output_in_unit_interval ... ok [INFO] [stdout] test signals::indicators::volume_climax_ratio::tests::test_vcr_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_climax_ratio::tests::test_vcr_period_and_name ... ok [INFO] [stdout] test signals::indicators::volume_climax_ratio::tests::test_vcr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_climax_ratio::tests::test_vcr_zero_volume_unavailable ... ok [INFO] [stdout] test signals::indicators::volume_climax_ratio::tests::test_vcr_reset ... ok [INFO] [stdout] test signals::indicators::volume_consistency::tests::test_vc_alternating_fifty ... ok [INFO] [stdout] test signals::indicators::volume_consistency::tests::test_vc_always_decreasing_is_zero ... ok [INFO] [stdout] test signals::indicators::volume_consistency::tests::test_vc_always_increasing_is_100 ... ok [INFO] [stdout] test signals::indicators::volume_consistency::tests::test_vc_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_consistency::tests::test_vc_reset ... ok [INFO] [stdout] test signals::indicators::volume_consistency::tests::test_vc_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volume_cv::tests::test_vcv_constant_volume_zero ... ok [INFO] [stdout] test signals::indicators::volume_cv::tests::test_vcv_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_cv::tests::test_vcv_reset ... ok [INFO] [stdout] test signals::indicators::volume_cv::tests::test_vcv_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volume_cv::tests::test_vcv_zero_volume_unavailable ... ok [INFO] [stdout] test signals::indicators::volume_cv::tests::test_vcv_varied_volume_positive ... ok [INFO] [stdout] test signals::indicators::volume_delta_ema::tests::test_vde_doubling_volume_positive ... ok [INFO] [stdout] test signals::indicators::volume_delta_ema::tests::test_vde_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::volume_delta_ema::tests::test_vde_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_delta_ema::tests::test_vde_halving_volume_negative ... ok [INFO] [stdout] test signals::indicators::volume_delta_ema::tests::test_vde_ready_after_second_bar ... ok [INFO] [stdout] test signals::indicators::volume_delta_oscillator::tests::test_vdo_short_surge ... ok [INFO] [stdout] test signals::indicators::volume_delta_ema::tests::test_vde_reset ... ok [INFO] [stdout] test signals::indicators::volume_delta_ratio::tests::test_close_at_high_gives_one ... ok [INFO] [stdout] test signals::indicators::volume_delta_ema::tests::test_vde_stable_volume_zero ... ok [INFO] [stdout] test signals::indicators::volume_delta_ratio::tests::test_close_at_low_gives_neg_one ... ok [INFO] [stdout] test signals::indicators::volume_delta_oscillator::tests::test_vdo_equal_volumes_zero ... ok [INFO] [stdout] test signals::indicators::volume_delta_ratio::tests::test_close_at_midpoint_gives_zero ... ok [INFO] [stdout] test signals::indicators::volume_density::tests::test_vd_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_delta_ratio::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::volume_delta_ratio::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::volume_density::tests::test_vd_zero_range_unavailable ... ok [INFO] [stdout] test signals::indicators::volume_deviation::tests::test_vd_at_average_gives_zero ... ok [INFO] [stdout] test signals::indicators::volume_delta_ratio::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_deviation::tests::test_vd_double_average_gives_one ... ok [INFO] [stdout] test signals::indicators::volume_density::tests::test_vd_reset ... ok [INFO] [stdout] test signals::indicators::volume_density::tests::test_vd_constant_density ... ok [INFO] [stdout] test signals::indicators::volume_direction_ratio::tests::test_vdr_always_ready ... ok [INFO] [stdout] test signals::indicators::volume_direction_ratio::tests::test_vdr_close_at_high_is_plus_one ... ok [INFO] [stdout] test signals::indicators::volume_deviation::tests::test_vd_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_density::tests::test_vd_period_0_error ... ok [INFO] [stdout] test signals::indicators::volume_deviation::tests::test_vd_reset ... ok [INFO] [stdout] test signals::indicators::volume_deviation::tests::test_vd_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_direction_ratio::tests::test_vdr_zero_range_unavailable ... ok [INFO] [stdout] test signals::indicators::volume_direction_ratio::tests::test_vdr_close_at_low_is_minus_one ... ok [INFO] [stdout] test signals::indicators::volume_direction_ratio::tests::test_vdr_close_at_midpoint_is_zero ... ok [INFO] [stdout] test signals::indicators::volume_energy::tests::test_ve_invalid ... ok [INFO] [stdout] test signals::indicators::volume_energy::tests::test_ve_flat_price_zero_energy ... ok [INFO] [stdout] test signals::indicators::volume_energy::tests::test_ve_moving_price_positive_energy ... ok [INFO] [stdout] test signals::indicators::volume_energy::tests::test_ve_reset ... ok [INFO] [stdout] test signals::indicators::volume_energy::tests::test_ve_unavailable ... ok [INFO] [stdout] test signals::indicators::volume_exhaustion::tests::test_ve_bullish_with_declining_volume ... ok [INFO] [stdout] test signals::indicators::volume_exhaustion::tests::test_ve_increasing_volume_resets ... ok [INFO] [stdout] test signals::indicators::volume_exhaustion::tests::test_ve_reset ... ok [INFO] [stdout] test signals::indicators::volume_exhaustion::tests::test_ve_unavailable_first_bar ... ok [INFO] [stdout] test signals::indicators::volume_flow_ratio::tests::test_vfr_all_bear_gives_negative_one ... ok [INFO] [stdout] test signals::indicators::volume_flow_ratio::tests::test_vfr_all_bull_gives_one ... ok [INFO] [stdout] test signals::indicators::volume_flow_ratio::tests::test_vfr_equal_bull_bear_gives_zero ... ok [INFO] [stdout] test signals::indicators::volume_flow_ratio::tests::test_vfr_in_range ... ok [INFO] [stdout] test signals::indicators::volume_flow_ratio::tests::test_vfr_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_flow_ratio::tests::test_vfr_reset ... ok [INFO] [stdout] test signals::indicators::volume_flow_ratio::tests::test_vfr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_imbalance::tests::test_vi_all_down_returns_neg_one ... ok [INFO] [stdout] test signals::indicators::volume_imbalance::tests::test_vi_all_up_returns_one ... ok [INFO] [stdout] test signals::indicators::volume_imbalance::tests::test_vi_balanced_near_zero ... ok [INFO] [stdout] test signals::indicators::volume_imbalance::tests::test_vi_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_imbalance::tests::test_vi_reset ... ok [INFO] [stdout] test signals::indicators::volume_imbalance::tests::test_vi_unavailable_early ... ok [INFO] [stdout] test signals::indicators::volume_momentum::tests::test_vm_bearish_bar_negative ... ok [INFO] [stdout] test signals::indicators::volume_momentum::tests::test_vm_bullish_bar_positive ... ok [INFO] [stdout] test signals::indicators::volume_momentum::tests::test_vm_doji_zero ... ok [INFO] [stdout] test signals::indicators::volume_momentum::tests::test_vm_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_momentum::tests::test_vm_period_and_name ... ok [INFO] [stdout] test signals::indicators::volume_momentum::tests::test_vm_reset ... ok [INFO] [stdout] test signals::indicators::volume_momentum::tests::test_vm_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_momentum_divergence::tests::test_vmd_convergence ... ok [INFO] [stdout] test signals::indicators::volume_momentum_divergence::tests::test_vmd_divergence ... ok [INFO] [stdout] test signals::indicators::volume_momentum_oscillator::tests::test_vmo_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_momentum_oscillator::tests::test_vmo_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::volume_momentum_oscillator::tests::test_vmo_constant_volume_zero ... ok [INFO] [stdout] test signals::indicators::volume_momentum_oscillator::tests::test_vmo_reset ... ok [INFO] [stdout] test signals::indicators::volume_momentum_oscillator::tests::test_vmo_rising_volume_positive ... ok [INFO] [stdout] test signals::indicators::volume_momentum_ratio::tests::test_vmr_invalid_params ... ok [INFO] [stdout] test signals::indicators::volume_momentum_ratio::tests::test_vmr_reset ... ok [INFO] [stdout] test signals::indicators::volume_momentum_ratio::tests::test_vmr_spike_above_one ... ok [INFO] [stdout] test signals::indicators::volume_momentum_ratio::tests::test_vmr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volume_momentum_ratio::tests::test_vmr_uniform_volume_one ... ok [INFO] [stdout] test signals::indicators::volume_open_bias::tests::test_vob_all_gap_up_is_100 ... ok [INFO] [stdout] test signals::indicators::volume_open_bias::tests::test_vob_no_gap_up_is_0 ... ok [INFO] [stdout] test signals::indicators::volume_open_bias::tests::test_vob_period_0_error ... ok [INFO] [stdout] test signals::indicators::volume_open_bias::tests::test_vob_reset ... ok [INFO] [stdout] test signals::indicators::volume_open_bias::tests::test_vob_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_oscillator::tests::test_volume_oscillator_constant_volume ... ok [INFO] [stdout] test signals::indicators::volume_oscillator::tests::test_volume_oscillator_not_ready ... ok [INFO] [stdout] test signals::indicators::volume_per_range::tests::test_vpr_always_ready ... ok [INFO] [stdout] test signals::indicators::volume_per_range::tests::test_vpr_basic ... ok [INFO] [stdout] test signals::indicators::volume_per_range::tests::test_vpr_flat_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::volume_per_range::tests::test_vpr_non_negative ... ok [INFO] [stdout] test signals::indicators::volume_pressure_ratio::tests::test_all_bearish_ratio_zero ... ok [INFO] [stdout] test signals::indicators::volume_pressure_ratio::tests::test_all_bullish_ratio_one ... ok [INFO] [stdout] test signals::indicators::volume_pressure_ratio::tests::test_equal_bull_bear_half ... ok [INFO] [stdout] test signals::indicators::volume_pressure_ratio::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::volume_pressure_ratio::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::volume_pressure_ratio::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_price_corr::tests::test_vpc_period_too_small ... ok [INFO] [stdout] test signals::indicators::volume_price_corr::tests::test_vpc_positive_correlation ... ok [INFO] [stdout] test signals::indicators::volume_price_corr::tests::test_vpc_reset ... ok [INFO] [stdout] test signals::indicators::volume_price_corr::tests::test_vpc_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_price_correlation::tests::test_vpc_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_price_correlation::tests::test_vpc_perfect_positive_correlation ... ok [INFO] [stdout] test signals::indicators::volume_price_correlation::tests::test_vpc_reset ... ok [INFO] [stdout] test signals::indicators::volume_price_correlation::tests::test_vpc_result_in_range ... ok [INFO] [stdout] test signals::indicators::volume_price_correlation::tests::test_vpc_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volume_price_correlation::tests::test_vpc_zero_variance_unavailable ... ok [INFO] [stdout] test signals::indicators::volume_price_efficiency::tests::test_vpe_high_move_low_vol_is_efficient ... ok [INFO] [stdout] test signals::indicators::volume_price_efficiency::tests::test_vpe_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_price_efficiency::tests::test_vpe_non_negative ... ok [INFO] [stdout] test signals::indicators::volume_price_efficiency::tests::test_vpe_reset ... ok [INFO] [stdout] test signals::indicators::volume_price_efficiency::tests::test_vpe_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volume_price_impact::tests::test_vpi_basic_impact ... ok [INFO] [stdout] test signals::indicators::volume_price_impact::tests::test_vpi_no_price_change ... ok [INFO] [stdout] test signals::indicators::volume_price_rank::tests::test_vpr_high_score_high_rank ... ok [INFO] [stdout] test signals::indicators::volume_price_rank::tests::test_vpr_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_price_rank::tests::test_vpr_reset ... ok [INFO] [stdout] test signals::indicators::volume_price_rank::tests::test_vpr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volume_price_rank::tests::test_vpr_zero_body_zero_score ... ok [INFO] [stdout] test signals::indicators::volume_price_trend::tests::test_cumulative_accumulates ... ok [INFO] [stdout] test signals::indicators::volume_price_trend::tests::test_falling_price_negative_delta ... ok [INFO] [stdout] test signals::indicators::volume_price_trend::tests::test_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::volume_price_trend::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::volume_price_trend::tests::test_rising_price_positive_vpt ... ok [INFO] [stdout] test signals::indicators::volume_rate_of_change::tests::test_vroc_double_volume ... ok [INFO] [stdout] test signals::indicators::volume_rate_of_change::tests::test_vroc_flat_zero ... ok [INFO] [stdout] test signals::indicators::volume_ratio_signal::tests::test_vrs_all_down_bars ... ok [INFO] [stdout] test signals::indicators::volume_ratio_signal::tests::test_vrs_all_up_bars ... ok [INFO] [stdout] test signals::indicators::volume_ratio_signal::tests::test_vrs_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_ratio_signal::tests::test_vrs_reset ... ok [INFO] [stdout] test signals::indicators::volume_ratio_signal::tests::test_vrs_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::volume_ratio_trend::tests::test_all_bearish_gives_zero ... ok [INFO] [stdout] test signals::indicators::volume_ratio_trend::tests::test_all_bullish_gives_one ... ok [INFO] [stdout] test signals::indicators::volume_ratio_trend::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::volume_ratio_trend::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::volume_ratio_trend::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_return_corr::tests::test_vrc_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_return_corr::tests::test_vrc_perfect_positive_correlation ... ok [INFO] [stdout] test signals::indicators::volume_return_corr::tests::test_vrc_result_in_range ... ok [INFO] [stdout] test signals::indicators::volume_return_corr::tests::test_vrc_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volume_return_corr::tests::test_vrc_reset ... ok [INFO] [stdout] test signals::indicators::volume_return_corr::tests::test_vrc_zero_variance_unavailable ... ok [INFO] [stdout] test signals::indicators::volume_return_correlation::tests::test_vrc_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_return_correlation::tests::test_vrc_output_in_range ... ok [INFO] [stdout] test signals::indicators::volume_return_correlation::tests::test_vrc_positive_correlation ... ok [INFO] [stdout] test signals::indicators::volume_return_correlation::tests::test_vrc_reset ... ok [INFO] [stdout] test signals::indicators::volume_return_correlation::tests::test_vrc_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volume_rsi::tests::test_vrsi_flat_volume_is_50 ... ok [INFO] [stdout] test signals::indicators::volume_rsi::tests::test_vrsi_invalid ... ok [INFO] [stdout] test signals::indicators::volume_rsi::tests::test_vrsi_output_range ... ok [INFO] [stdout] test signals::indicators::volume_rsi::tests::test_vrsi_rising_volume_above_50 ... ok [INFO] [stdout] test signals::indicators::volume_rsi::tests::test_vrsi_reset ... ok [INFO] [stdout] test signals::indicators::volume_rsi::tests::test_vrsi_unavailable_first_bar ... ok [INFO] [stdout] test signals::indicators::volume_spike::tests::test_vs_invalid ... ok [INFO] [stdout] test signals::indicators::volume_spike::tests::test_vs_reset ... ok [INFO] [stdout] test signals::indicators::volume_spike::tests::test_vs_spike_detected ... ok [INFO] [stdout] test signals::indicators::volume_spike::tests::test_vs_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::volume_spike::tests::test_vs_uniform_is_one ... ok [INFO] [stdout] test signals::indicators::volume_spike_ratio::tests::test_vsr_average_bar_gives_one ... ok [INFO] [stdout] test signals::indicators::volume_spike_score::tests::test_volume_spike_score_average ... ok [INFO] [stdout] test signals::indicators::volume_spike_score::tests::test_volume_spike_score_spike ... ok [INFO] [stdout] test signals::indicators::volume_streak_count::tests::test_vsc_decreasing_streak ... ok [INFO] [stdout] test signals::indicators::volume_streak_count::tests::test_vsc_increasing_streak ... ok [INFO] [stdout] test signals::indicators::volume_streak_count::tests::test_vsc_reset_on_equal ... ok [INFO] [stdout] test signals::indicators::volume_spike_ratio::tests::test_vsr_spike_above_one ... ok [INFO] [stdout] test signals::indicators::volume_surge2::tests::test_vs_negative_threshold_error ... ok [INFO] [stdout] test signals::indicators::volume_surge2::tests::test_vs_no_surge ... ok [INFO] [stdout] test signals::indicators::volume_surge2::tests::test_vs_period_0_error ... ok [INFO] [stdout] test signals::indicators::volume_surge2::tests::test_vs_reset ... ok [INFO] [stdout] test signals::indicators::volume_surge2::tests::test_vs_surge_detected ... ok [INFO] [stdout] test signals::indicators::volume_surge2::tests::test_vs_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_surge::tests::test_vs_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_surge::tests::test_vs_reset ... ok [INFO] [stdout] test signals::indicators::volume_surge::tests::test_vs_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::volume_surge_detector::tests::test_equal_volume_gives_one ... ok [INFO] [stdout] test signals::indicators::volume_surge_detector::tests::test_high_volume_surge_above_one ... ok [INFO] [stdout] test signals::indicators::volume_surge_detector::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::volume_surge::tests::test_vs_constant_volume_gives_one ... ok [INFO] [stdout] test signals::indicators::volume_surge_detector::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::volume_surge_detector::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_surge_detector::tests::test_zero_volume_returns_zero ... ok [INFO] [stdout] test signals::indicators::volume_swing::tests::test_vs_all_down_bars_negative ... ok [INFO] [stdout] test signals::indicators::volume_swing::tests::test_vs_all_up_bars_positive ... ok [INFO] [stdout] test signals::indicators::volume_swing::tests::test_vs_doji_zero_contribution ... ok [INFO] [stdout] test signals::indicators::volume_swing::tests::test_vs_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_swing::tests::test_vs_mixed_bars ... ok [INFO] [stdout] test signals::indicators::volume_swing::tests::test_vs_reset ... ok [INFO] [stdout] test signals::indicators::volume_surge::tests::test_vs_spike_above_one ... ok [INFO] [stdout] test signals::indicators::volume_trend_strength::tests::test_vts_persistent_bullish_positive ... ok [INFO] [stdout] test signals::indicators::volume_trend_strength::tests::test_vts_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::volume_up_down_ratio::tests::test_vudr_all_down_bars_is_0 ... ok [INFO] [stdout] test signals::indicators::volume_trend_strength::tests::test_vts_reset ... ok [INFO] [stdout] test signals::indicators::volume_up_down_ratio::tests::test_vudr_all_up_bars_is_100 ... ok [INFO] [stdout] test signals::indicators::volume_swing::tests::test_vs_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volume_up_down_ratio::tests::test_vudr_period_0_error ... ok [INFO] [stdout] test signals::indicators::volume_up_down_ratio::tests::test_vudr_half_up_volume ... ok [INFO] [stdout] test signals::indicators::volume_to_range_ratio::tests::test_vtrr_basic ... ok [INFO] [stdout] test signals::indicators::volume_to_range_ratio::tests::test_vtrr_mixed ... ok [INFO] [stdout] test signals::indicators::volume_up_down_ratio::tests::test_vudr_reset ... ok [INFO] [stdout] test signals::indicators::volume_weighted_atr::tests::test_vwatr_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_trend::tests::test_vt_reset ... ok [INFO] [stdout] test signals::indicators::volume_trend::tests::test_vt_high_recent_volume_above_one ... ok [INFO] [stdout] test signals::indicators::volume_trend::tests::test_vt_invalid ... ok [INFO] [stdout] test signals::indicators::volume_up_down_ratio::tests::test_vudr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_weighted_atr::tests::test_vwatr_period_and_name ... ok [INFO] [stdout] test signals::indicators::volume_weighted_atr::tests::test_vwatr_equal_volumes_matches_simple_average ... ok [INFO] [stdout] test signals::indicators::volume_trend::tests::test_vt_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::volume_trend_slope::tests::test_vts_constant_zero_slope ... ok [INFO] [stdout] test signals::indicators::volume_weighted_atr::tests::test_vwatr_reset ... ok [INFO] [stdout] test signals::indicators::volume_weighted_atr::tests::test_vwatr_non_negative ... ok [INFO] [stdout] test signals::indicators::volume_trend_slope::tests::test_vts_increasing_positive_slope ... ok [INFO] [stdout] test signals::indicators::volume_trend::tests::test_vt_uniform_is_one ... ok [INFO] [stdout] test signals::indicators::volume_weighted_close::tests::test_vwc_equal_volume ... ok [INFO] [stdout] test signals::indicators::volume_weighted_atr::tests::test_vwatr_unavailable_before_period_plus_1 ... ok [INFO] [stdout] test signals::indicators::volume_trend_strength::tests::test_vts_neutral_bar_zero ... ok [INFO] [stdout] test signals::indicators::volume_trend_strength::tests::test_vts_bearish_bar_negative ... ok [INFO] [stdout] test signals::indicators::volume_trend_strength::tests::test_vts_bullish_bar_positive ... ok [INFO] [stdout] test signals::indicators::volume_weighted_close::tests::test_vwc_higher_volume_bar ... ok [INFO] [stdout] test signals::indicators::volume_trend_strength::tests::test_vts_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_weighted_hl::tests::test_vwhl_constant_midpoint ... ok [INFO] [stdout] test signals::indicators::volume_weighted_hl::tests::test_vwhl_high_volume_bar_dominates ... ok [INFO] [stdout] test signals::indicators::volume_weighted_hl::tests::test_vwhl_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_weighted_hl::tests::test_vwhl_reset ... ok [INFO] [stdout] test signals::indicators::volume_weighted_hl::tests::test_vwhl_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volume_weighted_hl::tests::test_vwhl_zero_volume_unavailable ... ok [INFO] [stdout] test signals::indicators::volume_weighted_momentum::tests::test_vwm_flat_zero ... ok [INFO] [stdout] test signals::indicators::volume_weighted_momentum::tests::test_vwm_positive_trend ... ok [INFO] [stdout] test signals::indicators::volume_weighted_range::tests::test_vwr_high_vol_wide_bar_dominates ... ok [INFO] [stdout] test signals::indicators::volume_weighted_range::tests::test_vwr_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_weighted_range::tests::test_vwr_reset ... ok [INFO] [stdout] test signals::indicators::volume_weighted_range::tests::test_vwr_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::volume_weighted_range::tests::test_vwr_uniform_volume_equals_avg_range ... ok [INFO] [stdout] test signals::indicators::volume_weighted_range::tests::test_vwr_zero_volume_unavailable ... ok [INFO] [stdout] test signals::indicators::volume_weighted_return::tests::test_vwr_equal_volume_is_mean_return ... ok [INFO] [stdout] test signals::indicators::volume_weighted_return::tests::test_vwr_high_vol_dominates ... ok [INFO] [stdout] test signals::indicators::volume_weighted_return::tests::test_vwr_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_weighted_return::tests::test_vwr_reset ... ok [INFO] [stdout] test signals::indicators::volume_weighted_return::tests::test_vwr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::volume_weighted_return::tests::test_vwr_zero_volume_unavailable ... ok [INFO] [stdout] test signals::indicators::volume_weighted_rsi::tests::test_vwrsi_all_up_is_100 ... ok [INFO] [stdout] test signals::indicators::volume_weighted_rsi::tests::test_vwrsi_invalid ... ok [INFO] [stdout] test signals::indicators::volume_weighted_rsi::tests::test_vwrsi_range_0_to_100 ... ok [INFO] [stdout] test signals::indicators::volume_weighted_rsi::tests::test_vwrsi_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::volume_weighted_rsi::tests::test_vwrsi_reset ... ok [INFO] [stdout] test signals::indicators::volume_weighted_std_dev::tests::test_vwsd_constant_price_gives_zero ... ok [INFO] [stdout] test signals::indicators::volume_weighted_std_dev::tests::test_vwsd_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_weighted_std_dev::tests::test_vwsd_reset ... ok [INFO] [stdout] test signals::indicators::volume_weighted_std_dev::tests::test_vwsd_unavailable_before_warm_up ... ok [INFO] [stdout] test signals::indicators::volume_weighted_std_dev::tests::test_vwsd_varying_prices_positive ... ok [INFO] [stdout] test signals::indicators::volume_weighted_volatility::tests::test_vwv_invalid_period ... ok [INFO] [stdout] test signals::indicators::volume_weighted_volatility::tests::test_vwv_flat_prices_zero ... ok [INFO] [stdout] test signals::indicators::volume_weighted_volatility::tests::test_vwv_positive_output ... ok [INFO] [stdout] test signals::indicators::volume_weighted_volatility::tests::test_vwv_reset ... ok [INFO] [stdout] test signals::indicators::volume_zscore::tests::test_volume_zscore_constant_volume_returns_zero ... ok [INFO] [stdout] test signals::indicators::volume_zscore::tests::test_volume_zscore_high_bar_positive ... ok [INFO] [stdout] test signals::indicators::volume_zscore::tests::test_volume_zscore_invalid_period ... ok [INFO] [stdout] test signals::indicators::vpt::tests::test_vpt_positive_when_price_rises ... ok [INFO] [stdout] test signals::indicators::volume_zscore::tests::test_volume_zscore_low_bar_negative ... ok [INFO] [stdout] test signals::indicators::volume_zscore::tests::test_volume_zscore_ready_after_period ... ok [INFO] [stdout] test signals::indicators::volume_zscore::tests::test_volume_zscore_reset ... ok [INFO] [stdout] test signals::indicators::volume_zscore::tests::test_volume_zscore_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::vortex::tests::test_vortex_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::vortex::tests::test_vortex_ready_after_period ... ok [INFO] [stdout] test signals::indicators::vortex::tests::test_vortex_reset ... ok [INFO] [stdout] test signals::indicators::vortex::tests::test_vortex_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::vpt::tests::test_vpt_cumulative ... ok [INFO] [stdout] test signals::indicators::vpt::tests::test_vpt_negative_when_price_falls ... ok [INFO] [stdout] test signals::indicators::volume_weighted_volatility::tests::test_vwv_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::vpt::tests::test_vpt_period_and_name ... ok [INFO] [stdout] test signals::indicators::vpt::tests::test_vpt_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::vroc::tests::test_vroc_flat_volume_is_zero ... ok [INFO] [stdout] test signals::indicators::vpt::tests::test_vpt_zero_prev_close_skipped ... ok [INFO] [stdout] test signals::indicators::vroc::tests::test_vroc_invalid_period ... ok [INFO] [stdout] test signals::indicators::vpt::tests::test_vpt_unavailable_on_first_bar ... ok [INFO] [stdout] test signals::indicators::vroc::tests::test_vroc_period ... ok [INFO] [stdout] test signals::indicators::vroc::tests::test_vroc_unavailable_before_ready ... ok [INFO] [stdout] test signals::indicators::vroc::tests::test_vroc_volume_doubles_is_100 ... ok [INFO] [stdout] test signals::indicators::vw_momentum::tests::test_vwm_downtrend_negative ... ok [INFO] [stdout] test signals::indicators::vw_momentum::tests::test_vwm_reset ... ok [INFO] [stdout] test signals::indicators::vw_momentum::tests::test_vwm_unavailable_early ... ok [INFO] [stdout] test signals::indicators::vw_momentum::tests::test_vwm_uptrend_positive ... ok [INFO] [stdout] test signals::indicators::vwap::tests::test_vwap_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::vwap::tests::test_vwap_constant_price_equals_price ... ok [INFO] [stdout] test signals::indicators::vwap::tests::test_vwap_single_bar_equals_typical_price ... ok [INFO] [stdout] test signals::indicators::vwap::tests::test_vwap_two_bars_weighted ... ok [INFO] [stdout] test signals::indicators::vwap::tests::test_vwap_zero_volume_returns_unavailable ... ok [INFO] [stdout] test signals::indicators::vwma::tests::test_vwma_equal_volumes_equals_sma ... ok [INFO] [stdout] test signals::indicators::vwma::tests::test_vwma_high_volume_bar_dominates ... ok [INFO] [stdout] test signals::indicators::vroc::tests::test_vroc_zero_old_volume_unavailable ... ok [INFO] [stdout] test signals::indicators::vroc::tests::test_vroc_volume_halves_is_negative50 ... ok [INFO] [stdout] test signals::indicators::vroc::tests::test_vroc_reset ... ok [INFO] [stdout] test signals::indicators::vw_momentum::tests::test_vwm_invalid_period ... ok [INFO] [stdout] test signals::indicators::vwma::tests::test_vwma_reset ... ok [INFO] [stdout] test signals::indicators::vwma::tests::test_vwma_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::vwma::tests::test_vwma_zero_volume_returns_unavailable ... ok [INFO] [stdout] test signals::indicators::weighted_close_roc::tests::test_wcr_invalid_period ... ok [INFO] [stdout] test signals::indicators::weighted_close::tests::test_wc_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::vzo::tests::test_vzo_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::vzo::tests::test_vzo_all_up_bars_positive ... ok [INFO] [stdout] test signals::indicators::vzo::tests::test_vzo_invalid ... ok [INFO] [stdout] test signals::indicators::vzo::tests::test_vzo_reset ... ok [INFO] [stdout] test signals::indicators::vzo::tests::test_vzo_second_bar_produces_scalar ... ok [INFO] [stdout] test signals::indicators::weighted_close::tests::test_wc_bearish_close ... ok [INFO] [stdout] test signals::indicators::weighted_close::tests::test_wc_bullish_close ... ok [INFO] [stdout] test signals::indicators::weighted_close::tests::test_wc_flat_equals_price ... ok [INFO] [stdout] test signals::indicators::weighted_close::tests::test_wc_invalid ... ok [INFO] [stdout] test signals::indicators::vwma::tests::test_vwma_period_0_fails ... ok [INFO] [stdout] test signals::indicators::weighted_close::tests::test_wc_reset ... ok [INFO] [stdout] test signals::indicators::weighted_close_roc::tests::test_wcr_no_change_returns_zero ... ok [INFO] [stdout] test signals::indicators::weighted_close_roc::tests::test_wcr_reset ... ok [INFO] [stdout] test signals::indicators::weighted_close_roc::tests::test_wcr_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::weighted_close_volatility::tests::test_wcv_constant_zero ... ok [INFO] [stdout] test signals::indicators::weighted_close_volatility::tests::test_wcv_not_ready ... ok [INFO] [stdout] test signals::indicators::weighted_close_roc::tests::test_wcr_positive_roc_period_one ... ok [INFO] [stdout] test signals::indicators::weighted_momentum::tests::test_flat_price_zero_momentum ... ok [INFO] [stdout] test signals::indicators::weighted_momentum::tests::test_period_zero_fails ... ok [INFO] [stdout] test signals::indicators::wick_imbalance::tests::test_wi_period_and_name ... ok [INFO] [stdout] test signals::indicators::weighted_momentum::tests::test_reset ... ok [INFO] [stdout] test signals::indicators::weighted_momentum::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::wick_asymmetry_streak::tests::test_was_consecutive_upper_wick_dominance ... ok [INFO] [stdout] test signals::indicators::wick_imbalance::tests::test_wi_reset ... ok [INFO] [stdout] test signals::indicators::wick_asymmetry_streak::tests::test_was_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::wick_asymmetry_streak::tests::test_was_lower_wick_dominance_is_negative ... ok [INFO] [stdout] test signals::indicators::wick_asymmetry_streak::tests::test_was_reset ... ok [INFO] [stdout] test signals::indicators::wick_asymmetry_streak::tests::test_was_streak_resets_on_equal_wicks ... ok [INFO] [stdout] test signals::indicators::wick_imbalance::tests::test_wi_balanced_wicks_near_zero ... ok [INFO] [stdout] test signals::indicators::wick_imbalance::tests::test_wi_invalid_period ... ok [INFO] [stdout] test signals::indicators::wick_imbalance::tests::test_wi_lower_wick_dominant_negative ... ok [INFO] [stdout] test signals::indicators::weighted_momentum::tests::test_constant_rise_positive ... ok [INFO] [stdout] test signals::indicators::wick_imbalance::tests::test_wi_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::wick_imbalance::tests::test_wi_upper_wick_dominant_positive ... ok [INFO] [stdout] test signals::indicators::wick_ratio::tests::test_wr_doji_is_zero ... ok [INFO] [stdout] test signals::indicators::wick_ratio::tests::test_wr_full_body_is_zero ... ok [INFO] [stdout] test signals::indicators::wick_ratio::tests::test_wr_invalid ... ok [INFO] [stdout] test signals::indicators::wick_ratio::tests::test_wr_non_negative ... ok [INFO] [stdout] test signals::indicators::wick_ratio::tests::test_wr_reset ... ok [INFO] [stdout] test signals::indicators::wick_ratio::tests::test_wr_small_body_high_wick ... ok [INFO] [stdout] test signals::indicators::wick_ratio::tests::test_wr_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::wick_rejection_score::tests::test_wick_rejection_large_wick ... ok [INFO] [stdout] test signals::indicators::wick_rejection_score::tests::test_wick_rejection_no_wicks ... ok [INFO] [stdout] test signals::indicators::wick_to_atr_ratio::tests::test_wta_doji_bar_gives_high_ratio ... ok [INFO] [stdout] test signals::indicators::wick_to_atr_ratio::tests::test_wta_full_body_bar_gives_lower_ratio ... ok [INFO] [stdout] test signals::indicators::wick_to_atr_ratio::tests::test_wta_invalid_period ... ok [INFO] [stdout] test signals::indicators::wick_to_atr_ratio::tests::test_wta_unavailable_during_warmup ... ok [INFO] [stdout] test signals::indicators::wick_to_atr_ratio::tests::test_wta_non_negative ... ok [INFO] [stdout] test signals::indicators::wick_to_body_ratio::tests::test_wbr_doji_skipped ... ok [INFO] [stdout] test signals::indicators::wick_to_body_ratio::tests::test_wbr_non_negative ... ok [INFO] [stdout] test signals::indicators::wick_to_body_ratio::tests::test_wbr_invalid_period ... ok [INFO] [stdout] test signals::indicators::wick_to_body_ratio::tests::test_wbr_reset ... ok [INFO] [stdout] test signals::indicators::wicks_vs_body_ratio::tests::test_wvb_bearish_bar ... ok [INFO] [stdout] test signals::indicators::wicks_vs_body_ratio::tests::test_wvb_correct_ratio ... ok [INFO] [stdout] test signals::indicators::wicks_vs_body_ratio::tests::test_wvb_doji_returns_unavailable ... ok [INFO] [stdout] test signals::indicators::wick_to_atr_ratio::tests::test_wta_reset ... ok [INFO] [stdout] test signals::indicators::wicks_vs_body_ratio::tests::test_wvb_ready_after_first_bar ... ok [INFO] [stdout] test signals::indicators::wicks_vs_body_ratio::tests::test_wvb_period_is_one ... ok [INFO] [stdout] test signals::indicators::wick_to_body_ratio::tests::test_wbr_no_wick_gives_zero ... ok [INFO] [stdout] test signals::indicators::wicks_vs_body_ratio::tests::test_wvb_reset ... ok [INFO] [stdout] test signals::indicators::wilder_smoothed_range::tests::test_wsr_constant_range ... ok [INFO] [stdout] test signals::indicators::wilder_smoothed_range::tests::test_wsr_not_ready ... ok [INFO] [stdout] test signals::indicators::williams_ad::tests::test_wad_falling_close_negative ... ok [INFO] [stdout] test signals::indicators::williams_ad::tests::test_wad_first_bar_unavailable ... ok [INFO] [stdout] test signals::indicators::wicks_vs_body_ratio::tests::test_wvb_no_wicks_returns_zero ... ok [INFO] [stdout] test signals::indicators::williams_ad::tests::test_wad_reset ... ok [INFO] [stdout] test signals::indicators::williams_ad::tests::test_wad_rising_close_positive ... ok [INFO] [stdout] test signals::indicators::williams_fractal::tests::test_fractal_high_detected ... ok [INFO] [stdout] test signals::indicators::williams_fractal::tests::test_fractal_low_detected ... ok [INFO] [stdout] test signals::indicators::williams_fractal::tests::test_fractal_no_pattern_returns_zero ... ok [INFO] [stdout] test signals::indicators::williams_fractal::tests::test_fractal_reset ... ok [INFO] [stdout] test signals::indicators::williams_r::tests::test_williams_r_at_high_is_zero ... ok [INFO] [stdout] test signals::indicators::williams_r::tests::test_williams_r_at_low_is_minus_100 ... ok [INFO] [stdout] test signals::indicators::williams_r::tests::test_williams_r_midpoint_is_minus_50 ... ok [INFO] [stdout] test signals::indicators::williams_r::tests::test_williams_r_period_0_error ... ok [INFO] [stdout] test signals::indicators::williams_r::tests::test_williams_r_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::williams_r::tests::test_williams_r_unavailable_until_period ... ok [INFO] [stdout] test signals::indicators::wma::tests::test_wma_period_0_fails ... ok [INFO] [stdout] test signals::indicators::williams_fractal::tests::test_fractal_unavailable_before_five_bars ... ok [INFO] [stdout] test signals::indicators::wma::tests::test_wma_period_1_equals_close ... ok [INFO] [stdout] test signals::indicators::wma::tests::test_wma_period_3_correct_value ... ok [INFO] [stdout] test signals::indicators::wma::tests::test_wma_reset ... ok [INFO] [stdout] test signals::indicators::wma::tests::test_wma_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::wma::tests::test_wma_weights_recent_price_more_than_sma ... ok [INFO] [stdout] test signals::indicators::yang_zhang_volatility::tests::test_period_too_small_fails ... ok [INFO] [stdout] test signals::indicators::yang_zhang_volatility::tests::test_ready_after_period_plus_one ... ok [INFO] [stdout] test signals::indicators::yang_zhang_volatility::tests::test_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::yang_zhang_volatility::tests::test_reset_clears_state ... ok [INFO] [stdout] test signals::indicators::yang_zhang_volatility::tests::test_wider_range_larger_vol ... ok [INFO] [stdout] test signals::indicators::zigzag::tests::test_zigzag_detects_reversal_low ... ok [INFO] [stdout] test signals::indicators::zigzag::tests::test_zigzag_detects_reversal_high ... ok [INFO] [stdout] test signals::indicators::zigzag::tests::test_zigzag_first_bar_zero ... ok [INFO] [stdout] test signals::indicators::zigzag::tests::test_zigzag_invalid_threshold ... ok [INFO] [stdout] test signals::indicators::zigzag::tests::test_zigzag_reset ... ok [INFO] [stdout] test signals::indicators::yang_zhang_volatility::tests::test_sigma_non_negative ... ok [INFO] [stdout] test signals::indicators::zigzag::tests::test_zigzag_is_ready_immediately ... ok [INFO] [stdout] test signals::indicators::zlema::tests::test_zlema_constant_price_equals_price ... ok [INFO] [stdout] test signals::indicators::zlema::tests::test_zlema_reset ... ok [INFO] [stdout] test signals::indicators::zlema::tests::test_zlema_unavailable_before_period ... ok [INFO] [stdout] test signals::indicators::zlema::tests::test_zlema_period_0_error ... ok [INFO] [stdout] test signals::indicators::zscore::tests::test_zscore_constant_prices_unavailable ... ok [INFO] [stdout] test signals::indicators::zscore::tests::test_zscore_high_value_is_positive ... ok [INFO] [stdout] test signals::indicators::zscore::tests::test_zscore_low_value_is_negative ... ok [INFO] [stdout] test signals::indicators::zscore::tests::test_zscore_reset_clears_state ... ok [INFO] [stdout] test signals::pipeline::tests::test_pipeline_get_signal_returns_correct_period ... ok [INFO] [stdout] test signals::indicators::zscore::tests::test_zscore_unavailable_before_warmup ... ok [INFO] [stdout] test signals::indicators::zscore::tests::test_zscore_zero_period_fails ... ok [INFO] [stdout] test signals::pipeline::tests::test_pipeline_get_signal_not_found ... ok [INFO] [stdout] test signals::pipeline::tests::test_pipeline_get_signal_found ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_average_scalar_multiple_values ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_average_scalar_returns_none_when_empty ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_average_scalar_single_value ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_count_ready_after_warmup ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_count_ready_zero_before_warmup ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_filter_scalars_above_empty_when_none_qualify ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_filter_scalars_above_excludes_unavailable ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_filter_scalars_above_returns_matching ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_get_all_scalars_empty_before_warmup ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_get_all_scalars_returns_owned_map ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_get_scalar_missing_name ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_get_scalar_returns_none_before_warmup ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_get_scalar_returns_value_when_ready ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_min_max_scalar ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_min_max_scalar_empty ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_names_with_errors_empty_when_no_errors ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_normalize_scalar_basic ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_normalize_scalar_not_found ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_scalars_empty_before_warmup ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_scalars_yields_ready_values ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_std_dev_single_value ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_std_dev_two_values ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_sum_scalars ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_map_sum_scalars_before_warmup ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_empty_map_for_empty_pipeline ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_longest_shortest_empty ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_longest_shortest_period ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_names_sorted ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_no_errors_on_normal_input ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_ready_count_zero_initially ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_ready_signal_names_after_warmup ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_ready_signal_names_empty_before_warmup ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_remove_existing_signal ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_remove_nonexistent_returns_false ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_remove_then_update_only_remaining ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_reset_all ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_reset_all_clears_state ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_retain_all_pass ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_retain_by_period ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_retain_none_pass ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_signal_count ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_signal_count_v2 ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_signal_names ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_signal_periods ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_signal_periods_empty ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_update_all ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_update_series_last_map_has_value ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_update_series_length_matches ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_warm_up_bars_advances_state ... ok [INFO] [stdout] test signals::pipeline::tests::test_signal_pipeline_warm_up_bars_fewer_bars_than_period ... ok [INFO] [stdout] test signals::tests::test_signal_value_and_then_scalar_can_return_unavailable ... ok [INFO] [stdout] test signals::tests::test_signal_value_and_then_scalar_returns_value ... ok [INFO] [stdout] test signals::tests::test_signal_value_and_then_unavailable_short_circuits ... ok [INFO] [stdout] test signals::tests::test_signal_value_ceil_integer ... ok [INFO] [stdout] test signals::tests::test_signal_value_ceil_positive ... ok [INFO] [stdout] test signals::tests::test_signal_value_clamp_above_hi ... ok [INFO] [stdout] test signals::tests::test_signal_value_clamp_below_lo ... ok [INFO] [stdout] test signals::tests::test_signal_value_clamp_unavailable_passthrough ... ok [INFO] [stdout] test signals::tests::test_signal_value_clamp_within_range ... ok [INFO] [stdout] test signals::tests::test_signal_value_exp_overflow_guard ... ok [INFO] [stdout] test signals::tests::test_signal_value_exp_unavailable_passthrough ... ok [INFO] [stdout] test signals::tests::test_signal_value_exp_zero ... ok [INFO] [stdout] test signals::tests::test_signal_value_floor_negative ... ok [INFO] [stdout] test signals::tests::test_signal_value_floor_positive ... ok [INFO] [stdout] test signals::tests::test_signal_value_map_scalar ... ok [INFO] [stdout] test signals::tests::test_signal_value_map_unavailable ... ok [INFO] [stdout] test signals::tests::test_signal_value_zip_with_both_scalar ... ok [INFO] [stdout] test signals::tests::test_signal_value_zip_with_one_unavailable ... ok [INFO] [stdout] test tick::tests::test_tick_filter_by_max_price ... ok [INFO] [stdout] test tick::tests::test_tick_filter_by_max_quantity ... ok [INFO] [stdout] test tick::tests::test_tick_filter_by_min_price ... ok [INFO] [stdout] test tick::tests::test_tick_filter_by_min_quantity ... ok [INFO] [stdout] test tick::tests::test_tick_filter_by_side ... ok [INFO] [stdout] test tick::tests::test_tick_filter_by_symbol ... ok [INFO] [stdout] test tick::tests::test_tick_filter_clear_resets_all_predicates ... ok [INFO] [stdout] test tick::tests::test_tick_filter_combined_predicates ... ok [INFO] [stdout] test tick::tests::test_tick_filter_has_min_qty_filter ... ok [INFO] [stdout] test tick::tests::test_tick_filter_has_notional_filter_false_when_unset ... ok [INFO] [stdout] test tick::tests::test_tick_filter_has_notional_filter_true_with_max ... ok [INFO] [stdout] test tick::tests::test_tick_filter_has_notional_filter_true_with_min ... ok [INFO] [stdout] test tick::tests::test_tick_filter_has_price_filter_max ... ok [INFO] [stdout] test tick::tests::test_tick_filter_has_price_filter_min ... ok [INFO] [stdout] test tick::tests::test_tick_filter_has_side_filter_false_when_unset ... ok [INFO] [stdout] test tick::tests::test_tick_filter_has_side_filter_true_when_set ... ok [INFO] [stdout] test tick::tests::test_tick_filter_has_symbol_filter_false_when_unset ... ok [INFO] [stdout] test tick::tests::test_tick_filter_has_symbol_filter_true_when_set ... ok [INFO] [stdout] test tick::tests::test_tick_filter_is_empty_when_no_predicates ... ok [INFO] [stdout] test tick::tests::test_tick_filter_min_notional_passes_large ... ok [INFO] [stdout] test tick::tests::test_tick_filter_min_notional_rejects_small ... ok [INFO] [stdout] test tick::tests::test_tick_filter_no_predicates_matches_all ... ok [INFO] [stdout] test tick::tests::test_tick_filter_not_empty_after_side_set ... ok [INFO] [stdout] test tick::tests::test_tick_filter_not_empty_after_symbol_set ... ok [INFO] [stdout] test tick::tests::test_tick_filter_price_range ... ok [INFO] [stdout] test tick::tests::test_tick_filter_quantity_range ... ok [INFO] [stdout] test tick::tests::test_tick_filter_timestamp_range ... ok [INFO] [stdout] test tick::tests::test_tick_is_buy_bid_side ... ok [INFO] [stdout] test tick::tests::test_tick_is_sell_ask_side ... ok [INFO] [stdout] test tick::tests::test_tick_notional_checked_matches_notional ... ok [INFO] [stdout] test tick::tests::test_tick_notional_checked_zero_qty ... ok [INFO] [stdout] test tick::tests::test_tick_notional_is_price_times_quantity ... ok [INFO] [stdout] test tick::tests::test_tick_notional_zero_quantity ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_between_inclusive ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_between_no_matches ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_buy_volume ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_count ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_count_empty ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_delta_negative_when_more_sells ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_delta_positive_when_more_buys ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_delta_zero_when_balanced ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_filter_by_side ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_filter_no_matches ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_first_none_when_empty ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_first_returns_earliest ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_iterator ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_last_none_when_empty ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_last_returns_latest ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_median_trade_size_none_for_empty ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_median_trade_size_odd_count ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_median_trade_size_single ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_next_tick_sequential ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_peek_does_not_advance ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_peek_none_when_exhausted ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_price_range_returns_spread ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_price_range_none_for_empty ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_price_range_zero_for_single_price ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_price_std_none_for_single_tick ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_price_std_positive_for_varying_prices ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_price_std_zero_for_constant_prices ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_remaining ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_reset_restarts ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_sell_volume ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_sorts_by_timestamp ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_tick_count_by_side ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_tick_count_by_side_empty ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_ticks_slice ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_time_span_nanos_correct ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_time_span_nanos_none_for_empty ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_time_span_nanos_none_for_single_tick ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_total_notional ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_total_notional_empty ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_total_notional_sum_two_trades ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_vwap_by_side_correct_values ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_vwap_by_side_empty_returns_none_both ... ok [INFO] [stdout] test tick::tests::test_tick_replayer_vwap_by_side_no_asks_returns_none_ask ... ok [INFO] [stdout] test tick::tests::test_tick_serde_roundtrip ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_add_millis ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_add_seconds ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_duration_millis ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_duration_millis_negative ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_duration_since_negative ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_duration_since_positive ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_elapsed_is_non_negative_for_past ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_elapsed_since_negative ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_elapsed_since_positive ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_elapsed_since_same_is_zero ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_from_datetime_epoch ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_from_datetime_roundtrip ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_from_secs_truncates_sub_second ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_from_secs_roundtrip ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_hours_since_positive ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_hours_since_same_returns_zero ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_is_before_after ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_max_returns_later ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_min_less_than_max ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_min_returns_earlier ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_minutes_since_negative ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_minutes_since_positive ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_min_max_same ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_ordering ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_to_datetime_epoch ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_nanos_roundtrip ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_to_datetime_roundtrip ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_now_positive ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_to_seconds_one_second ... ok [INFO] [stdout] test types::tests::test_nano_timestamp_to_seconds_zero ... ok [INFO] [stdout] test types::tests::test_nanotimestamp_day_of_week_epoch_is_thursday ... ok [INFO] [stdout] test types::tests::test_nanotimestamp_day_of_week_next_day ... ok [INFO] [stdout] test types::tests::test_nanotimestamp_sub_minutes_by_zero ... ok [INFO] [stdout] test types::tests::test_price_abs_diff_same ... ok [INFO] [stdout] test types::tests::test_price_add ... ok [INFO] [stdout] test types::tests::test_nanotimestamp_sub_minutes_round_trip ... ok [INFO] [stdout] test types::tests::test_price_checked_add_valid ... ok [INFO] [stdout] test types::tests::test_price_checked_add_result_validated ... ok [INFO] [stdout] test types::tests::test_price_checked_mul_some ... ok [INFO] [stdout] test types::tests::test_price_checked_mul_with_zero_qty ... ok [INFO] [stdout] test types::tests::test_price_abs_diff_positive ... ok [INFO] [stdout] test types::tests::test_price_from_f64_valid ... ok [INFO] [stdout] test types::tests::test_price_from_f64_zero_returns_none ... ok [INFO] [stdout] test types::tests::test_price_is_within_pct_negative_pct_returns_false ... ok [INFO] [stdout] test types::tests::test_price_is_within_pct_outside_range ... ok [INFO] [stdout] test types::tests::test_price_is_within_pct_same_price ... ok [INFO] [stdout] test types::tests::test_price_from_f64_negative_returns_none ... ok [INFO] [stdout] test types::tests::test_price_is_within_pct_within_range ... ok [INFO] [stdout] test types::tests::test_price_lerp_at_one_returns_other ... ok [INFO] [stdout] test types::tests::test_price_lerp_midpoint ... ok [INFO] [stdout] test types::tests::test_price_lerp_at_zero_returns_self ... ok [INFO] [stdout] test types::tests::test_price_mid_method ... ok [INFO] [stdout] test types::tests::test_price_lerp_out_of_range_returns_none ... ok [INFO] [stdout] test types::tests::test_price_mid_method_same_price ... ok [INFO] [stdout] test types::tests::test_price_midpoint ... ok [INFO] [stdout] test types::tests::test_price_midpoint_same_price ... ok [INFO] [stdout] test types::tests::test_price_mul_decimal_valid ... ok [INFO] [stdout] test types::tests::test_price_mul_decimal_zero_returns_none ... ok [INFO] [stdout] test types::tests::test_price_mul_quantity ... ok [INFO] [stdout] test types::tests::test_price_new_negative_fails ... ok [INFO] [stdout] test types::tests::test_price_new_positive_ok ... ok [INFO] [stdout] test types::tests::test_price_new_zero_fails ... ok [INFO] [stdout] test types::tests::test_price_ordering ... ok [INFO] [stdout] test types::tests::test_price_pct_change_negative ... ok [INFO] [stdout] test types::tests::test_price_pct_change_positive ... ok [INFO] [stdout] test types::tests::test_price_pct_change_zero ... ok [INFO] [stdout] test types::tests::test_price_pct_move_down ... ok [INFO] [stdout] test types::tests::test_price_pct_move_negative_to_invalid ... ok [INFO] [stdout] test types::tests::test_price_pct_move_up ... ok [INFO] [stdout] test types::tests::test_price_round_to_tick_same_as_snap ... ok [INFO] [stdout] test types::tests::test_price_sub ... ok [INFO] [stdout] test types::tests::test_price_round_to_tick_invalid_tick_returns_none ... ok [INFO] [stdout] test types::tests::test_price_to_f64 ... ok [INFO] [stdout] test types::tests::test_quantity_add ... ok [INFO] [stdout] test types::tests::test_quantity_checked_add ... ok [INFO] [stdout] test types::tests::test_quantity_checked_sub_exact_zero ... ok [INFO] [stdout] test types::tests::test_quantity_checked_sub_negative_returns_none ... ok [INFO] [stdout] test types::tests::test_quantity_checked_sub_valid ... ok [INFO] [stdout] test types::tests::test_quantity_from_f64_negative_returns_none ... ok [INFO] [stdout] test types::tests::test_quantity_from_f64_valid ... ok [INFO] [stdout] test types::tests::test_quantity_from_f64_zero_valid ... ok [INFO] [stdout] test types::tests::test_quantity_is_zero ... ok [INFO] [stdout] test types::tests::test_quantity_mul_decimal ... ok [INFO] [stdout] test types::tests::test_quantity_new_negative_fails ... ok [INFO] [stdout] test types::tests::test_quantity_new_positive_ok ... ok [INFO] [stdout] test types::tests::test_quantity_new_zero_ok ... ok [INFO] [stdout] test types::tests::test_quantity_proportion_of_half ... ok [INFO] [stdout] test types::tests::test_quantity_proportion_of_zero_total_returns_none ... ok [INFO] [stdout] test types::tests::test_quantity_scale_half ... ok [INFO] [stdout] test types::tests::test_quantity_scale_negative_factor_returns_none ... ok [INFO] [stdout] test types::tests::test_quantity_scale_zero_factor ... ok [INFO] [stdout] test types::tests::test_quantity_split_even ... ok [INFO] [stdout] test types::tests::test_quantity_split_one_returns_self ... ok [INFO] [stdout] test types::tests::test_quantity_split_remainder_goes_to_last ... ok [INFO] [stdout] test types::tests::test_quantity_split_zero_n_returns_empty ... ok [INFO] [stdout] test types::tests::test_quantity_sub_negative ... ok [INFO] [stdout] test types::tests::test_quantity_to_f64 ... ok [INFO] [stdout] test types::tests::test_quantity_zero_constructor ... ok [INFO] [stdout] test types::tests::test_side_display_ask ... ok [INFO] [stdout] test types::tests::test_side_opposite_bid ... ok [INFO] [stdout] test types::tests::test_quantity_sub_positive ... ok [INFO] [stdout] test types::tests::test_side_opposite_involution ... ok [INFO] [stdout] test types::tests::test_symbol_clone_equality ... ok [INFO] [stdout] test types::tests::test_side_display_bid ... ok [INFO] [stdout] test types::tests::test_side_opposite_ask ... ok [INFO] [stdout] test types::tests::test_symbol_arc_clone_is_cheap ... ok [INFO] [stdout] test types::tests::test_symbol_is_empty_always_false ... ok [INFO] [stdout] test types::tests::test_symbol_len ... ok [INFO] [stdout] test types::tests::test_symbol_display ... ok [INFO] [stdout] test types::tests::test_symbol_new_empty_fails ... ok [INFO] [stdout] test types::tests::test_symbol_new_leading_whitespace_fails ... ok [INFO] [stdout] test types::tests::test_symbol_new_valid_ok ... ok [INFO] [stdout] test types::tests::test_symbol_new_whitespace_fails ... ok [INFO] [stdout] test types::tests::test_symbol_ord_lexicographic ... ok [INFO] [stdout] test types::tests::test_symbol_ord_usable_in_btreemap ... ok [INFO] [stdout] test types::tests::test_symbol_try_from_empty_fails ... ok [INFO] [stdout] test types::tests::test_symbol_try_from_str_valid ... ok [INFO] [stdout] test types::tests::test_symbol_try_from_string_valid ... ok [INFO] [stdout] test types::tests::test_symbol_try_from_whitespace_fails ... ok [INFO] [stdout] test types::tests::test_timestamp_is_between_inclusive ... ok [INFO] [stdout] test types::tests::test_timestamp_is_between_outside ... ok [INFO] [stdout] test types::tests::test_timestamp_to_unix_ms ... ok [INFO] [stdout] test types::tests::test_timestamp_to_unix_ms_truncates ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4359 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.49s [INFO] [stdout] [INFO] [stderr] Running tests/api_coverage.rs (/opt/rustwide/target/debug/deps/api_coverage-c34d1503a17bccb5) [INFO] [stdout] [INFO] [stdout] running 18 tests [INFO] [stdout] test test_nano_timestamp_now_is_positive ... ok [INFO] [stdout] test test_nano_timestamp_to_datetime_epoch_zero ... ok [INFO] [stdout] test test_nano_timestamp_ordering_is_correct ... ok [INFO] [stdout] test test_drawdown_tracker_zero_peak_returns_zero ... ok [INFO] [stdout] test test_ohlcv_series_get_in_bounds ... ok [INFO] [stdout] test test_ohlcv_series_last_empty_returns_none ... ok [INFO] [stdout] test test_ohlcv_series_last_returns_most_recent ... ok [INFO] [stdout] test test_ohlcv_series_volumes ... ok [INFO] [stdout] test test_position_ledger_position_none_for_unknown_symbol ... ok [INFO] [stdout] test test_position_ledger_realized_pnl_total_starts_at_zero ... ok [INFO] [stdout] test test_risk_monitor_no_rules_returns_empty_vec ... ok [INFO] [stdout] test test_symbol_display_matches_inner ... ok [INFO] [stdout] test test_symbol_hash_is_stable ... ok [INFO] [stdout] test test_tick_filter_default_matches_all ... ok [INFO] [stdout] test test_tick_filter_min_quantity_boundary ... ok [INFO] [stdout] test test_tick_notional_fractional_price_and_qty ... ok [INFO] [stdout] test test_timeframe_days_bucket_start ... ok [INFO] [stdout] test test_timeframe_days_to_nanos ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/book_reconstruction.rs (/opt/rustwide/target/debug/deps/book_reconstruction-343e8a37f84ac1bb) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test test_book_reconstruction_sequence_enforced ... ok [INFO] [stdout] test test_book_reconstruction_spread ... ok [INFO] [stdout] test test_book_reconstruction_best_bid_ask ... ok [INFO] [stdout] test test_book_reconstruction_vwap ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/edge_cases.rs (/opt/rustwide/target/debug/deps/edge_cases-b5f2f801d24ca4e2) [INFO] [stdout] [INFO] [stdout] running 22 tests [INFO] [stdout] test crossed_book_ask_below_bid_rejected ... ok [INFO] [stdout] test crossed_book_bid_above_ask_rejected ... ok [INFO] [stdout] test duplicate_ask_price_level_update_replaces_quantity ... ok [INFO] [stdout] test pnl_accounting_identity_buy_then_sell_net_cash_change ... ok [INFO] [stdout] test pnl_accounting_identity_multiple_buys_avg_cost_invariant ... ok [INFO] [stdout] test pnl_accounting_identity_realized_pnl_sums_correctly ... ok [INFO] [stdout] test price_negative_returns_invalid_price_error ... ok [INFO] [stdout] test duplicate_price_level_update_replaces_quantity ... ok [INFO] [stdout] test price_very_small_positive_is_valid ... ok [INFO] [stdout] test price_zero_returns_invalid_price_error ... ok [INFO] [stdout] test quantity_negative_returns_invalid_quantity_error ... ok [INFO] [stdout] test rsi_all_losses_approaches_zero ... ok [INFO] [stdout] test rsi_period_14_produces_scalar_after_period_plus_one_bars ... ok [INFO] [stdout] test crossed_book_sequence_does_not_advance_on_rejection ... ok [INFO] [stdout] test rsi_period_14_unavailable_for_first_14_bars ... ok [INFO] [stdout] test rsi_period_3_unavailable_for_first_3_bars ... ok [INFO] [stdout] test crossed_book_rejected_bid_not_in_book ... ok [INFO] [stdout] test symbol_empty_string_returns_invalid_symbol_error ... ok [INFO] [stdout] test symbol_tab_character_returns_invalid_symbol_error ... ok [INFO] [stdout] test zero_quantity_buy_fill_leaves_position_flat ... ok [INFO] [stdout] test zero_quantity_fill_ledger_cash_unchanged ... ok [INFO] [stdout] test zero_quantity_sell_fill_does_not_change_long_position ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/indicator_accuracy.rs (/opt/rustwide/target/debug/deps/indicator_accuracy-d8c72443fd28e1a2) [INFO] [stdout] [INFO] [stdout] running 50 tests [INFO] [stdout] test atr_known_values_period_3 ... ok [INFO] [stdout] test atr_reset_restarts_accumulation ... ok [INFO] [stdout] test atr_unavailable_on_first_bar ... ok [INFO] [stdout] test bollinger_b_above_1_on_spike ... ok [INFO] [stdout] test bollinger_b_below_0_on_drop ... ok [INFO] [stdout] test bollinger_b_flat_prices_returns_half ... ok [INFO] [stdout] test bollinger_b_unavailable_before_period ... ok [INFO] [stdout] test dema_constant_price_equals_price ... ok [INFO] [stdout] test dema_faster_than_ema_on_jump ... ok [INFO] [stdout] test dema_reset_clears_state ... ok [INFO] [stdout] test ema_is_ready_flag ... ok [INFO] [stdout] test ema_all_same_values_returns_that_value ... ok [INFO] [stdout] test ema_monotone_increasing_sequence_tracks_uptrend ... ok [INFO] [stdout] test ema_period_1_equals_close ... ok [INFO] [stdout] test ema_seed_equals_sma_of_first_period_bars ... ok [INFO] [stdout] test ema_single_data_point_period_1 ... ok [INFO] [stdout] test ema_subsequent_follows_formula ... ok [INFO] [stdout] test pipeline_all_signals_present_in_map ... ok [INFO] [stdout] test pipeline_empty_has_zero_ready ... ok [INFO] [stdout] test pipeline_single_signal_works ... ok [INFO] [stdout] test pipeline_sma_ema_rsi_warm_up_correctly ... ok [INFO] [stdout] test rsi_all_same_prices_returns_100_by_convention ... ok [INFO] [stdout] test rsi_always_in_0_to_100 ... ok [INFO] [stdout] test rsi_is_ready_after_period_plus_one ... ok [INFO] [stdout] test rsi_overbought_boundary_above_70 ... ok [INFO] [stdout] test rsi_oversold_boundary_below_30 ... ok [INFO] [stdout] test rsi_period_1_ready_after_two_bars ... ok [INFO] [stdout] test rsi_period_3_needs_4_bars_to_produce_first_value ... ok [INFO] [stdout] test rsi_pure_gains_is_100 ... ok [INFO] [stdout] test rsi_single_bar_returns_unavailable ... ok [INFO] [stdout] test sma_all_same_prices_returns_that_price ... ok [INFO] [stdout] test series_feeds_pipeline_end_to_end ... ok [INFO] [stdout] test sma_all_same_values_returns_that_value ... ok [INFO] [stdout] test sma_and_ema_converge_on_flat_price ... ok [INFO] [stdout] test sma_correct_average_10_bars ... ok [INFO] [stdout] test rsi_pure_losses_near_0 ... ok [INFO] [stdout] test sma_ema_converge_to_constant_price ... ok [INFO] [stdout] test sma_period_1_always_ready ... ok [INFO] [stdout] test sma_period_name_accessible ... ok [INFO] [stdout] test sma_returns_unavailable_for_first_period_minus_1_bars ... ok [INFO] [stdout] test sma_single_data_point_period_1 ... ok [INFO] [stdout] test sma_sliding_window_excludes_old_values ... ok [INFO] [stdout] test stochastic_k_close_equals_high_returns_100 ... ok [INFO] [stdout] test stochastic_k_close_equals_low_returns_0 ... ok [INFO] [stdout] test stochastic_k_flat_range_returns_50 ... ok [INFO] [stdout] test stochastic_k_midpoint ... ok [INFO] [stdout] test stochastic_k_range_0_to_100 ... ok [INFO] [stdout] test wma_constant_price_equals_price ... ok [INFO] [stdout] test wma_known_values_period_3 ... ok [INFO] [stdout] test wma_most_recent_weighted_highest ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 50 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/ohlcv_scenarios.rs (/opt/rustwide/target/debug/deps/ohlcv_scenarios-d24cbbfa3fd3f608) [INFO] [stdout] [INFO] [stdout] running 31 tests [INFO] [stdout] test aggregator_flush_empty_returns_none ... ok [INFO] [stdout] test aggregator_5min_bar_test ... ok [INFO] [stdout] test aggregator_feeds_series_correctly ... ok [INFO] [stdout] test aggregator_high_low_tracked_correctly ... ok [INFO] [stdout] test aggregator_three_consecutive_bars ... ok [INFO] [stdout] test aggregator_single_tick_per_bar ... ok [INFO] [stdout] test aggregator_volume_accumulates ... ok [INFO] [stdout] test aggregator_wrong_symbol_ignored ... ok [INFO] [stdout] test bar_is_bearish_when_close_below_open ... ok [INFO] [stdout] test bar_is_bullish_when_close_equals_open ... ok [INFO] [stdout] test bar_range_zero_when_doji ... ok [INFO] [stdout] test bar_typical_price_calculation ... ok [INFO] [stdout] test bar_validate_high_less_than_low_fails ... ok [INFO] [stdout] test bar_validate_low_greater_than_close_fails ... ok [INFO] [stdout] test series_closes_matches_close_prices ... ok [INFO] [stdout] test series_get_by_index ... ok [INFO] [stdout] test series_get_out_of_bounds_returns_none ... ok [INFO] [stdout] test timeframe_seconds_1_nanos ... ok [INFO] [stdout] test series_invalid_bar_rejected ... ok [INFO] [stdout] test series_last_reflects_most_recent ... ok [INFO] [stdout] test series_volumes_correct ... ok [INFO] [stdout] test series_push_and_len ... ok [INFO] [stdout] test series_window_returns_all_when_small ... ok [INFO] [stdout] test timeframe_bucket_start_aligns_correctly ... ok [INFO] [stdout] test timeframe_bucket_start_zero_ts ... ok [INFO] [stdout] test timeframe_days_0_is_invalid ... ok [INFO] [stdout] test timeframe_days_1_nanos ... ok [INFO] [stdout] test timeframe_hours_0_is_invalid ... ok [INFO] [stdout] test timeframe_hours_1_nanos ... ok [INFO] [stdout] test timeframe_minutes_0_is_invalid ... ok [INFO] [stdout] test timeframe_minutes_5_nanos ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 31 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/orderbook_advanced.rs (/opt/rustwide/target/debug/deps/orderbook_advanced-741ecea2bed84dc5) [INFO] [stdout] [INFO] [stdout] running 54 tests [INFO] [stdout] test order_book_ask_count_tracks_levels ... ok [INFO] [stdout] test order_book_apply_single_bid_ask_delta ... ok [INFO] [stdout] test order_book_bid_count_tracks_levels ... ok [INFO] [stdout] test order_book_cancel_all_bids_leaves_empty_side ... ok [INFO] [stdout] test order_book_cancel_best_bid_reveals_next_level ... ok [INFO] [stdout] test order_book_cancel_non_best_level_does_not_change_best ... ok [INFO] [stdout] test order_book_cancel_then_rebook_same_level ... ok [INFO] [stdout] test order_book_empty_book_best_bid_none ... ok [INFO] [stdout] test order_book_empty_book_spread_none ... ok [INFO] [stdout] test order_book_mid_price ... ok [INFO] [stdout] test order_book_multiple_bid_levels_best_is_highest ... ok [INFO] [stdout] test order_book_multiple_ask_levels_best_is_lowest ... ok [INFO] [stdout] test order_book_partial_fill_crosses_multiple_levels ... ok [INFO] [stdout] test order_book_partial_fill_exceeds_book_returns_error ... ok [INFO] [stdout] test order_book_partial_fill_exactly_exhausts_book ... ok [INFO] [stdout] test order_book_partial_fill_vwap_uses_only_required_levels ... ok [INFO] [stdout] test order_book_reconstruction_from_tick_stream_yields_correct_spread ... ok [INFO] [stdout] test order_book_reconstruction_update_existing_level_changes_quantity ... ok [INFO] [stdout] test order_book_remove_level_by_remove_action ... ok [INFO] [stdout] test order_book_sequence_advances_correctly ... ok [INFO] [stdout] test order_book_sequence_must_be_sequential ... ok [INFO] [stdout] test order_book_spread_calculation ... ok [INFO] [stdout] test order_book_sequence_validation_rejects_out_of_order ... ok [INFO] [stdout] test order_book_top_n_asks_ordered_ascending ... ok [INFO] [stdout] test order_book_vwap_single_level ... ok [INFO] [stdout] test order_book_top_n_bids_ordered_descending ... ok [INFO] [stdout] test price_level_quantities_accessible ... ok [INFO] [stdout] test order_book_vwap_zero_qty_returns_zero ... ok [INFO] [stdout] test order_book_vwap_insufficient_liquidity ... ok [INFO] [stdout] test order_book_vwap_two_levels ... ok [INFO] [stdout] test price_negative_is_invalid ... ok [INFO] [stdout] test price_small_positive_is_valid ... ok [INFO] [stdout] test price_zero_is_invalid ... ok [INFO] [stdout] test quantity_negative_is_invalid ... ok [INFO] [stdout] test quantity_zero_is_valid ... ok [INFO] [stdout] test quantity_zero_method ... ok [INFO] [stdout] test symbol_empty_is_invalid ... ok [INFO] [stdout] test symbol_valid_alphanumeric ... ok [INFO] [stdout] test symbol_whitespace_is_invalid ... ok [INFO] [stdout] test tick_filter_by_side_bid_passes ... ok [INFO] [stdout] test tick_filter_by_side_bid_rejects_ask ... ok [INFO] [stdout] test tick_filter_by_symbol_passes_matching ... ok [INFO] [stdout] test tick_filter_by_symbol_rejects_other ... ok [INFO] [stdout] test tick_filter_min_quantity_passes_equal ... ok [INFO] [stdout] test tick_filter_min_quantity_rejects_below ... ok [INFO] [stdout] test tick_filter_combined_all_conditions ... ok [INFO] [stdout] test tick_filter_no_predicates_matches_everything ... ok [INFO] [stdout] test tick_notional_is_price_times_quantity ... ok [INFO] [stdout] test tick_notional_zero_quantity ... ok [INFO] [stdout] test tick_replayer_empty_replay ... ok [INFO] [stdout] test tick_replayer_feeds_order_book ... ok [INFO] [stdout] test tick_replayer_remaining_decrements ... ok [INFO] [stdout] test tick_replayer_reset_replays_from_start ... ok [INFO] [stdout] test tick_replayer_returns_ticks_in_timestamp_order ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 54 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/position_lifecycle.rs (/opt/rustwide/target/debug/deps/position_lifecycle-760aa8c25a59bcc7) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test test_avg_cost_two_buys_different_prices ... ok [INFO] [stdout] test test_avg_cost_three_buys_equal_size ... ok [INFO] [stdout] test test_flat_to_long_to_flat_to_short ... ok [INFO] [stdout] test test_long_to_short_in_one_fill ... ok [INFO] [stdout] test test_position_equity_with_open_position ... ok [INFO] [stdout] test test_position_open_close_pnl ... ok [INFO] [stdout] test test_short_position_unrealized_pnl_above_entry_is_negative ... ok [INFO] [stdout] test test_short_position_unrealized_pnl_below_entry ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/position_risk_integration.rs (/opt/rustwide/target/debug/deps/position_risk_integration-d908d833e0be013f) [INFO] [stdout] [INFO] [stdout] running 22 tests [INFO] [stdout] test drawdown_tracker_is_below_threshold_boundary ... ok [INFO] [stdout] test drawdown_tracker_at_peak_is_zero_drawdown ... ok [INFO] [stdout] test drawdown_tracker_max_drawdown_from_12000_to_8000 ... ok [INFO] [stdout] test drawdown_tracker_multiple_updates_peak_only_rises ... ok [INFO] [stdout] test drawdown_tracker_zero_peak_returns_zero ... ok [INFO] [stdout] test ledger_equity_drives_risk_monitor ... ok [INFO] [stdout] test ledger_insufficient_funds_returns_error ... ok [INFO] [stdout] test ledger_realized_pnl_total_accumulates_across_symbols ... ok [INFO] [stdout] test ledger_multiple_positions_total_unrealized ... ok [INFO] [stdout] test ledger_sell_without_position_creates_short ... ok [INFO] [stdout] test position_average_cost_three_buys ... ok [INFO] [stdout] test position_flip_long_to_short_larger_magnitude ... ok [INFO] [stdout] test position_commissions_compound_across_trades ... ok [INFO] [stdout] test position_partial_close_avg_cost_unchanged ... ok [INFO] [stdout] test position_short_open_and_close ... ok [INFO] [stdout] test position_unrealized_pnl_negative_when_underwater ... ok [INFO] [stdout] test risk_monitor_max_drawdown_fires_at_correct_level ... ok [INFO] [stdout] test risk_monitor_min_equity_at_exact_floor_no_breach ... ok [INFO] [stdout] test risk_monitor_breach_detail_contains_numbers ... ok [INFO] [stdout] test risk_monitor_no_rules_no_breach ... ok [INFO] [stdout] test risk_monitor_min_equity_below_floor_breaches ... ok [INFO] [stdout] test risk_monitor_three_rules_all_fire ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/property_tests.rs (/opt/rustwide/target/debug/deps/property_tests-9684dc5e7263e826) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test test_macd_constant_prices_histogram_zero ... ok [INFO] [stdout] test test_ohlcv_bar_invariant_high_gte_low ... ok [INFO] [stdout] test test_price_add_stays_positive ... ok [INFO] [stdout] test test_atr_always_non_negative ... ok [INFO] [stdout] test test_sma_value_bounded_by_input_range ... ok [INFO] [stdout] test test_drawdown_pct_always_non_negative ... ok [INFO] [stdout] test test_ohlcv_price_ordering ... ok [INFO] [stdout] test test_rsi_always_in_0_to_100 ... ok [INFO] [stdout] test test_position_size_non_negative_with_only_buys ... ok [INFO] [stdout] test test_symbol_roundtrip_display ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stderr] Running tests/risk_monitor.rs (/opt/rustwide/target/debug/deps/risk_monitor-f0be6050e6d12836) [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test test_max_drawdown_at_exact_threshold_no_breach ... ok [INFO] [stdout] test test_max_drawdown_one_unit_above_threshold_breaches ... ok [INFO] [stdout] test test_min_equity_at_exact_floor_no_breach ... ok [INFO] [stdout] test test_no_rules_never_breaches ... ok [INFO] [stdout] test test_min_equity_one_unit_below_floor_breaches ... ok [INFO] [stdout] test test_risk_monitor_breach_at_threshold ... ok [INFO] [stdout] test test_risk_monitor_recovers_after_new_peak ... ok [INFO] [stdout] test test_three_rules_all_fire_simultaneously ... ok [INFO] [stdout] test test_two_rules_only_one_fires_in_between ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/serde_roundtrip.rs (/opt/rustwide/target/debug/deps/serde_roundtrip-293519accbd3f457) [INFO] [stdout] [INFO] [stdout] running 14 tests [INFO] [stdout] test nanotimestamp_serde_roundtrip ... ok [INFO] [stdout] test book_delta_serde_roundtrip ... ok [INFO] [stdout] test price_level_serde_roundtrip ... ok [INFO] [stdout] test price_serde_roundtrip ... ok [INFO] [stdout] test order_book_snapshot_values_survive_serde ... ok [INFO] [stdout] test quantity_serde_roundtrip ... ok [INFO] [stdout] test ohlcv_bar_serde_roundtrip ... ok [INFO] [stdout] test side_ask_serde_roundtrip ... ok [INFO] [stdout] test side_bid_serde_roundtrip ... ok [INFO] [stdout] test symbol_serde_roundtrip ... ok [INFO] [stdout] test tick_serde_roundtrip ... ok [INFO] [stdout] test timeframe_serde_roundtrip_minutes ... ok [INFO] [stdout] test timeframe_serde_roundtrip_seconds ... ok [INFO] [stdout] test timeframe_serde_roundtrip_weeks ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/signal_pipeline.rs (/opt/rustwide/target/debug/deps/signal_pipeline-41e7d49dca8cea5a) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test test_signal_pipeline_not_ready_before_period ... ok [INFO] [stdout] test test_signal_pipeline_all_ready_after_period ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/tick_to_ohlcv.rs (/opt/rustwide/target/debug/deps/tick_to_ohlcv-b55a32e448a061ed) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test test_tick_to_ohlcv_high_low_correct ... ok [INFO] [stdout] test test_tick_to_ohlcv_produces_bars ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests fin_primitives [INFO] [stdout] [INFO] [stdout] running 623 tests [INFO] [stdout] test src/position/mod.rs - position::Position::stop_loss_price (line 357) ... ignored [INFO] [stdout] test src/signals/indicators/alma.rs - signals::indicators::alma::Alma (line 21) ... ok [INFO] [stdout] test src/signals/indicators/atr_normalized_close.rs - signals::indicators::atr_normalized_close::AtrNormalizedClose (line 23) ... ok [INFO] [stdout] test src/signals/indicators/atr.rs - signals::indicators::atr::Atr (line 19) ... ok [INFO] [stdout] test src/signals/indicators/abs_return_mean.rs - signals::indicators::abs_return_mean::AbsReturnMean (line 21) ... ok [INFO] [stdout] test src/signals/indicators/atr_percent.rs - signals::indicators::atr_percent::AtrPercent (line 19) ... ok [INFO] [stdout] test src/signals/indicators/amplitude_ratio.rs - signals::indicators::amplitude_ratio::AmplitudeRatio (line 19) ... ok [INFO] [stdout] test src/signals/indicators/apo.rs - signals::indicators::apo::Apo (line 16) ... ok [INFO] [stdout] test src/signals/indicators/adaptive_supertrend.rs - signals::indicators::adaptive_supertrend::AdaptiveSupertrend (line 30) ... ok [INFO] [stdout] test src/signals/indicators/acceleration_bands.rs - signals::indicators::acceleration_bands::AccelerationBands (line 28) ... ok [INFO] [stdout] test src/signals/indicators/anchored_vwap.rs - signals::indicators::anchored_vwap::AnchoredVwap (line 22) ... ok [INFO] [stdout] test src/signals/indicators/aroon.rs - signals::indicators::aroon::Aroon (line 21) ... ok [INFO] [stdout] test src/signals/indicators/alligator.rs - signals::indicators::alligator::Alligator (line 21) ... ok [INFO] [stdout] test src/signals/indicators/adaptive_rsi.rs - signals::indicators::adaptive_rsi::AdaptiveRsi (line 23) ... ok [INFO] [stdout] test src/ohlcv/mod.rs - ohlcv::OhlcvSeries::streak (line 2009) ... ok [INFO] [stdout] test src/signals/indicators/adx.rs - signals::indicators::adx::Adx (line 18) ... ok [INFO] [stdout] test src/signals/indicators/aroon_oscillator.rs - signals::indicators::aroon_oscillator::AroonOscillator (line 20) ... ok [INFO] [stdout] test src/signals/indicators/bar_momentum_index.rs - signals::indicators::bar_momentum_index::BarMomentumIndex (line 24) ... ok [INFO] [stdout] test src/signals/indicators/atr_stop.rs - signals::indicators::atr_stop::AtrStop (line 23) ... ok [INFO] [stdout] test src/signals/indicators/atr_ratio.rs - signals::indicators::atr_ratio::AtrRatio (line 24) ... ok [INFO] [stdout] test src/signals/indicators/bar_follow_through.rs - signals::indicators::bar_follow_through::BarFollowThrough (line 22) ... ok [INFO] [stdout] test src/signals/indicators/bar_open_position.rs - signals::indicators::bar_open_position::BarOpenPosition (line 17) ... ok [INFO] [stdout] test src/signals/indicators/average_bar_range.rs - signals::indicators::average_bar_range::AverageBarRange (line 20) ... ok [INFO] [stdout] test src/signals/indicators/awesome_oscillator.rs - signals::indicators::awesome_oscillator::AwesomeOscillator (line 22) ... ok [INFO] [stdout] test src/signals/indicators/bar_overlap_ratio.rs - signals::indicators::bar_overlap_ratio::BarOverlapRatio (line 18) ... ok [INFO] [stdout] test src/signals/indicators/atr_percentile.rs - signals::indicators::atr_percentile::AtrPercentile (line 24) ... ok [INFO] [stdout] test src/signals/indicators/avg_true_range_pct.rs - signals::indicators::avg_true_range_pct::AvgTrueRangePct (line 27) ... ok [INFO] [stdout] test src/signals/indicators/average_gap.rs - signals::indicators::average_gap::AverageGap (line 19) ... ok [INFO] [stdout] test src/signals/indicators/bar_polarity_streak.rs - signals::indicators::bar_polarity_streak::BarPolarityStreak (line 28) ... ok [INFO] [stdout] test src/signals/indicators/autocorrelation_1.rs - signals::indicators::autocorrelation_1::Autocorrelation1 (line 24) ... ok [INFO] [stdout] test src/signals/indicators/atrp.rs - signals::indicators::atrp::Atrp (line 18) ... ok [INFO] [stdout] test src/signals/indicators/bar_close_rank.rs - signals::indicators::bar_close_rank::BarCloseRank (line 21) ... ok [INFO] [stdout] test src/signals/indicators/bar_momentum_score.rs - signals::indicators::bar_momentum_score::BarMomentumScore (line 21) ... ok [INFO] [stdout] test src/signals/indicators/bars_since.rs - signals::indicators::bars_since::BarsSince (line 23) ... ok [INFO] [stdout] test src/signals/indicators/body_color_streak.rs - signals::indicators::body_color_streak::BodyColorStreak (line 30) ... ok [INFO] [stdout] test src/signals/indicators/bearish_engulfing.rs - signals::indicators::bearish_engulfing::BearishEngulfing (line 21) ... ok [INFO] [stdout] test src/signals/indicators/body_direction_ratio.rs - signals::indicators::body_direction_ratio::BodyDirectionRatio (line 25) ... ok [INFO] [stdout] test src/signals/indicators/body_fill_ratio.rs - signals::indicators::body_fill_ratio::BodyFillRatio (line 18) ... ok [INFO] [stdout] test src/signals/indicators/body_height_ratio.rs - signals::indicators::body_height_ratio::BodyHeightRatio (line 19) ... ok [INFO] [stdout] test src/signals/indicators/body_center_position.rs - signals::indicators::body_center_position::BodyCenterPosition (line 33) ... ok [INFO] [stdout] test src/signals/indicators/body_acceleration.rs - signals::indicators::body_acceleration::BodyAcceleration (line 25) ... ok [INFO] [stdout] test src/signals/indicators/body_atr_ratio.rs - signals::indicators::body_atr_ratio::BodyAtrRatio (line 25) ... ok [INFO] [stdout] test src/signals/indicators/bar_range_consistency.rs - signals::indicators::bar_range_consistency::BarRangeConsistency (line 20) ... ok [INFO] [stdout] test src/signals/indicators/bar_quality_score.rs - signals::indicators::bar_quality_score::BarQualityScore (line 23) ... ok [INFO] [stdout] test src/signals/indicators/bar_range_expansion_pct.rs - signals::indicators::bar_range_expansion_pct::BarRangeExpansionPct (line 22) ... ok [INFO] [stdout] test src/signals/indicators/bar_range_percentile.rs - signals::indicators::bar_range_percentile::BarRangePercentile (line 30) ... ok [INFO] [stdout] test src/signals/indicators/bar_range_std_dev.rs - signals::indicators::bar_range_std_dev::BarRangeStdDev (line 18) ... ok [INFO] [stdout] test src/signals/indicators/body_high_ratio.rs - signals::indicators::body_high_ratio::BodyHighRatio (line 25) ... ok [INFO] [stdout] test src/signals/indicators/bar_type.rs - signals::indicators::bar_type::BarType (line 20) ... ok [INFO] [stdout] test src/signals/indicators/bull_bear_balance.rs - signals::indicators::bull_bear_balance::BullBearBalance (line 23) ... ok [INFO] [stdout] test src/signals/indicators/body_trend_strength.rs - signals::indicators::body_trend_strength::BodyTrendStrength (line 25) ... ok [INFO] [stdout] test src/signals/indicators/body_width_ratio.rs - signals::indicators::body_width_ratio::BodyWidthRatio (line 28) ... ok [INFO] [stdout] test src/signals/indicators/body_position.rs - signals::indicators::body_position::BodyPosition (line 22) ... ok [INFO] [stdout] test src/signals/indicators/body_to_range_ema.rs - signals::indicators::body_to_range_ema::BodyToRangeEma (line 28) ... ok [INFO] [stdout] test src/signals/indicators/bollinger_pct_b.rs - signals::indicators::bollinger_pct_b::BollingerPctB (line 23) ... ok [INFO] [stdout] test src/signals/indicators/breakout_signal.rs - signals::indicators::breakout_signal::BreakoutSignal (line 22) ... ok [INFO] [stdout] test src/signals/indicators/bop.rs - signals::indicators::bop::Bop (line 25) ... ok [INFO] [stdout] test src/signals/indicators/body_to_wick_ratio.rs - signals::indicators::body_to_wick_ratio::BodyToWickRatio (line 43) ... ok [INFO] [stdout] test src/signals/indicators/body_volume_ratio.rs - signals::indicators::body_volume_ratio::BodyVolumeRatio (line 26) ... ok [INFO] [stdout] test src/signals/indicators/body_streak.rs - signals::indicators::body_streak::BodyStreak (line 20) ... ok [INFO] [stdout] test src/signals/indicators/bollinger.rs - signals::indicators::bollinger::BollingerB (line 33) ... ok [INFO] [stdout] test src/signals/indicators/bullish_engulfing.rs - signals::indicators::bullish_engulfing::BullishEngulfing (line 21) ... ok [INFO] [stdout] test src/signals/indicators/body_to_shadow_ratio.rs - signals::indicators::body_to_shadow_ratio::BodyToShadowRatio (line 21) ... ok [INFO] [stdout] test src/signals/indicators/body_size_rank.rs - signals::indicators::body_size_rank::BodySizeRank (line 21) ... ok [INFO] [stdout] test src/signals/indicators/bollinger_width.rs - signals::indicators::bollinger_width::BollingerWidth (line 16) ... ok [INFO] [stdout] test src/signals/indicators/calmar_ratio.rs - signals::indicators::calmar_ratio::CalmarRatio (line 27) ... ok [INFO] [stdout] test src/signals/indicators/candle_efficiency.rs - signals::indicators::candle_efficiency::CandleEfficiency (line 20) ... ok [INFO] [stdout] test src/signals/indicators/candle_body_size.rs - signals::indicators::candle_body_size::CandleBodySize (line 18) ... ok [INFO] [stdout] test src/signals/indicators/cci.rs - signals::indicators::cci::Cci (line 26) ... ok [INFO] [stdout] test src/signals/indicators/candle_momentum_score.rs - signals::indicators::candle_momentum_score::CandleMomentumScore (line 28) ... ok [INFO] [stdout] test src/signals/indicators/camarilla.rs - signals::indicators::camarilla::CamarillaP (line 29) ... ok [INFO] [stdout] test src/signals/indicators/candle_range_ma.rs - signals::indicators::candle_range_ma::CandleRangeMa (line 18) ... ok [INFO] [stdout] test src/signals/indicators/bw_mfi.rs - signals::indicators::bw_mfi::BwMfi (line 20) ... ok [INFO] [stdout] test src/signals/indicators/candle_color.rs - signals::indicators::candle_color::CandleColor (line 18) ... ok [INFO] [stdout] test src/signals/indicators/candle_pattern.rs - signals::indicators::candle_pattern::CandlePattern (line 19) ... ok [INFO] [stdout] test src/signals/indicators/candle_momentum.rs - signals::indicators::candle_momentum::CandleMomentum (line 21) ... ok [INFO] [stdout] test src/signals/indicators/chaikin_osc.rs - signals::indicators::chaikin_osc::ChaikinOsc (line 19) ... ok [INFO] [stdout] test src/signals/indicators/chande_momentum_smoothed.rs - signals::indicators::chande_momentum_smoothed::ChandeMomentumSmoothed (line 24) ... ok [INFO] [stdout] test src/signals/indicators/chande_forecast_osc.rs - signals::indicators::chande_forecast_osc::ChandeForecastOsc (line 23) ... ok [INFO] [stdout] test src/signals/indicators/chande_kroll.rs - signals::indicators::chande_kroll::ChandeKrollStop (line 28) ... ok [INFO] [stdout] test src/signals/indicators/choppiness.rs - signals::indicators::choppiness::ChoppinessIndex (line 19) ... ok [INFO] [stdout] test src/signals/indicators/close_above_ema.rs - signals::indicators::close_above_ema::CloseAboveEma (line 21) ... ok [INFO] [stdout] test src/signals/indicators/climax_volume.rs - signals::indicators::climax_volume::ClimaxVolume (line 20) ... ok [INFO] [stdout] test src/signals/indicators/chandelier.rs - signals::indicators::chandelier::ChandelierExit (line 17) ... ok [INFO] [stdout] test src/signals/indicators/close_above_high_prev.rs - signals::indicators::close_above_high_prev::CloseAboveHighPrev (line 14) ... ok [INFO] [stdout] test src/signals/indicators/close_above_open.rs - signals::indicators::close_above_open::CloseAboveOpen (line 21) ... ok [INFO] [stdout] test src/signals/indicators/change_from_high.rs - signals::indicators::change_from_high::ChangeFromHigh (line 22) ... ok [INFO] [stdout] test src/signals/indicators/close_high_frequency.rs - signals::indicators::close_high_frequency::CloseHighFrequency (line 25) ... ok [INFO] [stdout] test src/signals/indicators/close_above_midpoint.rs - signals::indicators::close_above_midpoint::CloseAboveMidpoint (line 23) ... ok [INFO] [stdout] test src/signals/indicators/close_above_prev_close.rs - signals::indicators::close_above_prev_close::CloseAbovePrevClose (line 22) ... ok [INFO] [stdout] test src/signals/indicators/close_drawdown_from_high.rs - signals::indicators::close_drawdown_from_high::CloseDrawdownFromHigh (line 28) ... ok [INFO] [stdout] test src/signals/indicators/close_above_sma_streak.rs - signals::indicators::close_above_sma_streak::CloseAboveSmaStreak (line 21) ... ok [INFO] [stdout] test src/signals/indicators/close_high_low_spread.rs - signals::indicators::close_high_low_spread::CloseHighLowSpread (line 26) ... ok [INFO] [stdout] test src/signals/indicators/close_above_open_streak.rs - signals::indicators::close_above_open_streak::CloseAboveOpenStreak (line 19) ... ok [INFO] [stdout] test src/signals/indicators/close_above_prev_low.rs - signals::indicators::close_above_prev_low::CloseAbovePrevLow (line 26) ... ok [INFO] [stdout] test src/signals/indicators/close_in_range_pct.rs - signals::indicators::close_in_range_pct::CloseInRangePct (line 32) ... ok [INFO] [stdout] test src/signals/indicators/close_above_pivot.rs - signals::indicators::close_above_pivot::CloseAbovePivot (line 28) ... ok [INFO] [stdout] test src/signals/indicators/close_above_prior_close.rs - signals::indicators::close_above_prior_close::CloseAbovePriorClose (line 18) ... ok [INFO] [stdout] test src/signals/indicators/close_above_prev_close_pct.rs - signals::indicators::close_above_prev_close_pct::CloseAbovePrevClosePct (line 19) ... ok [INFO] [stdout] test src/signals/indicators/close_distance_from_open.rs - signals::indicators::close_distance_from_open::CloseDistanceFromOpen (line 27) ... ok [INFO] [stdout] test src/signals/indicators/close_location_ema.rs - signals::indicators::close_location_ema::CloseLocationEma (line 35) ... ok [INFO] [stdout] test src/signals/indicators/close_position_in_range.rs - signals::indicators::close_position_in_range::ClosePositionInRange (line 22) ... ok [INFO] [stdout] test src/signals/indicators/close_midpoint_diff.rs - signals::indicators::close_midpoint_diff::CloseMidpointDiff (line 17) ... ok [INFO] [stdout] test src/signals/indicators/close_midpoint_strength.rs - signals::indicators::close_midpoint_strength::CloseMidpointStrength (line 19) ... ok [INFO] [stdout] test src/signals/indicators/close_location_value.rs - signals::indicators::close_location_value::CloseLocationValue (line 23) ... ok [INFO] [stdout] test src/signals/indicators/close_minus_open_ma.rs - signals::indicators::close_minus_open_ma::CloseMinusOpenMa (line 21) ... ok [INFO] [stdout] test src/signals/indicators/close_open_ema.rs - signals::indicators::close_open_ema::CloseOpenEma (line 21) ... ok [INFO] [stdout] test src/signals/indicators/close_rank_momentum.rs - signals::indicators::close_rank_momentum::CloseRankMomentum (line 28) ... ok [INFO] [stdout] test src/signals/indicators/close_momentum_rank.rs - signals::indicators::close_momentum_rank::CloseMomentumRank (line 23) ... ok [INFO] [stdout] test src/signals/indicators/close_retrace_pct.rs - signals::indicators::close_retrace_pct::CloseRetracePct (line 23) ... ok [INFO] [stdout] test src/signals/indicators/close_return_acceleration.rs - signals::indicators::close_return_acceleration::CloseReturnAcceleration (line 22) ... ok [INFO] [stdout] test src/signals/indicators/close_range_position.rs - signals::indicators::close_range_position::CloseRangePosition (line 31) ... ok [INFO] [stdout] test src/signals/indicators/close_pct_rank.rs - signals::indicators::close_pct_rank::ClosePctRank (line 27) ... ok [INFO] [stdout] test src/signals/indicators/close_return_z.rs - signals::indicators::close_return_z::CloseReturnZ (line 21) ... ok [INFO] [stdout] test src/signals/indicators/close_strength_ratio.rs - signals::indicators::close_strength_ratio::CloseStrengthRatio (line 25) ... ok [INFO] [stdout] test src/signals/indicators/close_session_bias.rs - signals::indicators::close_session_bias::CloseSessionBias (line 30) ... ok [INFO] [stdout] test src/signals/indicators/close_to_low_distance.rs - signals::indicators::close_to_low_distance::CloseToLowDistance (line 21) ... ok [INFO] [stdout] test src/signals/indicators/close_open_momentum.rs - signals::indicators::close_open_momentum::CloseOpenMomentum (line 28) ... ok [INFO] [stdout] test src/signals/indicators/close_to_midrange.rs - signals::indicators::close_to_midrange::CloseToMidrange (line 28) ... ok [INFO] [stdout] test src/signals/indicators/close_to_open.rs - signals::indicators::close_to_open::CloseToOpen (line 21) ... ok [INFO] [stdout] test src/signals/indicators/close_to_open_return.rs - signals::indicators::close_to_open_return::CloseToOpenReturn (line 18) ... ok [INFO] [stdout] test src/signals/indicators/close_minus_prev_high.rs - signals::indicators::close_minus_prev_high::CloseMinusPrevHigh (line 26) ... ok [INFO] [stdout] test src/signals/indicators/close_to_vwap_pct.rs - signals::indicators::close_to_vwap_pct::CloseToVwapPct (line 26) ... ok [INFO] [stdout] test src/signals/indicators/close_vs_prior_high.rs - signals::indicators::close_vs_prior_high::CloseVsPriorHigh (line 23) ... ok [INFO] [stdout] test src/signals/indicators/cmf.rs - signals::indicators::cmf::Cmf (line 24) ... ok [INFO] [stdout] test src/signals/indicators/closing_strength.rs - signals::indicators::closing_strength::ClosingStrength (line 25) ... ok [INFO] [stdout] test src/signals/indicators/cmo.rs - signals::indicators::cmo::Cmo (line 18) ... ok [INFO] [stdout] test src/signals/indicators/connors_rsi.rs - signals::indicators::connors_rsi::ConnorsRsi (line 24) ... ok [INFO] [stdout] test src/signals/indicators/consecutive_bars.rs - signals::indicators::consecutive_bars::ConsecutiveBars (line 21) ... ok [INFO] [stdout] test src/signals/indicators/close_vs_vwap.rs - signals::indicators::close_vs_vwap::CloseVsVwap (line 23) ... ok [INFO] [stdout] test src/signals/indicators/cog.rs - signals::indicators::cog::Cog (line 17) ... ok [INFO] [stdout] test src/signals/indicators/consecutive_new_highs.rs - signals::indicators::consecutive_new_highs::ConsecutiveNewHighs (line 18) ... ok [INFO] [stdout] test src/signals/indicators/consolidation_score.rs - signals::indicators::consolidation_score::ConsolidationScore (line 24) ... ok [INFO] [stdout] test src/signals/indicators/coral_trend.rs - signals::indicators::coral_trend::CoralTrend (line 27) ... ok [INFO] [stdout] test src/signals/indicators/ctm.rs - signals::indicators::ctm::Ctm (line 19) ... ok [INFO] [stdout] test src/signals/indicators/conditional_var5.rs - signals::indicators::conditional_var5::ConditionalVar5 (line 22) ... ok [INFO] [stdout] test src/signals/indicators/cumulative_volume.rs - signals::indicators::cumulative_volume::CumulativeVolume (line 17) ... ok [INFO] [stdout] test src/signals/indicators/consecutive_higher_highs.rs - signals::indicators::consecutive_higher_highs::ConsecutiveHigherHighs (line 19) ... ok [INFO] [stdout] test src/signals/indicators/cumulative_delta.rs - signals::indicators::cumulative_delta::CumulativeDelta (line 14) ... ok [INFO] [stdout] test src/signals/indicators/coppock.rs - signals::indicators::coppock::Coppock (line 16) ... ok [INFO] [stdout] test src/signals/indicators/daily_return_skew.rs - signals::indicators::daily_return_skew::DailyReturnSkew (line 20) ... ok [INFO] [stdout] test src/signals/indicators/dark_cloud_cover.rs - signals::indicators::dark_cloud_cover::DarkCloudCover (line 21) ... ok [INFO] [stdout] test src/signals/indicators/cumulative_log_return.rs - signals::indicators::cumulative_log_return::CumulativeLogReturn (line 21) ... ok [INFO] [stdout] test src/signals/indicators/cusum_price_change.rs - signals::indicators::cusum_price_change::CusumPriceChange (line 27) ... ok [INFO] [stdout] test src/signals/indicators/consecutive_volume_growth.rs - signals::indicators::consecutive_volume_growth::ConsecutiveVolumeGrowth (line 21) ... ok [INFO] [stdout] test src/signals/indicators/deviation_from_ma.rs - signals::indicators::deviation_from_ma::DeviationFromMa (line 19) ... ok [INFO] [stdout] test src/signals/indicators/cyber_cycle.rs - signals::indicators::cyber_cycle::EhlersCyberCycle (line 31) ... ok [INFO] [stdout] test src/signals/indicators/delta_momentum.rs - signals::indicators::delta_momentum::DeltaMomentum (line 24) ... ok [INFO] [stdout] test src/signals/indicators/direction_changes.rs - signals::indicators::direction_changes::DirectionChanges (line 21) ... ok [INFO] [stdout] test src/signals/indicators/delta_volume.rs - signals::indicators::delta_volume::DeltaVolume (line 23) ... ok [INFO] [stdout] test src/signals/indicators/dema.rs - signals::indicators::dema::Dema (line 19) ... ok [INFO] [stdout] test src/signals/indicators/dema_cross.rs - signals::indicators::dema_cross::DemaCross (line 19) ... ok [INFO] [stdout] test src/signals/indicators/dema_ratio.rs - signals::indicators::dema_ratio::DemaRatio (line 19) ... ok [INFO] [stdout] test src/signals/indicators/directional_efficiency.rs - signals::indicators::directional_efficiency::DirectionalEfficiency (line 27) ... ok [INFO] [stdout] test src/signals/indicators/donchian.rs - signals::indicators::donchian::DonchianMidpoint (line 15) ... ok [INFO] [stdout] test src/signals/indicators/disparity.rs - signals::indicators::disparity::DisparityIndex (line 18) ... ok [INFO] [stdout] test src/signals/indicators/directional_candle_ratio.rs - signals::indicators::directional_candle_ratio::DirectionalCandleRatio (line 25) ... ok [INFO] [stdout] test src/signals/indicators/didi_index.rs - signals::indicators::didi_index::DidiIndex (line 27) ... ok [INFO] [stdout] test src/signals/indicators/dpo.rs - signals::indicators::dpo::Dpo (line 25) ... ok [INFO] [stdout] test src/signals/indicators/dmi.rs - signals::indicators::dmi::Dmi (line 14) ... ok [INFO] [stdout] test src/signals/indicators/dual_momentum.rs - signals::indicators::dual_momentum::DualMomentum (line 24) ... ok [INFO] [stdout] test src/signals/indicators/doji_detector.rs - signals::indicators::doji_detector::DojiDetector (line 22) ... ok [INFO] [stdout] test src/signals/indicators/dual_atr_ratio.rs - signals::indicators::dual_atr_ratio::DualATRRatio (line 23) ... ok [INFO] [stdout] test src/signals/indicators/elder_impulse.rs - signals::indicators::elder_impulse::ElderImpulse (line 27) ... ok [INFO] [stdout] test src/signals/indicators/dual_rsi.rs - signals::indicators::dual_rsi::DualRsi (line 21) ... ok [INFO] [stdout] test src/signals/indicators/dynamic_momentum_index.rs - signals::indicators::dynamic_momentum_index::DynamicMomentumIndex (line 24) ... ok [INFO] [stdout] test src/signals/indicators/elder.rs - signals::indicators::elder::ElderRay (line 21) ... ok [INFO] [stdout] test src/signals/indicators/dsp.rs - signals::indicators::dsp::Dsp (line 26) ... ok [INFO] [stdout] test src/signals/indicators/ease_of_movement.rs - signals::indicators::ease_of_movement::EaseOfMovement (line 23) ... ok [INFO] [stdout] test src/signals/indicators/emv.rs - signals::indicators::emv::Emv (line 21) ... ok [INFO] [stdout] test src/signals/indicators/elastic_volume_weighted_ma.rs - signals::indicators::elastic_volume_weighted_ma::Evwma (line 22) ... ok [INFO] [stdout] test src/signals/indicators/ema_alignment.rs - signals::indicators::ema_alignment::EmaAlignment (line 18) ... ok [INFO] [stdout] test src/signals/indicators/ema_cross.rs - signals::indicators::ema_cross::EmaCross (line 20) ... ok [INFO] [stdout] test src/signals/indicators/efficiency_ratio.rs - signals::indicators::efficiency_ratio::EfficiencyRatio (line 22) ... ok [INFO] [stdout] test src/signals/indicators/ema_convergence.rs - signals::indicators::ema_convergence::EmaConvergence (line 20) ... ok [INFO] [stdout] test src/signals/indicators/engulfing_detector.rs - signals::indicators::engulfing_detector::EngulfingDetector (line 20) ... ok [INFO] [stdout] test src/signals/indicators/ema_ratio.rs - signals::indicators::ema_ratio::EmaRatio (line 21) ... ok [INFO] [stdout] test src/signals/indicators/fibonacci_retrace.rs - signals::indicators::fibonacci_retrace::FibonacciRetrace (line 20) ... ok [INFO] [stdout] test src/signals/indicators/evening_star.rs - signals::indicators::evening_star::EveningStar (line 22) ... ok [INFO] [stdout] test src/signals/indicators/ema_band_width.rs - signals::indicators::ema_band_width::EmaBandWidth (line 21) ... ok [INFO] [stdout] test src/signals/indicators/fair_value_gap.rs - signals::indicators::fair_value_gap::FairValueGap (line 24) ... ok [INFO] [stdout] test src/signals/indicators/env.rs - signals::indicators::env::Envelope (line 22) ... ok [INFO] [stdout] test src/signals/indicators/ema_slope.rs - signals::indicators::ema_slope::EmaSlope (line 21) ... ok [INFO] [stdout] test src/signals/indicators/fisher.rs - signals::indicators::fisher::Fisher (line 21) ... ok [INFO] [stdout] test src/signals/indicators/engulfing_pattern.rs - signals::indicators::engulfing_pattern::EngulfingPattern (line 25) ... ok [INFO] [stdout] test src/signals/indicators/flat_bar_pct.rs - signals::indicators::flat_bar_pct::FlatBarPct (line 22) ... ok [INFO] [stdout] test src/signals/indicators/force_index.rs - signals::indicators::force_index::ForceIndex (line 22) ... ok [INFO] [stdout] test src/signals/indicators/gann_hilo.rs - signals::indicators::gann_hilo::GannHiLo (line 19) ... ok [INFO] [stdout] test src/signals/indicators/fractal_dimension_index.rs - signals::indicators::fractal_dimension_index::FractalDimensionIndex (line 24) ... ok [INFO] [stdout] test src/signals/indicators/gap_signal.rs - signals::indicators::gap_signal::GapSignal (line 18) ... ok [INFO] [stdout] test src/signals/indicators/gap_momentum.rs - signals::indicators::gap_momentum::GapMomentum (line 19) ... ok [INFO] [stdout] test src/signals/indicators/gap_direction_streak.rs - signals::indicators::gap_direction_streak::GapDirectionStreak (line 31) ... ok [INFO] [stdout] test src/signals/indicators/gap_detector.rs - signals::indicators::gap_detector::GapDetector (line 19) ... ok [INFO] [stdout] test src/signals/indicators/garman_klass_volatility.rs - signals::indicators::garman_klass_volatility::GarmanKlassVolatility (line 20) ... ok [INFO] [stdout] test src/signals/indicators/gap_fill_detector.rs - signals::indicators::gap_fill_detector::GapFillDetector (line 27) ... ok [INFO] [stdout] test src/signals/indicators/gap_streak.rs - signals::indicators::gap_streak::GapStreak (line 21) ... ok [INFO] [stdout] test src/signals/indicators/gap_range_ratio.rs - signals::indicators::gap_range_ratio::GapRangeRatio (line 26) ... ok [INFO] [stdout] test src/signals/indicators/gap_body_ratio.rs - signals::indicators::gap_body_ratio::GapBodyRatio (line 29) ... ok [INFO] [stdout] test src/signals/indicators/gap_continuation_ratio.rs - signals::indicators::gap_continuation_ratio::GapContinuationRatio (line 36) ... ok [INFO] [stdout] test src/signals/indicators/golden_cross_signal.rs - signals::indicators::golden_cross_signal::GoldenCrossSignal (line 21) ... ok [INFO] [stdout] test src/signals/indicators/gap_volatility.rs - signals::indicators::gap_volatility::GapVolatility (line 30) ... ok [INFO] [stdout] test src/signals/indicators/frama.rs - signals::indicators::frama::Frama (line 28) ... ok [INFO] [stdout] test src/signals/indicators/hammer_detector.rs - signals::indicators::hammer_detector::HammerDetector (line 33) ... ok [INFO] [stdout] test src/signals/indicators/harami_detector.rs - signals::indicators::harami_detector::HaramiDetector (line 21) ... ok [INFO] [stdout] test src/signals/indicators/hammer_pattern.rs - signals::indicators::hammer_pattern::HammerPattern (line 24) ... ok [INFO] [stdout] test src/signals/indicators/half_trend.rs - signals::indicators::half_trend::HalfTrend (line 20) ... ok [INFO] [stdout] test src/signals/indicators/high_low_symmetry.rs - signals::indicators::high_low_symmetry::HighLowSymmetry (line 38) ... ok [INFO] [stdout] test src/signals/indicators/high_low_persistence.rs - signals::indicators::high_low_persistence::HighLowPersistence (line 32) ... ok [INFO] [stdout] test src/signals/indicators/high_minus_prev_close.rs - signals::indicators::high_minus_prev_close::HighMinusPrevClose (line 25) ... ok [INFO] [stdout] test src/signals/indicators/high_low_squeeze.rs - signals::indicators::high_low_squeeze::HighLowSqueeze (line 28) ... ok [INFO] [stdout] test src/signals/indicators/high_low_pct.rs - signals::indicators::high_low_pct::HighLowPct (line 24) ... ok [INFO] [stdout] test src/signals/indicators/high_break_count.rs - signals::indicators::high_break_count::HighBreakCount (line 17) ... ok [INFO] [stdout] test src/signals/indicators/heikin_ashi.rs - signals::indicators::heikin_ashi::HeikinAshi (line 24) ... ok [INFO] [stdout] test src/signals/indicators/high_low_crossover.rs - signals::indicators::high_low_crossover::HighLowCrossover (line 20) ... ok [INFO] [stdout] test src/signals/indicators/high_low_ratio_ma.rs - signals::indicators::high_low_ratio_ma::HighLowRatioMa (line 25) ... ok [INFO] [stdout] test src/signals/indicators/high_low_spread.rs - signals::indicators::high_low_spread::HighLowSpread (line 19) ... ok [INFO] [stdout] test src/signals/indicators/high_low_momentum.rs - signals::indicators::high_low_momentum::HighLowMomentum (line 26) ... ok [INFO] [stdout] test src/signals/indicators/high_of_period.rs - signals::indicators::high_of_period::HighOfPeriod (line 13) ... ok [INFO] [stdout] test src/signals/indicators/high_low_pct_range.rs - signals::indicators::high_low_pct_range::HighLowPctRange (line 21) ... ok [INFO] [stdout] test src/signals/indicators/higher_low_streak.rs - signals::indicators::higher_low_streak::HigherLowStreak (line 17) ... ok [INFO] [stdout] test src/signals/indicators/high_volume_bar_ratio.rs - signals::indicators::high_volume_bar_ratio::HighVolumeBarRatio (line 24) ... ok [INFO] [stdout] test src/signals/indicators/hullma.rs - signals::indicators::hullma::HullMa (line 17) ... ok [INFO] [stdout] test src/signals/indicators/hl_ratio.rs - signals::indicators::hl_ratio::HlRatio (line 20) ... ok [INFO] [stdout] test src/signals/indicators/inertia.rs - signals::indicators::inertia::Inertia (line 23) ... ok [INFO] [stdout] test src/signals/indicators/higher_close_streak.rs - signals::indicators::higher_close_streak::HigherCloseStreak (line 14) ... ok [INFO] [stdout] test src/signals/indicators/hl_midpoint_deviation.rs - signals::indicators::hl_midpoint_deviation::HlMidpointDeviation (line 33) ... ok [INFO] [stdout] test src/signals/indicators/hurst_exponent.rs - signals::indicators::hurst_exponent::HurstExponent (line 22) ... ok [INFO] [stdout] test src/signals/indicators/ichimoku.rs - signals::indicators::ichimoku::Ichimoku (line 25) ... ok [INFO] [stdout] test src/signals/indicators/historical_volatility.rs - signals::indicators::historical_volatility::HistoricalVolatility (line 19) ... ok [INFO] [stdout] test src/signals/indicators/intraday_spread_pct.rs - signals::indicators::intraday_spread_pct::IntradaySpreadPct (line 20) ... ok [INFO] [stdout] test src/signals/indicators/kaufman_er.rs - signals::indicators::kaufman_er::KaufmanEr (line 21) ... ok [INFO] [stdout] test src/signals/indicators/inside_bar_counter.rs - signals::indicators::inside_bar_counter::InsideBarCounter (line 22) ... ok [INFO] [stdout] test src/signals/indicators/intrabar_momentum.rs - signals::indicators::intrabar_momentum::IntrabarMomentum (line 29) ... ok [INFO] [stdout] test src/signals/indicators/jurik_ma.rs - signals::indicators::jurik_ma::JurikMa (line 32) ... ok [INFO] [stdout] test src/signals/indicators/intrabar_return.rs - signals::indicators::intrabar_return::IntrabarReturn (line 16) ... ok [INFO] [stdout] test src/signals/indicators/higher_timeframe_trend.rs - signals::indicators::higher_timeframe_trend::HigherTimeframeTrend (line 25) ... FAILED [INFO] [stdout] test src/signals/indicators/keltner.rs - signals::indicators::keltner::KeltnerChannel (line 15) ... ok [INFO] [stdout] test src/signals/indicators/kama.rs - signals::indicators::kama::Kama (line 21) ... ok [INFO] [stdout] test src/signals/indicators/key_reversal.rs - signals::indicators::key_reversal::KeyReversal (line 24) ... ok [INFO] [stdout] test src/signals/indicators/kicking_pattern.rs - signals::indicators::kicking_pattern::KickingPattern (line 25) ... ok [INFO] [stdout] test src/signals/indicators/kst.rs - signals::indicators::kst::Kst (line 22) ... ok [INFO] [stdout] test src/signals/indicators/kvo.rs - signals::indicators::kvo::Kvo (line 19) ... ok [INFO] [stdout] test src/signals/indicators/log_return_volatility.rs - signals::indicators::log_return_volatility::LogReturnVolatility (line 21) ... ok [INFO] [stdout] test src/signals/indicators/linear_regression_r2.rs - signals::indicators::linear_regression_r2::LinRegR2 (line 24) ... ok [INFO] [stdout] test src/signals/indicators/linreg_channel.rs - signals::indicators::linreg_channel::LinRegChannel (line 21) ... ok [INFO] [stdout] test src/signals/indicators/linear_deviation.rs - signals::indicators::linear_deviation::LinearDeviation (line 21) ... ok [INFO] [stdout] test src/signals/indicators/linear_regression_slope.rs - signals::indicators::linear_regression_slope::LinearRegressionSlope (line 24) ... ok [INFO] [stdout] test src/signals/indicators/linreg_slope.rs - signals::indicators::linreg_slope::LinRegSlope (line 21) ... ok [INFO] [stdout] test src/signals/indicators/laguerre.rs - signals::indicators::laguerre::LaguerreRsi (line 26) ... ok [INFO] [stdout] test src/signals/indicators/lower_high_streak.rs - signals::indicators::lower_high_streak::LowerHighStreak (line 18) ... ok [INFO] [stdout] test src/signals/indicators/lower_wick_ratio.rs - signals::indicators::lower_wick_ratio::LowerWickRatio (line 28) ... ok [INFO] [stdout] test src/signals/indicators/lower_shadow_ratio.rs - signals::indicators::lower_shadow_ratio::LowerShadowRatio (line 18) ... ok [INFO] [stdout] test src/signals/indicators/low_of_period.rs - signals::indicators::low_of_period::LowOfPeriod (line 13) ... ok [INFO] [stdout] test src/signals/indicators/low_minus_prev_close.rs - signals::indicators::low_minus_prev_close::LowMinusPrevClose (line 25) ... ok [INFO] [stdout] test src/signals/indicators/lsma.rs - signals::indicators::lsma::Lsma (line 16) ... ok [INFO] [stdout] test src/signals/indicators/linreg_forecast.rs - signals::indicators::linreg_forecast::LinRegForecast (line 16) ... ok [INFO] [stdout] test src/signals/indicators/mcginley.rs - signals::indicators::mcginley::McGinley (line 17) ... ok [INFO] [stdout] test src/signals/indicators/max_favorable_excursion.rs - signals::indicators::max_favorable_excursion::MaxFavorableExcursion (line 27) ... ok [INFO] [stdout] test src/signals/indicators/median_body_size.rs - signals::indicators::median_body_size::MedianBodySize (line 22) ... ok [INFO] [stdout] test src/signals/indicators/market_regime.rs - signals::indicators::market_regime::MarketRegimeFilter (line 27) ... ok [INFO] [stdout] test src/signals/indicators/max_drawup_window.rs - signals::indicators::max_drawup_window::MaxDrawupWindow (line 21) ... ok [INFO] [stdout] test src/signals/indicators/marubozu_detector.rs - signals::indicators::marubozu_detector::MarubozuDetector (line 25) ... ok [INFO] [stdout] test src/signals/indicators/max_adverse_excursion.rs - signals::indicators::max_adverse_excursion::MaxAdverseExcursion (line 23) ... ok [INFO] [stdout] test src/signals/indicators/mass_index.rs - signals::indicators::mass_index::MassIndex (line 19) ... ok [INFO] [stdout] test src/signals/indicators/median_close_dev.rs - signals::indicators::median_close_dev::MedianCloseDev (line 22) ... ok [INFO] [stdout] test src/signals/indicators/median_return_deviation.rs - signals::indicators::median_return_deviation::MedianReturnDeviation (line 24) ... ok [INFO] [stdout] test src/signals/indicators/median_high_low.rs - signals::indicators::median_high_low::MedianHighLow (line 23) ... ok [INFO] [stdout] test src/signals/indicators/median_price.rs - signals::indicators::median_price::MedianPrice (line 20) ... ok [INFO] [stdout] test src/signals/indicators/max_drawdown_window.rs - signals::indicators::max_drawdown_window::MaxDrawdownWindow (line 23) ... ok [INFO] [stdout] test src/signals/indicators/median_volume.rs - signals::indicators::median_volume::MedianVolume (line 16) ... ok [INFO] [stdout] test src/signals/indicators/macd.rs - signals::indicators::macd::Macd (line 21) ... ok [INFO] [stdout] test src/signals/indicators/midpoint_oscillator.rs - signals::indicators::midpoint_oscillator::MidpointOscillator (line 23) ... ok [INFO] [stdout] test src/signals/indicators/momentum_quality.rs - signals::indicators::momentum_quality::MomentumQuality (line 26) ... ok [INFO] [stdout] test src/signals/indicators/momentum_streak.rs - signals::indicators::momentum_streak::MomentumStreak (line 21) ... ok [INFO] [stdout] test src/signals/indicators/momentum.rs - signals::indicators::momentum::Momentum (line 17) ... ok [INFO] [stdout] test src/signals/indicators/natr.rs - signals::indicators::natr::Natr (line 19) ... ok [INFO] [stdout] test src/signals/indicators/momentum_divergence.rs - signals::indicators::momentum_divergence::MomentumDivergence (line 22) ... ok [INFO] [stdout] test src/signals/indicators/momentum_oscillator.rs - signals::indicators::momentum_oscillator::MomentumOscillator (line 22) ... ok [INFO] [stdout] test src/signals/indicators/net_bar_bias.rs - signals::indicators::net_bar_bias::NetBarBias (line 20) ... ok [INFO] [stdout] test src/signals/indicators/mfi.rs - signals::indicators::mfi::Mfi (line 23) ... ok [INFO] [stdout] test src/signals/indicators/morning_star.rs - signals::indicators::morning_star::MorningStar (line 22) ... ok [INFO] [stdout] test src/signals/indicators/momentum_regime.rs - signals::indicators::momentum_regime::MomentumRegime (line 29) ... ok [INFO] [stdout] test src/signals/indicators/negative_volume_index.rs - signals::indicators::negative_volume_index::NegativeVolumeIndex (line 20) ... ok [INFO] [stdout] test src/signals/indicators/narrow_range_bar.rs - signals::indicators::narrow_range_bar::NarrowRangeBar (line 18) ... ok [INFO] [stdout] test src/signals/indicators/mesa_adaptive_ma.rs - signals::indicators::mesa_adaptive_ma::MesaAdaptiveMa (line 28) ... ok [INFO] [stdout] test src/signals/indicators/obv_momentum.rs - signals::indicators::obv_momentum::ObvMomentum (line 25) ... ok [INFO] [stdout] test src/signals/indicators/ohlc_spread.rs - signals::indicators::ohlc_spread::OhlcSpread (line 18) ... ok [INFO] [stdout] test src/signals/indicators/net_body_accumulation.rs - signals::indicators::net_body_accumulation::NetBodyAccumulation (line 23) ... ok [INFO] [stdout] test src/signals/indicators/new_high_streak.rs - signals::indicators::new_high_streak::NewHighStreak (line 21) ... ok [INFO] [stdout] test src/signals/indicators/net_volume.rs - signals::indicators::net_volume::NetVolume (line 23) ... ok [INFO] [stdout] test src/signals/indicators/normalized_atr.rs - signals::indicators::normalized_atr::NormalizedAtr (line 25) ... ok [INFO] [stdout] test src/signals/indicators/obv.rs - signals::indicators::obv::Obv (line 16) ... ok [INFO] [stdout] test src/signals/indicators/nvi.rs - signals::indicators::nvi::Nvi (line 18) ... ok [INFO] [stdout] test src/signals/indicators/new_high_pct.rs - signals::indicators::new_high_pct::NewHighPct (line 23) ... ok [INFO] [stdout] test src/signals/indicators/normalized_volume.rs - signals::indicators::normalized_volume::NormalizedVolume (line 18) ... ok [INFO] [stdout] test src/signals/indicators/normalized_momentum.rs - signals::indicators::normalized_momentum::NormalizedMomentum (line 19) ... ok [INFO] [stdout] test src/signals/indicators/normalized_price.rs - signals::indicators::normalized_price::NormalizedPrice (line 19) ... ok [INFO] [stdout] test src/signals/indicators/net_high_low_count.rs - signals::indicators::net_high_low_count::NetHighLowCount (line 28) ... ok [INFO] [stdout] test src/signals/indicators/open_above_prev_close.rs - signals::indicators::open_above_prev_close::OpenAbovePrevClose (line 21) ... ok [INFO] [stdout] test src/signals/indicators/new_low_pct.rs - signals::indicators::new_low_pct::NewLowPct (line 20) ... ok [INFO] [stdout] test src/signals/indicators/on_balance_volume_ma.rs - signals::indicators::on_balance_volume_ma::OnBalanceVolumeMA (line 24) ... ok [INFO] [stdout] test src/signals/indicators/open_close_balance.rs - signals::indicators::open_close_balance::OpenCloseBalance (line 32) ... ok [INFO] [stdout] test src/signals/indicators/open_drive.rs - signals::indicators::open_drive::OpenDrive (line 22) ... ok [INFO] [stdout] test src/signals/indicators/open_high_ratio.rs - signals::indicators::open_high_ratio::OpenHighRatio (line 21) ... ok [INFO] [stdout] test src/signals/indicators/open_close_pressure.rs - signals::indicators::open_close_pressure::OpenClosePressure (line 29) ... ok [INFO] [stdout] test src/signals/indicators/open_close_spread.rs - signals::indicators::open_close_spread::OpenCloseSpread (line 17) ... ok [INFO] [stdout] test src/signals/indicators/open_gap_pct.rs - signals::indicators::open_gap_pct::OpenGapPct (line 17) ... ok [INFO] [stdout] test src/signals/indicators/open_close_velocity.rs - signals::indicators::open_close_velocity::OpenCloseVelocity (line 30) ... ok [INFO] [stdout] test src/signals/indicators/open_gap_direction.rs - signals::indicators::open_gap_direction::OpenGapDirection (line 17) ... ok [INFO] [stdout] test src/signals/indicators/open_interest_proxy.rs - signals::indicators::open_interest_proxy::OpenInterestProxy (line 27) ... ok [INFO] [stdout] test src/signals/indicators/open_midpoint_bias.rs - signals::indicators::open_midpoint_bias::OpenMidpointBias (line 28) ... ok [INFO] [stdout] test src/signals/indicators/open_midpoint_deviation.rs - signals::indicators::open_midpoint_deviation::OpenMidpointDeviation (line 22) ... ok [INFO] [stdout] test src/signals/indicators/open_close_gap.rs - signals::indicators::open_close_gap::OpenCloseGap (line 30) ... ok [INFO] [stdout] test src/signals/indicators/open_close_momentum.rs - signals::indicators::open_close_momentum::OpenCloseMomentum (line 21) ... ok [INFO] [stdout] test src/signals/indicators/open_range_position.rs - signals::indicators::open_range_position::OpenRangePosition (line 28) ... ok [INFO] [stdout] test src/signals/indicators/outside_bar_count.rs - signals::indicators::outside_bar_count::OutsideBarCount (line 23) ... ok [INFO] [stdout] test src/signals/indicators/open_to_close_ratio.rs - signals::indicators::open_to_close_ratio::OpenToCloseRatio (line 17) ... ok [INFO] [stdout] test src/signals/indicators/open_vs_prev_close.rs - signals::indicators::open_vs_prev_close::OpenVsPrevClose (line 19) ... ok [INFO] [stdout] test src/signals/indicators/overnight_return.rs - signals::indicators::overnight_return::OvernightReturn (line 22) ... ok [INFO] [stdout] test src/signals/indicators/pfe.rs - signals::indicators::pfe::Pfe (line 22) ... ok [INFO] [stdout] test src/signals/indicators/payoff_ratio.rs - signals::indicators::payoff_ratio::PayoffRatio (line 24) ... ok [INFO] [stdout] test src/signals/indicators/parkinson_volatility.rs - signals::indicators::parkinson_volatility::ParkinsonVolatility (line 19) ... ok [INFO] [stdout] test src/signals/indicators/percent_rank.rs - signals::indicators::percent_rank::PercentRank (line 19) ... ok [INFO] [stdout] test src/signals/indicators/open_range_strength.rs - signals::indicators::open_range_strength::OpenRangeStrength (line 30) ... ok [INFO] [stdout] test src/signals/indicators/pivot_point.rs - signals::indicators::pivot_point::PivotPoint (line 19) ... ok [INFO] [stdout] test src/signals/indicators/pivot_distance.rs - signals::indicators::pivot_distance::PivotDistance (line 21) ... ok [INFO] [stdout] test src/signals/indicators/piercing_line.rs - signals::indicators::piercing_line::PiercingLine (line 21) ... ok [INFO] [stdout] test src/signals/indicators/pivot_strength.rs - signals::indicators::pivot_strength::PivotStrength (line 26) ... ok [INFO] [stdout] test src/signals/indicators/positive_volume_index.rs - signals::indicators::positive_volume_index::PositiveVolumeIndex (line 20) ... ok [INFO] [stdout] test src/signals/indicators/pgo.rs - signals::indicators::pgo::Pgo (line 15) ... ok [INFO] [stdout] test src/signals/indicators/pmo.rs - signals::indicators::pmo::Pmo (line 22) ... ok [INFO] [stdout] test src/signals/indicators/ppo.rs - signals::indicators::ppo::Ppo (line 16) ... ok [INFO] [stdout] test src/signals/indicators/pivots.rs - signals::indicators::pivots::Pivots (line 23) ... ok [INFO] [stdout] test src/signals/indicators/percent_rank_range.rs - signals::indicators::percent_rank_range::PercentRankRange (line 29) ... ok [INFO] [stdout] test src/signals/indicators/price_above_ma.rs - signals::indicators::price_above_ma::PriceAboveMa (line 22) ... ok [INFO] [stdout] test src/signals/indicators/price_action_index.rs - signals::indicators::price_action_index::PriceActionIndex (line 26) ... ok [INFO] [stdout] test src/signals/indicators/price_above_rolling_high.rs - signals::indicators::price_above_rolling_high::PriceAboveRollingHigh (line 17) ... ok [INFO] [stdout] test src/signals/indicators/price_above_ma_pct.rs - signals::indicators::price_above_ma_pct::PriceAboveMaPct (line 22) ... ok [INFO] [stdout] test src/signals/indicators/price_bandwidth.rs - signals::indicators::price_bandwidth::PriceBandwidth (line 23) ... ok [INFO] [stdout] test src/signals/indicators/price_change_pct.rs - signals::indicators::price_change_pct::PriceChangePct (line 17) ... ok [INFO] [stdout] test src/signals/indicators/price_channel.rs - signals::indicators::price_channel::PriceChannel (line 16) ... ok [INFO] [stdout] test src/signals/indicators/price_change_mad.rs - signals::indicators::price_change_mad::PriceChangeMad (line 32) ... ok [INFO] [stdout] test src/signals/indicators/price_acceleration.rs - signals::indicators::price_acceleration::PriceAcceleration (line 20) ... ok [INFO] [stdout] test src/signals/indicators/price_channel_width.rs - signals::indicators::price_channel_width::PriceChannelWidth (line 21) ... ok [INFO] [stdout] test src/signals/indicators/price_gap_momentum.rs - signals::indicators::price_gap_momentum::PriceGapMomentum (line 22) ... ok [INFO] [stdout] test src/signals/indicators/price_compression_breakout.rs - signals::indicators::price_compression_breakout::PriceCompressionBreakout (line 23) ... ok [INFO] [stdout] test src/signals/indicators/price_distance_ma.rs - signals::indicators::price_distance_ma::PriceDistanceMa (line 23) ... ok [INFO] [stdout] test src/signals/indicators/price_compression_index.rs - signals::indicators::price_compression_index::PriceCompressionIndex (line 23) ... ok [INFO] [stdout] test src/signals/indicators/price_density.rs - signals::indicators::price_density::PriceDensity (line 23) ... ok [INFO] [stdout] test src/signals/indicators/price_compression_streak.rs - signals::indicators::price_compression_streak::PriceCompressionStreak (line 25) ... ok [INFO] [stdout] test src/signals/indicators/price_excursion.rs - signals::indicators::price_excursion::PriceExcursion (line 22) ... ok [INFO] [stdout] test src/signals/indicators/price_envelope.rs - signals::indicators::price_envelope::PriceEnvelope (line 23) ... ok [INFO] [stdout] test src/signals/indicators/price_compression.rs - signals::indicators::price_compression::PriceCompression (line 23) ... ok [INFO] [stdout] test src/signals/indicators/price_gap_frequency.rs - signals::indicators::price_gap_frequency::PriceGapFrequency (line 20) ... ok [INFO] [stdout] test src/signals/indicators/price_gap.rs - signals::indicators::price_gap::PriceGap (line 21) ... ok [INFO] [stdout] test src/signals/indicators/price_gravity.rs - signals::indicators::price_gravity::PriceGravity (line 22) ... ok [INFO] [stdout] test src/signals/indicators/price_entropy.rs - signals::indicators::price_entropy::PriceEntropy (line 20) ... ok [INFO] [stdout] test src/signals/indicators/price_level_pct.rs - signals::indicators::price_level_pct::PriceLevelPct (line 24) ... ok [INFO] [stdout] test src/signals/indicators/price_range_momentum.rs - signals::indicators::price_range_momentum::PriceRangeMomentum (line 21) ... ok [INFO] [stdout] test src/signals/indicators/price_intensity.rs - signals::indicators::price_intensity::PriceIntensity (line 21) ... ok [INFO] [stdout] test src/signals/indicators/price_position.rs - signals::indicators::price_position::PricePosition (line 21) ... ok [INFO] [stdout] test src/signals/indicators/price_impulse.rs - signals::indicators::price_impulse::PriceImpulse (line 20) ... ok [INFO] [stdout] test src/signals/indicators/price_range_rank.rs - signals::indicators::price_range_rank::PriceRangeRank (line 20) ... ok [INFO] [stdout] test src/signals/indicators/price_oscillator2.rs - signals::indicators::price_oscillator2::PriceOscillator2 (line 24) ... ok [INFO] [stdout] test src/signals/indicators/price_return_skew.rs - signals::indicators::price_return_skew::PriceReturnSkew (line 27) ... ok [INFO] [stdout] test src/signals/indicators/price_level_oscillator.rs - signals::indicators::price_level_oscillator::PriceLevelOscillator (line 26) ... ok [INFO] [stdout] test src/signals/indicators/price_range_pct.rs - signals::indicators::price_range_pct::PriceRangePct (line 20) ... ok [INFO] [stdout] test src/signals/indicators/price_reversal_index.rs - signals::indicators::price_reversal_index::PriceReversalIndex (line 26) ... ok [INFO] [stdout] test src/signals/indicators/price_oscillator.rs - signals::indicators::price_oscillator::PriceOscillator (line 22) ... ok [INFO] [stdout] test src/signals/indicators/price_reversal_strength.rs - signals::indicators::price_reversal_strength::PriceReversalStrength (line 23) ... ok [INFO] [stdout] test src/signals/indicators/price_symmetry.rs - signals::indicators::price_symmetry::PriceSymmetry (line 18) ... ok [INFO] [stdout] test src/signals/indicators/price_spread_ratio.rs - signals::indicators::price_spread_ratio::PriceSpreadRatio (line 24) ... ok [INFO] [stdout] test src/signals/indicators/price_to_sma_ratio.rs - signals::indicators::price_to_sma_ratio::PriceToSmaRatio (line 20) ... ok [INFO] [stdout] test src/signals/indicators/price_velocity_score.rs - signals::indicators::price_velocity_score::PriceVelocityScore (line 24) ... ok [INFO] [stdout] test src/signals/indicators/price_path_efficiency.rs - signals::indicators::price_path_efficiency::PricePathEfficiency (line 22) ... ok [INFO] [stdout] test src/signals/indicators/price_volume_ratio.rs - signals::indicators::price_volume_ratio::PriceVolumeRatio (line 26) ... ok [INFO] [stdout] test src/signals/indicators/price_velocity_ratio.rs - signals::indicators::price_velocity_ratio::PriceVelocityRatio (line 19) ... ok [INFO] [stdout] test src/signals/indicators/price_zscore.rs - signals::indicators::price_zscore::PriceZScore (line 21) ... ok [INFO] [stdout] test src/signals/indicators/price_reversal.rs - signals::indicators::price_reversal::PriceReversal (line 22) ... ok [INFO] [stdout] test src/signals/indicators/price_volatility_ratio.rs - signals::indicators::price_volatility_ratio::PriceVolatilityRatio (line 33) ... ok [INFO] [stdout] test src/signals/indicators/profit_factor.rs - signals::indicators::profit_factor::ProfitFactor (line 22) ... ok [INFO] [stdout] test src/signals/indicators/psar.rs - signals::indicators::psar::ParabolicSar (line 18) ... ok [INFO] [stdout] test src/signals/indicators/price_momentum_rank.rs - signals::indicators::price_momentum_rank::PriceMomentumRank (line 25) ... ok [INFO] [stdout] test src/signals/indicators/range_breakout_count.rs - signals::indicators::range_breakout_count::RangeBreakoutCount (line 27) ... ok [INFO] [stdout] test src/signals/indicators/psychological_line.rs - signals::indicators::psychological_line::PsychologicalLine (line 18) ... ok [INFO] [stdout] test src/signals/indicators/range_contraction_count.rs - signals::indicators::range_contraction_count::RangeContractionCount (line 14) ... ok [INFO] [stdout] test src/signals/indicators/range_compression_ratio.rs - signals::indicators::range_compression_ratio::RangeCompressionRatio (line 22) ... ok [INFO] [stdout] test src/signals/indicators/pvo.rs - signals::indicators::pvo::Pvo (line 17) ... ok [INFO] [stdout] test src/signals/indicators/qqe.rs - signals::indicators::qqe::Qqe (line 27) ... ok [INFO] [stdout] test src/signals/indicators/range_position_oscillator.rs - signals::indicators::range_position_oscillator::RangePositionOscillator (line 35) ... ok [INFO] [stdout] test src/signals/indicators/range_efficiency.rs - signals::indicators::range_efficiency::RangeEfficiency (line 28) ... ok [INFO] [stdout] test src/signals/indicators/range_pct_of_close.rs - signals::indicators::range_pct_of_close::RangePctOfClose (line 17) ... ok [INFO] [stdout] test src/signals/indicators/range_contraction_index.rs - signals::indicators::range_contraction_index::RangeContractionIndex (line 30) ... ok [INFO] [stdout] test src/signals/indicators/range_midpoint_position.rs - signals::indicators::range_midpoint_position::RangeMidpointPosition (line 22) ... ok [INFO] [stdout] test src/signals/indicators/range_filter.rs - signals::indicators::range_filter::RangeFilter (line 25) ... ok [INFO] [stdout] test src/signals/indicators/range_pressure_index.rs - signals::indicators::range_pressure_index::RangePressureIndex (line 33) ... ok [INFO] [stdout] test src/signals/indicators/range_percentile.rs - signals::indicators::range_percentile::RangePercentile (line 24) ... ok [INFO] [stdout] test src/signals/indicators/range_ratio.rs - signals::indicators::range_ratio::RangeRatio (line 22) ... ok [INFO] [stdout] test src/signals/indicators/range_expansion_rate.rs - signals::indicators::range_expansion_rate::RangeExpansionRate (line 30) ... ok [INFO] [stdout] test src/signals/indicators/range_to_atr_ratio.rs - signals::indicators::range_to_atr_ratio::RangeToAtrRatio (line 26) ... ok [INFO] [stdout] test src/signals/indicators/rate_of_change_pct.rs - signals::indicators::rate_of_change_pct::RateOfChangePct (line 20) ... ok [INFO] [stdout] test src/signals/indicators/range_volatility_ratio.rs - signals::indicators::range_volatility_ratio::RangeVolatilityRatio (line 32) ... ok [INFO] [stdout] test src/signals/indicators/return_consistency.rs - signals::indicators::return_consistency::ReturnConsistency (line 29) ... ok [INFO] [stdout] test src/signals/indicators/relative_volatility.rs - signals::indicators::relative_volatility::RelativeVolatility (line 22) ... ok [INFO] [stdout] test src/signals/indicators/relative_close.rs - signals::indicators::relative_close::RelativeClose (line 20) ... ok [INFO] [stdout] test src/signals/indicators/relative_volume_rank.rs - signals::indicators::relative_volume_rank::RelativeVolumeRank (line 19) ... ok [INFO] [stdout] test src/signals/indicators/relative_volume_score.rs - signals::indicators::relative_volume_score::RelativeVolumeScore (line 19) ... ok [INFO] [stdout] test src/signals/indicators/return_concentration.rs - signals::indicators::return_concentration::ReturnConcentration (line 25) ... ok [INFO] [stdout] test src/signals/indicators/return_above_zero_pct.rs - signals::indicators::return_above_zero_pct::ReturnAboveZeroPct (line 17) ... ok [INFO] [stdout] test src/signals/indicators/return_iqr.rs - signals::indicators::return_iqr::ReturnIqr (line 22) ... ok [INFO] [stdout] test src/signals/indicators/relative_bar_range.rs - signals::indicators::relative_bar_range::RelativeBarRange (line 22) ... ok [INFO] [stdout] test src/signals/indicators/relative_range_rank.rs - signals::indicators::relative_range_rank::RelativeRangeRank (line 23) ... ok [INFO] [stdout] test src/signals/indicators/return_kurtosis.rs - signals::indicators::return_kurtosis::ReturnKurtosis (line 31) ... ok [INFO] [stdout] test src/signals/indicators/range_trend_slope.rs - signals::indicators::range_trend_slope::RangeTrendSlope (line 23) ... ok [INFO] [stdout] test src/signals/indicators/return_mean_deviation.rs - signals::indicators::return_mean_deviation::ReturnMeanDeviation (line 23) ... ok [INFO] [stdout] test src/signals/indicators/regime_volatility.rs - signals::indicators::regime_volatility::RegimeVolatility (line 20) ... ok [INFO] [stdout] test src/signals/indicators/rogers_satchell_volatility.rs - signals::indicators::rogers_satchell_volatility::RogersSatchellVolatility (line 20) ... ok [INFO] [stdout] test src/signals/indicators/return_percent_rank.rs - signals::indicators::return_percent_rank::ReturnPercentRank (line 23) ... ok [INFO] [stdout] test src/signals/indicators/rolling_beta.rs - signals::indicators::rolling_beta::RollingBeta (line 29) ... ok [INFO] [stdout] test src/signals/indicators/rmi.rs - signals::indicators::rmi::Rmi (line 20) ... ok [INFO] [stdout] test src/signals/indicators/return_sign_changes.rs - signals::indicators::return_sign_changes::ReturnSignChanges (line 17) ... ok [INFO] [stdout] test src/signals/indicators/roc_ratio.rs - signals::indicators::roc_ratio::RocRatio (line 23) ... ok [INFO] [stdout] test src/signals/indicators/roc.rs - signals::indicators::roc::Roc (line 16) ... ok [INFO] [stdout] test src/signals/indicators/rolling_high_low_position.rs - signals::indicators::rolling_high_low_position::RollingHighLowPosition (line 22) ... ok [INFO] [stdout] test src/signals/indicators/rolling_correlation.rs - signals::indicators::rolling_correlation::RollingCorrelation (line 20) ... ok [INFO] [stdout] test src/signals/indicators/return_over_volatility.rs - signals::indicators::return_over_volatility::ReturnOverVolatility (line 22) ... ok [INFO] [stdout] test src/signals/indicators/rolling_low_break.rs - signals::indicators::rolling_low_break::RollingLowBreak (line 22) ... ok [INFO] [stdout] test src/signals/indicators/rolling_mad.rs - signals::indicators::rolling_mad::RollingMAD (line 17) ... ok [INFO] [stdout] test src/signals/indicators/return_persistence.rs - signals::indicators::return_persistence::ReturnPersistence (line 24) ... ok [INFO] [stdout] test src/signals/indicators/rolling_high_low_ratio.rs - signals::indicators::rolling_high_low_ratio::RollingHighLowRatio (line 21) ... ok [INFO] [stdout] test src/signals/indicators/rolling_kurtosis.rs - signals::indicators::rolling_kurtosis::RollingKurtosis (line 20) ... ok [INFO] [stdout] test src/signals/indicators/rolling_min_return.rs - signals::indicators::rolling_min_return::RollingMinReturn (line 20) ... ok [INFO] [stdout] test src/signals/indicators/rsi_divergence.rs - signals::indicators::rsi_divergence::RsiDivergence (line 22) ... ok [INFO] [stdout] test src/signals/indicators/rolling_open_bias.rs - signals::indicators::rolling_open_bias::RollingOpenBias (line 22) ... ok [INFO] [stdout] test src/signals/indicators/rolling_max_return.rs - signals::indicators::rolling_max_return::RollingMaxReturn (line 20) ... ok [INFO] [stdout] test src/signals/indicators/rolling_shadow_balance.rs - signals::indicators::rolling_shadow_balance::RollingShadowBalance (line 28) ... ok [INFO] [stdout] test src/signals/indicators/rolling_max_dd.rs - signals::indicators::rolling_max_dd::RollingMaxDd (line 21) ... ok [INFO] [stdout] test src/signals/indicators/rolling_volume_cv.rs - signals::indicators::rolling_volume_cv::RollingVolumeCV (line 19) ... ok [INFO] [stdout] test src/signals/indicators/roc_acceleration.rs - signals::indicators::roc_acceleration::RocAcceleration (line 29) ... ok [INFO] [stdout] test src/signals/indicators/rsi.rs - signals::indicators::rsi::Rsi (line 23) ... ok [INFO] [stdout] test src/signals/indicators/rolling_skew_returns.rs - signals::indicators::rolling_skew_returns::RollingSkewReturns (line 25) ... ok [INFO] [stdout] test src/signals/indicators/rsi_ma.rs - signals::indicators::rsi_ma::RsiMa (line 19) ... ok [INFO] [stdout] test src/signals/indicators/shadow_imbalance.rs - signals::indicators::shadow_imbalance::ShadowImbalance (line 23) ... ok [INFO] [stdout] test src/signals/indicators/rsi_stochastic.rs - signals::indicators::rsi_stochastic::RsiStochastic (line 24) ... ok [INFO] [stdout] test src/signals/indicators/rvi.rs - signals::indicators::rvi::Rvi (line 22) ... ok [INFO] [stdout] test src/signals/indicators/rsx.rs - signals::indicators::rsx::Rsx (line 22) ... ok [INFO] [stdout] test src/signals/indicators/rsi_slope.rs - signals::indicators::rsi_slope::RsiSlope (line 18) ... ok [INFO] [stdout] test src/signals/indicators/slope_oscillator.rs - signals::indicators::slope_oscillator::SlopeOscillator (line 22) ... ok [INFO] [stdout] test src/signals/indicators/sharpe_ratio.rs - signals::indicators::sharpe_ratio::SharpeRatio (line 29) ... ok [INFO] [stdout] test src/signals/indicators/rwi.rs - signals::indicators::rwi::Rwi (line 22) ... ok [INFO] [stdout] test src/signals/indicators/signed_gap_sum.rs - signals::indicators::signed_gap_sum::SignedGapSum (line 18) ... ok [INFO] [stdout] test src/signals/indicators/sma_distance_pct.rs - signals::indicators::sma_distance_pct::SmaDistancePct (line 23) ... ok [INFO] [stdout] test src/signals/indicators/sma.rs - signals::indicators::sma::Sma (line 13) ... ok [INFO] [stdout] test src/signals/indicators/signed_body_ratio.rs - signals::indicators::signed_body_ratio::SignedBodyRatio (line 33) ... ok [INFO] [stdout] test src/signals/indicators/smi.rs - signals::indicators::smi::Smi (line 29) ... ok [INFO] [stdout] test src/signals/indicators/sortino_ratio.rs - signals::indicators::sortino_ratio::SortinoRatio (line 30) ... ok [INFO] [stdout] test src/signals/indicators/std_dev_channel.rs - signals::indicators::std_dev_channel::StdDevChannel (line 22) ... ok [INFO] [stdout] test src/signals/indicators/stc.rs - signals::indicators::stc::Stc (line 22) ... ok [INFO] [stdout] test src/signals/indicators/shadow_pressure.rs - signals::indicators::shadow_pressure::ShadowPressure (line 23) ... ok [INFO] [stdout] test src/signals/indicators/smma.rs - signals::indicators::smma::Smma (line 18) ... ok [INFO] [stdout] test src/signals/indicators/spinning_top.rs - signals::indicators::spinning_top::SpinningTop (line 26) ... ok [INFO] [stdout] test src/signals/indicators/stiffness.rs - signals::indicators::stiffness::Stiffness (line 22) ... ok [INFO] [stdout] test src/signals/indicators/stddev.rs - signals::indicators::stddev::StdDev (line 14) ... ok [INFO] [stdout] test src/signals/indicators/stochastic.rs - signals::indicators::stochastic::StochasticK (line 26) ... ok [INFO] [stdout] test src/signals/indicators/smoothed_rsi.rs - signals::indicators::smoothed_rsi::SmoothedRsi (line 20) ... ok [INFO] [stdout] test src/signals/indicators/supertrend.rs - signals::indicators::supertrend::SuperTrend (line 22) ... ok [INFO] [stdout] test src/signals/indicators/support_resistance_distance.rs - signals::indicators::support_resistance_distance::SupportResistanceDistance (line 23) ... ok [INFO] [stdout] test src/signals/indicators/swing_index.rs - signals::indicators::swing_index::SwingIndex (line 25) ... ok [INFO] [stdout] test src/signals/indicators/stoch_rsi_smoothed.rs - signals::indicators::stoch_rsi_smoothed::StochRsiSmoothed (line 21) ... ok [INFO] [stdout] test src/signals/indicators/tail_ratio_pct.rs - signals::indicators::tail_ratio_pct::TailRatioPct (line 18) ... ok [INFO] [stdout] test src/signals/indicators/swing_point_detector.rs - signals::indicators::swing_point_detector::SwingPointDetector (line 28) ... ok [INFO] [stdout] test src/signals/indicators/tema.rs - signals::indicators::tema::Tema (line 17) ... ok [INFO] [stdout] test src/signals/indicators/three_bar_pattern.rs - signals::indicators::three_bar_pattern::ThreeBarPattern (line 26) ... ok [INFO] [stdout] test src/signals/indicators/stoch_rsi.rs - signals::indicators::stoch_rsi::StochRsi (line 25) ... ok [INFO] [stdout] test src/signals/indicators/three_white_soldiers.rs - signals::indicators::three_white_soldiers::ThreeWhiteSoldiers (line 26) ... ok [INFO] [stdout] test src/signals/indicators/td_sequential.rs - signals::indicators::td_sequential::TdSequential (line 25) ... ok [INFO] [stdout] test src/signals/indicators/t3.rs - signals::indicators::t3::T3 (line 20) ... ok [INFO] [stdout] test src/signals/indicators/tick_move_ratio.rs - signals::indicators::tick_move_ratio::TickMoveRatio (line 25) ... ok [INFO] [stdout] test src/signals/indicators/tii.rs - signals::indicators::tii::Tii (line 28) ... ok [INFO] [stdout] test src/signals/indicators/three_black_crows.rs - signals::indicators::three_black_crows::ThreeBlackCrows (line 26) ... ok [INFO] [stdout] test src/signals/indicators/trend_acceleration.rs - signals::indicators::trend_acceleration::TrendAcceleration (line 22) ... ok [INFO] [stdout] test src/signals/indicators/trend_angle.rs - signals::indicators::trend_angle::TrendAngle (line 22) ... ok [INFO] [stdout] test src/signals/indicators/trend_bias_index.rs - signals::indicators::trend_bias_index::TrendBiasIndex (line 32) ... ok [INFO] [stdout] test src/signals/indicators/stochastic_d.rs - signals::indicators::stochastic_d::StochasticD (line 20) ... ok [INFO] [stdout] test src/signals/indicators/trend_age.rs - signals::indicators::trend_age::TrendAge (line 19) ... ok [INFO] [stdout] test src/signals/indicators/swma.rs - signals::indicators::swma::Swma (line 17) ... ok [INFO] [stdout] test src/signals/indicators/trend_consistency.rs - signals::indicators::trend_consistency::TrendConsistency (line 24) ... ok [INFO] [stdout] test src/signals/indicators/trend_magic.rs - signals::indicators::trend_magic::TrendMagic (line 26) ... ok [INFO] [stdout] test src/signals/indicators/trend_purity.rs - signals::indicators::trend_purity::TrendPurity (line 25) ... ok [INFO] [stdout] test src/signals/indicators/trend_persistence.rs - signals::indicators::trend_persistence::TrendPersistence (line 22) ... ok [INFO] [stdout] test src/signals/indicators/trend_exhaustion.rs - signals::indicators::trend_exhaustion::TrendExhaustion (line 25) ... ok [INFO] [stdout] test src/signals/indicators/trend_strength_index.rs - signals::indicators::trend_strength_index::TrendStrengthIndex (line 32) ... ok [INFO] [stdout] test src/signals/indicators/trix.rs - signals::indicators::trix::Trix (line 19) ... ok [INFO] [stdout] test src/signals/indicators/trend_following_filter.rs - signals::indicators::trend_following_filter::TrendFollowingFilter (line 24) ... ok [INFO] [stdout] test src/signals/indicators/trend_strength.rs - signals::indicators::trend_strength::TrendStrength (line 21) ... ok [INFO] [stdout] test src/signals/indicators/tsi.rs - signals::indicators::tsi::Tsi (line 20) ... ok [INFO] [stdout] test src/signals/indicators/trima.rs - signals::indicators::trima::Trima (line 19) ... ok [INFO] [stdout] test src/signals/indicators/tweezer_bottom.rs - signals::indicators::tweezer_bottom::TweezerBottom (line 23) ... ok [INFO] [stdout] test src/signals/indicators/ttm_squeeze.rs - signals::indicators::ttm_squeeze::TtmSqueeze (line 27) ... ok [INFO] [stdout] test src/signals/indicators/typical_price.rs - signals::indicators::typical_price::TypicalPriceMa (line 21) ... ok [INFO] [stdout] test src/signals/indicators/trend_score.rs - signals::indicators::trend_score::TrendScore (line 21) ... ok [INFO] [stdout] test src/signals/indicators/true_range_expansion.rs - signals::indicators::true_range_expansion::TrueRangeExpansion (line 21) ... ok [INFO] [stdout] test src/signals/indicators/true_range_zscore.rs - signals::indicators::true_range_zscore::TrueRangeZScore (line 24) ... ok [INFO] [stdout] test src/signals/indicators/tweezer_top.rs - signals::indicators::tweezer_top::TweezerTop (line 24) ... ok [INFO] [stdout] test src/signals/indicators/typical_price_roc.rs - signals::indicators::typical_price_roc::TypicalPriceRoc (line 27) ... ok [INFO] [stdout] test src/signals/indicators/ulcer_index.rs - signals::indicators::ulcer_index::UlcerIndex (line 22) ... ok [INFO] [stdout] test src/signals/indicators/true_range_ratio.rs - signals::indicators::true_range_ratio::TrueRangeRatio (line 21) ... ok [INFO] [stdout] test src/signals/indicators/true_range_ema.rs - signals::indicators::true_range_ema::TrueRangeEma (line 21) ... ok [INFO] [stdout] test src/signals/indicators/up_bar_ratio.rs - signals::indicators::up_bar_ratio::UpBarRatio (line 21) ... ok [INFO] [stdout] test src/signals/indicators/upper_to_lower_wick.rs - signals::indicators::upper_to_lower_wick::UpperToLowerWick (line 21) ... ok [INFO] [stdout] test src/signals/indicators/up_momentum_pct.rs - signals::indicators::up_momentum_pct::UpMomentumPct (line 21) ... ok [INFO] [stdout] test src/signals/indicators/up_down_volume_ratio.rs - signals::indicators::up_down_volume_ratio::UpDownVolumeRatio (line 19) ... ok [INFO] [stdout] test src/signals/indicators/upper_shadow_ratio.rs - signals::indicators::upper_shadow_ratio::UpperShadowRatio (line 18) ... ok [INFO] [stdout] test src/signals/indicators/vam.rs - signals::indicators::vam::Vam (line 24) ... ok [INFO] [stdout] test src/signals/indicators/ultimate.rs - signals::indicators::ultimate::UltimateOscillator (line 21) ... ok [INFO] [stdout] test src/signals/indicators/vhf.rs - signals::indicators::vhf::Vhf (line 18) ... ok [INFO] [stdout] test src/signals/indicators/usm.rs - signals::indicators::usm::Usm (line 25) ... ok [INFO] [stdout] test src/signals/indicators/value_at_risk5.rs - signals::indicators::value_at_risk5::ValueAtRisk5 (line 22) ... ok [INFO] [stdout] test src/signals/indicators/upper_wick_streak.rs - signals::indicators::upper_wick_streak::UpperWickStreak (line 33) ... ok [INFO] [stdout] test src/signals/indicators/vix_fix.rs - signals::indicators::vix_fix::VixFix (line 19) ... ok [INFO] [stdout] test src/signals/indicators/vidya.rs - signals::indicators::vidya::Vidya (line 20) ... ok [INFO] [stdout] test src/signals/indicators/variance_ratio.rs - signals::indicators::variance_ratio::VarianceRatio (line 27) ... ok [INFO] [stdout] test src/signals/indicators/up_close_streak.rs - signals::indicators::up_close_streak::UpCloseStreak (line 25) ... ok [INFO] [stdout] test src/signals/indicators/upper_wick_ratio.rs - signals::indicators::upper_wick_ratio::UpperWickRatio (line 28) ... ok [INFO] [stdout] test src/signals/indicators/volatility_bands.rs - signals::indicators::volatility_bands::VolatilityBands (line 25) ... ok [INFO] [stdout] test src/signals/indicators/volatility_break.rs - signals::indicators::volatility_break::VolatilityBreak (line 21) ... ok [INFO] [stdout] test src/signals/indicators/volatility_compression.rs - signals::indicators::volatility_compression::VolatilityCompression (line 24) ... ok [INFO] [stdout] test src/signals/indicators/volatility_of_volatility.rs - signals::indicators::volatility_of_volatility::VolatilityOfVolatility (line 24) ... ok [INFO] [stdout] test src/signals/indicators/volatility_stop.rs - signals::indicators::volatility_stop::VolatilityStop (line 23) ... ok [INFO] [stdout] test src/signals/indicators/volatility_percentile.rs - signals::indicators::volatility_percentile::VolatilityPercentile (line 18) ... ok [INFO] [stdout] test src/signals/indicators/volatility_adjusted_range.rs - signals::indicators::volatility_adjusted_range::VolatilityAdjustedRange (line 22) ... ok [INFO] [stdout] test src/signals/indicators/volatility_bias.rs - signals::indicators::volatility_bias::VolatilityBias (line 33) ... ok [INFO] [stdout] test src/signals/indicators/vol_normalized_return.rs - signals::indicators::vol_normalized_return::VolNormalizedReturn (line 23) ... ok [INFO] [stdout] test src/signals/indicators/volatility_momentum.rs - signals::indicators::volatility_momentum::VolatilityMomentum (line 18) ... ok [INFO] [stdout] test src/signals/indicators/volume_acceleration.rs - signals::indicators::volume_acceleration::VolumeAcceleration (line 19) ... ok [INFO] [stdout] test src/signals/indicators/volatility_skew.rs - signals::indicators::volatility_skew::VolatilitySkew (line 28) ... ok [INFO] [stdout] test src/signals/indicators/volume_acceleration_index.rs - signals::indicators::volume_acceleration_index::VolumeAccelerationIndex (line 25) ... ok [INFO] [stdout] test src/signals/indicators/volume_delta_ema.rs - signals::indicators::volume_delta_ema::VolumeDeltaEma (line 31) ... ok [INFO] [stdout] test src/signals/indicators/volume_density.rs - signals::indicators::volume_density::VolumeDensity (line 22) ... ok [INFO] [stdout] test src/signals/indicators/volatility_ratio.rs - signals::indicators::volatility_ratio::VolatilityRatio (line 22) ... ok [INFO] [stdout] test src/signals/indicators/volume_delta_ratio.rs - signals::indicators::volume_delta_ratio::VolumeDeltaRatio (line 28) ... ok [INFO] [stdout] test src/signals/indicators/volume_cv.rs - signals::indicators::volume_cv::VolumeCv (line 29) ... ok [INFO] [stdout] test src/signals/indicators/volume_energy.rs - signals::indicators::volume_energy::VolumeEnergy (line 17) ... ok [INFO] [stdout] test src/signals/indicators/volume_climax_ratio.rs - signals::indicators::volume_climax_ratio::VolumeClimaxRatio (line 18) ... ok [INFO] [stdout] test src/signals/indicators/volume_consistency.rs - signals::indicators::volume_consistency::VolumeConsistency (line 29) ... ok [INFO] [stdout] test src/signals/indicators/volume_breadth.rs - signals::indicators::volume_breadth::VolumeBreadth (line 21) ... ok [INFO] [stdout] test src/signals/indicators/volume_at_close.rs - signals::indicators::volume_at_close::VolumeAtClose (line 36) ... ok [INFO] [stdout] test src/signals/indicators/volume_exhaustion.rs - signals::indicators::volume_exhaustion::VolumeExhaustion (line 20) ... ok [INFO] [stdout] test src/signals/indicators/volume_direction_ratio.rs - signals::indicators::volume_direction_ratio::VolumeDirectionRatio (line 21) ... ok [INFO] [stdout] test src/signals/indicators/volume_deviation.rs - signals::indicators::volume_deviation::VolumeDeviation (line 19) ... ok [INFO] [stdout] test src/signals/indicators/volume_price_corr.rs - signals::indicators::volume_price_corr::VolumePriceCorr (line 25) ... ok [INFO] [stdout] test src/signals/indicators/volume_momentum.rs - signals::indicators::volume_momentum::VolumeMomentum (line 21) ... ok [INFO] [stdout] test src/signals/indicators/volume_per_range.rs - signals::indicators::volume_per_range::VolumePerRange (line 16) ... ok [INFO] [stdout] test src/signals/indicators/volume_flow_ratio.rs - signals::indicators::volume_flow_ratio::VolumeFlowRatio (line 24) ... ok [INFO] [stdout] test src/signals/indicators/volume_momentum_oscillator.rs - signals::indicators::volume_momentum_oscillator::VolumeMomentumOscillator (line 29) ... ok [INFO] [stdout] test src/signals/indicators/volume_price_correlation.rs - signals::indicators::volume_price_correlation::VolumePriceCorrelation (line 26) ... ok [INFO] [stdout] test src/signals/indicators/volume_pressure_ratio.rs - signals::indicators::volume_pressure_ratio::VolumePressureRatio (line 25) ... ok [INFO] [stdout] test src/signals/indicators/volume_price_trend.rs - signals::indicators::volume_price_trend::VolumePriceTrend (line 23) ... ok [INFO] [stdout] test src/signals/indicators/volume_momentum_ratio.rs - signals::indicators::volume_momentum_ratio::VolumeMomentumRatio (line 28) ... ok [INFO] [stdout] test src/signals/indicators/volume_imbalance.rs - signals::indicators::volume_imbalance::VolumeImbalance (line 21) ... ok [INFO] [stdout] test src/signals/indicators/volume_price_efficiency.rs - signals::indicators::volume_price_efficiency::VolumePriceEfficiency (line 24) ... ok [INFO] [stdout] test src/signals/indicators/volume_ratio_signal.rs - signals::indicators::volume_ratio_signal::VolumeRatioSignal (line 18) ... ok [INFO] [stdout] test src/signals/indicators/volume_return_corr.rs - signals::indicators::volume_return_corr::VolumeReturnCorr (line 26) ... ok [INFO] [stdout] test src/signals/indicators/volume_price_rank.rs - signals::indicators::volume_price_rank::VolumePriceRank (line 27) ... ok [INFO] [stdout] test src/signals/indicators/volume_open_bias.rs - signals::indicators::volume_open_bias::VolumeOpenBias (line 23) ... ok [INFO] [stdout] test src/signals/indicators/volume_ratio_trend.rs - signals::indicators::volume_ratio_trend::VolumeRatioTrend (line 24) ... ok [INFO] [stdout] test src/signals/indicators/volume_rsi.rs - signals::indicators::volume_rsi::VolumeRsi (line 20) ... ok [INFO] [stdout] test src/signals/indicators/volume_spike.rs - signals::indicators::volume_spike::VolumeSpike (line 22) ... ok [INFO] [stdout] test src/signals/indicators/volume_surge.rs - signals::indicators::volume_surge::VolumeSurge (line 18) ... ok [INFO] [stdout] test src/signals/indicators/volume_trend.rs - signals::indicators::volume_trend::VolumeTrend (line 22) ... ok [INFO] [stdout] test src/signals/indicators/volume_surge_detector.rs - signals::indicators::volume_surge_detector::VolumeSurgeDetector (line 23) ... ok [INFO] [stdout] test src/signals/indicators/volume_trend_strength.rs - signals::indicators::volume_trend_strength::VolumeTrendStrength (line 30) ... ok [INFO] [stdout] test src/signals/indicators/volume_swing.rs - signals::indicators::volume_swing::VolumeSwing (line 27) ... ok [INFO] [stdout] test src/signals/indicators/volume_up_down_ratio.rs - signals::indicators::volume_up_down_ratio::VolumeUpDownRatio (line 23) ... ok [INFO] [stdout] test src/signals/indicators/volume_weighted_atr.rs - signals::indicators::volume_weighted_atr::VolumeWeightedAtr (line 22) ... ok [INFO] [stdout] test src/signals/indicators/volume_weighted_hl.rs - signals::indicators::volume_weighted_hl::VolumeWeightedHl (line 25) ... ok [INFO] [stdout] test src/signals/indicators/volume_surge2.rs - signals::indicators::volume_surge2::VolumeSurge2 (line 23) ... ok [INFO] [stdout] test src/signals/indicators/volume_weighted_return.rs - signals::indicators::volume_weighted_return::VolumeWeightedReturn (line 25) ... ok [INFO] [stdout] test src/signals/indicators/volume_weighted_range.rs - signals::indicators::volume_weighted_range::VolumeWeightedRange (line 19) ... ok [INFO] [stdout] test src/signals/indicators/volume_weighted_rsi.rs - signals::indicators::volume_weighted_rsi::VolumeWeightedRsi (line 25) ... ok [INFO] [stdout] test src/signals/indicators/volume_weighted_std_dev.rs - signals::indicators::volume_weighted_std_dev::VolumeWeightedStdDev (line 22) ... ok [INFO] [stdout] test src/signals/indicators/volume_weighted_volatility.rs - signals::indicators::volume_weighted_volatility::VolumeWeightedVolatility (line 30) ... ok [INFO] [stdout] test src/signals/indicators/volume_return_correlation.rs - signals::indicators::volume_return_correlation::VolumeReturnCorrelation (line 24) ... ok [INFO] [stdout] test src/signals/indicators/vpt.rs - signals::indicators::vpt::Vpt (line 15) ... ok [INFO] [stdout] test src/signals/indicators/volume_zscore.rs - signals::indicators::volume_zscore::VolumeZScore (line 23) ... ok [INFO] [stdout] test src/signals/indicators/vwma.rs - signals::indicators::vwma::Vwma (line 22) ... ok [INFO] [stdout] test src/signals/indicators/weighted_close.rs - signals::indicators::weighted_close::WeightedClose (line 21) ... ok [INFO] [stdout] test src/signals/indicators/vw_momentum.rs - signals::indicators::vw_momentum::VwMomentum (line 22) ... ok [INFO] [stdout] test src/signals/indicators/vroc.rs - signals::indicators::vroc::Vroc (line 21) ... ok [INFO] [stdout] test src/signals/indicators/vortex.rs - signals::indicators::vortex::Vortex (line 24) ... ok [INFO] [stdout] test src/signals/indicators/vzo.rs - signals::indicators::vzo::Vzo (line 24) ... ok [INFO] [stdout] test src/signals/indicators/weighted_close_roc.rs - signals::indicators::weighted_close_roc::WeightedCloseRoc (line 29) ... ok [INFO] [stdout] test src/signals/indicators/weighted_momentum.rs - signals::indicators::weighted_momentum::WeightedMomentum (line 21) ... ok [INFO] [stdout] test src/signals/indicators/wick_to_atr_ratio.rs - signals::indicators::wick_to_atr_ratio::WickToAtrRatio (line 23) ... ok [INFO] [stdout] test src/signals/indicators/wick_asymmetry_streak.rs - signals::indicators::wick_asymmetry_streak::WickAsymmetryStreak (line 23) ... ok [INFO] [stdout] test src/signals/indicators/wick_ratio.rs - signals::indicators::wick_ratio::WickRatio (line 26) ... ok [INFO] [stdout] test src/signals/indicators/vwap.rs - signals::indicators::vwap::Vwap (line 17) ... ok [INFO] [stdout] test src/signals/indicators/wick_imbalance.rs - signals::indicators::wick_imbalance::WickImbalance (line 21) ... ok [INFO] [stdout] test src/signals/indicators/wick_to_body_ratio.rs - signals::indicators::wick_to_body_ratio::WickToBodyRatio (line 19) ... ok [INFO] [stdout] test src/signals/indicators/williams_ad.rs - signals::indicators::williams_ad::WilliamsAD (line 19) ... ok [INFO] [stdout] test src/signals/indicators/wicks_vs_body_ratio.rs - signals::indicators::wicks_vs_body_ratio::WicksVsBodyRatio (line 33) ... ok [INFO] [stdout] test src/signals/indicators/zlema.rs - signals::indicators::zlema::Zlema (line 16) ... ok [INFO] [stdout] test src/signals/indicators/zigzag.rs - signals::indicators::zigzag::ZigZag (line 25) ... ok [INFO] [stdout] test src/signals/indicators/wma.rs - signals::indicators::wma::Wma (line 21) ... ok [INFO] [stdout] test src/signals/indicators/yang_zhang_volatility.rs - signals::indicators::yang_zhang_volatility::YangZhangVolatility (line 24) ... ok [INFO] [stdout] test src/signals/mod.rs - signals::SignalValue::and_then (line 280) ... ok [INFO] [stdout] test src/signals/mod.rs - signals::SignalValue::clamp (line 395) ... ok [INFO] [stdout] test src/signals/mod.rs - signals::SignalValue::cross_below (line 639) ... ok [INFO] [stdout] test src/signals/indicators/williams_r.rs - signals::indicators::williams_r::WilliamsR (line 16) ... ok [INFO] [stdout] test src/signals/indicators/zscore.rs - signals::indicators::zscore::Zscore (line 22) ... ok [INFO] [stdout] test src/signals/indicators/williams_fractal.rs - signals::indicators::williams_fractal::WilliamsFractal (line 26) ... ok [INFO] [stdout] test src/types/mod.rs - types::Price::snap_to_tick (line 204) ... ok [INFO] [stdout] test src/signals/mod.rs - signals::SignalValue::ln (line 587) ... ok [INFO] [stdout] test src/types/mod.rs - types::Price (line 130) ... ok [INFO] [stdout] test src/signals/mod.rs - signals::SignalValue::pct_of (line 661) ... ok [INFO] [stdout] test src/signals/mod.rs - signals::SignalValue::cross_above (line 619) ... ok [INFO] [stdout] test src/signals/mod.rs - signals::SignalValue::sqrt (line 535) ... ok [INFO] [stdout] test src/signals/mod.rs - signals::SignalValue::threshold_cross (line 690) ... ok [INFO] [stdout] test src/types/mod.rs - types::Symbol (line 28) ... ok [INFO] [stdout] test src/signals/mod.rs - signals::SignalValue::zip_with (line 232) ... ok [INFO] [stdout] test src/signals/mod.rs - signals::SignalValue::pow (line 564) ... ok [INFO] [stdout] test src/signals/mod.rs - signals::SignalValue::map (line 258) ... ok [INFO] [stdout] test src/types/mod.rs - types::Quantity (line 373) ... ok [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- src/signals/indicators/higher_timeframe_trend.rs - signals::indicators::higher_timeframe_trend::HigherTimeframeTrend (line 25) stdout ---- [INFO] [stdout] Test executable failed (exit status: 101). [INFO] [stdout] [INFO] [stdout] stderr: [INFO] [stdout] [INFO] [stdout] thread 'main' (11303) panicked at src/signals/indicators/higher_timeframe_trend.rs:8:1: [INFO] [stdout] assertion `left == right` failed [INFO] [stdout] left: 20 [INFO] [stdout] right: 25 [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x55a68558a4ca - std[31e582c13f4e914f]::backtrace_rs::backtrace::libunwind::trace [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x55a68558a4ca - std[31e582c13f4e914f]::backtrace_rs::backtrace::trace_unsynchronized:: [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x55a68558a4ca - std[31e582c13f4e914f]::sys::backtrace::_print_fmt [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/sys/backtrace.rs:74:9 [INFO] [stdout] 3: 0x55a68558a4ca - <::print::DisplayBacktrace as core[fa0eadad68403074]::fmt::Display>::fmt [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/sys/backtrace.rs:44:26 [INFO] [stdout] 4: 0x55a68559a41a - ::fmt [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/core/src/fmt/rt.rs:152:76 [INFO] [stdout] 5: 0x55a68559a41a - core[fa0eadad68403074]::fmt::write [INFO] [stdout] 6: 0x55a68558d842 - std[31e582c13f4e914f]::io::default_write_fmt:: [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x55a68558d842 - ::write_fmt [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/io/mod.rs:1994:13 [INFO] [stdout] 8: 0x55a68557652f - ::print [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/sys/backtrace.rs:47:9 [INFO] [stdout] 9: 0x55a68557652f - std[31e582c13f4e914f]::panicking::default_hook::{closure#0} [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:292:27 [INFO] [stdout] 10: 0x55a685586a41 - std[31e582c13f4e914f]::panicking::default_hook [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:319:9 [INFO] [stdout] 11: 0x55a685586bfb - std[31e582c13f4e914f]::panicking::panic_with_hook [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:825:13 [INFO] [stdout] 12: 0x55a6855765e8 - std[31e582c13f4e914f]::panicking::panic_handler::{closure#0} [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:698:13 [INFO] [stdout] 13: 0x55a68556bbd9 - std[31e582c13f4e914f]::sys::backtrace::__rust_end_short_backtrace:: [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/sys/backtrace.rs:182:18 [INFO] [stdout] 14: 0x55a685576dcd - __rustc[fc8e3a9f23f26cb]::rust_begin_unwind [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:689:5 [INFO] [stdout] 15: 0x55a68559ab0c - core[fa0eadad68403074]::panicking::panic_fmt [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/core/src/panicking.rs:80:14 [INFO] [stdout] 16: 0x55a68559aa23 - core[fa0eadad68403074]::panicking::assert_failed_inner [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/core/src/panicking.rs:439:17 [INFO] [stdout] 17: 0x55a6855988f9 - core[fa0eadad68403074]::panicking::assert_failed:: [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/core/src/panicking.rs:394:5 [INFO] [stdout] 18: 0x55a68555aa2d - rust_out[6ca516bbe19c3985]::main::_doctest_main_src_signals_indicators_higher_timeframe_trend_rs_25_0 [INFO] [stdout] 19: 0x55a68555a876 - rust_out[6ca516bbe19c3985]::main [INFO] [stdout] 20: 0x55a68555b063 - >::call_once [INFO] [stdout] 21: 0x55a68555a836 - std[31e582c13f4e914f]::sys::backtrace::__rust_begin_short_backtrace:: [INFO] [stdout] 22: 0x55a68555a849 - std[31e582c13f4e914f]::rt::lang_start::<()>::{closure#0} [INFO] [stdout] 23: 0x55a6855861c4 - <&dyn core[fa0eadad68403074]::ops::function::Fn<(), Output = i32> + core[fa0eadad68403074]::marker::Sync + core[fa0eadad68403074]::panic::unwind_safe::RefUnwindSafe as core[fa0eadad68403074]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/core/src/ops/function.rs:287:21 [INFO] [stdout] 24: 0x55a6855861c4 - std[31e582c13f4e914f]::panicking::catch_unwind::do_call::<&dyn core[fa0eadad68403074]::ops::function::Fn<(), Output = i32> + core[fa0eadad68403074]::marker::Sync + core[fa0eadad68403074]::panic::unwind_safe::RefUnwindSafe, i32> [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:581:40 [INFO] [stdout] 25: 0x55a6855861c4 - std[31e582c13f4e914f]::panicking::catch_unwind:: + core[fa0eadad68403074]::marker::Sync + core[fa0eadad68403074]::panic::unwind_safe::RefUnwindSafe> [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:544:19 [INFO] [stdout] 26: 0x55a6855861c4 - std[31e582c13f4e914f]::panic::catch_unwind::<&dyn core[fa0eadad68403074]::ops::function::Fn<(), Output = i32> + core[fa0eadad68403074]::marker::Sync + core[fa0eadad68403074]::panic::unwind_safe::RefUnwindSafe, i32> [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panic.rs:359:14 [INFO] [stdout] 27: 0x55a6855861c4 - std[31e582c13f4e914f]::rt::lang_start_internal::{closure#0} [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/rt.rs:175:24 [INFO] [stdout] 28: 0x55a6855861c4 - std[31e582c13f4e914f]::panicking::catch_unwind::do_call:: [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:581:40 [INFO] [stdout] 29: 0x55a6855861c4 - std[31e582c13f4e914f]::panicking::catch_unwind:: [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panicking.rs:544:19 [INFO] [stdout] 30: 0x55a6855861c4 - std[31e582c13f4e914f]::panic::catch_unwind:: [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/panic.rs:359:14 [INFO] [stdout] 31: 0x55a6855861c4 - std[31e582c13f4e914f]::rt::lang_start_internal [INFO] [stdout] at /rustc/562dee4820c458d823175268e41601d4c060588a/library/std/src/rt.rs:171:5 [INFO] [stdout] 32: 0x55a68555a7c1 - std[31e582c13f4e914f]::rt::lang_start::<()> [INFO] [stdout] 33: 0x55a68555b0c5 - main [INFO] [stdout] 34: 0x7311ca30b1ca - [INFO] [stdout] 35: 0x7311ca30b28b - __libc_start_main [INFO] [stdout] 36: 0x55a68555a4b5 - _start [INFO] [stdout] 37: 0x0 - [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] src/signals/indicators/higher_timeframe_trend.rs - signals::indicators::higher_timeframe_trend::HigherTimeframeTrend (line 25) [INFO] [stdout] [INFO] [stdout] test result: FAILED. 621 passed; 1 failed; 1 ignored; 0 measured; 0 filtered out; finished in 30.78s [INFO] [stdout] [INFO] [stderr] error: doctest failed, to rerun pass `--doc` [INFO] running `Command { std: "docker" "inspect" "db574648d90818185254e1fb3912874f777288cf224b67d396c4ea8d5bb9a086", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "db574648d90818185254e1fb3912874f777288cf224b67d396c4ea8d5bb9a086", kill_on_drop: false }` [INFO] [stdout] db574648d90818185254e1fb3912874f777288cf224b67d396c4ea8d5bb9a086