tidyquant part 1
## Download financial data with tidyquant ## Perform various data manipulations with dplyr ## plot data with ggplot ## Athanassios Stavrakoudis ## 29 Oct 2021 # load required libraries library(tidyquant) library(tidyverse) library(writexl) # stock index tq_exchange_options() # index listings tq_exchange("NYSE") # get options tq_index_options() tq_index("SP500") # print more lines of a tibble tq_index("SP500") %>% print(n = 50) # view all tq_index("SP500") %>% View() tq_index("SP500") %>% print(n = Inf) # download and save in a variable sp500 <- tq_index("SP500") # make some data exploration sp500 %>% str() # details of a listing, here facebook sp500 %>% filter(symbol == 'FB') # count listings of a category sp500 %>% filter(sector == 'Information Technology') %>% nrow() # select some columns of the dataset sp500 %>% select(company, weight) # filter / select combination sp500 %>% filter(symbol == 'FB') %>% select(company, weight) # sum a numeric column sp500 %>% select(weight) %>% sum() # group by a column and summarize, here count listings per sector sp500 %>% group_by(sector) %>% summarise(cnt = n()) # find the median weight per sector sp500 %>% group_by(sector) %>% summarise(m = median(weight)) # count can be done easier with count function sp500 %>% count(sector, name = "cnt") # filter after count sp500 %>% count(sector, name = "cnt") %>% filter(cnt > 50) # convert weight to percentages sp500 %>% group_by(sector) %>% summarise(weight = 100*sum(weight)) # plot weight by sector w <- sp500 %>% group_by(sector) %>% summarise(weight = sum(weight)) ggplot(w, aes(x = sector, y = weight)) + geom_col(fill = "dodgerblue3") + geom_text(aes(label = round(weight, 2)), vjust = 1.6, color = "white", size = 4) + theme_tq(base_size = 15, base_family = "NimbusSan") + theme(axis.text.x = element_text(angle = 45, hjust = 1)) # reminder, pdf fonts pdfFonts() %>% names() ## plot in a more elegant way with factor reorder # mutate to create a new variable w %>% mutate(sector_ord = fct_reorder(as.factor(sector), weight)) %>% ggplot(aes(x = sector_ord, y = weight)) + geom_col(fill = "dodgerblue3") + coord_flip() + labs(x = "sector") + theme_tq(base_size = 15, base_family = "NimbusSan") # reorder in aes ggplot(w, aes(x = fct_reorder(as.factor(sector), weight), y = weight)) + geom_col(fill = "dodgerblue3") + coord_flip() + labs(x = "sector") + theme_tq(base_size = 15, base_family = "NimbusSan") # descending order ggplot(w, aes(x = fct_reorder(as.factor(sector), weight, .desc = TRUE), y = weight)) + geom_col(fill = "dodgerblue3") + coord_flip() + labs(x = "sector") + theme_tq(base_size = 15, base_family = "NimbusSan") # export data to excel write_xlsx(w, "../sector_weights.xlsx")
Συνδεθείτε για περισσότερες δυνατότητες αλληλεπίδρασης,
σχολιασμοί, εξωτερικοί σύνδεσμοι, βοήθεια, ψηφοφορίες, αρχεία, κτλ.
σχολιασμοί, εξωτερικοί σύνδεσμοι, βοήθεια, ψηφοφορίες, αρχεία, κτλ.
Εκπαιδευτικό υλικό από τον
Αθανάσιο Σταυρακούδη
σας παρέχετε κάτω από την άδεια
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License.
Σας παρακαλώ να ενημερωθείτε για κάποιους επιπλέον περιορισμούς
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=401.