Python module to get stock data/cryptocurrencies from the Alpha Vantage API
Alpha Vantage delivers a free API for real time financial data and most used finance indicators in a simple json or pandas format. This module implements a python interface to the free API provided by Alpha Vantage. It requires a free API key, that can be requested from http://www.alphavantage.co/support/#api-key. You can have a look at all the API calls available in their API documentation.
For code-less access to the APIs, you may also consider the official Google Sheet Add-on or the Microsoft Excel Add-on by Alpha Vantage. Check out this guide for some common tips on working with financial market data.
To install the package use:
pip install alpha_vantage
Or install with pandas support, simply install pandas too:
pip install alpha_vantage pandas
If you want to install from source, then use:
git clone https://github.com/RomelTorres/alpha_vantage.git
pip install -e alpha_vantage
To get data from the API, simply import the library and call the object with your API key. Next, get ready for some awesome, free, realtime finance data. Your API key may also be stored in the environment variable ALPHAVANTAGE_API_KEY
.
from alpha_vantage.timeseries import TimeSeries
ts = TimeSeries(key='YOUR_API_KEY')
# Get json object with the intraday data and another with the call's metadata
data, meta_data = ts.get_intraday('GOOGL')
You may also get a key from rapidAPI. Use your rapidAPI key for the key variable, and set rapidapi=True
ts = TimeSeries(key='YOUR_API_KEY',rapidapi=True)
Internally there is a retries counter, that can be used to minimize connection errors (in case that the API is not able to respond in time), the default is set to5 but can be increased or decreased whenever needed.
ts = TimeSeries(key='YOUR_API_KEY',retries='YOUR_RETRIES')
The library supports giving its results as json dictionaries (default), pandas dataframe (if installed) or csv, simply pass the parameter output_format='pandas' to change the format of the output for all the API calls in the given class. Please note that some API calls do not support the csv format (namely ForeignExchange, SectorPerformances and TechIndicators
) because the API endpoint does not support the format on their calls either.
ts = TimeSeries(key='YOUR_API_KEY',output_format='pandas')
The pandas data frame given by the call, can have either a date string indexing or an integer indexing (by default the indexing is 'date'),depending on your needs, you can use both.
# For the default date string index behavior
ts = TimeSeries(key='YOUR_API_KEY',output_format='pandas', indexing_type='date')
# For the default integer index behavior
ts = TimeSeries(key='YOUR_API_KEY',output_format='pandas', indexing_type='integer')
The data frame structure is given by the call on alpha vantage rest API. The column names of the data framesare the ones given by their data structure. For example, the following call:
from alpha_vantage.timeseries import TimeSeries
from pprint import pprint
ts = TimeSeries(key='YOUR_API_KEY', output_format='pandas')
data, meta_data = ts.get_intraday(symbol='MSFT',interval='1min', outputsize='full')
pprint(data.head(2))
The headers from the data are specified from Alpha Vantage (in previous versions, the numbers in the headers were removed, but long term is better to have the data exactly as Alpha Vantage produces it.)
Using pandas support we can plot the intra-minute value for 'MSFT' stock quite easily:
from alpha_vantage.timeseries import TimeSeries
import matplotlib.pyplot as plt
ts = TimeSeries(key='YOUR_API_KEY', output_format='pandas')
data, meta_data = ts.get_intraday(symbol='MSFT',interval='1min', outputsize='full')
data['4. close'].plot()
plt.title('Intraday Times Series for the MSFT stock (1 min)')
plt.show()
The same way we can get pandas to plot technical indicators like Bollinger Bands®
from alpha_vantage.techindicators import TechIndicators
import matplotlib.pyplot as plt
ti = TechIndicators(key='YOUR_API_KEY', output_format='pandas')
data, meta_data = ti.get_bbands(symbol='MSFT', interval='60min', time_period=60)
data.plot()
plt.title('BBbands indicator for MSFT stock (60 min)')
plt.show()
We can also plot sector performance just as easy:
from alpha_vantage.sectorperformance import SectorPerformances
import matplotlib.pyplot as plt
sp = SectorPerformances(key='YOUR_API_KEY', output_format='pandas')
data, meta_data = sp.get_sector()
data['Rank A: Real-Time Performance'].plot(kind='bar')
plt.title('Real Time Performance (%) per Sector')
plt.tight_layout()
plt.grid()
plt.show()
Giving us as output:
We can also plot crypto currencies prices like BTC:
from alpha_vantage.cryptocurrencies import CryptoCurrencies
import matplotlib.pyplot as plt
cc = CryptoCurrencies(key='YOUR_API_KEY', output_format='pandas')
data, meta_data = cc.get_digital_currency_daily(symbol='BTC', market='CNY')
data['4b. close (USD)'].plot()
plt.tight_layout()
plt.title('Daily close value for bitcoin (BTC)')
plt.grid()
plt.show()
The foreign exchange endpoint has no metadata, thus only available as json format and pandas (using the 'csv' format will raise an Error)
from alpha_vantage.foreignexchange import ForeignExchange
from pprint import pprint
cc = ForeignExchange(key='YOUR_API_KEY')
# There is no metadata in this call
data, _ = cc.get_currency_exchange_rate(from_currency='BTC',to_currency='USD')
pprint(data)
Giving us as output:
{
'1. From_Currency Code': 'BTC',
'2. From_Currency Name': 'Bitcoin',
'3. To_Currency Code': 'USD',
'4. To_Currency Name': 'United States Dollar',
'5. Exchange Rate': '5566.80500105',
'6. Last Refreshed': '2017-10-15 15:13:08',
'7. Time Zone': 'UTC'
}
From version 2.2.0 on, asyncio support will now be available. This is only for python versions 3.5+. If you do not have 3.5+, the code will break.
The syntax is simple, just mark your methods with the async
keyword, and use the await
keyword.
Here is an example of a for loop for getting multiple symbols asyncronously. This greatly improving the performance of a program with multiple API calls.
import asyncio
from alpha_vantage.async_support.timeseries import TimeSeries
symbols = ['AAPL', 'GOOG', 'TSLA', 'MSFT']
async def get_data(symbol):
ts = TimeSeries(key='YOUR_KEY_HERE')
data, _ = await ts.get_quote_endpoint(symbol)
await ts.close()
return data
loop = asyncio.get_event_loop()
tasks = [get_data(symbol) for symbol in symbols]
group1 = asyncio.gather(*tasks)
results = loop.run_until_complete(group1)
loop.close()
print(results)
We have written a much more in depth article to explain asyncio for those who have never used it but want to learn about asyncio, concurrency, and multi-threading. Check it out here: Which Should You Use: Asynchronous Programming or Multi-Threading?
I have added a repository with examples in a python notebook to better see theusage of the library: https://github.com/RomelTorres/av_example
In order to run the tests you have to first export your API key so that the test can use it to run, also the tests require pandas, mock and nose.
export API_KEY=YOUR_API_KEY
cd alpha_vantage
nosetests
The code documentation can be found at https://alpha-vantage.readthedocs.io/en/latest/
Contributing is always welcome. Just contact us on how best you can contribute, add an issue, or make a PR.
You can reach/follow the Alpha Vantage team on any of the following platforms:
If you like or use this project, consider showing your support by starring it.
1.场景 程序从Alpha Vantage获取股票数据. https://www.alphavantage.co/documentation/# 以日线数据(function=TIME_SERIES_DAILY)为例实现API的调用. 程序的目的是把请求返回的数据解析后保存到数据库中. 实现过程中,从可实现到尝试找到一种更简单的实现方式. TIME_SERIES_DAILY返回的数据示例如下: {
导语 高质量的金融市场数据是任何量化交易策略的核心。对于沪深股市,美股,以及其他国际证券交易所,我们可以使用Alpha Vantage API调用个股的历史数据。这个论坛已经有很多文章详细介绍如何使用Alpha Vantage数据接口,比如wherwh的这篇Alpha Vantage API使用示例。 本文基于CSDN现有的Alpha Vantage“使用攻略”,额外列出3个比较实用的Alpha
Alpha Vantage以简单的JSON或CSV格式为实时财务数据和大多数使用的财务指标提供免费API函数。 Alpha Vantage delivers a free API for real-time financial data and most used finance indicators in a simple JSON or CSV format. 该模块实现了一个与Alpha V
作者:Ole Olaussen, Xuan Ling ### 作者邮箱:ole.olaussen@ekkobit.com, xuan.ling@ekkobit.com ### 首页:http://github.com/olemola/vantage ### 文档:None ### 下载链接 # AVAPI Get data from Alpha Vantage into python. Autho
您好,我在让Alpha Vantage api正常工作时遇到问题。 我想要得到的就是最后几天的收盘价。 我不确定自己在做什么错。 目前,我唯一的目标是在最后一天关闭时将其简单地更改为TextView“ tvStockClose”。 现在的错误是运行时错误。 任何方向的任何帮助都将受到赞赏和欢迎。 API: 链接 public void loadData() { progressDialog.set