Files
foxhunt/services/trading_service
jgrusewski 980f5d33c1 feat(services): wire gRPC metrics Tower layer into all 7 gRPC services
Add GrpcMetricsLayer from common::metrics to every gRPC service's
Server::builder() chain, enabling automatic Prometheus instrumentation
(grpc_server_started_total, grpc_server_handled_total,
grpc_server_handling_seconds) for all RPC handlers.

Services wired:
- trading-service
- api-gateway
- ml-training-service
- backtesting-service
- broker-gateway
- data-acquisition-service
- trading-agent-service

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 02:30:23 +01:00
..

Trading Service

Overview

The trading_service is the core execution engine for the Foxhunt HFT platform. It manages the entire lifecycle of trading operations, from order placement and execution to real-time position keeping and risk management. This service is critical for high-frequency, low-latency trading activities, ensuring compliance and optimal performance.

Features

  • Order Execution: Handles high-throughput order placement, modification, and cancellation across various exchanges.
  • Position Management: Maintains real-time tracking of all open positions, including P&L calculations and exposure.
  • Risk Integration: Integrates with upstream risk systems to enforce pre-trade and post-trade compliance checks.
  • Compliance Checks: Automatically applies regulatory and internal compliance rules to all trading activities.
  • Market Data Subscriptions: Subscribes to and processes real-time market data feeds for informed decision-making.
  • Real-time P&L Tracking: Provides immediate profit and loss updates for active strategies and overall portfolio.
  • Health Checks and Metrics: Exposes endpoints for monitoring service health and operational metrics.

gRPC API

The trading_service exposes a gRPC API for interacting with its core functionalities. Key endpoints include:

  • PlaceOrder - Submit new orders
  • CancelOrder - Cancel existing orders
  • GetPosition - Query current positions
  • SubscribeMarketData - Subscribe to market data feeds
  • GetPnlUpdates - Retrieve real-time P&L updates

Running the service

To run the trading_service binary:

cargo run --bin trading_service

Configuration

The service is configured via the central config crate with PostgreSQL backend. Key configuration includes:

  • Database connection strings
  • Risk parameters and limits
  • Broker connection settings
  • gRPC server port and TLS settings

TLS Configuration (Agent S3)

The Trading Service supports TLS 1.3 with optional mutual TLS (mTLS) for secure gRPC communications.

Environment Variables:

TLS_ENABLED=false                                    # Enable TLS (default: false)
TLS_CERT_PATH=/app/certs/trading_service/server.crt # Server certificate
TLS_KEY_PATH=/app/certs/trading_service/server.key  # Server private key
TLS_CA_PATH=/app/certs/trading_service/ca.crt       # CA certificate
TLS_REQUIRE_CLIENT_CERT=false                        # Require client certs (default: false)

Certificate Directory Structure:

/app/certs/trading_service/
├── server.crt          # Server certificate
├── server.key          # Server private key
└── ca.crt              # CA certificate for client verification

Features:

  • TLS 1.3 encryption for all gRPC traffic
  • Mutual TLS (mTLS) support for client certificate authentication
  • 6-layer certificate validation (expiration, purpose, constraints, extensions, SANs, revocation)
  • Role-based access control (RBAC) via certificate Organizational Unit (OU)
  • CRL (Certificate Revocation List) support

Security Note: TLS is disabled by default for development. Enable TLS_ENABLED=true for production deployments.

Testing

To run the tests for the trading_service crate:

cargo test --package trading_service

Documentation

Comprehensive API documentation is available at docs.rs/trading_service.