Блог им. Zmey56

Использование API Fmp Cloud для отбора акций по дивидендам на Nasdaq с помощью Python

    • 21 марта 2021, 20:02
    • |
    • Zmey56
  • Еще

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

Что такое дивидендная доходность?

Возьму определение из Википедии. Дивиде́ндная дохо́дность (англ. dividend yield) — это отношение величины годового дивиденда на акцию к цене акции. Данная величина выражается чаще всего в процентах.

Пример

При цене акции ОАО «Лукойл» 1124,37 рублей и дивиденде 28 рублей на акцию дивидендная доходность будет равна:

Использование API Fmp Cloud для отбора акций по дивидендам на Nasdaq с помощью Python
Так же необходимо обратить внимание, что многие растущие компании, такие как для примера Amazon и Yandex, не выплачивают дивиденды, поскольку они реинвестируют всю прибыль в развитие бизнеса. Поэтому дивидендная доходность для этих фирм будет равна нулю.

Расчет дивидендной доходности с помощью Python

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

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

import requests

demo = 'Ваш API CODE'

tickers = requests.get(f'https://fmpcloud.io/api/v3/symbol/available-nasdaq?apikey={demo}')

tickers = tickers.json()
symbols = []
for ticker in tickers:
    symbols.append(ticker['symbol'])
После необходимо пройтись по полученному списку акций и получить финансовую информацию по компании. Так же необходимо понимать, что получаем только последние данные, а не за все время существование компании.

DivYield = {}
for company in symbols:
  try:
    companydata = requests.get(f'https://fmpcloud.io/api/v3/profile/{company}?apikey={demo}')
    companydata = companydata.json()
    latest_Annual_Dividend = companydata[0]['lastDiv']
    price = companydata[0]['price']
    market_Capitalization = companydata[0]['mktCap']
    name = companydata[0]['companyName']
    exchange = companydata[0]['exchange']

    dividend_Yield= latest_Annual_Dividend/price
    DivYield[company] = {}
    DivYield[company]['Dividend_Yield'] = dividend_Yield
    DivYield[company]['latest_Price'] = price
    DivYield[company]['latest_Dividend'] = latest_Annual_Dividend
    DivYield[company]['market_Capit_in_M'] = market_Capitalization/1000000
    DivYield[company]['company_Name'] = name
    DivYield[company]['exchange'] = exchange
  except:
    pass
Сбор данных может занять значительное по продолжительности время. После их можно представить в виде отсортированного DataFrame, где сверху будут акций с высокой дивидендной доходностью.

import pandas as pd
DivYield_dataframe = pd.DataFrame.from_dict(DivYield, orient='index')

DivYield_dataframe = DivYield_dataframe.sort_values(['Dividend_Yield'], ascending=[False])
DivYield_dataframe.head(15)

Использование API Fmp Cloud для отбора акций по дивидендам на Nasdaq с помощью Python

Анализ полученного результата и заключение

Предварительно проведем расчет средней дивидендной доходности по акциям которые платят дивиденды:

meanDivNasdaq = DivYield_dataframe[DivYield_dataframe['Dividend_Yield']>0]['Dividend_Yield'].mean()
print("Средняя дивидендная доходность по рынку Nasdaq равна ", "{:.2%}".format(meanDivNasdaq))
Средняя дивидендная доходность по рынку Nasdaq равна  2.80%

Самой высокой дивидендной доходностью в полученных результатах у акций компании Triumph Bancorp Inc — 21,57%. Но необходимо быть осторожным при выборе компаний по данному показателю, так как он может являться результатом падения цены акций и как следствия ростом дивидендной доходности. Правда не в этом случае. Так же выплата высоких дивидендов может не сохраниться в будущем, тем более если у компании возникнут финансовые проблемы.

Основной смысл в следующем — анализ дивидендной доходности не должен быть единственным критерием. Я для одного из своих портфелей так же смотрю: EPS, EBITDA, FCF, срок выплаты дивидендов, капитализация компании, чистая рентабельность (отношение выручки к прибыли) и коэффициент Net Debt/EBITDA.

Но как говориться — все вышеприведенное не является инвестиционной рекомендацией и выбор остается за каждым самостоятельно.

★11
8 комментариев
Спасибо!
Только начинаю знакомство с американским рынком и как раз подумывал выбрать дивидендные компании, а тут еще и с Питоном интересное упражнение.
avatar
Доходность, ваще-та, определяется из расчета "%% годовых".
Это означает, что в формуле про дивы Лукойла не хватает коэффициента приведения к году, а точнее — к периоду получения денег.
Правильный расчет покажет, что, если указанная в формуле цена продержится до дня, скажем, отстоящего 1 месяц до даты выплаты, а фактическое поступление денег Вам на счет — через 1 месяц от начала выплат, то процентная ставка дивидендной доходности равна 2,49%/2*12 = 14,94% годовых.
Вот что считать нужно! Тогда будет понятно, какая цена должна быть в какой день до даты выплаты. Отсюда легко будет понятно, покупать ли бумагу или продавать.
avatar
Eugene Bright, а поподробнее можно про логику расчета? ).
Хочу, например, купить акцию Черкизово для дивидендов. Как мне определить, брать ее или нет?
Врач-бондиатОр, когда-то (помнится, в 1996 году), сдавая экзамен на Аттестат МФ 1-й категории, я уяснил, что считать доходность инвестиции нужно именно так, как я написал выше, т.е. с учетом предполагаемого срока получения дохода.
Для акций Черкизова, в частности (хотя это справедливо для всех купонов, дивидендов, дисконтных доходов и т.п. без учета НДФЛ), нужно посчитать так:

Д, %% годовых = (ЦенаПродажи — ЦенаПокупки + ОценкаДивиденда)/ЦенаПокупки*12мес/СрокИнвестиции*100%
Отсюда можно посчитать дивгэп, кстати.

Если продажа не предусмотрена, то из числителя убираем (ЦенаПродажи — ЦенаПокупки).

Я не слежу за этим эмитентом и поэтому не знаю ни текущей цены, ни сумму предполагаемых дивидендов, ни порядка (даты отсечки под дивы, сроки выплат), поэтому не могу посчитать, извините.
avatar
Eugene Bright, а когда продавать можно? Ведь дивидендный гэп может в теории и через год закрыться? Или это риск инвестора?
Врач-бондиатОр, зачем ждать год?
Если Вы считаете, что текущая доходность Вашего портфеля составляет ХХХ% годовых, и это — очень хорошо, то берете её, подставляете в формулу доходности и получаете соотношение цен «покупки/продажи». Дело в том, что большинство желает хапнуть с рынка всё и поэтому не получает ничего. Вы же можете определить комфортную разницу между покупкой и продажей, дающую удовлетворительную доходность. Ну, а всё, что сверх того, — Ваша премия.
Распространенный расчет дивгэпа (цена — дивиденд) — это самая грубая оценка. В реальности на рынке крупные игроки забирают годовую доходность. Ведь именно её можно сравнить и с доходностью депозитов, и с доходностью госбумаг.
avatar
у автора похоже формула текущей доходности облигации
Не обращайте внимания на критику. Дивидендную доходность Вы определяете правильно. Ее не надо приводить к годовым величинам, как здесь рекомендуют. С другой стороны, ожидаемая доходность от инвестиции, о которой здесь пишут, может быть гораздо полезнее пни принятии решени. Высокая див.доходность сама по себе не означает высокую привлекательность инвестиции и отбирать акции в портфель только по этому критерию неразумно.
avatar

теги блога Zmey56

....все тэги



UPDONW