jgrusewski 63fc16f173 fix(rl): surfer-scaffold v5.2 — drop wr_excess clamp, full scaffold when novice
alpha-rl-mjsmr (4a4953b01 step 99-249, 2026-06-02): v5.1 with wr_ema=0.248
(below break_even 0.30) produced scaffold_weight = 0.500, not the expected
1.0. Math: `max(0, wr_ema - break_even) = 0` → sigmoid(0) = 0.5 → competence
= 0.5 → w_competence = 0.5. So a novice agent below break-even got
HALF-scaffold instead of full scaffold (entropy dropped to 1.27 at step 249
because of the early directional signal, then ramped back up to 1.96 once
w_decay took over — unstable).

Fix: drop the `max(0, ...)` clamp. Use signed `wr_distance = wr_ema -
break_even` so:

  wr=0.20 → sigmoid(30·-0.10) ≈ 0.05 → w_competence ≈ 0.95 (full scaffold ✓)
  wr=0.30 → sigmoid(0)        = 0.50  → w_competence = 0.50 (half at BE)
  wr=0.40 → sigmoid(30·+0.10) ≈ 0.95 → w_competence ≈ 0.05 (pure pnl ✓)

This is the proper symmetric fade around break_even; the asymmetry was a
v5 original-design error. Combined with v5.1 `w_decay = max(0, 2·frac-1)`,
the scaffold should now:
  - hold near 1.0 while wr < break_even (novice)
  - smoothly fade through 0.5 as wr crosses break_even
  - drop toward 0 as wr settles above break_even AND PH decay subsides

Local invariant test:
  reward_alignment_surfer_scaffold_invariants OK: 251 rows validated
  train[0] bootstrap = 0.966 (unchanged)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-02 00:34:03 +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%