Files
lowkey_backtest/live_trading/multi_pair/README.md
Simon Moisy 1af0aab5fa feat: Add Multi-Pair Divergence Live Trading Module
- Introduced a new module for live trading based on the Multi-Pair Divergence Strategy.
- Implemented configuration classes for OKX API and multi-pair settings.
- Developed data feed functionality to fetch real-time OHLCV and funding data for multiple assets.
- Created a trading bot orchestrator to manage trading cycles, including entry and exit signals based on ML model predictions.
- Added comprehensive logging and error handling for robust operation.
- Included a README with setup instructions and usage guidelines for the new module.
2026-01-15 22:17:13 +08:00

4.1 KiB

Multi-Pair Divergence Live Trading

This module implements live trading for the Multi-Pair Divergence Selection Strategy on OKX perpetual futures.

Overview

The strategy scans 10 cryptocurrency pairs for spread divergence opportunities:

  1. Pair Universe: Top 10 assets by market cap (BTC, ETH, SOL, XRP, BNB, DOGE, ADA, AVAX, LINK, DOT)
  2. Spread Z-Score: Identifies when pairs are divergent from their historical mean
  3. Universal ML Model: Predicts probability of successful mean reversion
  4. Dynamic Selection: Trades the pair with highest divergence score

Prerequisites

Before running live trading, you must train the model via backtesting:

uv run python scripts/run_multi_pair_backtest.py

This creates data/multi_pair_model.pkl which the live trading bot requires.

Setup

1. API Keys

Same as single-pair trading. Set in .env:

OKX_API_KEY=your_api_key
OKX_SECRET=your_secret
OKX_PASSWORD=your_passphrase
OKX_DEMO_MODE=true  # Use demo for testing

2. Dependencies

All dependencies are in pyproject.toml. No additional installation needed.

Usage

uv run python -m live_trading.multi_pair.main

Command Line Options

# Custom position size
uv run python -m live_trading.multi_pair.main --max-position 500

# Custom leverage
uv run python -m live_trading.multi_pair.main --leverage 2

# Custom cycle interval (in seconds)
uv run python -m live_trading.multi_pair.main --interval 1800

# Combine options
uv run python -m live_trading.multi_pair.main --max-position 1000 --leverage 3 --interval 3600

Live Trading (Use with Caution)

uv run python -m live_trading.multi_pair.main --live

How It Works

Each Trading Cycle

  1. Fetch Data: Gets OHLCV for all 10 assets from OKX
  2. Calculate Features: Computes Z-Score, RSI, volatility for all 45 pair combinations
  3. Score Pairs: Uses ML model to rank pairs by divergence score (|Z| x probability)
  4. Check Exits: If holding, check mean reversion or SL/TP
  5. Enter Best: If no position, enter the highest-scoring divergent pair

Entry Conditions

  • |Z-Score| > 1.0 (spread diverged from mean)
  • ML probability > 0.5 (model predicts successful reversion)
  • Funding rate filter passes (avoid crowded trades)

Exit Conditions

  • Mean reversion: |Z-Score| returns to ~0
  • Stop-loss: ATR-based (default ~6%)
  • Take-profit: ATR-based (default ~5%)

Strategy Parameters

Parameter Default Description
z_entry_threshold 1.0 Enter when |Z-Score| > threshold
z_exit_threshold 0.0 Exit when Z reverts to mean
z_window 24 Rolling window for Z-Score (hours)
prob_threshold 0.5 ML probability threshold for entry
funding_threshold 0.0005 Funding rate filter (0.05%)
sl_atr_multiplier 10.0 Stop-loss as ATR multiple
tp_atr_multiplier 8.0 Take-profit as ATR multiple

Files

Input

  • data/multi_pair_model.pkl - Pre-trained ML model (required)

Output

  • logs/multi_pair_live.log - Trading logs
  • live_trading/multi_pair_positions.json - Position persistence
  • live_trading/multi_pair_trade_log.csv - Trade history

Architecture

live_trading/multi_pair/
    __init__.py          # Module exports
    config.py            # Configuration classes
    data_feed.py         # Multi-asset OHLCV fetcher
    strategy.py          # ML scoring and signal generation
    main.py              # Bot orchestrator
    README.md            # This file

Differences from Single-Pair

Aspect Single-Pair Multi-Pair
Assets ETH only (BTC context) 10 assets, 45 pairs
Model ETH-specific Universal across pairs
Selection Fixed pair Dynamic best pair
Stops Fixed 6%/5% ATR-based dynamic

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
  • The model was trained on historical data and may not predict future performance