Все проекты
2026Next.jsAIФинтех

Инвесторум — еженедельный ИИ-журнал об инвестициях с модельным портфелем

Журнал об инвестициях, который целиком ведёт ИИ-система, и модельный исследовательский портфель, которым та же система управляет на реальном депозите. Автор всех материалов — открыто заявленный ИИ: это не маскировка, а принцип честности, встроенный в продукт.

Открыть проект
Инвесторум — еженедельный ИИ-журнал об инвестициях с модельным портфелем

investorum.ru · апрель — сентябрь 2026 · единственный разработчик и владелец продукта

Коротко

Я давно интересуюсь инвестициями и с каждым годом всё строже отношусь к качеству: к контенту, к решениям, к тому, кому доверять свои деньги. Русскоязычный сегмент на эту тему предлагает выбор между дорогими «закрытыми клубами» и шумными телеграм-каналами — а ровного, честного, регулярного аналитического продукта почти нет. Так родился Инвесторум: еженедельный журнал, который я сам хотел бы читать, и модельный портфель как честная проверка — не «мнения ИИ», а публично отслеживаемые результаты на реальных деньгах.

Проект сделан в одиночку от идеи до продакшена: продуктовая концепция, архитектура, бэкенд, ИИ-конвейер, интеграции с биржей, комплаенс, инфраструктура и эксплуатация.

ПараметрЗначение
Срок разработки~5 месяцев (первый коммит — апрель 2026, живой продакшен — сейчас)
Команда1 человек (продукт + разработка + эксплуатация)
ИИ-конвейер6 специализированных агентов, контрактная оркестрация, полный аудит вызовов
Данныеживой MOEX ISS (цены, лоты, ОФЗ, индекс), Perplexity Sonar, Twelve Data
Юнит-тесты180 тестов в 13 наборах (ядро портфеля, комплаенс, фин.математика, SEO)
Автономностьеженедельный выпуск + почасовой монитор, автопостинг, алерты

Что продукт делает

Каждый понедельник в 08:00 МСК система выполняет недельный цикл:

  1. Сбор фактуры. ИИ-агент с веб-доступом читает рыночные новости за 7 дней и выделяет одну доминирующую тему недели — с источниками, а не «из памяти модели».
  2. Статья. Второй агент пишет аналитический выпуск 1200–1600 слов по жёсткой структуре: буллетный лид со ссылками, разбор темы, типичные ошибки, практический смысл для читателя.
  3. Редактура и публикация. Третий агент вычитывает текст, чистит ИИ-штампы, генерирует специфичный FAQ и SEO-описание. Детерминированный комплаенс-гард проверяет выпуск — и статья публикуется на сайт, в RSS и в Telegram-канал.
  4. Модельный портфель. Два агента (аналитик и критик) формируют и проверяют распределение адаптивного «вечного портфеля» из биржевых фондов: 4 рукава — акции, облигации, золото, денежный рынок. Критик может отклонить решение → неделя «без изменений».
  5. Инструкции владельцу. Одобренное распределение проходит детерминированное ядро (бэнды, защитные полы, сайзинг целыми лотами) и превращается в готовые торговые инструкции с точным количеством лотов под депозит владельца — в закрытый Telegram-канал.
  6. Монитор. Каждый час система проверяет позиции, зачитывает купоны ОФЗ, следит за стоп-условиями и снимает дневной снапшот NAV для публичной страницы /research.

Публичный сайт показывает только агрегаты: NAV-индекс против индекса Мосбиржи, накопленной ключевой ставки и фикс-корзины 25/25/25/25 с месячной ребалансировкой. Без состава, тикеров и «сигналов» — это железное продуктовое правило.

Архитектура

Цикл генерации (каждый понедельник 08:00 МСК): BullMQ generate-daily → [1] news-fetch (фактура недели с источниками) → [2] writer (статья 1200–1600 слов) → [3] editor (корректура, FAQ, SEO) → комплаенс-гард (детерминированный) → публикация: сайт, RSS, sitemap, Telegram.

Параллельно: evidence packet (цены MOEX, тренды, просадки, ставка) → [4] portfolio-analyst (веса рукавов) → [5] portfolio-critic (APPROVE / REVISE / REJECT) → детерминированное ядро (констрейнты, лоты, NAV) → Telegram владельцу (пронумерованные SELL/BUY + обоснование) и дневной NAV-снапшот на /research.

Почасовой монитор: BullMQ monitor-portfolio → стоп-условия, купоны ОФЗ, снапшот NAV.

Сайт и Telegram — два разных продукта с разным уровнем детализации. Публичная часть — агрегаты, методология и ограничения (без состава, тикеров и «сигналов»); состав и инструкции — только в закрытом канале владельца. Это разделение зашито в код, а не в обещания: страница /research физически не имеет доступа к составу позиций.

ИИ-оркестрация: контрактное ядро вокруг агентов

Ключевая идея оркестрации — LLM предлагают, контракт и детерминированный код распоряжаются.

  • Роль → модель. Каждый шаг конвейера получает свою модель под задачу: сбор фактуры — модель с живым веб-доступом; написание и редактура — быстрые и сильные текстовые модели; портфельные решения — сильные рассуждающие модели; обложка — отдельный бриф + image-модель. Конфигурация моделей редактируется из админки без деплоя.
  • Контракты. Каждый выход агента валидируется zod-схемой с бизнес-правилами: сумма весов рукавов строго 100%, защитные полы, полоса длины статьи (8000–20000 знаков). Невалидный ответ — ретрай (до 3), у схем есть superRefine-дублирование критических инвариантов.
  • Полный аудит. Каждый LLM-вызов пишется в БД: промпт, ответ, длительность, стоимость. Дашборд админки показывает расходы по дням с дневным лимитом.
  • Промпты как данные. Промпты хранятся в БД с фолбэком на файлы — правятся из админки, версионно, без пересборки приложения.
  • Критик. Решение аналитика проходит независимый аудит вторым агентом, который видит тот же evidence packet, текущие веса и оборот. REJECT = портфель не меняется, подписчики получают честное «неделя без изменений» с обоснованием.

Главное инженерное решение: детерминированное ядро

Когда речь идёт о деньгах, недетерминированность модели недопустима. Поэтому между ИИ и деньгами стоит чистое, полностью протестированное ядро:

  • Констрейнты поверх ИИ-предложения: жёсткие бэнды по рукавам, ограничение отклонения (±5 п.п. за ревизию), защитные полы (полный выход в кэш запрещён), в защитном режиме подъём рисковых рукавов запрещён. Предложение аналитика сохраняется рядом с итоговым — видно, что и почему скорректировало ядро.
  • Порог оборота: если корректировка меньше 3 п.п., ребаланс форсируется в «без изменений» — шум не превращается в сделки.
  • Сайзинг целыми лотами с реальными лотами Московской биржи; символ без живой котировки не покупается, «пыль» уходит в кэш, но бюджет никогда не превышает доступный кэш.
  • Лотовый ребаланс: сравниваются не абстрактные веса, а лоты позиций → владелец получает явные пронумерованные инструкции ПРОДАТЬ/КУПИТЬ с суммами и стоп-заявками, а не «распределение».
  • Бухгалтерия NAV выводится, а не хранится: кэш вычисляется из событий (пополнения, покупки/продажи, купоны ОФЗ), индекс нейтрализует взносы/изъятия — внесённые деньги не рисуют доходность.
  • Идемпотентность везде: купоны зачитываются один раз по идентификатору выплаты, алерты и Telegram-посты не дублируются, неотправленные алерты ретраются из хранилища.

Ядро чистое — без IO — и покрыто 180 юнит-тестами: констрейнты рукавов, сайзинг, NAV, купоны, стоп-условия, тренд-фильтр, бенчмарки (фикс-корзина с месячной ребалансировкой, max drawdown), распределение пополнений, комплаенс-гард, фин.математика калькулятора.

Данные: живая биржа, а не статика

  • MOEX ISS — батч-запросы на весь юниверс (1–2 HTTP-запроса на десятки инструментов): цены фондов и ОФЗ (dirty-цена = чистая + НКД), размеры лотов, купоны, индекс Мосбиржи, недельные бары для тренда.
  • Единственный источник истины по инструментам — файл-whitelist: юниверс портфеля (4 биржевых фонда, лонг-онли) отделён от контентного whitelist для статей.
  • Батч-цены обязаны включать все открытые позиции, включая выводимые из портфеля легаси — суммы инструкций и кэш считаются по живым котировкам.
  • Graceful degradation: недоступность одного источника не валит конвейер.

Комплаенс как код, а не как обещание

Публичный выпуск проходит детерминированный гард (не LLM!): жёсткий блок на гарантии доходности и торговые «сигналы», блэклист источников, allowlist-фильтрация доменов в теле статьи и в метаданных, правила по военному контенту. Финансовый контент в РФ — зона высокой ответственности, и это защищено кодом, который нельзя «уговорить».

Плюс продуктовая честность: ИИ-авторство заявлено открыто на странице автора и в бейдже каждой статьи; дисклеймеры в методологии; счётчик просмотров — клиентский и дедуплицированный, без единого трекера и cookie-баннера (никакой аналитики посетителей, VPS в РФ, 152-ФЗ); калькулятор инвестора считает всё в браузере — введённые данные не покидают устройство.

Инфраструктура и эксплуатация

  • Прод: nginx + TLS → Next.js (systemd) + BullMQ-воркер (systemd), PostgreSQL и Redis в Docker. Всё на собственном VPS.
  • Дисциплина деплоя: сборка и рестарт — одна неделимая операция (иначе ISR отдаёт HTML со ссылками на несуществующие чанки и стили слетают), сброс ISR-кэша сразу после рестарта, проверка отдачи CSS-ассетов скриптом. Чеклист задокументирован.
  • Очереди: BullMQ + repeatable jobs с автоматической перерегистрацией расписаний; ручные ретраи и re-post скрипты для восстановления после сбоев.
  • Наблюдаемость: структурные логи (pino, JSON), отдельный лог-файл воркера, алерты о стоп-условиях прямо в Telegram с ретраями.

Эволюция продукта

За пять месяцев продукт пережил несколько осознанных пивотов: квант-деск → трекинг инвестидей → ежедневный дайджест → экспертный разбор → недельный журнал + портфельный стол (текущая форма). Легаси-маршруты отдают 410 Gone вместо редиректов, чтобы не ловить soft-404 в поисковиках; контент сохранён в БД, код — в истории git. Каждая итерация — вывод из реального использования, а не догадка: текущая форма — та, в которой ценность (регулярный качественный выпуск + проверяемые результаты) подтверждается фактом.

Стек

СлойТехнологии
Frontend / SSRNext.js 14 (App Router), React 18, TypeScript, Tailwind v4, shadcn/ui, SSG + ISR
ДанныеPostgreSQL + Prisma (миграции, seed), Redis
Очереди и расписаниеBullMQ, repeatable jobs, cron-планировщик с чисткой stale-ключей
ИИOpenRouter (мультиагентная оркестрация, zod-контракты, аудит вызовов), Perplexity Sonar, image-модели
Рыночные данныеMOEX ISS (батчи, dirty-цены ОФЗ, лоты, индекс), Twelve Data
БезопасностьNextAuth v5, bcrypt, rate-limit на Redis, zod-валидация env
Дистрибуция / SEOTelegram Bot API (2 канала), RSS 2.0, Google News sitemap, IndexNow, JSON-LD
Инфраструктураnginx + TLS, systemd × 2, Docker (PostgreSQL, Redis), pino-логи
Качествоvitest — 180 юнит-тестов на чистое ядро, tsc --noEmit, детерминированный комплаенс-гард

Что этот проект демонстрирует

  • Продуктовое мышление: пять итераций формы продукта по данным реального использования, честное позиционирование вместо обещаний доходности.
  • Оркестрация ИИ в продакшене: мультиагентный конвейер с ролевыми моделями, контрактной валидацией, критиком, полным аудитом стоимости и версионированием промптов.
  • Инженерную зрелость там, где ИИ касается денег: детерминированное ядро с 180 юнит-тестами между «мнением модели» и реальными торговыми инструкциями.
  • Системную интеграцию: живые данные Московской биржи с батч-оптимизациями, dirty-ценами ОФЗ, купонами и лотовым сайзингом.
  • Надёжную эксплуатацию: идемпотентные процессы, graceful degradation, дисциплина деплоя, наблюдаемость, автономная работа без ручного вмешательства.

Инвесторум — это не демо и не pet-проект с заглушками: это работающий продукт с реальными данными, реальными деньгами в модельном портфеле и инженерными решениями, принятыми так, как я их принял бы в команде над бизнес-критичной системой.

Готов обсудить задачу?

Напишите — отвечаю в течение нескольких часов.