YFinance - tickerData.info не работает для некоторых акций - PullRequest
1 голос
/ 01 марта 2020
import yfinance as yf

#define the ticker symbol
tickerSymbol = "AFT.NZ"

#get data on this ticker
tickerData = yf.Ticker(tickerSymbol)
print(tickerData.info)

Это не похоже на работу. IndexError: list index out of range

Замените «AFT.NZ» на «MSFT» или «FPH.NZ», и все работает нормально. Зайдя на сайт Yahoo, не могу понять, почему на нем нет данных.

Еще более странно, что замена print(tickerData.info) на tickerDf = tickerData.history(period='max') выводит некоторые данные.

Мне нужна информация, потому что я хочу, чтобы полное название компании, а также валюта, в которой торгуются акции. Вот почему просто не иметь данных о ценах.

AFT.NZ - только пример, большинство других на NZX50, похоже, имеют ту же проблему.

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Существует еще один финансовый пакет Yahoo, который, похоже, не имеет таких же проблем: Yahoo . Вы можете получить как имя, так и валюту (а также другую информацию) из этого:

from yahooquery import Ticker

Ticker('AFT.NZ').price
{
  "aft.nz": {
    "maxAge": 1,
    "preMarketChange": {},
    "preMarketPrice": {},
    "postMarketChange": {},
    "postMarketPrice": {},
    "regularMarketChangePercent": 0.0216216,
    "regularMarketChange": 0.07999992,
    "regularMarketTime": 1583274629,
    "priceHint": 4,
    "regularMarketPrice": 3.78,
    "regularMarketDayHigh": 3.78,
    "regularMarketDayLow": 3.72,
    "regularMarketVolume": 2466,
    "averageDailyVolume10Day": {},
    "averageDailyVolume3Month": {},
    "regularMarketPreviousClose": 3.7,
    "regularMarketSource": "DELAYED",
    "regularMarketOpen": 3.72,
    "strikePrice": {},
    "openInterest": {},
    "exchange": "NZE",
    "exchangeName": "NZSE",
    "exchangeDataDelayedBy": 0,
    "marketState": "REGULAR",
    "quoteType": "EQUITY",
    "symbol": "AFT.NZ",
    "underlyingSymbol": null,
    "shortName": "AFT Pharmaceuticals Ltd Ordinar",
    "longName": "AFT Pharmaceuticals Limited",
    "currency": "NZD",
    "quoteSourceName": "Delayed Quote",
    "currencySymbol": "$",
    "fromCurrency": null,
    "lastMarket": null,
    "volume24Hr": {},
    "volumeAllCurrencies": {},
    "circulatingSupply": {},
    "marketCap": 367828032
  }
}
0 голосов
/ 03 марта 2020

У меня была такая же проблема, и я вижу, что на github много постов с такой же ошибкой.

Я исправил ошибку с помощью try &, кроме файла base.py для yfinance

Линия 282

    # holders
    try:
        url = "{}/{}/holders".format(self._scrape_url, self.ticker)
        holders = _pd.read_html(url)
        self._major_holders = holders[0]
        self._institutional_holders = holders[1]

        if 'Date Reported' in self._institutional_holders:
            self._institutional_holders['Date Reported'] = _pd.to_datetime(
                self._institutional_holders['Date Reported'])
        if '% Out' in self._institutional_holders:
            self._institutional_holders['% Out'] = self._institutional_holders[
            '   % Out'].str.replace('%', '').astype(float)/100
    except:
        print("institutional_holders error")

Не очень хорошее решение, но оно работает для меня. Я не очень хороший программист, поэтому надеюсь, что разработчик (и) решит эту проблему более деликатным образом.

...