Yahoo Finance API возвращает NAN для некоторых тикеров - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь использовать Yahoo Finance для очень простого анализа, просто чтобы привыкнуть к работе с ним. Я пытаюсь импортировать данные из Yahoo Finance, а затем просто отображать их на графике. В коде вы можете видеть, что я добавил несколько тикеров для получения данных, но мне никогда не удается получить данные для таких индексов, как Dow Jones, S&P 500 или NASDAQ. он продолжает возвращать NaN для всех этих.

Мой вопрос: API yahoo finance не включает эти данные или мне нужно сделать что-то еще, чтобы получить данные индексов?

(jbtw с та же проблема, когда я ищу данные ETF)

from pandas_datareader import data
import matplotlib.pyplot as plt
import pandas as pd

start_date = '2000-06-30'
end_date = '2020-06-30'

stocks = ['OMC','PUB','WPP','IXIC']

panel_data = data.DataReader(stocks,'yahoo',start_date,end_date)
panel_data = panel_data[['Adj Close']]
print(panel_data)
panel_data.plot(y = 'Adj Close')
plt.show()


Output:

Attributes  Adj Close                           
Symbols           OMC        PUB        WPP IXIC
Date                                            
2000-06-30  29.635815        NaN  39.444866  NaN
2000-07-03  30.093342        NaN  39.275150  NaN
2000-07-05  29.822983        NaN  39.512760  NaN
2000-07-06  29.407042        NaN  39.852219  NaN
2000-07-07  28.284004        NaN  39.241199  NaN
  • Примечание: в приведенном выше примере столбец «PUB» получает данные только не из вставленных мной строк, IXI C это тот, который ничего не возвращает

1 Ответ

1 голос
/ 02 августа 2020

Хорошо. Этот работает хорошо, когда я его пробую. Единственное изменение, которое я сделал, - это обновление вашего тикера с IXI C на ^ IXI C, как это представлено на Yahoo Finance. Это для NASDAQ Composite (^ IXI C). Надеюсь, это тот, который вы пытаетесь получить.

from pandas_datareader import data
import matplotlib.pyplot as plt
import pandas as pd

start_date = '2000-06-30'
end_date = '2020-06-30'

stocks = ['OMC','PUB','WPP','^IXIC']

panel_data = data.DataReader(stocks,'yahoo',start_date,end_date)
panel_data = panel_data[['Adj Close']]
print(panel_data)
panel_data.plot(y = 'Adj Close')
plt.show()
...