# Neural Network Models Prediction Overview ## Executive Summary This document provides a comprehensive overview of what each neural network model in the trading system predicts. All models receive standardized `BaseDataInput` (7,870 or 22,880 features) and produce `ModelOutput` with consistent structure. --- ## Model Categories ### 1. CNN Models (Convolutional Neural Networks) **Purpose**: Pattern recognition from multi-timeframe OHLCV data ### 2. RL Models (Reinforcement Learning / DQN) **Purpose**: Sequential decision-making with Q-learning ### 3. Transformer Models **Purpose**: Long-range temporal dependencies and attention mechanisms ### 4. COB RL Models **Purpose**: Order book microstructure analysis --- ## 1. StandardizedCNN **Location**: `NN/models/standardized_cnn.py` **Input**: `BaseDataInput` (7,870 or 22,880 features) **Output**: `ModelOutput` with trading action predictions ### Predictions: | Prediction | Type | Description | |------------|------|-------------| | **Action** | `str` | Primary trading action: `'BUY'`, `'SELL'`, or `'HOLD'` | | **Action Probabilities** | `Dict[str, float]` | Probability for each action: `{'BUY': 0.65, 'SELL': 0.15, 'HOLD': 0.20}` | | **Buy Probability** | `float` | Confidence in BUY action (0.0 to 1.0) | | **Sell Probability** | `float` | Confidence in SELL action (0.0 to 1.0) | | **Hold Probability** | `float` | Confidence in HOLD action (0.0 to 1.0) | | **Confidence** | `float` | Overall confidence in prediction (0.0 to 1.0) | | **Predicted Returns** | `List[float]` | Expected returns for 4 timeframes: `[1s, 1m, 1h, 1d]` | | **Predicted Return 1s** | `float` | Expected return over next second | | **Predicted Return 1m** | `float` | Expected return over next minute | | **Predicted Return 1h** | `float` | Expected return over next hour | | **Predicted Return 1d** | `float` | Expected return over next day | | **Extrema Detected** | `str` | Market extrema detection: `'bottom'`, `'top'`, or `'neither'` | | **Price Direction** | `str` | Price movement direction: `'up'`, `'down'`, or `'sideways'` | | **Market Conditions** | `Dict[str, str]` | Market analysis: `{'volatility': 'high', 'risk': 'medium'}` | ### Output Structure: ```python ModelOutput( model_type='cnn', model_name='standardized_cnn_v1', symbol='ETH/USDT', timestamp=datetime.now(), confidence=0.85, predictions={ 'action': 'BUY', 'buy_probability': 0.65, 'sell_probability': 0.15, 'hold_probability': 0.20, 'action_probabilities': [0.65, 0.15, 0.20], 'predicted_returns': [0.001, 0.005, 0.02, 0.05], 'predicted_return_1s': 0.001, 'predicted_return_1m': 0.005, 'predicted_return_1h': 0.02, 'predicted_return_1d': 0.05, 'extrema_detected': 'bottom', 'price_direction': 'up', 'market_conditions': {'volatility': 'high', 'risk': 'medium'} }, hidden_states={...}, # For cross-model feeding metadata={...} ) ``` --- ## 2. EnhancedCNN **Location**: `NN/models/enhanced_cnn.py` **Input**: Feature vector (state tensor) **Output**: Q-values, extrema predictions, price direction, advanced predictions ### Predictions: | Prediction | Type | Description | |------------|------|-------------| | **Q-Values** | `torch.Tensor` | Q-values for each action (used by DQN agent) | | **Action** | `int` | Selected action index: `0=BUY`, `1=SELL` | | **Action Probabilities** | `List[float]` | Probability distribution over actions | | **Confidence** | `float` | Confidence in selected action (0.0 to 1.0) | | **Price Direction** | `Dict[str, float]` | `{'direction': -1.0 to 1.0, 'confidence': 0.0 to 1.0}` | | **Extrema Predictions** | `torch.Tensor` | Bottom/top/neither detection probabilities | | **Volatility Prediction** | `str` | `'Very Low'`, `'Low'`, `'Medium'`, `'High'`, `'Very High'` | | **Support/Resistance** | `str` | `'Strong Support'`, `'Weak Support'`, `'Neutral'`, `'Weak Resistance'`, `'Strong Resistance'`, `'Breakout'` | | **Market Regime** | `str` | `'Bull Trend'`, `'Bear Trend'`, `'Sideways'`, `'Volatile Up'`, `'Volatile Down'`, `'Accumulation'`, `'Distribution'` | | **Risk Assessment** | `str` | `'Low Risk'`, `'Medium Risk'`, `'High Risk'`, `'Extreme Risk'` | ### Output Structure: ```python # Returns tuple: (action_idx, confidence, action_probs) action_idx = 0 # BUY confidence = 0.87 action_probs = [0.87, 0.13] # [BUY, SELL] # Additional predictions available via advanced_predictions: { 'volatility': 'High', 'support_resistance': 'Strong Support', 'market_regime': 'Bull Trend', 'risk_assessment': 'Medium Risk' } ``` --- ## 3. DQN Agent (Deep Q-Network) **Location**: `NN/models/dqn_agent.py` **Input**: State vector (from BaseDataInput feature vector) **Output**: Trading action with Q-value estimates ### Predictions: | Prediction | Type | Description | |------------|------|-------------| | **Action** | `int` | Trading action: `0=BUY`, `1=SELL` (2-action system) | | **Q-Values** | `torch.Tensor` | Expected future rewards for each action | | **Confidence** | `float` | Confidence in selected action (0.0 to 1.0) | | **Action Probabilities** | `List[float]` | Probability distribution: `[buy_prob, sell_prob]` | | **Price Direction** | `Dict[str, float]` | Price movement prediction with confidence | | **Market Regime** | `str` | Current market regime classification | | **Volatility Prediction** | `float` | Predicted volatility level | ### Output Structure: ```python # Returns action index action = 0 # BUY action # Additional context available: { 'action': 0, 'confidence': 0.82, 'action_probs': [0.82, 0.18], 'q_values': [2.5, -1.2], # Expected rewards 'price_direction': {'direction': 0.7, 'confidence': 0.85}, 'market_regime': 'bull_trend', 'volatility': 0.65 } ``` --- ## 4. COB RL Model (MassiveRLNetwork) **Location**: `NN/models/cob_rl_model.py` **Input**: COB (Consolidated Order Book) features **Output**: Price direction prediction based on order book microstructure ### Predictions: | Prediction | Type | Description | |------------|------|-------------| | **Predicted Direction** | `int` | Price direction: `0=DOWN`, `1=SIDEWAYS`, `2=UP` | | **Direction Text** | `str` | Human-readable: `'DOWN'`, `'SIDEWAYS'`, or `'UP'` | | **Confidence** | `float` | Confidence in direction prediction (0.0 to 1.0) | | **Value** | `float` | State value estimate (for RL) | | **Probabilities** | `List[float]` | Probability distribution: `[down_prob, sideways_prob, up_prob]` | ### Output Structure: ```python { 'predicted_direction': 2, # UP 'direction_text': 'UP', 'confidence': 0.78, 'value': 1.5, 'probabilities': [0.10, 0.12, 0.78] # [DOWN, SIDEWAYS, UP] } ``` --- ## 5. EnhancedCNNModel (OHLCV Predictor) **Location**: `NN/models/cnn_model.py` **Input**: Feature matrix (multi-timeframe OHLCV data) **Output**: Future OHLCV predictions and market regime ### Predictions: | Prediction | Type | Description | |------------|------|-------------| | **OHLCV Prediction** | `torch.Tensor` | Predicted future OHLCV values: `[open, high, low, close, volume]` | | **Confidence** | `float` | Confidence in OHLCV prediction (0.0 to 1.0) | | **Market Regime** | `Dict[str, float]` | Regime probabilities: `{'bull': 0.6, 'bear': 0.2, 'sideways': 0.2}` | | **Volatility** | `float` | Predicted volatility level | | **Regime Stability** | `float` | Confidence in regime classification (0.0 to 1.0) | ### Output Structure: ```python { 'ohlcv': [2025.0, 2030.0, 2020.0, 2028.0, 1500.0], # [O, H, L, C, V] 'confidence': 0.85, 'regime': {'bull': 0.6, 'bear': 0.2, 'sideways': 0.2}, 'volatility': 0.45, 'regime_stability': 0.78 } ``` --- ## 6. Advanced Trading Transformer **Location**: `NN/models/advanced_transformer_trading.py` **Input**: Multi-modal data (price, COB, technical indicators, market data) **Output**: Comprehensive trading predictions with uncertainty estimation, next candle predictions, pivot point predictions, and trend-based actions ### Predictions: | Prediction | Type | Description | |------------|------|-------------| | **Action Logits** | `torch.Tensor` | Raw logits for each action | | **Action Probabilities** | `torch.Tensor` | Softmax probabilities: `[BUY, SELL, HOLD]` | | **Confidence** | `float` | Prediction confidence (if enabled) | | **Uncertainty Mean** | `float` | Mean uncertainty estimate (if enabled) | | **Uncertainty Std** | `float` | Uncertainty standard deviation (if enabled) | | **Price Prediction** | `torch.Tensor` | Predicted future price (auxiliary task) | | **Volatility Prediction** | `torch.Tensor` | Predicted volatility | | **Trend Strength** | `torch.Tensor` | Trend strength prediction | | **Regime Probabilities** | `torch.Tensor` | Market regime probabilities over time | | **Next Candles** | `Dict[str, torch.Tensor]` | **NEW**: OHLCV predictions for each timeframe (`1s`, `1m`, `1h`, `1d`) | | **Next Pivots** | `Dict[str, Dict]` | **NEW**: Next pivot point predictions for L1-L5 levels with price, type (high/low), and confidence | | **Trend Vector** | `Dict` | **NEW**: Trend vector calculated from pivot predictions (angle, steepness, direction) | | **Trend-Based Action** | `Dict` | **NEW**: Trading action (BUY/SELL/HOLD) based on trend steepness and angle | ### Output Structure: ```python { 'action_logits': tensor([2.5, -1.2, 0.3]), 'action_probs': tensor([0.82, 0.08, 0.10]), # [BUY, SELL, HOLD] 'confidence': 0.82, 'uncertainty_mean': 0.15, 'uncertainty_std': 0.05, 'price_prediction': tensor([2028.5]), 'volatility_prediction': tensor([0.45]), 'trend_strength_prediction': tensor([0.75]), 'regime_probs': tensor([...]), # Temporal regime probabilities # NEW: Next candle predictions for each timeframe 'next_candles': { '1s': tensor([2025.0, 2030.0, 2020.0, 2028.0, 1500.0]), # [O, H, L, C, V] '1m': tensor([2028.0, 2035.0, 2025.0, 2032.0, 5000.0]), '1h': tensor([2030.0, 2040.0, 2028.0, 2038.0, 15000.0]), '1d': tensor([2035.0, 2050.0, 2030.0, 2045.0, 50000.0]) }, # NEW: Next pivot point predictions for L1-L5 'next_pivots': { 'L1': { 'price': tensor([2020.0]), 'type_prob_high': tensor([0.65]), 'type_prob_low': tensor([0.35]), 'pivot_type': tensor([0]), # 0=high, 1=low 'confidence': tensor([0.85]) }, 'L2': {...}, 'L3': {...}, 'L4': {...}, 'L5': {...} }, # NEW: Trend vector analysis 'trend_vector': { 'pivot_prices': tensor([2020.0, 2025.0, 2030.0, 2035.0, 2040.0]), # L1-L5 prices 'price_delta': tensor([20.0]), # Price change from L1 to L5 'time_delta': tensor([4.0]), # Time change 'calculated_angle': tensor([1.373]), # Trend angle in radians (~78.7 degrees) 'calculated_steepness': tensor([20.4]), # Trend steepness magnitude 'calculated_direction': tensor([1.0]), # 1=up, -1=down 'vector': tensor([[20.0, 4.0]]) # [price_delta, time_delta] }, # NEW: Trend-based trading action 'trend_based_action': { 'logits': tensor([[2.5, 0.3, 0.8]]), # [BUY, SELL, HOLD] 'probabilities': tensor([[0.82, 0.08, 0.10]]), 'action_idx': tensor([0]), # 0=BUY, 1=SELL, 2=HOLD 'trend_angle_degrees': tensor([78.7]), # Trend angle in degrees 'trend_steepness': tensor([20.4]) }, # Trend analysis (predicted) 'trend_analysis': { 'angle_radians': tensor([1.373]), 'steepness': tensor([20.4]), 'direction': tensor([0.95]) # -1 to 1 (down to up) } } ``` ### Helper Method: `extract_predictions()` The model includes a helper method `extract_predictions()` that converts raw tensor outputs to user-friendly dictionaries: ```python # Usage example outputs = model.forward(price_data, cob_data, tech_data, market_data) predictions = model.extract_predictions(outputs, denormalize_prices=denorm_func) # predictions structure: { 'next_candles': { '1s': {'open': 2025.0, 'high': 2030.0, 'low': 2020.0, 'close': 2028.0, 'volume': 1500.0}, '1m': {...}, '1h': {...}, '1d': {...} }, 'next_pivots': { 'L1': {'price': 2020.0, 'type': 'high', 'type_prob_high': 0.65, 'type_prob_low': 0.35, 'confidence': 0.85}, 'L2': {...}, 'L3': {...}, 'L4': {...}, 'L5': {...} }, 'trend_vector': { 'pivot_prices': [2020.0, 2025.0, 2030.0, 2035.0, 2040.0], # L1-L5 'angle_radians': 1.373, 'angle_degrees': 78.7, 'steepness': 20.4, 'direction': 'up', 'price_delta': 20.0 }, 'trend_based_action': { 'action': 'BUY', 'action_idx': 0, 'probabilities': {'BUY': 0.82, 'SELL': 0.08, 'HOLD': 0.10}, 'trend_angle_degrees': 78.7, 'trend_steepness': 20.4 } } ``` ### Trend-Based Trading Logic: The transformer model now includes sophisticated trend-based trading logic: 1. **Pivot Prediction**: Predicts next pivot points for L1-L5 levels with price, type (high/low), and confidence 2. **Trend Vector Calculation**: Calculates trend vector from pivot predictions: - Trend angle: Angle of trend line in radians/degrees - Trend steepness: Magnitude of price change over time - Direction: Upward (>0), downward (<0), or sideways (≈0) 3. **Trade Action Logic**: - **Steep upward trend** (>45°): Suggests BUY action - **Steep downward trend** (<-45°): Suggests SELL action - **Shallow trend** (between -45° and 45°): Suggests HOLD action - Action confidence scales with trend steepness This enables the model to generate trend lines from pivot predictions and make trading decisions based on the predicted price movement steepness and angle. --- ## 7. Orchestrator (Ensemble Decision Maker) **Location**: `core/orchestrator.py` **Input**: Aggregates predictions from all models **Output**: Final trading decision with weighted confidence ### Predictions: | Prediction | Type | Description | |------------|------|-------------| | **Final Action** | `str` | Ensemble decision: `'BUY'`, `'SELL'`, or `'HOLD'` | | **Ensemble Confidence** | `float` | Weighted average confidence across models | | **Model Contributions** | `Dict[str, float]` | Each model's contribution to final decision | | **Consensus Score** | `float` | Agreement level among models (0.0 to 1.0) | | **Risk Assessment** | `str` | Overall risk level: `'low'`, `'medium'`, `'high'` | ### Output Structure: ```python Prediction( action='BUY', confidence=0.83, probabilities={'BUY': 0.83, 'SELL': 0.10, 'HOLD': 0.07}, timeframe='1m', timestamp=datetime.now(), model_name='orchestrator_ensemble', metadata={ 'model_contributions': { 'cnn': 0.35, 'dqn': 0.40, 'transformer': 0.25 }, 'consensus_score': 0.78, 'risk_assessment': 'medium' } ) ``` --- ## Common Prediction Format All models return standardized `ModelOutput`: ```python @dataclass class ModelOutput: model_type: str # 'cnn', 'rl', 'transformer', 'orchestrator' model_name: str # Specific model identifier symbol: str # Trading symbol (e.g., 'ETH/USDT') timestamp: datetime # Prediction timestamp confidence: float # Overall confidence (0.0 to 1.0) predictions: Dict[str, Any] # Model-specific predictions hidden_states: Optional[Dict[str, Any]] # For cross-model feeding metadata: Dict[str, Any] # Additional information ``` --- ## Prediction Summary Table | Model | Primary Prediction | Secondary Predictions | Use Case | |-------|-------------------|----------------------|----------| | **StandardizedCNN** | BUY/SELL/HOLD action | Returns (1s/1m/1h/1d), extrema, direction | Pattern recognition, multi-timeframe analysis | | **EnhancedCNN** | Q-values (BUY/SELL) | Volatility, regime, risk, support/resistance | RL base network, comprehensive market analysis | | **DQN Agent** | BUY/SELL action | Q-values, price direction, regime | Sequential decision-making, position management | | **COB RL** | Price direction (UP/DOWN/SIDEWAYS) | Confidence, state value | Order book microstructure analysis | | **EnhancedCNNModel** | Future OHLCV values | Market regime, volatility | Price forecasting, regime detection | | **Transformer** | BUY/SELL/HOLD with uncertainty | Price prediction, volatility, trend strength, **next candles (1s/1m/1h/1d), next pivots (L1-L5), trend vector, trend-based action** | Long-range dependencies, uncertainty-aware trading, **trend-based decision making** | | **Orchestrator** | Final ensemble decision | Consensus score, model contributions | Combining all models for optimal decision | --- ## Key Takeaways 1. **All models predict trading actions** (BUY/SELL/HOLD) with confidence scores 2. **Specialized predictions** complement action predictions: - Price direction and returns - Market regime and volatility - Support/resistance levels - Risk assessment - Uncertainty estimation (Transformer) 3. **Cross-model feeding** enabled via `hidden_states` for ensemble learning 4. **Standardized output format** ensures consistent integration across models 5. **Orchestrator** combines all predictions for final decision with weighted confidence --- ## References - **Model Interfaces**: `NN/models/model_interfaces.py` - **Data Models**: `core/data_models.py` - **Orchestrator**: `core/orchestrator.py` - **Standardized CNN**: `NN/models/standardized_cnn.py` - **DQN Agent**: `NN/models/dqn_agent.py` - **Transformer**: `NN/models/advanced_transformer_trading.py`