Модель ценообразования капитальных активов (CAPM) - это известная инвестиционная теория, которая показывает взаимосвязь между ожидаемой доходностью актива и рыночным риском. Под рыночным риском здесь понимается систематический риск, который невозможно диверсифицировать, например процентные ставки, рецессии и войны. Цель CAPM - помочь инвесторам рассчитать норму прибыли, которая может компенсировать рыночный риск.

В этой статье мы будем использовать Python для реализации CAPM. Мы рассчитаем бета - показатель волатильности актива по отношению к рынку в целом. Мы собираемся использовать акции Amazon (AMZN) в качестве примера для реализации CAPM и расчета его бета-версии.

Заявление об ограничении ответственности: цель написания этой статьи - продемонстрировать шаги по реализации CAPM в Python. Он не служит ни для рекламы акций, ни для предоставления каких-либо конкретных рекомендаций по инвестициям.

Необходимые библиотеки Python

  1. yFinance - https://pypi.org/project/yfinance/
  2. Панды - https://pandas.pydata.org/
  3. Statsmodels - https://www.statsmodels.org/stable/index.html
  4. getFamaFrenchFactors - https://pypi.org/project/getFamaFrenchFactors/

Github

Оригинальные полные исходные коды, представленные в этой статье, доступны на моем Github Repo. Не стесняйтесь загрузить его (CAPM_2.py), если хотите использовать его для подписки на мою статью.

Получение данных о запасах

Перед внедрением CAPM мы используем yFinance для получения данных об акциях Amazon. yFinance - это библиотека Python с открытым исходным кодом, которую мы можем использовать для получения данных об акциях от Yahoo Finance бесплатно.

Строка 1–4: Импортировать библиотеку.

Строка 3–4: определите выбранные тикеры в списке и используйте его для получения данных об акциях из Yahoo Finance с помощью функции загрузки . Мы стараемся получить данные об акциях за последние пять лет (с 30 июня 2016 г. по 31 июля 2021 г.).

Внедрение CAPM

Во-первых, давайте посмотрим на формулу CAPM, как показано ниже:

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

1. Расчет ежемесячной доходности акций

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

Строка 1–2: извлеките скорректированные цены закрытия из данных по акциям и измените их выборку с дневных на месячные данные. Последняя цена каждого месяца станет ежемесячной ценой.

Строка 3–4: Используйте функцию pct_change, чтобы вычислить процентную разницу месячной цены по сравнению с предыдущим месяцем. Процентная разница используется в качестве месячной нормы доходности акций. Затем мы используем функцию dropna для удаления любой строки с нулевыми значениями.

Строка 5: переименуйте столбец в «Актив».

2. Оценка безрисковой ставки и рыночной доходности

Безрисковая ставка - это теоретическая норма прибыли без риска потери. С другой стороны, рыночная доходность - это доходность теоретического портфеля всех активов на текущем рынке, где портфель взвешивается по стоимости. Типичным хорошим представителем рыночного портфеля является S&P 500, взвешенный по капитализации индекс 500 крупнейших публично торгуемых компаний США.

Для нашей цели мы получим данные исследования Kenneth R. French, чтобы оценить безрисковую ставку и рыночную доходность. Данные, предлагаемые Кеннетом Р. Френчем, регулярно обновляются и доступны для общественности бесплатно. Он широко используется в многофакторном моделировании. Мы можем либо посетить его веб-сайт, чтобы загрузить данные вручную, либо использовать пакет Python, getFamaFrenchFactors, чтобы автоматически загружать и обрабатывать данные для нас.

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

Строка 1: Используйте функцию famFrench3Factor из пакета gff, чтобы получить данные финансового исследования Кеннета Р. Френча. Мы установили периодичность «м», чтобы данные возвращались ежемесячно.

Строка 2–3: переименуйте столбец даты и установите столбец даты в качестве индекса.

В этой статье мы будем использовать данные только из столбцов «Мкт-РФ» и «РФ». Столбцы «SMB» и «HML» можно игнорировать, поскольку они не применимы к модели CAPM.

Строка 4: объедините данные Кеннета с данными ежемесячной доходности акций.

Строка 5: Мы вычисляем среднее значение ежемесячной безрисковой ставки Кеннета. Среднее значение безрисковой ставки эквивалентно значению «Rf» в формуле CAPM.

Строка 6: Мы вычисляем среднее значение столбца «Mkt-RF» на основе данных Кеннета, и результат эквивалентен «Mkt-RF» в формуле CAPM.

Примечание: выражение «Мкт-РФ» относится к рыночной надбавке. Рыночная премия - это разница между ожидаемой доходностью рыночного портфеля и безрисковой ставкой.

3. Оценка бета-версии

Теперь у нас остался только один нерешенный параметр - бета. Бета - это показатель волатильности ценной бумаги по сравнению с рынком в целом. Это важно, чтобы понять, о чем нам говорит бета-версия:

  • Если бета = 1.0, цена ценной бумаги (например, акции) идеально коррелирует с рынком.
  • Если бета
  • Если бета ›1.0, безопасность более волатильна, чем рынок.

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

Затем мы можем использовать пакет Python Stats для оценки бета-версии.

Строка 1: Мы установили серию «Mkt-RF» от Kenneth’s как значения X.

Строка 2–3: вычтите ежемесячную доходность актива с безрисковой ставкой и установите ее как значения y.

Строка 4: добавьте постоянное значение к серии X.

Строка 5–7. Используйте функцию OLS статистики, чтобы построить линейную модель, загрузив в функцию параметры y и C. Затем отобразите сводку результатов регрессии.

Из итогового результата мы можем найти коэффициент «Mkt-RF» и использовать его в качестве нашего бета-значения. Приведенный выше результат показывает, что это бета 1.0724.

Строка 8: используйте точечную нотацию, за которой следуют параметры, чтобы извлечь бета-значение и сохранить его в переменной.

4. Оценка ожидаемой доходности акций.

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

Строка 1–2: Примените формулу CAPM, чтобы рассчитать ожидаемую доходность от ценных бумаг и отобразить результат.

Строка 3–4: Рассчитайте ожидаемую годовую доходность и отобразите результат.

Ожидаемая ежемесячная и годовая доходность составляет около 1,65% и 19,79% соответственно.

Выводы

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

Надеюсь, вам понравится эта статья.

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

использованная литература

  1. Https://corporatefinanceinstitute.com/resources/knowledge/finance/what-is-capm-formula/
  2. Https://www.investopedia.com/articles/06/capm.asp
  3. Https://www.investopedia.com/investing/beta-know-risk/
  4. Http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html