Как сделать скринер акций в Excel: от сбора данных до автоматизации фильтров

Введение: зачем инвесторам скринер акций в Excel

Скринер акций — это инструмент, который помогает инвесторам быстро отсеивать сотни компаний по заданным критериям: финансовым показателям, рыночной капитализации, дивидендной доходности или техническим индикаторам. Готовые решения вроде TradingView, Finviz или Yahoo Finance предлагают базовые фильтры, но у них есть ограничения: платные тарифы, отсутствие гибкости или невозможность интеграции с личными данными.

Excel же позволяет создать полностью кастомизируемый скринер под свои стратегии — от простого фильтра по P/E до сложных мультифакторных моделей с автоматическим обновлением данных. В этой статье разберём, как собрать такой инструмент с нуля: от ручного ввода котировок до полуавтоматического парсинга с биржевых сайтов. Вы узнаете, какие формулы использовать для анализа, как визуализировать результаты и избежать типичных ошибок при работе с финансовыми данными.

Шаг 1: Определяем критерии отбора акций

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

  • 📊 Фундаментальные показатели: P/E, P/B, ROE, долг/EBITDA, свободный денежный поток (FCF).
  • 💰 Дивидендная политика: дивидендная доходность, коэффициент выплаты (payout ratio), стабильность выплат.
  • 📈 Технический анализ: скользящие средние (SMA, EMA), RSI, MACD, уровни поддержки/сопротивления.
  • 🏢 Секторальная принадлежность: фильтрация по отраслям (IT, энергетика, финансы) или географии.
  • 🔍 Специфические метрики: например, для стоимостных инвесторов — отношение цены к балансовой стоимости (P/B < 1).

Для новичков рекомендуем начать с 5–7 критериев. Например, комбинация P/E < 15, ROE > 15%, Дивидендная доходность > 4% и Долг/EBITDA < 3 уже позволит отсеять 80% компаний на рынке. Продвинутые трейдеры могут добавить динамические фильтры, например, сравнение текущего P/E со средним за 5 лет.

⚠️ Внимание: Не используйте более 10–12 критериев одновременно — это приведёт к "переоптимизации" скринера, когда он будет выдавать 1–2 акции в месяц, но без гарантии их роста. Оптимальное количество фильтров: 5–8 для фундаментального анализа и 2–3 для технического.

Шаг 2: Источники данных для скринера

Excel сам по себе не умеет pulling данных с бирж — вам нужно вручную или полуавтоматически загружать котировки и финансовую отчётность. Вот основные источники:

Источник Тип данных Способ загрузки Ограничения
Yahoo Finance Котировки, фундаментальные показатели Ручной экспорт в CSV или через Power Query Бесплатно, но данные могут запаздывать на 15–20 минут
Investing.com Технические индикаторы, исторические данные Копирование таблиц или API (платный) Ограничение на количество запросов в день
Finviz Скрининг по секторам, инсайдерские сделки Экспорт в Excel (требуется premium-подписка) Бесплатная версия показывает только топ-20 результатов
Московская Биржа (MOEX) Котировки российских акций, дивидендный календарь API или парсинг с сайта (требуются навыки VBA) Данные только по российскому рынку
Alpha Vantage Реальное время, исторические данные API с бесплатным тарифом (5 запросов/минуту) Требует регистрации и базовых знаний JSON

Для начинающих самый простой способ — скачать исторические данные в формате .csv с Yahoo Finance или Investing.com, а затем импортировать их в Excel через Данные → Из текста/CSV. Продвинутые пользователи могут настроить автоматическое обновление через Power Query или написать скрипт на VBA для парсинга.

📊 Какой источник данных вы используете для анализа акций?
Yahoo Finance
Investing.com
Finviz
Московская Биржа
Другой

Шаг 3: Структура таблицы и базовые формулы

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


| Тикер | Название | Цена | P/E | ROE | Див.доходность | SMA_50 | RSI_14 |

|-------|----------------|-------|-----|------|----------------|--------|--------|

| AAPL | Apple Inc. | 175.2 | 28 | 0.62 | 0.005 | 170.5 | 55 |

| MSFT | Microsoft Corp | 310.8 | 35 | 0.38 | 0.008 | 305.2 | 62 |

Теперь добавим формулы для анализа:

  • 📌 Отбор по P/E: =ЕСЛИ(B2<15; "Подходит"; "Не подходит"), где B2 — ячейка с P/E.
  • 📌 Сравнение с отраслевым средним: =ЕСЛИ(B2<СРЗНАЧ($B$2:$B$100); "Ниже среднего"; "Выше среднего").
  • 📌 Дивидендный фильтр: =ЕСЛИ(И(E2>0.04; F2<0.6); "Стабильный дивиденд"; ""), где E2 — доходность, F2 — payout ratio.
  • 📌 Технический сигнал: =ЕСЛИ(И(G2>H2; I2<30); "Покупать"; "Держать"), где G2 — цена, H2 — SMA_50, I2 — RSI.

Критическая ошибка новичков: использование абсолютных ссылок ($B$2) без фиксации диапазона. Если вы протянете формулу =ЕСЛИ(B2<15;...) вниз, а затем добавите новый столбец слева, все ссылки сдвинутся и формулы сломаются. Всегда фиксируйте диапазоны для средних значений (например, $B$2:$B$100).

☑️ Проверка структуры скринера

Выполнено: 0 / 5

Шаг 4: Автоматизация обновления данных

Ручной ввод котировок отнимает время, поэтому настроим полуавтоматическое обновление. Варианты:

  1. Power Query (для Excel 2016+):

    Перейдите в Данные → Получить данные → Из других источников → Из веб. Вставьте URL страницы с котировками (например, Yahoo Finance для AAPL), выберите таблицу с данными и нажмите Загрузить. Power Query обновляет данные при открытии файла или по кнопке.

  2. VBA-скрипт для парсинга:

    Пример кода для получения цены акции с Yahoo Finance:

    Sub GetStockPrice()
    

    Dim ticker As String

    Dim url As String

    Dim price As String

    ticker = "AAPL"

    url = "https://finance.yahoo.com/quote/" & ticker

    ' Здесь нужен код для парсинга HTML (требует библиотеки MSXML2)

    ' Результат записывается в ячейку, например:

    Range("B2").Value = price

    End Sub

    Для работы скрипта потребуется подключить библиотеку Microsoft XML, v6.0 через Tools → References в редакторе VBA.

  3. API-запросы:

    Сервисы вроде Alpha Vantage или Twelve Data предоставляют бесплатные API-ключи. Данные можно подгружать через Power Query или VBA с парсингом JSON. Пример URL для запроса:

    https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=AAPL&apikey=ВАШ_КЛЮЧ
⚠️ Внимание: При использовании парсинга или API учитывайте ограничения бирж. Например, Yahoo Finance может заблокировать IP при слишком частых запросах (более 100 в минуту). Для стабильной работы добавьте задержку в VBA-скрипт: Application.Wait Now + TimeValue("00:00:05").

Шаг 5: Визуализация результатов

Числа в таблице малоинформативны без наглядного представления. Используйте:

  • 📊 Условное форматирование: выделите зелёным акции с P/E < 15 и ROE > 20%, красным — с Долг/EBITDA > 5. Для этого выберите диапазон → Главная → Условное форматирование → Правила выделения ячеек.
  • 📈 Спарклайны: мини-графики в ячейках для отображения тренда цены за месяц. Вставьте их через Вставка → Спарклайны.
  • 🔍 Дашборд: создайте отдельный лист с сводными графиками:
    • Топ-5 акций по дивидендной доходности (гистограмма).
    • Распределение компаний по секторам (круговая диаграмма).
    • Динамика среднего P/E по портфелю (линейный график).

Пример формулы для ранжирования акций по нескольким критериям (чем меньше сумма рангов — тем лучше):

=РАНГ(B2;$B$2:$B$100;1) + РАНГ(C2;$C$2:$C$100;0) + РАНГ(D2;$D$2:$D$100;1)

Где B2 — P/E, C2 — ROE, D2 — дивидендная доходность. Отсортируйте таблицу по этому столбцу, чтобы увидеть лучшие варианты.

Как сделать интерактивный фильтр?

Используйте Срезы (Excel 2013+): выделите таблицу → Вставка → Срез. Свяжите срез с сводной таблицей, чтобы фильтровать данные по секторам, капитализации или другим параметрам без формул.

Шаг 6: Типичные ошибки и как их избежать

Даже опытные пользователи Excel допускают ошибки при создании скринера. Вот самые распространённые:

  1. Игнорирование поправок на инфляцию:

    Сравнивать P/E компании в 2020 и 2026 году напрямую бессмысленно — инфляция искажает показатели. Используйте скорректированное P/E:

    =B2 / (1 + $InflationRate)^(ГОД(СЕГОДНЯ()) - ГОД(D2))
        

    где D2 — дата отчётности, $InflationRate — средняя инфляция за период (например, 0.05 для 5%).

  2. Неучёт выбросов (outliers):

    Одна компания с P/E = 100 исказит среднее значение по сектору. Используйте УРЕЗСРЕДНЕЕ вместо СРЗНАЧ, чтобы исключить 10% крайних значений:

    =УРЕЗСРЕДНЕЕ(B2:B100; 0.1)
  3. Ошибки в формулах массива:

    Если вы используете {=МАКС(ЕСЛИ(...))}, не забывайте нажимать Ctrl+Shift+Enter (в новых версиях Excel это не требуется, но в старых формулы не сработают).

  4. Перегрузка листа данными:

    Excel тормозит при работе с более чем 100 000 строк. Разбивайте данные на отдельные листы по секторам или используйте Power Pivot для больших массивов.

FAQ: Ответы на частые вопросы

Можно ли сделать скринер для криптовалют в Excel?

Да, но с оговорками. Для криптовалют подойдут те же принципы, но источники данных другие: CoinGecko, CoinMarketCap или API бирж (Binance, Bybit). Главная сложность — высокая волатильность: технические индикаторы (например, RSI) могут давать ложные сигналы. Для крипты лучше добавить фильтры по ликвидности (объём торгов за 24 часа) и доминированию на рынке.

Как обновлять данные в скринере автоматически каждый день?

Настройте Power Query с параметром автообновления:

  1. Правой кнопкой по запросу → Свойства.
  2. Поставьте галочку Обновлять каждые и выберите интервал (например, 60 минут).
  3. В Параметры Excel → Формулы → Вычисления включите Автоматическое обновление связей.

Для VBA добавьте в код таймер: Application.OnTime Now + TimeValue("24:00:00"), "GetStockPrice".

Какие альтернативы Excel для создания скринера?

Если Excel кажется ограниченным, рассмотрите:

  • Google Sheets + Google Finance (бесплатные котировки, но меньше функций).
  • Python с библиотеками pandas, yfinance (для продвинутого анализа).
  • TradingView (встроенный скринер с техническими индикаторами).
  • QuantConnect (для алгоритмического трейдинга).

Excel остаётся лучшим вариантом для новичков благодаря простоте и гибкости.

Как добавить в скринер данные по инсайдерским сделкам?

Инсайдерские сделки (покупки/продажи акций топ-менеджерами) можно подгрузить с SEC.gov (для США) или e-disclosure.ru (для России). В Excel:

  1. Скачайте CSV-файл с последними сделками.
  2. Добавьте столбец Инсайдерский индекс: =СЧЁТЕСЛИ(Лист2!A:A; A2), где Лист2 — данные по сделкам, A2 — тикер.
  3. Отфильтруйте акции, где за последний месяц было ≥3 покупок инсайдеров.

Можно ли в Excel рассчитать скользящие средние для технического анализа?

Да, используйте формулу СРЗНАЧ с динамическим диапазоном. Например, для SMA_50 (50-дневная скользящая средняя):

=СРЗНАЧ($C$2:C2; 50)

где C2:C51 — столбец с историческими ценами. Протяните формулу вниз, и она будет автоматически рассчитывать среднее для последних 50 дней. Для EMA (экспоненциальной скользящей) потребуется более сложная формула или VBA.