# Live Trading - Regime Reversion Strategy This module implements live trading for the ML-based regime detection and mean reversion strategy on OKX perpetual futures. ## Overview The strategy trades ETH perpetual futures based on: 1. **BTC/ETH Spread Z-Score**: Identifies when ETH is cheap or expensive relative to BTC 2. **Random Forest ML Model**: Predicts probability of successful mean reversion 3. **Funding Rate Filter**: Avoids trades in overheated/oversold market conditions ## Setup ### 1. API Keys The bot loads OKX API credentials from `../BTC_spot_MVRV/.env`. **IMPORTANT: OKX uses SEPARATE API keys for live vs demo trading!** #### Option A: Demo Trading (Recommended for Testing) 1. Go to [OKX Demo Trading](https://www.okx.com/demo-trading) 2. Create a demo account if you haven't 3. Generate API keys from the demo environment 4. Set in `.env`: ```env OKX_API_KEY=your_demo_api_key OKX_SECRET=your_demo_secret OKX_PASSWORD=your_demo_passphrase OKX_DEMO_MODE=true ``` #### Option B: Live Trading (Real Funds) Use your existing live API keys with: ```env OKX_API_KEY=your_live_api_key OKX_SECRET=your_live_secret OKX_PASSWORD=your_live_passphrase OKX_DEMO_MODE=false ``` **Note:** You cannot use live API keys with `OKX_DEMO_MODE=true` or vice versa. OKX will return error `50101: APIKey does not match current environment`. ### 2. Dependencies All dependencies are already in the project's `pyproject.toml`. No additional installation needed. ## Usage ### Run with Demo Account (Recommended First) ```bash cd /path/to/lowkey_backtest uv run python -m live_trading.main ``` ### Command Line Options ```bash # Custom position size uv run python -m live_trading.main --max-position 500 # Custom leverage uv run python -m live_trading.main --leverage 2 # Custom cycle interval (in seconds) uv run python -m live_trading.main --interval 1800 # Combine options uv run python -m live_trading.main --max-position 1000 --leverage 3 --interval 3600 ``` ### Live Trading (Use with Caution) ```bash # Requires OKX_DEMO_MODE=false in .env uv run python -m live_trading.main --live ``` ## Architecture ``` live_trading/ __init__.py # Module initialization config.py # Configuration loading okx_client.py # OKX API wrapper data_feed.py # Real-time OHLCV data position_manager.py # Position tracking live_regime_strategy.py # Strategy logic main.py # Entry point .env.example # Environment template README.md # This file ``` ## Strategy Parameters | Parameter | Default | Description | |-----------|---------|-------------| | `z_entry_threshold` | 1.0 | Enter when \|Z-Score\| > threshold | | `z_window` | 24 | Rolling window for Z-Score (hours) | | `model_prob_threshold` | 0.5 | ML probability threshold for entry | | `funding_threshold` | 0.005 | Funding rate filter threshold | | `stop_loss_pct` | 6% | Stop-loss percentage | | `take_profit_pct` | 5% | Take-profit percentage | ## Files Generated - `live_trading/positions.json` - Open positions persistence - `live_trading/trade_log.csv` - Trade history - `live_trading/regime_model.pkl` - Trained ML model - `logs/live_trading.log` - Trading logs ## Risk Warning This is experimental trading software. Use at your own risk: - Always start with demo trading - Never risk more than you can afford to lose - Monitor the bot regularly - Have a kill switch ready (Ctrl+C) ## Troubleshooting ### API Key Issues - Ensure API keys have trading permissions - For demo trading, use demo-specific API keys - Check that passphrase matches exactly ### No Signals Generated - The strategy requires the ML model to be trained - Need at least 200 candles of data - Model trains automatically on first run ### Position Sync Issues - The bot syncs with exchange positions on each cycle - If positions are closed manually, the bot will detect this