Reuses ml-features::predecoded::load_or_predecode_mbp10 (no cycle —
ml-features doesn't depend on ml-alpha). Yields seq_len-sized windows
of Mbp10RawInput plus 5-horizon binary labels via
multi_horizon_labels::generate_labels.
Per-snapshot prev_mid / prev_ts_ns / trade_signed_vol come from the
prior snapshot in the source stream (not from the anchor), so the
CfC trunk sees a continuous-time signal across the entire seq.
Labels: NaN at edge positions (no forward window) or tied prices;
BCE kernel masks these (Task 10).
Tests:
- loader_errors_on_missing_root: passes (1/1 inline)
- loader_yields_seq_with_valid_labels: --ignored, runs at gate time
with FOXHUNT_TEST_DATA set
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
50 lines
1.7 KiB
TOML
50 lines
1.7 KiB
TOML
[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 = []
|
|
|
|
[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
|
|
serde_json.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 }
|
|
|
|
[dev-dependencies]
|
|
tempfile = { workspace = true }
|
|
approx = { workspace = true }
|