Хочу рассказать о своем опыте поиска ценных бумаг на американском рынке, которые торгуются на NYSE, NASDAQ и AMEX.

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

Обычно я покупаю индексные фонды, но иногда хочется купить конкретные акции. Акции какой конкретной компании выбрать, ведь на американском рынке на август 2024 года их торгуется 10 522 штуки? Ответ на вопрос сложен и зависит от многих факторов. Правда, часто не хочется тратить много времени на анализ, но и совсем случайную акцию покупать не хочется.

Существует популярный ресурс Яху Финанс, который предоставляет различные данные по акциям, включая фундаментальные данные, а ещё сводные рекомендации аналитиков различных инвестиционных компаний: прогнозируемую цену бумаги и рекомендацию: покупать / продавать / держать. Все эти данные представлены на Яху в структурированном виде. По одной компании может быть дано множество прогнозов, например для Apple Inc. (AAPL) в августе 2024 таких прогнозов было дано 38 от различных инвестиционных компаний.

Точки на графике - это рекомендации аналитиков
Точки на графике - это рекомендации аналитиков

Мне пришла идея - а почему бы не собрать эти данные по каждой бумаге, отфильтровать по потенциалу роста - проценту между текущей и прогнозируемой по мнению этих аналитиков ценой, а ещё учесть сколько компаний-аналитиков проводило анализ за два последних месяца. Обязательно фильтровать и учитывать текущую дивидендную доходностью. При практических исследованиях оказалось, что не все акции имеют такие данные о прогнозной цене, а только 4 250 из 10 522 бумаг. Оставшиеся 6 272 акции не имеют данных о прогнозируемой цене.

Акции с прогнозными ценами - можно перебирать каждую из 4 250 бумаг и если она отвечает требованиям - включать в выборку. Ну а с выборкой уже работать самому, когда механический отбор произведён.

Почему именно американский рынок?

UBS Global Investment Returns Yearbook: Summary Edition 2024
UBS Global Investment Returns Yearbook: Summary Edition 2024

Доминирование американского рынка капитала – это не просто недавнее явление; это результат столетнего экономического, технологического и геополитического развития.

Об этом говорит один график, отражающий историю капитализации мирового фондового рынка. До Первой мировой войны мир был действительно многополярным с точки зрения экономической мощи. Великобритания, крупнейшая экономика того времени, занимала лишь 24% мировой рыночной капитализации, за ней следовали США с 15% и Германия с 13%. Ни одна страна не доминировала с подавляющим большинством на мировых рынках капитала.

Но ситуация резко изменилась в 1920-х годах, когда США начали отдаляться от своих коллег. К концу 20-го и в начале 21-го века Соединенные Штаты укрепили свои позиции ведущего мирового рынка капитала. Сегодня на ее долю приходится ошеломляющий 61% капитализации мирового фондового рынка, что намного превосходит любую другую страну. Масштаб этого доминирования таков, что ни одна другая нация не достигает даже двузначных цифр. Даже Китай, вторая по величине экономика мира, остается далеким конкурентом в сфере рынков капитала.

На протяжении прошлого столетия ни одна страна не смогла успешно бросить вызов лидерству Америки в мировых финансах. Ближе всего к этому пришла Япония в 1980-х годах, оседлав волну экономического процветания и быстрого роста. Однако к началу 1990-х годов японский пузырь лопнул, и она отступила от своего вызова американскому доминированию.

Несколько факторов объясняют подъем американского рынка капитала. Огромный размер, устойчивость и рост экономики США сыграли центральную роль. Уолл-стрит стала синонимом финансовой мощи, поддерживаемой сильными институтами, глубокими пулами капитала и нормативно-правовой средой, которая, несмотря на ее сложности, способствовала созданию стабильного и предсказуемого рынка.

В других странах наблюдается снижение их относительного влияния на мировых рынках капитала. Столетие назад, например, на долю России приходилось 6% мировой рыночной капитализации.

Где взять список тикеров, торгуемых на NYSE, NASDAQ и AMEX?

Если искать полный список тикеров, торгуемых на NYSE, NASDAQ и AMEX, его можно найти на официальном сайте Nasdaq Trader. Страница по этому адресу предоставляет доступ к полному каталогу всех акций, котирующихся на этих биржах.

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

Для конвертации в json формат я использую скрипт nasdaqtraded.sh:

#!/bin/bash
# $ sh nasdaqtraded.sh

echo -n '["' > nasdaqtraded.json
curl -o nasdaq.txt ftp://ftp.nasdaqtrader.com/symboldirectory/nasdaqtraded.txt
cat nasdaq.txt | grep -Eo '^\w\|\w*' | sed 's/^\w|//g' | sed 'H;1h;$!d;x;y/\n/,/' | sed 's/,/\",\"/g' >> nasdaqtraded.json
echo '"]' >> nasdaqtraded.json
sed -i ':a;N;$!ba;s/\n//' nasdaqtraded.json
rm nasdaq.txt
nasdaqtraded.json
nasdaqtraded.json

Где брать данные цен, финансовую информацию и прогнозы по компаниям?

Хотя официальное API Яху Финанс было закрыто ещё в 2017 году, однако практически сразу же появилась его недокументированная работоспособная версия, которая жива до сих пор.

Примерно год назад, в прошлом 2023 году, API которое до сих пор живо и работает стало требовать требовать куки для каждого запроса. Привычным способом возвращалась только ошибка Invalid Crumb. Однако на stackoverflow.com практически сразу появилось решение этой проблемы.

Теперь в 2024 году рабочий код запроса к API Яху Финанс выглядит следующим образом:

async function getCredentials() { // на основе https://stackoverflow.com/a/76555529
    // Inline the API and User-Agent values
    const API = 'https://query2.finance.yahoo.com';
    const USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36';

    // get the A3 cookie
    const response = await fetch('https://fc.yahoo.com', {
        headers: {
            'User-Agent': USER_AGENT
        },
        timeout: 10000 // Увеличиваем таймаут до 10 секунд
    })
    const cookie = response.headers.get('set-cookie')

    // now get the crumb
    const url = new URL('/v1/test/getcrumb', API)
    const request = new Request(url, {
        headers: {
            'User-Agent': USER_AGENT,
            'cookie': cookie
        }
    })
    const crumbResponse = await fetch(request)
    const crumb = await crumbResponse.text()

    return {
        cookie,
        crumb
    }
}

async function USAStockGetName(ID, cookie, crumb) { //получаем имя бумаги 
    // https://query1.finance.yahoo.com/v10/finance/quoteSummary/GRMN?modules=price&crumb=rxBh.H4z62E
    const url = `https://query1.finance.yahoo.com/v10/finance/quoteSummary/${ID}?modules=price&crumb=${crumb}`;
    console.log("%s. URL for %s: %s", getFunctionName(), ID, url);
    try {
        const response = await fetch(url, {
            headers: {
                'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
                'cookie': cookie
            },
            timeout: 10000 // Увеличиваем таймаут до 10 секунд
        });
        const json = await response.json();
        const value = json.quoteSummary.result[0].price.longName;
        console.log("%s. Name for %s: %s", getFunctionName(), ID, value);
        if (value == 0) return 'нет';
        return value.replace(/\'/g, '');
    } catch (e) {
        console.log(`Ошибка: ${e}.`);
    }
}

То есть как источник данных можно выбрать Yahoo Finance, потому что API предоставляет структурированные данные, включая прогнозируемые цены и рекомендации по покупке/продаже/держать от разных аналитиков.

Проблема выбора акций: слишком много вариантов

Когда есть пул более 10 000 компаний - сложно что-то выбрать вручную. На сайте Яху Финанс есть хорошие скринеры - фильтры, но вот по рекомендациям аналитиков они не работают.

Поэтому захотел написать свою реализацию скринера.

Результат работы скрипта YahooFinance_Analyst Price Targets
Результат работы скрипта YahooFinance_Analyst Price Targets

Система фильтрации акций - как работает скрипт

YahooFinance_Analyst Price Targets
YahooFinance_Analyst Price Targets

Этот скрипт предназначен для автоматизации процесса поиска недооцененных акций, торгуемых на фондовых биржах США (NYSE, NASDAQ и AMEX), путем получения данных из Yahoo Finance. Вот как это работает:

  1. Инициализация и настройка. Скрипт начинается с записи текущего времени и инициализации необходимых модулей, таких как fs, path, moment и fetch. Скрипт позволяет настроить пороговые значения для выбора акций, в том числе:

    • Потенциал роста: минимальный процентный рост между текущей и прогнозируемой ценой акций (например, 40% или более).

    • Рекомендации аналитиков: минимальное количество аналитических фирм, предоставивших рекомендации в течение последних двух месяцев (например, не менее 20).

    • Дивидендная доходность: минимальная текущая дивидендная доходность (например, 1% или более).

Потенциал роста и рекомендации аналитиков
Потенциал роста и рекомендации аналитиков
  1. Загрузка базы тикеров. Скрипт загружает файл JSON (nasdaqtraded.json), содержащий тикеры компаний, акции которых торгуются на биржах США. Он обеспечивает уникальность тикеров за счет фильтрации дубликатов.

Дивидендная доходность акций
Дивидендная доходность акций
  1. Процесс анализа. Основная функциональность включает в себя перебор тикеров и получение финансовых данных для каждой акции из Yahoo Finance. Скрипт проверяет:

    • Потенциал роста: разница между текущей ценой акций и прогнозируемой ценой.

    • Аналитический тренд: количество рекомендаций аналитиков по акциям.

    • Дивидендная доходность акций.

    В окончательный отбор включаются только акции, соответствующие всем заданным условиям (потенциал роста, рекомендации аналитиков и дивидендная доходность).

  2. Обработка ошибок. Скрипт отслеживает ошибки, особенно когда для определенных акций отсутствуют данные о прогнозируемых ценах.

  1. Сортировка и регистрация данных. Выбранные акции сортируются по потенциалу роста, а результаты периодически регистрируются: каждые 100 обработанных акций скрипт сохраняет текущий прогресс на диск, создавая HTML-файл, суммирующий результаты.

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

Пошаговое руководство по использованию скрипта YahooFinance_Analyst Price Targets

Прежде чем приступить к работе, убедитесь, что на вашем компьютере установлено следующее:

  • Node.js и npm (менеджер пакетов Node): Node.js позволяет запускать JavaScript на вашем компьютере, а npm — это менеджер пакетов, входящий в состав Node.js. Вы можете скачать оба с официального сайта Node.js.

  • Редактор кода (необязательно). Для редактирования и просмотра файлов проекта рекомендуется использовать редактор кода, например Visual Studio Code. Загрузите его с веб-сайта Visual Studio Code.

Скачайте репозиторий проекта

Первый шаг - загрузить (клонировать) проект с GitHub.

Список файлов
Список файлов

Установка зависимостей

Следующим шагом будет установка необходимых пакетов, необходимых для запуска проекта.

Для Windows воспользуйтесь файлом first start.bat.

Для Mac и Linux в терминале введите:

npm install

Эта команда установит все пакеты, перечисленные в файле package.json.

Запуск проекта

После установки зависимостей вы можете запустить проект.

Для Windows:

Воспользуйтесь файлом YahooFinance_Analyst Price Targets_start_windows.bat

Запуск занимает около 10 часов:

После красной стрелочки ожидание от 1 до 2 минут
После красной стрелочки ожидание 10 часов

Для Mac:

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

node /Users/mike/Desktop/YahooFinance_Analyst Price Targets/index.js 2>&1 | tee /Users/mike/Desktop/YahooFinance_Analyst Price Targets/log/log_$(date +%F_%T).txt

Процесс также занимает около 10 часов, все логи можно посмотреть в папке log.

Для Linux:

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

node /home/mike/YahooFinance_Analyst Price Targets 2>&1 | tee /home/mike/YahooFinance_Analyst Price Targets/log/log_$(date +%F_%T).txt

Просмотр результатов

После успешного выполнения скрипта в папке searching_results появится ещё один файл с текущей датой.

На названия столбцов можно нажимать - сортировка будет меняться.

Прошлые результаты поиска за несколько лет можно посмотреть здесь.

Один из результатов поиска
Один из результатов поиска

Вместо итогов

Скрипт всегда доступен на Гитхабе.

Автор: Михаил Шардин

19 августа 2024 г.

Комментарии (25)


  1. turboslon
    19.08.2024 00:53
    +10

    Show me your money

    Каков финансовый результат вашего портфеля за 2023 в сравнении с, например, S&P500 (X% vs 26%)? А в идеале CAGR за последние лет 5-10, это бы изрядно добавило веса подходу, реализованному Вами.


    1. empenoso Автор
      19.08.2024 00:53

      Да, это бы прибавило веса подходу, но я ничего не продаю.

      Этот скрипт был сделан для такого чтобы помочь самому себе - просто инструмент.


      1. Dmitry_604
        19.08.2024 00:53
        +5

        Ну не продаете, хорошо, - сделайте оценку портфеля "на сию" и сравните с индексом тогда.


      1. Wesha
        19.08.2024 00:53
        +1

        я ничего не продаю.

        "Нахал!" (c)


  1. excoder
    19.08.2024 00:53

    А есть ли данные по сбываемости прогнозов аналитиков в срезе последних лет?


    1. empenoso Автор
      19.08.2024 00:53

      Теоретически можно с какой-то периодичностью собирать эти прогнозы, а потом спустя полгода или год например смотреть результаты. Яху финансы технически обладает для этого всеми возможностями чтобы смотреть изменения на каком-то периоде.

      На гитхабе есть результаты прогнозов в 2020 году - можно просто вручную для примера посмотреть.


  1. Dmitri-D
    19.08.2024 00:53
    +5

    самое сложное в таки прогнозах - это коррекции и кризисы. Они наступают "внезапно", их не могут предсказать прогнозы. В целом - рынок всё равно вырастет и вырастет по сравнению с инфляцией в перспективе, скажем, 15-20 лет (2-3 кризисных периода).
    Воспрос лишь - вы сможете это сделать лучше аналитиков, которые не только читают, но и пишут эти прогнозы, или всё-таки лучше поверить S&P и запастись попкорном лет на 15?
    По поводу доступа к яхе - спасибо, было любопытно почитать. Не думал что это всё еще живо, хотя подозревал.


    1. empenoso Автор
      19.08.2024 00:53
      +1

      Лучше запастись попкорном.

      Аналитики что-то должны писать, даже когда мыслей нет.

      Когда ты частный инвестор можно несколько лет вообще не подходить к теме, а потом продолжить.


      1. usego
        19.08.2024 00:53
        +5

        Хороший аналитик умеет убедительно расписать, почему его предыдущий прогноз не сбылся =)


        1. empenoso Автор
          19.08.2024 00:53
          +1

          Сейчас даже для этого аналитик не нужен условный чат gpt всё распишет просто великолепно.


  1. Zaro4k0
    19.08.2024 00:53

    неплохо


  1. excoder
    19.08.2024 00:53
    +1

    А как вы на Yahoo Finance получаете график с точками, соответствующими отчётам аналитиков, как у вас на первом скриншоте? Я что-то щёлкал-щёлкал по разным ссылкам на https://finance.yahoo.com/quote/AAPL/analysis/ , но так нужного вида и не получил. Отдельно график — пожалуйста, отдельно сводка по аналитикам — пожалуйста, а график с событями в виде точек с отчётами аналитиков — нет.


    1. empenoso Автор
      19.08.2024 00:53
      +1

      График с точками как на первом скриншоте - снял с компьютера по адресу https://finance.yahoo.com/quote/AAPL


  1. yrub
    19.08.2024 00:53
    +1

    Как я создал систему поиска недооцененных американских акций

    люди, интересующиеся финансами прочитав такое подумает о совсем других вещах, чем то, что сделали вы (какую-нибудь llm которая парсит отчеты и прогоняет их через модель экономики). Вы сделали веб интерфейс для поиска акций по yahoo аналитике (если я правильно понял, увы, времени читать все нет). Качество этой аналитики под большим вопросом. Но интересно будет посмотреть на виртуальный результат через год, будет ли какой-то профит относительно покупки индекса.

    Вообще поиск недооцененных акций дело не просто (компании любят приукрашивать прогнозы и прятать убытки) и в чем-то спорное (эти данные доступны всем, переиграть рынок трудновато будет, тем более с учетом китов). По этому умудренные люди больше склоняются к тех анализу и психологии рынка, ну и лучшую осведомленность (инсайд или человек на месте, который знает все про местный регион, но это уже не про рынок США)


    1. empenoso Автор
      19.08.2024 00:53
      +1

      Да, это просто скрипт который ищет по тем параметрам которые у них на сайте задать нельзя.


    1. empenoso Автор
      19.08.2024 00:53
      +3

      Насчёт умудрённых опытом и теханализ - в одном предложении - я не согласен.


      1. Dmitry_604
        19.08.2024 00:53
        +5

        плюсую, тех анализ это сродни астрологии по-моему :)


      1. yrub
        19.08.2024 00:53
        +3

        это озвучил Андрей Мовчан (ну и другой человек, который 20 лет назад многое повидал на мосбирже, добился там результатов и ушел: Сергей Чалый, русской аудитории он наверно не известен). В принципе это типичная история, когда люди со знанием математики и экономики приходят на биржу, считая что они сейчас все обсчитают, но меняют свое мнение на то, что психология двигает рынком в большей степени. 

        Ситуаций когда фундаментальный анализ прав, но он не работает не мало. Акции во время ковида не обвалились, а всего-лишь упали до адекватного значения по фундаментальной оценка Баффета (индикатор Баффета), а потом акции технологических компаний улетели в небеса благодаря 4 триллионам помощи населению и приложению Робин Гуд, на одном только хайпе. А сотни никому неизвестных компаний, которые делали сверх прибыли на фоне дефицита полупроводников, будучи в звене их производства, прибавили быть может десятки процентов всего. Вы могли бы тут заработать, но выгоднее было понять, что хомяки разгоняют цену гугла и амазона, взять акции вместе с ними и продать их позже.

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

        В принципе опытные люди и фонды, типа того же Мовчана могут или могли стабильно зарабатывать на неэффективности рынка или арбитражем, он про это рассказывал, но этот способ никак не касается оценки акций. В остальном они для примера покупают облигации, инвестируют в развивающиеся рынки (для этого на местах должны быть свои люди, которые знают о своем регионе больше чем на Уолл Стрит), покупка облигаций с дисконтом благодаря тому что они крупный фонд. В общем вот все примеры успешных стратегий. Простому человеку они не доступны, лучше для начала просто купить индекс, а по ходу дела виртуально тестировать свою стратегию, например годик. Ну или если у вас есть реальный инсайт (как дивидендами газпрома ;) ). Хотя как рассказывал Чалый: в 98г к ним с таким инсайтом пришли, Ельцин хотел сделать премьером Немцова, дальше был вопрос что делать, очевидно что рынки как-то бы отреагировали на эту информацию. Решили ничего не предпринимать и завтра ничего не случилось: человек который принес этот инсайт клялся, что он видел приказ о назначении своими глазами, но по пути машину с ним развернули. Бывает и так.

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


    1. empenoso Автор
      19.08.2024 00:53

      Думаете кто-то подобную модель бесплатно бы для публичного доступа стал выкладывать?


    1. czz
      19.08.2024 00:53
      +1

      А теханализ разве не основан на данных, которые видны всем?


  1. Vertoletto
    19.08.2024 00:53
    +1

    Эх, было бы еще здорово по факту каждого прогноза выполнять post mortem: "сбылось", "не сбылось", "сбылось ровно наоборот" и в итоге накапливать статистику по степени доверия их авторам, дабы отделить "агнцев от козлищ".


    1. empenoso Автор
      19.08.2024 00:53

      50/50 у каждого аналитика :)


      1. Wesha
        19.08.2024 00:53

        Всё, перехожу на обезьян!


        1. empenoso Автор
          19.08.2024 00:53

          Всё уже украдено до нас: https://habr.com/ru/articles/492382/
          Уже есть такое, реализовано в виде кода


        1. empenoso Автор
          19.08.2024 00:53

          https://codepen.io/empenoso/pen/poJmJZg