rm(list=ls())

#1 Loading pdfetch package

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)
library(ggplot2)
  1. Getting Price details for NSE Index and particular stocks
Nifty_Index = pdfetch_YAHOO("^NSEI")
#This creates an xts object that you can convert to a dataframe and use

Nifty_Index = pdfetch_YAHOO("^NSEI", from = "2022-01-01", to = "2022-12-31")

Nifty_Index = data.frame(Nifty_Index) %>% tibble::rownames_to_column("date")
rm(Nifty_Index)

Index details Top 6 economies -> US, China, Japan, Germany, India, UK India just overtook UK to becomes the fifth largest economy

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

SSE = pdfetch_YAHOO("000001.SS", from = "2022-01-01", to = "2022-12-31") %>% data.frame() %>% tibble::rownames_to_column("date") %>% select(date,contains(".open"),contains(".close"))

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

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

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

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

Calculating Holding Period Returns for the time period

SP500_YTD_Return = (SP500[nrow(SP500),3] - SP500[1,2])/(SP500[1,2])
SP500_YTD_Return = round(SP500_YTD_Return,4)*100

SSE_YTD_Return = (SSE[nrow(SSE),3] - SSE[1,2])/(SSE[1,2])
SSE_YTD_Return = round(SSE_YTD_Return,4)*100

NIKKEI225_YTD_Return = (NIKKEI225[nrow(NIKKEI225),3] - NIKKEI225[1,2])/(NIKKEI225[1,2])
NIKKEI225_YTD_Return = round(NIKKEI225_YTD_Return,4)*100

DAX_YTD_Return = (DAX[nrow(DAX),3] - DAX[1,2])/(DAX[1,2])
DAX_YTD_Return = round(DAX_YTD_Return,4)*100

NSE_Nifty_YTD_Return = (NSE_Nifty[nrow(NSE_Nifty),3] - NSE_Nifty[1,2] )/(NSE_Nifty[1,2])
NSE_Nifty_YTD_Return = round(NSE_Nifty_YTD_Return,4)*100

FTSE100_YTD_Return = (FTSE100[nrow(FTSE100),3] - FTSE100[1,2])/(FTSE100[1,2])
FTSE100_YTD_Return = round(FTSE100_YTD_Return,4)*100

#Creating DataFrame of the YTD Returns
df = data.frame(rbind(SP500_YTD_Return,
                      SSE_YTD_Return,
                      NIKKEI225_YTD_Return,
                      DAX_YTD_Return,
                      NSE_Nifty_YTD_Return,
                      FTSE100_YTD_Return)) %>% tibble::rownames_to_column("Index")
names(df)[1] = "Index"
names(df)[2] = "Percent_Change"

df = df %>% mutate(Index = stringr::str_replace(Index,"_YTD_Return",""))

#removing datasets, only focus on df ahead to create a plot
rm(FTSE100,SP500,DAX,NIKKEI225,NSE_Nifty,SSE)
rm(DAX_YTD_Return,FTSE100_YTD_Return,NIKKEI225_YTD_Return,NSE_Nifty_YTD_Return,SP500_YTD_Return,SSE_YTD_Return)

Let’s create a plot that we can visualise YTD Returns and compare the Top 6 Economies of the world…

ggplot(df, aes(x = reorder(Index,-Percent_Change), 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 = "Top 6 Economies", y = "% Change")

fill=rgb(0.1,0.4,0.5,0.7)