Candlestick charts-Scores

Row

Stock price - GOOG

Stock Price - SAP

Stock Price - SNP

Row

Metrics

Row

Google Performance Score

1.23

SAP Performance Score

1.38

SNAP Performance Score

-0.54

Stocks Comparison-Time Series

Column

Value (Base = 100)

Column

Percent Comparison

Growth comparison

---
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")
```