Web-gateway routing: - Point TRADING_SERVICE_URL at api-gateway (proto mismatch fix) Web-gateway uses foxhunt.tli.TradingService proto but was connecting directly to trading-service which implements trading.TradingService. api-gateway already proxies Subscribe* → Stream* correctly. GitLab KAS: - Disable gitlab_kas in appConfig to stop sidekiq NotifyGitPushWorker errors (KAS pod was already disabled but Rails still tried to connect) Trading service monitoring (3 stubs → real): - AcknowledgeAlert: real alert lookup + state mutation in shared store - GetActiveAlerts: returns actual active alerts from in-memory store - StreamAlerts: now persists generated alerts (capped at 1000 entries) Trading service ML streams (2 stubs → real): - StreamModelMetrics: emits real inference_count, error_count, latency per model every N seconds from the RuntimeModelInfo registry - StreamSignalStrength: emits per-symbol signal aggregation from model ensemble weights and latency confidence Backtesting service: - stop_backtest: real CancellationToken cancellation (was no-op) Tokens stored per-backtest, execute_backtest wraps strategy call in tokio::select! for immediate cancellation Deleted 7 empty placeholder files: - 4 Wave D regime stubs (dynamic_stops, ensemble, performance_tracker, position_sizer) — comment-only files, never wired - 2 Wave 3 feature stubs (microstructure, statistical) - 1 PPO stub (unified_ppo.rs — empty struct definitions) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Common Crate
Overview
The common crate provides a foundational set of shared types and utilities essential for building high-frequency trading applications within the Foxhunt ecosystem. It encapsulates core data structures, error handling patterns, and common helpers used across various components.
Features
- Market Data & Order Types: Defines standardized structs for market data (e.g.,
Tick,OrderBook) and various order types (e.g.,LimitOrder,MarketOrder). - High-Precision Time Utilities: Offers utilities for working with nanosecond-resolution timestamps and duration calculations critical for HFT.
- Robust Error Handling: Implements a custom
FoxhuntErrorenum andResulttype for consistent and traceable error management across the system. - Data Validation Helpers: Provides functions for validating common HFT parameters such as prices, quantities, and instrument IDs.
- Serialization/Deserialization: Includes helpers and derive macros for efficient data serialization (e.g., using
serde) for inter-process communication or persistence. - Instrument & Asset Definitions: Standardized types for defining trading instruments, assets, and exchanges.
Usage
use common::types::{Order, OrderSide, Price, Quantity, InstrumentId};
use common::errors::FoxhuntError;
fn create_limit_order(instrument: InstrumentId, price: Price, quantity: Quantity) -> Result<Order, FoxhuntError> {
if price.value() <= 0.0 || quantity.value() <= 0.0 {
return Err(FoxhuntError::ValidationError("Price and quantity must be positive".to_string()));
}
Ok(Order::new_limit(instrument, OrderSide::Buy, price, quantity))
}
let instrument = InstrumentId::new("BTCUSD".to_string());
let order = create_limit_order(instrument, Price::new(60000.0), Quantity::new(0.5));
println!("{:?}", order);
Testing
cargo test --package common
Documentation
Comprehensive API documentation is available at docs.rs/common.