131 lines
4.1 KiB
Markdown
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`. |