jgrusewski 5099c1fdbb feat(generalization): #30 native f32 experience pipeline — zero bf16 truncation
Complete f32 refactor of the experience collection and replay storage:

CUDA kernels:
- experience_state_gather: output changed from __nv_bfloat16* to float*
  All portfolio features, multi-timeframe features, and zero-padding
  write f32 directly. Market features read bf16, convert to f32 in-kernel.
- experience_env_step: batch_states and out_states changed to float*
  State copy to replay buffer is native f32 memcpy.
- bn_tanh_concat_f32_kernel: f32 bottleneck tanh+concat variant
- add_bias_relu_f32_kernel: f32 bias + ReLU for hidden layers
- add_bias_f32_f32bias_kernel: f32 bias (no activation) for output/bottleneck
- gather_f32_rows: f32 row gather for replay buffer sampling

cuBLAS forward:
- New sgemm_f32 and sgemm_f32_ldb methods for pure F32 SGEMM
- New forward_online_f32 method: all-f32 forward pass (no bf16 GemmEx)
- f32_weight_ptrs_from_base: f32 byte offset computation for weight pointers

Experience collector:
- batch_states: CudaSlice<half::bf16> → CudaSlice<f32>
- states_out: CudaSlice<half::bf16> → CudaSlice<f32>
- online_params_f32: new f32 master weight buffer
- exp_h_s1_f32 through exp_h_b2_f32: f32 activation buffers
- sync_weights_f32: DtoD from trainer's f32 master params
- GpuExperienceBatch: states/next_states now CudaSlice<f32>

Replay buffer (ml-dqn):
- Internal storage: CudaSlice<u16> → CudaSlice<f32> for states
- scatter_insert: uses scatter_insert_f32 (no bf16 cast)
- gather: uses gather_f32_rows (no bf16 cast)
- Sample output: f32→bf16 conversion at GpuBatch boundary
  (GpuTensor stores bf16 for tensor core training GemmEx)

Deleted: insert_batch_tensors legacy dead code in config.rs

Data flow:
  bf16 market data → f32 state_gather → f32 SGEMM → f32 Q-values →
  f32 action selection → f32 env_step → f32 replay insert →
  f32 replay storage → bf16 training batch (tensor core boundary)

No bf16 truncation noise anywhere in experience collection or storage.
The ONLY f32→bf16 conversion is at the training batch sample boundary
where bf16 is required for H100 tensor core GemmEx throughput.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 12:08:34 +02:00

Foxhunt

Production HFT trading system in Rust.

Architecture

The workspace contains 32 crates organized as follows:

Core Libraries (16)

Crate Purpose
trading_engine Order processing, FIX 4.4, IB TWS, SIMD, RDTSC timing
risk VaR, Kelly, circuit breakers, kill switches, compliance
risk-data Risk data types and shared structures
trading-data Trading data types
ml DQN Rainbow, PPO, TFT, Mamba2, ensemble inference
ml-data ML data types and feature definitions
data Market data ingestion and storage
backtesting Replay engine, strategy tester
adaptive-strategy Ensemble execution, microstructure analysis
common Shared types, resilience, error handling
storage S3 and local model storage
model_loader Model serialization and loading
market-data Market data feed handlers
database PostgreSQL access layer (SQLx)
config Configuration management
tli CLI commands and tooling

Services (8)

Service Purpose
backtesting_service gRPC backtesting service
broker_gateway_service FIX routing, broker connectivity
trading_service Core trading operations
ml_training_service Model training orchestration
data_acquisition_service Market data acquisition
trading_agent_service Autonomous trading agents
api_gateway gRPC API gateway with auth
web-gateway Axum REST + WebSocket gateway

Frontend

web-dashboard/ -- React 19 + TypeScript + Vite + TradingView charts.

Building

# Check compilation (no PostgreSQL required)
SQLX_OFFLINE=true cargo check --workspace

# Run tests for a specific crate
SQLX_OFFLINE=true cargo test -p <crate> --lib

# Clippy
SQLX_OFFLINE=true cargo clippy --workspace

ML Models

Four production model architectures on Candle v0.9.1 with CUDA:

  • DQN Rainbow -- Deep Q-Network with prioritized replay, dueling heads, noisy nets
  • PPO -- Proximal Policy Optimization with GAE and LSTM policies
  • TFT -- Temporal Fusion Transformer for multi-horizon forecasting
  • Mamba2 -- State space model for sequence prediction

Each model has a standalone trainer and a UnifiedTrainable adapter for the hyperopt pipeline.

Infrastructure

  • Git: Gitea at git.fxhnt.ai (Tailscale-only), Scaleway DEV1-S
  • Observability: OpenTelemetry OTLP (env OTEL_EXPORTER_OTLP_ENDPOINT)
  • Database: PostgreSQL with SQLx offline mode for CI

License

Proprietary. All rights reserved.

Description
No description provided
Readme 849 MiB
Languages
Rust 88.2%
Cuda 7.7%
Python 1.3%
Shell 1.1%
PLpgSQL 0.8%
Other 0.8%