Invites for private beta of Trade Blotter open at https://tradeblotterapp.com. Performance and risk analytics for self-directed traders.

Bulk Stock Data Series Download at Jason Strimpel Finance

It is no longer necessary to download historical price information from Yahoo! Finance for multiple stocks tickers into separate spreadsheets then combining the multiple series into one spreadsheet for analysis. Commercial software packages cost as much as $60 to simply download stock data series so I decided to build a web based system myself. I mainly use this tool for identifying pairs trading opportunities, cointegration analysis, and correlation analysis in Python and MATLAB.

Quote Source

Browse for a comma delimited Excel file (.csv) with a list of valid ticker symbols in one column (example)

or manually enter tickers separated by a comma

All tickers must be valid tickers with historic data found at Yahoo! Finance

Series Frequency and Date Range

Series Frequency

Start date to end date

Missing Data         
Labels and Headers     
File Download


Use a CSV with a list of tickers or manually enter a list of tickers

Removes duplicate tickers

Removes invalid tickers and prints a message

Data available for any valid ticker with historical data on Yahoo! Finance, including indicies

Download series for open, high, low, close, adjusted close, volume, $ change, % change, relative price, or log return

Returns the number of observations retrieved on the download screen

Download series in daily, weekly, or monthly frequency

Return series in ascending or descending order

Include the observation date or an index in the first column

Fill empty values with NaN or 0 for unavailable prices (see FAQ)

Back or forward fill empty prices

Return data in XLSX or CSV file format


Enhancement (01/23/2019). Added an error message for attempts to submit without uploading CSV.

Enhancement (01/21/2019). Implemented ability to select multiple series at once for return.

Enhancement (01/04/2018). Implemented option to return adjusted prices or non-adjusted prices.

Bug fix (07/12/2017). Implemented a new data acquisition module to replace the one broken from Yahoo's API changes.

Enhancement (9/16/2016). Increased memory allocation to avoid shared memory errors.

Bug fix (1/08/2014). Fixed issue which limited ticker download (thanks @jimchampoux).

Enhancement (1/02/2014). Rewrote the data acquisition module in Python.

Enhancement (1/02/2014). Added the ability to back or forward fill empty data with yesterday or tomorrow's data.

Enhancement (11/16/2013). Modified ticker validation to speed up processing.

Bug fix (11/16/2013). Fixed issue with Mac CSV uploads (thanks @josephcohen23).

Bug fix (10/19/2010). Fixed issue with ampersands printing in the column headers.

Bug fix (9/30/2010). Disabled 'Get Series' button on submit to avoid duplicate requests.

Bug fix (9/30/2010). Fixed error when adding spaces between commas.

Enhancement (9/21/2010). Added series for $ change, % change, relative price, and log return.

Enhancement (9/19/2010). Added support for indicies.

Enhancement (9/19/2010). Added filesize and filename to download message.

Enhancement (9/19/2010). Allow data download for one ticker.

Bug fix (9/19/2010). Fixed division by zero error when returning data in descending order.

Bug fix (9/07/2010). Fixed issue of screen going blank on IE during loading process.

Enhancement (8/10/2010). Shrunk the file name to 8 alphanumeric characters.

Bug fix (8/07/2010). Application will report if a symbol does not exist but would throw an error if the symbol did exist but had no historic data. The application will now report that a symbol does not exist or has no historic data and will not throw an error.

Enhancement (7/10/2010). Application returns NaN anytime an observation does not exist. For example, non-US markets were trading on July 5, 2010 while US markets were not. NaN will be returned for all US symbols on July 5, 2010 while non-US sybmols will return the appropriate data point.

Enhancement (7/10/2010). History for non-US sybmols supported.

Frequently Asked Questions

Q. How many tickers can I request data for?

A. The amount of data you can request (tickers for a given date range) is determined by my host, IONOS, at this point. It seems to top out around 50MB of data.

Q. Why does my weekly data have Mondays as the date index?

A. This is the method that Yahoo employs. As the week progresses, the open will stay the same (Monday morning opening) but the high, low, close, and average volume will fluctuate depending on what happens throughout the week. This way you don't have to wait until Friday for the current week's print. (This logic applies to the monthly data as well.)

Q. What does the uploaded CSV need to look like?

A. The uploaded file must be a CSV. Tickers you wish to get data for must all be included in the first column of the spreadsheet, one ticker symbol per row. Download an example.

Q. What ticker symbols can be included?

A. Any ticker that has historical data on Yahoo! Finance.

Q. What happens if I request data for a symbol on a day where there is no data?

A. The application takes into account days of no data and properly aligns the series. Any observation with no data point will have a user-selected value, either an NaN or 0printed. For example, US markets did not trade on July 5, 2010 however markets in Argentina did. Using the example tickers in the manual ticker entry box above, you will see an NaN for YHOO, GOOG, and MSFT for July 5, 2010 while there is a data point for ALUA.BA. For days where all input symbols have no data, the observation is excluded from the download.

Q. What does it mean to back or forward fill the data?

A. With time series data, using fill forward is extremely common so that the "last known value" is available at every time point. Select fill forward to make this occur. Fill backward is less common in time series data (you don't know tomorrow's values today), but is included for completeness.

Q. What does "Return series in ascending order" mean?

A. If this box is selected, observations will be returned in ascending order (start date first to end date). For example, selecting daily observations between July 5, 2007 and December 31, 2009 in ascending order will return observations starting at July 5, 2007 and ending at December 31, 2009.

Q. What is included when the "Include column headers" box is checked?

A. When this box is checked, the ticker symbols will be included at the top of the data series. If you include the date or generic index number, Date or Obs. will be the header for that column, respectively.

Sponsored Links

Donate today!

If you found this tool useful, consider donating

Sponsored Links

Finviz.com has some of the best tools on the Web