2013-07-20 6 views
6

Ich möchte die Liste aller Investmentfonds, die durch Yahoo Finance in R verfügbar sind, bekommen. Es gibt eine stockSymbols Funktion im TTR-Paket, aber es scheint nicht die Investmentfonds zu bekommen.Wie bekomme ich die Liste aller Yahoo Finance Investmentfonds in R?

Danke,

+0

Die 'stockSymbol' Funktion ruft die Liste der Aktien von der Nasdaq Website (die auch einige andere Börsen Listen): , wenn Sie von einer ähnlichen Webseite wissen, dass die Vermögenswerte aufgeführt, die Sie möchten, können Sie einfach abrufen und analysieren. –

+1

Es gibt eine Website, die eine vollständige Liste der Investmentfonds hat: eoddata.com für jeden, der interessiert ist. Mein Problem ist, dass ich die Investmentfonds nach Sektor und Industrie bekommen muss. Yahoo Finance API tut es wahrscheinlich –

Antwort

3

Ich glaube nicht, Yahoo eine Liste aller Investmentfonds bieten sie Daten für haben (ähnlich, bieten sie nicht eine Liste der Aktien, die sie decken). Sie können die Liste von der Website herunterladen, die Sie in den Kommentaren, Schleife durch alle Fonds, rufen Sie die entsprechende "Profil" -Seite von Yahoo, und extrahieren Sie die Informationen, die Sie benötigen - die "Category" -Feld scheint zu der "Branche und Industrie" am nächsten kommen.

# Read the list of funds 
# I assume the file was downloaded manually from 
# http://www.eoddata.com/Data/symbollist.aspx?e=USMF 
# This requires registration (free). 
d <- read.delim("USMF.txt", stringsAsFactors = FALSE) 

# Retrieve the profile page, for each of the funds. 
# It takes 1 second for each, and there are 24,000 of them: 
# this may take more than 6 hours. 
library(RCurl) 
library(stringr) 
d$Category <- "" 
for(i in seq_len(nrow(d))) { 
    try({ 
    url <- paste0("http://uk.finance.yahoo.com/q/pr?s=", d$Symbol[i]) 
    cat(url, " ") 
    profile <- getURL(url) 
    row <- str_extract(profile, "Category.*?</tr>") 
    cell <- str_extract(row,  "<td.*</td>"  ) 
    d$Category[i] <- str_replace_all(cell, "<.*?>", "") 
    cat(d$Category[i], "\n") 
    }) 
} 
head(d) 
Verwandte Themen