trading-platform/apps/llm-agent/AUTO_TRADING.md

370 lines
9.1 KiB
Markdown
Raw Blame History

# Auto-Trading System - LLM Agent
## Overview
The Auto-Trading system enables the LLM Agent to autonomously analyze ML signals, evaluate AMD (Accumulation/Manipulation/Distribution) phases, and make informed trading decisions.
## Features
### 1. Automated Decision Making
- Analyzes ML signals from the ML Engine
- Evaluates AMD phase for market context
- Makes BUY/SELL/HOLD decisions with confidence scores
- Calculates optimal position sizes based on risk parameters
### 2. Risk Management
- Automatic TP/SL calculation based on ML signals
- Position sizing based on account size and risk percentage
- Maximum position limits to prevent overexposure
- Confidence threshold filtering
### 3. Safety Features
- Paper trading mode by default
- Optional user confirmation before execution
- Decision logging for audit trail
- Configurable monitoring intervals
### 4. Monitoring Loop
- Background task monitors configured symbols
- Periodic checks every N minutes (configurable)
- Automatic decision generation on opportunities
- Non-blocking async implementation
## Architecture
### Models (`src/models/auto_trade.py`)
#### TradeDecision
Represents an automated trading decision:
```python
{
"symbol": "BTC/USD",
"action": "BUY", # BUY, SELL, or HOLD
"confidence": 0.85, # 0-1
"reasoning": "Strong bullish signal during accumulation",
"entry_price": 45000.0,
"take_profit": 47500.0,
"stop_loss": 44000.0,
"position_size": 0.5,
"ml_signal": {...},
"amd_phase": "accumulation"
}
```
#### AutoTradeConfig
Configuration for auto-trading:
```python
{
"user_id": "user_123",
"enabled": true,
"symbols": ["BTC/USD", "ETH/USD"],
"max_risk_percent": 1.5,
"min_confidence": 0.75,
"paper_trading": true,
"require_confirmation": true,
"max_open_positions": 3,
"check_interval_minutes": 5
}
```
### Tools (`src/tools/auto_trading.py`)
#### AutoTradeDecisionTool
Core decision-making tool that:
1. Fetches ML signal from ML Engine
2. Gets AMD phase analysis
3. Retrieves current market data
4. Applies decision matrix logic
5. Calculates position size and TP/SL
#### GetAMDPhaseTool
Analyzes AMD phase for a symbol:
- Accumulation: Smart money buying (good for longs)
- Manipulation: High volatility (trade with caution)
- Distribution: Smart money selling (good for shorts)
### Service (`src/services/auto_trade_service.py`)
#### AutoTradeService
Manages auto-trading operations:
- Configuration management
- Background monitoring loop
- Decision logging
- Trade execution coordination
### API Endpoints (`src/api/auto_trade_routes.py`)
#### Configuration Endpoints
**POST /api/v1/auto-trade/config**
Set or update auto-trade configuration
```json
{
"config": {
"user_id": "user_123",
"enabled": true,
"symbols": ["BTC/USD"],
"max_risk_percent": 1.5,
"min_confidence": 0.75
}
}
```
**GET /api/v1/auto-trade/config/{user_id}**
Get current configuration
**GET /api/v1/auto-trade/status/{user_id}**
Get current status
#### Control Endpoints
**POST /api/v1/auto-trade/enable/{user_id}**
Quick enable auto-trading
**POST /api/v1/auto-trade/disable/{user_id}**
Quick disable auto-trading
#### Decision Management
**GET /api/v1/auto-trade/decisions/{user_id}**
Get decision logs
- Query params: `limit` (default: 50), `executed_only` (default: false)
**GET /api/v1/auto-trade/pending/{user_id}**
Get pending (unexecuted) decisions
**POST /api/v1/auto-trade/decisions/{user_id}/confirm**
Confirm and execute a pending decision
```json
{
"log_id": "decision_123"
}
```
**POST /api/v1/auto-trade/decisions/{user_id}/cancel**
Cancel a pending decision
```json
{
"log_id": "decision_123"
}
```
## Decision Logic
### Decision Matrix
The system uses a decision matrix based on ML signals and AMD phases:
| ML Signal | AMD Phase | Decision | Confidence |
|-----------|-----------|----------|------------|
| Bullish | Accumulation | BUY | High (0.95x) |
| Bullish | Manipulation | BUY | Medium (0.70x) |
| Bullish | Distribution | HOLD | Low (0.30) |
| Bearish | Distribution | SELL | High (0.95x) |
| Bearish | Manipulation | SELL | Medium (0.70x) |
| Bearish | Accumulation | HOLD | Low (0.30) |
| Neutral | Any | HOLD | None (0.0) |
### Position Sizing
Position size is calculated using:
```
Risk Amount = Account Size <20> (Risk % / 100)
Risk Per Unit = |Entry Price - Stop Loss|
Position Size = Risk Amount / Risk Per Unit
```
Maximum position size is capped at 20% of account value.
## Enhanced Execute Trade Tool
The `execute_trade` tool has been enhanced with:
### ML Integration
- Automatic TP/SL calculation from ML signals
- Falls back to manual values if provided
- Fetches current market price
### Risk/Reward Analysis
```python
{
"risk_amount": 500.0,
"reward_amount": 2500.0,
"risk_reward_ratio": 5.0,
"risk_percent": 1.11,
"reward_percent": 5.56
}
```
### Modes
- **Paper Trading**: Safe simulation mode (default)
- **Live Trading**: Real execution (requires explicit enable)
- **Confirmation Required**: Manual approval (default: true)
- **Auto-Execute**: Direct execution for auto-trading (confirmation: false)
## Usage Examples
### 1. Configure Auto-Trading
```bash
curl -X POST http://localhost:8003/api/v1/auto-trade/config \
-H "Content-Type: application/json" \
-d '{
"config": {
"user_id": "user_123",
"enabled": true,
"symbols": ["BTC/USD", "ETH/USD"],
"max_risk_percent": 1.0,
"min_confidence": 0.75,
"paper_trading": true,
"require_confirmation": false,
"max_open_positions": 3,
"check_interval_minutes": 5
}
}'
```
### 2. Check Status
```bash
curl http://localhost:8003/api/v1/auto-trade/status/user_123
```
### 3. View Pending Decisions
```bash
curl http://localhost:8003/api/v1/auto-trade/pending/user_123
```
### 4. Confirm Decision
```bash
curl -X POST http://localhost:8003/api/v1/auto-trade/decisions/user_123/confirm \
-H "Content-Type: application/json" \
-d '{"log_id": "decision_abc123"}'
```
### 5. Disable Auto-Trading
```bash
curl -X POST http://localhost:8003/api/v1/auto-trade/disable/user_123
```
## Testing
Run tests with pytest:
```bash
cd /home/isem/workspace/projects/trading-platform/apps/llm-agent
pytest tests/test_auto_trading.py -v
```
Test coverage includes:
- Model validation
- Configuration management
- Service operations
- Decision lifecycle
- Monitoring control
## Safety Considerations
### Before Production
1. **API Integration**: Complete integration with backend trading API
2. **Database Persistence**: Store decision logs in database (currently in-memory)
3. **User Authentication**: Implement proper user authentication
4. **Rate Limiting**: Add rate limiting on API endpoints
5. **Error Handling**: Enhanced error handling and retry logic
6. **Monitoring**: Set up monitoring and alerting
7. **Audit Logs**: Comprehensive audit logging
8. **Testing**: Extensive integration and load testing
### Security
- Never store API keys in code
- Validate all user inputs
- Implement proper authentication/authorization
- Use HTTPS in production
- Rate limit API calls
- Sanitize all database queries
### Risk Management
- Start with paper trading only
- Test thoroughly before enabling live trading
- Set conservative position size limits
- Monitor system performance continuously
- Have kill switch to disable all auto-trading
- Regular reviews of decision logs
## Integration with ML Engine
The system expects the following ML Engine endpoints:
### GET /api/v1/signals/{symbol}
Returns ML trading signal:
```json
{
"direction": "bullish",
"confidence": 0.87,
"entry_price": 45000.0,
"take_profit": 47500.0,
"stop_loss": 44000.0,
"risk_reward_ratio": 2.5
}
```
### GET /api/v1/amd/phase/{symbol}
Returns AMD phase analysis:
```json
{
"phase": "accumulation",
"confidence": 0.85,
"indicators": {
"volume_profile": "accumulating",
"price_action": "consolidation"
}
}
```
## Future Enhancements
1. **Multi-timeframe Analysis**: Consider multiple timeframes for decisions
2. **Portfolio Balancing**: Automatic portfolio rebalancing
3. **Advanced Filters**: Additional filters (news sentiment, macro indicators)
4. **Backtesting**: Historical performance testing
5. **Performance Analytics**: Detailed performance metrics and reporting
6. **Machine Learning**: Learn from past decisions to improve
7. **Notifications**: Push notifications for important decisions
8. **Stop Management**: Trailing stops and dynamic adjustment
## Troubleshooting
### Monitoring Not Starting
- Check that configuration is properly set
- Verify `enabled: true` in config
- Check logs for error messages
### No Decisions Being Made
- Verify symbols are correct
- Check ML Engine connectivity
- Review confidence threshold settings
- Check min_confidence vs actual signal confidence
### Decisions Not Executing
- Verify require_confirmation setting
- Check pending decisions queue
- Review execution logs
## Support
For issues or questions:
1. Check logs in `/var/log/llm-agent/`
2. Review decision logs via API
3. Check system status endpoint
4. Verify ML Engine connectivity
## License
OrbiQuant IA Trading Platform - Proprietary