Блог им. empenoso

CAN SLIM, Баффетт и Weiss на практике: можно ли повторить стратегии гуру с помощью своего скринера?

Хочу поделиться своим опытом разработки скринера и бектестера для анализа акций на основе фундаментальных данных. Это не только автоматизация, но и способ глубже разобраться в инвестиционных стратегиях, которые можно заложить в алгоритм.

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

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

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

Буду использовать для анализа сразу два рынка: США и РФ.

  • США: здесь торгуется более 10 тысяч компаний, а объем открытых данных позволяет глубже изучать инвестиционные стратегии.

  • РФ: рынок значительно меньше (всего несколько сотен компаний), но, поскольку мы живем здесь, он остается актуальным для анализа и инвестиций.

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

CAN SLIM, Баффетт и Weiss на практике: можно ли повторить стратегии гуру с помощью своего скринера?


Обложился книгами

Обзор книжных стратегий от Американской ассоциации частных инвесторов

Американская ассоциация частных инвесторов (AAII) — это независимая некоммерческая организация, которая помогает частным инвесторам принимать обоснованные решения. Она предлагает исследования, аналитические материалы и инструменты, включая формализованные наборы готовых стратегий по книгам известных инвесторов. У них это называется Guru Screens и это подборка из 42 инвестиционных стратегий.

Хотя Guru Screens позволяют применять стратегии на практике, нет единого толкования книжной стратегии и конечно требуется адаптации к современным реалиям.

Я выбрал пять стратегий, основанных на трудах известных инвесторов:

  • Weiss Blue Chip Div Yield – ориентирована на дивидендные акции крупных компаний.

  • Lakonishok – стратегия, основанная на стоимостном инвестировании.

  • Wanger (Revised) – фокусируется на малых компаниях с потенциалом роста.

  • O'Neil's CAN SLIM Revised 3rd Edition – сочетает фундаментальный и технический анализ.

  • Buffett: Hagstrom – следует принципам Уоррена Баффетта, отбирая недооцененные компании с высоким потенциалом.

Weiss Blue Chip Div Yield

CAN SLIM, Баффетт и Weiss на практике: можно ли повторить стратегии гуру с помощью своего скринера?


Стратегия Weiss Blue Chip Div Yield фокусируется на инвестициях в «голубые фишки» с высокими дивидендами. Разработана Джеральдин Вайсс, известной как «первая леди дивидендного инвестирования». Стратегия основана на выборе недооцененных компаний с высокой дивидендной доходностью, стабильным ростом дивидендов и сильной финансовой надежностью.

Критерии стратегии:

  1. Только крупные американские компании (blue chips).

  2. Дивиденды:

    • Выплаты не менее 25 лет.

    • Рост дивидендов в 5 из последних 12 лет.

    • Коэффициент выплат ≤ 20%.

  3. Финансовая устойчивость:

    • Отношение долга к капиталу ≤ 20% (коммунальные компании — 50%).

    • Текущая ликвидность > 2.

    • Рост EPS в 7 из последних 12 лет.

  4. Оценка стоимости: Продажа при снижении дивидендной доходности до минимума или ухудшении финансов.

Я настроил критерии на скринере finviz.com.

Допущения: без истории и рейтингов, только текущий момент.

Lakonishok

CAN SLIM, Баффетт и Weiss на практике: можно ли повторить стратегии гуру с помощью своего скринера?


Стратегия Lakonishok ориентирована на поиск недооцененных компаний, которые временно не пользуются популярностью у инвесторов, но демонстрируют признаки роста. Основная идея заключается в том, что рынок часто переоценивает «звездные» акции и недооценивает компании, которые испытывали трудности, но начинают восстанавливаться. Метод основан на анализе четырех ключевых мультипликаторов, а также динамики цены и прогнозов аналитиков.

Для отбора акций используются следующие параметры:

  • Цена акции ниже средних значений по отрасли по одному из показателей: P/B, P/CF, P/E или P/S.

  • Относительная сила за 6 месяцев > 0 (признак роста).

  • Относительная сила за 3 месяца > 0 (дополнительное подтверждение роста).

  • Положительный сюрприз прибыли (разница между фактическими и прогнозными показателями).

  • Рост консенсус-прогноза аналитиков за последние 6 месяцев.

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

Я настроил критерии на скринере finviz.com.

Допущения: выбраны не верхние проценты по рынку, а заданы фиксированные значения.

Wanger (Revised)

CAN SLIM, Баффетт и Weiss на практике: можно ли повторить стратегии гуру с помощью своего скринера?


Стратегия Wanger (Revised), впервые представленная в 1997 году, направлена на снижение рисков при инвестировании в акции малых компаний. Ее ключевой принцип — поиск динамично развивающихся компаний с устойчивыми финансовыми показателями, высоким потенциалом роста прибыли и разумной оценкой. Подход ориентирован на долгосрочное инвестирование и позволяет находить перспективные активы среди компаний с малой капитализацией, избегая завышенно оцененных и нестабильных бизнесов.

Критерии стратегии

  • Рыночная капитализация: от $100 млн до $2 млрд.

  • Рост прибыли: ожидаемый рост не менее 15% в год на ближайшие 5 лет.

  • Оценка: P/E < 30, P/S < 3.

  • Финансовая устойчивость: долг/собственный капитал < 1, текущая ликвидность > 1.

Я настроил критерии на скринере finviz.com.

O'Neil's CAN SLIM Revised 3rd Edition

CAN SLIM, Баффетт и Weiss на практике: можно ли повторить стратегии гуру с помощью своего скринера?


Методология CAN SLIM, разработанная Уильямом О’Нилом, сочетает фундаментальный и технический анализ для выявления акций с наибольшим потенциалом роста. Эта стратегия ориентирована на быстрорастущие компании, которые уже демонстрируют высокие показатели доходности. Она учитывает не только финансовые показатели, но и рыночные тенденции, что делает ее одной из самых популярных среди частных инвесторов.

Критерии стратегии:

  • Текущие доходы: рост прибыли за три года — не менее 25%.

  • Годовая прибыль: квартальный рост прибыли — минимум 25%.

  • Инновации: наличие новых продуктов или услуг, способных стимулировать рост.

  • Спрос и предложение: высокая институциональная заинтересованность и относительная сила.

  • Рыночное лидерство: инвестиции в компании-лидеры отрасли.

  • Тренд рынка: покупки только в условиях общего бычьего тренда.

Я настроил критерии на скринере finviz.com.

Buffett: Hagstrom

CAN SLIM, Баффетт и Weiss на практике: можно ли повторить стратегии гуру с помощью своего скринера?


Эта стратегия основана на принципах инвестирования Уоррена Баффетта, описанных в книге Роберта Хагстрома. Она ориентирована на поиск недооцененных компаний с устойчивым ростом, высокой рентабельностью и разумной долговой нагрузкой. В отличие от краткосрочного трейдинга, подход Баффетта предполагает долгосрочное владение качественными активами.

Критерии стратегии:

  • ROE: минимум 15% – отражает эффективность управления капиталом.

  • Рост прибыли на акцию: минимум 10% – показатель устойчивого развития.

  • Соотношение долга к капиталу: не более 50% – ограничение финансовых рисков.

  • P/E: не выше 20 – избежание переоцененных активов.

Я настроил критерии на скринере finviz.com.

Краткие выводы по стратегиям от гуру

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

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

И конечно надо проверить заинтересовавшую вас стратегию на истории — как выборки составленные в прошлом показывали результаты в настоящем.

Для этого я и хочу написать свой скринер и бэктестер.

Выбор самых важных параметров для оценки акций

Это моя субъективная оценка, разбито по категориям как в скринере Яху Финанс:

1. Market Data (рыночные данные)

  • Price (End of Day) — цена на конец дня

  • Market Cap (Market Capitalization) – рыночная капитализация
    Общая стоимость компании на фондовом рынке, определяется как цена акции × количество акций.

2. Ratios (финансовые коэффициенты)

Эти коэффициенты помогают инвесторам оценить стоимость компании и её финансовую устойчивость.

  • ROA (Return on Assets) – Рентабельность активов
    Показывает, насколько эффективно компания использует свои активы для получения прибыли.
    🟰 > 5%: эффективно использующая свои активы компания должна генерировать не менее 5% прибыли. Низкий ROA может означать плохое использование активов или неэффективную деятельность.

  • ROE (Return on Equity) – Рентабельность собственного капитала
    Оценивает прибыльность компании относительно её собственного капитала.
    🟰 > 10%, в идеале > 15%: более высокий ROE показывает, что компания эффективно генерирует прибыль из акционерного капитала.

  • Debt/Equity (Debt-to-Equity Ratio) – Коэффициент долг/капитал
    Соотношение общего долга к собственному капиталу.
    🟰 < 1, в идеале < 0,5: более низкий коэффициент указывает на то, что компания не слишком полагается на заемные средства для финансирования операций, что снижает финансовый риск. Компании с D/E > 1 имеют высокую долговую нагрузку, что может быть рискованно в условиях роста процентных ставок.

  • Current Ratio – Коэффициент текущей ликвидности
    Показывает способность компании погашать краткосрочные обязательства.
    🟰1,5 – 3: гарантирует, что компания может выполнить свои краткосрочные обязательства. Коэффициент ниже 1,5 может указывать на проблемы с ликвидностью, тогда как коэффициент выше 3 может указывать на неэффективное распределение капитала.

  • Gross Profit Margin – Валовая рентабельность
    Доля валовой прибыли в выручке компании. Чем выше, тем эффективнее производство.
    🟰> 30%: более высокая валовая маржа означает, что у компании сильная ценовая политика и эффективность затрат. Это указывает на конкурентное преимущество в производстве или услугах.

  • Dividend Yield – Дивидендная доходность
    Процент дивидендов к цене акции. Чем выше, тем больше компания платит акционерам.
    🟰 > 2%, но < 8%: умеренная дивидендная доходность обеспечивает доход. Чрезвычайно высокая дивидендная доходность в долларах (> 8%) может указывать на падение цены акций из-за бизнес-рисков.

3. Financials — Income Statement (финансовые показатели – Отчёт о прибылях и убытках)

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

  • EPS Growth (Earnings Per Share Growth) – Рост прибыли на акцию
    Показывает рост прибыли на акцию по сравнению с предыдущим периодом.
    🟰> 10% год за годом: растущие прибыли указывают на здоровый и расширяющийся бизнес. Компании с постоянным ростом EPS привлекают инвесторов и оправдывают более высокую оценку с течением времени.

  • Sales Growth (Revenue Growth) – Рост выручки
    Изменение выручки компании по сравнению с прошлым периодом. Высокий рост указывает на развитие компании.
    🟰5% год за годом: стабильный рост выручки поддерживает долгосрочную устойчивость бизнеса. Если выручка стагнирует или снижается, рост EPS может быть неустойчивым.

  • Operating Margin (Operating Profit Margin) – Операционная рентабельность
    Процент выручки, остающийся после вычета операционных расходов (зарплаты, аренда, амортизация и т.д.).
    🟰> 10%, в идеале > 15%: более высокая операционная маржа указывает на эффективную работу и лучший контроль над расходами. Она также обеспечивает подушку безопасности во время экономических спадов.

  • Net Profit Margin – Чистая рентабельность
    Процент выручки, остающийся после вычета всех расходов, включая налоги и проценты.
    🟰> 10%, в идеале > 15%: высокая чистая маржа показывает сильную прибыльность после учета всех расходов, включая проценты и налоги.

4. Valuation (оценка компании)

Раздел оценивает эффективность использования активов и капитала.

  • P/E (Price-to-Earnings Ratio) – Коэффициент цена/прибыль
    Показывает, во сколько раз цена акции превышает прибыль на акцию (EPS).
    🟰< 15 (в идеале от 8 до 12): более низкий P/E предполагает, что акции недооценены относительно их прибыли. P/E < 5 может сигнализировать о финансовых трудностях, тогда как P/E > 20 может указывать на переоценку компании.

  • P/B (Price-to-Book Value Ratio) – Коэффициент цена/балансовая стоимость
    Отношение рыночной цены акции к балансовой стоимости компании.
    🟰< 1,5, в идеале < 1: P/B ниже 1 предполагает, что акция торгуется ниже своей балансовой стоимости, что указывает на потенциальную недооценку. Однако акции с низким P/B могут быть и в отраслях, находящихся в упадке.

  • P/S (Price-to-Sales Ratio) – Коэффициент цена/выручка
    Соотношение рыночной капитализации к выручке компании.
    🟰< 2, в идеале < 1: более низкий P/S означает, что выручка компании не переоценена рынком.

  • Price/Cash (Price-to-Cash Flow Ratio, P/CF) – Цена к денежному потоку
    Показывает, сколько инвесторы платят за каждый доллар денежных потоков компании.
    🟰< 10: более низкий P/CF означает, что инвесторы платят меньше за каждый доллар денежного потока, что делает акции более привлекательными.

API для поиска фундаментальных данных по России

Получение фундаментальных данных по российскому фондовому рынку — непростая задача, поскольку доступных API значительно меньше, чем для американских акций. Тем не менее, существует несколько источников, которые можно использовать для автоматизации анализа.

T-Invest API https://russianinvestments.github.io/investAPI/swagger-ui/#/

T-Invest API предоставляет данные о российских акциях, включая фундаментальные показатели. Но выдаёт только текущие — истории нет, для скринера это АПИ не подходит.

Запрос: /tinkoff.public.invest.api.contract.v1.InstrumentsService/GetAssetFundamentals

Пример ответа:

<code class="json">GetAssetFundamentalsResponse(fundamentals=[
StatisticResponse(asset_uid='40d89385-a03a-4659-bf4e-d3ecba011782',
currency='RUB',
market_capitalization=6878249241240.0,
high_price_last_52_weeks=330.45,
low_price_last_52_weeks=219.2,
average_daily_volume_last_10_days=65639361.43,
average_daily_volume_last_4_weeks=60348494.76,
beta=0.8,
free_float=0.48,
forward_annual_dividend_yield=0.0,
shares_outstanding=21586948000.0,
revenue_ttm=8676400000000.0,
ebitda_ttm=0.0,
net_income_ttm=1580300000000.0,
eps_ttm=73.21,
diluted_eps_ttm=0.0,
free_cash_flow_ttm=0.0,
five_year_annual_revenue_growth_rate=0.0,
three_year_annual_revenue_growth_rate=33.48,
pe_ratio_ttm=4.35,
price_to_sales_ttm=0.79,
price_to_book_ttm=0.96,
price_to_free_cash_flow_ttm=0.0,
total_enterprise_value_mrq=0.0,
ev_to_ebitda_mrq=0.0,
net_margin_mrq=0.0,
net_interest_margin_mrq=0.0,
roe=23.36,
roa=2.81,
roic=0.0,
total_debt_mrq=0.0,
total_debt_to_equity_mrq=0.0,
total_debt_to_ebitda_mrq=0.0,
free_cash_flow_to_price=0.0,
net_debt_to_ebitda=0.0,
current_ratio_mrq=0.0,
fixed_charge_coverage_ratio_fy=0.0,
dividend_yield_daily_ttm=10.45,
dividend_rate_ttm=33.3,
dividends_per_share=33.3,
five_years_average_dividend_yield=8.36,
five_year_annual_dividend_growth_rate=0.0,
dividend_payout_ratio_fy=45.49,
buy_back_ttm=0.0,
one_year_annual_revenue_growth_rate=55.49,
domicile_indicator_code='',
adr_to_common_share_ratio=0.0,
number_of_employees=0.0,
ex_dividend_date=datetime.datetime(2024,7,11,0,0,tzinfo=datetime.timezone.utc),
fiscal_period_start_date=datetime.datetime(1970,1,1,0,0,tzinfo=datetime.timezone.utc),
fiscal_period_end_date=datetime.datetime(1970,1,1,0,0,tzinfo=datetime.timezone.utc),
revenue_change_five_years=181.25,
eps_change_five_years=87.02,
ebitda_change_five_years=0.0,
total_debt_change_five_years=0.0,
ev_to_sales=0.0)])</code>

FinanceMarker.ru API https://financemarker.ru/api/swagger-ui/

Для частных лиц только 400 запросов в день.

Исторический период, по основной отчетности с 2012 года.

Гранулярность данных зависит от частоты выпущенных компанией отчетов, если компания выпускает отчетность по квартально – то квартал, по полугодиям, то полугодие. По РСБУ отчетности – чаще всего квартал. Это относится к категории – reports.
Мультипликаторы (ratios) рассчитываются только в годовом значении и ТТМ (последние 12 месяцев и текущая капитализация).

Запрос: /fm/v2/stocks/{exchange}:{code} Получить данные по компании

Пример ответа:

<code class="json">"capex_revenue": 10.74,
"capital": 18483,
"changed_at": "2025-03-13T03:35:17",
"code": "TATN",
"current_ratio": 0.93,
"debt_equity": 0.63,
"debt_ratio": 0.39,
"debtebitda": 0.1,
"dpr": null,
"ebitda_margin": 22.43,
"ev_ebit": 4.18,
"evebitda": 3.59,
"evs": 0.81,
"exchange": "MOEX",
"gross_margin": null,
"interest_coverage": 14.79,
"month": 6,
"net_margin": 15.29,
"net_working_capital": 0.93,
"netdebt_ebitda": -0.19,
"operation_margin": 20.89,
"pbv": 1.25,
"pcf": 3.75,
"pe": 5.52,
"period": "YTM",
"pfcf": 7.14,
"pffo": null,
"ps": 0.85,
"roa": 13.75,
"roce": 25.03,
"roe": 22.48,
"roic": 20.85,
"ros": 19.28,
"type": "МСФО",
"year": 2024</code>

RU Data от Интерфакс dh2.efir-net.ru/swagger/index.html

Не уверен что частное лицо может подключиться.

Вот ссылка-описание: https://rudata.info/rd-api

Conomy DATA conomy.ru/partnership/api

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

Вот ссылка-описание: https://conomy.ru/partnership

Я писал на указанную ими почту и мне ничего не ответили за две недели.

TradingView

CAN SLIM, Баффетт и Weiss на практике: можно ли повторить стратегии гуру с помощью своего скринера?


ROE и SMA200 через Pine

Как ни странно, но сюда похоже ещё можно отнести сервис TradingView, который включает базовые показатели и основные строки из отчетности. У них есть свой язык программирования Pine. Этот язык используется для создания собственных индикаторов и стратегий. График может отображать почти любые строки из отчетности или макроэкономические показатели. Вот ссылка на справку и синтаксис как правильно писать.

А с помощью Pine скрипта можно составить индикаторы, которые отобразят ROE компании и SMA200.

Изменение ROE в отдельной панели:

<code class="javascript">// Михаил Шардин, https://shardin.name/
//@version=6
indicator("ROE History", overlay=false)

// Получение ROE
roe = request.financial(syminfo.tickerid, 'RETURN_ON_EQUITY', 'FQ')

// Plot ROE на отдельной панели
plot(roe, title="ROE", color=roe > 15 ? color.green : color.red, linewidth=2)

// Добавление горизонтальных линий для визуальной индикации
hline(0, title="Нулевая линия", color=color.gray, linestyle=hline.style_dashed)
hline(15, title="Порог ROE 15%", color=color.green, linestyle=hline.style_dashed)

// Цветовая индикация
bgcolor(roe > 15 ? color.new(color.green, 90) : color.new(color.red, 90))</code>

SMA200 и бирки с отметками о ROE:

<code class="javascript">// Михаил Шардин, https://shardin.name/
//@version=6
indicator("ROE с SMA200", overlay=true)

// Получение ROE
roe = request.financial(syminfo.tickerid, 'RETURN_ON_EQUITY', 'FQ')

// Расчет SMA200 на основе цены закрытия
sma200 = ta.sma(close, 200)

// Визуализация SMA200 на графике
plot(sma200, color=color.red, linewidth=2, title="SMA200")

// Переменная для отслеживания предыдущего значения ROE
var float previousRoe = na

// Функция создания метки ROE
create_roe_label(float currentRoe) =>
    label.new(x = bar_index, y = high + high * 0.05, text = "ROE (FY): " + str.tostring(currentRoe, "#.##") + "%", color = currentRoe > 15 ? color.green : color.red, style = label.style_label_down,textcolor = color.white)

// Создание метки при изменении ROE
if (not na(roe) and (na(previousRoe) or math.abs(roe - previousRoe) > 0.01))
    create_roe_label(roe)
    previousRoe := roe

// Цветовая индикация графика
bgcolor(roe > 15 ? color.new(color.green, 90) : color.new(color.red, 90))</code>

Знаете ещё какие-нибудь API по России?

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

Заключение

Фундаментальный анализ выявляет недооцененные компании с сильными финансовыми показателями, что критично для долгосрочных инвестиций.

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

Комбинация обоих подходов повышает точность решений: фундаментальные данные дают «что покупать», технические — «когда покупать».

Автор: Михаил Шардин
🔗 Моя онлайн-визитка
📢 Telegram «Умный Дом Инвестора»

9 апреля 2025 г.

★4
9 комментариев
Работа проделана большая. Но могла быть и лучше. 
Хотелось бы увидеть графики в лог. масштабе,
оценки риска (хотя бы график макс. дд),
пару слов о влиянии ошибки выжившего,
сравнение с финрезами фондов под управлением авторов стратегий. 
Подозреваю, что с авторами выйдет не гладко. 



avatar
Там на картинке видно ну прям все жульничество...
Сравнивается обычный сипи с стратегией рекапитализацией %…
avatar
ves2010, скриншоты по стратегиям с сайта American Association of Individual Investors

Михаил Шардин, кстати ...
насчет скринера финвиза...

очень просто ну прям все… с твоими настройками 58 бумаг из них растут т.е больше сма200 на дневках всего 16штук… 27%

в том же сипи500 500 бумаг из них растут 88… т.е 17.6%

т.е что то вроде похожего на альфу есть 
но проблема в том что  половина 23 штуки этих акций не американские… так зачем сравнивать с американским индексом?

причем из растущих 16 бумаг 10 не американские...

теперь по капитализации — из 58 бумаг 40шт средней малой и микро капитализации… и сравнивать с гигантами индекса сипи тоже сомнительно 

avatar
ves2010, спасибо, по делу

Михаил Шардин, зацени компашку из скринера )))

finviz.com/quote.ashx?t=PSHG&ty=c&p=m&b=1 

avatar

ves2010, вообще моя идея совместить фундаментальный и теханализ — это позволит избежать такого выбора.

Проще всего на текущий момент для исследований выглядит решение через Pine Script в TradingView

Михаил Шардин, да… тема гуд… есть книжка про это Сперандео… трейде вик… но у него первична техническая картинка… т.к фундаментал может игнорироваться долгое время…

т.е сначала он ищет характерный паттерн на графике = сломанный тренд с двойной вершиной или аналогичное дно… а затем лезет в фундаментал
avatar

теги блога Михаил Шардин

....все тэги



UPDONW
Новый дизайн