Files
foxhunt/crates/ml-validation/src/lib.rs
jgrusewski d06c99b0e1 fix(clippy): achieve zero warnings across entire workspace
- Fix format_push_string: write!() instead of push_str(&format!()) (25 sites)
- Fix str_to_string: .to_owned() instead of .to_string() on &str (6 sites)
- Fix unseparated_literal_suffix: add _ separator (6 sites)
- Fix multiple_inherent_impl: merge split impl blocks in TGGN, TFT, OFI (3)
- Fix else_if_without_else: add exhaustive else clauses (3 sites)
- Fix if_then_some_else_none: use .then().transpose() (1 site)
- Fix unwrap_in_result: replace expect() with match + ? (2 sites)
- Fix wildcard_enum_match_arm: enumerate Storage variants explicitly (2)
- Fix decimal_literal_representation: use hex for power-of-2 constants (5)
- Fix rc_buffer: Arc<Vec<T>> → Arc<[T]> for OFI features
- Fix needless_range_loop: convert to iterator patterns (17 sites)
- Fix used_underscore_binding: remove prefix on used vars (6 sites)
- Fix doc list item indentation (7 sites)
- Allow too_many_arguments on ML training functions (4)
- Allow multiple_unsafe_ops_per_block on CUDA FFI functions (3)
- Allow upper_case_acronyms on SLSTM/MLSTM model names (2)
- Add ML-crate pedantic allows: shadow, similar_names, type_complexity,
  indexing_slicing, partial_pub_fields, non_ascii_literal, same_name_method
  (following existing ml-labeling/ml-universe pattern)

Result: cargo clippy --workspace -- -D warnings passes with zero warnings.
All 2758+ lib tests pass (2 pre-existing backtesting failures unchanged).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 13:18:57 +01:00

46 lines
2.1 KiB
Rust

#![deny(clippy::unwrap_used, clippy::expect_used)]
#![cfg_attr(test, allow(clippy::unwrap_used, clippy::expect_used))]
#![allow(clippy::module_name_repetitions)]
#![allow(clippy::integer_division)]
#![allow(clippy::float_arithmetic)]
#![allow(clippy::doc_markdown)]
#![allow(clippy::missing_const_for_fn)]
#![allow(clippy::shadow_reuse, clippy::shadow_same, clippy::shadow_unrelated)] // Tensor ops: let x = x.relu() is idiomatic
#![allow(clippy::non_ascii_literal)] // Math symbols in ML documentation and error messages
#![allow(clippy::partial_pub_fields)] // ML config structs: some fields are pub API, some internal
#![allow(clippy::same_name_method)] // Intentional: inherent methods shadow trait defaults for ML-specific behavior
#![allow(clippy::type_complexity)] // Complex generic types in validation pipeline
#![allow(clippy::single_char_lifetime_names)] // 'a is idiomatic Rust
//! Statistical and Financial Validation — core algorithms.
//!
//! Provides two categories of validation:
//! - Statistical validation (walk-forward, DSR, PBO, permutation tests)
//! - Temporal guards for preventing forward-looking data leakage
//! - Noise injection for robustness testing
//! - Fold-by-fold performance degradation tracking
//!
//! Bridge modules (DQN/PPO adapters, regime analysis, harness) stay in the `ml`
//! crate and re-export types from this crate.
pub use ml_core::{MLError, MLResult};
pub mod degradation;
pub mod noise;
pub mod statistical;
pub mod temporal_guard;
pub mod types;
pub mod walk_forward;
// Re-export core types at crate root for convenience.
pub use degradation::{DegradationReport, DegradationTracker, FoldMetrics};
pub use noise::{compute_robustness_score, NoiseConfig, NoiseInjector};
pub use statistical::{
binomial_coefficient, deflated_sharpe_ratio, excess_kurtosis, normal_cdf, normal_ppf,
permutation_test, probability_of_backtest_overfitting, sharpe_ratio, skewness, DsrResult,
PboResult, PermutationResult,
};
pub use temporal_guard::{LeakageAuditReport, NormalizationStats, TemporalGuard};
pub use types::{TimeSeriesData, ValidatableStrategy};
pub use walk_forward::{walk_forward_split, Fold, WalkForwardConfig};