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

9.0 KiB
Raw Permalink Blame History

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)

Разбор состояния цели в БД (на чтение):

/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 запросов.