Files
foxhunt/crates/ml/examples/verify_225_features_wave9.rs
jgrusewski 9c3d741a08 refactor: restructure repo — crates/, bin/, testing/ layout
Move 17 library crates into crates/, CLI binary into bin/fxt,
consolidate 10 test crates into testing/, split config crate
from deployment config files.

Root directory reduced from 38+ to ~17 directories.
All Cargo.toml paths and build.rs proto refs updated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 11:56:00 +01:00

73 lines
2.4 KiB
Rust

//! Verify 54-feature extraction with Wave D integration
use chrono::Utc;
use ml::features::extraction::{extract_ml_features, OHLCVBar};
fn main() {
// Create 100 test bars
let bars: Vec<OHLCVBar> = (0..100)
.map(|i| OHLCVBar {
timestamp: Utc::now() + chrono::Duration::hours(i),
open: 100.0 + i as f64 * 0.1,
high: 101.0 + i as f64 * 0.1,
low: 99.0 + i as f64 * 0.1,
close: 100.5 + i as f64 * 0.1,
volume: 1000.0 + i as f64 * 10.0,
})
.collect();
let features = extract_ml_features(&bars).expect("Feature extraction failed");
println!("✓ Feature extraction successful");
println!(" - Input bars: {}", bars.len());
println!(" - Output vectors: {}", features.len());
println!(" - Features per vector: {}", features[0].len());
// Verify dimensions
assert_eq!(
features[0].len(),
54,
"Expected 54 features, got {}",
features[0].len()
);
// Verify no NaN/Inf in Wave D features (indices 201-224)
for (i, feature_vec) in features.iter().enumerate() {
for (j, &val) in feature_vec.iter().enumerate() {
assert!(
val.is_finite(),
"Non-finite value at bar {}, feature {}: {}",
i,
j,
val
);
}
// Wave D features are at indices 201-224
let wave_d_features = &feature_vec[201..224];
println!(
"Bar {} Wave D features (201-224): min={:.4}, max={:.4}, avg={:.4}",
i,
wave_d_features.iter().fold(f64::INFINITY, |a, &b| a.min(b)),
wave_d_features
.iter()
.fold(f64::NEG_INFINITY, |a, &b| a.max(b)),
wave_d_features.iter().sum::<f64>() / wave_d_features.len() as f64
);
if i >= 5 {
break;
} // Only show first 5 bars
}
println!("\n✓ All 54 features extracted successfully!");
println!(" - Features 0-4: OHLCV (5)");
println!(" - Features 5-14: Technical indicators (10)");
println!(" - Features 15-74: Price patterns (60)");
println!(" - Features 75-114: Volume patterns (40)");
println!(" - Features 115-164: Microstructure proxies (50)");
println!(" - Features 165-174: Time-based (10)");
println!(" - Features 175-200: Statistical (26)");
println!(" - Features 201-224: Wave D regime detection (24)");
}