---
name: investpilot-calibrate
description: Калибровка и честная валидация СТРАТЕГИИ КодИнвест (investpilot, @InvestCodoCeh_bot — советник по Мосбирже на mini) — не «работает ли бот» (это investpilot-e2e), а «здорова ли стратегия и как правки влияют на PF/винрейт/объём». Прогон бэктест-скриптов на mini одной командой tools/calibrate.sh. Брать когда: меняли пороги/гейты (min_rr, mom_1m_gate, min_mom_3m, exit_mode/trail, RR), правили build_plan/replay/scan_score/gates; просят «прогони бэктест инвеста», «проверь стратегию на истории», «калибровка КодИнвест», «поменяй RR/гейт и проверь PF», «слепой прогон LLM / добавляет ли ценность LLM-судья», «фронтир винрейт против объёма», «бенч голосующих». НЕ для смоука/e2e бота (→ investpilot-e2e), не для других ботов, не для CryptoPilot.
---

# investpilot-calibrate

Валидация **стратегии** КодИнвест реальным бэктестом на истории ISS. Один вход:
`tools/calibrate.sh` (запускается С МАКБУКА, сам ходит на mini по ssh, ставит env
как боевой бот). Скрипты живут в репо `~/Разработки/investpilot/scripts/` и
деплоятся на mini обычным `investpilot-e2e --sync` (если правил скрипт — сперва
синкни, иначе на mini старая версия).

## Режимы

```
bash tools/calibrate.sh backtest      # PF-гейт (≥1.3) + по годам/направлению/бумагам
bash tools/calibrate.sh frontier      # винрейт×объём + A/B момент-фильтра + сравнение RR
bash tools/calibrate.sh blind [N]     # контролируемый слепой LLM-прогон (N сетапов)
bash tools/calibrate.sh voters        # бенч LLM-голосующих (жив/JSON/латентность)
bash tools/calibrate.sh all           # backtest + frontier
```

Скрипты за каждым режимом: `backtest_detail.py`, `winrate_volume_frontier.py` +
`rr_compare.py`, `blind_export.py`→`codex_judge.py`→`score_experiment.py`,
`voter_bench.py`. Плюс исторические `calibrate_swing.py`/`calibrate.py` (полный
свип сеток) — для глубокой рекалибровки, зови напрямую.

## Как читать результат

- **PF-гейт: PF ≥ 1.3** — обязательный порог внедрения (потолок ядра ~1.4).
  Любая правするка порогов проходит `backtest` ПЕРЕД деплоем; PF < 1.3 → откат.
- **Метрики важности:** PF и суммарный P/L. Винрейт — вторичен (см. ловушку ниже).
- **blind:** сравнивает одобренные-vs-отклонённые сетапы судьёй; «добавляет
  ценность» только если одобренные в среднем прибыльнее И винрейт не ниже.

## ЖЕЛЕЗНЫЕ УРОКИ (выстраданы 2026-07-13 — не наступать снова)

1. **Винрейт — ЛОВУШКА, не цель.** Его тривиально накрутить ближним тейком
   (tp1.0R → 51%), но PF рушится 1.33→1.06 и денег в 4× меньше (режет прибыль
   в +1R, убытки остаются −1R). **Высокий винрейт ≠ больше денег.** Максимизируй
   PF/сумму, не винрейт. Трейлинг-выход по PF лучший.
2. **Объём задаёт ВХОД (rr/gate/mom), винрейт — ВЫХОД** — почти независимы.
   Больше сигналов без потери качества = ослабить вход (RR↓) пока PF держит ≥1.3.
   Боевой оптимум найден: RR 2.0 (PF 1.34), ниже — PF под гейтом.
3. **«Слишком хорошо/плохо» = сначала ищи БАГ, а не радуйся/паникуй.** Поймано
   дважды: (а) PF 3.10/+6419% — учитывал выход по дальней цели вместо ближнего
   тейка; (б) −90% на ОФЗ / −44% портфель — облигации ISS в % номинала, не в
   рублях. Оба — артефакты кода, не реальность.
4. **LLM-судью нельзя бэктестить наивно** — модель знает историю (lookahead).
   Только СЛЕПОЙ прогон: обезличить (убрать тикер/дату/цену/ставку). И даже так
   на малой выборке — шум (60 сетапов дали codex 67%, а честные 150 — codex НЕ
   добавляет ценности; трендовое правило добавляет). Не переоценивай малые N.
5. **На голой технике простое детерминированное правило бьёт LLM-судью.**
   Ценность LLM — в синтезе/KB/новостях, а не в бинарном accept/reject. Драйверы
   выигрыша (корреляция): свежий 1-мес моментум + ATR (r≈+0.19), эдж размазан.

## После калибровки

1. Изменил порог в `config.py` → прогони `backtest`, убедись PF ≥ 1.3.
2. Синкни на mini (`investpilot-e2e --sync`) + `pytest` зелёный.
3. Запиши в Obsidian `Projects/investpilot/Changelog.md` числа до/после и в
   память, если вывод меняет прежний (правило честности — не тиражировать
   опровергнутые выводы, см. историю про codex 67%).

Полные доки: Obsidian `Projects/investpilot/`. Связанные:
[[investpilot-momentum-filter]], [[investpilot-historical-validation]].
