Все кейсы
[ CASE 02 // EBIDTA ]Новостной конвейер для рынка MOEX

Новость о компании — в ленте трейдера раньше, чем на неё отреагирует рынок

EBIDTA круглосуточно собирает новости из первоисточников, отсекает шум, отбирает значимое собственной ИИ-моделью и доставляет в три канала: закрытые Telegram-каналы, расширение поверх веб-терминала брокера и B2B API. Вокруг конвейера — биллинг с подписками, поддержка и мониторинг.

каналы доставки
3
Telegram, расширение, B2B API
расширение
v1.12
20+ релизов, Chrome Web Store
правила алертов
16
метрики собираются раз в минуту
опережение
10 сек
кейс «Полюс», см. ниже

Конвейер новости

  1. 01
    Источники

    ленты агентств, раскрытие эмитентов, Telegram-каналы

  2. 02
    Предфильтр

    реклама, дайджесты и повторы отсекаются до модели

  3. 03
    Дедупликация

    одна новость из разных источников — одна карточка

  4. 04
    ИИ-модель

    решение о публикации и сухая выжимка

  5. 05
    Разметка

    тикеры MOEX, тональность, сила влияния

  6. 06
    Доставка

    каналы, расширение, API — одновременно

Восемь мест, где пришлось думать

Собрать ленту новостей несложно. Сложно, чтобы она была быстрой, без шума, платной и не падала молча.

01[ SIGNAL / NOISE ]

Шум отсекается до модели, а не после

Реклама, дайджесты, повторы и очевидный мусор снимаются правилами ещё до обращения к модели. Это экономит время на каждой новости и убирает класс ошибок, когда модель «облагораживает» рекламный пост. Модель получает уже чистый поток и решает одно: публиковать или нет.

предфильтр → дедупликация → модель
02[ OWN MODEL ]

Собственная ИИ-модель под рынок РФ

Отбор и разметку делает собственная ИИ-модель, обученная на размеченных новостях рынка РФ. На выходе — сухая выжимка без оценочных слов, тикеры MOEX, тональность и сила влияния. Ответ модели принимается только в строгом формате; сбои формата считаются отдельной метрикой и поднимают алерт.

метрики llm.errors · llm.json_fail · p95 латентности
03[ SPEED ]

Скорость, измеренная на реальных событиях

Новость о приостановке дивидендов «Полюса» ушла подписчикам за 10 секунд до начала реакции рынка. Новость об атаке на склад Ozon — в 6:49, движение началось в 6:50. Это не обещание доходности, а замер задержки конвейера на двух событиях.

скриншоты терминала с лентой — ниже
04[ BROWSER EXTENSION ]

Лента поверх веб-терминала брокера

Расширение Chrome (Manifest V3) рисует плавающую панель в терминалах крупных брокеров РФ. Панель живёт в shadow DOM, поэтому стили терминала её не ломают и она не ломает терминал. Клик по тикеру находит инструмент в поиске терминала и открывает по нему заявку. Доступ — по персональному ключу.

content.js · background.js (service worker) · 20+ релизов до v1.12
05[ BILLING ]

Подписки, в которых нельзя заплатить рубль и получить доступ

Оплата через ЮKassa двумя способами: счёт внутри Telegram и ссылка на сайт платёжной системы. Перед списанием бот проверяет тариф, сумму, валюту и владельца счёта. Платёж записывается идемпотентно: повтор уведомления не продлит подписку дважды. Приглашения в каналы одноразовые и живут сутки, напоминания приходят за три дня и за день, по истечении срока доступ снимается автоматически.

member_limit=1 · expire +24 ч · опрос статуса раз в минуту, без публичного вебхука
06[ B2B API ]

Та же лента для торговых систем

Новости с разметкой отдаются по HTTP API с ключами и лимитами. Ключи выпускает и отзывает бот оплаты, после окончания подписки ключ уходит в льготный период, и об этом заранее знает мониторинг.

/v1/* · выдача и отзыв ключей · правило grace_expiring
07[ OBSERVABILITY ]

Конвейер не падает молча

Раз в минуту собираются метрики: возраст последней публикации, работа модели, ответы API, службы, память и диск. 16 правил поднимают алерты трёх уровней — от «сбор не обновлялся 15 минут» до «источники молчат». Монитор — отдельная служба со своим ботом: если конвейер упал, он всё равно отвечает. Снаружи за ним следит внешний сторож.

ebida_monitor_rules.py · 93 теста мониторинга · дайджесты 09:00 и 21:30
08[ ZERO-BREAK MIGRATION ]

Переезд на новые домены без поломки установленных расширений

Продукт переехал на собственные домены, но у пользователей уже стояли расширения, которые обращались к старому адресу. Редирект здесь не годится: POST через 301 превращается в GET и теряет тело запроса. Поэтому старый домен продолжает отдавать API напрямую, пока расширения не обновятся, а переключение DNS шло в два шага скриптом с проверками.

DOMAINS.md · watch_dns_and_switch.sh

Как это выглядит у пользователя

График акций Полюса в терминале и карточка новости EBIDTA об отмене дивидендов
«Полюс»: новость в панели расширения — и свеча на графике рядом. Опережение 10 секунд.
График акций Ozon в терминале и карточка новости EBIDTA
Ozon: новость отправлена в 6:49, реакция рынка началась в 6:50.
Что из этого мы повторим в вашем проекте
  • парсер источников с фильтром шума и дедупликацией
  • бот с подписками, оплатой и автоматическим снятием доступа
  • браузерное расширение поверх чужого веб-интерфейса
  • мониторинг с алертами в Telegram для любого сервиса
Стек
PythonSQLiteTelegram Bot APIChrome Extension MV3ЮKassaHTTP APIsystemdNext.js (лендинг)

EBIDTA не является инвестиционным советником; приведённые события — замер скорости доставки, а не рекомендация и не обещание доходности.

Сайт продукта — ebidta.ru
следующий кейс
Сеть ИИ-агентов — операционный контур компании

Нужно похожее решение?

Опишите задачу консультанту: 9 вопросов кнопками, ТЗ на подтверждение и вилка цены до оплаты.

Открыть @MosQuantbot и получить расчёт

9 вопросов · ТЗ на подтверждение · вилка цены до оплаты