End-to-end ensemble trading framework that trains, backtests, and promotes validated strategies to live execution.
# AmpyFin Trading System
| Category | Badges | | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Project |
| | CI/CD |
| | Quality |
| | Package |
| | Meta |
|
Introduction
AmpyFin is an advanced AI-powered trading system designed to trade within the NASDAQ-100. It leverages machine learning and algorithmic trading strategies to make data-driven investment decisions.
Mission
The primary goal of AmpyFin as an open source project is to:
- Democratize Algorithmic Trading: Make proven trading frameworks available for everyone to use freely
- Provide Transparency: Offer insights into how machine learning can be applied to financial markets
- Fill a Gap: Contribute to the open source community where there are few published frameworks for effective trading systems
- Enable Collaboration: Create a platform for traders and developers to build upon and improve together
Tutorial Playlist
For a comprehensive guide on how to use AmpyFin, check out our YouTube tutorial playlist.
Documentation
📚 Comprehensive documentation is now available! Check out the detailed guides in the docs/ folder:
- Configuration Guide - Complete setup instructions, risk management, and parameter tuning
- Trading Strategies - 100+ TA-Lib indicators, strategy categories, and custom development
- Database Schema - MongoDB collections, SQLite structure, and data management
- API Integration - Broker APIs, data providers, and external services
- Troubleshooting Guide - Common issues, solutions, and debugging techniques
Features
Data Collection
- yfinance: Primary source for historical price data and technical indicators
Data Storage
- MongoDB: Securely stores all data and trading logs for historical analysis
Machine Learning
AmpyFin uses a ranked ensemble learning system that dynamically evaluates each strategy's performance and adjusts their influence in the final decision accordingly.
Trading Strategies
- Mean Reversion: Predicts asset prices will return to their historical average
- Momentum: Capitalizes on prevailing market trends
- Arbitrage: Identifies and exploits price discrepancies between related assets
- AI-Driven Custom Strategies: Continuously refined through machine learning
Dynamic Ranking System
Each strategy is evaluated based on performance metrics and assigned a weight using a sophisticated ranking algorithm. The system adapts to changing market conditions by prioritizing high-performing strategies.
Architecture
Core Components
| Component | Description | | --------------------- | ----------------------------------------------- | | control.py | Configuration interface for trading parameters | | TradeSim/main.py | Training and testing environment for strategies | | TradeSim/trading.py | Executes trades based on algorithmic decisions | | TradeSim/ranking.py | Evaluates and ranks trading strategies | | strategies/* | Implementation of various trading algorithms | | utilites/* | General Utility functions | | dbs/* | Create SQLite DBs of prices and decisions |
Installation
Prerequisites
- Python 3.8+
- MongoDB
- TA-Lib
Setup
- Clone the repository
git clone https://github.com/AmpyFin/ampyfin.git
cd ampyfin
- Install dependencies
pip install -r requirements.txt
- Install TA-Lib
Option 1: Use pre-built binaries (Recommended for Windows users)
- Download the appropriate wheel file for your Python version from here
- Install it with pip:
pip install <downloaded-wheel-file>.whl
Option 2: Build from source (For Linux/Mac users)
- Follow the instructions on the TA-Lib Python repository
- Set up MongoDB
- Option A: MongoDB Atlas (Cloud-hosted, recommended for beginners)
mongodb+srv://<username>:<password>@cluster0.mongodb.net/ampyfin
- Option B: Local MongoDB Installation
mongodb://localhost:27017/ampyfin
- Configure API keys
- Alpaca - For trading execution
- Weights & Biases - For experiment tracking
.env file based on the template:
APIKEY = "youralpacaapikey"
APISECRET = "youralpacasecretkey"
BASE_URL = "https://paper-api.alpaca.markets" # Paper trading (safe for testing)
BASE_URL = "https://api.alpaca.markets" # Live trading (uses real money)
WANDBAPIKEY = "yourwandbapi_key"
MONGOURL = "yourmongoconnectionstring"
⚠️ IMPORTANT: The default configuration uses Alpaca's paper trading environment. To switch to live trading (using real money), change the BASE_URL to "https://api.alpaca.markets". Only do this once you've thoroughly tested your strategies and understand the risks involved.
- Run the setup script
python setup.py
This initializes the database structure required for AmpyFin.
Usage
Running the System
Start the ranking and trading systems in separate terminals:
cd TradeSim
python ranking.py
python trading.py
Training and Testing
These are separate operations that can be performed within the TradeSim module:
Training
- Set the mode in
control.py:
mode = 'train'
- Run the training module:
python TradeSim/main.py
Testing
- Set the mode in
control.py:
mode = 'test'
- Run the testing module:
python TradeSim/main.py
Deploying a Model
- Set the mode in
control.py:
mode = 'push'
- Push your model to MongoDB:
python TradeSim/main.py
Important Notes
For live trading, it's recommended to:
- Train the system by running
ranking.pyfor at least two weeks, or - Train using the TradeSim module and push changes to MongoDB before executing trades
Documentation
Comprehensive documentation is available in the docs/ folder:
- Configuration Guide - Detailed configuration parameters and setup instructions
- Trading Strategies - Complete guide to implemented strategies and TA-Lib indicators
- Database Schema - MongoDB and SQLite database structure documentation
- API Integration - Broker APIs, data providers, and external service integration
- Troubleshooting Guide - Common issues, solutions, and debugging techniques
Quick Reference
| Topic | Documentation | Description | |-------|---------------|-------------| | Setup | Configuration Guide | Environment setup, API keys, risk management | | Strategies | Trading Strategies | 100+ TA-Lib indicators, custom strategy development | | Data | Database Schema | MongoDB collections, SQLite structure, data flow | | APIs | API Integration | Alpaca, IBKR, yfinance, Weights & Biases | | Issues | Troubleshooting Guide | Common problems, solutions, debugging |
Contributing
Contributions are welcome! Please review the Contributing Guide.
License
This project is licensed under the MIT License. See the LICENSE file for details.