Просто ищу простой возврат API, где я могу ввести символ тикера и получить полное название компании:
тикер ('MSFT') вернет "Microsoft"
Просто ищу простой возврат API, где я могу ввести символ тикера и получить полное название компании:
тикер ('MSFT') вернет "Microsoft"
Сначала вам нужно найти веб-сайт / API, который позволяет вам искать биржевые символы и предоставлять информацию. Затем вы можете запросить информацию у этого API.
Я придумал быстрое и грязное решение здесь:
import requests
def get_symbol(symbol):
symbol_list = requests.get("http://chstocksearch.herokuapp.com/api/{}".format(symbol)).json()
for x in symbol_list:
if x['symbol'] == symbol:
return x['company']
company = get_symbol("MSFT")
print(company)
Этот веб-сайт предоставляет только название компании. Никаких проверок ошибок я не ставил. И вам нужен модуль requests
, чтобы он работал. Пожалуйста, установите его, используя pip install requests
.
Обновление: вот пример кода с использованием Yahoo! Финансовый API:
import requests
def get_symbol(symbol):
url = "http://d.yimg.com/autoc.finance.yahoo.com/autoc?query={}®ion=1&lang=en".format(symbol)
result = requests.get(url).json()
for x in result['ResultSet']['Result']:
if x['symbol'] == symbol:
return x['name']
company = get_symbol("MSFT")
print(company)
import yfinance as yf
msft = yf.Ticker("MSFT")
company_name = msft.info['longName']
#Output = 'Microsoft Corporation'
Таким образом, вы сможете получить полные названия компаний из биржевых символов.
Использование нечеткого соответствия для получения символа компании из названия компании или наоборот
from fuzzywuzzy import process
import requests
def getCompany(text):
r = requests.get('https://api.iextrading.com/1.0/ref-data/symbols')
stockList = r.json()
return process.extractOne(text, stockList)[0]
getCompany('GOOG')
getCompany('Alphabet')
Вот еще один вызов API Yahoo. Вызов @masnun вернет все результаты, содержащие параметр поиска, например, попытка AMD (Advanced Micro Devices): http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=amd®ion=1&lang=en
дает вам AMD (Advanced Micro Devices, Inc.), AMDA (Amedica Corporation), DOX (Amdocs Limited),
и т. д.
Если вы знаете тикер, вы можете попробовать любой из этих API Yahoo: z http://finance.yahoo.com/d/quotes.csv?s=amd&f=nb4t8
(хорошо задокументировано, этот конкретный вызов запрашивает n = имя; b4 = балансовая стоимость; t8 = целевая цена за 1 год). https://query2.finance.yahoo.com/v7/finance/options/amd
(не очень хорошо документировано, но новое... см. дополнительную информацию об этом API здесь: https://stackoverflow.com/a/40243903/933972)
Забыл включить Google API, который подходит для котировок акций, но ненадежен для полных данных о цепочках опционов: 'https://www.google.com/finance?q=nyse:amd&output=json'
Я использую Quandl для цен, поэтому, когда у меня возникла похожая проблема, я решил проверить там. Если вы перейдете на https://www.quandl.com/data/EOD-End-of-Day-US-Stock-Prices/documentation примерно на четверти пути вниз в разделе «Доступные тикеры» есть ссылка для загрузки CSV-файла, содержащего имена и тикеры. Затем я использую следующий код, чтобы создать словарь с тикером в качестве ключа и назвать значение.
def companyNames():
`` cnames = pd.read_csv('ticker_list.csv') cnames_dict = pd.Series(cnames.Name.values, index=cnames.Ticker).to_dict()
return cnames_dict