iqoption

Расчет бета-коэффициентов на R двумя способами

Посчитал беты акций своего инвест. портфеля двумя способами — с помощью пакета PortfolioAnalytics и через линейную регрессию с индексом ММВБ. Результаты расчетов совпали. 

Затем я составил таблицы для бет, взяв две истории — с 2012 года по настоящее время и с 2015.

Таблицы

Расчет бета-коэффициентов на R двумя способами
С 2012 г.

Расчет бета-коэффициентов на R двумя способами
C 2015 г.

Видно, что Роснефть и Норникель бегают за рынком. ФосАгро, Акрон и банк Открытие не зависят от рыночных настроений.

Код на R:

rong>
#install.packages("PortfolioAnalytics")
#install.packages("quantmod")
#install.packages("rusquant", repos="http://R-Forge.R-project.org")

library(PortfolioAnalytics)
library(quantmod)
library(rusquant)

rm(list = ls())
# Очистка среды R от лишних переменных в памяти, если требуется

fund.names <- c("MICEX", "BANE", "ALRS", "TGKA", "GMKN", "RUALR", "PHOR", "AKRN", "ROSN", "OFCB")
# Создаем массив из тикеров, для которых будем получать данные

if ( ! exists("BANE") ) {
  getSymbols(fund.names, src = "Finam", from = "2012-01-01")
  # Получение котировок
}

prices.data <- merge(MICEX[,4], BANE[,4], ALRS[,4], TGKA[,4], GMKN[,4], RUALR[,4], PHOR[,4], AKRN[,4], ROSN[,4], OFCB[,4])
returns.data <- CalculateReturns(prices.data)
returns.data <- na.omit(returns.data)
colnames(returns.data) <- fund.names
# Подготовка данных по ценам закрытия

beta <- CAPM.beta(returns.data$BANE, returns.data$MICEX, Rf = 0)
print(round(beta, 2))
# Расчет беты первым способом,
# через использование встроенной функции пакета PortfolioAnalytics

model <- lm(BANE ~ MICEX, returns.data)
beta <- coef(model)[2]
print(round(beta, 2))
# Расчет беты вторым способом, 
# через построение линейной регрессии между доходностями актива и индекса

betas <- array(1:length(fund.names))
for (i in 1:length(fund.names)) {
  curReturns <- returns.data[,i]
  beta <- CAPM.beta(curReturns, returns.data$MICEX, Rf = 0)
  betas[i] <- round(beta, 2)
}
fund.betas <- data.frame(fund.names, betas)
# Для списка активов получаем бета коэффициенты и сохраняем их в таблицу

ordered.fund.betas <- fund.betas[order(-betas),]
# Сортируем по убыванию бет

View(ordered.fund.betas)
# Отображаем отсортированную таблицу