Implement FastAPI backend and Vue 3 frontend for Lowkey Backtest UI
- Added FastAPI backend with core API endpoints for strategies, backtests, and data management. - Introduced Vue 3 frontend with a dark theme, enabling users to run backtests, adjust parameters, and compare results. - Implemented Pydantic schemas for request/response validation and SQLAlchemy models for database interactions. - Enhanced project structure with dedicated modules for services, routers, and components. - Updated dependencies in `pyproject.toml` and `frontend/package.json` to include FastAPI, SQLAlchemy, and Vue-related packages. - Improved `.gitignore` to exclude unnecessary files and directories.
This commit is contained in:
135
live_trading/README.md
Normal file
135
live_trading/README.md
Normal file
@@ -0,0 +1,135 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user