0
$\begingroup$

I'm trying to build a database of historical stock EOD price data with no survivorship bias, primarily from the S&P 500.

I have looked through numerous data sources from this website to create a database https://quantpedia.com/Links/HistoricalData including

  • quandl
  • CRSP
  • Wharton

The issue is all of these services are premium, meaning you have to pay for them. I would have used yahoo finance's API but they recently discontinued it. Does someone know of a free alternative where I can get individual stock EOD historical price data to build my database?

$\endgroup$
1

3 Answers 3

3
$\begingroup$

In our startup SimFin, we are working on exactly such a solution, which is offered for free, since we couldn't afford the pricey premium solutions neither back when we were students. To this date, we have financial ratios, Financial statements (directly sourced from the SEC's XBRL data and up to 10y back) and stock prices for over 1000+ US companies, including the entire S&P 500. The fundamental financial data is freely available and you can instantly download it via excel.

Feel free to check it out under www.simfin.com and hopefully find what you are looking for.

If you need any specific data set, just write us there and we can compile it for you in exchange for some valuable feedback.

$\endgroup$
0
$\begingroup$

The Yahoo API still works, they just slightly altered it. I'd suggest you try the quantmod package (if you're using R) - the authors already adjusted it to the changes in the API.
Here's a small example for the "Danone" stock from 2010 to 2017.

# install.packages("quantmod")
library(quantmod)
getSymbols("BN.PA",auto.assign=F,from="2010-01-01",to="2017-01-01")
# An ‘xts’ object on 2010-01-04/2016-12-30 containing:
#   Data: num [1:1790, 1:6] 42.7 43.1 42.8 42.7 42.9 ...
# - attr(*, "dimnames")=List of 2
# ..$ : NULL
# ..$ : chr [1:6] "BN.PA.Open" "BN.PA.High" "BN.PA.Low" "BN.PA.Close" ...
# Indexed by objects of class: [Date] TZ: UTC
# xts Attributes:  
#   List of 2
# $ src    : chr "yahoo"
# $ updated: POSIXct[1:1], format: "2017-06-08 21:45:57"
$\endgroup$
1
  • $\begingroup$ No delisted data in that one. Bad survivorship bias here. $\endgroup$ Jul 19, 2019 at 13:20
0
$\begingroup$

You can try alphavantage. They provide daily and intraday data up to 5-minute frequency.

If your algorithm uses lesser frequency data then you can try Quantra's Blueshift to test your algorithm for free.

$\endgroup$
1
  • $\begingroup$ No delisted data in that one. Bad survivorship bias here. $\endgroup$ Jul 19, 2019 at 13:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.