This report summarizes S&P 500 historical price data for 2025. The dataset includes daily open, high, low, and close prices.
library(readr)
sp500 <- read_csv("HistoricalPrices.csv")
names(sp500) <- trimws(names(sp500))
# Convert Date from mm/dd/yy format
sp500$Date <- as.Date(sp500$Date, format = "%m/%d/%y")
head(sp500)
## # A tibble: 6 × 5
## Date Open High Low Close
## <date> <dbl> <dbl> <dbl> <dbl>
## 1 2025-12-31 6899. 6901. 6845. 6846.
## 2 2025-12-30 6900. 6913. 6893. 6896.
## 3 2025-12-29 6904. 6920. 6889. 6906.
## 4 2025-12-26 6936. 6946. 6922. 6930.
## 5 2025-12-24 6905. 6937. 6905. 6932.
## 6 2025-12-23 6872. 6911. 6869. 6910.
dim(sp500)
## [1] 250 5
names(sp500)
## [1] "Date" "Open" "High" "Low" "Close"
summary(sp500)
## Date Open High Low
## Min. :2025-01-02 Min. :4954 Min. :5233 Min. :4835
## 1st Qu.:2025-04-03 1st Qu.:5903 1st Qu.:5939 1st Qu.:5862
## Median :2025-07-05 Median :6239 Median :6252 Median :6201
## Mean :2025-07-03 Mean :6215 Mean :6249 Mean :6179
## 3rd Qu.:2025-10-01 3rd Qu.:6646 3rd Qu.:6680 3rd Qu.:6610
## Max. :2025-12-31 Max. :6936 Max. :6946 Max. :6922
## Close
## Min. :4983
## 1st Qu.:5912
## Median :6229
## Mean :6217
## 3rd Qu.:6644
## Max. :6932
mean(sp500$Close, na.rm = TRUE)
## [1] 6216.866
median(sp500$Close, na.rm = TRUE)
## [1] 6228.7
sd(sp500$Close, na.rm = TRUE)
## [1] 462.4062
min(sp500$Close, na.rm = TRUE)
## [1] 4982.77
max(sp500$Close, na.rm = TRUE)
## [1] 6932.05
plot(sp500$Date, sp500$Close,
type = "l",
xlab = "Date",
ylab = "S&P 500 Closing Price",
main = "S&P 500 Closing Prices in 2025")