R/borsdata.R

Defines functions fetch_insider fetch_kpi_quarter fetch_kpi_r12 fetch_kpi_year fetch_kpi_metadata fetch_updated_kpi_metadata fetch_stocksplits fetch_stockprice_last fetch_stockprice fetch_quarter_v2 fetch_quarter fetch_r12_v2 fetch_r12 fetch_year_v2 fetch_year fetch_updated_instruments fetch_instruments fetch_sectors fetch_markets fetch_countries fetch_branches

Documented in fetch_branches fetch_branches fetch_countries fetch_countries fetch_instruments fetch_instruments fetch_kpi_metadata fetch_kpi_quarter fetch_kpi_r12 fetch_kpi_year fetch_markets fetch_markets fetch_quarter fetch_quarter fetch_r12 fetch_r12 fetch_sectors fetch_sectors fetch_stockprice fetch_stockprice fetch_stockprice_last fetch_stockprice_last fetch_stocksplits fetch_stocksplits fetch_updated_instruments fetch_updated_instruments fetch_updated_kpi_metadata fetch_year fetch_year

#' Fetch Branches
#' 
#' @param key Din börsdata API nyckel
#' @return fetch_branches hämtar alla branscher finns att tillgå genom Börsdatas API
#' @export
#' @examples
#' key<-"<API KEY>"
#' fetch_branches(key=key)
#' @export
#' @importFrom httr jsonlite
fetch_branches<-function(key=key){
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se/v1/branches?authKey=", key))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  df2<-df$branches
  return(df2)
}

#' Fetch Countries
#' 
#' @param key Din börsdata API nyckel
#' @return fetch_countries hämtar alla länder finns att tillgå genom Börsdatas API
#' @export
#' @examples
#' key<-"<API KEY>"
#' fetch_countries(key=key)
#' @export
#' @importFrom httr jsonlite
fetch_countries<-function(key=key){
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se/v1/countries?authKey=", key))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  df<-df$countries
  return(df)
}

#' Fetch Markets
#' 
#' @param key Din börsdata API nyckel
#' @return fetch_markets hämtar alla marknader finns att tillgå genom Börsdatas API
#' @export
#' @examples
#' key<-"<API KEY>"
#' fetch_markets(key=key)
#' @export
#' @importFrom httr jsonlite
fetch_markets<-function(key=key){
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se/v1/markets?authKey=", key))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  df<-df$markets  # Sektorerna
  return(df)
}

#' Fetch Sectors
#' 
#' @param key Din börsdata API nyckel
#' @return fetch_sectors hämtar alla Sektorer finns att tillgå genom Börsdatas API
#' @export
#' @examples
#' key<-"<API KEY>"
#' fetch_sectors(key=key)
#' @export
#' @importFrom httr jsonlite
fetch_sectors<-function(key=key){
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se/v1/sectors?authKey=", key))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  df<-df$sectors  # Sektorerna
  return(df)
}

#' Fetch Instruments
#' 
#' @param key Din börsdata API nyckel
#' @return fetch_instruments hämtar alla Instruments finns att tillgå genom Börsdatas API
#' @export
#' @examples
#' key<-"<API KEY>"
#' fetch_instruments(key=key)
#' @export
#' @importFrom httr jsonlite
fetch_instruments<-function(key=key){
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se/v1/instruments?authKey=", key))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  df <- df$instruments
  return(df)
}


#' Fetch Instruments Updated
#' 
#' @param key Din börsdata API nyckel
#' @return fetch_updated_instruments returnerar när olika bolag uppdaterade sina värden senast.
#' @export
#' @examples
#' key<-"<API KEY>"
#' fetch_updated_instruments(key=key)
#' @export
#' @importFrom httr jsonlite
fetch_updated_instruments<-function(key=key){
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se/v1/instruments/updated?authKey=", key))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  df <- df$instruments # returnerar de bolagen som senast har uppdaterats
  return(df)
}

#' Fetch year
#' 
#' @param key Din börsdata API nyckel
#' @param id Börsdata id
#' @return fetch_year returnerar de senaste 20 åren med årsredovisningar (eller så långt bak i tiden som det finns redovisningar).
#' @export
#' @examples
#' key = "<API KEY>"
#' id = 750 # Exempel 750 för Evolution
#' fetch_year(id=750,key=key)
#' @export
#' @importFrom httr jsonlite
fetch_year<-function(id,key=key){
  endpoint <- paste0("/v1/instruments/", id,"/reports/year")
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se", endpoint, "?authKey=", key, "&maxcount=20"))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  return(df$reports)
}

#' Fetch year v2
#' 
#' @param key Din börsdata API nyckel
#' @param id Börsdata id
#' @return fetch_year returnerar de senaste 20 åren med årsredovisningar (eller så långt bak i tiden som det finns redovisningar).
#' @export
#' @examples
#' key = "<API KEY>"
#' id = 750 # Exempel 750 för Evolution
#' fetch_year(id=750,key=key)
#' @export
#' @importFrom httr jsonlite
fetch_year_v2<-function(id,key=key){
  endpoint <- paste0("/v1/instruments/", id,"/reports/year")
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se", endpoint, "?authKey=", key, "&maxcount=20"))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  return(dplyr::mutate(df$reports,id = df$instrument))
}


#' Fetch R12
#' 
#' @param key Din börsdata API nyckel
#' @param id Börsdata id
#' @return fetch_r12 returnerar en data.frame med rullande 12 månders kvartalsrapporter i sig. Returnerar 33 variabler.
#' @export
#' @examples
#' key = "<API KEY>"
#' id = 750 # Exempel 750 för Evolution
#' fetch_r12(id=750,key=key)
#' @export
#' @importFrom httr jsonlite
fetch_r12<-function(id,key=key){
  endpoint <- paste0("/v1/instruments/", id,"/reports/r12")
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se", endpoint, "?authKey=", key, "&maxcount=40"))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  return(df$reports)
}

#' Fetch R12 V2
#' 
#' @param key Din börsdata API nyckel
#' @param id Börsdata id
#' @return fetch_r12 returnerar en data.frame med rullande 12 månders kvartalsrapporter i sig. Returnerar 33 variabler.
#' @export
#' @examples
#' key = "<API KEY>"
#' id = 750 # Exempel 750 för Evolution
#' fetch_r12(id=750,key=key)
#' @export
#' @importFrom httr jsonlite
fetch_r12_v2<-function(id,key=key){
  endpoint <- paste0("/v1/instruments/", id,"/reports/r12")
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se", endpoint, "?authKey=", key, "&maxcount=40"))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  return(dplyr::mutate(df$reports,id = df$instrument))
}

#' Fetch Quarter
#' 
#' @param key Din börsdata API nyckel
#' @param id Börsdata id
#' @return fetch_quarter returnerar en data.frame med de 40 senaste kvartalsrapportna i sig. Returnerar 33 variabler.
#' @export
#' @examples
#' key = "<API KEY>"
#' id = 750 # Exempel 750 för Evolution
#' fetch_quarter(id=750,key=key)
#' @export
#' @importFrom httr jsonlite
fetch_quarter<-function(id,key=key){
  endpoint <- paste0("/v1/instruments/", id,"/reports/quarter")
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se", endpoint, "?authKey=", key, "&maxcount=40"))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  return(df$reports)
}

#' Fetch Quarter v2
#' 
#' @param key Din börsdata API nyckel
#' @param id Börsdata id
#' @return fetch_quarter returnerar en data.frame med de 40 senaste kvartalsrapportna i sig. Returnerar 33 variabler.
#' @export
#' @examples
#' key = "<API KEY>"
#' id = 750 # Exempel 750 för Evolution
#' fetch_quarter(id=750,key=key)
#' @export
#' @importFrom httr jsonlite
fetch_quarter_v2<-function(id,key=key){
  endpoint <- paste0("/v1/instruments/", id,"/reports/quarter")
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se", endpoint, "?authKey=", key, "&maxcount=40"))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  return(dplyr::mutate(df$reports,id = df$instrument))
}

#' Fetch Stockprice
#' 
#' @param key Din börsdata API nyckel
#' @param id Börsdata id
#' @return fetch_stockprice returnerar aktiekursen för bolaget per dag under de senaste 20 åren eller sedan dagen bolaget gick till börsen.
#' @export
#' @examples
#' key = "<API KEY>"
#' id = 750 # Exempel 750 för Evolution
#' fetch_stockprice(id=750,key=key)
#' @export
#' @importFrom httr jsonlite
fetch_stockprice<-function(id,key=key){
  endpoint <- paste0("/v1/instruments/", id,"/stockprices")
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se", endpoint, "?authKey=", key, "&maxcount=20"))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  kurs<-df$stockPricesList
  return(kurs)
}


#' Fetch Stockprice Last
#' 
#' @param key Din börsdata API nyckel
#' @return fetch_stockprice_last returnerar den senaste aktiekursen för varje bolag.
#' @export
#' @examples
#' key<-"<API KEY>"
#' fetch_stockprice_last(key=key)
#' @export
#' @importFrom httr jsonlite
fetch_stockprice_last<-function(key=key){
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se/v1/instruments/stockprices/last?authKey=", key))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  kurs<-df$stockPricesList
  return(kurs)
}


#' Fetch Stock splits
#' 
#' @param key Din börsdata API nyckel
#' @return fetch_stocksplits returnerar vilka bolag som har gjort en aktiesplit, storleken på splitten och åt vilket håll.
#' @export
#' @examples
#' key<-"<API KEY>"
#' fetch_stocksplits(key=key)
#' @export
#' @importFrom httr jsonlite
fetch_stocksplits<-function(key=key){
  getdata<-httr::GET(url=paste0("https://apiservice.borsdata.se/v1/instruments/stocksplits?authKey=", key))
  data_json <- httr::content(getdata, type="text", encoding = "UTF-8")
  df <- jsonlite::fromJSON(data_json,)
  kurs<-df$stockSplitList
  return(kurs)
}


#' Fetch KPI Metadata Updated
#' 
#' @param key Din börsdata API nyckel
#' @return fetch_updated_kpi_metadata returnerar när metadatan har uppdaterats senast.
#' @export
#' @examples
#' key<-"<API KEY>"
#' fetch_updated_kpi_metadata(key=key)
#' @export
#' @importFrom httr jsonlite
fetch_updated_kpi_metadata<-function(key=key){
  getdata<-httr::GET(url = paste0("https://apiservice.borsdata.se/v1/Instruments/kpis/updated?authKey=",key))
  data_json<-httr::content(getdata, type = "text", encoding = "UTF-8")
  info<-jsonlite::fromJSON(data_json)
  return(info$kpisCalcUpdated)
}


#' Fetch KPI Metadata
#' 
#' @param key Din börsdata API nyckel
#' @return fetch_kpi_metadata returnerar kpi metadata.
#' @export
#' @examples
#' key<-"<API KEY>"
#' fetch_kpi_metadata(key=key)
#' @export
#' @importFrom httr jsonlite
fetch_kpi_metadata<-function(key=key){
  getdata<-httr::GET(url = paste0("https://apiservice.borsdata.se","/v1/Instruments/kpis/metadata?authKey=",key))
  data_json<-httr::content(getdata, type = "text", encoding = "UTF-8")
  info<-jsonlite::fromJSON(data_json)
  return(info$kpiHistoryMetadatas)
}


#' Fetch KPI Year
#' 
#' @param key Din börsdata API nyckel
#' @param id Börsdata id
#' @return fetch_kpi_year returnerar de KPI nyckeltal som finns att tillgå genom
#'  börsdatas api. Använder sig enbart av medelvärden, så det kan eventuellt vara av värde
#'   att ändra om i funktionen för att hämta lägsta och högsta värden. Funktionen består av en
#'   loop som går och hämtar ett nyckeltal i taget så det är ganska utmattade för API:n att hämta.
#' @export
#' @examples
#' key = "<API KEY>"
#' id = 750 # Exempel 750 för Evolution
#' fetch_kpi_year(id=750,key=key)
#' @export
#' @importFrom httr jsonlite rvest purrr lubridate
fetch_kpi_year<-function(id=id,key=key){
  kpi_table<-read_html("https://github.com/Borsdata-Sweden/API/wiki/KPI-History") %>%
      html_table() %>% pluck(1) %>%
      filter(Reporttype == "year") %>%
      filter(Pricetype == "mean") %>% 
      arrange(KpiId)
    output<-NA
    
    for(i in kpi_table$KpiId){
      hej<-httr::GET(url = paste0("https://apiservice.borsdata.se/v1/Instruments/",id,"/kpis/",i,"/year/mean/history?authKey=",key,"&maxcount=20"))
      hej<-httr::content(hej, type="text", encoding = "UTF-8")
      hej<-jsonlite::fromJSON(hej)
      
      if(class(hej$values) == "list"){
        print(class(hej$values))
        output<-left_join(output,data.frame(y=output$y,p=output$p,v = rep(NA,nrow(output))),by = c("y","p"))
        print(i)
      } else {
        print(paste(i , "/ 148"))
        col<-hej$values
        suppressWarnings(
        if(is.na(output[1])){
          output<-hej$values
        } else {
          output<-left_join(output,hej$values, by = c("y","p"))
        }
        )
      }
      
    }
    
    colnames(output)<-c("year", "period",kpi_table$Name)
    
    return(output)
}




#' Fetch KPI R12
#' 
#' @param key Din börsdata API nyckel
#' @param id Börsdata id
#' @return fetch_kpi_r12 returnerar de KPI nyckeltal som finns att tillgå genom
#'  börsdatas api. Använder sig enbart av medelvärden, så det kan eventuellt vara av värde
#'   att ändra om i funktionen för att hämta lägsta och högsta värden. Funktionen består av en
#'   loop som går och hämtar ett nyckeltal i taget så det är ganska utmattade för API:n att hämta.
#' @export
#' @examples
#' key = "<API KEY>"
#' id = 750 # Exempel 750 för Evolution
#' fetch_kpi_r12(id=750,key=key)
#' @export
#' @importFrom httr jsonlite rvest purrr lubridate
fetch_kpi_r12<-function(id=id,key=key){
  kpi_table<-rvest::read_html("https://github.com/Borsdata-Sweden/API/wiki/KPI-History") %>%
    rvest::html_table() %>% purrr::pluck(1) %>%
    filter(Reporttype == "r12") %>%
    filter(Pricetype == "mean") %>% 
    arrange(KpiId)
  output<-NA
  
  for(i in kpi_table$KpiId){
    hej<-httr::GET(url = paste0("https://apiservice.borsdata.se/v1/Instruments/",id,"/kpis/",i,"/r12/mean/history?authKey=",key,"&maxcount=40"))
    hej<-httr::content(hej, type="text", encoding = "UTF-8")
    hej<-jsonlite::fromJSON(hej)
    
    if(class(hej$values) == "list"){
      print(class(hej$values))
      output<-left_join(output,data.frame(y=output$y,p=output$p,v = rep(NA,nrow(output))),by = c("y","p"))
      print(i)
    } else {
      print(paste(i , "/ 148"))
      col<-hej$values
      suppressWarnings(
      if(is.na(output[1])){
        output<-hej$values
      } else {
        output<-left_join(output,hej$values, by = c("y","p"))
      }
      )
    }
  }
  colnames(output)<-c("year", "period",kpi_table$Name)
  
  return(output)
}

#' Fetch KPI Quarter
#' 
#' @param key Din börsdata API nyckel
#' @param id Börsdata id
#' @return fetch_kpi_quarter returnerar de KPI nyckeltal som finns att tillgå genom
#'  börsdatas api. Använder sig enbart av medelvärden, så det kan eventuellt vara av värde
#'   att ändra om i funktionen för att hämta lägsta och högsta värden. Funktionen består av en
#'   loop som går och hämtar ett nyckeltal i taget så det är ganska utmattade för API:n att hämta.
#' @export
#' @examples
#' key = "<API KEY>"
#' id = 750 # Exempel 750 för Evolution
#' fetch_kpi_quarter(id=750,key=key)
#' @export
#' @importFrom httr jsonlite rvest purrr lubridate
fetch_kpi_quarter<-function(id=id,key=key){
  kpi_table<-read_html("https://github.com/Borsdata-Sweden/API/wiki/KPI-History") %>%
    html_table() %>% pluck(1) %>%
    filter(Reporttype == "quarter") %>%
    filter(Pricetype == "mean") %>% 
    arrange(KpiId)
  output<-NA
  for(i in kpi_table$KpiId){
    hej<-httr::GET(url = paste0("https://apiservice.borsdata.se/v1/Instruments/",id,"/kpis/",i,"/quarter/mean/history?authKey=",key,"&maxcount=40"))
    hej<-httr::content(hej, type="text", encoding = "UTF-8")
    hej<-jsonlite::fromJSON(hej)
    
    if(class(hej$values) == "list"){
      print(class(hej$values))
      output<-left_join(output,data.frame(y=output$y,p=output$p,v = rep(NA,nrow(output))),by = c("y","p"))
      print(i)
    } else {
      print(paste(i , "/ 140"))
      col<-hej$values
      suppressWarnings(
      if(is.na(output[1])){
        output<-hej$values
      } else {
        output<-left_join(output,hej$values, by = c("y","p"))
      }
      )
    }
  }
  colnames(output)<-c("year", "period",kpi_table$Name)
  
  return(output)
}


#' Fetch Insider
#' 
#' @param key Din börsdata API nyckel
#' @param id Börsdata id
#' @return fetch_insider
#' @export
#' @examples
#' key = "<API KEY>"
#' id = 750 # Exempel 750 för Evolution
#' fetch_insider(id=750,key=key)
#' @export
#' @importFrom httr jsonlite rvest purrr lubridate
fetch_insider<-function(id=id,key=key){
  insider_stage1<-paste0("https://apiservice.borsdata.se/v1/instruments/kpis/",241,"/last/latest?authKey=",key)
  insider_stage2<-httr::GET(insider_stage1)
  content<-content(insider_stage2)
  values<-content$values 
  test<-tibble(id=map(values, 1), value=map(values, 3))
  
  
  insider_stage1<-paste0("https://apiservice.borsdata.se/v1/instruments/kpis/242/last/latest?authKey=",key)
  insider_stage2<-httr::GET(insider_stage1)
  content<-content(insider_stage2)
  values<-content$values 
  test<-left_join(test,tibble(id=map(values, 1), value=map(values, 3)),by = "id")
  
  insider_stage1<-paste0("https://apiservice.borsdata.se/v1/instruments/kpis/243/last/latest?authKey=",key)
  insider_stage2<-httr::GET(insider_stage1)
  content<-content(insider_stage2)
  values<-content$values 
  test<-left_join(test,tibble(id=map(values, 1), value=map(values, 3)),by = "id")
  
  insider_stage1<-paste0("https://apiservice.borsdata.se/v1/instruments/kpis/244/last/latest?authKey=",key)
  insider_stage2<-httr::GET(insider_stage1)
  content<-content(insider_stage2)
  values<-content$values 
  test<-left_join(test,tibble(id=map(values, 1), value=map(values, 3)),by = "id")
  
  insider_stage1<-paste0("https://apiservice.borsdata.se/v1/instruments/kpis/245/last/latest?authKey=",key)
  insider_stage2<-httr::GET(insider_stage1)
  content<-content(insider_stage2)
  values<-content$values 
  test<-left_join(test,tibble(id=map(values, 1), value=map(values, 3)),by = "id")
  
  insider_stage1<-paste0("https://apiservice.borsdata.se/v1/instruments/kpis/246/last/latest?authKey=",key)
  insider_stage2<-httr::GET(insider_stage1)
  content<-content(insider_stage2)
  values<-content$values 
  test<-left_join(test,tibble(id=map(values, 1), value=map(values, 3)),by = "id")
  
  insider_stage1<-paste0("https://apiservice.borsdata.se/v1/instruments/kpis/247/last/latest?authKey=",key)
  insider_stage2<-httr::GET(insider_stage1)
  content<-content(insider_stage2)
  values<-content$values 
  test<-left_join(test,tibble(id=map(values, 1), value=map(values, 3)),by = "id")
  
  insider_stage1<-paste0("https://apiservice.borsdata.se/v1/instruments/kpis/248/last/latest?authKey=",key)
  insider_stage2<-httr::GET(insider_stage1)
  content<-content(insider_stage2)
  values<-content$values 
  test<-left_join(test,tibble(id=map(values, 1), value=map(values, 3)),by = "id")
  
  insider_stage1<-paste0("https://apiservice.borsdata.se/v1/instruments/kpis/249/last/latest?authKey=",key)
  insider_stage2<-httr::GET(insider_stage1)
  content<-content(insider_stage2)
  values<-content$values 
  test<-left_join(test,tibble(id=map(values, 1), value=map(values, 3)),by = "id")
  
  colnames(test)<-c("bolagsnamn",1,2,3,4,5,6,7,8,9)
  id=221
  test3<-test %>% filter(bolagsnamn == id)
  null<-purrr::pluck(test3,2) %>% unlist()
  if(is.null(null)){
    ingen_information<-"Saknar information från Börsdatas API om största kapitalägarna"
  } else {
    ingen_information<-NA
    ingen_information<-test3 %>% select(-1) %>% matrix(nrow = 3) %>% 
      unlist() %>% matrix(ncol=3) %>% as_tibble() %>% rename("Kapital" = V1,
                                                             "Röster" = V2,
                                                             "Ägare" = V3)
    
  }
  return(ingen_information)
}
JakobJohannesson/borsdata documentation built on July 28, 2022, 1:43 a.m.