Trading Algorithm Project
A production-ready modular trading system that supports multiple strategies for paper and live trading on Alpaca Markets.
Features
- Multiple Strategy Support: Conservative and Enhanced trend-following strategies
- Paper & Live Trading: Safe testing with paper trading, production-ready for live trading
- Modular Architecture: Clean separation of concerns for easy maintenance
- Risk Management: Position sizing, drawdown limits, and trailing stops
- Professional Logging: Comprehensive trade and performance logging
- Configuration Management: Environment-based and file-based configuration
- Strategy Comparison: Built-in tools to compare strategy performance
Project Structure
trading/
├── src/
│ ├── data_handler.py # Market data retrieval and processing
│ ├── strategy_conservative.py # Conservative trend-following strategy
│ ├── strategy_enhanced.py # Enhanced trend-following with tighter risk controls
│ ├── strategy_factory.py # Strategy selection and instantiation
│ ├── risk_manager.py # Position sizing and risk controls
│ ├── trading_engine.py # Main trading execution engine
│ └── logger_setup.py # Logging configuration
├── config/
│ └── trading_config.py # Configuration settings
├── logs/ # Generated log files
├── main.py # Application entry point
├── compare_strategies.py # Strategy comparison tool
└── README.md
Strategy Types
Conservative Strategy
- Philosophy: Let big winners run, relaxed exit conditions
- Trailing Stops: 18-40% (wider range for bigger moves)
- Emergency Exits: 28-day maximum hold time
- Best For: Trending markets, patient traders
Enhanced Strategy
- Philosophy: Tighter risk control, early loss protection
- Trailing Stops: 12-40% (tighter range for quicker exits)
- Emergency Exits: 7-14 day maximum hold time
- Entry Conditions: More selective (2% above trend line)
- Best For: Volatile markets, risk-conscious traders
Quick Start
1. Setup Environment
# Clone and navigate to project
cd /path/to/trading
# Install dependencies
pip install alpaca-trade-api pandas numpy python-dotenv
# Setup environment variables
echo "ALPACA_API_KEY=your_api_key" > .env
echo "ALPACA_SECRET_KEY=your_secret_key" >> .env
echo "ALPACA_BASE_URL=https://paper-api.alpaca.markets" >> .env
echo "STRATEGY_TYPE=enhanced" >> .env
2. Run Backtesting
# Test conservative strategy
python3 main.py --mode backtest --strategy conservative
# Test enhanced strategy
python3 main.py --mode backtest --strategy enhanced
# Compare both strategies
python3 compare_strategies.py
3. Paper Trading
# Start paper trading with enhanced strategy
python3 main.py --mode paper --strategy enhanced
# Start paper trading with conservative strategy
python3 main.py --mode paper --strategy conservative
Configuration
Environment Variables
ALPACA_API_KEY: Your Alpaca API keyALPACA_SECRET_KEY: Your Alpaca secret keyALPACA_BASE_URL: API endpoint (paper or live)STRATEGY_TYPE: Default strategy ("conservative" or "enhanced")
Strategy Selection
You can select strategies in multiple ways:
- Command Line:
--strategy enhanced - Environment Variable:
STRATEGY_TYPE=conservative - Config File: Modify
trading_config.py
Priority: Command line > Environment variable > Config file
Usage Examples
# Backtest enhanced strategy for 90 days
python3 main.py --mode backtest --strategy enhanced --days 90
# Paper trade with conservative strategy
python3 main.py --mode paper --strategy conservative
# Compare strategies side-by-side
python3 compare_strategies.py
# Check strategy configuration
python3 -c "from config.trading_config import TradingConfig; print(TradingConfig())"
Strategy Comparison
The compare_strategies.py script provides detailed performance comparison:
- Returns: Total return vs market benchmark
- Risk Metrics: Max drawdown, Sharpe ratio
- Trade Analytics: Win rate, profit factor, average wins/losses
- Timing: Time in market, trade frequency
Risk Management
Both strategies include comprehensive risk controls:
- Position Sizing: Configurable risk per trade
- Trailing Stops: Dynamic stop-loss adjustment
- Emergency Exits: Maximum hold time limits
- Drawdown Limits: Account protection thresholds
- Market Hours: Trading only during market hours
Logging
The system generates detailed logs in the logs/ directory:
trading.log: General trading activitytrades.log: Trade execution detailsrisk.log: Risk management eventsperformance.log: Performance metrics
Safety Features
- Paper Trading First: Always test with paper money
- Fail-Safe Defaults: Conservative settings by default
- Error Handling: Graceful error recovery
- Position Limits: Maximum position size controls
- Market Data Validation: Data quality checks
Development
To add a new strategy:
- Create new strategy file in
src/strategy_your_name.py - Inherit from base strategy pattern (see existing strategies)
- Register in
src/strategy_factory.py - Update configuration options
- Test with backtesting before live usage
Support
For issues or questions:
- Check logs in
logs/directory - Verify API keys and permissions
- Test with paper trading first
- Review strategy configuration
Disclaimer
This software is for educational and testing purposes. Always test thoroughly with paper trading before using real money. Past performance does not guarantee future results.
Description
Languages
Python
95.1%
Shell
4.3%
Dockerfile
0.6%