Files
gogo2/PLACEHOLDERS_AND_MISSING_IMPLEMENTATIONS.md
Dobromir Popov 53ce4a355a wip
2025-12-08 17:38:31 +02:00

209 lines
7.3 KiB
Markdown

# Placeholders and Missing Implementations Report
**Generated**: 2025-11-23
**Purpose**: Identify all TODO, placeholder, and missing implementations that violate "no synthetic data" policy
---
## 🔴 **CRITICAL - Synthetic Data Violations**
### 1. **core/negative_case_trainer.py** (Lines 396-397)
**Issue**: Uses `np.random.uniform()` for synthetic training improvements
```python
session.loss_improvement = np.random.uniform(0.1, 0.5) # 10-50% improvement
session.accuracy_improvement = np.random.uniform(0.05, 0.2) # 5-20% improvement
```
**Fix Required**: Calculate actual improvements from real training metrics
---
## 🟡 **HIGH PRIORITY - Missing Core Functionality**
### 2. **core/orchestrator.py** (Line 2020)
**Issue**: `_get_all_predictions()` returns empty list - not implemented
```python
async def _get_all_predictions(self, symbol: str) -> List[Prediction]:
predictions = []
# TODO: Implement proper prediction gathering from all registered models
logger.warning(f"_get_all_predictions not fully implemented for {symbol}")
return predictions
```
**Impact**: Orchestrator cannot gather predictions from all models for decision fusion
**Fix Required**: Implement actual prediction gathering from registered models
### 3. **ANNOTATE/core/real_training_adapter.py** (Line 2339-2341)
**Issue**: Extrema training uses placeholder loss
```python
# TODO: Implement actual extrema training
session.current_loss = 0.5 / (epoch + 1) # Placeholder
```
**Fix Required**: Implement real extrema training logic
### 4. **ANNOTATE/core/real_training_adapter.py** (Line 1577)
**Issue**: Placeholder `time_in_position_minutes`
```python
time_in_position_minutes = 1.0 # Placeholder, will be more accurate with actual timestamps
```
**Fix Required**: Calculate actual time from entry timestamp
---
## 🟢 **MEDIUM PRIORITY - Missing Features**
### 5. **web/clean_dashboard.py** (Lines 8759, 8768)
**Issue**: TODO for technical indicators and pivot points
```python
def _get_technical_indicators(self, symbol: str) -> Dict[str, float]:
# TODO: Implement technical indicators calculation
return {}
def _get_pivot_points(self, symbol: str) -> List['PivotPoint']:
# TODO: Implement pivot points calculation
return []
```
**Note**: Pivot points ARE implemented elsewhere (Williams Market Structure), but not in this method
**Fix Required**: Implement or delegate to existing pivot calculation
### 6. **web/clean_dashboard.py** (Line 8665)
**Issue**: TODO for cross-model predictions
```python
last_predictions={} # TODO: Add cross-model predictions
```
**Fix Required**: Gather predictions from all models (similar to orchestrator)
### 7. **web/clean_dashboard.py** (Line 8696)
**Issue**: TODO for technical indicators in bar data
```python
indicators={} # TODO: Add technical indicators
```
**Fix Required**: Calculate and include technical indicators
### 8. **web/clean_dashboard.py** (Line 9542)
**Issue**: Placeholder features array
```python
'features': [current_price, 0, 0, 0, 0] # Placeholder features
```
**Fix Required**: Extract real features from market data
---
## 🔵 **LOW PRIORITY - Acceptable Placeholders**
### 9. **ANNOTATE/core/real_training_adapter.py** (Line 1421)
**Issue**: Placeholder COB data (zeros)
```python
# Create placeholder COB data (zeros if not available)
cob_data = torch.zeros(1, target_seq_len, 100, dtype=torch.float32)
```
**Status**: ✅ **ACCEPTABLE** - Returns zeros when COB data unavailable (not synthetic, just missing)
### 10. **ANNOTATE/core/real_training_adapter.py** (Lines 2746-2748)
**Issue**: Placeholder tech/market/COB data (zeros)
```python
data['tech_data'] = torch.zeros(1, 40, dtype=torch.float32)
data['market_data'] = torch.zeros(1, 30, dtype=torch.float32)
data['cob_data'] = torch.zeros(1, 600, 100, dtype=torch.float32)
```
**Status**: ✅ **ACCEPTABLE** - Model requires these inputs, zeros are safe defaults when unavailable
### 11. **ANNOTATE/core/real_training_adapter.py** (Line 2887)
**Issue**: Placeholder action in annotation conversion
```python
'action': 'BUY', # Placeholder, not used for candle prediction training
```
**Status**: ✅ **ACCEPTABLE** - Comment indicates it's not used for this training path
---
## ⚠️ **QUESTIONABLE - Needs Review**
### 12. **core/orchestrator.py** (Lines 2098-2101)
**Issue**: Uses `random.uniform()` for tie-breaking
```python
import random
for action in action_scores:
# Add tiny random noise (±0.001) to break exact ties
action_scores[action] += random.uniform(-0.001, 0.001)
```
**Status**: ⚠️ **QUESTIONABLE** - This is for tie-breaking, not synthetic data generation
**Recommendation**: Consider deterministic tie-breaking (e.g., alphabetical order) instead
---
## 📋 **Other TODOs Found**
### 13. **ANNOTATE/web/app.py** (Lines 2745, 2850)
**Issue**: Hardcoded symbols
```python
for symbol in ['ETH/USDT', 'BTC/USDT']: # TODO: Get from active subscriptions
symbol = 'ETH/USDT' # TODO: Get from active trading pair
```
**Fix Required**: Get from active subscriptions/trading pairs
### 14. **ANNOTATE/web/static/js/chart_manager.js** (Line 1193)
**Issue**: TODO for visual markers
```python
# TODO: Add visual markers using Plotly annotations
```
**Fix Required**: Add visual markers if needed
### 15. **ANNOTATE/web/templates/components/inference_panel.html** (Line 259)
**Issue**: TODO for Plotly chart update
```python
// TODO: Update Plotly chart with prediction marker
```
**Fix Required**: Implement prediction marker update
### 16. **ANNOTATE/core/data_loader.py** (Line 434)
**Issue**: MEXC time range fetch not implemented
```python
logger.warning("MEXC time range fetch not implemented yet")
```
**Fix Required**: Implement MEXC time range fetch or remove if not needed
### 17. **core/multi_horizon_prediction_manager.py** (Lines 690-713)
**Issue**: Placeholder methods for CNN/RL feature preparation
```python
def _prepare_cnn_features_for_horizon(...) -> np.ndarray:
"""Prepare CNN features for specific horizon (placeholder - not yet implemented)"""
return np.array([]) # Return empty array instead of synthetic data
def _prepare_rl_state_for_horizon(...) -> np.ndarray:
"""Prepare RL state for specific horizon (placeholder - not yet implemented)"""
return np.array([]) # Return empty array instead of synthetic data
```
**Status**: ✅ **ACCEPTABLE** - Returns empty arrays (not synthetic data), methods not yet needed
---
## 📊 **Summary**
### By Priority:
- **🔴 Critical (Synthetic Data)**: 1 issue
- **🟡 High Priority (Missing Core)**: 3 issues
- **🟢 Medium Priority (Missing Features)**: 4 issues
- **🔵 Low Priority (Acceptable)**: 3 issues
- **⚠️ Questionable**: 1 issue
- **📋 Other TODOs**: 5 issues
### Total Issues Found: 17
---
## 🎯 **Recommended Fix Order**
1. **Fix synthetic data violation** (negative_case_trainer.py) - **URGENT**
2. **Implement `_get_all_predictions()`** (orchestrator.py) - **HIGH**
3. **Implement extrema training** (real_training_adapter.py) - **HIGH**
4. **Fix time_in_position calculation** (real_training_adapter.py) - **MEDIUM**
5. **Implement technical indicators** (clean_dashboard.py) - **MEDIUM**
6. **Review tie-breaking logic** (orchestrator.py) - **LOW**
---
## ✅ **Already Fixed**
-`_get_live_prediction()` - Now uses real model inference with caching
- ✅ Ghost candles - Now includes `predicted_candle` in predictions
- ✅ JSON serialization - Fixed tensor serialization errors