惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
腾讯CDC
A
About on SuperTechFans
Vercel News
Vercel News
I
InfoQ
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
S
SegmentFault 最新的问题
V
Visual Studio Blog
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
博客园 - 【当耐特】
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
Apple Machine Learning Research
Apple Machine Learning Research
GbyAI
GbyAI
美团技术团队

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
ИИ Анализ новостного сентимента как торговый сигнал
tripolskypet · 2026-04-19 · via Все публикации подряд на Хабре

ИИ Анализ новостного сентимента как торговый сигнал

Сложный

4 мин

2.7K

Туториал

Исходный код торговой стратегии опубликован по ссылке

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

Однако возникает вопрос: как же они работали раньше? В чём дело?

Что изменилось?

Новостной сентимент определяет режим. Индикатор работает внутри режима.

Практическое руководство как определить сентимент

Нужен векторный поиск по новостям. Его легко реализовать используя Scrapy + PostgreSQL + PgVector или Scrapy + MongoDB Atlas Vector Search. См. VectorEmbeddings + Cosine Distance. Я использую SaaS-решение, которого хватает в рамках free tier — tavily.com. Также подойдёт Perplexity Search API. Ниже — руководство по построению поискового запроса для получения новостного сентимента.

1. Score как критерий сортировки, но не фильтра

Слово «Трамп» не равно «Биткоин», но по смыслу подразумевает спекуляцию на рынке. Результаты с максимальным score воспринимаются аудиторией как прямая реклама. Нулевой score означает отсутствие упоминания биткоина. Искать нужно околонулевой score — именно он формирует настроение рынка.

Это работает по принципу продакт-плейсмента: пиво Corona в «Форсаже» или смартфон Sony в фильме о Джеймсе Бонде.

2. Домен первичен по отношению к поисковому запросу

Искать «SEC crypto enforcement action lawsuit» — ошибка. Настроение рынка формируют конкретные домены и блоги — первопроходцы рынка. Если они не сделают репост нового документа SEC, его никто не увидит. SEC влияет на розничного инвестора только через посредников: публикация регулятора сама по себе не двигает рынок — его двигает пост авторитетного блогера.

3. Время первично по отношению к смыслу публикации

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

4. Нужно искать тот фундаментал, который закладывают в будущее, а не придумывать свой

Критически важно использовать именно VectorEmbeddings + Cosine Distance, а не LLM для поиска сентимента. LLM увидит ключевое слово «Перекупленный RSI» и сформирует собственный вывод о движении рынка. Задача — найти не интерпретацию, а настроение, которое авторитетные участники закладывают в рынок. См. RAG Embedding Models.

5. Количество публикаций увеличивает шум

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

Важно

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

Проверяем гипотезу

Кейс 1. Нейтрально-медвежий тренд

Используя упомянутые выше рекомендации, я сформировал поисковой запрос. В Tavily встроена LLM, которая делает краткое summary по новостям.

  • Поисковой запрос дал результат: нейтрально-медвежий сентимент Show Image

  • Реакция рынка

Кейс 2. Бычий сентимент

Повторим эксперимент на другой дате.

  • Поисковой запрос дал результат: бычий сентимент

  • Реакция рынка

Рекомендации по временному окну поиска

1. Не все новостные агентства указывают время публикации. Чтобы исключить look-ahead bias, их придётся убрать из выборки. Среди них:

В базе Tavily таким публикациям присваивается время Thu, ?? Jan ???? 00:00:00 GMT. Чтобы отфильтровать их, необходимо привести время к UTC — иначе смещение будет рассчитываться по вашему часовому поясу:

const hour = dayjs(publishedDate).utc().get("hour");
const minute = dayjs(publishedDate).utc().get("minute");
if (hour === 0 && minute === 0) {
    console.warn(`fetchNews search invalid publishedDate query=${query} url=${url} from=${from} to=${to}`)
    return false;
}

2. Запрашивайте данные за -2 дня и фильтруйте последние 24 часа на своей стороне.

При поиске Tavily использует дату без уточнения времени, поэтому на границе 23:59–00:00 публикации будут теряться. Даже при идеальном парсере сайтов возникает проблема распределённых CDN-баз данных: одна и та же новость поступает читателям не одновременно, а по мере высвобождения серверных ресурсов.

3. Не пытайтесь опередить рынок.

Усреднение убивает направленность: позитив утра компенсирует негатив вечера, и сентимент стремится к шуму. Но если взять окно менее 24 часов, интерпретация сентимента становится неоднозначной: Трамп наносит удары по Ирану — непонятно, упадёт ли биткоин до нуля или вырастет. Окно в 24 часа оптимально для понимания контекста и отсечения шума.

Бектест

Все вышеупомянутые рекомендации удалось автоматизировать. ИИ-агент находит новостной сигнал:

И удерживает позицию до исчерпания новостного сентимента:

При этом для риск-менеджмента выставляется статистически недостижимый hard stop и trailing take-profit.

Почему не работают индикаторы

Торговый режим пытаются отладить на горизонте месяца, тогда как сентимент чередуется каждый день: медвежий — бычий — бычий — медвежий. В итоге обе стратегии — и бычья, и медвежья — выходят на уровень 50/50.

Что можно улучшить

Если выходить из позиции на изменении сентимента, часть прибыли будет упущена из-за задержки парсера новостей. Решение: выход на откате 3% от максимального PnL удачной позиции.

Это означает недоимку в 3% PnL, умноженную на 10 позиций — потенциально +30% к существующим 16%. При этом на момент открытой позиции новостной сентимент предсказуем. Как думаете, стоит ли попробовать использовать индикатор для выхода из позиции?

Спасибо за внимание!