股票
如何使用 R 在我的投資組合中查找證券的行業/行業和市值?
我正在做一個項目,我需要一些證券的部門/行業分類和市值,其中許多不在 SP500 中,而是美國市場的一部分。我為此使用 R。我無權訪問任何付費數據集。
我剛開始使用 Quantmod。
我真的很感激任何幫助。
我發現 IEX API 非常有價值。可在此處找到文件:https ://iextrading.com/developer/docs/#roadmap
不幸的是,看起來他們正在停用這個 API,但他們的新平台似乎仍然有一個免費層,我猜它仍然可以為您提供您正在尋找的基本數據。這是 AAPL 的範例 api 呼叫: https ://api.iextrading.com/1.0/stock/aapl/quote
我最近需要大量股票樣本的市值數據,但無法訪問付費數據庫。因此,我使用一個小的網路抓取功能從https://finance.yahoo.com抓取數據:
library(tidyverse) library(rvest) library(crayon) scrape_MC <- function(ticker){ message(blue("Scraping "), white(ticker)) ret <- try(paste0("https://finance.yahoo.com/quote/", ticker) %>% read_html()%>% html_table() %>% reduce(.f=bind_rows) %>% as_tibble() %>% filter(X1 == "Market Cap") %>% pull(X2), silent = T) ifelse(class(ret)=="try-error", ticker, ret) }
然後,您可以使用此功能來抓取單個程式碼:
scrape_MC("AAPL")
返回:
Scraping AAPL [1] "1.969T"
數據根據單位引用,有時會報告錯誤,我使用以下程式碼片段修復了這個問題:
MC <- MC_data %>% filter(str_detect(MC, "^\\d")) %>% mutate(MC = str_replace(MC, ",", ""), Unit = str_extract(MC, "[:alpha:]$"), MC = as.numeric(str_remove(MC, "[:alpha:]$")), MC = case_when(Unit == "B" ~ MC * 1000, Unit == "M" ~ MC, Unit == "T" ~ MC * 1000*1000, is.na(Unit) ~ MC / (1000*1000) ) ) %>% select(-Unit)
您也可以調整它以刮取行業或部門。