Stock market analysis is crucial for understanding price trends, volatility, and key financial indicators that influence trading decisions. This report examines historical stock price data using various technical indicators, including daily returns, moving averages, Bollinger Bands, and a correlation heatmap. By leveraging these analytical techniques, investors can gain insights into stock behavior, assess market trends, and make informed investment decisions.
The analysis focuses on evaluating the price movement patterns and volatility of selected stocks over time. Bollinger Bands help identify periods of high and low volatility, while moving averages highlight long-term and short-term trends. Additionally, correlation analysis reveals relationships between different stock metrics, providing a comprehensive view of stock market behavior. Understanding these indicators can help investors develop better trading strategies, reduce risk, and maximize returns. This report serves as a guide to analyzing stock trends using historical data, equipping investors with essential analytical tools for decision-making.
Stock markets are influenced by various macroeconomic and microeconomic factors, including global events, interest rates, corporate earnings, and investor sentiment. Analyzing past stock trends using statistical techniques allows investors to identify patterns that may recur, helping them make better-informed investment choices. By applying quantitative methods, this report aims to provide a deeper understanding of stock price movements and their implications for traders, investors, and financial analysts.
Furthermore, stock price movements are often driven by institutional trading strategies, liquidity, and overall market sentiment. Investors should not rely solely on past performance but also incorporate real-time data and economic forecasts for better risk management. This analysis is designed to empower traders by offering insights into market trends, ensuring informed and strategic decision-making in volatile environments.
library(tidyverse)
library(lubridate)
library(TTR)
library(ggplot2)
library(plotly)
library(ggcorrplot)
library(zoo) # Add this to use rollapply()
# Load stock data
stock_data <- read_csv("stock_data.csv")
## Rows: 5575 Columns: 15
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): symbol
## dbl (13): High, Low, Close, Volume, Adjusted, daily_return, rolling_sd, SMA...
## date (1): date
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Calculate daily returns
stock_data <- stock_data %>%
group_by(symbol) %>%
mutate(daily_return = (Close - lag(Close)) / lag(Close))
# Calculate rolling standard deviation (20-day window)
stock_data <- stock_data %>%
group_by(symbol) %>%
mutate(rolling_sd = rollapply(daily_return, width = 20, FUN = sd, fill = NA, align = "right"))
# Calculate moving averages (50-day and 200-day)
stock_data <- stock_data %>%
group_by(symbol) %>%
mutate(SMA_50 = SMA(Close, n = 50),
SMA_200 = SMA(Close, n = 200))
# Calculate Bollinger Bands per stock symbol
stock_data <- stock_data %>%
group_by(symbol) %>%
mutate(
BBands_data = list(BBands(HLC = cbind(High, Low, Close), n = 20, sd = 2))
) %>%
mutate(
BB_Upper = BBands_data[[1]][, "up"],
BB_Lower = BBands_data[[1]][, "dn"],
BB_Mid = BBands_data[[1]][, "mavg"]
) %>%
select(-BBands_data) %>%
ungroup()
ggplot(stock_data, aes(x = date, y = Close, color = symbol)) +
geom_line(linewidth = 1, alpha = 0.7) + # Closing Price
geom_line(aes(y = BB_Upper), color = "blue", linetype = "dashed", linewidth = 1) + # Upper Band
geom_line(aes(y = BB_Lower), color = "red", linetype = "dashed", linewidth = 1) + # Lower Band
geom_line(aes(y = BB_Mid), color = "black", linetype = "solid", linewidth = 1) + # Middle Band (20-day SMA)
facet_wrap(~symbol, scales = "free_y") +
theme_minimal() +
labs(title = "Stock Prices with Bollinger Bands",
x = "Date", y = "Stock Price",
subtitle = "Blue: Upper Band | Red: Lower Band | Black: 20-day Moving Avg") +
theme(legend.position = "none")
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_line()`).
## Removed 19 rows containing missing values or values outside the scale range
## (`geom_line()`).
## Removed 19 rows containing missing values or values outside the scale range
## (`geom_line()`).
# Select relevant columns for correlation analysis
selected_data <- stock_data %>% select(Close, Volume, rolling_sd, SMA_50, SMA_200, BB_Mid)
# Compute correlation matrix
cor_matrix <- cor(selected_data, use = "complete.obs")
# Plot correlation heatmap
ggcorrplot(cor_matrix,
hc.order = TRUE,
type = "lower",
lab = TRUE,
colors = c("red", "white", "blue")) +
ggtitle("Correlation Heatmap of Stock Metrics")
This report provides key insights into stock performance and can guide investment decisions based on historical trends and statistical indicators. The combination of moving averages, Bollinger Bands, and correlation analysis offers investors a comprehensive approach to assessing stock trends and market conditions. Future studies could integrate machine learning models and economic indicators for enhanced forecasting accuracy.