Customize 3 lines of code to see finance data in Python

How anyone can plot Yahoo Finance data

Deephaven Data Labs
3 min readApr 25, 2022

My co-workers and I recently read a great blog post by Alain Saamego that shows an easy, accessible way to get stock data from Yahoo Finance with only three lines of Python code. We’d like to build on that tutorial by adding plots into the mix.

The ability to visualize data is probably one of the most important aspects leading to understanding. Effective plots can unlock the insight needed to make informed decisions and become even more powerful when combined with real-time data.

This post shows you how to see powerful plots from Yahoo Finance using Matplotlib. This code is designed to work in any python3 instance by changing three lines of code:

  • update the period of the plot,
  • the interval,
  • and the symbol.

You can look up what tickers are available on Yahoo Finance.

The code

This example starts with traditional stock (MSFT), a cryptocurrency (BTC-USD), an ETF (PXE), a currency (JPY=X), a future (ES=F), and an option (VIX220420C00030000) to show the wide array of financial information you can pull from this API.

# variables to tune your plots# valid periods: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max
period = '1d'
# valid intervals: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo
interval = '5m'
# the stocks you want to plot
stocks = ['MSFT', 'BTC-USD', 'PXE', 'JPY=X', 'ES=F', 'VIX220420C00030000']
#Below is the code that will run in python3
# imports and installs
import os
os.system("pip install yfinance")
os.system("pip install mplfinance")
import datetime
import yfinance as yf
import mplfinance as mpf
import matplotlib.pyplot as plt
# method to grab data and plot the data
def plot_stocks_df(stocks, period='1d' , interval='1m'):
for stock in stocks:
plt.figure()
temp = yf.Ticker(stock)
hist = yf.download(tickers=stock, period=period, interval=interval)
mpf.plot(hist, type='candle',
volume=True, mav=(20,5),title = stock+" "+datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
tight_layout=True, figratio=(10,5))
globals()[f"plot_{stock}_{interval}"] = plt.gcf()
# call the method
plot_stocks_df(stocks, period, interval)

The first two plots are shown below:

Deephaven is a powerful query engine that excels at handling real-time data. Many of our customers are experienced traders, but the Deephaven Query Language and UI make handling this kind of data accessible to anyone. Although Deephaven has built-in plotting methods, you can install Matplotlib into the Deephaven IDE to elevate your plots. Use our guide, How to use Matplotlib in Deephaven, to get started with the simple code above.

Talk to us

Tell us how you tuned the code on Slack!

y!finance is distributed under the Apache Software License. See the LICENSE file in the release for details.

--

--

Deephaven Data Labs

Deephaven is a high-performance time-series query engine. Its full suite of API’s and intuitive UI make data analysis easy. Check out deephaven.io