333 lines
9.3 KiB
Markdown
333 lines
9.3 KiB
Markdown
# Clean Trading System
|
|
|
|
A modular, scalable cryptocurrency trading system with CNN and RL components for multi-timeframe analysis.
|
|
|
|
## 🚫 **CRITICAL: NO SYNTHETIC DATA POLICY**
|
|
|
|
**This system uses EXCLUSIVELY real market data from cryptocurrency exchanges. NO synthetic, generated, or simulated data is allowed for training, testing, or inference.**
|
|
|
|
### **Strictly Forbidden:**
|
|
- Any form of synthetic or generated data
|
|
- Mock or simulated market conditions
|
|
- Dummy data for testing or development
|
|
- Random price generation or manipulation
|
|
|
|
### **Policy Compliance:**
|
|
- All data must come from live exchange APIs
|
|
- Historical data must be authentic exchange records
|
|
- Real-time feeds must be direct from exchange WebSockets
|
|
- Zero tolerance for synthetic data in any form
|
|
|
|
**See `REAL_MARKET_DATA_POLICY.md` for complete details and compliance guidelines.**
|
|
|
|
## Features
|
|
|
|
- **Cross-Platform GPU Support**: Same code works with NVIDIA (CUDA), AMD (ROCm), and CPU
|
|
- **Multi-timeframe Analysis**: 1s, 1m, 5m, 1h, 4h, 1d scalping focus
|
|
- **CNN Pattern Recognition**: Real market pattern detection with temporal attention
|
|
- **RL Trading Agent**: Reinforcement learning with real historical backtesting
|
|
- **Real-time Data**: Live market data from Binance API
|
|
- **Web Dashboard**: Real-time monitoring and visualization
|
|
- **Modular Architecture**: Clean separation of concerns
|
|
- **Auto GPU Detection**: Setup script automatically installs correct PyTorch for your hardware
|
|
|
|
## Quick Start
|
|
|
|
### 1. Install Dependencies
|
|
|
|
**Automatic Setup (Recommended)** ⭐
|
|
|
|
```bash
|
|
# Clone and setup virtual environment
|
|
git clone <repo-url> gogo2
|
|
cd gogo2
|
|
python -m venv venv
|
|
source venv/bin/activate # Linux/Mac
|
|
# .\\venv\\Scripts\\activate # Windows
|
|
|
|
# Install dependencies
|
|
pip install -r requirements.txt
|
|
|
|
# Auto-detect GPU and install correct PyTorch
|
|
./scripts/setup-pytorch.sh
|
|
```
|
|
|
|
The setup script automatically detects your hardware and installs the right PyTorch build:
|
|
- ✅ **NVIDIA GPU** → CUDA PyTorch
|
|
- ✅ **AMD GPU** → ROCm PyTorch
|
|
- ✅ **No GPU** → CPU PyTorch
|
|
|
|
**Manual PyTorch Install** (if needed)
|
|
|
|
```bash
|
|
# CPU-only (development without GPU)
|
|
pip install torch --index-url https://download.pytorch.org/whl/cpu
|
|
|
|
# NVIDIA GPU (CUDA 12.1)
|
|
pip install torch --index-url https://download.pytorch.org/whl/cu121
|
|
|
|
# AMD GPU (ROCm 6.2)
|
|
pip install torch --index-url https://download.pytorch.org/whl/rocm6.2
|
|
```
|
|
|
|
💡 **Cross-Platform**: The same codebase works with NVIDIA (CUDA), AMD (ROCm), and CPU! See [CROSS_PLATFORM_GPU.md](CROSS_PLATFORM_GPU.md) for details.
|
|
|
|
### 2. Configure Settings
|
|
Edit `config.yaml` to set your preferences:
|
|
```yaml
|
|
symbols: ["ETH/USDT", "BTC/USDT"]
|
|
timeframes: ["1s", "1m", "5m", "1h", "4h"]
|
|
training:
|
|
use_only_real_data: true # CRITICAL: Never change this
|
|
```
|
|
|
|
### 3. Launch Real-time Dashboard & Training
|
|
```bash
|
|
# Full system with live training
|
|
python main_dashboard.py --port 8051
|
|
|
|
# Dashboard only (no training)
|
|
python main_dashboard.py --port 8051 --no-training
|
|
```
|
|
|
|
### 4. Run Backtesting & Bulk Training
|
|
```bash
|
|
# 30-day backtest
|
|
python main_backtest.py --start 2024-01-01 --end 2024-01-31
|
|
|
|
# Custom symbol and window
|
|
python main_backtest.py --start 2024-01-01 --end 2024-12-31 --symbol BTC/USDT --window 48
|
|
```
|
|
|
|
### 5. Unified Training Runner
|
|
```bash
|
|
# Realtime training for 4 hours
|
|
python training_runner.py --mode realtime --duration 4
|
|
|
|
# Backtest training
|
|
python training_runner.py --mode backtest --start-date 2024-01-01 --end-date 2024-12-31
|
|
```
|
|
|
|
## GPU Support
|
|
|
|
### ✅ Same Codebase Works Everywhere!
|
|
|
|
This project supports **NVIDIA (CUDA)**, **AMD (ROCm)**, and **CPU** with the **same code**. PyTorch abstracts the hardware differences - just install the right PyTorch build for your hardware.
|
|
|
|
### Verified Hardware
|
|
|
|
**NVIDIA GPUs:**
|
|
- RTX 40 Series (4090, 4080, 4070, etc.) - 10-15x faster training
|
|
- RTX 30 Series (3090, 3080, 3070, etc.) - 8-12x faster training
|
|
- RTX 20 Series (2080 Ti, 2070, etc.) - 6-10x faster training
|
|
|
|
**AMD GPUs:**
|
|
- Strix Halo (Radeon 8050S/8060S - RDNA 3.5) - 2-3x faster training
|
|
- RDNA 3 (RX 7900 XTX, 7800 XT, etc.) - 6-10x faster training
|
|
- RDNA 2 (RX 6900 XT, 6800 XT, etc.) - 5-8x faster training
|
|
|
|
**CPU:**
|
|
- Any x86_64 (baseline performance)
|
|
|
|
### Verify Your Setup
|
|
|
|
```bash
|
|
python -c "
|
|
import torch
|
|
print(f'PyTorch: {torch.__version__}')
|
|
print(f'GPU available: {torch.cuda.is_available()}')
|
|
if torch.cuda.is_available():
|
|
print(f'Device: {torch.cuda.get_device_name(0)}')
|
|
print(f'Memory: {torch.cuda.get_device_properties(0).total_memory / 1024**3:.1f} GB')
|
|
"
|
|
```
|
|
|
|
### Alternative: Using Existing ROCm Docker Containers
|
|
|
|
If you already have ROCm Docker containers running, you can use them for development:
|
|
|
|
```bash
|
|
# Attach to an existing ROCm container
|
|
./scripts/attach-to-rocm-container.sh
|
|
|
|
# See documentation for details
|
|
# docs/USING_EXISTING_ROCM_CONTAINER.md
|
|
```
|
|
|
|
### Documentation
|
|
|
|
📖 **Cross-Platform Guide**: [CROSS_PLATFORM_GPU.md](CROSS_PLATFORM_GPU.md)
|
|
📖 **Quick Start**: [QUICK_START.md](QUICK_START.md)
|
|
📖 **Docker Setup**: [docs/USING_EXISTING_ROCM_CONTAINER.md](docs/USING_EXISTING_ROCM_CONTAINER.md)
|
|
|
|
## Architecture
|
|
|
|
```
|
|
gogo2/
|
|
├── core/ # Core system components
|
|
│ ├── config.py # Configuration management
|
|
│ ├── data_provider.py # Real market data fetching
|
|
│ └── orchestrator.py # Decision coordination
|
|
├── models/ # AI models (real data only)
|
|
│ ├── cnn/ # CNN pattern recognition
|
|
│ └── rl/ # RL trading agent
|
|
├── training/ # Training pipelines
|
|
│ ├── cnn_trainer.py # CNN training with real data
|
|
│ └── rl_trainer.py # RL training with real data
|
|
├── web/ # Web dashboard
|
|
└── main_clean.py # Unified entry point
|
|
```
|
|
|
|
## Data Sources
|
|
|
|
### Approved Sources
|
|
- Binance API (real-time and historical)
|
|
- Cached real market data
|
|
- TimescaleDB with real data
|
|
|
|
### Prohibited Sources
|
|
- Synthetic data generation
|
|
- Random data simulation
|
|
- Mock market conditions
|
|
|
|
## Training Modes
|
|
|
|
### CNN Training with TensorBoard
|
|
```bash
|
|
# Train on real ETH/USDT data with TensorBoard monitoring
|
|
python main_clean.py --mode cnn --symbol ETH/USDT
|
|
|
|
# Monitor training in real-time
|
|
tensorboard --logdir=runs
|
|
|
|
# Or use the convenience script
|
|
python run_tensorboard.py
|
|
|
|
# Quick test with real data
|
|
python test_cnn_only.py
|
|
```
|
|
|
|
### RL Training with TensorBoard
|
|
```bash
|
|
# Train RL agent with real data
|
|
python main_clean.py --mode rl --symbol ETH/USDT
|
|
|
|
# Real-time RL training
|
|
python train_rl_with_realtime.py --episodes 10
|
|
|
|
# Monitor RL training metrics
|
|
tensorboard --logdir=runs
|
|
```
|
|
|
|
## TensorBoard Monitoring
|
|
|
|
All training sessions are logged to TensorBoard for real-time monitoring:
|
|
|
|
```bash
|
|
# Start TensorBoard server
|
|
tensorboard --logdir=runs
|
|
|
|
# Or use the convenience script
|
|
python run_tensorboard.py
|
|
```
|
|
|
|
**Metrics Available:**
|
|
- **CNN Training**: Loss, accuracy, confidence scores, feature statistics
|
|
- **RL Training**: Rewards, returns, win rates, epsilon values, trading metrics
|
|
- **Model Architecture**: Parameter counts, memory usage
|
|
- **Real-time Updates**: Batch-level and epoch-level metrics
|
|
|
|
Access TensorBoard at: http://localhost:6006
|
|
|
|
## Performance
|
|
|
|
### Training Speed Comparison
|
|
|
|
| Hardware | Relative Speed | Notes |
|
|
|----------|----------------|-------|
|
|
| **NVIDIA RTX 4090** | 10-15x | Best performance |
|
|
| **NVIDIA RTX 3090** | 8-12x | Excellent |
|
|
| **AMD RX 7900 XTX** | 6-10x | Very good |
|
|
| **AMD Strix Halo (iGPU)** | 2-3x | Good for laptop |
|
|
| **CPU (12+ cores)** | 1.0x | Baseline |
|
|
|
|
### System Resources
|
|
|
|
- **Memory Usage**: <2GB per model
|
|
- **Training Speed**: ~20 seconds for 50 epochs (GPU)
|
|
- **Real Data Processing**: 1000+ candles per timeframe
|
|
- **Feature Count**: Dynamically detected from real data (typically 48)
|
|
- **Inference**: Real-time capable on all GPUs
|
|
|
|
## Monitoring
|
|
|
|
All operations log their data sources:
|
|
```
|
|
INFO - Generating 10000 training cases for ETH/USDT from REAL market data
|
|
INFO - Loaded 1000 real candles for ETH/USDT 1s
|
|
INFO - Building network with 48 features from real market data
|
|
```
|
|
|
|
## Testing
|
|
|
|
```bash
|
|
# Test data provider with real data
|
|
python -m pytest tests/test_data_provider.py
|
|
|
|
# Test CNN with real data
|
|
python test_cnn_only.py
|
|
|
|
# Test full system
|
|
python main_clean.py --mode test
|
|
```
|
|
|
|
## Web Dashboard
|
|
|
|
Access at `http://localhost:8050` for:
|
|
- Real-time price charts
|
|
- Model predictions
|
|
- Trading performance
|
|
- System metrics
|
|
|
|
## Configuration
|
|
|
|
Key settings in `config.yaml`:
|
|
```yaml
|
|
data:
|
|
provider: "binance" # Real exchange API
|
|
cache_enabled: true # Cache real data
|
|
real_time_enabled: true # Live data feed
|
|
|
|
training:
|
|
use_only_real_data: true # NEVER change this
|
|
batch_size: 32
|
|
epochs: 100
|
|
|
|
trading:
|
|
max_position_size: 0.1
|
|
trading_fee: 0.0002
|
|
```
|
|
|
|
## Safety Features
|
|
|
|
- **Data Validation**: Ensures all data comes from real sources
|
|
- **Cache Verification**: Validates cached data authenticity
|
|
- **Training Monitoring**: Logs all data sources
|
|
- **Emergency Stops**: Halts training if synthetic data detected
|
|
|
|
## Contributing
|
|
|
|
When contributing:
|
|
1. **NEVER** introduce synthetic data generation
|
|
2. Always use real market data for testing
|
|
3. Log data sources clearly
|
|
4. Follow the real data policy strictly
|
|
|
|
## License
|
|
|
|
This project is for educational and research purposes. Use real market data responsibly.
|
|
|
|
---
|
|
|
|
** REMEMBER: This system's integrity depends on using only real market data. No exceptions.**
|