[package] name = "ml-alpha" version.workspace = true edition.workspace = true rust-version.workspace = true description = "CfC perception + multi-horizon alpha heads (Phase A foundation for CfC+PPO greenfield)" publish = false # Phase A scope: snapshot-level CfC trunk + 5 multi-horizon BCE heads, # pre-compiled CUDA cubins, GPU-resident weights. The hard validation gate # (CfC vs Mamba2 AUC at every horizon) sits at the end of Phase A. Phase B # (PPO) extends this crate; live integration lives in trading_agent_service. [features] default = ["cuda"] cuda = [] kernel-step-trace = [] [dependencies] ml-core = { workspace = true } # NOTE: cannot depend on `ml` (would cycle — ml depends on ml-alpha for the # mamba2_block gate reference). MappedF32Buffer is duplicated locally in # `src/pinned_mem.rs`; eventually we should move mapped-pinned to ml-core. ml-features = { workspace = true } data = { workspace = true } cudarc = { version = "0.19", default-features = false, features = ["driver", "cublas", "dynamic-linking", "std", "cuda-version-from-build-system", "f16"] } # Standard async + error + logging plumbing tokio = { workspace = true, features = ["rt-multi-thread", "macros", "fs", "io-util"] } anyhow.workspace = true tracing.workspace = true tracing-subscriber.workspace = true serde = { workspace = true, features = ["derive"] } serde_json.workspace = true bincode.workspace = true bytemuck = { workspace = true } thiserror.workspace = true clap = { workspace = true, features = ["derive"] } # Arrow IPC for fxcache reading (gate reference path). arrow = { workspace = true, features = ["ipc"] } # Deterministic RNG for weight init, shuffling. rand = { workspace = true } rand_chacha = "0.3" # Phase A data path: mmap predecoded MBP-10 sidecars. memmap2 = { workspace = true } # SPEED-A (2026-05-22): parallel per-file load + label generation in # MultiHorizonLoader::new gives ~4-8x speedup on typical 4-8 core hosts. rayon = { workspace = true } [dev-dependencies] tempfile = { workspace = true } approx = { workspace = true } # Phase R6: convergence-gate fixtures + alpha_rl_train CLI need # LobSimCuda from ml-backtesting. Dev-dep avoids the cycle — # ml-backtesting → ml-alpha is the production direction; this # dev-only edge only loads when building ml-alpha's own tests/examples. ml-backtesting = { path = "../ml-backtesting" }