stocks <- tq_get(c("HIMS", "PFE", "MRK"),
get = "stock.prices",
from = "2022-01-01",
to = "2025-01-01")
stocks
## # A tibble: 2,259 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 HIMS 2022-01-03 6.58 6.80 6.54 6.75 1615200 6.75
## 2 HIMS 2022-01-04 6.80 6.89 6.38 6.5 1796600 6.5
## 3 HIMS 2022-01-05 6.38 6.49 5.85 5.88 2813100 5.88
## 4 HIMS 2022-01-06 5.91 5.97 5.60 5.73 2617700 5.73
## 5 HIMS 2022-01-07 5.71 5.89 5.67 5.74 1628400 5.74
## 6 HIMS 2022-01-10 5.61 5.61 5.25 5.58 2581200 5.58
## 7 HIMS 2022-01-11 5.58 5.84 5.54 5.77 1715300 5.77
## 8 HIMS 2022-01-12 5.75 5.91 5.55 5.58 1356600 5.58
## 9 HIMS 2022-01-13 5.64 5.65 5.22 5.25 1710600 5.25
## 10 HIMS 2022-01-14 5.15 5.32 5.10 5.29 1759900 5.29
## # ℹ 2,249 more rows
stocks %>%
ggplot(aes(x = date, y = adjusted, color = symbol)) +
geom_line()
stocks %>% filter(adjusted > 24)
## # A tibble: 1,526 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 HIMS 2024-06-13 23.7 24.6 23.2 24.4 9570100 24.4
## 2 HIMS 2024-06-17 24.2 25.5 23.2 24.1 14548500 24.1
## 3 HIMS 2024-06-18 23.6 25.7 23.5 24.8 11898400 24.8
## 4 HIMS 2024-11-11 24.8 29.7 24.4 27.9 38534700 27.9
## 5 HIMS 2024-11-12 26.5 28.4 26.2 26.7 15916200 26.7
## 6 HIMS 2024-11-13 29.1 30.4 27.5 27.6 21430900 27.6
## 7 HIMS 2024-11-21 21.9 24.6 21.4 24.1 24054400 24.1
## 8 HIMS 2024-11-22 23.7 25.4 23.0 25.3 17465100 25.3
## 9 HIMS 2024-11-25 26.5 31.4 26.4 31.4 49446700 31.4
## 10 HIMS 2024-11-26 29.9 31.7 29.4 30.7 19613600 30.7
## # ℹ 1,516 more rows
stocks %>% filter(symbol == "PFE")
## # A tibble: 753 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 PFE 2022-01-03 58.5 58.5 56.3 56.7 57219200 47.7
## 2 PFE 2022-01-04 56.2 56.4 53.9 54.5 66993100 46.0
## 3 PFE 2022-01-05 55.8 56.4 55.4 55.6 52956400 46.9
## 4 PFE 2022-01-06 55.2 55.6 54.5 54.8 37000400 46.2
## 5 PFE 2022-01-07 55.4 55.8 54.6 55.7 27703400 47.0
## 6 PFE 2022-01-10 55.7 56.3 54.7 56.2 34044700 47.4
## 7 PFE 2022-01-11 56.8 57.4 55.8 56.7 33576600 47.8
## 8 PFE 2022-01-12 56.3 57.2 55.9 56.7 27608500 47.7
## 9 PFE 2022-01-13 56.5 56.8 55.2 55.5 28117900 46.8
## 10 PFE 2022-01-14 55.0 55.4 54.5 55.0 27072500 46.3
## # ℹ 743 more rows
stocks %>% filter(symbol == "MRK")
## # A tibble: 753 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 MRK 2022-01-03 76.6 76.9 75.3 76.9 9441200 69.9
## 2 MRK 2022-01-04 76.4 77.3 75.9 77.0 11981700 70.0
## 3 MRK 2022-01-05 77.3 79.8 77.3 78.9 17447900 71.7
## 4 MRK 2022-01-06 78.8 79.6 77.9 78.8 11359200 71.7
## 5 MRK 2022-01-07 78.9 80.5 78.5 80.3 15212000 73.0
## 6 MRK 2022-01-10 80.5 82.4 79.7 82.4 19636800 74.9
## 7 MRK 2022-01-11 82.4 82.6 80.7 81.7 11585100 74.3
## 8 MRK 2022-01-12 81.1 81.4 80.7 81.2 13057000 73.9
## 9 MRK 2022-01-13 80.9 81.7 80.3 81.3 9678100 74.0
## 10 MRK 2022-01-14 81.6 81.8 80.8 81.4 9478000 74.0
## # ℹ 743 more rows
stocks %>%
arrange(desc(open))
## # A tibble: 2,259 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 MRK 2024-06-26 133. 133. 131. 132. 8492100 128.
## 2 MRK 2024-06-25 133. 135. 133. 133. 6758400 130.
## 3 MRK 2024-03-27 133. 133. 130. 132. 16061600 128.
## 4 MRK 2024-06-12 133. 133. 130. 130. 5822000 126.
## 5 MRK 2024-03-28 132 132. 131. 132. 10189700 128.
## 6 MRK 2024-06-27 132. 132. 127. 130. 11927600 127.
## 7 MRK 2024-04-29 132. 132. 129. 130. 6788000 126.
## 8 MRK 2024-04-01 132. 132. 130. 131. 5377600 127.
## 9 MRK 2024-05-21 132. 133. 130. 131. 6254700 127.
## 10 MRK 2024-05-24 131. 131. 129. 129. 5982800 126.
## # ℹ 2,249 more rows
stocks %>%
arrange(desc(high), desc(open))
## # A tibble: 2,259 × 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 MRK 2024-06-25 133. 135. 133. 133. 6758400 130.
## 2 MRK 2024-06-26 133. 133. 131. 132. 8492100 128.
## 3 MRK 2024-06-24 131. 133. 131. 133. 8553800 130.
## 4 MRK 2024-03-27 133. 133. 130. 132. 16061600 128.
## 5 MRK 2024-04-25 130. 133. 129. 131. 12750100 127.
## 6 MRK 2024-05-21 132. 133. 130. 131. 6254700 127.
## 7 MRK 2024-06-12 133. 133. 130. 130. 5822000 126.
## 8 MRK 2024-03-28 132 132. 131. 132. 10189700 128.
## 9 MRK 2024-04-03 130. 132. 129. 130. 7741400 126.
## 10 MRK 2024-06-27 132. 132. 127. 130. 11927600 127.
## # ℹ 2,249 more rows
stocks %>%
select(symbol, date, open, close)
## # A tibble: 2,259 × 4
## symbol date open close
## <chr> <date> <dbl> <dbl>
## 1 HIMS 2022-01-03 6.58 6.75
## 2 HIMS 2022-01-04 6.80 6.5
## 3 HIMS 2022-01-05 6.38 5.88
## 4 HIMS 2022-01-06 5.91 5.73
## 5 HIMS 2022-01-07 5.71 5.74
## 6 HIMS 2022-01-10 5.61 5.58
## 7 HIMS 2022-01-11 5.58 5.77
## 8 HIMS 2022-01-12 5.75 5.58
## 9 HIMS 2022-01-13 5.64 5.25
## 10 HIMS 2022-01-14 5.15 5.29
## # ℹ 2,249 more rows
stocks %>%
select(symbol, date, high, low)
## # A tibble: 2,259 × 4
## symbol date high low
## <chr> <date> <dbl> <dbl>
## 1 HIMS 2022-01-03 6.80 6.54
## 2 HIMS 2022-01-04 6.89 6.38
## 3 HIMS 2022-01-05 6.49 5.85
## 4 HIMS 2022-01-06 5.97 5.60
## 5 HIMS 2022-01-07 5.89 5.67
## 6 HIMS 2022-01-10 5.61 5.25
## 7 HIMS 2022-01-11 5.84 5.54
## 8 HIMS 2022-01-12 5.91 5.55
## 9 HIMS 2022-01-13 5.65 5.22
## 10 HIMS 2022-01-14 5.32 5.10
## # ℹ 2,249 more rows
stocks %>%
mutate(daily_return = close - open) %>%
select(symbol, date, open, close, daily_return)
## # A tibble: 2,259 × 5
## symbol date open close daily_return
## <chr> <date> <dbl> <dbl> <dbl>
## 1 HIMS 2022-01-03 6.58 6.75 0.170
## 2 HIMS 2022-01-04 6.80 6.5 -0.300
## 3 HIMS 2022-01-05 6.38 5.88 -0.5
## 4 HIMS 2022-01-06 5.91 5.73 -0.180
## 5 HIMS 2022-01-07 5.71 5.74 0.0300
## 6 HIMS 2022-01-10 5.61 5.58 -0.0350
## 7 HIMS 2022-01-11 5.58 5.77 0.190
## 8 HIMS 2022-01-12 5.75 5.58 -0.170
## 9 HIMS 2022-01-13 5.64 5.25 -0.390
## 10 HIMS 2022-01-14 5.15 5.29 0.140
## # ℹ 2,249 more rows
stocks %>%
transmute(daily_return = close - open)
## # A tibble: 2,259 × 1
## daily_return
## <dbl>
## 1 0.170
## 2 -0.300
## 3 -0.5
## 4 -0.180
## 5 0.0300
## 6 -0.0350
## 7 0.190
## 8 -0.170
## 9 -0.390
## 10 0.140
## # ℹ 2,249 more rows
stocks %>%
mutate(daily_range = high - low) %>%
select(symbol, date, high, low, daily_range)
## # A tibble: 2,259 × 5
## symbol date high low daily_range
## <chr> <date> <dbl> <dbl> <dbl>
## 1 HIMS 2022-01-03 6.80 6.54 0.260
## 2 HIMS 2022-01-04 6.89 6.38 0.510
## 3 HIMS 2022-01-05 6.49 5.85 0.640
## 4 HIMS 2022-01-06 5.97 5.60 0.370
## 5 HIMS 2022-01-07 5.89 5.67 0.220
## 6 HIMS 2022-01-10 5.61 5.25 0.365
## 7 HIMS 2022-01-11 5.84 5.54 0.300
## 8 HIMS 2022-01-12 5.91 5.55 0.360
## 9 HIMS 2022-01-13 5.65 5.22 0.430
## 10 HIMS 2022-01-14 5.32 5.10 0.218
## # ℹ 2,249 more rows
stocks %>%
transmute(daily_range = high - low)
## # A tibble: 2,259 × 1
## daily_range
## <dbl>
## 1 0.260
## 2 0.510
## 3 0.640
## 4 0.370
## 5 0.220
## 6 0.365
## 7 0.300
## 8 0.360
## 9 0.430
## 10 0.218
## # ℹ 2,249 more rows
Collapsing data into a single row
stocks %>%
filter(symbol == "MRK") %>%
mutate(daily_return = close - open) %>%
select(symbol, date, open, close, daily_return) %>%
summarise(daily_return = mean(daily_return))
## # A tibble: 1 × 1
## daily_return
## <dbl>
## 1 0.00434
Summarize by Group
stocks %>%
# Group by Symbol
group_by(symbol) %>%
mutate(daily_return = close - open) %>%
select(symbol, date, open, close, daily_return) %>%
summarise(daily_return = mean(daily_return)) %>%
# Sort it
arrange(daily_return)
## # A tibble: 3 × 2
## symbol daily_return
## <chr> <dbl>
## 1 PFE -0.00818
## 2 MRK 0.00434
## 3 HIMS 0.0173