Модель ценообразования капитальных активов (CAPM) - это известная инвестиционная теория, которая показывает взаимосвязь между ожидаемой доходностью актива и рыночным риском. Под рыночным риском здесь понимается систематический риск, который невозможно диверсифицировать, например процентные ставки, рецессии и войны. Цель CAPM - помочь инвесторам рассчитать норму прибыли, которая может компенсировать рыночный риск.
В этой статье мы будем использовать Python для реализации CAPM. Мы рассчитаем бета - показатель волатильности актива по отношению к рынку в целом. Мы собираемся использовать акции Amazon (AMZN) в качестве примера для реализации CAPM и расчета его бета-версии.
Заявление об ограничении ответственности: цель написания этой статьи - продемонстрировать шаги по реализации CAPM в Python. Он не служит ни для рекламы акций, ни для предоставления каких-либо конкретных рекомендаций по инвестициям.
Необходимые библиотеки Python
- yFinance - https://pypi.org/project/yfinance/
- Панды - https://pandas.pydata.org/
- Statsmodels - https://www.statsmodels.org/stable/index.html
- 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. Спасибо за вашу поддержку.