trading-algo/README.md
Gal Podlipnik 69462cf3e0 first
2025-07-17 02:30:21 +02:00

181 lines
5.7 KiB
Markdown

# 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
```bash
# 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
```bash
# 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
```bash
# 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 key
- `ALPACA_SECRET_KEY`: Your Alpaca secret key
- `ALPACA_BASE_URL`: API endpoint (paper or live)
- `STRATEGY_TYPE`: Default strategy ("conservative" or "enhanced")
### Strategy Selection
You can select strategies in multiple ways:
1. **Command Line**: `--strategy enhanced`
2. **Environment Variable**: `STRATEGY_TYPE=conservative`
3. **Config File**: Modify `trading_config.py`
Priority: Command line > Environment variable > Config file
## Usage Examples
```bash
# 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 activity
- `trades.log`: Trade execution details
- `risk.log`: Risk management events
- `performance.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:
1. Create new strategy file in `src/strategy_your_name.py`
2. Inherit from base strategy pattern (see existing strategies)
3. Register in `src/strategy_factory.py`
4. Update configuration options
5. Test with backtesting before live usage
## Support
For issues or questions:
1. Check logs in `logs/` directory
2. Verify API keys and permissions
3. Test with paper trading first
4. 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.