Агенты для рынка · разбор сетапа Roan · сентябрь 2026

Агенты для рыночного ресёрча: 4 шага собрать сводку в 2026 году

Вывод четырёх программок: подачи по AAPL и MSFT, цены по трём бумагам, календарь отчётностей и собранная из них сводка
Мой собственный прогон четырёх программок, 13 сентября 2026 года. Видно и удачу, и отказ: по IBM и MSFT цена пришла, по AAPL источник ответил отказом, и сводка честно написала об этом

Терминал Bloomberg стоит 31 980 долларов в год за место. В ленте разошёлся ролик про парня, который собрал себе замену «из ботов» за копейки, и я полез смотреть, из чего она сделана. Оказалось, не из того, что обещано. Ниже 4 шага, по которым ты соберёшь свой набор на открытых источниках

Собери не одного всеведущего бота, а 4 узкие программки: подачи компаний в SEC EDGAR, цены по своему списку бумаг, календарь отчётностей и четвёртую, которая читает файлы первых трёх и складывает из них текст. Три источника из четырёх бесплатны. Дальше 4 строки в расписание, и в 6:15 утра сводка лежит в папке

Из чего на самом деле собран тот сетап

Автора зовут Roan, аккаунт @RohOnChain в X. В русских пересказах его имя передают как «Руан», это ошибка транскрипции

И вот главное расхождение, из-за которого повторить «как в ролике» не выйдет. Grok Bot в его схеме это только панель управления словами, кокпит. Считает не он. Вычислительная часть, которая раскидывает задачу на 300 помощников, это Kimi K3 Swarm Max от Moonshot AI. Другая компания, другой продукт, отдельная оплата

Если тебе нужно наоборот, сесть и разобрать одну бумагу руками в чате, это другой разбор, про пять задач по бумаге, там ни строки про сборку

То есть в основе не «флот Грокботов», а связка двух разных сервисов двух разных фирм. Человек, который поверил обещанию буквально и пошёл покупать подписку у xAI, соберёт половину и удивится, почему у него нет 300 помощников

Про цену тоже стоит сказать честно. Ролик говорит «примерно десятикратная разница». Реконструкция первоисточника даёт девятикратную: около 27 660 долларов в год против примерно 3 000. Официальная цена места в терминале Bloomberg на 2026 год другая, 31 980 долларов, и снижается она только при контракте на несколько мест. Я не утверждаю ни одну кратность как проверенную: сам текст статьи Roan лежит за входом в X, прямой запрос отдаёт код 402, и всё, что ходит по пересказам, я держу за реконструкцию, а не за цитату

Что сказал роликЧто оказалось на самом деле
автора зовут Руанавтора зовут Roan, аккаунт @RohOnChain
собрал версию из ГрокботовGrok Bot это панель, считает Kimi K3 Swarm Max от Moonshot AI
разница в расходах примерно десятикратнаяв реконструкции девятикратная, и обе цифры оценочные
конфигурацию выложил в открытый доступнастроек этого гайда в открытом доступе не нашлось

И последнее. Готовых настроек именно этого гайда в открытом доступе я не нашёл. Есть похожий чужой проект другого разработчика под другую биржу, но выдавать его за «набор Roan» нельзя. Поэтому дальше идёт не пересказ чужой схемы, а моя, собранная руками и прогнанная у себя

Что ты соберёшь за вечер

Четыре программки. Каждая делает одно узкое дело и пишет результат в общую папку:

  1. следит за подачами компаний в реестр SEC
  2. снимает цену и объём по твоему списку бумаг
  3. считает календарь отчётностей за окно
  4. читает файлы первых трёх и складывает из них одну сводку
КтоКуда ходитЧто кладёт в папкуКак часто
Первыйреестр SEC01-podachi.jsonраз в сутки
ВторойAlpha Vantage02-ceny.jsonраз в сутки
Третийреестр SEC03-kalendar.jsonраз в сутки
Четвёртыйникуда, читает файлыSVODKA.txtпосле первых трёх

Четвёртая в интернет не ходит вообще. Она только читает то, что принесли остальные. Это важная деталь: если источник сегодня молчит, сводка всё равно соберётся, а в разделе «чего не хватило» будет написано, чего именно

Вот как выглядит их прогон у меня. Кадр снят с моего экрана 13 сентября 2026 года, вывод настоящий:

Вывод четырёх программок: подачи по AAPL и MSFT, цены по трём бумагам, календарь отчётностей и собранная из них сводка
Мой собственный прогон четырёх программок, 13 сентября 2026 года. Видно и удачу, и отказ: по IBM и MSFT цена пришла, по AAPL источник ответил отказом, и сводка честно написала об этом в разделе «чего не хватило»

Сколько это стоит на самом деле

Три источника из четырёх шагов бесплатны и не просят карту:

ИсточникЗа что отвечаетЧто стоитЛимит
SEC EDGAR Full-Text Searchподачи компаний, отчётностибесплатно, ключ не нуженне больше 10 запросов в секунду
Alpha Vantageцена, объём, показателибесплатный тариф25 запросов в сутки, 5 в минуту
Finnhubновости по бумагебесплатный тарифоколо 60 запросов в минуту
Alpacaрыночные данные, счёт-тренажёрбесплатно200 запросов в минуту

Модель для складывания текста это отдельные деньги. У xAI опубликован прайс: 2 доллара за миллион входящих единиц текста у флагмана и 1.25 у модели попроще. Одна утренняя сводка на десяток бумаг это несколько центов, а не тысячи долларов, и на старте модель можно взять даром: семнадцать моделей бесплатно через OpenRouter, лимиты небольшие, но для одной сводки в сутки хватает. Порядок цен по остальным я собирал отдельно, двенадцать ценников в рублях. Но у 300 помощников, которые крутятся круглосуточно, счёт совсем другой, и оценка «около 3 000 долларов в год» из пересказа это именно оценка при конкретном использовании, а не тариф

Панель счёта-тренажёра Alpaca: сверху полоса Paper Trading, no real money is being used
Так выглядит счёт-тренажёр Alpaca: рыночные данные настоящие, денег на нём нет. Синяя полоса сверху говорит об этом прямо. Источник: alpaca.markets, автор alpaca.markets, права found-image, дата источника 5 марта 2026 года

Шаг 1. Проверь, что источник отвечает, до всякого кода

Открой в браузере такой адрес:

https://efts.sec.gov/LATEST/search-index?q=%22artificial+intelligence%22&forms=8-K

Это открытый поиск по подачам компаний в комиссию по бумагам США. Ключ доступа для него не нужен вообще

Что увидишь: страницу сплошного текста в фигурных скобках. Она выглядит нечитаемо, и это нормально: так сервис отвечает программам, а не людям. Тебе нужно найти в первых строках слово total и число рядом с ним

Понял, что получилось: число есть и оно больше нуля. Значит источник живой и отвечает лично тебе

Дальше подставь свои слова в поиск. Замени фразу в кавычках на название компании, а часть про форму 8-K оставь. Форма 8-K это «случилось что-то существенное»: смена руководства, крупная сделка, авария

Тут ждёт ловушка, на которую я сам наступил. По умолчанию источник сортирует ответ по совпадению слов, а не по свежести. Мой первый прогон по слову Apple вытащил подачу от 2013 года и был формально прав. Лечится двумя вещами: искать по тикеру, а не по названию, и явно задавать окно дат. После этого у меня вышло 7 подач по AAPL и 9 по MSFT, самая свежая от 9 сентября

Числа сняты моим прогоном 13 сентября 2026 года по открытому поиску SEC EDGAR: 7 подач по AAPL и 9 по MSFT за окно, календарь за две недели дал 171 подачу формы 10-Q и 1793 формы 8-K

И вторая ловушка, более неприятная. Когда я попробовал открыть тот же адрес автоматическим браузером, комиссия ответила отказом и вот такой страницей:

Ответ SEC: Your Request Originates from an Undeclared Automated Tool, требование указать компанию в подписи запроса
Мой собственный кадр от 13 сентября 2026 года. Комиссия отличает программу от человека и просит представиться: указать в подписи запроса, кто ты и как с тобой связаться

Смысл ответа простой: назовись. Комиссия просит, чтобы программа в каждом запросе передавала подпись с именем и почтой того, кто её запустил. Мой запрос из командной строки прошёл именно потому, что такая подпись в нём была, а браузер её не передавал. Это не запрет на автоматику, это требование не прятаться

Шаг 2. Получи ключ доступа там, где он нужен

Не все источники открыты настолько же. Проверь сам: открой адрес

https://finnhub.io/api/v1/company-news?symbol=AAPL

Что увидишь: короткую строку с ошибкой и просьбой использовать ключ. Это и есть ответ «представься», только в другой форме

Ключ доступа это длинная строка из букв и цифр, что-то вроде пароля для программы. Заводится он так: заходишь на finnhub.io, регистрируешься по почте, и строка появляется на первой же странице личного кабинета

Сработало, если тот же адрес с добавленным в конец твоим ключом теперь отдаёт не ошибку, а список новостей

Теперь то, за что новичков бьют чаще всего. Эту строку нельзя вписывать прямо в программку. Программку ты через неделю выложишь куда-нибудь, покажешь знакомому или сохранишь в облако, и строка уедет вместе с ней. Правильное место для неё это переменная среды: значение живёт отдельно от кода, а код обращается к нему по имени. В моих программках это выглядит одной строкой, вставь её к себе:

KLYUCH = os.environ.get("ALPHAVANTAGE_KEY", "demo")

Программка берёт значение из среды, а если его нет, подставляет слово demo. Значит текст программы можно показывать кому угодно, а ключ доступа остаётся у тебя

Кстати, про demo. У Alpha Vantage есть публичное демо-значение из их документации, и на нём можно попробовать всё до регистрации. Работает оно не везде, и это видно на моём прогоне: по IBM и MSFT цена пришла, а по AAPL источник ответил отказом со словами, что демо-значение только для примеров. Отличная тренировка, кстати: твоя программка должна уметь получить отказ и не упасть

Мой замер 13 сентября 2026 года по Alpha Vantage: IBM отдал цену 243.2900, MSFT 495.6300, оба с торговым днём 11 сентября, а AAPL на том же демо-значении ответил отказом

Вот как выглядит удачный ответ. Кадр моего экрана, ответ настоящий:

Живой ответ Alpha Vantage по бумаге IBM: цена, объём и поле с датой последнего торгового дня
Мой кадр живого ответа от 13 сентября 2026 года. Обрати внимание на строку latest trading day: она стоит рядом с ценой и говорит, к какому дню цена относится

Шаг 3. Собери первого помощника как программку из десяти строк

Теперь превращаем ручной запрос в программку. Возьми любой текстовый редактор, создай файл с именем agent2_ceny.py и вставь туда это:

import json, os, urllib.parse, urllib.request, datetime, pathlib

TIKERY = ["IBM", "MSFT"]
KLYUCH = os.environ.get("ALPHAVANTAGE_KEY", "demo")
PAPKA = pathlib.Path(__file__).parent / "svodka"
PAPKA.mkdir(exist_ok=True)

def cena(tiker):
    q = urllib.parse.urlencode({"function": "GLOBAL_QUOTE",
                                "symbol": tiker, "apikey": KLYUCH})
    with urllib.request.urlopen(
            "https://www.alphavantage.co/query?" + q, timeout=30) as r:
        d = json.load(r)
    q2 = d.get("Global Quote")
    if not q2:
        return {"oshibka": str(d)[:160]}
    return {"cena": q2["05. price"], "izmenenie": q2["10. change percent"],
            "torgovyy_den": q2["07. latest trading day"]}

segodnya = datetime.date.today()
rez = {"segodnya": str(segodnya), "bumagi": {}}
for t in TIKERY:
    v = cena(t)
    if "torgovyy_den" in v:
        d = datetime.date.fromisoformat(v["torgovyy_den"])
        v["otstavanie_dney"] = (segodnya - d).days
    rez["bumagi"][t] = v

(PAPKA / "02-ceny.json").write_text(
    json.dumps(rez, ensure_ascii=False, indent=1), encoding="utf-8")
print("готово, бумаг:", len(rez["bumagi"]))

Запускается это одной строкой в той же папке: слово python3 и имя файла

Что увидишь: в терминале появится строка про то, что готово, а рядом с программкой возникнет папка svodka и в ней файл 02-ceny.json

Проверка на месте: открой этот файл, и внутри у каждой бумаги стоят четыре значения, включая otstavanie_dney

Про это поле стоит сказать отдельно, потому что оно и есть разница между помощником и генератором ерунды. Источник отдаёт дату последнего торгового дня, и программка сама считает, сколько дней прошло. Проверил у себя: сегодня 13 сентября, воскресенье, а последний торговый день пятница, 11-е. Отставание два дня, и это нормально, биржа два дня закрыта. Но если то же отставание вылезет в среду, значит источник отдаёт вчерашний день за сегодняшний, и сводка врёт. Без этого поля ты об этом не узнаешь никогда

Остальные трое устроены так же, меняется только адрес запроса и что берётся из ответа. А если у источника нет открытого адреса и данные лежат просто на странице, забирать их придётся иначе: собрать список с сайта словами, без программки вообще

Шаг 4. Поставь четверых на расписание и сведи их в одну сводку

Последняя программка ни в какой интернет не ходит. Она открывает файлы, которые оставили первые три, и складывает из них текст. Логика у неё простая: взять число, приписать, из какого файла оно взято, а если файла нет, записать это в раздел «чего не хватило»

Вот что у меня выходит на выходе, это настоящий файл с моей машины:

Мой прогон 13 сентября 2026 года, файл SVODKA.txt собран четвёртой программкой из файлов первых трёх. Лог прогона лежит рядом со статьёй

СВОДКА НА 2026-09-13
==============================================

ПОДАЧИ (источник 01-podachi.json)
  AAPL  подач за окно: 7    самая свежая: 2026-09-09
  MSFT  подач за окно: 9    самая свежая: 2026-09-09

ЦЕНЫ (источник 02-ceny.json)
  IBM     243.2900   3.9612%  торговый день 2026-09-11
  MSFT    495.6300   0.6478%  торговый день 2026-09-11
  AAPL  данных нет, источник ответил отказом

ОТЧЁТНОСТИ (источник 03-kalendar.json, окно 2026-08-30..2026-09-13)
  форма 10-Q  подач за окно: 171
  форма 8-K   подач за окно: 1793

ЧЕГО НЕ ХВАТИЛО
  - нет цены по AAPL

Теперь расписание. На маке и на любой линуксовой машине для этого есть встроенный планировщик. Набери в терминале crontab -e, откроется текстовый редактор, и добавь туда четыре строки:

 5 6 * * 1-5  cd ~/agenty-rynok && /usr/bin/python3 agent1_podachi.py
 7 6 * * 1-5  cd ~/agenty-rynok && /usr/bin/python3 agent2_ceny.py
 9 6 * * 1-5  cd ~/agenty-rynok && /usr/bin/python3 agent3_kalendar.py
15 6 * * 1-5  cd ~/agenty-rynok && /usr/bin/python3 agent4_svodka.py

Читается это так: первые две цифры минута и час, дальше день месяца и месяц, последнее поле дни недели. То есть три сборщика отрабатывают в 6:05, 6:07 и 6:09, а сводка собирается в 6:15, когда их файлы уже на месте

Что увидишь: после сохранения список расписания покажет эти четыре строки

Мимо не пройдёшь: на следующее утро открываешь папку, а в ней файл SVODKA.txt с сегодняшней датой, которого вечером не было

Если хочешь, чтобы это работало и с закрытым ноутбуком, те же четыре строки ставятся на облачную машину: любой недорогой арендованный компьютер, к которому подключаешься по сети. Смысл ровно тот же, меняется только место

Четыре риска, о которых стоит знать до запуска

Модель выдумывает цифры. Это не редкость и не исключение. По бенчмаркам 2026 года частота выдумок у ведущих моделей гуляет от 15 до 52 процентов в зависимости от задачи, а в финансовом контексте четыре модели из шести дописывают недостающие числа, если в исходных документах пробел. Отсюда правило, которое я вшил прямо в свою сводку: каждая цифра идёт с именем файла, откуда взята, и любое число перед решением открывается на сайте источника глазами. Отдельный навык, как читать чужие таблицы с цифрами, разобран у меня по шагам

Данные приходят с задержкой. На бесплатных тарифах часть цифр отстаёт на 15-20 минут. Для утренней сводки это ничего не значит, а для слежения за позицией в моменте значит всё. Поэтому поле с датой в ответе читается всегда

Ключ доступа утекает. Самый частый способ: вписать строку прямо в программку, а потом её куда-нибудь выложить. Переменная среды решает это одной строкой кода, и другого разумного варианта тут нет

Источник упирается в лимит и замолкает. У Alpha Vantage на бесплатном тарифе 25 запросов в сутки, и десять бумаг в мониторинге раз в час съедят их к обеду. У xAI лимит растёт вместе с тратами на счету, и при превышении приходит ошибка 429. Программка обязана уметь получить отказ и записать его в сводку, а не молча положить пустое поле

Чего эти четверо не делают

Они не торгуют и не советуют торговать. Ни одна строка их сводки не является рекомендацией покупать или продавать: это перенос открытых данных из четырёх мест в одно, с указанием, откуда что взято

Так сделано не из осторожности, а потому что иначе нельзя. В правилах использования xAI прямо записано, что сервис нельзя применять для регулируемой финансовой деятельности без соответствующих лицензий, и что компания не является ни брокером, ни зарегистрированным инвестиционным советником. Отдельно там запрещены автоматические решения с высокой ценой ошибки, принимаемые без человека в цикле

Отдельная граница проходит по тому, для кого ты это делаешь. Собрать себе помощников для личного разбора можно. А вот если такая сводка начнёт уходить другим людям или продаваться как сигналы, это уже другая деятельность с другими требованиями: комиссия по бумагам в своих приоритетах на 2026 год отдельно смотрит на фирмы, применяющие ИИ в работе с розничным инвестором

В итоге у тебя

В папке лежат четыре файла-программки и папка svodka с их выводом. Три программки ходят в открытые источники, четвёртая собирает из их файлов один текст. В планировщике стоят четыре строки, и завтра в 6:15 сводка соберётся без тебя. Дальше её можно разбирать так же, как любую таблицу с числами: до чисел и графика

Плюс четыре вопроса, которые теперь есть к любой цифре из любой автоматической сводки:

  1. из какого файла и от какого источника взято это число
  2. какая у него дата и сколько дней оно пролежало
  3. это настоящий ответ источника или программка подставила заглушку, когда получила отказ
  4. кто примет решение по этому числу, программа или человек

Четвёртый вопрос главный. Первые трое приносят, четвёртая раскладывает, а решает человек. Как только это перестаёт быть правдой, набор из помощников превращается в то, чего правила площадок прямо не разрешают

Источники

Все цифры этой статьи я снял своими прогонами 13 сентября 2026 года: логи лежат рядом со статьёй, а два кадра в тексте это мой собственный экран. Первоисточник разбора Roan при этом за входом в X, прямой запрос отдаёт код 402, поэтому его содержание я держу за реконструкцию по совпадающим пересказам, а не за цитату

Памятка: что проверить перед запуском

Сохрани себе

  • Grok Bot это панель, считает Kimi K3 Swarm Max от Moonshot AI, это разные компании
  • Ключ доступа живёт в переменной среды, а не в тексте программки
  • Программка читает поле с датой из ответа и считает, сколько дней прошло
  • SEC сортирует ответ по совпадению слов: ищи по тикеру и задавай окно дат
  • Программе надо представиться в подписи запроса, иначе SEC ответит отказом
  • Сводка пишет, из какого файла взято число, и честно называет то, чего не хватило
  • Решение по любой цифре принимает человек, а не программа

Куда это ведёт

Четыре программки на открытых источниках это уже своя система

Тот же приём собирается под что угодно: следить за конкурентами, за упоминаниями, за ценами поставщиков. Меняется адрес источника, схема остаётся

На Лагере я веду через это за руку, на живых проектах, от первой проверки источника до собранной системы

Зайти в Лагерь

Частые вопросы

Так это правда дешевле терминала Bloomberg?

Смотря что считать. Место в терминале Bloomberg на 2026 год стоит 31 980 долларов в год, а четыре программки из этой статьи используют три бесплатных источника и стоят ноль. Но и делают они несравнимо меньше: приносят открытые данные и складывают их в файл. Цифра «примерно в десять раз дешевле» из ролика относится к другому сетапу, с 300 помощниками, и я её как проверенную не утверждаю: сам текст первоисточника лежит за входом в X

Нужно ли уметь программировать?

Нет, если ты готов скопировать готовый текст программки и поменять в нём список бумаг. Всё, что нужно сделать руками: создать файл, вставить текст, поменять две строки со своими тикерами и запустить. Установленный python на маке уже есть, на Windows он ставится с сайта одной кнопкой

Можно ли поручить этим агентам торговать?

Нет, и статья специально устроена так, чтобы это было невозможно. Правила использования xAI прямо запрещают регулируемую финансовую деятельность без лицензий и отдельно запрещают автоматические решения с высокой ценой ошибки без человека в цикле. Эти четыре программки только читают открытые данные и складывают их в текст

Что делать, если источник перестал отвечать?

Ничего экстренного. Сводка соберётся из того, что есть, а в разделе «чего не хватило» появится строка с именем источника. Так задумано: у меня на прогоне 13 сентября так и вышло, по AAPL демо-значение Alpha Vantage ответило отказом, и сводка это записала. Программка, которая падает от одного отказа, не годится для работы по расписанию

Где взять облачную машину и обязательно ли она?

Не обязательна. Если ноутбук ночью включён, расписание отработает на нём. Облачная машина нужна только для того, чтобы сводка собиралась при выключенном ноутбуке: это арендованный компьютер, к которому подключаешься по сети, и те же четыре строки расписания ставятся на нём слово в слово