股票

如何使用 R 在我的投資組合中查找證券的行業/行業和市值?

  • October 5, 2020

我正在做一個項目,我需要一些證券的部門/行業分類和市值,其中許多不在 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)

您也可以調整它以刮取行業或部門。

引用自:https://quant.stackexchange.com/questions/45578