460 lines
17 KiB
Markdown
460 lines
17 KiB
Markdown
# 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`
|
|
|