Files
crypto_trader/docs/user_manual/configuration.md

360 lines
11 KiB
Markdown

# Configuration Guide
This guide explains how to configure Crypto Trader to suit your needs.
## Configuration Files
Configuration files are stored in `~/.config/crypto_trader/` following the XDG Base Directory Specification.
### Main Configuration
The main configuration file is `config.yaml`. It contains:
- Database settings
- Logging configuration
- Paper trading settings
- Update preferences
- Notification settings
- Backtesting defaults
### Logging Configuration
Logging settings are in `logging.yaml`. You can configure:
- Log levels (DEBUG, INFO, WARNING, ERROR)
- Log file location
- Log rotation settings
- Retention policies
## Exchange Configuration
### Adding Exchange API Keys via UI
1. Open the application
2. Navigate to the **Settings** tab
3. In the **Exchanges** section, click **Add Exchange**
4. Enter exchange details:
- **Exchange Name**: Name of the exchange (e.g., Coinbase)
- **API Key**: Your exchange API key
- **API Secret**: Your exchange API secret
- **Use Sandbox/Testnet**: Enable for testing
- **Read-Only Mode**: Recommended for safety (prevents trading)
- **Enabled**: Enable the exchange connection
5. Click **Save**
6. Test the connection using **Test Connection** button
### Editing Exchange Settings
1. Select an exchange from the exchanges table
2. Click **Edit Exchange**
3. Update API keys or settings as needed
4. Click **Save**
### Managing Exchanges
The Settings page provides comprehensive exchange management:
- **Status Indicators**: Each exchange shows a color-coded status indicator:
- Green: Enabled and connected
- Gray: Disabled
- Red: Error state
- **Test Connection**: Click the checkmark icon to test the connection
- You'll receive a notification with detailed connection status
- Success: Green notification
- Warning: Yellow notification with details
- Error: Red notification with error message
- **Edit Exchange**: Click the pencil icon to edit exchange settings
- **Delete Exchange**: Click the trash icon to delete (removes API keys)
- Confirmation dialog will appear
- You'll receive a success notification when deleted
### API Key Security
- API keys are encrypted before storage
- Use read-only keys when possible
- Enable IP whitelisting on your exchange account
- Never share your API keys
## Paper Trading Configuration
Paper trading settings can be configured in the Settings page:
1. Navigate to **Settings** page
2. Click on **Paper Trading** tab
3. Configure:
- **Initial Capital ($)**: Starting capital in USD (default: $100)
- **Fee Model (Exchange)**: Select which exchange's fee structure to simulate
4. Click **Save Settings**
5. You'll receive a success notification when settings are saved
### Fee Exchange Models
Choose from available exchange fee models:
| Exchange | Maker Fee | Taker Fee | Best For |
|----------|-----------|-----------|----------|
| **Default** | 0.10% | 0.10% | General testing |
| **Coinbase** | 0.40% | 0.60% | Conservative estimates |
| **Kraken** | 0.16% | 0.26% | Moderate fee simulation |
| **Binance** | 0.10% | 0.10% | Low-fee simulation |
The fee rates display shows your current maker fee, taker fee, and estimated round-trip cost.
### Resetting Paper Account
To reset your paper trading account (closes all positions and resets balance):
1. Navigate to **Settings** > **Paper Trading** tab
2. Click **Reset Paper Account** button
3. Confirm the reset in the dialog
4. All positions will be closed and balance reset to initial capital
5. You'll receive a success notification when complete
**Warning**: This action cannot be undone. All paper trading history will be preserved, but positions and balance will be reset.
## Data Provider Configuration
Data providers are used to fetch real-time pricing data for paper trading, backtesting, and ML training. They work independently of exchange integrations and don't require API keys.
### Configuring Providers
1. Navigate to **Settings** page
2. Click on **Data Providers** tab
3. Configure provider settings:
#### Primary Providers (CCXT)
Primary providers use CCXT to connect to cryptocurrency exchanges:
- **Kraken**: Default priority 1 (tried first)
- **Coinbase**: Default priority 2
- **Binance**: Default priority 3
Each provider can be:
- **Enabled/Disabled**: Toggle using the switch
- **Reordered**: Use up/down arrows to change priority order
- **Monitored**: View health status, response times, and success rates
#### Fallback Provider
**CoinGecko** is used as a fallback when primary providers are unavailable:
- Free tier API (no authentication required)
- Lower rate limits than primary providers
- Provides basic price data
#### Cache Settings
Configure caching behavior:
- **Ticker TTL (seconds)**: How long to cache ticker data (default: 2 seconds)
- **OHLCV TTL (seconds)**: How long to cache candlestick data (default: 60 seconds)
### Provider Status
The Data Providers tab shows:
- **Active Provider**: Currently used provider
- **Health Status**: Color-coded status for each provider:
- Green: Healthy and working
- Yellow: Degraded performance
- Red: Unhealthy or unavailable
- **Response Times**: Average response time for each provider
- **Success/Failure Counts**: Historical performance metrics
### Automatic Failover
The system automatically:
- Monitors provider health
- Switches to the next available provider if current one fails
- Opens circuit breakers for repeatedly failing providers
- Retries failed providers after a timeout period
### Troubleshooting Providers
If all providers fail:
1. Check your internet connection
2. Verify firewall isn't blocking connections
3. Check provider status in the Settings tab
4. Try enabling/disabling specific providers
5. Reset provider metrics if needed
## Risk Management Settings
Configure risk limits in the Settings page:
1. Navigate to **Settings** page
2. Click on **Risk Management** tab
3. Configure the following settings:
- **Max Drawdown Limit (%)**: Maximum portfolio drawdown before trading stops
- **Daily Loss Limit (%)**: Maximum daily loss percentage
- **Default Position Size (%)**: Default percentage of capital to use per trade
4. Click **Save Risk Settings**
5. You'll receive a success notification when settings are saved
Settings are validated before saving and you'll see error messages if values are invalid.
## Data Storage
Data is stored in `~/.local/share/crypto_trader/`:
- `trading.db` - Legacy file (removed)
- `historical/` - Historical market data
- `logs/` - Application logs
### Database Options
### Database Options
**PostgreSQL (Required)**:
- All production data is stored in PostgreSQL.
- Requires a running PostgreSQL instance.
- Configure connection in `config.yaml`.
**SQLite (Internal)**:
- Used internally for unit testing only.
- No configuration required for users.
## Redis Configuration
Redis is used for distributed state management, ensuring autopilot state persists across restarts and preventing duplicate instances.
### Default Settings
Redis settings are configured in `config.yaml`:
```yaml
redis:
host: "127.0.0.1"
port: 6379
db: 0
password: null # Set if Redis requires authentication
socket_connect_timeout: 5
```
### Environment Variables
You can also configure Redis via environment variables:
- `REDIS_HOST` - Redis server hostname
- `REDIS_PORT` - Redis server port
- `REDIS_PASSWORD` - Redis password (if required)
### Verifying Redis Connection
Run the verification script:
```bash
python scripts/verify_redis.py
```
## Celery Configuration (Background Tasks)
Celery handles long-running tasks like ML model training in the background.
### Starting the Worker
```bash
# From project root (with virtualenv activated)
celery -A src.worker.app worker --loglevel=info
```
Or use the helper script:
```bash
./scripts/start_all.sh
```
### Task Queues
Tasks are routed to specific queues:
- `ml_training` - Model training and data bootstrapping
- `reporting` - Report generation
- `celery` - Default queue
## ML Model Training Configuration
Configure how the autopilot ML model is trained via the Settings page.
### Training Data Configuration
Navigate to **Settings** > **Autopilot** tab to access these settings:
| Setting | Description | Recommended |
|---------|-------------|-------------|
| **Historical Data (days)** | Amount of historical data to fetch for training | 90-365 days |
| **Timeframe** | OHLCV candle timeframe for training data | 1h (balanced) |
| **Min Samples per Strategy** | Minimum samples required per strategy | 30+ |
| **Training Symbols** | Cryptocurrencies to include in training | 5-10 major coins |
### Setting Training Symbols
1. Navigate to **Settings** > **Autopilot** tab
2. In the **Training Data Configuration** section, find **Training Symbols**
3. Click to add/remove symbols from the multi-select dropdown
4. Common symbols: BTC/USD, ETH/USD, SOL/USD, XRP/USD, ADA/USD
5. Click **Save Bootstrap Config** to persist your changes
### Triggering Model Training
1. Click **Retrain Model** button in the Model Management section
2. A progress bar will appear showing:
- Data fetching progress (20-60%)
- Training progress (70-100%)
3. Training typically takes 30-60 seconds depending on data volume
4. Upon completion, the model card updates to show:
- "Global Model Trained" badge
- Number of strategies and features
- Training accuracy
- Which symbols the model was trained on
### Training Progress Persistence
Training progress persists across page navigation:
- If you navigate away during training, progress resumes on return
- The training task ID is stored in browser localStorage
- On task completion or failure, the task ID is cleared
### Model Management
- **Retrain Model**: Triggers retraining with current configuration
- **Reset Model**: Deletes all saved model files (confirmation required)
### Troubleshooting Training
If training fails:
1. Check that Redis and Celery are running
2. Review Celery worker logs: `tail -f celery.log`
3. Ensure sufficient historical data is available
4. Try reducing the number of training symbols
5. Check backend logs for error details
### Monitoring Tasks
The API provides endpoints to monitor background tasks:
- `POST /api/autopilot/intelligent/retrain` - Starts training, returns task ID
- `GET /api/autopilot/tasks/{task_id}` - Check task status
## Environment Variables
You can override configuration using environment variables:
- `CRYPTO_TRADER_CONFIG_DIR` - Custom config directory
- `CRYPTO_TRADER_DATA_DIR` - Custom data directory
- `CRYPTO_TRADER_LOG_DIR` - Custom log directory
- `DB_PASSWORD` - Database password (for PostgreSQL)
- `REDIS_HOST` - Redis server hostname
- `REDIS_PORT` - Redis server port
- `REDIS_PASSWORD` - Redis password
## Backup and Restore
### Backup
1. Stop the application and Celery workers
2. Backup PostgreSQL database
3. Copy the entire `~/.local/share/crypto_trader/` directory
4. Copy `~/.config/crypto_trader/` directory
5. (Optional) Export Redis data with `redis-cli SAVE`
### Restore
1. Stop the application
2. Restore PostgreSQL database
3. Replace the directories with your backup
4. Restart Redis, Celery worker, and application