[INFO] fetching crate nyxs_owl 0.7.2...
[INFO] checking nyxs_owl-0.7.2 against master#64b72a1fa5449d928d5f553b01a596b78ee255d2 for pr-153457
[INFO] extracting crate nyxs_owl 0.7.2 into /workspace/builds/worker-5-tc1/source
[INFO] started tweaking crates.io crate nyxs_owl 0.7.2
[INFO] finished tweaking crates.io crate nyxs_owl 0.7.2
[INFO] tweaked toml for crates.io crate nyxs_owl 0.7.2 written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate nyxs_owl 0.7.2 on toolchain 64b72a1fa5449d928d5f553b01a596b78ee255d2
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+64b72a1fa5449d928d5f553b01a596b78ee255d2" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate nyxs_owl 0.7.2 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" "+64b72a1fa5449d928d5f553b01a596b78ee255d2" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded nalgebra-macros v0.2.2
[INFO] [stderr]   Downloaded chrono-tz-build v0.4.1
[INFO] [stderr]   Downloaded polars-utils v0.47.1
[INFO] [stderr]   Downloaded csv-core v0.1.12
[INFO] [stderr]   Downloaded skiplist v0.5.1
[INFO] [stderr]   Downloaded simba v0.9.0
[INFO] [stderr]   Downloaded polars-time v0.47.1
[INFO] [stderr]   Downloaded wide v0.7.32
[INFO] [stderr]   Downloaded fake v2.10.0
[INFO] [stderr]   Downloaded polars v0.47.1
[INFO] [stderr]   Downloaded statrs v0.18.0
[INFO] [stderr]   Downloaded polars-stream v0.47.1
[INFO] [stderr]   Downloaded reqwest v0.12.20
[INFO] [stderr]   Downloaded polars-io v0.47.1
[INFO] [stderr]   Downloaded polars-ops v0.47.1
[INFO] [stderr]   Downloaded statrs v0.17.1
[INFO] [stderr]   Downloaded oxidiviner v1.2.0
[INFO] [stderr]   Downloaded nalgebra v0.33.2
[INFO] [stderr]   Downloaded polars-plan v0.47.1
[INFO] [stderr]   Downloaded polars-arrow v0.47.1
[INFO] [stderr]   Downloaded chrono-tz v0.10.3
[INFO] [stderr]   Downloaded polars-row v0.47.1
[INFO] [stderr]   Downloaded polars-core v0.47.1
[INFO] [stderr]   Downloaded object_store v0.12.2
[INFO] [stderr]   Downloaded ta-lib-in-rust v1.0.8
[INFO] [stderr]   Downloaded polars-lazy v0.47.1
[INFO] [stderr]   Downloaded polars-sql v0.47.1
[INFO] [stderr]   Downloaded polars-compute v0.47.1
[INFO] [stderr]   Downloaded polars-pipe v0.47.1
[INFO] [stderr]   Downloaded polars-expr v0.47.1
[INFO] [stderr]   Downloaded polars-mem-engine v0.47.1
[INFO] [stderr]   Downloaded polars-schema v0.47.1
[INFO] [stderr]   Downloaded polars-parquet v0.47.1
[INFO] [stderr]   Downloaded polars-error v0.47.1
[INFO] [stderr]   Downloaded polars-json v0.47.1
[INFO] [stderr]   Downloaded quinn-udp v0.5.12
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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" "+64b72a1fa5449d928d5f553b01a596b78ee255d2" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 3a111beb9a1dcced51d266a308050d3deb68b497a9d92081d8acc5c516f9e18f
[INFO] running `Command { std: "docker" "start" "-a" "3a111beb9a1dcced51d266a308050d3deb68b497a9d92081d8acc5c516f9e18f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3a111beb9a1dcced51d266a308050d3deb68b497a9d92081d8acc5c516f9e18f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3a111beb9a1dcced51d266a308050d3deb68b497a9d92081d8acc5c516f9e18f", kill_on_drop: false }`
[INFO] [stdout] 3a111beb9a1dcced51d266a308050d3deb68b497a9d92081d8acc5c516f9e18f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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" "+64b72a1fa5449d928d5f553b01a596b78ee255d2" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 43f3f5df49aabd6b63464f21e4388ba5edc877e0ca3e3150eb0c8e5b248a7db1
[INFO] running `Command { std: "docker" "start" "-a" "43f3f5df49aabd6b63464f21e4388ba5edc877e0ca3e3150eb0c8e5b248a7db1", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.173
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling syn v2.0.103
[INFO] [stderr]     Checking slab v0.4.10
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]    Compiling rustls v0.23.27
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]     Checking iana-time-zone v0.1.63
[INFO] [stderr]    Compiling siphasher v1.0.1
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling jobserver v0.1.33
[INFO] [stderr]     Checking rustls-native-certs v0.8.1
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling cc v1.2.27
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking rand v0.9.1
[INFO] [stderr]     Checking array-init-cursor v0.2.1
[INFO] [stderr]     Checking planus v0.3.1
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]    Compiling phf_codegen v0.11.3
[INFO] [stderr]     Checking signal-hook-registry v1.4.5
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]    Compiling slotmap v1.0.7
[INFO] [stderr]     Checking zlib-rs v0.5.1
[INFO] [stderr]     Checking rmp v0.8.14
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking castaway v0.2.3
[INFO] [stderr]    Compiling polars-utils v0.47.1
[INFO] [stderr]     Checking simdutf8 v0.1.5
[INFO] [stderr]     Checking memmap2 v0.9.5
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling psm v0.1.26
[INFO] [stderr]    Compiling stacker v0.1.21
[INFO] [stderr]    Compiling zstd-sys v2.0.15+zstd.1.5.7
[INFO] [stderr]    Compiling lz4-sys v1.11.1+lz4-1.10.0
[INFO] [stderr]    Compiling polars-schema v0.47.1
[INFO] [stderr]     Checking libz-rs-sys v0.5.1
[INFO] [stderr]     Checking phf v0.11.3
[INFO] [stderr]     Checking rand_distr v0.4.3
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]    Compiling polars-arrow v0.47.1
[INFO] [stderr]     Checking debug_unsafe v0.1.3
[INFO] [stderr]     Checking atoi_simd v0.16.1
[INFO] [stderr]    Compiling polars-compute v0.47.1
[INFO] [stderr]     Checking strength_reduce v0.2.4
[INFO] [stderr]     Checking streaming-iterator v0.1.9
[INFO] [stderr]     Checking skiplist v0.5.1
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]    Compiling polars-core v0.47.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking unicode-width v0.2.1
[INFO] [stderr]    Compiling polars-ops v0.47.1
[INFO] [stderr]     Checking xxhash-rust v0.8.15
[INFO] [stderr]    Compiling parse-zoneinfo v0.3.1
[INFO] [stderr]     Checking brotli-decompressor v4.0.3
[INFO] [stderr]    Compiling blake3 v1.8.2
[INFO] [stderr]    Compiling chrono-tz-build v0.4.1
[INFO] [stderr]     Checking argminmax v0.6.3
[INFO] [stderr]     Checking fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling chrono-tz v0.10.3
[INFO] [stderr]     Checking streaming-decompression v0.1.2
[INFO] [stderr]     Checking brotli v7.0.0
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]    Compiling matrixmultiply v0.3.10
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling bytemuck_derive v1.9.3
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking zerovec v0.11.2
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking bytemuck v1.23.1
[INFO] [stderr]    Compiling tracing-attributes v0.1.29
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking rustls-webpki v0.103.3
[INFO] [stderr]     Checking thiserror v2.0.12
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]     Checking polars-parquet-format v0.1.0
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking safe_arch v0.7.4
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]    Compiling recursive-proc-macro-impl v0.1.1
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling polars-plan v0.47.1
[INFO] [stderr]     Checking bytes v1.10.1
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]     Checking hashbrown v0.15.4
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking tokio v1.45.1
[INFO] [stderr]     Checking http v1.3.1
[INFO] [stderr]     Checking indexmap v2.9.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking quick-xml v0.37.5
[INFO] [stderr]     Checking polars-arrow-format v0.1.0
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking raw-cpuid v11.5.0
[INFO] [stderr]     Checking rmp-serde v1.3.0
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking compact_str v0.8.1
[INFO] [stderr]     Checking rustix v0.38.44
[INFO] [stderr]     Checking rustix v1.0.7
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking now v0.1.3
[INFO] [stderr]     Checking home v0.5.11
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]     Checking recursive v0.1.1
[INFO] [stderr]     Checking wide v0.7.32
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking comfy-table v7.1.4
[INFO] [stderr]     Checking event-listener v5.4.0
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]    Compiling nalgebra-macros v0.2.2
[INFO] [stderr]     Checking tokio-util v0.7.15
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking tokio-rustls v0.26.2
[INFO] [stderr]     Checking fs4 v0.13.1
[INFO] [stderr]     Checking tower-http v0.6.6
[INFO] [stderr]    Compiling polars-stream v0.47.1
[INFO] [stderr]     Checking async-channel v2.3.1
[INFO] [stderr]     Checking h2 v0.4.10
[INFO] [stderr]    Compiling polars-lazy v0.47.1
[INFO] [stderr]    Compiling polars v0.47.1
[INFO] [stderr]    Compiling rstest_macros v0.23.0
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]    Compiling mockall_derive v0.13.1
[INFO] [stderr]     Checking predicates-core v1.0.9
[INFO] [stderr]     Checking tempfile v3.20.0
[INFO] [stderr]     Checking ndarray v0.16.1
[INFO] [stderr]     Checking wait-timeout v0.2.1
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking csv-core v0.1.12
[INFO] [stderr]     Checking termtree v0.5.1
[INFO] [stderr]     Checking simba v0.9.0
[INFO] [stderr]     Checking simba v0.8.1
[INFO] [stderr]     Checking quick-error v1.2.3
[INFO] [stderr]     Checking bit-vec v0.8.0
[INFO] [stderr]     Checking sdd v3.0.8
[INFO] [stderr]     Checking bit-set v0.8.0
[INFO] [stderr]     Checking scc v2.3.4
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]     Checking rusty-fork v0.3.0
[INFO] [stderr]     Checking csv v1.3.1
[INFO] [stderr]     Checking hyper v1.6.0
[INFO] [stderr]     Checking predicates-tree v1.0.12
[INFO] [stderr]     Checking predicates v3.1.3
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking hyper-util v0.1.14
[INFO] [stderr]     Checking lz4 v1.28.1
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]    Compiling serial_test_derive v3.2.0
[INFO] [stderr]     Checking nalgebra v0.33.2
[INFO] [stderr]     Checking env_logger v0.8.4
[INFO] [stderr]     Checking rand_xorshift v0.4.0
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking unarray v0.1.4
[INFO] [stderr]     Checking downcast v0.11.0
[INFO] [stderr]     Checking fragile v2.0.1
[INFO] [stderr]     Checking deunicode v1.6.2
[INFO] [stderr]     Checking proptest v1.7.0
[INFO] [stderr]     Checking serial_test v3.2.0
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]     Checking fake v2.10.0
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking quickcheck v1.0.3
[INFO] [stderr]     Checking nalgebra v0.32.6
[INFO] [stderr]     Checking reqwest v0.12.20
[INFO] [stderr]     Checking rstest v0.23.0
[INFO] [stderr]     Checking tokio-test v0.4.4
[INFO] [stderr]     Checking object_store v0.12.2
[INFO] [stderr]     Checking mockall v0.13.1
[INFO] [stderr]     Checking polars-error v0.47.1
[INFO] [stderr]     Checking statrs v0.18.0
[INFO] [stderr]     Checking oxidiviner v1.2.0
[INFO] [stderr]     Checking statrs v0.17.1
[INFO] [stderr]     Checking polars-row v0.47.1
[INFO] [stderr]     Checking polars-parquet v0.47.1
[INFO] [stderr]     Checking polars-time v0.47.1
[INFO] [stderr]     Checking polars-io v0.47.1
[INFO] [stderr]     Checking polars-expr v0.47.1
[INFO] [stderr]     Checking polars-mem-engine v0.47.1
[INFO] [stderr]     Checking ta-lib-in-rust v1.0.8
[INFO] [stderr]     Checking nyxs_owl v0.7.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `polars::prelude::*`
[INFO] [stdout]    --> src/technical_strategies/momentum/stochastic_strategy.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 150 |     use polars::prelude::*;
[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: `polars::prelude::*`
[INFO] [stdout]    --> src/technical_strategies/volatility/bollinger_bands_strategy.rs:118:9
[INFO] [stdout]     |
[INFO] [stdout] 118 |     use polars::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super`
[INFO] [stdout]    --> src/common.rs:436:9
[INFO] [stdout]     |
[INFO] [stdout] 436 |     use super::*;
[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: `polars::prelude`
[INFO] [stdout]  --> src/technical_strategies/volatility/bollinger_bands_strategy.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use polars::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `polars::prelude`
[INFO] [stdout]  --> src/technical_strategies/momentum/stochastic_strategy.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use polars::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `polars::prelude`
[INFO] [stdout]  --> src/forecasting/backtest/forecast_backtest.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use polars::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `high_ca`
[INFO] [stdout]     --> src/trade_math/trend.rs:1018:9
[INFO] [stdout]      |
[INFO] [stdout] 1018 |     let high_ca = high_series.f64()?;
[INFO] [stdout]      |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_high_ca`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `low_ca`
[INFO] [stdout]     --> src/trade_math/trend.rs:1019:9
[INFO] [stdout]      |
[INFO] [stdout] 1019 |     let low_ca = low_series.f64()?;
[INFO] [stdout]      |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_low_ca`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tr_series`
[INFO] [stdout]    --> src/trade_math/volatility.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let tr_series = Series::new("tr".into(), tr_values.clone()); // Keep tr_values for direct access if needed
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tr_series`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamps`
[INFO] [stdout]    --> src/forecasting/backtest/forecast_backtest.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |         timestamps: Option<&[String]>,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamps`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:574:14
[INFO] [stdout]     |
[INFO] [stdout] 574 |         for (i, &(p, d, q)) in model_configs
[INFO] [stdout]     |              ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_price`
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:862:9
[INFO] [stdout]     |
[INFO] [stdout] 862 |         current_price: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_price`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `forecast`
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:863:9
[INFO] [stdout]     |
[INFO] [stdout] 863 |         forecast: f64,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_forecast`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamps`
[INFO] [stdout]     --> src/forecasting/strategies/arima_strategy.rs:1234:9
[INFO] [stdout]      |
[INFO] [stdout] 1234 |         timestamps: &[String],
[INFO] [stdout]      |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamps`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_series`
[INFO] [stdout]     --> src/forecasting/strategies/arima_strategy.rs:1235:9
[INFO] [stdout]      |
[INFO] [stdout] 1235 |         time_series: Arc<CacheOptimizedTimeSeries>,
[INFO] [stdout]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_series`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamps`
[INFO] [stdout]     --> src/forecasting/strategies/arima_strategy.rs:1334:17
[INFO] [stdout]      |
[INFO] [stdout] 1334 |             let timestamps = self.extract_timestamps(df, timestamp_column)?;
[INFO] [stdout]      |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamps`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `df`
[INFO] [stdout]    --> src/forecasting/strategies/copula_strategy.rs:473:34
[INFO] [stdout]     |
[INFO] [stdout] 473 |             CopulaType::StudentT(df) => {
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_df`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window_size`
[INFO] [stdout]    --> src/forecasting/strategies/ensemble_strategy.rs:484:13
[INFO] [stdout]     |
[INFO] [stdout] 484 |         let window_size = self.config.performance_window.min(final_signals.len());
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_window_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mean_return`
[INFO] [stdout]    --> src/forecasting/strategies/garch_strategy.rs:405:13
[INFO] [stdout]     |
[INFO] [stdout] 405 |         let mean_return = returns.iter().sum::<f64>() / returns.len() as f64;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mean_return`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_variance`
[INFO] [stdout]    --> src/forecasting/strategies/garch_strategy.rs:495:9
[INFO] [stdout]     |
[INFO] [stdout] 495 |         initial_variance: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_variance`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `returns`
[INFO] [stdout]    --> src/forecasting/strategies/garch_strategy.rs:521:51
[INFO] [stdout]     |
[INFO] [stdout] 521 |     fn estimate_egarch_parameters_enhanced(&self, returns: &[f64]) -> Result<(f64, f64, f64, f64)> {
[INFO] [stdout]     |                                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_returns`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_variance`
[INFO] [stdout]    --> src/forecasting/strategies/garch_strategy.rs:535:9
[INFO] [stdout]     |
[INFO] [stdout] 535 |         initial_variance: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_variance`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/forecasting/strategies/garch_strategy.rs:647:9
[INFO] [stdout]     |
[INFO] [stdout] 647 |         index: usize,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prices`
[INFO] [stdout]    --> src/forecasting/strategies/garch_strategy.rs:648:9
[INFO] [stdout]     |
[INFO] [stdout] 648 |         prices: &[f64],
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_prices`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamps`
[INFO] [stdout]    --> src/forecasting/strategies/kalman_strategy.rs:171:13
[INFO] [stdout]     |
[INFO] [stdout] 171 |         let timestamps = self.extract_timestamps(df, timestamp_column)?;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamps`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prices`
[INFO] [stdout]    --> src/forecasting/strategies/regime_switching_strategy.rs:468:9
[INFO] [stdout]     |
[INFO] [stdout] 468 |         prices: &[f64],
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_prices`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/forecasting/strategies/regime_switching_strategy.rs:482:14
[INFO] [stdout]     |
[INFO] [stdout] 482 |         for (i, (&ret, &vol)) in rolling_returns
[INFO] [stdout]     |              ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prev_macd_above`
[INFO] [stdout]   --> src/technical_strategies/momentum/macd_strategy.rs:92:17
[INFO] [stdout]    |
[INFO] [stdout] 92 |             let prev_macd_above = prev_macd > prev_signal;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_macd_above`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prev_k_above`
[INFO] [stdout]    --> src/technical_strategies/momentum/stochastic_strategy.rs:126:17
[INFO] [stdout]     |
[INFO] [stdout] 126 |             let prev_k_above = prev_k > prev_d;
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_k_above`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `close`
[INFO] [stdout]   --> src/technical_strategies/multi_factor.rs:55:13
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let close = data.column("close")?.f64()?;
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_close`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/technical_strategies/multi_factor.rs:58:13
[INFO] [stdout]    |
[INFO] [stdout] 58 |         for i in 0..data.height() {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/technical_strategies/oscillators/williams_r_strategy.rs:116:14
[INFO] [stdout]     |
[INFO] [stdout] 116 |         for (i, &wr_value) in williams_r.iter().enumerate() {
[INFO] [stdout]     |              ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prev_high`
[INFO] [stdout]    --> src/technical_strategies/pattern_recognition.rs:111:13
[INFO] [stdout]     |
[INFO] [stdout] 111 |         let prev_high = high.get(index - 1).unwrap_or(0.0);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_high`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prev_low`
[INFO] [stdout]    --> src/technical_strategies/pattern_recognition.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |         let prev_low = low.get(index - 1).unwrap_or(0.0);
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_low`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `high`
[INFO] [stdout]   --> src/technical_strategies/volume.rs:59:13
[INFO] [stdout]    |
[INFO] [stdout] 59 |         let high = data.column("high")?;
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_high`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `low`
[INFO] [stdout]   --> src/technical_strategies/volume.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let low = data.column("low")?;
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_low`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `memory_pool` is never read
[INFO] [stdout]    --> src/async_parallel.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub struct AsyncParallelProcessor {
[INFO] [stdout]     |            ---------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 108 |     memory_pool: Arc<RwLock<MemoryPool<f64>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `capacity` is never read
[INFO] [stdout]   --> src/memory_optimized.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct CacheOptimizedTimeSeries {
[INFO] [stdout]    |            ------------------------ field in this struct
[INFO] [stdout] 22 |     len: usize,
[INFO] [stdout] 23 |     capacity: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CacheOptimizedTimeSeries` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_hl_avg` is never used
[INFO] [stdout]    --> src/trade_math/trend.rs:997:4
[INFO] [stdout]     |
[INFO] [stdout] 997 | fn calculate_hl_avg(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `entry_price`, `exit_price`, `entry_index`, `position_type`, and `size` are never read
[INFO] [stdout]    --> src/forecasting/backtest/forecast_backtest.rs:465:5
[INFO] [stdout]     |
[INFO] [stdout] 464 | struct Trade {
[INFO] [stdout]     |        ----- fields in this struct
[INFO] [stdout] 465 |     entry_price: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 466 |     exit_price: f64,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 467 |     entry_index: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 468 |     exit_index: usize,
[INFO] [stdout] 469 |     position_type: PositionType,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 470 |     size: f64,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Trade` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_average_accuracy`, `forecast_to_signal`, `get_returns_optimized`, `get_cached_prices`, and `get_cached_returns` are never used
[INFO] [stdout]     --> src/forecasting/strategies/arima_strategy.rs:538:8
[INFO] [stdout]      |
[INFO] [stdout]  209 | impl ArimaStrategy {
[INFO] [stdout]      | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  538 |     fn get_average_accuracy(&self) -> f64 {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1037 |     fn forecast_to_signal(&self, current_price: f64, forecast: f64) -> Signal {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1057 |     fn get_returns_optimized(&mut self, prices: &[f64]) -> Vec<f64> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1125 |     fn get_cached_prices(&self, last_n: Option<usize>) -> Option<&[f32]> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1136 |     fn get_cached_returns(&self, last_n: Option<usize>) -> Option<&[f32]> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/backtest/forecast_backtest.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub annualized_return: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/lib.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/backtest/forecast_backtest.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub benchmark_return: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/backtest/forecast_backtest.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub volatility: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/backtest/forecast_backtest.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub calmar_ratio: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/backtest/forecast_backtest.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub avg_trade_return: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/backtest/forecast_backtest.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub best_trade: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/backtest/forecast_backtest.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub worst_trade: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 62 |     Trending,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     MeanReverting,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 64 |     HighVolatility,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 65 |     LowVolatility,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 |     Sideways,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub model_name: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub accuracy_scores: Vec<f64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub recent_performance: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub regime_performance: HashMap<MarketRegime, f64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub confidence_scores: Vec<f64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub last_updated: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub fn new(model_name: String) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 | /     pub fn update_performance(
[INFO] [stdout] 93 | |         &mut self,
[INFO] [stdout] 94 | |         accuracy: f64,
[INFO] [stdout] 95 | |         regime: &MarketRegime,
[INFO] [stdout] 96 | |         confidence: f64,
[INFO] [stdout] 97 | |         timestamp: usize,
[INFO] [stdout] 98 | |     ) {
[INFO] [stdout]    | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:122:5
[INFO] [stdout]     |
[INFO] [stdout] 122 |     pub fn get_regime_performance(&self, regime: &MarketRegime) -> f64 {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:130:5
[INFO] [stdout]     |
[INFO] [stdout] 130 |     pub value: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:131:5
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub confidence: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:132:5
[INFO] [stdout]     |
[INFO] [stdout] 132 |     pub model_name: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 138 |     pub signal_threshold: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:139:5
[INFO] [stdout]     |
[INFO] [stdout] 139 |     pub min_data_points: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:140:5
[INFO] [stdout]     |
[INFO] [stdout] 140 |     pub min_confidence: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:141:5
[INFO] [stdout]     |
[INFO] [stdout] 141 |     pub use_arima: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 142 |     pub use_exponential_smoothing: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:143:5
[INFO] [stdout]     |
[INFO] [stdout] 143 |     pub use_kalman: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:168:5
[INFO] [stdout]     |
[INFO] [stdout] 168 |     pub fn new(config: AdaptiveEnsembleConfig) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub p: usize,                 // AR order
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub d: usize,                 // Integration order
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub q: usize,                 // MA order
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub threshold: f64,           // Base signal threshold
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub min_data_points: usize,   // Minimum data required
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub forecast_horizon: usize,  // How many steps to forecast
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub forecast_confidence: f64, // Confidence threshold for signals
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub dynamic_threshold: bool, // Enable volatility-adjusted thresholds
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub volatility_lookback: usize, // Periods for volatility calculation (20-50)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub volatility_multiplier: f64, // Volatility adjustment factor (1.5-3.0)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub min_threshold: f64,      // Minimum threshold bound (0.002-0.005)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub max_threshold: f64,      // Maximum threshold bound (0.02-0.05)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub model_selection: bool,   // Enable automatic ARIMA order selection
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub max_p: usize,            // Maximum AR order to test (3-5)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     pub max_q: usize,            // Maximum MA order to test (3-5)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub outlier_detection: bool, // Enable outlier handling
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub outlier_threshold: f64,  // IQR multiplier for outliers (2.0-3.0)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub confidence_intervals: bool, // Generate prediction intervals
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub confidence_level: f64,      // Confidence level (0.95)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub ensemble_models: usize,     // Number of models to ensemble (3-7)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub trend_confirmation: bool,   // Require trend confirmation
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub momentum_filter: bool,      // Apply momentum-based filters
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub regime_detection: bool,     // Enable regime detection
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub adaptive_refit: bool,       // Enable adaptive refitting
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub refit_frequency: usize,     // Base refit frequency
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub enable_parallel_processing: bool, // Enable async/parallel forecasting
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub max_concurrent_forecasts: usize,  // Maximum concurrent forecast tasks
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 |     pub parallel_ensemble: bool,          // Enable parallel ensemble processing
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub forecast_timeout_secs: u64,       // Timeout for individual forecasts
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:193:5
[INFO] [stdout]     |
[INFO] [stdout] 193 |     Trending,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:194:5
[INFO] [stdout]     |
[INFO] [stdout] 194 |     MeanReverting,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:195:5
[INFO] [stdout]     |
[INFO] [stdout] 195 |     HighVolatility,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:196:5
[INFO] [stdout]     |
[INFO] [stdout] 196 |     LowVolatility,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:202:5
[INFO] [stdout]     |
[INFO] [stdout] 202 |     pub point_forecast: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:203:5
[INFO] [stdout]     |
[INFO] [stdout] 203 |     pub lower_bound: Option<f64>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:204:5
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub upper_bound: Option<f64>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:205:5
[INFO] [stdout]     |
[INFO] [stdout] 205 |     pub confidence_level: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:206:5
[INFO] [stdout]     |
[INFO] [stdout] 206 |     pub model_used: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:210:5
[INFO] [stdout]     |
[INFO] [stdout] 210 |     pub fn new(config: ArimaStrategyConfig) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/utils/forecast_utils.rs:118:5
[INFO] [stdout]     |
[INFO] [stdout] 118 |     pub mean: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/utils/forecast_utils.rs:119:5
[INFO] [stdout]     |
[INFO] [stdout] 119 |     pub std: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/utils/forecast_utils.rs:120:5
[INFO] [stdout]     |
[INFO] [stdout] 120 |     pub min: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/utils/forecast_utils.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub max: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/utils/forecast_utils.rs:122:5
[INFO] [stdout]     |
[INFO] [stdout] 122 |     pub count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/forecasting/utils/forecast_utils.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub fn calculate(data: &[f64]) -> Result<Self> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/technical_strategies/mod.rs:186:5
[INFO] [stdout]     |
[INFO] [stdout] 186 |     pub total_return: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/technical_strategies/mod.rs:187:5
[INFO] [stdout]     |
[INFO] [stdout] 187 |     pub sharpe_ratio: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/technical_strategies/mod.rs:188:5
[INFO] [stdout]     |
[INFO] [stdout] 188 |     pub max_drawdown: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/technical_strategies/mod.rs:189:5
[INFO] [stdout]     |
[INFO] [stdout] 189 |     pub win_rate: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/technical_strategies/mod.rs:190:5
[INFO] [stdout]     |
[INFO] [stdout] 190 |     pub total_trades: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/technical_strategies/mod.rs:191:5
[INFO] [stdout]     |
[INFO] [stdout] 191 |     pub avg_trade_return: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/technical_strategies/mod.rs:192:5
[INFO] [stdout]     |
[INFO] [stdout] 192 |     pub volatility: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `polars::prelude`
[INFO] [stdout]    --> src/technical_strategies/mod.rs:376:9
[INFO] [stdout]     |
[INFO] [stdout] 376 |     use polars::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super`
[INFO] [stdout]    --> src/common.rs:436:9
[INFO] [stdout]     |
[INFO] [stdout] 436 |     use super::*;
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `polars::prelude`
[INFO] [stdout]    --> src/trade_math/volatility.rs:446:9
[INFO] [stdout]     |
[INFO] [stdout] 446 |     use polars::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `polars::prelude`
[INFO] [stdout]  --> src/forecasting/backtest/forecast_backtest.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use polars::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `polars::prelude`
[INFO] [stdout]    --> src/trade_math/moving_averages.rs:269:9
[INFO] [stdout]     |
[INFO] [stdout] 269 |     use polars::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `high_ca`
[INFO] [stdout]     --> src/trade_math/trend.rs:1018:9
[INFO] [stdout]      |
[INFO] [stdout] 1018 |     let high_ca = high_series.f64()?;
[INFO] [stdout]      |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_high_ca`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `low_ca`
[INFO] [stdout]     --> src/trade_math/trend.rs:1019:9
[INFO] [stdout]      |
[INFO] [stdout] 1019 |     let low_ca = low_series.f64()?;
[INFO] [stdout]      |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_low_ca`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tr_series`
[INFO] [stdout]    --> src/trade_math/volatility.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let tr_series = Series::new("tr".into(), tr_values.clone()); // Keep tr_values for direct access if needed
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tr_series`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamps`
[INFO] [stdout]    --> src/forecasting/backtest/forecast_backtest.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |         timestamps: Option<&[String]>,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamps`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:574:14
[INFO] [stdout]     |
[INFO] [stdout] 574 |         for (i, &(p, d, q)) in model_configs
[INFO] [stdout]     |              ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_price`
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:862:9
[INFO] [stdout]     |
[INFO] [stdout] 862 |         current_price: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_price`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `forecast`
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:863:9
[INFO] [stdout]     |
[INFO] [stdout] 863 |         forecast: f64,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_forecast`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamps`
[INFO] [stdout]     --> src/forecasting/strategies/arima_strategy.rs:1234:9
[INFO] [stdout]      |
[INFO] [stdout] 1234 |         timestamps: &[String],
[INFO] [stdout]      |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamps`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_series`
[INFO] [stdout]     --> src/forecasting/strategies/arima_strategy.rs:1235:9
[INFO] [stdout]      |
[INFO] [stdout] 1235 |         time_series: Arc<CacheOptimizedTimeSeries>,
[INFO] [stdout]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_series`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamps`
[INFO] [stdout]     --> src/forecasting/strategies/arima_strategy.rs:1334:17
[INFO] [stdout]      |
[INFO] [stdout] 1334 |             let timestamps = self.extract_timestamps(df, timestamp_column)?;
[INFO] [stdout]      |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamps`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `df`
[INFO] [stdout]    --> src/forecasting/strategies/copula_strategy.rs:473:34
[INFO] [stdout]     |
[INFO] [stdout] 473 |             CopulaType::StudentT(df) => {
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_df`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window_size`
[INFO] [stdout]    --> src/forecasting/strategies/ensemble_strategy.rs:484:13
[INFO] [stdout]     |
[INFO] [stdout] 484 |         let window_size = self.config.performance_window.min(final_signals.len());
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_window_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mean_return`
[INFO] [stdout]    --> src/forecasting/strategies/garch_strategy.rs:405:13
[INFO] [stdout]     |
[INFO] [stdout] 405 |         let mean_return = returns.iter().sum::<f64>() / returns.len() as f64;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mean_return`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_variance`
[INFO] [stdout]    --> src/forecasting/strategies/garch_strategy.rs:495:9
[INFO] [stdout]     |
[INFO] [stdout] 495 |         initial_variance: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_variance`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `returns`
[INFO] [stdout]    --> src/forecasting/strategies/garch_strategy.rs:521:51
[INFO] [stdout]     |
[INFO] [stdout] 521 |     fn estimate_egarch_parameters_enhanced(&self, returns: &[f64]) -> Result<(f64, f64, f64, f64)> {
[INFO] [stdout]     |                                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_returns`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_variance`
[INFO] [stdout]    --> src/forecasting/strategies/garch_strategy.rs:535:9
[INFO] [stdout]     |
[INFO] [stdout] 535 |         initial_variance: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_variance`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/forecasting/strategies/garch_strategy.rs:647:9
[INFO] [stdout]     |
[INFO] [stdout] 647 |         index: usize,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prices`
[INFO] [stdout]    --> src/forecasting/strategies/garch_strategy.rs:648:9
[INFO] [stdout]     |
[INFO] [stdout] 648 |         prices: &[f64],
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_prices`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamps`
[INFO] [stdout]    --> src/forecasting/strategies/kalman_strategy.rs:171:13
[INFO] [stdout]     |
[INFO] [stdout] 171 |         let timestamps = self.extract_timestamps(df, timestamp_column)?;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamps`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prices`
[INFO] [stdout]    --> src/forecasting/strategies/regime_switching_strategy.rs:468:9
[INFO] [stdout]     |
[INFO] [stdout] 468 |         prices: &[f64],
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_prices`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/forecasting/strategies/regime_switching_strategy.rs:482:14
[INFO] [stdout]     |
[INFO] [stdout] 482 |         for (i, (&ret, &vol)) in rolling_returns
[INFO] [stdout]     |              ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prev_macd_above`
[INFO] [stdout]   --> src/technical_strategies/momentum/macd_strategy.rs:92:17
[INFO] [stdout]    |
[INFO] [stdout] 92 |             let prev_macd_above = prev_macd > prev_signal;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_macd_above`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prev_k_above`
[INFO] [stdout]    --> src/technical_strategies/momentum/stochastic_strategy.rs:126:17
[INFO] [stdout]     |
[INFO] [stdout] 126 |             let prev_k_above = prev_k > prev_d;
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_k_above`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `close`
[INFO] [stdout]   --> src/technical_strategies/multi_factor.rs:55:13
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let close = data.column("close")?.f64()?;
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_close`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/technical_strategies/multi_factor.rs:58:13
[INFO] [stdout]    |
[INFO] [stdout] 58 |         for i in 0..data.height() {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/technical_strategies/oscillators/williams_r_strategy.rs:116:14
[INFO] [stdout]     |
[INFO] [stdout] 116 |         for (i, &wr_value) in williams_r.iter().enumerate() {
[INFO] [stdout]     |              ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prev_high`
[INFO] [stdout]    --> src/technical_strategies/pattern_recognition.rs:111:13
[INFO] [stdout]     |
[INFO] [stdout] 111 |         let prev_high = high.get(index - 1).unwrap_or(0.0);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_high`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prev_low`
[INFO] [stdout]    --> src/technical_strategies/pattern_recognition.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |         let prev_low = low.get(index - 1).unwrap_or(0.0);
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_low`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `high`
[INFO] [stdout]   --> src/technical_strategies/volume.rs:59:13
[INFO] [stdout]    |
[INFO] [stdout] 59 |         let high = data.column("high")?;
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_high`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `low`
[INFO] [stdout]   --> src/technical_strategies/volume.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let low = data.column("low")?;
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_low`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `memory_pool` is never read
[INFO] [stdout]    --> src/async_parallel.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub struct AsyncParallelProcessor {
[INFO] [stdout]     |            ---------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 108 |     memory_pool: Arc<RwLock<MemoryPool<f64>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `capacity` is never read
[INFO] [stdout]   --> src/memory_optimized.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct CacheOptimizedTimeSeries {
[INFO] [stdout]    |            ------------------------ field in this struct
[INFO] [stdout] 22 |     len: usize,
[INFO] [stdout] 23 |     capacity: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CacheOptimizedTimeSeries` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_hl_avg` is never used
[INFO] [stdout]    --> src/trade_math/trend.rs:997:4
[INFO] [stdout]     |
[INFO] [stdout] 997 | fn calculate_hl_avg(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `entry_price`, `exit_price`, `entry_index`, `position_type`, and `size` are never read
[INFO] [stdout]    --> src/forecasting/backtest/forecast_backtest.rs:465:5
[INFO] [stdout]     |
[INFO] [stdout] 464 | struct Trade {
[INFO] [stdout]     |        ----- fields in this struct
[INFO] [stdout] 465 |     entry_price: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 466 |     exit_price: f64,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 467 |     entry_index: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 468 |     exit_index: usize,
[INFO] [stdout] 469 |     position_type: PositionType,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 470 |     size: f64,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Trade` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_average_accuracy`, `get_returns_optimized`, `get_cached_prices`, and `get_cached_returns` are never used
[INFO] [stdout]     --> src/forecasting/strategies/arima_strategy.rs:538:8
[INFO] [stdout]      |
[INFO] [stdout]  209 | impl ArimaStrategy {
[INFO] [stdout]      | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  538 |     fn get_average_accuracy(&self) -> f64 {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1057 |     fn get_returns_optimized(&mut self, prices: &[f64]) -> Vec<f64> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1125 |     fn get_cached_prices(&self, last_n: Option<usize>) -> Option<&[f32]> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1136 |     fn get_cached_returns(&self, last_n: Option<usize>) -> Option<&[f32]> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/backtest/forecast_backtest.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub annualized_return: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/lib.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/backtest/forecast_backtest.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub benchmark_return: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/backtest/forecast_backtest.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub volatility: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/backtest/forecast_backtest.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub calmar_ratio: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/backtest/forecast_backtest.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub avg_trade_return: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/backtest/forecast_backtest.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub best_trade: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/backtest/forecast_backtest.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub worst_trade: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 62 |     Trending,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     MeanReverting,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 64 |     HighVolatility,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 65 |     LowVolatility,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 |     Sideways,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub model_name: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub accuracy_scores: Vec<f64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub recent_performance: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub regime_performance: HashMap<MarketRegime, f64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub confidence_scores: Vec<f64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub last_updated: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub fn new(model_name: String) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> src/forecasting/strategies/adaptive_ensemble.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 | /     pub fn update_performance(
[INFO] [stdout] 93 | |         &mut self,
[INFO] [stdout] 94 | |         accuracy: f64,
[INFO] [stdout] 95 | |         regime: &MarketRegime,
[INFO] [stdout] 96 | |         confidence: f64,
[INFO] [stdout] 97 | |         timestamp: usize,
[INFO] [stdout] 98 | |     ) {
[INFO] [stdout]    | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:122:5
[INFO] [stdout]     |
[INFO] [stdout] 122 |     pub fn get_regime_performance(&self, regime: &MarketRegime) -> f64 {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:130:5
[INFO] [stdout]     |
[INFO] [stdout] 130 |     pub value: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:131:5
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub confidence: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:132:5
[INFO] [stdout]     |
[INFO] [stdout] 132 |     pub model_name: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 138 |     pub signal_threshold: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:139:5
[INFO] [stdout]     |
[INFO] [stdout] 139 |     pub min_data_points: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:140:5
[INFO] [stdout]     |
[INFO] [stdout] 140 |     pub min_confidence: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:141:5
[INFO] [stdout]     |
[INFO] [stdout] 141 |     pub use_arima: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 142 |     pub use_exponential_smoothing: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:143:5
[INFO] [stdout]     |
[INFO] [stdout] 143 |     pub use_kalman: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/forecasting/strategies/adaptive_ensemble.rs:168:5
[INFO] [stdout]     |
[INFO] [stdout] 168 |     pub fn new(config: AdaptiveEnsembleConfig) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub p: usize,                 // AR order
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub d: usize,                 // Integration order
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub q: usize,                 // MA order
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub threshold: f64,           // Base signal threshold
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub min_data_points: usize,   // Minimum data required
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub forecast_horizon: usize,  // How many steps to forecast
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub forecast_confidence: f64, // Confidence threshold for signals
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub dynamic_threshold: bool, // Enable volatility-adjusted thresholds
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub volatility_lookback: usize, // Periods for volatility calculation (20-50)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub volatility_multiplier: f64, // Volatility adjustment factor (1.5-3.0)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub min_threshold: f64,      // Minimum threshold bound (0.002-0.005)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub max_threshold: f64,      // Maximum threshold bound (0.02-0.05)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub model_selection: bool,   // Enable automatic ARIMA order selection
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub max_p: usize,            // Maximum AR order to test (3-5)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     pub max_q: usize,            // Maximum MA order to test (3-5)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub outlier_detection: bool, // Enable outlier handling
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub outlier_threshold: f64,  // IQR multiplier for outliers (2.0-3.0)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub confidence_intervals: bool, // Generate prediction intervals
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub confidence_level: f64,      // Confidence level (0.95)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub ensemble_models: usize,     // Number of models to ensemble (3-7)
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub trend_confirmation: bool,   // Require trend confirmation
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub momentum_filter: bool,      // Apply momentum-based filters
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub regime_detection: bool,     // Enable regime detection
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub adaptive_refit: bool,       // Enable adaptive refitting
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub refit_frequency: usize,     // Base refit frequency
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub enable_parallel_processing: bool, // Enable async/parallel forecasting
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub max_concurrent_forecasts: usize,  // Maximum concurrent forecast tasks
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 |     pub parallel_ensemble: bool,          // Enable parallel ensemble processing
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/forecasting/strategies/arima_strategy.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub forecast_timeout_secs: u64,       // Timeout for individual forecasts
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:193:5
[INFO] [stdout]     |
[INFO] [stdout] 193 |     Trending,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:194:5
[INFO] [stdout]     |
[INFO] [stdout] 194 |     MeanReverting,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:195:5
[INFO] [stdout]     |
[INFO] [stdout] 195 |     HighVolatility,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:196:5
[INFO] [stdout]     |
[INFO] [stdout] 196 |     LowVolatility,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:202:5
[INFO] [stdout]     |
[INFO] [stdout] 202 |     pub point_forecast: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:203:5
[INFO] [stdout]     |
[INFO] [stdout] 203 |     pub lower_bound: Option<f64>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:204:5
[INFO] [stdout]     |
[INFO] [stdout] 204 |     pub upper_bound: Option<f64>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:205:5
[INFO] [stdout]     |
[INFO] [stdout] 205 |     pub confidence_level: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:206:5
[INFO] [stdout]     |
[INFO] [stdout] 206 |     pub model_used: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/forecasting/strategies/arima_strategy.rs:210:5
[INFO] [stdout]     |
[INFO] [stdout] 210 |     pub fn new(config: ArimaStrategyConfig) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]     --> src/forecasting/strategies/arima_strategy.rs:1572:17
[INFO] [stdout]      |
[INFO] [stdout] 1572 |         assert!(non_hold_count >= 0); // At least ensure no panic
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]     --> src/forecasting/strategies/arima_strategy.rs:1644:17
[INFO] [stdout]      |
[INFO] [stdout] 1644 |         assert!(non_hold_count >= 0);
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/utils/forecast_utils.rs:118:5
[INFO] [stdout]     |
[INFO] [stdout] 118 |     pub mean: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/utils/forecast_utils.rs:119:5
[INFO] [stdout]     |
[INFO] [stdout] 119 |     pub std: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/utils/forecast_utils.rs:120:5
[INFO] [stdout]     |
[INFO] [stdout] 120 |     pub min: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/utils/forecast_utils.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub max: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/forecasting/utils/forecast_utils.rs:122:5
[INFO] [stdout]     |
[INFO] [stdout] 122 |     pub count: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/forecasting/utils/forecast_utils.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub fn calculate(data: &[f64]) -> Result<Self> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/technical_strategies/mod.rs:186:5
[INFO] [stdout]     |
[INFO] [stdout] 186 |     pub total_return: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/technical_strategies/mod.rs:187:5
[INFO] [stdout]     |
[INFO] [stdout] 187 |     pub sharpe_ratio: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/technical_strategies/mod.rs:188:5
[INFO] [stdout]     |
[INFO] [stdout] 188 |     pub max_drawdown: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/technical_strategies/mod.rs:189:5
[INFO] [stdout]     |
[INFO] [stdout] 189 |     pub win_rate: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/technical_strategies/mod.rs:190:5
[INFO] [stdout]     |
[INFO] [stdout] 190 |     pub total_trades: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/technical_strategies/mod.rs:191:5
[INFO] [stdout]     |
[INFO] [stdout] 191 |     pub avg_trade_return: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/technical_strategies/mod.rs:192:5
[INFO] [stdout]     |
[INFO] [stdout] 192 |     pub volatility: f64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 11s
[INFO] running `Command { std: "docker" "inspect" "43f3f5df49aabd6b63464f21e4388ba5edc877e0ca3e3150eb0c8e5b248a7db1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "43f3f5df49aabd6b63464f21e4388ba5edc877e0ca3e3150eb0c8e5b248a7db1", kill_on_drop: false }`
[INFO] [stdout] 43f3f5df49aabd6b63464f21e4388ba5edc877e0ca3e3150eb0c8e5b248a7db1
