Stock Price Analysis

This document analyzes normalized stock prices and individual stock trends from 2016-2024.

# Load required libraries
library(tidyverse)
library(tidyquant)
library(scales)
# Define stock tickers
stocks <- c("AAPL", "AMD", "MU", "NIO", "NVDA", "PRPL", "SNAP", "TSLA", "TWTR")

# Download stock data from 2016 to 2024
stock_data <- tq_get(stocks, 
                     from = "2016-01-01", 
                     to = "2024-12-31",
                     get = "stock.prices")

# Calculate normalized prices (base = 1 at start date for each stock)
normalized_data <- stock_data %>%
  group_by(symbol) %>%
  arrange(date) %>%
  mutate(normalized_price = adjusted / first(adjusted)) %>%
  ungroup()

Plot 1: Combined Normalized Stock Prices

ggplot(normalized_data, aes(x = date, y = normalized_price, color = symbol)) +
  geom_line(linewidth = 0.7) +
  scale_color_manual(values = c("AAPL" = "#E31A1C", "AMD" = "#1F78B4", "MU" = "#33A02C",
                                "NIO" = "#6A3D9A", "NVDA" = "#FF7F00", "PRPL" = "#FB9A99",
                                "SNAP" = "#A6CEE3", "TSLA" = "#B2DF8A", "TWTR" = "#FDBF6F")) +
  labs(title = "Normalized Stock Prices (2016-2024)",
       x = "Date",
       y = "Normalized Price (Base = 1)",
       color = "Stock") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
        legend.position = "right",
        panel.grid.minor = element_blank())

Plot 2: Individual Stock Closing Prices

ggplot(stock_data, aes(x = date, y = adjusted)) +
  geom_line(color = "black", linewidth = 0.5) +
  facet_wrap(~symbol, scales = "free_y", ncol = 3) +
  labs(x = "Date",
       y = "Closing prices") +
  theme_minimal() +
  theme(strip.text = element_text(size = 10, face = "bold"),
        strip.background = element_rect(fill = "grey90", color = NA),
        panel.grid.minor = element_blank(),
        axis.text = element_text(size = 8))