---
title: "Stocks dashboard"
Author: "Indhujha Natarajan, Mohnish Singh, Rohit Mishra"
output:
flexdashboard::flex_dashboard:
orientation: rows
social: menu
source_code: embed
---
```{r setup, include=FALSE}
library(flexdashboard)
library(quantmod)
library(dygraphs)
library(xts)
library(plyr)
library(tidyverse)
```
Candlestick charts-Scores {data-orientation=rows}
==========================================================================
Row {.tabset .tabset-fade}
-----------------------------------------------------------------------
### Stock price - GOOG
```{r}
tickers <- c("GOOG", "SAP", "SNP")
Last365 <- Sys.Date() - 365
symbol <- getSymbols(tickers, src = 'yahoo', auto.assign = TRUE, warnings = FALSE, from = Last365)
GOOG <- GOOG[,1:4]
SAP <- SAP[,1:4]
SNP <- SNP[,1:4]
dygraph(GOOG, main = "Google") %>%
dyCandlestick() %>%
dyAxis("y", label="Price") %>%
dyOptions(colors= RColorBrewer::brewer.pal(5, "Set2")) %>%
dyHighlight(highlightCircleSize = 4,
highlightSeriesBackgroundAlpha = 1) %>%
dyRangeSelector(height = 55)%>%
dyLegend(show = "onmouseover")
```
### Stock Price - SAP
```{r}
dygraph(SAP, main = "SAP") %>%
dyCandlestick() %>%
dyAxis("y", label="Price") %>%
dyOptions(colors= RColorBrewer::brewer.pal(5, "Set2")) %>%
dyHighlight(highlightCircleSize = 4,
highlightSeriesBackgroundAlpha = 1) %>%
dyRangeSelector(height = 55)%>%
dyLegend(show = "onmouseover")
```
### Stock Price - SNP
```{r}
dygraph(SNP, main = "Snapchat") %>%
dyCandlestick() %>%
dyAxis("y", label="Price") %>%
dyOptions(colors= RColorBrewer::brewer.pal(5, "Set2")) %>%
dyHighlight(highlightCircleSize = 4,
highlightSeriesBackgroundAlpha = 1) %>%
dyRangeSelector(height = 55) %>%
dyLegend(show = "onmouseover")
```
Row {data-height=500}
-----------------------------------------------------------------------
### Metrics
```{r}
what_metrics <- yahooQF(c("Price/Sales",
"P/E Ratio",
"Price/EPS Estimate Next Year",
"PEG Ratio",
"Dividend Yield",
"Market Capitalization"))
tickers <- c("GOOG", "SAP","SNP")
# Not all the metrics are returned by Yahoo.
metrics <- getQuote(paste(tickers, sep="", collapse=";"),what=what_metrics)
#Add tickers as the first column and remove the first column which had date stamps
metricsz <- data.frame(metrics[,2:length(metrics)])
metrics <- data.frame(Symbol=tickers, metrics[,2:length(metrics)])
metricsz$Market.Capitalization <- as.numeric(gsub('.{1}$', '', metricsz$Market.Capitalization))
metricsz$Dividend.Yield <- as.numeric(as.character(metricsz$Dividend.Yield))
metricsz$Price.EPS.Estimate.Next.Year <- as.numeric(as.character(metricsz$Price.EPS.Estimate.Next.Year))
metricsz[is.na(metricsz)] <- 0
metricsz$Price.Sales <- (metricsz$Price.Sales - mean(metricsz$Price.Sales))/sd(metricsz$Price.Sales)
metricsz$P.E.Ratio <- (metricsz$P.E.Ratio - mean(metricsz$P.E.Ratio))/sd(metricsz$P.E.Ratio)
metricsz$Price.EPS.Estimate.Next.Year <- (metricsz$Price.EPS.Estimate.Next.Year - mean(metricsz$Price.EPS.Estimate.Next.Year))/sd(metricsz$Price.EPS.Estimate.Next.Year)
metricsz$PEG.Ratio <- (metricsz$PEG.Ratio - mean(metricsz$PEG.Ratio))/sd(metricsz$PEG.Ratio)
metricsz$Dividend.Yield <- (metricsz$Dividend.Yield - mean(metricsz$Dividend.Yield))/sd(metricsz$Dividend.Yield)
metricsz$Market.Capitalization <- (metricsz$Market.Capitalization - mean(metricsz$Market.Capitalization))/sd(metricsz$Market.Capitalization)
metricsz$Price.Sales = 1/metricsz$Price.Sales
metricsz$P.E.Ratio = 1/metricsz$P.E.Ratio
metricsz$Price.EPS.Estimate.Next.Year = 1/metricsz$Price.EPS.Estimate.Next.Year
metricsz$PEG.Ratio = 1/metricsz$PEG.Ratio
## Calculate the weighted performance score using standardised values of the metrics obtained from yahoo. Each metric is assigned a specific weight based on how much value we as an investor place on that metric.
scoretotal <- data.frame(((metricsz$Price.Sales * 12) + (metricsz$P.E.Ratio * 10) + (metricsz$Price.EPS.Estimate.Next.Year * 12) + (metricsz$PEG.Ratio * 35) + (metricsz$Dividend.Yield * 15) + (metricsz$Market.Capitalization * 16))/100)
colnames(scoretotal) <- c("Performance Score")
scoretotal$`Performance Score` <- format(round(scoretotal$`Performance Score`,2))
metrics <- data.frame(metrics, scoretotal)
#Change colnames
colnames(metrics) <- c("Symbol", "Revenue Multiple", "Earnings Multiple",
"Earnings Multiple (Forward)", "Price-to-Earnings-Growth", "Div Yield", "Market Cap", "Performance Score")
library(DT)
datatable(metrics) %>% formatStyle(
'Revenue Multiple',
background = styleColorBar(metrics$`Revenue Multiple`, 'lightblue'),
backgroundSize = '98% 88%',
backgroundRepeat = 'no-repeat',
backgroundPosition = 'center'
) %>%
formatStyle(
'Earnings Multiple',
background = styleColorBar(metrics$`Earnings Multiple`, 'lightblue'),
backgroundSize = '98% 88%',
backgroundRepeat = 'no-repeat',
backgroundPosition = 'center'
) %>%
formatStyle(
'Price-to-Earnings-Growth',
background = styleColorBar(metrics$`Price-to-Earnings-Growth`, 'lightblue'),
backgroundSize = '98% 88%',
backgroundRepeat = 'no-repeat',
backgroundPosition = 'center'
)
```
Row {data-height=200}
-----------------------------------------------------------------------
### Google Performance Score
```{r}
articles <- scoretotal[1,1]
valueBox(articles, icon = "fa-pencil")
```
### SAP Performance Score
```{r}
articles <- scoretotal[2,1]
valueBox(articles, icon = "fa-pencil")
```
### SNAP Performance Score
```{r}
articles <- scoretotal[3,1]
valueBox(articles, icon = "fa-pencil")
```
Stocks Comparison-Time Series {data-orientation=columns}
==========================================================================
Column {data-width=400}
------------------------------------------------------------------------------
### Value (Base = 100)
```{r}
library(quantmod)
closePrices <- cbind(GOOG$GOOG.Close,SAP$SAP.Close,SNP$SNP.Close)
dygraph(closePrices, group = "stock") %>%
dyRebase(value = 100) %>%
dyRangeSelector(height=55) %>%
dyOptions(colors = RColorBrewer::brewer.pal(5, "Set1")) %>%
dyHighlight(highlightSeriesBackgroundAlpha = 0.3,
highlightSeriesOpts = list(strokeWidth = 2)) %>%
dyRangeSelector(height = 65)
```
Column {data-width=400}
-------------------------------------
### Percent Comparison
```{r}
dygraph(closePrices, group = "stock") %>%
dyRebase(percent = TRUE) %>%
dyRangeSelector(height=55) %>%
dyLegend(show = "onmouseover")%>%
dyOptions(colors = RColorBrewer::brewer.pal(5, "Set1")) %>%
dyHighlight(highlightSeriesBackgroundAlpha = 0.3,
highlightSeriesOpts = list(strokeWidth = 2)) %>%
dyRangeSelector(height = 65)
```
### Growth comparison
```{r}
dygraph(closePrices, group = "stock") %>%
dyRangeSelector(height=55) %>%
dyLegend(show = "onmouseover")
```