2014-09-02 2 views
2

У меня есть поле данных, содержащих названия компании, такие какПрограммным искать символ тикер в R

company <- c("Microsoft", "Apple", "Cloudera", "Ford") 
> company 

    Company 
1 Microsoft 
2 Apple 
3 Cloudera 
4 Ford 

и так далее.

Пакет tm.plugin.webmining позволяет запрашивать данные с Yahoo! Финансы на основе символов тикера:

require(tm.plugin.webmining) 
results <- WebCorpus(YahooFinanceSource("MSFT")) 

Мне не хватает промежуточного шага. Как я могу запросить символы билетов программно на основе названий компаний?

ответ

5

мне не удалось сделать это с tm.plugin.webmining пакет, но я придумал шероховатой решение - вытягивать & синтаксического анализа данных из этого веб-файла: ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqlisted.txt. Я говорю грубо, потому что почему-то мои звонки с httr::content(httr::GET(...)) не работают каждый раз - я думаю, что это связано с типом веб-адреса (ftp://), но я не делаю так много веб-соскабливаний, поэтому я не могу объясните это. Казалось, что он работает лучше на моем Linux, чем мой Mac, но это может быть неуместным. Несмотря на это, вот что я получил: Благодаря @ thelatemail замечании, это, кажется, работает более гладко:

library(quantmod) ## optional 
symbolData <- read.csv(
    "ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqlisted.txt", 
    sep="|") 
## 
> head(symbolData,10) 
    Symbol             Security.Name Market.Category Test.Issue Financial.Status Round.Lot.Size 
1 AAIT iShares MSCI All Country Asia Information Technology Index Fund    G   N    N   100 
2  AAL     American Airlines Group, Inc. - Common Stock    Q   N    N   100 
3 AAME     Atlantic American Corporation - Common Stock    G   N    N   100 
4 AAOI     Applied Optoelectronics, Inc. - Common Stock    G   N    N   100 
5 AAON          AAON, Inc. - Common Stock    Q   N    N   100 
6 AAPL          Apple Inc. - Common Stock    Q   N    N   100 
7 AAVL     Avalanche Biotechnologies, Inc. - Common Stock    G   N    N   100 
8 AAWW      Atlas Air Worldwide Holdings - Common Stock    Q   N    N   100 
9 AAXJ    iShares MSCI All Country Asia ex Japan Index Fund    G   N    N   100 
10 ABAC      Aoxin Tianli Group, Inc. - Common Shares    S   N    N   100 

Edit: Согласно @ предложение GSEE, в а (предположительно) более надежный способ для получения источник данных с stockSymbols() функции в пакете TTR:

> symbolData2 <- stockSymbols(exchange="NASDAQ") 
Fetching NASDAQ symbols... 
> ## 
> head(symbolData2) 
    Symbol               Name LastSale MarketCap IPOyear   Sector 
1 AAIT iShares MSCI All Country Asia Information Technology Index Fun 34.556  6911200  NA   <NA> 
2 AAL         American Airlines Group, Inc. 40.500 29164164453  NA Transportation 
3 AAME         Atlantic American Corporation 4.020  83238028  NA  Finance 
4 AAOI         Applied Optoelectronics, Inc. 20.510 303653114 2013  Technology 
5 AAON              AAON, Inc. 18.420 1013324613  NA Capital Goods 
6 AAPL              Apple Inc. 103.300 618546661100 1980  Technology 
         Industry Exchange 
1       <NA> NASDAQ 
2 Air Freight/Delivery Services NASDAQ 
3     Life Insurance NASDAQ 
4     Semiconductors NASDAQ 
5 Industrial Machinery/Components NASDAQ 
6   Computer Manufacturing NASDAQ 

Я не знаю, если вы просто хотели, чтобы получить тикер символы из имен, но если вы также ищете фактической информации о ценах акций вы могли бы сделать что-то как t его:

namedStock <- function(name="Microsoft", 
         start=Sys.Date()-365, 
         end=Sys.Date()-1){ 
    ticker <- symbolData[agrep(name,symbolData[,2]),1] 
    getSymbols(
    Symbols=ticker, 
    src="yahoo", 
    env=.GlobalEnv, 
    from=start,to=end) 
} 
## 
## an xts object named MSFT will be added to 
## the global environment, no need to assign 
## to an object 
namedStock() 
## 
> str(MSFT) 
An ‘xts’ object on 2013-09-03/2014-08-29 containing: 
    Data: num [1:251, 1:6] 31.8 31.4 31.1 31.3 31.2 ... 
- attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr [1:6] "MSFT.Open" "MSFT.High" "MSFT.Low" "MSFT.Close" ... 
    Indexed by objects of class: [Date] TZ: UTC 
    xts Attributes: 
List of 2 
$ src : chr "yahoo" 
$ updated: POSIXct[1:1], format: "2014-09-02 21:51:22.792" 
> chartSeries(MSFT) 

enter image description here

Так как я уже сказал, это не самое чистое решение, но мы надеемся, это поможет вам. Также обратите внимание, что мой источник данных привлекал компании, торгуемые на NASDAQ (это самые крупные компании), но вы могли бы легко объединить это с другими источниками.

+2

Я не знаю, почему вы беспокоились обо всем этом 'httr' и расширенных пакетах' read.csv ("ftp: //path/file.csv", sep = "|") 'получит его просто хорошо. 'file =' может быть любым доступным соединением. – thelatemail

+0

@thelatemail Спасибо, что указали, что нет - я обновил свой ответ. – nrussell

+2

или вы можете использовать 'stockSymbols()' – GSee

Смежные вопросы