#!/usr/bin/env bash # Optuna 전전략 5-trial 스모크 (LS 틱3차 merge 경로 포함) # 로그: logs/optuna_smoke_all_YYYYMMDD_HHMMSS.log + 전략별 파일 set -u ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "$ROOT" mkdir -p logs TS="$(date +%Y%m%d_%H%M%S)" DAY="${1:-2026-08-25}" TRIALS="${2:-5}" MASTER="logs/optuna_smoke_all_${TS}.log" STATUSES="logs/optuna_smoke_status_${TS}.txt" : >"$STATUSES" { echo "======== Optuna smoke start $(date '+%F %T') day=${DAY} trials=${TRIALS} ========" for S in tail momentum breakout scalp; do MODE=fast STUDY="smoke_${S}_${MODE}_${TS}" LOG="logs/optuna_smoke_${S}_${TS}.log" echo "----- ${S} study=${STUDY} -----" set +e python3 -u kis_trader/backtest/param_search_optuna.py \ --strategy "$S" \ --mode "$MODE" \ --trials "$TRIALS" \ --start "$DAY" \ --end "$DAY" \ --min_trades 1 \ --orderbook-filter off \ --no-progress \ --study-name "$STUDY" \ >"$LOG" 2>&1 RC=$? set -e echo "${S} rc=${RC} log=${LOG}" | tee -a "$STATUSES" echo "----- ${S} done rc=${RC} -----" # 실패 시그니처 if rg -q "Traceback|Error|❌|KeyError|AttributeError" "$LOG"; then echo "WARN ${S}: error signature in log" | tee -a "$STATUSES" rg -n "Traceback|Error|❌|KeyError|AttributeError" "$LOG" | head -40 | tee -a "$STATUSES" fi if rg -q "틱 3차 LS|ls_ws_ticks|BT_TICK_LS" "$LOG"; then echo "INFO ${S}: LS tick path mentioned" | tee -a "$STATUSES" fi done echo "======== Optuna smoke end $(date '+%F %T') ========" echo "STATUS_FILE=${STATUSES}" } >>"$MASTER" 2>&1 echo "$MASTER"