This repository has been archived on 2026-10-22. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
anatoly c6671410dc research(5m): прогон 14 методов на 250 парах, сверка движка, издержки, графики
ЧТО: code/ (стенд и методы), results/ (сводки), charts/ (3 графика), reports/ (издержки, плацебо, по годам), docs/REJECTED.md.

ПОЧЕМУ: цель — найти кандидатов на 5м или доказать с цифрами их отсутствие.

КАК ПРОВЕРЕНО: движок сверен с прод-движком TON-бота 1:1; плацебо и рандом-контроль в отчёте; бутстрап по дням.
2026-09-29 02:46:08 +03:00

77 lines
9.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GOAL: стратегии на 5-минутных свечах — готовые тексты для Павла
Всё подготовлено 28.09.2026. План и разведка — в `PLAN.md` рядом. Гейты проверены в обе стороны
(пустая папка → падают с перечислением этапов; макет → «Ф1/Ф2/Ф3 OK»), макет удалён.
## 1. Цель — вставить ОДНИМ сообщением (текст в goal_text.txt, 3400 знаков)
```
/goal Стратегии на 5-минутных свечах Bybit: найти кандидатов с положительным матожиданием после комиссий или доказать с цифрами, что их нет
verify: 1) Данные 5м (data/5m/<SYM>_5m.csv без шапки: ts,open,high,low,close,volume; контракты — PLAN.md п.6) по >=100 USDT-перпам: >=15 млн баров, >=40 пар с историей >=12 мес, плюс манифест и reports/validate_5m.json (dup=0, медиана coverage >=0.95); вывод валидатора вставь в ответ.
2) reports/stand_reconcile.json: движок стенда сверен с прод-движком TON-бота на 30м барах из ресемпла 5м (>=4 пары), расхождение PF <=5%; вывод в ответ.
3) reports/costs.json + reports/COSTS.md: средние |r5м| и |r1ч|, комиссии 0,055% и 0,02% на ногу, >=5 сценариев p*; вывод в ответ.
4) Проверено >=12 методов из банка PLAN.md п.4, правила каждого зафиксированы ДО прогона: results/methods/ + сводка results/summary_5m.csv (EV всей выборки и OOS, t, плацебо, рандом, Sharpe, просадка, по годам).
5) Контроль честности: плацебо-сдвиг, рандом-вход, альфа против «купил и держу», издержки тейкер и мейкер, block-bootstrap, поправка Бонферрони (reports/count_tests.json), разбивка по годам.
6) Кандидат принят только при EV>0 после тейкерской комиссии на OOS, плацебо ~0 (|медиана| <3 б.п.), |t| >= порога Бонферрони и плюсе в >=2 из 3 лет; иначе метод идёт в docs/REJECTED.md (>=12 строк таблицы с цифрами).
7) reports/VERDICT.md: первая строка «ВЕРДИКТ: проверено N, положительное матожидание у K» либо «ОТРИЦАТЕЛЬНЫЙ РЕЗУЛЬТАТ», далее цифры.
8) Есть кандидат — strategies/<name>/rules.md, bot/paper_5m.py ($1000 демо, комиссия и funding внутри), сухой прогон reports/paper_dry_run.json, первый отчёт бота, план форварда с чекпоинтами 4 и 12 недель. Нет кандидата — reports/NO_CANDIDATE.md (>=12 строк).
9) Публикация: репозиторий anatoly/crypto-screener-5m и вики >=7 страниц (reports/PUBLISH.md со ссылкой), README.md >=3000 Б, >=3 графика в charts/.
10) В ответ: вердикт, таблица «метод -> EV полная/OOS -> t -> плацебо», путь к results/summary_5m.csv, ссылка на репо.
constraints: Гейты /opt/data/scripts/screener5m_gate_f1..f3.sh только запускать (правка = провал этапа). Приёмка — облачная модель. Запрещено: подгонка на OOS, отбор пар по результату, EV без издержек, смена правил метода после просмотра цифр. Издержки от нотионала: тейкер 0,055% на ногу + слиппедж 1 б.п. (3 б.п. вне топ-30 по обороту), мейкер 0,02% на ногу, funding при удержании через 00/08/16 UTC. Отсутствие кандидата — валидный результат: сдать таблицу опровергнутого, «рабочий» метод не выдумывать. Прогоны дольше 10 мин — background с notify. screener_research и csm — только читать. Ключи и токены в репозиторий и логи не писать.
boundaries: /opt/data/work/screener5m + venv .venv (uv: pandas,numpy,matplotlib,scipy,statsmodels,pyarrow); данные — публичный REST api.bybit.com без ключей (пагинация kline назад через end=oldest-1, 1000 баров на запрос, retCode 10016 пропускать), до 5 ГБ; репозиторий anatoly/crypto-screener-5m.
stop when: нет доступа к Bybit или Gitea; нужно выбирать между двумя равными кандидатами; вселенная или правила подбирались после просмотра OOS; по итогам Ф1 ни один класс методов не даёт EV>0 — доложить и ждать решения Павла.
```
## 2. Гейты — добавлять ТРЕМЯ отдельными сообщениями (по одному за раз, порядок важен)
```
/goal gate add bash /opt/data/scripts/screener5m_gate_f1.sh
/goal gate add bash /opt/data/scripts/screener5m_gate_f2.sh
/goal gate add bash /opt/data/scripts/screener5m_gate_f3.sh
```
Что проверяет каждый (136 проверок, все читают диск напрямую):
| Гейт | Этапы | Смысл |
|---|---|---|
| f1 | Э0–Э3 | файлы 5м (≥100, 6 полей, время вверх), манифест (≥15 млн баров, ≥40 пар ≥12 мес), валидатор (dup=0, медиана coverage ≥0,95), сверка движка с прод-движком (≥4 пары, PF ≤5%), планка издержек (комиссии 0,055/0,02, ≥5 сценариев p*) |
| f2 | Э4–Э6 | ≥12 файлов методов (≥100 сделок), сводка с EV/EV-OOS/t/плацебо/рандом (нет пустых полей), по годам (≥12×≥3), Бонферрони (n_tests ≥12, порог ≥2,9), плацебо ≥800 Б, ≥12 строк опровергнутого, ≥3 PNG |
| f3 | Э7–Э9 | вердикт первой строкой + явный итог, ветка кандидата (rules.md, paper_5m.py, сухой прогон ≥100 сделок с комиссиями, форвард-план 4 и 12 недель) ИЛИ ветка «нет кандидата» (≥12 строк), публикация репо и вики ≥7 страниц, README ≥3000 Б |
Контрольные суммы (сверять перед запуском цели; я не менял их после теста):
```
40d7d99349509f6828376eb29f98233743447a0b295a8d1964f7a3f3b5ed0d7a screener5m_gate_f1.sh
7e1e36e2d1531d37253fbb2eb3e2b76a46ac2179fc2b8cf5f13f721be160e438 screener5m_gate_f2.sh
18d34dc86945d0c61980bf27893781c656ac8d57580d2bbab1eb921bf0c9f171 screener5m_gate_f3.sh
```
## 3. После постановки — проверить
```
/goal show # поля не улетели в заголовок
/goal gate list # все три гейта на месте
/goal # состояние цикла и остаток бюджета (max_turns = 60)
```
Разбор состояния цели в БД (на чтение):
```bash
/opt/hermes/.venv/bin/python3 -c "
import sqlite3, json
c = sqlite3.connect('file:/opt/data/state.db?mode=ro', uri=True)
k, = c.execute(\"select key from state_meta where key like 'goal:%' order by rowid desc limit 1\").fetchone()
d = json.loads(c.execute('select value from state_meta where key=?', (k,)).fetchone()[0])
print(k, d.get('turns_used'), '/', d.get('max_turns'), '| gates:', len(d.get('gates') or []))
print('outcome:', ((d.get('contract') or {}).get('outcome') or '')[:150])"
```
## 4. Что уже проверено руками (не переоткрывать)
- 5м история Bybit доступна глубоко назад при явном `start`/`end` (проверено на 2020, 2021, 2022) —
прежняя заметка «только 3,5 дня» верна лишь для запроса без `start`.
- Скорость: 2,7 запроса/с одиночными вызовами; 1000 баров на запрос; `retCode 10016` пропускать.
- Планка: средний модуль 5м-дохода 22,8 б.п. (BTC 6,2), 1ч — 78,0 б.п.; тейкер на круг 0,11% →
цель/стоп 0,2%/0,2% требуют точности 77,5% (мёртвая зона для скальпинга по одному бару).
- Диск: 29 ГБ свободно; оценка выгрузки 100 пар × 18 мес ≈ 15,5 млн баров ≈ 400 МБ, ≈ 11 000 запросов.