#!/usr/bin/env bash
# Калибровка/валидация СТРАТЕГИИ КодИнвест. Запускается С МАКБУКА, сам ходит на
# mini по ssh, ставит env как боевой бот, гоняет бэктест-скрипты из репо и парсит.
#
# Режимы:
#   backtest  (дефолт) — детерминир. бэктест ядра на боевых параметрах: PF-гейт
#                        (≥1.3), разбивка по годам/направлению/бумагам
#   frontier            — фронтир винрейт×объём (вход↔объём, выход↔винрейт) +
#                        A/B момент-фильтра + сравнение RR
#   blind [N]           — КОНТРОЛИРУЕМЫЙ слепой LLM-прогон: обезличенные N сетапов
#                        (без тикера/даты/цены) → codex судит «брать/пропустить»
#                        + трендовое правило + корреляции признак↔P/L
#   voters              — бенч LLM-голосующих (жив/JSON/латентность)
#   all                 — backtest + frontier
#
# Пример:  bash tools/calibrate.sh backtest
#          bash tools/calibrate.sh blind 100
set -uo pipefail

MINI="cebers_mini@100.84.177.25"
SSH="ssh -p 2222 $MINI"
MODE="${1:-backtest}"
N="${2:-80}"

# env как у боевого бота (codex/nvidia ключи из omniroute.env + маппинг)
ENVWRAP='cd ~/Services/investpilot && source ~/.codex/omniroute.env 2>/dev/null; set -a; source .env; set +a; export INVESTPILOT_OMNIROUTE_API_KEY="${OMNIROUTE_API_KEY:-}" INVESTPILOT_NVIDIA_API_KEY="${DELOR_IMAGE_API_KEY:-}"; PYTHONPATH=src'
PY='.venv/bin/python'
CLEAN='grep -vE "huggingface|httpx|Loading|sentence_transf|HF Hub|Вселенная IMOEX|свечей]$"'

run() { $SSH "$ENVWRAP $PY $1" 2>&1 | eval "$CLEAN"; }

case "$MODE" in
  backtest)
    echo "═══ БЭКТЕСТ ЯДРА (боевые параметры, PF-гейт ≥1.3) ═══"
    run "scripts/backtest_detail.py"
    ;;
  frontier)
    echo "═══ ФРОНТИР ВИНРЕЙТ×ОБЪЁМ ═══"
    run "scripts/winrate_volume_frontier.py"
    echo; echo "═══ СРАВНЕНИЕ RR (только RR меняется) ═══"
    run "scripts/rr_compare.py"
    ;;
  blind)
    echo "═══ СЛЕПОЙ LLM-ПРОГОН, $N сетапов (без утечки: тикер/дата/цена скрыты) ═══"
    echo "1/3 выгрузка обезличенных сетапов + ключ…"
    run "scripts/blind_export.py $N" | tail -1
    echo "2/3 codex судит те же сетапы (может занять минуты)…"
    run "scripts/codex_judge.py" | tail -1
    echo "3/3 сверка (codex + трендовое правило + корреляции):"
    run "scripts/score_experiment.py"
    ;;
  voters)
    echo "═══ БЕНЧ LLM-ГОЛОСУЮЩИХ ═══"
    run "scripts/voter_bench.py"
    ;;
  all)
    "$0" backtest; echo; "$0" frontier
    ;;
  *)
    echo "неизвестный режим: $MODE (backtest|frontier|blind [N]|voters|all)"; exit 1
    ;;
esac
