Files
foxhunt/database
jgrusewski 86f7f1fa76 fix: comprehensive audit — real brokers, deployment fixes, production safety
Codebase audit identified 23 findings across 4 dimensions (production safety,
code health, deployment readiness, test quality). This commit fixes all of them.

Broker execution layer (was entirely stubbed):
- Real IBKR TWS client via ibapi crate (950+ lines, feature-gated)
- ICMarkets ctrader-openapi now always-on (removed feature flag)
- Real broker routing with health monitoring and exponential backoff reconnect
- Validated against live IB Gateway Docker (6/6 connectivity tests pass)

Deployment blockers:
- Fixed 6 broken Dockerfiles (removed COPY foxhunt-deploy)
- Created foxhunt K8s namespace, secret templates, migration job
- Added liveness probes to all 7 K8s services
- IB Gateway manifest (ghcr.io/gnzsnz/ib-gateway:stable)
- IBKR credentials in Scaleway Secret Manager via Terragrunt
- Fixed port collisions and mismatches across services

Production safety (9 critical + 6 high/medium fixes):
- Asset-class-specific VaR volatility (not flat 2%)
- Real parametric VaR with z-score 95th percentile
- Kyle's lambda regression (100-bar rolling window)
- Per-feature running statistics from historical data
- VWAP-based slippage reference, regime duration tracking
- Real Databento JSON parsing for OHLCV/Trade/Quote

Code health:
- Removed #![allow(dead_code)] from ml, data, config
- Fixed log:: → tracing:: in 4 production files
- Removed dead workspace deps (ratatui, crossterm)

Verified: cargo check --workspace (0 errors), trading_engine 330 tests pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 00:32:10 +01:00
..

Database Crate

Overview

The database crate manages the persistent storage layer for the Foxhunt HFT system, primarily utilizing PostgreSQL. It handles schema definitions, migrations, and provides utilities for storing and querying critical trading data, including time-series market data and audit logs.

Features

  • PostgreSQL Schema & Migrations: Defines database schemas for trading events, market data, and user configurations, managed via an integrated migration system.
  • Event Streaming & Audit Log: Provides interfaces for recording and querying all significant system events, ensuring a comprehensive audit trail for compliance and post-trade analysis.
  • Optimized Time-Series Storage: Implements efficient storage and indexing strategies for high-volume, time-series market data.
  • Query Utilities: Offers a set of helper functions and ORM-like abstractions for common data retrieval and manipulation tasks.
  • Connection Pooling: Manages database connections efficiently using a connection pool to minimize overhead and improve throughput.
  • Data Archiving & Retention: Includes mechanisms for managing data lifecycle, such as archiving old data or implementing retention policies.

Usage

use database::models::{TradeEvent, NewTradeEvent};
use database::connection::establish_connection;
use common::types::{InstrumentId, Price, Quantity};
use chrono::Utc;

// This would typically come from a connection pool
let mut conn = establish_connection().expect("Failed to connect to database");

let new_trade = NewTradeEvent {
    timestamp: Utc::now(),
    instrument_id: InstrumentId::new("ETHUSD".to_string()),
    price: Price::new(3000.50),
    quantity: Quantity::new(1.2),
    side: "BUY".to_string(),
    // ... other fields
};

// Example: Insert a new trade event
// let inserted_trade = database::crud::create_trade_event(&mut conn, new_trade)
//     .expect("Failed to insert trade event");
// println!("Inserted trade: {:?}", inserted_trade);

Testing

cargo test --package database

Documentation

Detailed API documentation is available at docs.rs/database.