RomelTorres / alpha_vantage

A python wrapper for Alpha Vantage API for financial data.
MIT License
4.22k stars 735 forks source link

Alpha Vantage API Review #13

Closed wickenden-g closed 4 years ago

wickenden-g commented 7 years ago

Alpha Vantage API Review from a Python Developer

@RomelTorres congratulations on your wonderful python library for Alpha Vantage!

I am a full-stack python developer who uses the Alpha Vantage API to develop trading strategies for stocks, ETFs, and OTCs. I am wondering whether you are affiliated with Alpha Vantage, and whether this is a good place for me to leave a 360° review on their API service for future reference by the developer community.

So technically this is not a bug report or feature request - hope it's OK with you :)

The Experience

I was one of the "yahoo refugees" who stumbled upon Alpha Vantage via Google search. My first interactions with their website could be summarized by the good-old term WYSIWYG (what-you-see-is-what-you-get). Their documentation promised three things: (1) time series data with various resolutions, (2) over 50 technical signals, (3) sector data, and they kept their promise by providing demo URLs for all the said API functions.

image

They promised free API keys, and they also delivered. They promised "no promotional materials to your inbox," and indeed the only email I got from them so far was the announcement email for their new CSV feature.

This being said, there are a couple areas they could optimize upon.

The Data

Of the thousands of US-based equities I have analyzed so far, their historical data and technical indicators seem to match other reputable data sources. Their intraday data is realtime up to the current minute, which is fine for my research purposes but may not satisfy users who want to beat the market with millisecond precision. Perhaps a premium feature for this down the road?

Their JSON output is easily readable and python-parsable. For the daily time series, however, I understand that their most recent data point is the cumulative information of the current trading day (updated realtime), but why is the first timestamp in YYYY-MM-DD HH:MM:SS format while all the others are in the normal YYYY-MM-DD format typical of the EOD data?

"Meta Data": { "1. Information": "Daily Prices (open, high, low, close) and Volumes", "2. Symbol": "MSFT", "3. Last Refreshed": "2017-08-18 16:00:00", "4. Output Size": "Compact", "5. Time Zone": "US/Eastern" }, "Time Series (Daily)": { "2017-08-18 16:00:00": { "1. open": "72.2700", "2. high": "72.8400", "3. low": "71.9300", "4. close": "72.4900", "5. volume": "18215276" }, "2017-08-17": { "1. open": "73.5800", "2. high": "73.8700", "3. low": "72.4000", "4. close": "72.4000", "5. volume": "21834250" },

I would love to see a consistent YYYY-MM-DD format across all the timestamps. The "last refreshed" timestamp can be specified in Meta Data instead:

"Meta Data": { "1. Information": "Daily Prices (open, high, low, close) and Volumes", "2. Symbol": "MSFT", "3. Last Refreshed": "2017-08-18 16:00:00", "4. Output Size": "Compact", "5. Time Zone": "US/Eastern" }, "Time Series (Daily)": { "2017-08-18": { "1. open": "72.2700", "2. high": "72.8400", "3. low": "71.9300", "4. close": "72.4900", "5. volume": "18215276" }, "2017-08-17": { "1. open": "73.5800", "2. high": "73.8700", "3. low": "72.4000", "4. close": "72.4000", "5. volume": "21834250" },

In addition to the data presentation aspects, below are couple other data-related proposals:

In Summary

It is always a pleasure to have an API service that is well documented, platform/language-agnostic, and easily integratable. The fact that we have several third-party libraries built on top of Alpha Vantage on GitHub is in a sense testament to its developer-friendly nature. While there is still room for them to become a better version of themselves, I hope they thrive and stay true to the description on their home page - "driven by rigorous research, cutting edge technology, and a disciplined focus on democratizing access to data."

SterlingButters commented 5 years ago
  1. Is there a way to specify past x days, or specify the date on which I want the intraday data for?

I too would much like to see this since even though panda df slicing isnt a problem, trying to download a mass of data for one data point is quite expensive. This the most anticipated prospective feature of the Alpha Vantage API for me.

@sanjes1 @mark100net Can confirm. I have reached out to them several times with this^ inquiry (dating weeks back) but received no response... Maybe if we all send a request? haha

sanjes1 commented 5 years ago

Ok, so they will talk, but you need to pay them. I subscribed to their monthly plan. They responded pretty quick. Also for my question they provide last 1 week~ of intraday 1 min data. I dont see any interface to request for a particular date

SterlingButters commented 5 years ago

@sanjes1 The "~" 1 week of intraday depends on how many days the market is open out of the that last 7 I believe. I would use your premium status to request features such as that if you haven't already.

sanjes1 commented 5 years ago

@SterlingButters I tried, They said, they are working on it to get more data and dont have any dates :)

ramkoduru commented 5 years ago

Hi, Is there any way where we can get information of the corresponding sector for the stocks we get the data or any way we can pull the stock performance(API available) along with corresponding industries. i am working on stock predictions so checking i may get any help on this

StevenWilliams commented 5 years ago

What's the split coefficient supposed to be? I checked for some stocks that split and it was always 1.00

hsunesen commented 5 years ago

For me it has worked, using this formel for symbol, for european stocks:

Fingerprint Cards (STO: FING-B) == FING-B.STO Novo Nordisk (CPH: NOVO-B) == NOVO-B.CPH BMW (DE: BMW) == BMW.DE

I think you got the point ;)

PushT commented 4 years ago

If AlphaVantage are rearranging the letters in the acronyms of the stocks on different stock exchanges(for their API calls), they have to have a list clarifying the logic behind that. There IS no logic otherwise.

BipinSha commented 4 years ago

NSE:TITAN

@RomelTorres @thecodeflash, are you guys getting the correct timestamp for NSE:TITAN or any other NSE stock, i think it should show till 3:30 PM or something, it is showing 4:59.

PatrickAlphaC commented 4 years ago

NSE:TITAN

@RomelTorres @thecodeflash, are you guys getting the correct timestamp for NSE:TITAN or any other NSE stock, i think it should show till 3:30 PM or something, it is showing 4:59.

If you look at the time zone, it's in 6. Time Zone: "US/Eastern" you'll have to convert it to IST if that's what you're looking for. Check out this thread in StackOverflow that answers the question.

jcisio commented 4 years ago

Hello,

I know this is a long thread with a lot of questions. I should not add another comment, but I will do now, because there is a repeated question without a real question.

To get the symbol of the instrument, you can search using ISIN. For example https://www.alphavantage.co/query?function=SYMBOL_SEARCH&keywords=FR0000120172&apikey=demo

{
    "bestMatches": [
        {
            "1. symbol": "CA.PAR",
            "2. name": "Carrefour SA",
            "3. type": "Equity",
            "4. region": "Paris",
            "5. marketOpen": "09:00",
            "6. marketClose": "17:30",
            "7. timezone": "UTC+01",
            "8. currency": "EUR",
            "9. matchScore": "0.1667"
        }
    ]
}
spateltc commented 4 years ago

how to fetch data for nifty 50?can anyone help me with the url which fetch nifty 50 data

PatrickAlphaC commented 4 years ago

Hi @spateltc,

Currently, Alpha Vantage has support for stocks, crypto, TIs, sector, and FX. Index data you can get from pulling the individual stocks in the nifty 50.

jcisio commented 4 years ago

how to fetch data for nifty 50?can anyone help me with the url which fetch nifty 50 data

The symbol is NFTY. Use the search function as I pointed out in the previous comment to find the symbol. The first result is the correct one.

https://www.alphavantage.co/query?function=SYMBOL_SEARCH&keywords=NIFTY&apikey=${"apikey"}

{
    "bestMatches": [
        {
            "1. symbol": "NFTY",
            "2. name": "First Trust India NIFTY 50 Equal Weight ETF",
            "3. type": "ETF",
            "4. region": "United States",
            "5. marketOpen": "09:30",
            "6. marketClose": "16:00",
            "7. timezone": "UTC-05",
            "8. currency": "USD",
            "9. matchScore": "0.8889"
        },
        {
            "1. symbol": "ICICINIFTY.BSE",
            "2. name": "ICICI Prudential Nifty ETF",
            "3. type": "Equity",
            "4. region": "India/Bombay",
            "5. marketOpen": "09:15",
            "6. marketClose": "15:30",
            "7. timezone": "UTC+5.5",
            "8. currency": "INR",
            "9. matchScore": "0.5556"
        }
    ]
}

Then fetch the data:

https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=NFTY&apikey=${"apikey"}

{
    "Global Quote": {
        "01. symbol": "NFTY",
        "02. open": "34.8600",
        "03. high": "34.8600",
        "04. low": "34.8600",
        "05. price": "34.8600",
        "06. volume": "6",
        "07. latest trading day": "2020-01-06",
        "08. previous close": "34.9252",
        "09. change": "-0.0652",
        "10. change percent": "-0.1867%"
    }
}
jcisio commented 4 years ago

Please ignore my previous comment. It was about an ETF. As per @PatrickAlphaVantage 's answer, to calculate an index, calculate the components is a solution.

PatrickAlphaC commented 4 years ago

Thanks @jcisio for the info on the ETF

jcisio commented 4 years ago

@PatrickAlphaVantage I was looking for an alternative to my costly provider and alphavantage was one of the candiates but it has some blocking problems. Now I've just found out another big problem: no index data :( I've just searching a few examples and it really does not have index data. We can also use maths to calculate, but then it adds extra complexity.

wickenden-g commented 4 years ago

Hi folks, I am the OP of this Github issue. Appreciate the responses to my post (my inbox is exploding!), but frankly I don't feel comfortable seeing my review article morphing into tangential discussions. This issue is for reviewing the Alpha Vantage APIs, not for technical support or marketing campaigns.

Can the moderators do something about the off-topic posts?