Блог им. SciFi
# ПОИСК АКЦИЙ ДЛЯ ИНВЕСТИРОВАНИЯ ПО КРИТЕРИЮ ДОХОДНОСТЬ И РИСК #install.packages("tseries") # Установка пакета tseries (анализ временных рядов и количественные финансы) #install.packages("rusquant", repos="http://R-Forge.R-project.org") # Установка пакета rusquant (адаптированная под Россию версия quantmod) library(tseries) library(rusquant) # Подключение библиотек Tikers <- read.csv('market80.csv', header = TRUE, sep = ";") # Читаем из файла тикеры акций # Файл с тикерами акций получаем с сайта ММВБ http://moex.com/s1163 assetsName <- as.character(Tikers[,1]) # Сохраняем названия тикеров в отдельную переменную для удобства system.time(getSymbols(assetsName, from='2016-01-01', to=Sys.Date(), src='Finam')) # Загружаем данные по тикерам c Финам # Замеряем сколько на загрузку потребовалось времени в секундах for (i in 1:length(assetsName)) { ifelse ( i==1, returns <- dailyReturn(eval(parse(text=assetsName[1]))), returns <- cbind(returns,dailyReturn(eval(parse(text=assetsName[i])))))} # Сохраняем в отдельную таблицу доходность каждого дня для каждого тикера names(returns) <- as.character(Tikers[,1]) # Присваиваем новые названия колонок stat.data <- as.data.frame( t(sapply(returns, function(cl) list(means=mean(cl,na.rm=TRUE), sds=sd(cl,na.rm=TRUE))))) # Получаем среднюю доходность и стандартное отклонение, сохраняем в отдельную таблицу stat.data <- as.data.frame(lapply(stat.data, unlist)) # Убираем список, который образовался на предыдущем этапе attach(stat.data) # Прицепляем таблицу для короткого доступа к данным newdata <- stat.data[order(-means, sds),] # Сортируем по убыванию мат. ожидания доходности и возрастанию ср.-кв. отклонения newdata.subset <- subset(newdata, means > 0.002 & sds < 0.02) # Оставляем только те активы, доходность которых выше требуемого нам значения, а # отклонение ниже. View(newdata.subset) # Визуализируем полученную таблицу detach(stat.data) # Отцепляем таблицу candleChart(BANE) # Строим свечной график интересующей нас акции из списка addEMA(20, col="green") # Добавляем индикатор EMA(20) addCCI() # Добавляем индикатор CCI