[INFO] cloning repository https://github.com/blockbit-hama/xQuant
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/blockbit-hama/xQuant" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fblockbit-hama%2FxQuant", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fblockbit-hama%2FxQuant'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c48c8cbd2f74a92854d4d1594a74f82eff5b3cfc
[INFO] checking blockbit-hama/xQuant/c48c8cbd2f74a92854d4d1594a74f82eff5b3cfc against master#e0e204f3e97ad5f79524b9c259dc38df606ed82c for pr-149218
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fblockbit-hama%2FxQuant" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/blockbit-hama/xQuant
[INFO] finished tweaking git repo https://github.com/blockbit-hama/xQuant
[INFO] tweaked toml for git repo https://github.com/blockbit-hama/xQuant written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/blockbit-hama/xQuant on toolchain e0e204f3e97ad5f79524b9c259dc38df606ed82c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e0e204f3e97ad5f79524b9c259dc38df606ed82c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/blockbit-hama/xQuant 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" "+e0e204f3e97ad5f79524b9c259dc38df606ed82c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 3 packages to latest compatible versions
[INFO] [stderr]       Adding base64 v0.22.1
[INFO] [stderr]       Adding tokio-tungstenite v0.24.0
[INFO] [stderr]       Adding tungstenite v0.24.0
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded headers-core v0.2.0
[INFO] [stderr]   Downloaded tungstenite v0.21.0
[INFO] [stderr]   Downloaded downcast v0.11.0
[INFO] [stderr]   Downloaded tokio-tungstenite v0.21.0
[INFO] [stderr]   Downloaded nalgebra-macros v0.1.0
[INFO] [stderr]   Downloaded hermit-abi v0.5.1
[INFO] [stderr]   Downloaded fragile v2.0.1
[INFO] [stderr]   Downloaded axum-macros v0.4.2
[INFO] [stderr]   Downloaded rstest_macros v0.18.2
[INFO] [stderr]   Downloaded config v0.13.4
[INFO] [stderr]   Downloaded wide v0.7.32
[INFO] [stderr]   Downloaded cc v1.2.21
[INFO] [stderr]   Downloaded tower-http v0.5.2
[INFO] [stderr]   Downloaded statrs v0.16.1
[INFO] [stderr]   Downloaded rust_decimal v1.37.1
[INFO] [stderr]   Downloaded warp v0.3.7
[INFO] [stderr]   Downloaded headers v0.3.9
[INFO] [stderr]   Downloaded bytemuck v1.23.0
[INFO] [stderr]   Downloaded simba v0.6.0
[INFO] [stderr]   Downloaded zerocopy v0.8.25
[INFO] [stderr]   Downloaded ron v0.7.1
[INFO] [stderr]   Downloaded openssl v0.10.72
[INFO] [stderr]   Downloaded mockall_derive v0.11.4
[INFO] [stderr]   Downloaded rstest v0.18.2
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.25
[INFO] [stderr]   Downloaded nalgebra v0.29.0
[INFO] [stderr]   Downloaded predicates v2.1.5
[INFO] [stderr]   Downloaded mockall v0.11.4
[INFO] [stderr]   Downloaded multer v2.1.0
[INFO] [stderr]   Downloaded tokio v1.45.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+e0e204f3e97ad5f79524b9c259dc38df606ed82c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 15aa966d89a5d42a05ca9a214b638211350c72989a746ce27cac5a249800ee44
[INFO] running `Command { std: "docker" "start" "-a" "15aa966d89a5d42a05ca9a214b638211350c72989a746ce27cac5a249800ee44", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "15aa966d89a5d42a05ca9a214b638211350c72989a746ce27cac5a249800ee44", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "15aa966d89a5d42a05ca9a214b638211350c72989a746ce27cac5a249800ee44", kill_on_drop: false }`
[INFO] [stdout] 15aa966d89a5d42a05ca9a214b638211350c72989a746ce27cac5a249800ee44
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+e0e204f3e97ad5f79524b9c259dc38df606ed82c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 966bcac18f45a53c4f37265df8957b85d6b7acdd4b3f5a9ccbc3f55dabf33952
[INFO] running `Command { std: "docker" "start" "-a" "966bcac18f45a53c4f37265df8957b85d6b7acdd4b3f5a9ccbc3f55dabf33952", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.95
[INFO] [stderr]    Compiling libc v0.2.172
[INFO] [stderr]     Checking bytes v1.10.1
[INFO] [stderr]     Checking smallvec v1.15.0
[INFO] [stderr]     Checking log v0.4.27
[INFO] [stderr]    Compiling cc v1.2.21
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]     Checking stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling zerocopy v0.8.25
[INFO] [stderr]     Checking litemap v0.7.5
[INFO] [stderr]    Compiling icu_locid_transform_data v1.5.1
[INFO] [stderr]     Checking tracing-core v0.1.33
[INFO] [stderr]    Compiling icu_properties_data v1.5.1
[INFO] [stderr]    Compiling icu_normalizer_data v1.5.1
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]     Checking hashbrown v0.15.3
[INFO] [stderr]    Compiling ahash v0.7.8
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]     Checking data-encoding v2.9.0
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]     Checking http v1.3.1
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]    Compiling openssl v0.10.72
[INFO] [stderr]     Checking utf-8 v0.7.6
[INFO] [stderr]     Checking bytemuck v1.23.0
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]     Checking indexmap v2.9.0
[INFO] [stderr]    Compiling matrixmultiply v0.3.9
[INFO] [stderr]    Compiling unicase v2.8.1
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking tower-layer v0.3.3
[INFO] [stderr]    Compiling rustversion v1.0.20
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]     Checking safe_arch v0.7.4
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]    Compiling syn v2.0.101
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling multer v2.1.0
[INFO] [stderr]     Checking rawpointer v0.2.1
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking atomic-waker v1.1.2
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking dlv-list v0.3.0
[INFO] [stderr]    Compiling getrandom v0.3.2
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking mio v1.0.3
[INFO] [stderr]     Checking socket2 v0.5.9
[INFO] [stderr]     Checking signal-hook-registry v1.4.5
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking headers-core v0.2.0
[INFO] [stderr]     Checking wide v0.7.32
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling rust_decimal v1.37.1
[INFO] [stderr]    Compiling anyhow v1.0.98
[INFO] [stderr]     Checking hashbrown v0.12.3
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]     Checking linked-hash-map v0.5.6
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking deranged v0.4.0
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking yaml-rust v0.4.5
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]    Compiling rstest_macros v0.18.2
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]     Checking ordered-multimap v0.4.3
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling openssl-sys v0.9.108
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking csv-core v0.1.12
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking float-cmp v0.9.0
[INFO] [stderr]     Checking predicates v2.1.5
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]     Checking headers v0.3.9
[INFO] [stderr]     Checking webpki-roots v0.25.4
[INFO] [stderr]     Checking rust-ini v0.18.0
[INFO] [stderr]     Checking downcast v0.11.0
[INFO] [stderr]     Checking humantime v2.2.0
[INFO] [stderr]     Checking pathdiff v0.2.3
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking fragile v2.0.1
[INFO] [stderr]     Checking matchit v0.7.3
[INFO] [stderr]     Checking time-core v0.1.4
[INFO] [stderr]     Checking ipnet v2.11.0
[INFO] [stderr]     Checking iana-time-zone v0.1.63
[INFO] [stderr]     Checking time v0.3.41
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking simba v0.6.0
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]    Compiling relative-path v1.9.3
[INFO] [stderr]    Compiling glob v0.3.2
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]     Checking futures-timer v3.0.3
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking rand_distr v0.4.3
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling zerovec-derive v0.10.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling icu_provider_macros v1.5.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.7.5
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling axum-macros v0.4.2
[INFO] [stderr]     Checking tokio v1.45.0
[INFO] [stderr]    Compiling nalgebra-macros v0.1.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking tungstenite v0.24.0
[INFO] [stderr]    Compiling mockall_derive v0.11.4
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]    Compiling rust_decimal_macros v1.37.1
[INFO] [stderr]     Checking nalgebra v0.29.0
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking pest v2.8.0
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.7.5
[INFO] [stderr]     Checking zerovec v0.10.4
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]    Compiling pest_meta v2.8.0
[INFO] [stderr]     Checking tinystr v0.7.6
[INFO] [stderr]     Checking icu_collections v1.5.0
[INFO] [stderr]     Checking icu_locid v1.5.0
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]    Compiling pest_generator v2.8.0
[INFO] [stderr]     Checking mockall v0.11.4
[INFO] [stderr]     Checking icu_provider v1.5.0
[INFO] [stderr]     Checking icu_locid_transform v1.5.0
[INFO] [stderr]     Checking rstest v0.18.2
[INFO] [stderr]    Compiling pest_derive v2.8.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking toml v0.5.11
[INFO] [stderr]     Checking serde_path_to_error v0.1.17
[INFO] [stderr]     Checking ron v0.7.1
[INFO] [stderr]     Checking uuid v1.16.0
[INFO] [stderr]     Checking csv v1.3.1
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking icu_properties v1.5.1
[INFO] [stderr]     Checking tokio-util v0.7.15
[INFO] [stderr]     Checking hyper v1.7.0
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tokio-rustls v0.24.1
[INFO] [stderr]     Checking tokio-tungstenite v0.24.0
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking h2 v0.3.26
[INFO] [stderr]     Checking config v0.13.4
[INFO] [stderr]     Checking hyper-util v0.1.16
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking icu_normalizer v1.5.0
[INFO] [stderr]     Checking idna_adapter v1.2.0
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking tungstenite v0.21.0
[INFO] [stderr]     Checking statrs v0.16.1
[INFO] [stderr]     Checking tokio-tungstenite v0.21.0
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking hyper-rustls v0.24.2
[INFO] [stderr]     Checking warp v0.3.7
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking xQuant v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::trading_bots::bot_config::TradingBotConfig`
[INFO] [stdout]   --> src/api/handlers.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::trading_bots::bot_config::TradingBotConfig;
[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: `std::sync::Arc`
[INFO] [stdout]  --> src/backtest/engine.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/backtest/engine.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | use chrono::{DateTime, Duration, Utc};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> src/backtest/engine.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OrderStatus`
[INFO] [stdout]  --> src/backtest/engine.rs:8:35
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::models::order::{Order, OrderStatus};
[INFO] [stdout]   |                                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::trade::Trade`
[INFO] [stdout]  --> src/backtest/engine.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::models::trade::Trade;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/backtest/scenario.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::market_data::MarketData`
[INFO] [stdout]  --> src/backtest/scenario.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::models::market_data::MarketData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HistoricalDataProvider`
[INFO] [stdout]   --> src/backtest/scenario.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::data_provider::{HistoricalDataProvider, CsvDataProvider};
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Utc`
[INFO] [stdout]  --> src/backtest/performance.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use chrono::Utc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/core/trailing_stop_manager.rs:9:27
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tokio::sync::{RwLock, Mutex};
[INFO] [stdout]   |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OrderStatus`
[INFO] [stdout]   --> src/core/trailing_stop_manager.rs:14:55
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::models::order::{Order, OrderId, OrderSide, OrderStatus, OrderType};
[INFO] [stdout]    |                                                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Order`
[INFO] [stdout]   --> src/core/execution_analyzer.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::models::order::{Order, OrderSide};
[INFO] [stdout]    |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `RwLock`
[INFO] [stdout]  --> src/core/strategy_manager.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::sync::{Arc, RwLock};
[INFO] [stdout]   |                 ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/exchange/mocks.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::Mutex`
[INFO] [stdout]  --> src/exchange/mocks.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DateTime`
[INFO] [stdout]  --> src/exchange/mocks.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use chrono::{DateTime, Utc};
[INFO] [stdout]   |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/exchange/traits.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OrderType`
[INFO] [stdout]  --> src/exchange/traits.rs:7:57
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::models::order::{Order, OrderId, OrderStatus, OrderType};
[INFO] [stdout]   |                                                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/market_data/stream.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mutex` and `RwLock`
[INFO] [stdout]  --> src/market_data/stream.rs:3:30
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                              ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/market_data/websocket.rs:3:38
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `interval`
[INFO] [stdout]  --> src/market_data/websocket.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tokio::time::{interval, Duration};
[INFO] [stdout]   |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/market_data/fix.rs:3:38
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/order_core/manager.rs:3:38
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OrderSide` and `OrderType`
[INFO] [stdout]  --> src/order_core/manager.rs:8:57
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::models::order::{Order, OrderId, OrderStatus, OrderType, OrderSide};
[INFO] [stdout]   |                                                         ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/order_core/repository.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> src/order_core/repository.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/order_core/validator.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::signals::signal_types::SignalType`
[INFO] [stdout]  --> src/strategies/combined.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::signals::signal_types::SignalType;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::trading_bots::bot_config::TradingBotConfig`
[INFO] [stdout]   --> src/api/handlers.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::trading_bots::bot_config::TradingBotConfig;
[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 imports: `Arc` and `RwLock`
[INFO] [stdout]  --> src/strategies/technical.rs:8:17
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::{Arc, RwLock};
[INFO] [stdout]   |                 ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/strategies/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/utils/logging.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `json`
[INFO] [stdout]   --> src/trading_bots/bot_config.rs:10:25
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde_json::{Value, json};
[INFO] [stdout]    |                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/trading_bots/base_bot.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/ma_crossover_bot.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/ma_crossover_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/rsi_bot.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, oscillators::RelativeStrengthIndex};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/rsi_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/macd_bot.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, trend::MACD};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/macd_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/trading_bots/multi_indicator_bot.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/multi_indicator_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover, oscillators::RelativeStrengthIndex, tre...
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/multi_indicator_bot.rs:13:36
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::TradingError`
[INFO] [stdout]   --> src/prediction_client.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::error::TradingError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]  --> src/signals/position_sizing.rs:9:27
[INFO] [stdout]   |
[INFO] [stdout] 9 | use super::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/backtest/engine.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/backtest/engine.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | use chrono::{DateTime, Duration, Utc};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> src/backtest/engine.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OrderStatus`
[INFO] [stdout]  --> src/backtest/engine.rs:8:35
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::models::order::{Order, OrderStatus};
[INFO] [stdout]   |                                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::trade::Trade`
[INFO] [stdout]  --> src/backtest/engine.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::models::trade::Trade;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/backtest/scenario.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::market_data::MarketData`
[INFO] [stdout]  --> src/backtest/scenario.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::models::market_data::MarketData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HistoricalDataProvider`
[INFO] [stdout]   --> src/backtest/scenario.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::data_provider::{HistoricalDataProvider, CsvDataProvider};
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Utc`
[INFO] [stdout]  --> src/backtest/performance.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use chrono::Utc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/core/trailing_stop_manager.rs:9:27
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tokio::sync::{RwLock, Mutex};
[INFO] [stdout]   |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OrderStatus`
[INFO] [stdout]   --> src/core/trailing_stop_manager.rs:14:55
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::models::order::{Order, OrderId, OrderSide, OrderStatus, OrderType};
[INFO] [stdout]    |                                                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Order`
[INFO] [stdout]   --> src/core/execution_analyzer.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::models::order::{Order, OrderSide};
[INFO] [stdout]    |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `RwLock`
[INFO] [stdout]  --> src/core/strategy_manager.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::sync::{Arc, RwLock};
[INFO] [stdout]   |                 ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/exchange/mocks.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::Mutex`
[INFO] [stdout]  --> src/exchange/mocks.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DateTime`
[INFO] [stdout]  --> src/exchange/mocks.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use chrono::{DateTime, Utc};
[INFO] [stdout]   |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/exchange/traits.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OrderType`
[INFO] [stdout]  --> src/exchange/traits.rs:7:57
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::models::order::{Order, OrderId, OrderStatus, OrderType};
[INFO] [stdout]   |                                                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/market_data/stream.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mutex` and `RwLock`
[INFO] [stdout]  --> src/market_data/stream.rs:3:30
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                              ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/market_data/websocket.rs:3:38
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `interval`
[INFO] [stdout]  --> src/market_data/websocket.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tokio::time::{interval, Duration};
[INFO] [stdout]   |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/market_data/fix.rs:3:38
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/order_core/manager.rs:3:38
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/order_core/repository.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> src/order_core/repository.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/order_core/validator.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::signals::signal_types::SignalType`
[INFO] [stdout]  --> src/strategies/combined.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::signals::signal_types::SignalType;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `RwLock`
[INFO] [stdout]  --> src/strategies/technical.rs:8:17
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::{Arc, RwLock};
[INFO] [stdout]   |                 ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/strategies/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/utils/logging.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Duration`
[INFO] [stdout]   --> src/utils/mod.rs:58:7
[INFO] [stdout]    |
[INFO] [stdout] 58 |   use chrono::Duration;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `json`
[INFO] [stdout]   --> src/trading_bots/bot_config.rs:10:25
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde_json::{Value, json};
[INFO] [stdout]    |                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/trading_bots/base_bot.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/ma_crossover_bot.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/ma_crossover_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/rsi_bot.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, oscillators::RelativeStrengthIndex};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/rsi_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/macd_bot.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, trend::MACD};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/macd_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/trading_bots/multi_indicator_bot.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/multi_indicator_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover, oscillators::RelativeStrengthIndex, tre...
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/multi_indicator_bot.rs:13:36
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::TradingError`
[INFO] [stdout]   --> src/prediction_client.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::error::TradingError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]  --> src/signals/position_sizing.rs:9:27
[INFO] [stdout]   |
[INFO] [stdout] 9 | use super::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/api/handlers.rs:461:11
[INFO] [stdout]     |
[INFO] [stdout] 461 |       let mut builder = BacktestScenarioBuilder::new(format!("{} 백테스트", req.strategy_type))
[INFO] [stdout]     |           ----^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/api/handlers.rs:461:11
[INFO] [stdout]     |
[INFO] [stdout] 461 |       let mut builder = BacktestScenarioBuilder::new(format!("{} 백테스트", req.strategy_type))
[INFO] [stdout]     |           ----^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:170:17
[INFO] [stdout]     |
[INFO] [stdout] 170 |             let mut cancelled_order = original_order.clone();
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:199:17
[INFO] [stdout]     |
[INFO] [stdout] 199 |             let mut repo = self.repository.write().await;
[INFO] [stdout]     |                 ----^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:200:25
[INFO] [stdout]     |
[INFO] [stdout] 200 |             if let Some(mut order) = repo.find_by_id(order_id).await? {
[INFO] [stdout]     |                         ----^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:256:29
[INFO] [stdout]     |
[INFO] [stdout] 256 |                         let mut repo = repository_clone.write().await;
[INFO] [stdout]     |                             ----^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:170:17
[INFO] [stdout]     |
[INFO] [stdout] 170 |             let mut cancelled_order = original_order.clone();
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:199:17
[INFO] [stdout]     |
[INFO] [stdout] 199 |             let mut repo = self.repository.write().await;
[INFO] [stdout]     |                 ----^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:200:25
[INFO] [stdout]     |
[INFO] [stdout] 200 |             if let Some(mut order) = repo.find_by_id(order_id).await? {
[INFO] [stdout]     |                         ----^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:256:29
[INFO] [stdout]     |
[INFO] [stdout] 256 |                         let mut repo = repository_clone.write().await;
[INFO] [stdout]     |                             ----^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead
[INFO] [stdout]    --> src/backtest/performance.rs:110:41
[INFO] [stdout]     |
[INFO] [stdout] 110 |       let date = chrono::NaiveDateTime::from_timestamp_millis(trade.timestamp)
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead
[INFO] [stdout]    --> src/backtest/performance.rs:111:51
[INFO] [stdout]     |
[INFO] [stdout] 111 |         .unwrap_or_else(|| chrono::NaiveDateTime::from_timestamp_opt(0, 0).unwrap())
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead
[INFO] [stdout]    --> src/backtest/performance.rs:110:41
[INFO] [stdout]     |
[INFO] [stdout] 110 |       let date = chrono::NaiveDateTime::from_timestamp_millis(trade.timestamp)
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead
[INFO] [stdout]    --> src/backtest/performance.rs:111:51
[INFO] [stdout]     |
[INFO] [stdout] 111 |         .unwrap_or_else(|| chrono::NaiveDateTime::from_timestamp_opt(0, 0).unwrap())
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead
[INFO] [stdout]   --> src/utils/mod.rs:13:30
[INFO] [stdout]    |
[INFO] [stdout] 13 |   let naive = NaiveDateTime::from_timestamp_opt(secs, nsecs).unwrap_or_default();
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead
[INFO] [stdout]   --> src/utils/mod.rs:13:30
[INFO] [stdout]    |
[INFO] [stdout] 13 |   let naive = NaiveDateTime::from_timestamp_opt(secs, nsecs).unwrap_or_default();
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::exchange::traits::Exchange`
[INFO] [stdout]   --> src/backtest/engine.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::exchange::traits::Exchange;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `exchange`
[INFO] [stdout]   --> src/api/handlers.rs:41:3
[INFO] [stdout]    |
[INFO] [stdout] 41 |   exchange: Arc<RwLock<dyn Exchange>>,
[INFO] [stdout]    |   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::exchange::traits::Exchange`
[INFO] [stdout]   --> src/backtest/engine.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::exchange::traits::Exchange;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `exchange`
[INFO] [stdout]   --> src/api/handlers.rs:41:3
[INFO] [stdout]    |
[INFO] [stdout] 41 |   exchange: Arc<RwLock<dyn Exchange>>,
[INFO] [stdout]    |   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/api/handlers.rs:365:16
[INFO] [stdout]     |
[INFO] [stdout] 365 |     if let Err(e) = indicator.update(candle.close, Some(candle.volume)) {
[INFO] [stdout]     |                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/api/handlers.rs:365:16
[INFO] [stdout]     |
[INFO] [stdout] 365 |     if let Err(e) = indicator.update(candle.close, Some(candle.volume)) {
[INFO] [stdout]     |                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `exchange`
[INFO] [stdout]    --> src/api/handlers.rs:553:3
[INFO] [stdout]     |
[INFO] [stdout] 553 |   exchange: Arc<RwLock<dyn Exchange>>,
[INFO] [stdout]     |   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `strategy_manager`
[INFO] [stdout]    --> src/api/handlers.rs:554:3
[INFO] [stdout]     |
[INFO] [stdout] 554 |   strategy_manager: Arc<RwLock<StrategyManager>>,
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategy_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `exchange`
[INFO] [stdout]    --> src/api/handlers.rs:553:3
[INFO] [stdout]     |
[INFO] [stdout] 553 |   exchange: Arc<RwLock<dyn Exchange>>,
[INFO] [stdout]     |   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `strategy_manager`
[INFO] [stdout]    --> src/api/handlers.rs:554:3
[INFO] [stdout]     |
[INFO] [stdout] 554 |   strategy_manager: Arc<RwLock<StrategyManager>>,
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategy_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config_filter`
[INFO] [stdout]   --> src/api/routes.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |     let config_filter = warp::any().map(move || config_clone.clone());
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_filter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth`
[INFO] [stdout]   --> src/api/routes.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let auth = warp::header::optional::<String>("authorization").and_then(move |auth_header: Option<String>| {
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_auth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth`
[INFO] [stdout]   --> src/api/routes.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |     let auth = warp::header::optional::<String>("authorization").and_then(move |auth_header: Option<String>| {
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_auth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config_filter`
[INFO] [stdout]   --> src/api/routes.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |     let config_filter = warp::any().map(move || config_clone.clone());
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_filter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth`
[INFO] [stdout]   --> src/api/routes.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let auth = warp::header::optional::<String>("authorization").and_then(move |auth_header: Option<String>| {
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_auth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth`
[INFO] [stdout]   --> src/api/routes.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |     let auth = warp::header::optional::<String>("authorization").and_then(move |auth_header: Option<String>| {
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_auth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_volume` is assigned to, but never used
[INFO] [stdout]    --> src/core/execution_analyzer.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |     let mut total_volume = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_volume` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_volume` is never read
[INFO] [stdout]    --> src/core/execution_analyzer.rs:144:7
[INFO] [stdout]     |
[INFO] [stdout] 144 |       total_volume += trade.quantity;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_volume` is assigned to, but never used
[INFO] [stdout]    --> src/core/execution_analyzer.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |     let mut total_volume = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_volume` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_volume` is never read
[INFO] [stdout]    --> src/core/execution_analyzer.rs:144:7
[INFO] [stdout]     |
[INFO] [stdout] 144 |       total_volume += trade.quantity;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `interval`
[INFO] [stdout]   --> src/market_data/stream.rs:69:55
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub fn start_aggregation(&mut self, symbol: &str, interval: u64) -> Result<(), TradingError> {
[INFO] [stdout]    |                                                       ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `receiver`
[INFO] [stdout]   --> src/market_data/stream.rs:74:13
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let receiver = self.get_receiver(symbol)?;
[INFO] [stdout]    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_receiver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sub_id`
[INFO] [stdout]    --> src/market_data/websocket.rs:132:21
[INFO] [stdout]     |
[INFO] [stdout] 132 |         if let Some(sub_id) = self.subscriptions.remove(symbol) {
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `interval`
[INFO] [stdout]   --> src/market_data/stream.rs:69:55
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub fn start_aggregation(&mut self, symbol: &str, interval: u64) -> Result<(), TradingError> {
[INFO] [stdout]    |                                                       ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `receiver`
[INFO] [stdout]   --> src/market_data/stream.rs:74:13
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let receiver = self.get_receiver(symbol)?;
[INFO] [stdout]    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_receiver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `host`
[INFO] [stdout]   --> src/market_data/fix.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let host = self.host.clone();
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_host`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]   --> src/market_data/fix.rs:57:13
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let port = self.port;
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sub_id`
[INFO] [stdout]    --> src/market_data/websocket.rs:132:21
[INFO] [stdout]     |
[INFO] [stdout] 132 |         if let Some(sub_id) = self.subscriptions.remove(symbol) {
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `host`
[INFO] [stdout]   --> src/market_data/fix.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let host = self.host.clone();
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_host`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]   --> src/market_data/fix.rs:57:13
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let port = self.port;
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repo`
[INFO] [stdout]    --> src/order_core/manager.rs:256:29
[INFO] [stdout]     |
[INFO] [stdout] 256 |                         let mut repo = repository_clone.write().await;
[INFO] [stdout]     |                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_repo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repo`
[INFO] [stdout]    --> src/order_core/manager.rs:256:29
[INFO] [stdout]     |
[INFO] [stdout] 256 |                         let mut repo = repository_clone.write().await;
[INFO] [stdout]     |                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_repo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]    --> src/order_core/repository.rs:101:22
[INFO] [stdout]     |
[INFO] [stdout] 101 |             .filter(|o| statuses.contains(&OrderStatus::New))  // 이 부분은 실제 주문의 상태를 확인해야 함
[INFO] [stdout]     |                      ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]    --> src/order_core/repository.rs:101:22
[INFO] [stdout]     |
[INFO] [stdout] 101 |             .filter(|o| statuses.contains(&OrderStatus::New))  // 이 부분은 실제 주문의 상태를 확인해야 함
[INFO] [stdout]     |                      ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `market_data`
[INFO] [stdout]   --> src/strategies/trailing_stop.rs:80:17
[INFO] [stdout]    |
[INFO] [stdout] 80 |     if let Some(market_data) = &self.current_market_data {
[INFO] [stdout]    |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_market_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `market_data`
[INFO] [stdout]   --> src/strategies/trailing_stop.rs:80:17
[INFO] [stdout]    |
[INFO] [stdout] 80 |     if let Some(market_data) = &self.current_market_data {
[INFO] [stdout]    |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_market_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_rejection` is never used
[INFO] [stdout]   --> src/api/routes.rs:68:14
[INFO] [stdout]    |
[INFO] [stdout] 68 |     async fn handle_rejection(err: Rejection) -> Result<impl Reply, std::convert::Infallible> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `exchange`, `fee_rate`, and `slippage` are never read
[INFO] [stdout]   --> src/backtest/engine.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct BacktestEngine {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     exchange: MockExchange,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 26 |     initial_balance: HashMap<String, f64>,
[INFO] [stdout] 27 |     fee_rate: f64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 28 |     slippage: f64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `target_percentage` is never read
[INFO] [stdout]   --> src/core/vwap_splitter.rs:27:3
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct VwapSplitter {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |   target_percentage: Option<f64>,
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `max_drawdown_percent` is never read
[INFO] [stdout]   --> src/core/risk_manager.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RiskManager {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     max_drawdown_percent: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/exchange/mocks.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct MockExchange {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 19 |     config: Config,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_mid_price` is never used
[INFO] [stdout]    --> src/exchange/binance_futures.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl BinanceFuturesExchange {
[INFO] [stdout]     | --------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |   async fn get_mid_price(&self, symbol: &str) -> Result<f64, TradingError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reconnect_interval` is never read
[INFO] [stdout]   --> src/market_data/websocket.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct WebSocketProvider {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     reconnect_interval: Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `sender_comp_id` and `target_comp_id` are never read
[INFO] [stdout]   --> src/market_data/fix.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct FixProvider {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     sender_comp_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     target_comp_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `execution_interval` is never read
[INFO] [stdout]   --> src/strategies/vwap.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct VwapStrategy {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     execution_interval: i64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `execution_interval` is never read
[INFO] [stdout]   --> src/strategies/twap.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct TwapStrategy {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     execution_interval: i64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `symbol` is never read
[INFO] [stdout]   --> src/strategies/combined.rs:11:3
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct CombinedStrategy {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 10 |   name: String,
[INFO] [stdout] 11 |   symbol: String,
[INFO] [stdout]    |   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_rejection` is never used
[INFO] [stdout]   --> src/api/routes.rs:68:14
[INFO] [stdout]    |
[INFO] [stdout] 68 |     async fn handle_rejection(err: Rejection) -> Result<impl Reply, std::convert::Infallible> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `exchange`, `fee_rate`, and `slippage` are never read
[INFO] [stdout]   --> src/backtest/engine.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct BacktestEngine {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     exchange: MockExchange,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 26 |     initial_balance: HashMap<String, f64>,
[INFO] [stdout] 27 |     fee_rate: f64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 28 |     slippage: f64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `target_percentage` is never read
[INFO] [stdout]   --> src/core/vwap_splitter.rs:27:3
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct VwapSplitter {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |   target_percentage: Option<f64>,
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `max_drawdown_percent` is never read
[INFO] [stdout]   --> src/core/risk_manager.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RiskManager {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     max_drawdown_percent: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/exchange/mocks.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct MockExchange {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 19 |     config: Config,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_mid_price` is never used
[INFO] [stdout]    --> src/exchange/binance_futures.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl BinanceFuturesExchange {
[INFO] [stdout]     | --------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |   async fn get_mid_price(&self, symbol: &str) -> Result<f64, TradingError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reconnect_interval` is never read
[INFO] [stdout]   --> src/market_data/websocket.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct WebSocketProvider {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     reconnect_interval: Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `sender_comp_id` and `target_comp_id` are never read
[INFO] [stdout]   --> src/market_data/fix.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct FixProvider {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     sender_comp_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     target_comp_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `execution_interval` is never read
[INFO] [stdout]   --> src/strategies/vwap.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct VwapStrategy {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     execution_interval: i64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `execution_interval` is never read
[INFO] [stdout]   --> src/strategies/twap.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct TwapStrategy {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     execution_interval: i64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `symbol` is never read
[INFO] [stdout]   --> src/strategies/combined.rs:11:3
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct CombinedStrategy {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 10 |   name: String,
[INFO] [stdout] 11 |   symbol: String,
[INFO] [stdout]    |   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: crate `xQuant` should have a snake case name
[INFO] [stdout]   |
[INFO] [stdout]   = help: convert the identifier to snake case: `x_quant`
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `xQuant::core::VwapSplitter`
[INFO] [stdout]  --> tests/vwap_tests.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use xQuant::core::VwapSplitter;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ no `VwapSplitter` in `core`
[INFO] [stdout]   |
[INFO] [stdout] help: a similar name exists in the module
[INFO] [stdout]   |
[INFO] [stdout] 8 - use xQuant::core::VwapSplitter;
[INFO] [stdout] 8 + use xQuant::core::vwap_splitter;
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this struct instead
[INFO] [stdout]   |
[INFO] [stdout] 8 | use xQuant::core::vwap_splitter::VwapSplitter;
[INFO] [stdout]   |                   +++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `xQuant::core::TrailingStopManager`
[INFO] [stdout]  --> tests/trailing_stop_tests.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use xQuant::core::TrailingStopManager;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TrailingStopManager` in `core`
[INFO] [stdout]   |
[INFO] [stdout] help: a similar name exists in the module
[INFO] [stdout]   |
[INFO] [stdout] 8 - use xQuant::core::TrailingStopManager;
[INFO] [stdout] 8 + use xQuant::core::trailing_stop_manager;
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this struct instead
[INFO] [stdout]   |
[INFO] [stdout] 8 | use xQuant::core::trailing_stop_manager::TrailingStopManager;
[INFO] [stdout]   |                   +++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `xQuant::exchange::mock`
[INFO] [stdout]  --> tests/vwap_tests.rs:9:23
[INFO] [stdout]   |
[INFO] [stdout] 9 | use xQuant::exchange::mock::MockExchange;
[INFO] [stdout]   |                       ^^^^ could not find `mock` in `exchange`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `xQuant::exchange::mock`
[INFO] [stdout]  --> tests/trailing_stop_tests.rs:9:23
[INFO] [stdout]   |
[INFO] [stdout] 9 | use xQuant::exchange::mock::MockExchange;
[INFO] [stdout]   |                       ^^^^ could not find `mock` in `exchange`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved imports `xQuant::core::VwapSplitter`, `xQuant::core::IcebergManager`, `xQuant::core::TrailingStopManager`
[INFO] [stdout]  --> tests/integration_tests.rs:8:20
[INFO] [stdout]   |
[INFO] [stdout] 8 | use xQuant::core::{VwapSplitter, IcebergManager, TrailingStopManager};
[INFO] [stdout]   |                    ^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^ no `TrailingStopManager` in `core`
[INFO] [stdout]   |                    |             |
[INFO] [stdout]   |                    |             no `IcebergManager` in `core`
[INFO] [stdout]   |                    no `VwapSplitter` in `core`
[INFO] [stdout]   |
[INFO] [stdout]   = help: consider importing this struct instead:
[INFO] [stdout]           xQuant::core::vwap_splitter::VwapSplitter
[INFO] [stdout]   = help: consider importing this struct instead:
[INFO] [stdout]           xQuant::core::iceberg_manager::IcebergManager
[INFO] [stdout]   = help: consider importing this struct instead:
[INFO] [stdout]           xQuant::core::trailing_stop_manager::TrailingStopManager
[INFO] [stdout] help: a similar name exists in the module
[INFO] [stdout]   |
[INFO] [stdout] 8 - use xQuant::core::{VwapSplitter, IcebergManager, TrailingStopManager};
[INFO] [stdout] 8 + use xQuant::core::{vwap_splitter, IcebergManager, TrailingStopManager};
[INFO] [stdout]   |
[INFO] [stdout] help: a similar name exists in the module
[INFO] [stdout]   |
[INFO] [stdout] 8 - use xQuant::core::{VwapSplitter, IcebergManager, TrailingStopManager};
[INFO] [stdout] 8 + use xQuant::core::{VwapSplitter, iceberg_manager, TrailingStopManager};
[INFO] [stdout]   |
[INFO] [stdout] help: a similar name exists in the module
[INFO] [stdout]   |
[INFO] [stdout] 8 - use xQuant::core::{VwapSplitter, IcebergManager, TrailingStopManager};
[INFO] [stdout] 8 + use xQuant::core::{VwapSplitter, IcebergManager, trailing_stop_manager};
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `xQuant::exchange::mock`
[INFO] [stdout]  --> tests/integration_tests.rs:9:23
[INFO] [stdout]   |
[INFO] [stdout] 9 | use xQuant::exchange::mock::MockExchange;
[INFO] [stdout]   |                       ^^^^ could not find `mock` in `exchange`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OrderType`
[INFO] [stdout]   --> tests/integration_tests.rs:10:40
[INFO] [stdout]    |
[INFO] [stdout] 10 | use xQuant::models::order::{OrderSide, OrderType};
[INFO] [stdout]    |                                        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/integration_tests.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 |   let result = vwap.start().await;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 30 |   assert!(result.is_ok());
[INFO] [stdout]    |           ------ type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `result` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 29 |   let result: /* Type */ = vwap.start().await;
[INFO] [stdout]    |             ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/trailing_stop_tests.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 |   let result = trailing_stop.start().await;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 32 |   assert!(result.is_ok());
[INFO] [stdout]    |           ------ type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `result` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 31 |   let result: /* Type */ = trailing_stop.start().await;
[INFO] [stdout]    |             ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/trailing_stop_tests.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 |   let update_result = trailing_stop.update_delta(3.0).await;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 36 |   assert!(update_result.is_ok());
[INFO] [stdout]    |           ------------- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `update_result` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 35 |   let update_result: /* Type */ = trailing_stop.update_delta(3.0).await;
[INFO] [stdout]    |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `xQuant::core::IcebergManager`
[INFO] [stdout]  --> tests/iceberg_tests.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use xQuant::core::IcebergManager;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `IcebergManager` in `core`
[INFO] [stdout]   |
[INFO] [stdout] help: a similar name exists in the module
[INFO] [stdout]   |
[INFO] [stdout] 8 - use xQuant::core::IcebergManager;
[INFO] [stdout] 8 + use xQuant::core::iceberg_manager;
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this struct instead
[INFO] [stdout]   |
[INFO] [stdout] 8 | use xQuant::core::iceberg_manager::IcebergManager;
[INFO] [stdout]   |                   +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `xQuant::exchange::mock`
[INFO] [stdout]  --> tests/iceberg_tests.rs:9:23
[INFO] [stdout]   |
[INFO] [stdout] 9 | use xQuant::exchange::mock::MockExchange;
[INFO] [stdout]   |                       ^^^^ could not find `mock` in `exchange`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/vwap_tests.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 |   let result = vwap.start().await;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 32 |   assert!(result.is_ok());
[INFO] [stdout]    |           ------ type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `result` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 31 |   let result: /* Type */ = vwap.start().await;
[INFO] [stdout]    |             ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/trailing_stop_tests.rs:46:7
[INFO] [stdout]    |
[INFO] [stdout] 46 |   let stop_result = trailing_stop.stop().await;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 47 |   assert!(stop_result.is_ok());
[INFO] [stdout]    |           ----------- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `stop_result` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 46 |   let stop_result: /* Type */ = trailing_stop.stop().await;
[INFO] [stdout]    |                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/integration_tests.rs:56:7
[INFO] [stdout]    |
[INFO] [stdout] 56 |   let result = iceberg.start().await;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 57 |   assert!(result.is_ok());
[INFO] [stdout]    |           ------ type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `result` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 56 |   let result: /* Type */ = iceberg.start().await;
[INFO] [stdout]    |             ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/iceberg_tests.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 |   let result = iceberg.start().await;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 32 |   assert!(result.is_ok());
[INFO] [stdout]    |           ------ type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `result` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 31 |   let result: /* Type */ = iceberg.start().await;
[INFO] [stdout]    |             ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/iceberg_tests.rs:38:7
[INFO] [stdout]    |
[INFO] [stdout] 38 |   let update_result = iceberg.update_price(51000.0).await;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 39 |   assert!(update_result.is_ok());
[INFO] [stdout]    |           ------------- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `update_result` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 38 |   let update_result: /* Type */ = iceberg.update_price(51000.0).await;
[INFO] [stdout]    |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/integration_tests.rs:63:7
[INFO] [stdout]    |
[INFO] [stdout] 63 |   let stop_result = iceberg.stop().await;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 64 |   assert!(stop_result.is_ok());
[INFO] [stdout]    |           ----------- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `stop_result` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 63 |   let stop_result: /* Type */ = iceberg.stop().await;
[INFO] [stdout]    |                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/iceberg_tests.rs:42:7
[INFO] [stdout]    |
[INFO] [stdout] 42 |   let stop_result = iceberg.stop().await;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 43 |   assert!(stop_result.is_ok());
[INFO] [stdout]    |           ----------- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `stop_result` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 42 |   let stop_result: /* Type */ = iceberg.stop().await;
[INFO] [stdout]    |                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/integration_tests.rs:84:7
[INFO] [stdout]    |
[INFO] [stdout] 84 |   let result = trailing_stop.start().await;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 85 |   assert!(result.is_ok());
[INFO] [stdout]    |           ------ type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `result` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 84 |   let result: /* Type */ = trailing_stop.start().await;
[INFO] [stdout]    |             ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/integration_tests.rs:91:7
[INFO] [stdout]    |
[INFO] [stdout] 91 |   let stop_result = trailing_stop.stop().await;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 92 |   assert!(stop_result.is_ok());
[INFO] [stdout]    |           ----------- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `stop_result` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 91 |   let stop_result: /* Type */ = trailing_stop.stop().await;
[INFO] [stdout]    |                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/vwap_tests.rs:41:7
[INFO] [stdout]    |
[INFO] [stdout] 41 |   let stop_result = vwap.stop().await;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 42 |   assert!(stop_result.is_ok());
[INFO] [stdout]    |           ----------- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `stop_result` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 41 |   let stop_result: /* Type */ = vwap.stop().await;
[INFO] [stdout]    |                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `xQuant::backtest::data_provider::CsvDataProvider`
[INFO] [stdout]   --> tests/backtest_tests.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use xQuant::backtest::data_provider::CsvDataProvider;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BacktestScenario`
[INFO] [stdout]   --> tests/backtest_tests.rs:13:34
[INFO] [stdout]    |
[INFO] [stdout] 13 | use xQuant::backtest::scenario::{BacktestScenario, BacktestScenarioBuilder};
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `xQuant` (test "trailing_stop_tests") due to 5 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `xQuant` (test "integration_tests") due to 7 previous errors; 1 warning emitted
[INFO] [stderr] error: could not compile `xQuant` (test "iceberg_tests") due to 5 previous errors
[INFO] [stdout] Some errors have detailed explanations: E0282, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `xQuant` (test "vwap_tests") due to 4 previous errors
[INFO] [stdout] error[E0599]: no function or associated item named `from_csv` found for struct `BacktestEngine` in the current scope
[INFO] [stdout]   --> tests/backtest_tests.rs:24:39
[INFO] [stdout]    |
[INFO] [stdout] 24 |   let engine_result = BacktestEngine::from_csv(
[INFO] [stdout]    |                                       ^^^^^^^^ function or associated item not found in `BacktestEngine`
[INFO] [stdout]    |
[INFO] [stdout] note: if you're trying to build a new `BacktestEngine`, consider using `BacktestEngine::new` which returns `BacktestEngine`
[INFO] [stdout]   --> /opt/rustwide/workdir/src/backtest/engine.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | /     pub fn new(
[INFO] [stdout] 35 | |         name: String,
[INFO] [stdout] 36 | |         description: String,
[INFO] [stdout] 37 | |         start_time: DateTime<Utc>,
[INFO] [stdout] ...  |
[INFO] [stdout] 41 | |         slippage: f64,
[INFO] [stdout] 42 | |     ) -> Self {
[INFO] [stdout]    | |_____________^
[INFO] [stdout] help: there is an associated function `from` with a similar name
[INFO] [stdout]   --> /rustc/e0e204f3e97ad5f79524b9c259dc38df606ed82c/library/core/src/convert/mod.rs:592:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0599`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `xQuant` (test "backtest_tests") due to 1 previous error; 2 warnings emitted
[INFO] [stdout] warning: unused import: `crate::trading_bots::bot_config::TradingBotConfig`
[INFO] [stdout]   --> src/api/handlers.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::trading_bots::bot_config::TradingBotConfig;
[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: `std::sync::Arc`
[INFO] [stdout]  --> src/backtest/engine.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/backtest/engine.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | use chrono::{DateTime, Duration, Utc};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> src/backtest/engine.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OrderStatus`
[INFO] [stdout]  --> src/backtest/engine.rs:8:35
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::models::order::{Order, OrderStatus};
[INFO] [stdout]   |                                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::trade::Trade`
[INFO] [stdout]  --> src/backtest/engine.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::models::trade::Trade;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/backtest/scenario.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::market_data::MarketData`
[INFO] [stdout]  --> src/backtest/scenario.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::models::market_data::MarketData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HistoricalDataProvider`
[INFO] [stdout]   --> src/backtest/scenario.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::data_provider::{HistoricalDataProvider, CsvDataProvider};
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Utc`
[INFO] [stdout]  --> src/backtest/performance.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use chrono::Utc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `engine::BacktestEngine`
[INFO] [stdout]  --> src/backtest/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use engine::BacktestEngine;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `result::BacktestResult`
[INFO] [stdout]  --> src/backtest/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use result::BacktestResult;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BacktestScenarioBuilder` and `BacktestScenario`
[INFO] [stdout]  --> src/backtest/mod.rs:9:20
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use scenario::{BacktestScenario, BacktestScenarioBuilder};
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `performance::PerformanceMetrics`
[INFO] [stdout]   --> src/backtest/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use performance::PerformanceMetrics;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `data_provider::HistoricalDataProvider`
[INFO] [stdout]   --> src/backtest/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use data_provider::HistoricalDataProvider;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::TradingError`
[INFO] [stdout]   --> src/prediction_client.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::error::TradingError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/core/trailing_stop_manager.rs:9:27
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tokio::sync::{RwLock, Mutex};
[INFO] [stdout]   |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OrderStatus`
[INFO] [stdout]   --> src/core/trailing_stop_manager.rs:14:55
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::models::order::{Order, OrderId, OrderSide, OrderStatus, OrderType};
[INFO] [stdout]    |                                                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Order`
[INFO] [stdout]   --> src/core/execution_analyzer.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::models::order::{Order, OrderSide};
[INFO] [stdout]    |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `RwLock`
[INFO] [stdout]  --> src/core/strategy_manager.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::sync::{Arc, RwLock};
[INFO] [stdout]   |                 ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::order_core::manager::OrderManager`
[INFO] [stdout]   --> src/http/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::order_core::manager::OrderManager;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::risk_manager::RiskManager`
[INFO] [stdout]   --> src/http/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::core::risk_manager::RiskManager;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/exchange/mocks.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::Mutex`
[INFO] [stdout]  --> src/exchange/mocks.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DateTime`
[INFO] [stdout]  --> src/exchange/mocks.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use chrono::{DateTime, Utc};
[INFO] [stdout]   |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/exchange/traits.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OrderType`
[INFO] [stdout]  --> src/exchange/traits.rs:7:57
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::models::order::{Order, OrderId, OrderStatus, OrderType};
[INFO] [stdout]   |                                                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/market_data/stream.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mutex` and `RwLock`
[INFO] [stdout]  --> src/market_data/stream.rs:3:30
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                              ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/market_data/websocket.rs:3:38
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `interval`
[INFO] [stdout]  --> src/market_data/websocket.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tokio::time::{interval, Duration};
[INFO] [stdout]   |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/market_data/fix.rs:3:38
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/order_core/manager.rs:3:38
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/order_core/repository.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> src/order_core/repository.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/order_core/validator.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::signals::signal_types::SignalType`
[INFO] [stdout]  --> src/strategies/combined.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::signals::signal_types::SignalType;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `RwLock`
[INFO] [stdout]  --> src/strategies/technical.rs:8:17
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::{Arc, RwLock};
[INFO] [stdout]   |                 ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/strategies/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vwap::VwapStrategy`
[INFO] [stdout]   --> src/strategies/mod.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub use vwap::VwapStrategy;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `iceberg::IcebergStrategy`
[INFO] [stdout]   --> src/strategies/mod.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub use iceberg::IcebergStrategy;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `trailing_stop::TrailingStopStrategy`
[INFO] [stdout]   --> src/strategies/mod.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub use trailing_stop::TrailingStopStrategy;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `twap::TwapStrategy`
[INFO] [stdout]   --> src/strategies/mod.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub use twap::TwapStrategy;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `combined::CombinedStrategy`
[INFO] [stdout]   --> src/strategies/mod.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub use combined::CombinedStrategy;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/utils/logging.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Duration`
[INFO] [stdout]   --> src/utils/mod.rs:58:7
[INFO] [stdout]    |
[INFO] [stdout] 58 |   use chrono::Duration;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `moving_averages::*`
[INFO] [stdout]   --> src/indicators/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use moving_averages::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `oscillators::*`
[INFO] [stdout]   --> src/indicators/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use oscillators::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `trend::*`
[INFO] [stdout]   --> src/indicators/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use trend::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `volume::*`
[INFO] [stdout]   --> src/indicators/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use volume::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `utils::*`
[INFO] [stdout]   --> src/indicators/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use utils::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]  --> src/signals/position_sizing.rs:9:27
[INFO] [stdout]   |
[INFO] [stdout] 9 | use super::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `signal_types::*`
[INFO] [stdout]   --> src/signals/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use signal_types::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `signal_analyzer::*`
[INFO] [stdout]   --> src/signals/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use signal_analyzer::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `position_sizing::*`
[INFO] [stdout]   --> src/signals/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use position_sizing::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `json`
[INFO] [stdout]   --> src/trading_bots/bot_config.rs:10:25
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde_json::{Value, json};
[INFO] [stdout]    |                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/trading_bots/base_bot.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/ma_crossover_bot.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/ma_crossover_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/rsi_bot.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, oscillators::RelativeStrengthIndex};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/rsi_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/macd_bot.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, trend::MACD};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/macd_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/trading_bots/multi_indicator_bot.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/multi_indicator_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover, oscillators::RelativeStrengthIndex, tre...
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/multi_indicator_bot.rs:13:36
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ma_crossover_bot::*`
[INFO] [stdout]   --> src/trading_bots/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use ma_crossover_bot::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rsi_bot::*`
[INFO] [stdout]   --> src/trading_bots/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use rsi_bot::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `macd_bot::*`
[INFO] [stdout]   --> src/trading_bots/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use macd_bot::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `multi_indicator_bot::*`
[INFO] [stdout]   --> src/trading_bots/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use multi_indicator_bot::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Utc`
[INFO] [stdout]   --> src/main.rs:30:14
[INFO] [stdout]    |
[INFO] [stdout] 30 | use chrono::{Utc, Duration};
[INFO] [stdout]    |              ^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::trading_bots::bot_config::TradingBotConfig`
[INFO] [stdout]   --> src/api/handlers.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::trading_bots::bot_config::TradingBotConfig;
[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: `std::sync::Arc`
[INFO] [stdout]  --> src/backtest/engine.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/backtest/engine.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | use chrono::{DateTime, Duration, Utc};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> src/backtest/engine.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OrderStatus`
[INFO] [stdout]  --> src/backtest/engine.rs:8:35
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::models::order::{Order, OrderStatus};
[INFO] [stdout]   |                                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::trade::Trade`
[INFO] [stdout]  --> src/backtest/engine.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::models::trade::Trade;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/backtest/scenario.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::market_data::MarketData`
[INFO] [stdout]  --> src/backtest/scenario.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::models::market_data::MarketData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HistoricalDataProvider`
[INFO] [stdout]   --> src/backtest/scenario.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 | use super::data_provider::{HistoricalDataProvider, CsvDataProvider};
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Utc`
[INFO] [stdout]  --> src/backtest/performance.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use chrono::Utc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `engine::BacktestEngine`
[INFO] [stdout]  --> src/backtest/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use engine::BacktestEngine;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `result::BacktestResult`
[INFO] [stdout]  --> src/backtest/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use result::BacktestResult;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BacktestScenarioBuilder` and `BacktestScenario`
[INFO] [stdout]  --> src/backtest/mod.rs:9:20
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use scenario::{BacktestScenario, BacktestScenarioBuilder};
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `performance::PerformanceMetrics`
[INFO] [stdout]   --> src/backtest/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use performance::PerformanceMetrics;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `data_provider::HistoricalDataProvider`
[INFO] [stdout]   --> src/backtest/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use data_provider::HistoricalDataProvider;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::TradingError`
[INFO] [stdout]   --> src/prediction_client.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::error::TradingError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/core/trailing_stop_manager.rs:9:27
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tokio::sync::{RwLock, Mutex};
[INFO] [stdout]   |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OrderStatus`
[INFO] [stdout]   --> src/core/trailing_stop_manager.rs:14:55
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::models::order::{Order, OrderId, OrderSide, OrderStatus, OrderType};
[INFO] [stdout]    |                                                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Order`
[INFO] [stdout]   --> src/core/execution_analyzer.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::models::order::{Order, OrderSide};
[INFO] [stdout]    |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `RwLock`
[INFO] [stdout]  --> src/core/strategy_manager.rs:9:17
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::sync::{Arc, RwLock};
[INFO] [stdout]   |                 ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::order_core::manager::OrderManager`
[INFO] [stdout]   --> src/http/mod.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::order_core::manager::OrderManager;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::risk_manager::RiskManager`
[INFO] [stdout]   --> src/http/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::core::risk_manager::RiskManager;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/exchange/mocks.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::Mutex`
[INFO] [stdout]  --> src/exchange/mocks.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DateTime`
[INFO] [stdout]  --> src/exchange/mocks.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use chrono::{DateTime, Utc};
[INFO] [stdout]   |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/exchange/traits.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OrderType`
[INFO] [stdout]  --> src/exchange/traits.rs:7:57
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::models::order::{Order, OrderId, OrderStatus, OrderType};
[INFO] [stdout]   |                                                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/market_data/stream.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mutex` and `RwLock`
[INFO] [stdout]  --> src/market_data/stream.rs:3:30
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                              ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/market_data/websocket.rs:3:38
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `interval`
[INFO] [stdout]  --> src/market_data/websocket.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tokio::time::{interval, Duration};
[INFO] [stdout]   |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/market_data/fix.rs:3:38
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/order_core/manager.rs:3:38
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex};
[INFO] [stdout]   |                                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OrderSide` and `OrderType`
[INFO] [stdout]  --> src/order_core/manager.rs:8:57
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::models::order::{Order, OrderId, OrderStatus, OrderType, OrderSide};
[INFO] [stdout]   |                                                         ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/order_core/repository.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> src/order_core/repository.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/order_core/validator.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::signals::signal_types::SignalType`
[INFO] [stdout]  --> src/strategies/combined.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::signals::signal_types::SignalType;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `RwLock`
[INFO] [stdout]  --> src/strategies/technical.rs:8:17
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::{Arc, RwLock};
[INFO] [stdout]   |                 ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_trait::async_trait`
[INFO] [stdout]  --> src/strategies/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use async_trait::async_trait;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vwap::VwapStrategy`
[INFO] [stdout]   --> src/strategies/mod.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub use vwap::VwapStrategy;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `iceberg::IcebergStrategy`
[INFO] [stdout]   --> src/strategies/mod.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub use iceberg::IcebergStrategy;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `trailing_stop::TrailingStopStrategy`
[INFO] [stdout]   --> src/strategies/mod.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub use trailing_stop::TrailingStopStrategy;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `twap::TwapStrategy`
[INFO] [stdout]   --> src/strategies/mod.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub use twap::TwapStrategy;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `combined::CombinedStrategy`
[INFO] [stdout]   --> src/strategies/mod.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub use combined::CombinedStrategy;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/utils/logging.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `moving_averages::*`
[INFO] [stdout]   --> src/indicators/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use moving_averages::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `oscillators::*`
[INFO] [stdout]   --> src/indicators/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use oscillators::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `trend::*`
[INFO] [stdout]   --> src/indicators/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use trend::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `volume::*`
[INFO] [stdout]   --> src/indicators/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use volume::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `utils::*`
[INFO] [stdout]   --> src/indicators/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use utils::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]  --> src/signals/position_sizing.rs:9:27
[INFO] [stdout]   |
[INFO] [stdout] 9 | use super::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `signal_types::*`
[INFO] [stdout]   --> src/signals/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use signal_types::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `signal_analyzer::*`
[INFO] [stdout]   --> src/signals/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use signal_analyzer::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `position_sizing::*`
[INFO] [stdout]   --> src/signals/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use position_sizing::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `json`
[INFO] [stdout]   --> src/trading_bots/bot_config.rs:10:25
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde_json::{Value, json};
[INFO] [stdout]    |                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/trading_bots/base_bot.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/ma_crossover_bot.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/ma_crossover_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/rsi_bot.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, oscillators::RelativeStrengthIndex};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/rsi_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/macd_bot.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, trend::MACD};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/macd_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/trading_bots/multi_indicator_bot.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `IndicatorResult`
[INFO] [stdout]   --> src/trading_bots/multi_indicator_bot.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover, oscillators::RelativeStrengthIndex, tre...
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SignalType`
[INFO] [stdout]   --> src/trading_bots/multi_indicator_bot.rs:13:36
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::signals::signal_types::{SignalType, SignalWithMetadata};
[INFO] [stdout]    |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ma_crossover_bot::*`
[INFO] [stdout]   --> src/trading_bots/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use ma_crossover_bot::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rsi_bot::*`
[INFO] [stdout]   --> src/trading_bots/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use rsi_bot::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `macd_bot::*`
[INFO] [stdout]   --> src/trading_bots/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use macd_bot::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `multi_indicator_bot::*`
[INFO] [stdout]   --> src/trading_bots/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use multi_indicator_bot::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Utc`
[INFO] [stdout]   --> src/main.rs:30:14
[INFO] [stdout]    |
[INFO] [stdout] 30 | use chrono::{Utc, Duration};
[INFO] [stdout]    |              ^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/api/handlers.rs:461:11
[INFO] [stdout]     |
[INFO] [stdout] 461 |       let mut builder = BacktestScenarioBuilder::new(format!("{} 백테스트", req.strategy_type))
[INFO] [stdout]     |           ----^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/api/handlers.rs:461:11
[INFO] [stdout]     |
[INFO] [stdout] 461 |       let mut builder = BacktestScenarioBuilder::new(format!("{} 백테스트", req.strategy_type))
[INFO] [stdout]     |           ----^^^^^^^
[INFO] [stdout]     |           |
[INFO] [stdout]     |           help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/http/mod.rs:140:7
[INFO] [stdout]     |
[INFO] [stdout] 140 |   let mut s = TrailingStopStrategy::new(req.symbol.clone(), side, req.qty, req.callback, req.activation);
[INFO] [stdout]     |       ----^
[INFO] [stdout]     |       |
[INFO] [stdout]     |       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/http/mod.rs:140:7
[INFO] [stdout]     |
[INFO] [stdout] 140 |   let mut s = TrailingStopStrategy::new(req.symbol.clone(), side, req.qty, req.callback, req.activation);
[INFO] [stdout]     |       ----^
[INFO] [stdout]     |       |
[INFO] [stdout]     |       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:170:17
[INFO] [stdout]     |
[INFO] [stdout] 170 |             let mut cancelled_order = original_order.clone();
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:199:17
[INFO] [stdout]     |
[INFO] [stdout] 199 |             let mut repo = self.repository.write().await;
[INFO] [stdout]     |                 ----^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:200:25
[INFO] [stdout]     |
[INFO] [stdout] 200 |             if let Some(mut order) = repo.find_by_id(order_id).await? {
[INFO] [stdout]     |                         ----^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:256:29
[INFO] [stdout]     |
[INFO] [stdout] 256 |                         let mut repo = repository_clone.write().await;
[INFO] [stdout]     |                             ----^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:170:17
[INFO] [stdout]     |
[INFO] [stdout] 170 |             let mut cancelled_order = original_order.clone();
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:199:17
[INFO] [stdout]     |
[INFO] [stdout] 199 |             let mut repo = self.repository.write().await;
[INFO] [stdout]     |                 ----^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:200:25
[INFO] [stdout]     |
[INFO] [stdout] 200 |             if let Some(mut order) = repo.find_by_id(order_id).await? {
[INFO] [stdout]     |                         ----^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/order_core/manager.rs:256:29
[INFO] [stdout]     |
[INFO] [stdout] 256 |                         let mut repo = repository_clone.write().await;
[INFO] [stdout]     |                             ----^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead
[INFO] [stdout]    --> src/backtest/performance.rs:110:41
[INFO] [stdout]     |
[INFO] [stdout] 110 |       let date = chrono::NaiveDateTime::from_timestamp_millis(trade.timestamp)
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead
[INFO] [stdout]    --> src/backtest/performance.rs:111:51
[INFO] [stdout]     |
[INFO] [stdout] 111 |         .unwrap_or_else(|| chrono::NaiveDateTime::from_timestamp_opt(0, 0).unwrap())
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead
[INFO] [stdout]    --> src/backtest/performance.rs:110:41
[INFO] [stdout]     |
[INFO] [stdout] 110 |       let date = chrono::NaiveDateTime::from_timestamp_millis(trade.timestamp)
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead
[INFO] [stdout]    --> src/backtest/performance.rs:111:51
[INFO] [stdout]     |
[INFO] [stdout] 111 |         .unwrap_or_else(|| chrono::NaiveDateTime::from_timestamp_opt(0, 0).unwrap())
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead
[INFO] [stdout]   --> src/utils/mod.rs:13:30
[INFO] [stdout]    |
[INFO] [stdout] 13 |   let naive = NaiveDateTime::from_timestamp_opt(secs, nsecs).unwrap_or_default();
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead
[INFO] [stdout]   --> src/utils/mod.rs:13:30
[INFO] [stdout]    |
[INFO] [stdout] 13 |   let naive = NaiveDateTime::from_timestamp_opt(secs, nsecs).unwrap_or_default();
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::exchange::traits::Exchange`
[INFO] [stdout]   --> src/backtest/engine.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::exchange::traits::Exchange;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `exchange`
[INFO] [stdout]   --> src/api/handlers.rs:41:3
[INFO] [stdout]    |
[INFO] [stdout] 41 |   exchange: Arc<RwLock<dyn Exchange>>,
[INFO] [stdout]    |   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/api/handlers.rs:365:16
[INFO] [stdout]     |
[INFO] [stdout] 365 |     if let Err(e) = indicator.update(candle.close, Some(candle.volume)) {
[INFO] [stdout]     |                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::exchange::traits::Exchange`
[INFO] [stdout]   --> src/backtest/engine.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::exchange::traits::Exchange;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `exchange`
[INFO] [stdout]   --> src/api/handlers.rs:41:3
[INFO] [stdout]    |
[INFO] [stdout] 41 |   exchange: Arc<RwLock<dyn Exchange>>,
[INFO] [stdout]    |   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `exchange`
[INFO] [stdout]    --> src/api/handlers.rs:553:3
[INFO] [stdout]     |
[INFO] [stdout] 553 |   exchange: Arc<RwLock<dyn Exchange>>,
[INFO] [stdout]     |   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `strategy_manager`
[INFO] [stdout]    --> src/api/handlers.rs:554:3
[INFO] [stdout]     |
[INFO] [stdout] 554 |   strategy_manager: Arc<RwLock<StrategyManager>>,
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategy_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/api/handlers.rs:365:16
[INFO] [stdout]     |
[INFO] [stdout] 365 |     if let Err(e) = indicator.update(candle.close, Some(candle.volume)) {
[INFO] [stdout]     |                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `exchange`
[INFO] [stdout]    --> src/api/handlers.rs:553:3
[INFO] [stdout]     |
[INFO] [stdout] 553 |   exchange: Arc<RwLock<dyn Exchange>>,
[INFO] [stdout]     |   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `strategy_manager`
[INFO] [stdout]    --> src/api/handlers.rs:554:3
[INFO] [stdout]     |
[INFO] [stdout] 554 |   strategy_manager: Arc<RwLock<StrategyManager>>,
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategy_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config_filter`
[INFO] [stdout]   --> src/api/routes.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |     let config_filter = warp::any().map(move || config_clone.clone());
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_filter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth`
[INFO] [stdout]   --> src/api/routes.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let auth = warp::header::optional::<String>("authorization").and_then(move |auth_header: Option<String>| {
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_auth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth`
[INFO] [stdout]   --> src/api/routes.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |     let auth = warp::header::optional::<String>("authorization").and_then(move |auth_header: Option<String>| {
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_auth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config_filter`
[INFO] [stdout]   --> src/api/routes.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |     let config_filter = warp::any().map(move || config_clone.clone());
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_filter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth`
[INFO] [stdout]   --> src/api/routes.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let auth = warp::header::optional::<String>("authorization").and_then(move |auth_header: Option<String>| {
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_auth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth`
[INFO] [stdout]   --> src/api/routes.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |     let auth = warp::header::optional::<String>("authorization").and_then(move |auth_header: Option<String>| {
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_auth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_volume` is assigned to, but never used
[INFO] [stdout]    --> src/core/execution_analyzer.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |     let mut total_volume = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_volume` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_volume` is never read
[INFO] [stdout]    --> src/core/execution_analyzer.rs:144:7
[INFO] [stdout]     |
[INFO] [stdout] 144 |       total_volume += trade.quantity;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `total_volume` is assigned to, but never used
[INFO] [stdout]    --> src/core/execution_analyzer.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |     let mut total_volume = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_total_volume` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `total_volume` is never read
[INFO] [stdout]    --> src/core/execution_analyzer.rs:144:7
[INFO] [stdout]     |
[INFO] [stdout] 144 |       total_volume += trade.quantity;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `interval`
[INFO] [stdout]   --> src/market_data/stream.rs:69:55
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub fn start_aggregation(&mut self, symbol: &str, interval: u64) -> Result<(), TradingError> {
[INFO] [stdout]    |                                                       ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `receiver`
[INFO] [stdout]   --> src/market_data/stream.rs:74:13
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let receiver = self.get_receiver(symbol)?;
[INFO] [stdout]    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_receiver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sub_id`
[INFO] [stdout]    --> src/market_data/websocket.rs:132:21
[INFO] [stdout]     |
[INFO] [stdout] 132 |         if let Some(sub_id) = self.subscriptions.remove(symbol) {
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `host`
[INFO] [stdout]   --> src/market_data/fix.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let host = self.host.clone();
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_host`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]   --> src/market_data/fix.rs:57:13
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let port = self.port;
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `interval`
[INFO] [stdout]   --> src/market_data/stream.rs:69:55
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub fn start_aggregation(&mut self, symbol: &str, interval: u64) -> Result<(), TradingError> {
[INFO] [stdout]    |                                                       ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `receiver`
[INFO] [stdout]   --> src/market_data/stream.rs:74:13
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let receiver = self.get_receiver(symbol)?;
[INFO] [stdout]    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_receiver`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sub_id`
[INFO] [stdout]    --> src/market_data/websocket.rs:132:21
[INFO] [stdout]     |
[INFO] [stdout] 132 |         if let Some(sub_id) = self.subscriptions.remove(symbol) {
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `host`
[INFO] [stdout]   --> src/market_data/fix.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let host = self.host.clone();
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_host`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]   --> src/market_data/fix.rs:57:13
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let port = self.port;
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repo`
[INFO] [stdout]    --> src/order_core/manager.rs:256:29
[INFO] [stdout]     |
[INFO] [stdout] 256 |                         let mut repo = repository_clone.write().await;
[INFO] [stdout]     |                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_repo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]    --> src/order_core/repository.rs:101:22
[INFO] [stdout]     |
[INFO] [stdout] 101 |             .filter(|o| statuses.contains(&OrderStatus::New))  // 이 부분은 실제 주문의 상태를 확인해야 함
[INFO] [stdout]     |                      ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `market_data`
[INFO] [stdout]   --> src/strategies/trailing_stop.rs:80:17
[INFO] [stdout]    |
[INFO] [stdout] 80 |     if let Some(market_data) = &self.current_market_data {
[INFO] [stdout]    |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_market_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repo`
[INFO] [stdout]    --> src/order_core/manager.rs:256:29
[INFO] [stdout]     |
[INFO] [stdout] 256 |                         let mut repo = repository_clone.write().await;
[INFO] [stdout]     |                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_repo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]    --> src/order_core/repository.rs:101:22
[INFO] [stdout]     |
[INFO] [stdout] 101 |             .filter(|o| statuses.contains(&OrderStatus::New))  // 이 부분은 실제 주문의 상태를 확인해야 함
[INFO] [stdout]     |                      ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `exchange`
[INFO] [stdout]    --> src/main.rs:190:3
[INFO] [stdout]     |
[INFO] [stdout] 190 |   exchange: Arc<RwLock<dyn Exchange>>,
[INFO] [stdout]     |   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `market_stream`
[INFO] [stdout]    --> src/main.rs:191:3
[INFO] [stdout]     |
[INFO] [stdout] 191 |   market_stream: Arc<RwLock<MarketDataStream>>,
[INFO] [stdout]     |   ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_market_stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `market_data`
[INFO] [stdout]   --> src/strategies/trailing_stop.rs:80:17
[INFO] [stdout]    |
[INFO] [stdout] 80 |     if let Some(market_data) = &self.current_market_data {
[INFO] [stdout]    |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_market_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_strategies` is never used
[INFO] [stdout]   --> src/api/handlers.rs:20:14
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub async fn list_strategies(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateTAStrategyRequest` is never constructed
[INFO] [stdout]   --> src/api/handlers.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct CreateTAStrategyRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_ta_strategy` is never used
[INFO] [stdout]   --> src/api/handlers.rs:38:14
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub async fn create_ta_strategy(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_strategy_status` is never used
[INFO] [stdout]    --> src/api/handlers.rs:169:14
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub async fn get_strategy_status(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_strategy` is never used
[INFO] [stdout]    --> src/api/handlers.rs:189:14
[INFO] [stdout]     |
[INFO] [stdout] 189 | pub async fn delete_strategy(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ToggleStrategyRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub struct ToggleStrategyRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_strategy` is never used
[INFO] [stdout]    --> src/api/handlers.rs:221:14
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub async fn toggle_strategy(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IndicatorQuery` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout] 249 | pub struct IndicatorQuery {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IndicatorResponse` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:262:12
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub struct IndicatorResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IndicatorValue` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:270:12
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub struct IndicatorValue {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalInfo` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:276:12
[INFO] [stdout]     |
[INFO] [stdout] 276 | pub struct SignalInfo {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_indicators` is never used
[INFO] [stdout]    --> src/api/handlers.rs:284:14
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub async fn calculate_indicators(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BacktestPerformanceRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:403:12
[INFO] [stdout]     |
[INFO] [stdout] 403 | pub struct BacktestPerformanceRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_backtest_performance` is never used
[INFO] [stdout]    --> src/api/handlers.rs:412:14
[INFO] [stdout]     |
[INFO] [stdout] 412 | pub async fn calculate_backtest_performance(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PortfolioOptimizationRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:524:12
[INFO] [stdout]     |
[INFO] [stdout] 524 | pub struct PortfolioOptimizationRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `optimize_portfolio` is never used
[INFO] [stdout]    --> src/api/handlers.rs:533:14
[INFO] [stdout]     |
[INFO] [stdout] 533 | pub async fn optimize_portfolio(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze_trade_logs` is never used
[INFO] [stdout]    --> src/api/handlers.rs:552:14
[INFO] [stdout]     |
[INFO] [stdout] 552 | pub async fn analyze_trade_logs(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateOrderRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:577:12
[INFO] [stdout]     |
[INFO] [stdout] 577 | pub struct CreateOrderRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateOrderResponse` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:586:12
[INFO] [stdout]     |
[INFO] [stdout] 586 | pub struct CreateOrderResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_order` is never used
[INFO] [stdout]    --> src/api/handlers.rs:590:14
[INFO] [stdout]     |
[INFO] [stdout] 590 | pub async fn create_order(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_orders` is never used
[INFO] [stdout]    --> src/api/handlers.rs:610:14
[INFO] [stdout]     |
[INFO] [stdout] 610 | pub async fn get_orders(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cancel_order` is never used
[INFO] [stdout]    --> src/api/handlers.rs:624:14
[INFO] [stdout]     |
[INFO] [stdout] 624 | pub async fn cancel_order(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateVwapRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:642:12
[INFO] [stdout]     |
[INFO] [stdout] 642 | pub struct CreateVwapRequest { pub symbol: String, pub side: OrderSide, pub target_quantity: f64, pub execution_interval_ms: i64, p...
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_vwap_order` is never used
[INFO] [stdout]    --> src/api/handlers.rs:644:14
[INFO] [stdout]     |
[INFO] [stdout] 644 | pub async fn create_vwap_order(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_vwap_status` is never used
[INFO] [stdout]    --> src/api/handlers.rs:666:14
[INFO] [stdout]     |
[INFO] [stdout] 666 | pub async fn get_vwap_status(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cancel_vwap_order` is never used
[INFO] [stdout]    --> src/api/handlers.rs:677:14
[INFO] [stdout]     |
[INFO] [stdout] 677 | pub async fn cancel_vwap_order(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateIcebergRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:690:12
[INFO] [stdout]     |
[INFO] [stdout] 690 | pub struct CreateIcebergRequest { pub symbol: String, pub side: OrderSide, pub total_quantity: f64, pub display_size: f64 }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_iceberg_order` is never used
[INFO] [stdout]    --> src/api/handlers.rs:692:14
[INFO] [stdout]     |
[INFO] [stdout] 692 | pub async fn create_iceberg_order(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_iceberg_status` is never used
[INFO] [stdout]    --> src/api/handlers.rs:712:14
[INFO] [stdout]     |
[INFO] [stdout] 712 | pub async fn get_iceberg_status(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cancel_iceberg_order` is never used
[INFO] [stdout]    --> src/api/handlers.rs:723:14
[INFO] [stdout]     |
[INFO] [stdout] 723 | pub async fn cancel_iceberg_order(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateTrailingStopRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:736:12
[INFO] [stdout]     |
[INFO] [stdout] 736 | pub struct CreateTrailingStopRequest { pub symbol: String, pub side: OrderSide, pub quantity: f64, pub trailing_delta: f64 }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_trailing_stop` is never used
[INFO] [stdout]    --> src/api/handlers.rs:738:14
[INFO] [stdout]     |
[INFO] [stdout] 738 | pub async fn create_trailing_stop(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_trailing_stop_status` is never used
[INFO] [stdout]    --> src/api/handlers.rs:756:14
[INFO] [stdout]     |
[INFO] [stdout] 756 | pub async fn get_trailing_stop_status(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cancel_trailing_stop` is never used
[INFO] [stdout]    --> src/api/handlers.rs:767:14
[INFO] [stdout]     |
[INFO] [stdout] 767 | pub async fn cancel_trailing_stop(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SetPositionModeRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:781:12
[INFO] [stdout]     |
[INFO] [stdout] 781 | pub struct SetPositionModeRequest { pub hedge: bool }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_position_mode` is never used
[INFO] [stdout]    --> src/api/handlers.rs:783:14
[INFO] [stdout]     |
[INFO] [stdout] 783 | pub async fn set_position_mode(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SetMarginModeRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:798:12
[INFO] [stdout]     |
[INFO] [stdout] 798 | pub struct SetMarginModeRequest { pub symbol: String, pub isolated: bool }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_margin_mode` is never used
[INFO] [stdout]    --> src/api/handlers.rs:800:14
[INFO] [stdout]     |
[INFO] [stdout] 800 | pub async fn set_margin_mode(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SetLeverageRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:815:12
[INFO] [stdout]     |
[INFO] [stdout] 815 | pub struct SetLeverageRequest { pub symbol: String, pub leverage: u32 }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_leverage` is never used
[INFO] [stdout]    --> src/api/handlers.rs:817:14
[INFO] [stdout]     |
[INFO] [stdout] 817 | pub async fn set_leverage(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FuturesSettingsRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:832:12
[INFO] [stdout]     |
[INFO] [stdout] 832 | pub struct FuturesSettingsRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FuturesSettingsResponse` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:839:12
[INFO] [stdout]     |
[INFO] [stdout] 839 | pub struct FuturesSettingsResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_futures_settings` is never used
[INFO] [stdout]    --> src/api/handlers.rs:845:14
[INFO] [stdout]     |
[INFO] [stdout] 845 | pub async fn apply_futures_settings(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarketDataResponse` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:886:12
[INFO] [stdout]     |
[INFO] [stdout] 886 | pub struct MarketDataResponse { pub symbol: String, pub data: crate::models::market_data::MarketData }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_market_data` is never used
[INFO] [stdout]    --> src/api/handlers.rs:888:14
[INFO] [stdout]     |
[INFO] [stdout] 888 | pub async fn get_market_data(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_routes` is never used
[INFO] [stdout]   --> src/api/routes.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn create_routes(
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `exchange`, `fee_rate`, and `slippage` are never read
[INFO] [stdout]   --> src/backtest/engine.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct BacktestEngine {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     exchange: MockExchange,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 26 |     initial_balance: HashMap<String, f64>,
[INFO] [stdout] 27 |     fee_rate: f64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 28 |     slippage: f64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_market_data` is never used
[INFO] [stdout]   --> src/backtest/engine.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl BacktestEngine {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn add_market_data(&mut self, symbol: &str, data: Vec<MarketData>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `description` is never read
[INFO] [stdout]   --> src/backtest/scenario.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct BacktestScenario {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 15 |     name: String,
[INFO] [stdout] 16 |     description: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `description` is never used
[INFO] [stdout]   --> src/backtest/scenario.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl BacktestScenario {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn description(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `symbol` and `csv_delimiter` are never used
[INFO] [stdout]    --> src/backtest/scenario.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl BacktestScenarioBuilder {
[INFO] [stdout]     | ---------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn symbol(mut self, symbol: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn csv_delimiter(mut self, delimiter: char) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarketDataRequest` is never constructed
[INFO] [stdout]   --> src/prediction_client.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct MarketDataRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BacktestRequest` is never constructed
[INFO] [stdout]   --> src/prediction_client.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct BacktestRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BacktestResult` is never constructed
[INFO] [stdout]   --> src/prediction_client.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct BacktestResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BacktestMetrics` is never constructed
[INFO] [stdout]   --> src/prediction_client.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct BacktestMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PredictionRequest` is never constructed
[INFO] [stdout]   --> src/prediction_client.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct PredictionRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PredictionResponse` is never constructed
[INFO] [stdout]   --> src/prediction_client.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct PredictionResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `run_backtest`, `get_prediction`, and `list_strategies` are never used
[INFO] [stdout]    --> src/prediction_client.rs:129:18
[INFO] [stdout]     |
[INFO] [stdout]  95 | impl PredictionClient {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub async fn run_backtest(&self, request: BacktestRequest) -> Result<BacktestResult> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub async fn get_prediction(&self, request: PredictionRequest) -> Result<PredictionResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub async fn list_strategies(&self) -> Result<Vec<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PredictionBasedBot` is never constructed
[INFO] [stdout]    --> src/prediction_client.rs:181:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub struct PredictionBasedBot {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_next_action`, and `update_position` are never used
[INFO] [stdout]    --> src/prediction_client.rs:190:12
[INFO] [stdout]     |
[INFO] [stdout] 189 | impl PredictionBasedBot {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] 190 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub async fn get_next_action(&mut self) -> Result<TradingAction> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn update_position(&mut self, position: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TradingAction` is never used
[INFO] [stdout]    --> src/prediction_client.rs:252:10
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub enum TradingAction {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VwapSplitter` is never constructed
[INFO] [stdout]   --> src/core/vwap_splitter.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct VwapSplitter {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/vwap_splitter.rs:38:10
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl VwapSplitter {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  37 |   /// 새 VWAP 분할기 생성
[INFO] [stdout]  38 |   pub fn new(
[INFO] [stdout]     |          ^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |   pub async fn start(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |   pub async fn stop(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |   pub fn status(&self) -> (bool, f64, f64) {
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |   async fn get_historical_vwap_data(&self) -> Result<Vec<MarketData>, TradingError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |   fn calculate_volume_profile(&self, data: Vec<MarketData>) -> Vec<f64> {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |   async fn create_child_order(&self, quantity: f64) -> Result<OrderId, TradingError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IcebergManager` is never constructed
[INFO] [stdout]   --> src/core/iceberg_manager.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct IcebergManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `start`, `stop`, `status`, `submit_visible_portion`, and `update_price` are never used
[INFO] [stdout]    --> src/core/iceberg_manager.rs:42:10
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl IcebergManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  41 |   /// 새 Iceberg 관리자 생성
[INFO] [stdout]  42 |   pub fn new(
[INFO] [stdout]     |          ^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |   pub async fn start(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |   pub async fn stop(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |   pub fn status(&self) -> (bool, f64, f64) {
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |   async fn submit_visible_portion(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |   pub async fn update_price(&mut self, new_price: f64) -> Result<(), TradingError> {
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrailingStopManager` is never constructed
[INFO] [stdout]   --> src/core/trailing_stop_manager.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct TrailingStopManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `start`, `stop`, `status`, and `update_delta` are never used
[INFO] [stdout]    --> src/core/trailing_stop_manager.rs:44:10
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl TrailingStopManager {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout]  43 |   /// 새 Trailing Stop 관리자 생성
[INFO] [stdout]  44 |   pub fn new(
[INFO] [stdout]     |          ^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |   pub async fn start(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |   pub async fn stop(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |   pub fn status(&self) -> (bool, bool, f64, f64) {
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |   pub async fn update_delta(&mut self, new_delta: f64) -> Result<(), TradingError> {
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TwapSplitter` is never constructed
[INFO] [stdout]   --> src/core/twap_splitter.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct TwapSplitter {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `start`, `stop`, `status`, and `create_child_order` are never used
[INFO] [stdout]    --> src/core/twap_splitter.rs:40:10
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl TwapSplitter {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  39 |   /// 새 TWAP 분할기 생성
[INFO] [stdout]  40 |   pub fn new(
[INFO] [stdout]     |          ^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |   pub async fn start(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |   pub async fn stop(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |   pub fn status(&self) -> (bool, f64, f64) {
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |   async fn create_child_order(&self, quantity: f64) -> Result<OrderId, TradingError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskManager` is never constructed
[INFO] [stdout]   --> src/core/risk_manager.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RiskManager {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/risk_manager.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl RiskManager {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  31 |     /// 새 리스크 관리자 생성
[INFO] [stdout]  32 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub fn set_max_position_size(&mut self, symbol: impl Into<String>, size: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub async fn check_order(&mut self, order: &Order) -> Result<bool, TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub async fn update_positions(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn get_position_size(&self, symbol: &str) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn get_unrealized_pnl(&self, symbol: &str) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn record_pnl(&mut self, amount: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn reset_daily_loss(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn get_positions(&self) -> Vec<&Position> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExecutionAnalyzer` is never constructed
[INFO] [stdout]   --> src/core/execution_analyzer.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct ExecutionAnalyzer {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/execution_analyzer.rs:34:10
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl ExecutionAnalyzer {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout]  33 |   /// 새 실행 분석기 생성
[INFO] [stdout]  34 |   pub fn new(symbol: impl Into<String>) -> Self {
[INFO] [stdout]     |          ^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |   pub fn add_trade(&mut self, trade: Trade) {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |   pub fn add_market_data(&mut self, data: MarketData) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |   pub fn calculate_metrics(&mut self) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |   fn calculate_vwap(&mut self) {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |   fn calculate_twap(&mut self) {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |   fn calculate_slippage(&mut self) {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |   fn calculate_market_impact(&mut self) {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |   pub fn get_report(&self) -> HashMap<String, f64> {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_orders_from_strategy` and `get_strategy_status` are never used
[INFO] [stdout]    --> src/core/strategy_manager.rs:103:10
[INFO] [stdout]     |
[INFO] [stdout]  21 | impl StrategyManager {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |   pub fn get_orders_from_strategy(&mut self, name: &str) -> Result<Vec<Order>, TradingError> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |   pub fn get_strategy_status(&self, name: &str) -> Result<(String, bool), TradingError> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/error.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum TradingError {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 27 |     ExecutionError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     AlreadyRunning(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     NotSubscribed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     LockError,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     TaskNotFound(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     NoAvailableProvider,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     InsufficientBalance,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     RiskLimitExceeded(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     MissingData(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TradingError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/exchange/mocks.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct MockExchange {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 19 |     config: Config,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `modify_order`, `get_recent_trades`, `get_historical_data`, and `get_balance` are never used
[INFO] [stdout]   --> src/exchange/traits.rs:21:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait Exchange: Send + Sync {
[INFO] [stdout]    |           -------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 21 |     async fn modify_order(&mut self, order_id: &OrderId, order: Order) -> Result<OrderId, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     async fn get_recent_trades(&self, symbol: &str, limit: Option<usize>) -> Result<Vec<Trade>, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     async fn get_historical_data(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     async fn get_balance(&self, asset: &str) -> Result<f64, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_mid_price` is never used
[INFO] [stdout]    --> src/exchange/binance_futures.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl BinanceFuturesExchange {
[INFO] [stdout]     | --------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |   async fn get_mid_price(&self, symbol: &str) -> Result<f64, TradingError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DryRunExchange` is never constructed
[INFO] [stdout]   --> src/exchange/dry_run.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct DryRunExchange;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `ts` are never used
[INFO] [stdout]   --> src/exchange/dry_run.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl DryRunExchange {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] 13 |   pub fn new() -> Self { Self }
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 14 |   fn ts() -> i64 { SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() as i64 }
[INFO] [stdout]    |      ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `unsubscribe`, `get_receiver`, `get_current_data`, `is_connected`, and `disconnect` are never used
[INFO] [stdout]   --> src/market_data/provider.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait MarketDataProvider: Send + Sync {
[INFO] [stdout]    |           ------------------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 15 |     async fn unsubscribe(&mut self, symbol: &str) -> Result<(), TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     fn get_receiver(&self, symbol: &str) -> Result<broadcast::Receiver<MarketData>, TradingError>;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     async fn get_current_data(&self, symbol: &str) -> Result<MarketData, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     async fn is_connected(&self) -> bool;
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     async fn disconnect(&mut self) -> Result<(), TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `unsubscribe_all`, `disconnect_all`, `get_receiver`, and `get_current_data` are never used
[INFO] [stdout]    --> src/market_data/provider.rs:67:18
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl MarketDataManager {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub async fn unsubscribe_all(&mut self, symbol: &str) -> Result<(), TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub async fn disconnect_all(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub async fn get_receiver(&self, symbol: &str) -> Result<broadcast::Receiver<MarketData>, TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub async fn get_current_data(&self, symbol: &str) -> Result<MarketData, TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `buffer_size` and `aggregation_tasks` are never read
[INFO] [stdout]   --> src/market_data/stream.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct MarketDataStream {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     buffer_size: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 14 |     aggregation_tasks: HashMap<String, JoinHandle<()>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_or_create_channel`, `get_latest_data`, `get_receiver`, `start_aggregation`, and `stop_aggregation` are never used
[INFO] [stdout]   --> src/market_data/stream.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl MarketDataStream {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn get_or_create_channel(&mut self, symbol: &str) -> broadcast::Sender<MarketData> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn get_latest_data(&self, symbol: &str) -> Option<MarketData> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn get_receiver(&self, symbol: &str) -> Result<broadcast::Receiver<MarketData>, TradingError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn start_aggregation(&mut self, symbol: &str, interval: u64) -> Result<(), TradingError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn stop_aggregation(&mut self, symbol: &str) -> Result<(), TradingError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reconnect_interval` is never read
[INFO] [stdout]   --> src/market_data/websocket.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct WebSocketProvider {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     reconnect_interval: Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FixProvider` is never constructed
[INFO] [stdout]   --> src/market_data/fix.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct FixProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `start_fix_session` are never used
[INFO] [stdout]   --> src/market_data/fix.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl FixProvider {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 27 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     async fn start_fix_session(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `vwap` are never used
[INFO] [stdout]   --> src/models/market_data.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl MarketData {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn vwap(&self) -> f64 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_stop_price`, `with_time_in_force`, `with_client_order_id`, `with_trailing_delta`, and `with_vwap_params` are never used
[INFO] [stdout]    --> src/models/order.rs:92:12
[INFO] [stdout]     |
[INFO] [stdout]  64 | impl Order {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn with_stop_price(mut self, stop_price: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn with_time_in_force(mut self, time_in_force: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn with_client_order_id(mut self, client_order_id: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn with_trailing_delta(mut self, trailing_delta: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn with_vwap_params(mut self, execution_interval: i64, target_percentage: Option<f64>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_long` and `is_short` are never used
[INFO] [stdout]   --> src/models/position.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Position {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn is_long(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn is_short(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `value` are never used
[INFO] [stdout]   --> src/models/trade.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Trade {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 17 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn value(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_validator`, `cancel_order`, `modify_order`, `get_order_status`, `get_open_orders`, and `subscribe_to_status_updates` are never used
[INFO] [stdout]    --> src/order_core/manager.rs:34:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl OrderManager {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn add_validator(&mut self, validator: Box<dyn OrderValidator>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub async fn cancel_order(&self, order_id: &OrderId) -> Result<(), TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub async fn modify_order(&self, order_id: &OrderId, new_params: Order) -> Result<OrderId, TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub async fn get_order_status(&self, order_id: &OrderId) -> Result<OrderStatus, TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub async fn get_open_orders(&self) -> Result<Vec<Order>, TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn subscribe_to_status_updates(&mut self, client_order_id: &str) -> broadcast::Receiver<OrderStatus> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_by_id`, `find_by_client_id`, `find_by_symbol`, `find_all`, and `delete` are never used
[INFO] [stdout]   --> src/order_core/repository.rs:19:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub trait OrderRepository: Send + Sync {
[INFO] [stdout]    |           --------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 19 |     async fn find_by_id(&self, order_id: &OrderId) -> Result<Option<Order>, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     async fn find_by_client_id(&self, client_id: &str) -> Result<Option<Order>, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     async fn find_by_symbol(&self, symbol: &str) -> Result<Vec<Order>, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     async fn find_all(&self) -> Result<Vec<Order>, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     async fn delete(&mut self, order_id: &OrderId) -> Result<(), TradingError>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BasicOrderValidator` is never constructed
[INFO] [stdout]   --> src/order_core/validator.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct BasicOrderValidator {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/order_core/validator.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl BasicOrderValidator {
[INFO] [stdout]    | ------------------------ associated function in this implementation
[INFO] [stdout] 19 |     pub fn new(min_order_size: f64, max_order_size: f64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskOrderValidator` is never constructed
[INFO] [stdout]   --> src/order_core/validator.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct RiskOrderValidator {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/order_core/validator.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl RiskOrderValidator {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 62 |     pub fn new(max_position_size: f64, max_notional_value: f64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `StrategyFactory` is never used
[INFO] [stdout]   --> src/strategies/mod.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait StrategyFactory: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `execution_interval` is never read
[INFO] [stdout]   --> src/strategies/vwap.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct VwapStrategy {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     execution_interval: i64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `entry_price` is never read
[INFO] [stdout]   --> src/strategies/trailing_stop.rs:23:3
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct TrailingStopStrategy {
[INFO] [stdout]    |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |   entry_price: Option<f64>,
[INFO] [stdout]    |   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_entry_price` is never used
[INFO] [stdout]   --> src/strategies/trailing_stop.rs:72:10
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl TrailingStopStrategy {
[INFO] [stdout]    | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 72 |   pub fn set_entry_price(&mut self, price: f64) {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `execution_interval` is never read
[INFO] [stdout]   --> src/strategies/twap.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct TwapStrategy {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     execution_interval: i64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `symbol` is never read
[INFO] [stdout]   --> src/strategies/combined.rs:11:3
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct CombinedStrategy {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 10 |   name: String,
[INFO] [stdout] 11 |   symbol: String,
[INFO] [stdout]    |   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `ma_crossover_iceberg` is never used
[INFO] [stdout]    --> src/strategies/combined.rs:100:10
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl CombinedStrategy {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 100 |   pub fn ma_crossover_iceberg(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `timestamp_to_datetime` is never used
[INFO] [stdout]   --> src/utils/mod.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn timestamp_to_datetime(timestamp_ms: i64) -> DateTime<Utc> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `datetime_to_timestamp` is never used
[INFO] [stdout]   --> src/utils/mod.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn datetime_to_timestamp(dt: DateTime<Utc>) -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_timestamp_ms` is never used
[INFO] [stdout]   --> src/utils/mod.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn current_timestamp_ms() -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_timestamp` is never used
[INFO] [stdout]   --> src/utils/mod.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn format_timestamp(timestamp_ms: i64, format: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `time_diff_seconds` is never used
[INFO] [stdout]   --> src/utils/mod.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn time_diff_seconds(start_ts: i64, end_ts: i64) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_time_slices` is never used
[INFO] [stdout]   --> src/utils/mod.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub fn calculate_time_slices(start_ts: i64, end_ts: i64, num_slices: usize) -> Vec<i64> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_trading_start` is never used
[INFO] [stdout]   --> src/utils/logging.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn log_trading_start(strategy_name: &str, symbol: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_trading_end` is never used
[INFO] [stdout]   --> src/utils/logging.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn log_trading_end(strategy_name: &str, symbol: &str, result: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_order_created` is never used
[INFO] [stdout]   --> src/utils/logging.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn log_order_created(order_id: &str, symbol: &str, side: &str, quantity: f64, price: f64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_order_cancelled` is never used
[INFO] [stdout]   --> src/utils/logging.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn log_order_cancelled(order_id: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_order_filled` is never used
[INFO] [stdout]   --> src/utils/logging.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn log_order_filled(order_id: &str, symbol: &str, quantity: f64, price: f64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_error` is never used
[INFO] [stdout]   --> src/utils/logging.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn log_error(context: &str, error: &TradingError) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message` is never read
[INFO] [stdout]   --> src/indicators/mod.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct IndicatorSignal {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 31 |   pub message: String,
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IndicatorSignal` 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: method `reset` is never used
[INFO] [stdout]   --> src/indicators/mod.rs:47:6
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub trait Indicator: Debug + Send + Sync {
[INFO] [stdout]    |           --------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 47 |   fn reset(&mut self);
[INFO] [stdout]    |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `period` is never used
[INFO] [stdout]   --> src/indicators/moving_averages.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl SimpleMovingAverage {
[INFO] [stdout]    | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |   pub fn period(&self) -> usize {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `period` is never used
[INFO] [stdout]    --> src/indicators/moving_averages.rs:103:10
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl ExponentialMovingAverage {
[INFO] [stdout]     | ----------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |   pub fn period(&self) -> usize {
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `period` is never used
[INFO] [stdout]   --> src/indicators/oscillators.rs:42:10
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RelativeStrengthIndex {
[INFO] [stdout]    | -------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |   pub fn period(&self) -> usize {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VolumeWeightedAveragePrice` is never constructed
[INFO] [stdout]   --> src/indicators/volume.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct VolumeWeightedAveragePrice {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/indicators/volume.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl VolumeWeightedAveragePrice {
[INFO] [stdout]    | ------------------------------- associated function in this implementation
[INFO] [stdout] 22 |   pub fn new(period: usize) -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_indicators` is never used
[INFO] [stdout]   --> src/indicators/utils.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn update_indicators(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_indicators_with_market_data` is never used
[INFO] [stdout]   --> src/indicators/utils.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn update_indicators_with_market_data(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reset_indicators` is never used
[INFO] [stdout]   --> src/indicators/utils.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn reset_indicators(indicators: &mut [Box<dyn Indicator>]) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `CloseLong` and `CloseShort` are never constructed
[INFO] [stdout]   --> src/signals/signal_types.rs:20:3
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum SignalType {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 20 |   CloseLong,       // 롱 포지션 청산
[INFO] [stdout]    |   ^^^^^^^^^
[INFO] [stdout] 21 |   CloseShort,      // 숏 포지션 청산
[INFO] [stdout]    |   ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SignalType` 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 `is_buy`, `is_sell`, and `is_reduce` are never used
[INFO] [stdout]   --> src/signals/signal_types.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl SignalType {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |   pub fn is_buy(&self) -> bool {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |   pub fn is_sell(&self) -> bool {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |   pub fn is_reduce(&self) -> bool {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `source`, `timestamp`, and `additional_info` are never read
[INFO] [stdout]   --> src/signals/signal_types.rs:59:7
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct SignalWithMetadata {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 58 |   pub signal_type: SignalType,
[INFO] [stdout] 59 |   pub source: String,
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 60 |   pub strength: f64,  // -1.0 ~ 1.0
[INFO] [stdout] 61 |   pub timestamp: DateTime<Utc>,
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 62 |   pub confidence: f64, // 0.0 ~ 1.0
[INFO] [stdout] 63 |   pub additional_info: HashMap<String, String>,
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SignalWithMetadata` 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: associated items `new` and `add_info` are never used
[INFO] [stdout]   --> src/signals/signal_types.rs:67:10
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl SignalWithMetadata {
[INFO] [stdout]    | ----------------------- associated items in this implementation
[INFO] [stdout] 67 |   pub fn new(signal_type: SignalType, source: String, strength: f64) -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] ...
[INFO] [stdout] 96 |   pub fn add_info(mut self, key: &str, value: &str) -> Self {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_weight` is never used
[INFO] [stdout]   --> src/signals/signal_analyzer.rs:42:10
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl SignalAnalyzer {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |   pub fn set_weight(&mut self, indicator_name: &str, weight: f64) {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KellyPositionSizer` is never constructed
[INFO] [stdout]   --> src/signals/position_sizing.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct KellyPositionSizer {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/signals/position_sizing.rs:57:10
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl KellyPositionSizer {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 57 |   pub fn new(max_risk: f64, win_rate: f64, reward_risk: f64) -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_bool` is never used
[INFO] [stdout]   --> src/trading_bots/bot_config.rs:81:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl TradingBotConfig {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81 |   pub fn get_bool(&self, key: &str) -> Result<bool, TradingError> {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `evaluate_signals`, `config`, `update_config`, `reset`, and `name` are never used
[INFO] [stdout]   --> src/trading_bots/base_bot.rs:20:6
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub trait TradingBot: Send + Sync {
[INFO] [stdout]    |           ---------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 20 |   fn evaluate_signals(&self) -> Result<Vec<SignalWithMetadata>, TradingError>;
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |   fn config(&self) -> &TradingBotConfig;
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |   fn update_config(&mut self, config: TradingBotConfig) -> Result<(), TradingError>;
[INFO] [stdout]    |      ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |   fn reset(&mut self);
[INFO] [stdout]    |      ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |   fn name(&self) -> &str {
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_bot` is never used
[INFO] [stdout]   --> src/trading_bots/base_bot.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn create_bot(symbol: &str, config: TradingBotConfig) -> Result<Box<dyn TradingBot>, TradingError> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/trading_bots/ma_crossover_bot.rs:19:3
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct MACrossoverBot {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 18 |   symbol: String,
[INFO] [stdout] 19 |   config: TradingBotConfig,
[INFO] [stdout]    |   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/trading_bots/rsi_bot.rs:19:3
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct RSIBot {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] 18 |   symbol: String,
[INFO] [stdout] 19 |   config: TradingBotConfig,
[INFO] [stdout]    |   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/trading_bots/macd_bot.rs:19:3
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct MACDBot {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] 18 |   symbol: String,
[INFO] [stdout] 19 |   config: TradingBotConfig,
[INFO] [stdout]    |   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/trading_bots/multi_indicator_bot.rs:21:3
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct MultiIndicatorBot {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 20 |   symbol: String,
[INFO] [stdout] 21 |   config: TradingBotConfig,
[INFO] [stdout]    |   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `exchange`
[INFO] [stdout]    --> src/main.rs:190:3
[INFO] [stdout]     |
[INFO] [stdout] 190 |   exchange: Arc<RwLock<dyn Exchange>>,
[INFO] [stdout]     |   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `market_stream`
[INFO] [stdout]    --> src/main.rs:191:3
[INFO] [stdout]     |
[INFO] [stdout] 191 |   market_stream: Arc<RwLock<MarketDataStream>>,
[INFO] [stdout]     |   ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_market_stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_strategies` is never used
[INFO] [stdout]   --> src/api/handlers.rs:20:14
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub async fn list_strategies(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateTAStrategyRequest` is never constructed
[INFO] [stdout]   --> src/api/handlers.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct CreateTAStrategyRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_ta_strategy` is never used
[INFO] [stdout]   --> src/api/handlers.rs:38:14
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub async fn create_ta_strategy(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_strategy_status` is never used
[INFO] [stdout]    --> src/api/handlers.rs:169:14
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub async fn get_strategy_status(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_strategy` is never used
[INFO] [stdout]    --> src/api/handlers.rs:189:14
[INFO] [stdout]     |
[INFO] [stdout] 189 | pub async fn delete_strategy(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ToggleStrategyRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub struct ToggleStrategyRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_strategy` is never used
[INFO] [stdout]    --> src/api/handlers.rs:221:14
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub async fn toggle_strategy(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IndicatorQuery` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout] 249 | pub struct IndicatorQuery {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IndicatorResponse` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:262:12
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub struct IndicatorResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IndicatorValue` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:270:12
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub struct IndicatorValue {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignalInfo` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:276:12
[INFO] [stdout]     |
[INFO] [stdout] 276 | pub struct SignalInfo {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_indicators` is never used
[INFO] [stdout]    --> src/api/handlers.rs:284:14
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub async fn calculate_indicators(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BacktestPerformanceRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:403:12
[INFO] [stdout]     |
[INFO] [stdout] 403 | pub struct BacktestPerformanceRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_backtest_performance` is never used
[INFO] [stdout]    --> src/api/handlers.rs:412:14
[INFO] [stdout]     |
[INFO] [stdout] 412 | pub async fn calculate_backtest_performance(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PortfolioOptimizationRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:524:12
[INFO] [stdout]     |
[INFO] [stdout] 524 | pub struct PortfolioOptimizationRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `optimize_portfolio` is never used
[INFO] [stdout]    --> src/api/handlers.rs:533:14
[INFO] [stdout]     |
[INFO] [stdout] 533 | pub async fn optimize_portfolio(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze_trade_logs` is never used
[INFO] [stdout]    --> src/api/handlers.rs:552:14
[INFO] [stdout]     |
[INFO] [stdout] 552 | pub async fn analyze_trade_logs(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateOrderRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:577:12
[INFO] [stdout]     |
[INFO] [stdout] 577 | pub struct CreateOrderRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateOrderResponse` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:586:12
[INFO] [stdout]     |
[INFO] [stdout] 586 | pub struct CreateOrderResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_order` is never used
[INFO] [stdout]    --> src/api/handlers.rs:590:14
[INFO] [stdout]     |
[INFO] [stdout] 590 | pub async fn create_order(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_orders` is never used
[INFO] [stdout]    --> src/api/handlers.rs:610:14
[INFO] [stdout]     |
[INFO] [stdout] 610 | pub async fn get_orders(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cancel_order` is never used
[INFO] [stdout]    --> src/api/handlers.rs:624:14
[INFO] [stdout]     |
[INFO] [stdout] 624 | pub async fn cancel_order(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateVwapRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:642:12
[INFO] [stdout]     |
[INFO] [stdout] 642 | pub struct CreateVwapRequest { pub symbol: String, pub side: OrderSide, pub target_quantity: f64, pub execution_interval_ms: i64, p...
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_vwap_order` is never used
[INFO] [stdout]    --> src/api/handlers.rs:644:14
[INFO] [stdout]     |
[INFO] [stdout] 644 | pub async fn create_vwap_order(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_vwap_status` is never used
[INFO] [stdout]    --> src/api/handlers.rs:666:14
[INFO] [stdout]     |
[INFO] [stdout] 666 | pub async fn get_vwap_status(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cancel_vwap_order` is never used
[INFO] [stdout]    --> src/api/handlers.rs:677:14
[INFO] [stdout]     |
[INFO] [stdout] 677 | pub async fn cancel_vwap_order(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateIcebergRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:690:12
[INFO] [stdout]     |
[INFO] [stdout] 690 | pub struct CreateIcebergRequest { pub symbol: String, pub side: OrderSide, pub total_quantity: f64, pub display_size: f64 }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_iceberg_order` is never used
[INFO] [stdout]    --> src/api/handlers.rs:692:14
[INFO] [stdout]     |
[INFO] [stdout] 692 | pub async fn create_iceberg_order(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_iceberg_status` is never used
[INFO] [stdout]    --> src/api/handlers.rs:712:14
[INFO] [stdout]     |
[INFO] [stdout] 712 | pub async fn get_iceberg_status(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cancel_iceberg_order` is never used
[INFO] [stdout]    --> src/api/handlers.rs:723:14
[INFO] [stdout]     |
[INFO] [stdout] 723 | pub async fn cancel_iceberg_order(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateTrailingStopRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:736:12
[INFO] [stdout]     |
[INFO] [stdout] 736 | pub struct CreateTrailingStopRequest { pub symbol: String, pub side: OrderSide, pub quantity: f64, pub trailing_delta: f64 }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_trailing_stop` is never used
[INFO] [stdout]    --> src/api/handlers.rs:738:14
[INFO] [stdout]     |
[INFO] [stdout] 738 | pub async fn create_trailing_stop(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_trailing_stop_status` is never used
[INFO] [stdout]    --> src/api/handlers.rs:756:14
[INFO] [stdout]     |
[INFO] [stdout] 756 | pub async fn get_trailing_stop_status(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cancel_trailing_stop` is never used
[INFO] [stdout]    --> src/api/handlers.rs:767:14
[INFO] [stdout]     |
[INFO] [stdout] 767 | pub async fn cancel_trailing_stop(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SetPositionModeRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:781:12
[INFO] [stdout]     |
[INFO] [stdout] 781 | pub struct SetPositionModeRequest { pub hedge: bool }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_position_mode` is never used
[INFO] [stdout]    --> src/api/handlers.rs:783:14
[INFO] [stdout]     |
[INFO] [stdout] 783 | pub async fn set_position_mode(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SetMarginModeRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:798:12
[INFO] [stdout]     |
[INFO] [stdout] 798 | pub struct SetMarginModeRequest { pub symbol: String, pub isolated: bool }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_margin_mode` is never used
[INFO] [stdout]    --> src/api/handlers.rs:800:14
[INFO] [stdout]     |
[INFO] [stdout] 800 | pub async fn set_margin_mode(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SetLeverageRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:815:12
[INFO] [stdout]     |
[INFO] [stdout] 815 | pub struct SetLeverageRequest { pub symbol: String, pub leverage: u32 }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_leverage` is never used
[INFO] [stdout]    --> src/api/handlers.rs:817:14
[INFO] [stdout]     |
[INFO] [stdout] 817 | pub async fn set_leverage(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FuturesSettingsRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:832:12
[INFO] [stdout]     |
[INFO] [stdout] 832 | pub struct FuturesSettingsRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FuturesSettingsResponse` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:839:12
[INFO] [stdout]     |
[INFO] [stdout] 839 | pub struct FuturesSettingsResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_futures_settings` is never used
[INFO] [stdout]    --> src/api/handlers.rs:845:14
[INFO] [stdout]     |
[INFO] [stdout] 845 | pub async fn apply_futures_settings(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarketDataResponse` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:886:12
[INFO] [stdout]     |
[INFO] [stdout] 886 | pub struct MarketDataResponse { pub symbol: String, pub data: crate::models::market_data::MarketData }
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_market_data` is never used
[INFO] [stdout]    --> src/api/handlers.rs:888:14
[INFO] [stdout]     |
[INFO] [stdout] 888 | pub async fn get_market_data(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_routes` is never used
[INFO] [stdout]   --> src/api/routes.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn create_routes(
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `exchange`, `fee_rate`, and `slippage` are never read
[INFO] [stdout]   --> src/backtest/engine.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct BacktestEngine {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     exchange: MockExchange,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 26 |     initial_balance: HashMap<String, f64>,
[INFO] [stdout] 27 |     fee_rate: f64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 28 |     slippage: f64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_market_data` is never used
[INFO] [stdout]   --> src/backtest/engine.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl BacktestEngine {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn add_market_data(&mut self, symbol: &str, data: Vec<MarketData>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `description` is never read
[INFO] [stdout]   --> src/backtest/scenario.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct BacktestScenario {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 15 |     name: String,
[INFO] [stdout] 16 |     description: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `description` is never used
[INFO] [stdout]   --> src/backtest/scenario.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl BacktestScenario {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn description(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `symbol` and `csv_delimiter` are never used
[INFO] [stdout]    --> src/backtest/scenario.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl BacktestScenarioBuilder {
[INFO] [stdout]     | ---------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn symbol(mut self, symbol: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn csv_delimiter(mut self, delimiter: char) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarketDataRequest` is never constructed
[INFO] [stdout]   --> src/prediction_client.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct MarketDataRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BacktestRequest` is never constructed
[INFO] [stdout]   --> src/prediction_client.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct BacktestRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BacktestResult` is never constructed
[INFO] [stdout]   --> src/prediction_client.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct BacktestResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BacktestMetrics` is never constructed
[INFO] [stdout]   --> src/prediction_client.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct BacktestMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PredictionRequest` is never constructed
[INFO] [stdout]   --> src/prediction_client.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct PredictionRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PredictionResponse` is never constructed
[INFO] [stdout]   --> src/prediction_client.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct PredictionResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `run_backtest`, `get_prediction`, and `list_strategies` are never used
[INFO] [stdout]    --> src/prediction_client.rs:129:18
[INFO] [stdout]     |
[INFO] [stdout]  95 | impl PredictionClient {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub async fn run_backtest(&self, request: BacktestRequest) -> Result<BacktestResult> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub async fn get_prediction(&self, request: PredictionRequest) -> Result<PredictionResponse> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub async fn list_strategies(&self) -> Result<Vec<String>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prediction_client`, `symbol`, `strategy`, and `timeframe` are never read
[INFO] [stdout]    --> src/prediction_client.rs:182:5
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub struct PredictionBasedBot {
[INFO] [stdout]     |            ------------------ fields in this struct
[INFO] [stdout] 182 |     prediction_client: PredictionClient,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 183 |     symbol: String,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 184 |     strategy: String,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 185 |     timeframe: String,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_next_action` is never used
[INFO] [stdout]    --> src/prediction_client.rs:206:18
[INFO] [stdout]     |
[INFO] [stdout] 189 | impl PredictionBasedBot {
[INFO] [stdout]     | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub async fn get_next_action(&mut self) -> Result<TradingAction> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TradingAction` is never used
[INFO] [stdout]    --> src/prediction_client.rs:252:10
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub enum TradingAction {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `target_percentage` is never read
[INFO] [stdout]   --> src/core/vwap_splitter.rs:27:3
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct VwapSplitter {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |   target_percentage: Option<f64>,
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stop` is never used
[INFO] [stdout]    --> src/core/vwap_splitter.rs:134:16
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl VwapSplitter {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 134 |   pub async fn stop(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `status` and `update_price` are never used
[INFO] [stdout]    --> src/core/iceberg_manager.rs:195:10
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl IcebergManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 195 |   pub fn status(&self) -> (bool, f64, f64) {
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |   pub async fn update_price(&mut self, new_price: f64) -> Result<(), TradingError> {
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_delta` is never used
[INFO] [stdout]    --> src/core/trailing_stop_manager.rs:222:16
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl TrailingStopManager {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 222 |   pub async fn update_delta(&mut self, new_delta: f64) -> Result<(), TradingError> {
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stop` is never used
[INFO] [stdout]    --> src/core/twap_splitter.rs:121:16
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl TwapSplitter {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 121 |   pub async fn stop(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `max_drawdown_percent` is never read
[INFO] [stdout]   --> src/core/risk_manager.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RiskManager {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     max_drawdown_percent: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_unrealized_pnl`, `record_pnl`, `reset_daily_loss`, and `get_positions` are never used
[INFO] [stdout]    --> src/core/risk_manager.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl RiskManager {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn get_unrealized_pnl(&self, symbol: &str) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn record_pnl(&mut self, amount: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn reset_daily_loss(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn get_positions(&self) -> Vec<&Position> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_orders_from_strategy` and `get_strategy_status` are never used
[INFO] [stdout]    --> src/core/strategy_manager.rs:103:10
[INFO] [stdout]     |
[INFO] [stdout]  21 | impl StrategyManager {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |   pub fn get_orders_from_strategy(&mut self, name: &str) -> Result<Vec<Order>, TradingError> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |   pub fn get_strategy_status(&self, name: &str) -> Result<(String, bool), TradingError> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/error.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum TradingError {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 27 |     ExecutionError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     NotSubscribed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     LockError,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     TaskNotFound(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     NoAvailableProvider,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     InsufficientBalance,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     RiskLimitExceeded(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     MissingData(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TradingError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/exchange/mocks.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct MockExchange {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 19 |     config: Config,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `modify_order`, `get_recent_trades`, and `get_balance` are never used
[INFO] [stdout]   --> src/exchange/traits.rs:21:14
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait Exchange: Send + Sync {
[INFO] [stdout]    |           -------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 21 |     async fn modify_order(&mut self, order_id: &OrderId, order: Order) -> Result<OrderId, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     async fn get_recent_trades(&self, symbol: &str, limit: Option<usize>) -> Result<Vec<Trade>, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     async fn get_balance(&self, asset: &str) -> Result<f64, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_mid_price` is never used
[INFO] [stdout]    --> src/exchange/binance_futures.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl BinanceFuturesExchange {
[INFO] [stdout]     | --------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |   async fn get_mid_price(&self, symbol: &str) -> Result<f64, TradingError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DryRunExchange` is never constructed
[INFO] [stdout]   --> src/exchange/dry_run.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct DryRunExchange;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `ts` are never used
[INFO] [stdout]   --> src/exchange/dry_run.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl DryRunExchange {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] 13 |   pub fn new() -> Self { Self }
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 14 |   fn ts() -> i64 { SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() as i64 }
[INFO] [stdout]    |      ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `unsubscribe`, `get_receiver`, `get_current_data`, `is_connected`, and `disconnect` are never used
[INFO] [stdout]   --> src/market_data/provider.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait MarketDataProvider: Send + Sync {
[INFO] [stdout]    |           ------------------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 15 |     async fn unsubscribe(&mut self, symbol: &str) -> Result<(), TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     fn get_receiver(&self, symbol: &str) -> Result<broadcast::Receiver<MarketData>, TradingError>;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     async fn get_current_data(&self, symbol: &str) -> Result<MarketData, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     async fn is_connected(&self) -> bool;
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     async fn disconnect(&mut self) -> Result<(), TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `unsubscribe_all`, `disconnect_all`, `get_receiver`, and `get_current_data` are never used
[INFO] [stdout]    --> src/market_data/provider.rs:67:18
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl MarketDataManager {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub async fn unsubscribe_all(&mut self, symbol: &str) -> Result<(), TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub async fn disconnect_all(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub async fn get_receiver(&self, symbol: &str) -> Result<broadcast::Receiver<MarketData>, TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub async fn get_current_data(&self, symbol: &str) -> Result<MarketData, TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `buffer_size` and `aggregation_tasks` are never read
[INFO] [stdout]   --> src/market_data/stream.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct MarketDataStream {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     buffer_size: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 14 |     aggregation_tasks: HashMap<String, JoinHandle<()>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_or_create_channel`, `get_latest_data`, `get_receiver`, `start_aggregation`, and `stop_aggregation` are never used
[INFO] [stdout]   --> src/market_data/stream.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl MarketDataStream {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn get_or_create_channel(&mut self, symbol: &str) -> broadcast::Sender<MarketData> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn get_latest_data(&self, symbol: &str) -> Option<MarketData> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn get_receiver(&self, symbol: &str) -> Result<broadcast::Receiver<MarketData>, TradingError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn start_aggregation(&mut self, symbol: &str, interval: u64) -> Result<(), TradingError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn stop_aggregation(&mut self, symbol: &str) -> Result<(), TradingError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reconnect_interval` is never read
[INFO] [stdout]   --> src/market_data/websocket.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct WebSocketProvider {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     reconnect_interval: Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FixProvider` is never constructed
[INFO] [stdout]   --> src/market_data/fix.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct FixProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `start_fix_session` are never used
[INFO] [stdout]   --> src/market_data/fix.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl FixProvider {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 27 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     async fn start_fix_session(&mut self) -> Result<(), TradingError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `vwap` are never used
[INFO] [stdout]   --> src/models/market_data.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl MarketData {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn vwap(&self) -> f64 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_stop_price`, `with_time_in_force`, `with_client_order_id`, `with_trailing_delta`, and `with_vwap_params` are never used
[INFO] [stdout]    --> src/models/order.rs:92:12
[INFO] [stdout]     |
[INFO] [stdout]  64 | impl Order {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn with_stop_price(mut self, stop_price: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn with_time_in_force(mut self, time_in_force: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn with_client_order_id(mut self, client_order_id: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn with_trailing_delta(mut self, trailing_delta: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn with_vwap_params(mut self, execution_interval: i64, target_percentage: Option<f64>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_long` and `is_short` are never used
[INFO] [stdout]   --> src/models/position.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Position {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn is_long(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn is_short(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `value` are never used
[INFO] [stdout]   --> src/models/trade.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Trade {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 17 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn value(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_validator`, `modify_order`, `get_open_orders`, and `subscribe_to_status_updates` are never used
[INFO] [stdout]    --> src/order_core/manager.rs:34:12
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl OrderManager {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn add_validator(&mut self, validator: Box<dyn OrderValidator>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub async fn modify_order(&self, order_id: &OrderId, new_params: Order) -> Result<OrderId, TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub async fn get_open_orders(&self) -> Result<Vec<Order>, TradingError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn subscribe_to_status_updates(&mut self, client_order_id: &str) -> broadcast::Receiver<OrderStatus> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_by_client_id`, `find_by_symbol`, `find_all`, and `delete` are never used
[INFO] [stdout]   --> src/order_core/repository.rs:22:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub trait OrderRepository: Send + Sync {
[INFO] [stdout]    |           --------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 22 |     async fn find_by_client_id(&self, client_id: &str) -> Result<Option<Order>, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     async fn find_by_symbol(&self, symbol: &str) -> Result<Vec<Order>, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     async fn find_all(&self) -> Result<Vec<Order>, TradingError>;
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     async fn delete(&mut self, order_id: &OrderId) -> Result<(), TradingError>;
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BasicOrderValidator` is never constructed
[INFO] [stdout]   --> src/order_core/validator.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct BasicOrderValidator {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/order_core/validator.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl BasicOrderValidator {
[INFO] [stdout]    | ------------------------ associated function in this implementation
[INFO] [stdout] 19 |     pub fn new(min_order_size: f64, max_order_size: f64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskOrderValidator` is never constructed
[INFO] [stdout]   --> src/order_core/validator.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct RiskOrderValidator {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/order_core/validator.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl RiskOrderValidator {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 62 |     pub fn new(max_position_size: f64, max_notional_value: f64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `StrategyFactory` is never used
[INFO] [stdout]   --> src/strategies/mod.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub trait StrategyFactory: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `execution_interval` is never read
[INFO] [stdout]   --> src/strategies/vwap.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct VwapStrategy {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     execution_interval: i64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `execution_interval` is never read
[INFO] [stdout]   --> src/strategies/twap.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct TwapStrategy {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     execution_interval: i64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `symbol` is never read
[INFO] [stdout]   --> src/strategies/combined.rs:11:3
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct CombinedStrategy {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 10 |   name: String,
[INFO] [stdout] 11 |   symbol: String,
[INFO] [stdout]    |   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `ma_crossover_iceberg` is never used
[INFO] [stdout]    --> src/strategies/combined.rs:100:10
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl CombinedStrategy {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 100 |   pub fn ma_crossover_iceberg(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_timestamp_ms` is never used
[INFO] [stdout]   --> src/utils/mod.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn current_timestamp_ms() -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_timestamp` is never used
[INFO] [stdout]   --> src/utils/mod.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn format_timestamp(timestamp_ms: i64, format: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `time_diff_seconds` is never used
[INFO] [stdout]   --> src/utils/mod.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn time_diff_seconds(start_ts: i64, end_ts: i64) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_trading_start` is never used
[INFO] [stdout]   --> src/utils/logging.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn log_trading_start(strategy_name: &str, symbol: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_trading_end` is never used
[INFO] [stdout]   --> src/utils/logging.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn log_trading_end(strategy_name: &str, symbol: &str, result: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_order_created` is never used
[INFO] [stdout]   --> src/utils/logging.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn log_order_created(order_id: &str, symbol: &str, side: &str, quantity: f64, price: f64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_order_cancelled` is never used
[INFO] [stdout]   --> src/utils/logging.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn log_order_cancelled(order_id: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_order_filled` is never used
[INFO] [stdout]   --> src/utils/logging.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn log_order_filled(order_id: &str, symbol: &str, quantity: f64, price: f64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_error` is never used
[INFO] [stdout]   --> src/utils/logging.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn log_error(context: &str, error: &TradingError) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message` is never read
[INFO] [stdout]   --> src/indicators/mod.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct IndicatorSignal {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 31 |   pub message: String,
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IndicatorSignal` 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: method `reset` is never used
[INFO] [stdout]   --> src/indicators/mod.rs:47:6
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub trait Indicator: Debug + Send + Sync {
[INFO] [stdout]    |           --------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 47 |   fn reset(&mut self);
[INFO] [stdout]    |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `period` is never used
[INFO] [stdout]   --> src/indicators/moving_averages.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl SimpleMovingAverage {
[INFO] [stdout]    | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |   pub fn period(&self) -> usize {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `period` is never used
[INFO] [stdout]    --> src/indicators/moving_averages.rs:103:10
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl ExponentialMovingAverage {
[INFO] [stdout]     | ----------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |   pub fn period(&self) -> usize {
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `period` is never used
[INFO] [stdout]   --> src/indicators/oscillators.rs:42:10
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl RelativeStrengthIndex {
[INFO] [stdout]    | -------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |   pub fn period(&self) -> usize {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VolumeWeightedAveragePrice` is never constructed
[INFO] [stdout]   --> src/indicators/volume.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct VolumeWeightedAveragePrice {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/indicators/volume.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl VolumeWeightedAveragePrice {
[INFO] [stdout]    | ------------------------------- associated function in this implementation
[INFO] [stdout] 22 |   pub fn new(period: usize) -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_indicators` is never used
[INFO] [stdout]   --> src/indicators/utils.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn update_indicators(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_indicators_with_market_data` is never used
[INFO] [stdout]   --> src/indicators/utils.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn update_indicators_with_market_data(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reset_indicators` is never used
[INFO] [stdout]   --> src/indicators/utils.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn reset_indicators(indicators: &mut [Box<dyn Indicator>]) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `CloseLong` and `CloseShort` are never constructed
[INFO] [stdout]   --> src/signals/signal_types.rs:20:3
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum SignalType {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 20 |   CloseLong,       // 롱 포지션 청산
[INFO] [stdout]    |   ^^^^^^^^^
[INFO] [stdout] 21 |   CloseShort,      // 숏 포지션 청산
[INFO] [stdout]    |   ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SignalType` 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 `is_buy`, `is_sell`, and `is_reduce` are never used
[INFO] [stdout]   --> src/signals/signal_types.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl SignalType {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |   pub fn is_buy(&self) -> bool {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |   pub fn is_sell(&self) -> bool {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |   pub fn is_reduce(&self) -> bool {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `source`, `timestamp`, and `additional_info` are never read
[INFO] [stdout]   --> src/signals/signal_types.rs:59:7
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct SignalWithMetadata {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 58 |   pub signal_type: SignalType,
[INFO] [stdout] 59 |   pub source: String,
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 60 |   pub strength: f64,  // -1.0 ~ 1.0
[INFO] [stdout] 61 |   pub timestamp: DateTime<Utc>,
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 62 |   pub confidence: f64, // 0.0 ~ 1.0
[INFO] [stdout] 63 |   pub additional_info: HashMap<String, String>,
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SignalWithMetadata` 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: associated items `new` and `add_info` are never used
[INFO] [stdout]   --> src/signals/signal_types.rs:67:10
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl SignalWithMetadata {
[INFO] [stdout]    | ----------------------- associated items in this implementation
[INFO] [stdout] 67 |   pub fn new(signal_type: SignalType, source: String, strength: f64) -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] ...
[INFO] [stdout] 96 |   pub fn add_info(mut self, key: &str, value: &str) -> Self {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_weight` is never used
[INFO] [stdout]   --> src/signals/signal_analyzer.rs:42:10
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl SignalAnalyzer {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |   pub fn set_weight(&mut self, indicator_name: &str, weight: f64) {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KellyPositionSizer` is never constructed
[INFO] [stdout]   --> src/signals/position_sizing.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct KellyPositionSizer {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/signals/position_sizing.rs:57:10
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl KellyPositionSizer {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 57 |   pub fn new(max_risk: f64, win_rate: f64, reward_risk: f64) -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_bool` is never used
[INFO] [stdout]   --> src/trading_bots/bot_config.rs:81:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl TradingBotConfig {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81 |   pub fn get_bool(&self, key: &str) -> Result<bool, TradingError> {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `evaluate_signals`, `config`, `update_config`, `reset`, and `name` are never used
[INFO] [stdout]   --> src/trading_bots/base_bot.rs:20:6
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub trait TradingBot: Send + Sync {
[INFO] [stdout]    |           ---------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 20 |   fn evaluate_signals(&self) -> Result<Vec<SignalWithMetadata>, TradingError>;
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |   fn config(&self) -> &TradingBotConfig;
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |   fn update_config(&mut self, config: TradingBotConfig) -> Result<(), TradingError>;
[INFO] [stdout]    |      ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |   fn reset(&mut self);
[INFO] [stdout]    |      ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |   fn name(&self) -> &str {
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_bot` is never used
[INFO] [stdout]   --> src/trading_bots/base_bot.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn create_bot(symbol: &str, config: TradingBotConfig) -> Result<Box<dyn TradingBot>, TradingError> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/trading_bots/ma_crossover_bot.rs:19:3
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct MACrossoverBot {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 18 |   symbol: String,
[INFO] [stdout] 19 |   config: TradingBotConfig,
[INFO] [stdout]    |   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/trading_bots/rsi_bot.rs:19:3
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct RSIBot {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] 18 |   symbol: String,
[INFO] [stdout] 19 |   config: TradingBotConfig,
[INFO] [stdout]    |   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/trading_bots/macd_bot.rs:19:3
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct MACDBot {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] 18 |   symbol: String,
[INFO] [stdout] 19 |   config: TradingBotConfig,
[INFO] [stdout]    |   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/trading_bots/multi_indicator_bot.rs:21:3
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct MultiIndicatorBot {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 20 |   symbol: String,
[INFO] [stdout] 21 |   config: TradingBotConfig,
[INFO] [stdout]    |   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "966bcac18f45a53c4f37265df8957b85d6b7acdd4b3f5a9ccbc3f55dabf33952", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "966bcac18f45a53c4f37265df8957b85d6b7acdd4b3f5a9ccbc3f55dabf33952", kill_on_drop: false }`
[INFO] [stdout] 966bcac18f45a53c4f37265df8957b85d6b7acdd4b3f5a9ccbc3f55dabf33952
