Cleaning Environment

rm(list=ls())
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(pdfetch)
## Warning: package 'pdfetch' was built under R version 4.2.2
library(ggplot2)

Fetching Nifty data from Yahoo

NSE_Nifty = pdfetch_YAHOO("^NSEI", from = "2013-01-01", to = "2022-12-31") %>% data.frame() %>% tibble::rownames_to_column("date") %>% select(date,contains(".open"),contains(".close"))

NSE_Nifty = NSE_Nifty %>% mutate(Year = format(as.Date(NSE_Nifty$date, format="%Y-%m-%d"),"%Y"))

NSE_Nifty_2013 = NSE_Nifty %>% filter(Year == "2013") %>% na.omit()
NSE_Nifty_2014 = NSE_Nifty %>% filter(Year == "2014") %>% na.omit()
NSE_Nifty_2015 = NSE_Nifty %>% filter(Year == "2015") %>% na.omit()
NSE_Nifty_2016 = NSE_Nifty %>% filter(Year == "2016") %>% na.omit()
NSE_Nifty_2017 = NSE_Nifty %>% filter(Year == "2017") %>% na.omit()
NSE_Nifty_2018 = NSE_Nifty %>% filter(Year == "2018") %>% na.omit()
NSE_Nifty_2019 = NSE_Nifty %>% filter(Year == "2019") %>% na.omit()
NSE_Nifty_2020 = NSE_Nifty %>% filter(Year == "2020") %>% na.omit()
NSE_Nifty_2021 = NSE_Nifty %>% filter(Year == "2021") %>% na.omit()
NSE_Nifty_2022 = NSE_Nifty %>% filter(Year == "2022") %>% na.omit()

Fetching Bank Nifty data from Yahoo

NSE_Nifty_Bank = pdfetch_YAHOO("^NSEBANK", from = "2013-01-01", to = "2022-12-31") %>% data.frame() %>% tibble::rownames_to_column("date") %>% select(date,contains(".open"),contains(".close"))

NSE_Nifty_Bank = NSE_Nifty_Bank %>% mutate(Year = format(as.Date(NSE_Nifty_Bank$date, format="%Y-%m-%d"),"%Y"))

NSE_Nifty_Bank_2013 = NSE_Nifty_Bank %>% filter(Year == "2013") %>% na.omit()
NSE_Nifty_Bank_2014 = NSE_Nifty_Bank %>% filter(Year == "2014") %>% na.omit()
NSE_Nifty_Bank_2015 = NSE_Nifty_Bank %>% filter(Year == "2015") %>% na.omit()
NSE_Nifty_Bank_2016 = NSE_Nifty_Bank %>% filter(Year == "2016") %>% na.omit()
NSE_Nifty_Bank_2017 = NSE_Nifty_Bank %>% filter(Year == "2017") %>% na.omit()
NSE_Nifty_Bank_2018 = NSE_Nifty_Bank %>% filter(Year == "2018") %>% na.omit()
NSE_Nifty_Bank_2019 = NSE_Nifty_Bank %>% filter(Year == "2019") %>% na.omit()
NSE_Nifty_Bank_2020 = NSE_Nifty_Bank %>% filter(Year == "2020") %>% na.omit()
NSE_Nifty_Bank_2021 = NSE_Nifty_Bank %>% filter(Year == "2021") %>% na.omit()
NSE_Nifty_Bank_2022 = NSE_Nifty_Bank %>% filter(Year == "2022") %>% na.omit()

Creating CAGR Function to use later

CAGR = function(EV,BV,n){
  
  Rate = ((EV/BV)^(1/n) - 1) * 100
  return(Rate)
  
}

Applying CAGR Function to our data

Nifty50_10_Year_CAGR = CAGR(NSE_Nifty_2022[nrow(NSE_Nifty_2022),3],NSE_Nifty_2013[1,2],10) %>% round(2)

Nifty50_5_Year_CAGR = CAGR(NSE_Nifty_2022[nrow(NSE_Nifty_2022),3],NSE_Nifty_2018[1,2],5) %>% round(2)

Nifty50_3_Year_CAGR = CAGR(NSE_Nifty_2022[nrow(NSE_Nifty_2022),3],NSE_Nifty_2020[1,2],3) %>% round(2)

Nifty_Bank_10_Year_CAGR = CAGR(NSE_Nifty_Bank_2022[nrow(NSE_Nifty_Bank_2022),3],NSE_Nifty_Bank_2013[1,2],10) %>% round(2)

Nifty_Bank_5_Year_CAGR = CAGR(NSE_Nifty_Bank_2022[nrow(NSE_Nifty_Bank_2022),3],NSE_Nifty_Bank_2018[1,2],5) %>% round(2)

Nifty_Bank_3_Year_CAGR = CAGR(NSE_Nifty_Bank_2022[nrow(NSE_Nifty_Bank_2022),3],NSE_Nifty_Bank_2020[1,2],3) %>% round(2)

Creating df to visualize returns

df = data.frame(rbind(Nifty50_10_Year_CAGR,
                      Nifty_Bank_10_Year_CAGR,
                      Nifty50_5_Year_CAGR,
                      Nifty_Bank_5_Year_CAGR,
                      Nifty50_3_Year_CAGR,
                      Nifty_Bank_3_Year_CAGR)) %>% tibble::rownames_to_column("Index")
names(df)[1] = "Index"
names(df)[2] = "Percent_Change"

df$Year = c("6","5","4","3","2","1")

Using ggplot2 package to create graphical visualization

ggplot(df, aes(x = Year, y = Percent_Change)) +
  geom_bar(stat = "identity", color = "blue", fill=rgb(0.1,0.4,0.5,0.7)) +
  geom_text(label = df$Percent_Change, nudge_x = 0.0, nudge_y = -0.6) + 
  labs(x = "Index", y = "CAGR") + 
  scale_x_discrete(labels=c('Nifty_Bank_3_Yr', 'Nifty50_3_Yr','Nifty_Bank_5_Yr', 'Nifty50_5_Yr','Nifty_Bank_10_Yr', 'Nifty50_10_Yr'))