126 lines
4.3 KiB
Markdown
126 lines
4.3 KiB
Markdown
# Mean Reversion Trading System for EUR/USD
|
||
|
||
Welcome to the Mean Reversion Trading System project, specifically tailored for the EUR/USD forex pair. This project combines the precision of machine learning (ML), the robustness of Backtrader for strategy evaluation, and the real-world applicability of trading via the Oanda platform. It’s structured for scalability, leveraging containerization for development consistency and serverless architecture for operational efficiency.
|
||
|
||
## Project Overview
|
||
|
||
This system is designed for traders and developers interested in exploring and deploying automated trading strategies. It focuses on the mean reversion principle, a well-regarded concept in finance that suggests asset prices and returns eventually move back towards the mean or average. This project aims to capitalize on this phenomenon using historical EUR/USD data, predictive modeling, and live execution.
|
||
|
||
## Project Structure
|
||
|
||
```
|
||
/mean-reversion-trading
|
||
|-- /data
|
||
| |-- /raw # Store raw historical data from Oanda
|
||
| `-- /processed # Processed data, ready for ML
|
||
|
|
||
|-- /models
|
||
| |-- /trained # Location for storing trained models
|
||
| `-- model_training.py # Script for ML model training
|
||
|
|
||
|-- /strategies
|
||
| |-- mean_reversion_strategy.py # Strategy implementation for Backtrader
|
||
|
|
||
|-- /backtesting
|
||
| |-- backtest.py # Backtesting script using Backtrader
|
||
|
|
||
|-- /trading
|
||
| |-- live_trade.py # Live trading execution script
|
||
|
|
||
|-- /utils
|
||
| |-- data_fetcher.py # Utility script for data retrieval
|
||
| |-- feature_engineering.py # Data processing and feature engineering
|
||
| `-- indicators.py # Custom technical indicators
|
||
|
|
||
|-- Dockerfile # For containerization
|
||
|-- requirements.txt # Python package dependencies
|
||
`-- README.md # Project documentation
|
||
```
|
||
|
||
### Detailed Component Overview
|
||
|
||
- **/data**: Contains both raw and processed datasets. Raw data is directly fetched from Oanda, while processed data includes features engineered to enhance model training.
|
||
- **/models**: This directory is pivotal for the ML lifecycle, encompassing scripts for training, validation, and serialization of models.
|
||
- **/strategies**: Implements trading strategies within the Backtrader framework, enabling a seamless transition from theory to practical testing.
|
||
- **/backtesting & /trading**: These separate concerns between historical strategy evaluation and real-world application, ensuring a clear pathway from concept to execution.
|
||
- **/utils**: A collection of utility scripts support the data pipeline, from fetching and cleaning to feature engineering, alongside custom indicator development for strategic analysis.
|
||
|
||
## Getting Started
|
||
|
||
### Installation
|
||
|
||
Ensure Python 3.8+ is installed on your system. Clone this repository and navigate into the project directory. Set up a virtual environment and install the required dependencies:
|
||
|
||
```sh
|
||
python -m venv venv
|
||
source venv/bin/activate # or venv\Scripts\activate on Windows
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### Environment Configuration
|
||
|
||
Create a `.env` file in the project root. Add your Oanda API credentials here:
|
||
|
||
```plaintext
|
||
OANDA_ACCOUNT_ID=<your_account_id>
|
||
OANDA_API_KEY=<your_api_key>
|
||
```
|
||
|
||
### Running the Project
|
||
|
||
#### Data Preparation
|
||
|
||
Fetch and prepare your data for analysis and model training:
|
||
|
||
```sh
|
||
python utils/data_fetcher.py
|
||
```
|
||
|
||
#### Model Training
|
||
|
||
Train your model using historical data:
|
||
|
||
```sh
|
||
python models/model_training.py
|
||
```
|
||
|
||
#### Backtesting
|
||
|
||
Evaluate your strategy with Backtrader:
|
||
|
||
```sh
|
||
python backtesting/backtest.py
|
||
```
|
||
|
||
#### Live Trading
|
||
|
||
Execute your strategy in the live market:
|
||
|
||
```sh
|
||
python trading/live_trade.py
|
||
```
|
||
|
||
## Deployment
|
||
|
||
For containerization, build the Docker image with:
|
||
|
||
```sh
|
||
docker build -t mean-reversion-trading .
|
||
```
|
||
|
||
To run the containerized application:
|
||
|
||
```sh
|
||
docker run -it mean-reversion-trading
|
||
```
|
||
|
||
For serverless deployment, refer to your cloud provider's documentation for deploying Docker containers and setting up serverless functions for tasks like scheduled data fetching and model retraining.
|
||
|
||
## Contributing
|
||
|
||
We welcome contributions! Whether it's feature requests, bug reports, or code contributions, please feel free to reach out or submit a pull request.
|
||
|
||
## License
|
||
|
||
Distributed under the MIT License. See `LICENSE` for more information.
|