Tôi có thể giúp bạn với danh sách các biểu tượng mã cho các cổ phiếu (Hoa Kỳ và không thuộc Hoa Kỳ) và cho các quỹ ETF.
Yahoo cung cấp Lịch thu nhập liệt kê tất cả các cổ phiếu công bố thu nhập trong một ngày nhất định. Điều này bao gồm các cổ phiếu không phải của Hoa Kỳ.
Ví dụ: đây là ngày hôm nay: http://biz.yahoo.com/research/earncal/20120710.html
phần cuối cùng của URL là ngày (ở định dạng YYYYMMDD) mà bạn muốn có Lịch thu nhập. Bạn có thể lặp lại vài ngày và tìm các Biểu tượng của tất cả các cổ phiếu đã báo cáo thu nhập vào những ngày đó.
Không có gì đảm bảo rằng yahoo có dữ liệu cho tất cả các cổ phiếu báo cáo thu nhập, đặc biệt là khi một số cổ phiếu không còn tồn tại (phá sản, mua lại, v.v.), nhưng đây có lẽ là một điểm khởi đầu tốt.
Nếu bạn đã quen R
, bạn có thể sử dụng
gói qmao để làm điều này. (Xem bài đăng này ) nếu bạn gặp sự cố khi cài đặt nó.
ec <- getEarningsCalendar(from="2011-01-01", to="2012-07-01") #this may take a while
s <- unique(ec$Symbol)
length(s)
#[1] 12223
head(s, 20) #look at the first 20 Symbols
# [1] "CVGW" "ANGO" "CAMP" "LNDC" "MOS" "NEOG" "SONC"
# [8] "TISI" "SHLM" "FDO" "FC" "JPST.PK" "RECN" "RELL"
#[15] "RT" "UNF" "WOR" "WSCI" "ZEP" "AEHR"
Điều này sẽ không bao gồm bất kỳ ETF, hợp đồng tương lai, quyền chọn, trái phiếu, ngoại hối hoặc quỹ tương hỗ nào.
Bạn có thể lấy danh sách các ETF từ yahoo tại đây: http://finance.yahoo.com/etf/browser/mkt
Điều đó chỉ hiển thị 20. Bạn cần URL của liên kết "Hiển thị tất cả" ở cuối trang đó . Bạn có thể quét trang để tìm xem có bao nhiêu ETF, sau đó tạo một URL.
L <- readLines("http://finance.yahoo.com/etf/browser/mkt")
# Sorry for the ugly regex
n <- gsub("^(\\w+)\\s?(.*)$", "\\1",
gsub("(.*)(Showing 1 - 20 of )(.*)", "\\3",
L[grep("Showing 1 - 20", L)]))
URL <- paste0("http://finance.yahoo.com/etf/browser/mkt?c=0&k=5&f=0&o=d&cs=1&ce=", n)
#http://finance.yahoo.com/etf/browser/mkt?c=0&k=5&f=0&o=d&cs=1&ce=1442
Bây giờ, bạn có thể trích xuất các Mã từ bảng trên trang đó
library(XML)
tbl <- readHTMLTable(URL, stringsAsFactors=FALSE)
dat <- tbl[[tail(grep("Ticker", tbl), 1)]][-1, ]
colnames(dat) <- dat[1, ]
dat <- dat[-1, ]
etfs <- dat$Ticker # All ETF tickers from yahoo
length(etfs)
#[1] 1442
head(etfs)
#[1] "DGAZ" "TAGS" "GASX" "KOLD" "DWTI" "RTSA"
Đó là về tất cả sự trợ giúp mà tôi có thể cung cấp, nhưng bạn có thể làm điều gì đó tương tự để nhận được một số hợp đồng tương lai mà họ cung cấp bằng cách cạo các trang này (Đây chỉ là hợp đồng tương lai của Hoa Kỳ)
http://finance.yahoo.com/indices?e=futures ,
http://finance.yahoo.com/futures?t=energy ,
http://finance.yahoo.com/futures?t=metals ,
http: //finance.yahoo.com/futures?t=grains ,
http://finance.yahoo.com/futures?t=livestock ,
http://finance.yahoo.com/futures?t=softs ,
http: // Financial.yahoo.com/futures?t=indices ,
Và, đối với các chỉ số Hoa Kỳ và không thuộc Hoa Kỳ, bạn có thể loại bỏ các trang này
http://finance.yahoo.com/intlindices?e=americas ,
http://finance.yahoo.com/intlindices?e=asia ,
http://finance.yahoo.com/intlindices?e=europe ,
http: //finance.yahoo.com/intlindices?e=africa ,
http://finance.yahoo.com/indices?e=dow_jones ,
http://finance.yahoo.com/indices?e=new_york ,
http: // Financial.yahoo.com/indices?e=nasdaq ,
http://finance.yahoo.com/indices?e=sp ,
http://finance.yahoo.com/indices?e=other ,
http: // Finance. yahoo.com/indices?e=treasury ,
http://finance.yahoo.com/indices?e=commodities