Введение: зачем инвесторам скринер акций в 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 для парсинга.
Шаг 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).
☑️ Проверка структуры скринера
Шаг 4: Автоматизация обновления данных
Ручной ввод котировок отнимает время, поэтому настроим полуавтоматическое обновление. Варианты:
- Power Query (для Excel 2016+):
Перейдите в
Данные → Получить данные → Из других источников → Из веб. Вставьте URL страницы с котировками (например, Yahoo Finance дляAAPL), выберите таблицу с данными и нажмитеЗагрузить. Power Query обновляет данные при открытии файла или по кнопке. - 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. - 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 допускают ошибки при создании скринера. Вот самые распространённые:
- Игнорирование поправок на инфляцию:
Сравнивать P/E компании в 2020 и 2026 году напрямую бессмысленно — инфляция искажает показатели. Используйте
скорректированное P/E:=B2 / (1 + $InflationRate)^(ГОД(СЕГОДНЯ()) - ГОД(D2))где
D2— дата отчётности,$InflationRate— средняя инфляция за период (например, 0.05 для 5%). - Неучёт выбросов (outliers):
Одна компания с P/E = 100 исказит среднее значение по сектору. Используйте
УРЕЗСРЕДНЕЕвместоСРЗНАЧ, чтобы исключить 10% крайних значений:=УРЕЗСРЕДНЕЕ(B2:B100; 0.1) - Ошибки в формулах массива:
Если вы используете
{=МАКС(ЕСЛИ(...))}, не забывайте нажиматьCtrl+Shift+Enter(в новых версиях Excel это не требуется, но в старых формулы не сработают). - Перегрузка листа данными:
Excel тормозит при работе с более чем 100 000 строк. Разбивайте данные на отдельные листы по секторам или используйте
Power Pivotдля больших массивов.
FAQ: Ответы на частые вопросы
Можно ли сделать скринер для криптовалют в Excel?
Да, но с оговорками. Для криптовалют подойдут те же принципы, но источники данных другие: CoinGecko, CoinMarketCap или API бирж (Binance, Bybit). Главная сложность — высокая волатильность: технические индикаторы (например, RSI) могут давать ложные сигналы. Для крипты лучше добавить фильтры по ликвидности (объём торгов за 24 часа) и доминированию на рынке.
Как обновлять данные в скринере автоматически каждый день?
Настройте Power Query с параметром автообновления:
- Правой кнопкой по запросу →
Свойства. - Поставьте галочку
Обновлять каждыеи выберите интервал (например, 60 минут). - В
Параметры 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:
- Скачайте CSV-файл с последними сделками.
- Добавьте столбец
Инсайдерский индекс:=СЧЁТЕСЛИ(Лист2!A:A; A2), гдеЛист2— данные по сделкам,A2— тикер. - Отфильтруйте акции, где за последний месяц было ≥3 покупок инсайдеров.
Можно ли в Excel рассчитать скользящие средние для технического анализа?
Да, используйте формулу СРЗНАЧ с динамическим диапазоном. Например, для SMA_50 (50-дневная скользящая средняя):
=СРЗНАЧ($C$2:C2; 50)
где C2:C51 — столбец с историческими ценами. Протяните формулу вниз, и она будет автоматически рассчитывать среднее для последних 50 дней. Для EMA (экспоненциальной скользящей) потребуется более сложная формула или VBA.