#!/bin/bash # 스캘핑 → 돌파 Optuna (LS 유니버스) 순차 실행 # --apply-best 없음 · 실매 미적용 · 봇 재시작 없음 # # nohup bash scripts/run_optuna_scalp_breakout_ls.sh \ # >> logs/optuna_scalp_bo_ls_nohup.out 2>&1 & # tail -f "$(cat logs/optuna_scalp_bo_ls_latest_master.logpath)" set -euo pipefail cd /home/hoon/kis_bot mkdir -p logs kis_trader/backtest/results START="${START:-2026-07-27}" END="${END:-2026-07-28}" MODE="${MODE:-tpe}" TRIALS="${TRIALS:-200}" MIN_TRADES="${MIN_TRADES:-1}" HIST_SRC="${HIST_SRC:-ls}" PY="${PY:-}" if [[ -z "$PY" ]]; then if [[ -x .venv/bin/python ]]; then PY=".venv/bin/python" else PY="python3" fi fi TS0="$(date +%Y%m%d_%H%M%S)" MASTER="logs/optuna_scalp_bo_ls_${TS0}_master.log" { echo "======== 스캘핑+돌파 Optuna(LS) 시작 $(date -Is) ========" echo "START=$START END=$END MODE=$MODE TRIALS=$TRIALS HIST=$HIST_SRC" echo "apply-best=OFF 실매적용=없음 · 순차: scalp → breakout" echo "master=$MASTER" free -h | sed -n '1,2p' } | tee -a "$MASTER" echo "$MASTER" > logs/optuna_scalp_bo_ls_latest_master.logpath run_one() { local STRAT="$1" # breakout/tail: pnl|win_rate 만 허용. scalp/momentum: score|pnl|win_rate local SORT_BY="score" if [[ "$STRAT" == "breakout" || "$STRAT" == "tail" ]]; then SORT_BY="pnl" fi local STUDY="${STRAT}_${MODE}_ls_${START//-/}_${END//-/}_${TS0}" local OPTUNA_LOG="logs/optuna_${STRAT}_${MODE}_ls_${TS0}.log" echo "$STUDY" > "logs/optuna_${STRAT}_ls_latest.study" echo "$OPTUNA_LOG" > "logs/optuna_${STRAT}_ls_latest.logpath" { echo "" echo "-------- ${STRAT} Optuna START $(date -Is) --------" echo "study=$STUDY sort_by=$SORT_BY" echo "optuna_log=$OPTUNA_LOG" } | tee -a "$MASTER" set +e "$PY" -u kis_trader/backtest/param_search_optuna.py \ --strategy "$STRAT" \ --mode "$MODE" \ --start "$START" \ --end "$END" \ --trials "$TRIALS" \ --min_trades "$MIN_TRADES" \ --min_win_rate 0 \ --min_pf 0 \ --sort-by "$SORT_BY" \ --orderbook-filter off \ --universe-history-source "$HIST_SRC" \ --study-name "$STUDY" \ --no-progress \ --n-jobs 1 \ >> "$OPTUNA_LOG" 2>&1 local RC=$? set -e { echo "-------- ${STRAT} Optuna 종료 rc=$RC $(date -Is) --------" if [[ $RC -ne 0 ]]; then echo "❌ ${STRAT} 실패 log=$OPTUNA_LOG" else "$PY" - <