1 votos

¿Cómo encontrar el sector/industria y la capitalización de mercado de los valores de mi cartera utilizando R?

Estoy trabajando en un proyecto en el que necesito la clasificación por sectores/industrias y la capitalización de mercado de algunos valores, muchos de los cuales no están en el SP500, pero forman parte del mercado estadounidense. Estoy usando R para esto. No tengo acceso a ningún conjunto de datos de pago.

Acabo de empezar a usar Quantmod.

Agradecería mucho cualquier ayuda.

1voto

David Puntos 1

La API de IEX me ha parecido muy valiosa. La documentación se puede encontrar aquí: https://iextrading.com/developer/docs/#roadmap

Lamentablemente, parece que están retirando esta API, pero su nueva plataforma parece que todavía tiene un nivel gratuito que supongo que todavía puede proporcionarle los datos básicos que está buscando. Aquí hay un ejemplo de llamada api para AAPL: https://api.iextrading.com/1.0/stock/aapl/quote

1voto

Luke Puplett Puntos 487

Hace poco necesitaba datos sobre la capitalización bursátil de una gran muestra de valores y no tenía acceso a bases de datos de pago. Por lo tanto, recurrí a raspar los datos de https://finance.yahoo.com utilizando una pequeña función de webscraping:

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)
}

A continuación, puede utilizar esta función para raspar los teletipos individuales:

scrape_MC("AAPL")

que devuelve:

Scraping AAPL
[1] "1.969T"

Los datos se citan dependiendo de la unidad y a veces se reportan errores, lo arreglé usando este fragmento de código:

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)

Se podría adaptar esto para raspar la industria o el sector también.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X