Skip to content
All library documents

Building a Common-Stock Universe for US Market Breadth Analysis

Article Quant Q&A · Author: Samo

Summary

The document addresses how to assemble a list of common stocks traded on NYSE, NASDAQ, and AMEX for market breadth calculations. It describes using exchange symbol directory files that identify listings and indicate whether a security is an ETF, then combining the symbols with historical or current price data to count advances, declines, breakouts, or large moves.

Several alternative sources and filtering approaches are mentioned, including exchange listings, a symbol conversion function, and broader commercial or public security datasets. The discussion highlights that a complete tradable-symbol list may include ETFs, test symbols, funds, and multiple entries for securities listed in different venues. Filters based on ETF flags or industry fields can help, but the answers do not establish that any one source is fully current or that the proposed filters isolate common stocks perfectly. Universe maintenance and point-in-time membership remain important for reliable breadth research.

Key ideas

  • Exchange symbol directories can provide listing symbols, venue information, and ETF indicators.
  • Daily symbol lists can be combined with price histories to calculate market breadth statistics.
  • Removing ETFs and test symbols requires explicit filtering.
  • Alternative symbol sources may differ in coverage, freshness, and handling of multiple listings.
  • A broad security list should be checked before treating it as a common-stock universe.

Tags

Full text
# Where to download list of all common stocks traded on NYSE, NASDAQ and AMEX?


# Where to download list of all common stocks traded on NYSE, NASDAQ and AMEX?












How to get a list of all common stocks traded on NYSE, NASDAQ and AMEX? I need to be able to get the approximate list of common stocks as is available in Telechart... I can not get this data at eoddata, for example...

I would like to calculate market breadth indicators and would like to find out how many of common stocks traded were up or down 4% (breakouts/breakdowns) (Cl-Lag(Cl) > 0.04 (4% breakout), Cl-Lag(Cl) < -0.04 (4% breakdown)), how many of common stocks traded are down/up 25% in quarter etc.

My first problem is how to get a list of symbols with only common stocks (no ETFs).

## Answer by Louis Marascio (score 122)

https://quant.stackexchange.com/a/1862

NASDAQ makes this information available via FTP and they update it every night. Log into `ftp.nasdaqtrader.com` anonymously. Look in the directory `SymbolDirectory`. You'll notice two files: `nasdaqlisted.txt` and `otherlisted.txt`. These two files will give you the entire list of tradeable symbols, where they are listed, their name/description, and an indicator as to whether they are an ETF.

Given this list, which you can pull each night, you can then query Yahoo to obtain the necessary data to calculate your statistics.

UPDATE: More information about these files and their fields can be found here.

## Answer by Ryan Lester (score 32)

https://quant.stackexchange.com/a/9643

Slightly ugly bash one-liner for a sorted JSON array:

`echo "[\"$(echo -n "$(echo -en "$(curl -s --compressed 'ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqlisted.txt' | tail -n+2 | head -n-1 | perl -pe 's/ //g' | tr '|' ' ' | awk '{printf $1" "} {print $4}')\n$(curl -s --compressed 'ftp://ftp.nasdaqtrader.com/SymbolDirectory/otherlisted.txt' | tail -n+2 | head -n-1 | perl -pe 's/ //g' | tr '|' ' ' | awk '{printf $1" "} {print $7}')" | grep -v 'Y$' | awk '{print $1}' | grep -v '[^a-zA-Z]' | sort)" | perl -pe 's/\n/","/g')\"]"`

EDIT: Filtered out test stocks

## Answer by Steve Severance (score 20)

https://quant.stackexchange.com/a/1641

Bloomberg Open Symbology has this list. Look in the Common Stock precanned file. This will have a bit more data than you probably need as it has a separate entry and unique id for each place an equity is traded. However it is probably the highest quality list available for free anywhere.

As for filtering ETFs are broken out in a separate file (Equity_ETP) so you simply need to filter by exchange.

Update November 2017: BSYM is no more and its replacement does not have prebuilt files as far as I can tell.

## Answer by joshayers (score 18)

https://quant.stackexchange.com/a/1648

You can download all stocks on the three exchanges listed in your question from the NASDAQ website: http://www.nasdaq.com/screening/company-list.aspx.

It looks like removing those entries with an industry of "N/A" will eliminate ETFs and other funds from the list.

## Answer by Joshua Ulrich (score 9)

https://quant.stackexchange.com/a/1649

The `stockSymbols` function in the R package TTR pulls the data from nasdaq.com that @bellamyj mentioned. It also attempts to convert the symbols to a format acceptable to Yahoo Finance.

That said, I'm not certain how to filter this list for only common stocks. There are 1275 securities with "n/a" Sector or Industry, leaving ~5000. Perhaps the remaining categories in Sectors and Industries can help you further refine the list.

## Answer by Desmond830 (score 3)

https://quant.stackexchange.com/a/61389

I've been using this API called Stock Coverage from unibit. It covers around 70,000 stocks from 49 exchanges. Though I'm not sure if it is the most updated. A few recent IPOs can be found in the list.

The ticker standard seem to complies with Yahoo's and it works with many of the other APIs in their site.

All their listed tickers can be found on this public domain.

## Answer by Mike Williams (score 0)

https://quant.stackexchange.com/a/61437

Do you have an existing brokerage account or perhaps a data provider you're subscribed to? I was able to previously receive a complete list of stocks for the full Equities universe on all the US exchanges from algoseek.com

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.