library(quantmod)
## Warning: пакет 'quantmod' был собран под R версии 4.2.1
## Загрузка требуемого пакета: xts
## Загрузка требуемого пакета: zoo
## 
## Присоединяю пакет: 'zoo'
## Следующие объекты скрыты от 'package:base':
## 
##     as.Date, as.Date.numeric
## Загрузка требуемого пакета: TTR
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(PerformanceAnalytics)
## 
## Присоединяю пакет: 'PerformanceAnalytics'
## Следующий объект скрыт от 'package:graphics':
## 
##     legend
library(PortfolioAnalytics)
## Загрузка требуемого пакета: foreach
library(dplyr)
## 
## Присоединяю пакет: 'dplyr'
## Следующие объекты скрыты от 'package:xts':
## 
##     first, last
## Следующие объекты скрыты от 'package:stats':
## 
##     filter, lag
## Следующие объекты скрыты от 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
library(ggplot2)
## Warning: пакет 'ggplot2' был собран под R версии 4.2.1
IMOEX <- quantmod::getSymbols("IMOEX.ME", from = "2013-01-01", to = "2022-09-01", auto.assign = FALSE)
## Warning: IMOEX.ME contains missing values. Some functions will not work if
## objects contain missing values in the middle of the series. Consider using
## na.omit(), na.approx(), na.fill(), etc to remove or replace them.
SP <- quantmod::getSymbols("^GSPC", from = "2013-01-01", to = "2022-09-01", auto.assign = FALSE)

shares_data2 <- merge(IMOEX$IMOEX.ME.Close, SP$GSPC.Close)
return_data3 <- na.omit(Return.calculate(shares_data2))
colnames(return_data3) <- c("IMOEX", "S&P")
return_data3 <- as.data.frame(return_data3)
return_data3$time <- as.Date(rownames(as.data.frame(return_data3)))

return_data4 <- as.data.frame(return_data3) %>% pivot_longer(cols = "IMOEX":"S&P", names_to = "Market_index", values_to = "Values")

ggplot(data = return_data4, aes(x = time, y = Values, color = Market_index)) + geom_line() + scale_color_manual(values = c("darkblue", "lightblue")) + theme_bw()

Return.annualized(na.omit(Return.calculate(IMOEX$IMOEX.ME.Close)))
##                   IMOEX.ME.Close
## Annualized Return       0.043407
Return.annualized(na.omit(Return.calculate(SP$GSPC.Close)))
##                   GSPC.Close
## Annualized Return  0.1085428
sd.annualized(na.omit(Return.calculate(IMOEX$IMOEX.ME.Close)))
##                               IMOEX.ME.Close
## Annualized Standard Deviation      0.2385378
sd.annualized(na.omit(Return.calculate(SP$GSPC.Close)))
##                               GSPC.Close
## Annualized Standard Deviation  0.1727891
#Лукойл
LKOH <- quantmod::getSymbols("LKOH.ME", from = "2000-01-01", to = "2022-09-01", auto.assign = FALSE)
## Warning: LKOH.ME contains missing values. Some functions will not work if
## objects contain missing values in the middle of the series. Consider using
## na.omit(), na.approx(), na.fill(), etc to remove or replace them.
LKOH1 <- quantmod::getSymbols("LKOH.ME", from = "2020-01-01", to = "2022-09-01", auto.assign = FALSE)
## Warning: LKOH.ME contains missing values. Some functions will not work if
## objects contain missing values in the middle of the series. Consider using
## na.omit(), na.approx(), na.fill(), etc to remove or replace them.
LKOH_return <- Return.calculate(LKOH$LKOH.ME.Close)
LKOH_return1 <- Return.calculate(LKOH1$LKOH.ME.Close)

LKOH_return <- as.data.frame(na.omit(LKOH_return))
LKOH_return$date <- as.Date(rownames(LKOH_return))
colnames(LKOH_return)[1] <- "Return"

LKOH_return1 <- as.data.frame(na.omit(LKOH_return1))
LKOH_return1$date <- as.Date(rownames(LKOH_return1))
colnames(LKOH_return1)[1] <- "Return"

ggplot(data = LKOH_return, aes(y = Return, x = date)) + geom_line(color = "darkblue", size = 1) + theme_bw() + ggtitle("Lukoil Stock Returns in 2000-2022 years") + ylab("Returns") + xlab("")

ggplot(data = LKOH_return1, aes(y = Return, x = date)) + geom_line(color = "purple", size = 1) + theme_bw() + ggtitle("Lukoil Stock Returns in 2020-2022 years") + ylab("Returns") + xlab("")