structure updates

This commit is contained in:
2024-05-01 12:28:44 -06:00
parent a689e58eea
commit aeba9bdb34
461 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,125 @@
# 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. Its 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.