Getting historical stock/ETF prices in python

Since I am the only non-software engineer here (:wink:), maybe someone has a tip for me here…

What are you using to get historical stock/etf prices directly in python?

The google finance API that used to work with pandas_datareader.data is kaputt and the other API options listed here are limited in the time-span they cover, or the stocks/etfs they offer (limited European-listed stocks/etfs).

Thanks.

PS: Yes, I know I can do this all in google sheets…

You can try yahoo. I use it through beancount so I didn’t check the API myself but it seems to be able to find the data.

You’re right, thanks! I had read somewhere that it, too, had been discontinued, but didn’t actually try it out. Yahoo seems to have OK coverage of non-US-listed stocks.

I am using IEX Cloud.
Unfortunately, they do not have SIX coverage yet :frowning:

Here there is another one ! :wink::metro::railway_track::motorway:

1 Like

If you want to backtest your portfolio, I would suggest
https://www.portfoliovisualizer.com/backtest-asset-class-allocation

I have also added SPI Extra with a csv.

Unfortunately, the YahooDailyReader API is buggy for some stocks/ETFs…
image

Ah yeah I noticed the same for this ETF when looking directly at their website. For some reason it shows a value around $60 outside of market hours…

Yeah, I guess it is their data not the API that is the problem… It’s almost as if it’s jumping to its GBP price rather than USD price on certain days.

The EUR denominated Amsterdam-listed version works (‘VWRL.AS’), but the first listing there was later.

For information, I started using Alpha Vantage API. I am able to get historical data for U.S. and Swiss ETF! It works great :slight_smile:

Thanks, I will look into that one. Google used to be the best API - too bad it is disabled.

I ended up just using Google Sheets to do this…


I was curious about how often the ETF dropped by X% as my strategy is regular purchases + extra ones when it drops by 6%, 12%, 18%, etc. from its last peak. By my count, with this strategy, I would have put extra money into VWRL 19 times in the past ~7 years (13 times at -6%, 5 at -12% and once at -18%).

1 Like

Just curious on the strategy - how much are these “extra” purchases (e.g. as proportion of your “regular” ones)?
And how did you decide for these 6/12/18% specifically?

Basically, the amount should be whatever I have in cash that I can reasonably put into an investment and still have a big enough amount of cash sitting around for normal expenses. Should be more or less equal to my normal monthly purchases. The 6% etc. is arbitrary, but back-checking makes this appear to be somewhat reasonable. This is a totally arbitrary strategy…but I think it is good to have a self-defined metric for putting extra money into the market to prevent too much emotional buying on bad news.

3 Likes

I am also using Alpha Vantage and I am satisfied. I am fetching the weekly data of all the stocks and etfs from nyse and nasdaq. The only problem is that the free account is limited to 1 call every 12 seconds, and maximum 500 calls per day

1 Like

Thanks for sharing and welcome to the community. Curious of hoy you implemented the data. Do you use Alpha Vantage with Excel?

I use Matlab and Python, but there is an add-on for Excel

I directly use the REST API with C++.

Hi guys,

I haven’t been able to download Swiss stocks data since 10.07.2020. For example this query:

https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=NESN.SW&apikey=xxx

gives now this result:

{
    "Global Quote": {}
}

Other markets work okay. Anyone else experiencing this issue? Any tips?

In case anyone is interested, it works again now:

{
    "Global Quote": {
        "01. symbol": "NESN.SW",
        "02. open": "107.3400",
        "03. high": "108.5400",
        "04. low": "107.2000",
        "05. price": "107.6800",
        "06. volume": "3221737",
        "07. latest trading day": "2020-08-07",
        "08. previous close": "107.4000",
        "09. change": "0.2800",
        "10. change percent": "0.2607%"
    }
}

This does no longer work since 3 days ago… Most European stocks still work, but not the Swiss ones!!

Any backup plans?