AlphaVantage.jl v0.1
Dec 23, 2017 · 376 words · 2 minutes read
AlphaVantage.jl is a Julia package for the Alpha Vantage API, a free API for stock and cryptocurrency time series data. AlphaVantage.jl provides functions that wrap the API endpoints to Julia functions.
Note: Endpoints for stock time series data, foreign exchange rates, and cryptocurrencies have been fully implemented but technical indicators are underdevelopment.
Quick tutorial
Although the Alpha Vantage API is free you are required to register and use an API key. Start by getting a free API key from Alpha Vantage and set it as an environment variable, ALPHA_VANTAGE_API_KEY
.
Install the package using Pkg.clone("git://GitHub.com/ellisvalentiner/AlphaVantage.jl")
as it is not yet registered. Then import the package.
using AlphaVantage
Stock Time Series
You can access stock time series data using one of the time_series_*
functions, where *
corresponds to one of four temporal resolutions: intraday
, daily
, weekly
, or monthly
.
For example, the following function retrieves daily time series for the S&P 500.
gspc = time_series_daily("^GSPC");
keys(gspc)
Base.KeyIterator for a Dict{String,Any} with 2 entries. Keys:
"Time Series (Daily)"
"Meta Data"
The functions returns a Dict with data and metadata. Unfortunately the Dict key corresponding to the requested data is different for different methods; in the example above gspc
has the keys Time Series (Daily)
and Meta Data
however the key for the data would be Time Series (1min)
if you used the time_series_intraday
function. Therefore you may want to pass datatype="csv"
to return an array.
Digital Currencies
The Alpha Vantage API provides price and volume quotes for 392 cryptocurrencies. The functions to access this data is similar to that of the stock market data functions above.
If you want to request data for multiple cryptocurrencies you can use Julia’s dot syntax:
coins = ["btc", "eth", "ltc"]
cryptodata = digital_currency_intraday.(coins, datatype="csv")
In this example cryptodata
is an array of arrays containing the intraday price and volume.
Example: Plotting the S&P 500
using AlphaVantage
using DataFrames
using StatPlots
gr(size=(800, 470))
# Get daily S&P 500 data
gspc = time_series_daily("^GSPC", datatype="csv");
# Convert to a DataFrame
data = DataFrame(gspc[2:end, :]);
# Add column names
names!(data, convert.(Symbol, gspc[1,:]));
# Convert timestamp column to Date type
data[:timestamp] = Dates.Date.(data[:timestamp]);
# Plot the timeseries
@df data plot(:timestamp, [:close],
label=["Close"], xlabel="Date", ylabel="Price",
ylims=(2400, 2700),
colour=[:red], fill=(0, 0.25, :red), w=2,
title="S&P 500 Closing Price", legend=false,
yformatter=y -> "\$$(string(Int(y)))")