gogo2/NN/README.md
2025-03-25 12:48:58 +02:00

131 lines
4.1 KiB
Markdown

# Neural Network Trading System
A comprehensive neural network trading system that uses deep learning models to analyze cryptocurrency price data and generate trading signals.
## Architecture Overview
This project implements a 500M parameter neural network system using a Mixture of Experts (MoE) approach. The system consists of:
1. **Data Interface**: Connects to real-time trading data from `realtime.py` and processes it for the neural network models
2. **CNN Module (100M parameters)**: A deep convolutional neural network for feature extraction from time series data
3. **Transformer Module**: Processes high-level features and raw data for improved pattern recognition
4. **Mixture of Experts (MoE)**: Coordinates the different models and combines their predictions
The system is designed to identify buy/sell opportunities in cryptocurrency markets by analyzing patterns in historical price and volume data.
## Components
### Data Interface
- Located in `NN/utils/data_interface.py`
- Provides seamless access to historical and real-time data from `realtime.py`
- Preprocesses data for neural network consumption
- Supports multiple timeframes and features
### CNN Model
- Located in `NN/models/cnn_model.py`
- Implements a deep convolutional network for time series analysis
- Uses multiple parallel convolutional layers to detect patterns at different time scales
- Includes bidirectional LSTM layers for sequence modeling
- Optimized for financial time series data
### Transformer Model
- Located in `NN/models/transformer_model.py`
- Uses self-attention mechanism to process time series data
- Takes both raw data and high-level features from the CNN as input
- Better at capturing long-range dependencies in the data
### Orchestrator
- Located in `NN/main.py`
- Coordinates data flow between the models
- Implements training and inference pipelines
- Provides a unified interface for the entire system
## Usage
### Requirements
- TensorFlow 2.x
- NumPy
- Pandas
- Matplotlib
- scikit-learn
### Training the Model
To train the neural network on historical data:
```bash
python -m NN.main --mode train --symbol BTC/USDT --timeframes 1h 4h 1d --epochs 100
```
### Making Predictions
To make one-time predictions:
```bash
python -m NN.main --mode predict --symbol BTC/USDT --timeframe 1h --model_type cnn
```
### Running Real-time Analysis
To continuously analyze the market and generate signals:
```bash
python -m NN.main --mode realtime --symbol BTC/USDT --timeframe 1h --interval 60
```
## Model Architecture Details
### CNN Architecture
The CNN model uses a multi-scale approach with three parallel convolutional pathways:
- Short-term patterns: 3x1 kernels
- Medium-term patterns: 5x1 kernels
- Long-term patterns: 7x1 kernels
These pathways are merged and processed through deeper convolutional layers, followed by LSTM layers to capture temporal dependencies.
### Transformer Architecture
The transformer model uses:
- Multi-head self-attention layers to capture relationships between different time points
- Layer normalization and residual connections for stable training
- A feed-forward network for final classification/regression
### Mixture of Experts
The MoE model:
- Combines predictions from CNN and Transformer models
- Uses a weighted average approach for signal generation
- Can be extended with additional expert models
## Training Data
The system uses historical OHLCV (Open, High, Low, Close, Volume) data at different timeframes:
- 1-minute candles for short-term analysis
- 1-hour candles for medium-term trends
- 1-day candles for long-term market direction
## Output
The system generates one of three signals:
- BUY: Indicates a potential buying opportunity
- HOLD: Suggests maintaining current position
- SELL: Indicates a potential selling opportunity
## Development
### Adding New Models
To add a new model type:
1. Create a new class in the `NN/models` directory
2. Implement the required interface (build_model, train, predict, etc.)
3. Update the orchestrator to include the new model
### Customizing Parameters
Key parameters can be customized through command-line arguments or by modifying the configuration in `main.py`.