#!/bin/bash # Daily ML Model Training Script # # Downloads fresh data and retrains the regime detection model. # Can be run manually or scheduled via cron. # # Usage: # ./train_daily.sh # Full workflow # ./train_daily.sh --skip-research # Skip research validation set -e # Exit on error SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" LOG_DIR="logs" mkdir -p "$LOG_DIR" TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") echo "[$TIMESTAMP] Starting daily training..." # 1. Download fresh data echo "Downloading BTC-USDT 1h data..." uv run python main.py download -p BTC-USDT -t 1h echo "Downloading ETH-USDT 1h data..." uv run python main.py download -p ETH-USDT -t 1h # 2. Research optimization (find best horizon) echo "Running research optimization..." uv run python research/regime_detection.py --output-horizon data/optimal_horizon.txt # 3. Read best horizon if [[ -f "data/optimal_horizon.txt" ]]; then BEST_HORIZON=$(cat data/optimal_horizon.txt) echo "Found optimal horizon: ${BEST_HORIZON} bars" else BEST_HORIZON=102 echo "Warning: Could not find optimal horizon file. Using default: ${BEST_HORIZON}" fi # 4. Train model echo "Training ML model with horizon ${BEST_HORIZON}..." uv run python train_model.py --horizon "$BEST_HORIZON" # 5. Cleanup rm -f data/optimal_horizon.txt TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") echo "[$TIMESTAMP] Daily training complete."