LoginSignup
3
3

More than 3 years have passed since last update.

Pythonで米国取引所上場銘柄のTicker Symbolを取得する

Last updated at Posted at 2020-08-02

はじめに

ニューヨーク証券取引所(NYSE)とNASDAQの株価のデータを取得しようと思ったら、銘柄のTicker Symbolを知る必要があったため、その方法を記します。上場している銘柄すべてがリストアップされているかを確認していませんので、参考まで。

環境

Windows 10 home

Anaconda(Python 3.7.6)

Pandas 0.24.2

Ticker Symbolを取得する

NASDAQのftpからリストを取得して、成型します。

import pandas as pd

others_list = 'ftp://ftp.nasdaqtrader.com/symboldirectory/otherlisted.txt'
nasdaq_list = 'ftp://ftp.nasdaqtrader.com/symboldirectory/nasdaqlisted.txt'

def symbols_nyse():
    other = pd.read_csv(others_list, sep='|')
    #NYSEのものを取得する
    company_nyse = other[other['Exchange']=='N'][['ACT Symbol', 'Security Name']]
    #ETFはMYSE MKT、NYSE ARCA、MATSがある。
    etf_other = other[other['ETF'] == 'Y'][['ACT Symbol', 'Security Name', 'Exchange']]   
    #indexはリセットする
    company_nyse = company_nyse.reset_index(drop=True)
    etf_other = etf_other.reset_index(drop=True)
    #ACT Symbol -> Symbol
    company_nyse = company_nyse.rename(columns={'ACT Symbol':'Symbol'})
    etf_other = eft_other.rename(columns={'ACT Symbol':'Symbol'})

    return company_nyse, etf_other

def symbols_nasdaq():
    nasdaq = pd.read_csv(nasdaq_list, sep='|')
    #StatusがNormalのものだけを取得する
    nasdaq_normal = nasdaq[nasdaq['Financial Status']=='N']
    #Test issueでないものを選択する
    nasdaq_normal = nasdaq_normal[nasdaq_normal['Test Issue']=='N']
    #ETFかどうかで判別
    company_nasdaq = nasdaq_normal[nasdaq_normal['ETF']=='N'][['Symbol', 'Security Name']]
    etf_nasdaq = nasdaq_normal[nasdaq_normal['ETF']=='Y'][['Symbol', 'Security Name']]
    #indexはリセットする
    company_nasdaq = company_nasdaq.reset_index(drop=True)
    etf_nasdaq = etf_nasdaq.reset_index(drop=True)

    return company_nasdaq, etf_nasdaq

def symbols_all():
    company_nyse, etf_other = symbols_nyse()
    company_nasdaq, etf_nasdaq = symbols_nasdaq()
    #NYSEとNASDAQは区別する
    company_nyse['Market'] = 'NYSE'
    company_nasdaq['Market'] = 'NASDAQ'    
    #NASDAQのETFも区別しておく
    etf_nasdaq['Exchange'] = 'NASDAQ'#etf_otherのcolum名に合わせる

    return (pd.concat([company_nyse, company_nasdaq], ignore_index=True, sort=False),
            pd.concat([etf_other, etf_nasdaq], ignore_index=True, sort=False))

Ticker Symbolを表示

'Symbol'列を見れば、上場している企業のTicker Symbolがわかります。

company, etf = symbols_all()
company

symbols.png

 参考

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3