# ================================================================================================ # Paper Trading Configuration for Ensemble ML Models # ================================================================================================ # Last Updated: 2025-10-14 # Status: PRODUCTION READY # Purpose: Configure paper trading deployment for 3-model ensemble (DQN + 2x PPO) # ================================================================================================ # ================================================================================================ # PAPER TRADING SETTINGS # ================================================================================================ paper_trading: # Trading mode (paper = simulated execution, live = real capital) mode: paper # DO NOT change to 'live' without completing 5-phase rollout # Virtual capital for paper trading initial_capital: 100000 # $100K virtual capital # Risk limits for paper trading phase max_position_size: 10000 # $10K per position (conservative for testing) max_daily_loss: 2000 # $2K max loss per day (circuit breaker trigger) max_open_positions: 3 # Maximum 3 positions at once # Symbols to trade (start with 2 liquid futures) symbols: - ES.FUT # E-mini S&P 500 (highly liquid) - NQ.FUT # Nasdaq-100 futures (highly liquid) # Transaction cost simulation (realistic slippage + commission) simulated_commission_per_contract: 4.50 # $4.50 per contract (typical futures commission) simulated_slippage_bps: 2 # 2 basis points slippage (0.02%) # ================================================================================================ # ENSEMBLE MODEL CONFIGURATION # ================================================================================================ ensemble: # Model definitions (3-model ensemble based on checkpoint analysis) models: # DQN: Epoch 30 (Sharpe 1.63, explained_variance 0.84, stable) - name: DQN_epoch30 type: DQN checkpoint: ml/trained_models/production/dqn/dqn_epoch_30.safetensors weight: 0.4 # 40% weight (highest performing single model) enabled: true # PPO: Epoch 130 (Sharpe 1.59, explained_variance 0.69, value function healthy) - name: PPO_epoch130 type: PPO checkpoint_actor: ml/trained_models/production/ppo/ppo_actor_epoch_130.safetensors checkpoint_critic: ml/trained_models/production/ppo/ppo_critic_epoch_130.safetensors weight: 0.4 # 40% weight (diversity champion) enabled: true # PPO: Epoch 420 (Sharpe 1.48, explained_variance 0.67, mature training) - name: PPO_epoch420 type: PPO checkpoint_actor: ml/trained_models/production/ppo/ppo_actor_epoch_420.safetensors checkpoint_critic: ml/trained_models/production/ppo/ppo_critic_epoch_420.safetensors weight: 0.2 # 20% weight (stability anchor) enabled: true # Voting strategy voting_strategy: weighted # Options: weighted, majority, unanimous consensus_threshold: 0.6 # 60% agreement required for trade execution # Performance thresholds prediction_timeout_ms: 50 # 50ms max latency per model min_confidence_threshold: 0.55 # Only trade when confidence > 55% max_disagreement_threshold: 0.70 # Reduce position size if disagreement > 70% # Dynamic weight adjustment (adaptive performance weighting) adaptive_weights: enabled: true adjustment_window_hours: 24 # Recalculate weights every 24 hours min_weight: 0.1 # Minimum weight per model (10%) max_weight: 0.6 # Maximum weight per model (60%) adjustment_alpha: 0.1 # Exponential moving average smoothing (10% learning rate) # ================================================================================================ # RISK MANAGEMENT # ================================================================================================ risk_management: # Per-model circuit breakers (halt if single model fails) per_model_circuit_breaker: enabled: true max_consecutive_errors: 3 # Disable model after 3 consecutive prediction errors error_rate_threshold: 0.10 # Disable model if error rate > 10% over 1 hour # Cascade failure protection (halt entire ensemble if multiple models fail) cascade_failure_threshold: 2 # If 2 models fail, stop trading # Cooldown periods after circuit breaker triggers cooldown_period_minutes: 60 # 1 hour cooldown before re-enabling failed models # Position sizing based on confidence confidence_based_sizing: enabled: true min_confidence: 0.55 # No trade below 55% confidence max_confidence: 0.90 # Cap confidence at 90% (avoid overconfidence) min_position_multiplier: 0.25 # 25% position at min confidence max_position_multiplier: 1.00 # 100% position at max confidence # Disagreement-based risk reduction disagreement_penalty: enabled: true low_disagreement: 0.30 # <30% disagreement = no penalty medium_disagreement: 0.50 # 30-50% = 25% position reduction high_disagreement: 0.70 # >70% = 50% position reduction # ================================================================================================ # MONITORING & ALERTING # ================================================================================================ monitoring: # Logging configuration log_all_predictions: true # Log every ensemble prediction (for audit and debugging) log_level: info # Options: debug, info, warn, error # Prometheus metrics export prometheus_metrics: enabled: true port: 9092 # Metrics exposed on http://localhost:9092/metrics push_interval_seconds: 5 # Push metrics every 5 seconds # Grafana dashboard integration grafana_dashboard: enabled: true dashboard_id: ensemble-ml-prod # Dashboard UID in Grafana url: http://localhost:3000/d/ensemble-ml-prod # Alert thresholds (trigger PagerDuty/Slack alerts) alerts: # Sharpe ratio drop alert (model degradation) sharpe_drop_threshold: 0.5 # Alert if Sharpe drops by 50% (e.g., 1.6 -> 0.8) sharpe_check_window_hours: 24 # High disagreement alert (market regime shift) high_disagreement_rate: 0.70 # Alert if disagreement > 70% for 10+ predictions high_disagreement_count: 10 # Latency spike alert (performance degradation) latency_p99_threshold_us: 100 # Alert if P99 latency > 100μs # Circuit breaker alert (model failure) circuit_breaker_triggered: true # Always alert on circuit breaker # Daily P&L alert (risk management) daily_loss_alert_threshold: -1500 # Alert if daily loss exceeds $1,500 # ================================================================================================ # AUDIT & COMPLIANCE # ================================================================================================ audit: # PostgreSQL audit logging database_logging: enabled: true table: ensemble_predictions # Primary audit table batch_size: 100 # Batch insert 100 predictions at once flush_interval_seconds: 10 # Flush batch every 10 seconds # Feature snapshot storage (for reproducibility) feature_snapshots: enabled: true # Store all input features in JSONB column compression: true # Compress feature snapshots (save storage) # Compliance tracking compliance: enabled: true track_user_id: true # Track which user initiated trade track_session_id: true # Track session for audit trail track_request_id: true # Track request ID for distributed tracing # ================================================================================================ # A/B TESTING (OPTIONAL - NOT USED IN PAPER TRADING PHASE) # ================================================================================================ ab_testing: # A/B testing is DISABLED during paper trading phase # Enable in Phase 2 (1% capital) for ensemble vs single-model comparison enabled: false # A/B test configuration (for future phases) test_id: null # Set when starting A/B test control_model: DQN_epoch30 # Baseline: single model treatment_model: ensemble # Treatment: 3-model ensemble traffic_split: 0.5 # 50/50 split min_sample_size: 1000 # 1,000 predictions per group significance_level: 0.05 # 95% confidence (p < 0.05) max_duration_hours: 168 # 1 week maximum # ================================================================================================ # DEPLOYMENT METADATA # ================================================================================================ metadata: deployment_phase: paper_trading # Phase 1 of 5-phase rollout deployment_date: 2025-10-14 version: 1.0.0 deployed_by: ml-team@foxhunt.trading notes: | Paper trading deployment for 3-model ensemble: - DQN epoch 30 (Sharpe 1.63, weight 0.4) - PPO epoch 130 (Sharpe 1.59, weight 0.4) - PPO epoch 420 (Sharpe 1.48, weight 0.2) Success criteria for Phase 2 advancement: - Sharpe ratio > 1.5 over 7 days - Win rate > 52% - Max drawdown < 10% - Zero critical errors or rollbacks - Latency P99 < 50μs