Skip to content

Repository files navigation

PyPI - Python Version PyPI PyPI - Wheel PyPI - License Read the Docs Downloads CodeFactor Donate PayPal Ruff

finvizfinance

finvizfinance is a package which collects financial information from FinViz website. The package provides the information of the following:

  • Stock charts, fundamental & technical information, insider information and stock news
  • Forex charts and performance
  • Crypto charts and performance

Screener and Group provide dataframes for comparing stocks according to different filters and trading signals.

Docs: https://finvizfinance.readthedocs.io/en/latest/

Downloads

To download the latest version from GitHub:

$ git clone https://github.com/lit26/finvizfinance.git

Or install from PyPi:

$ pip install finvizfinance

Quote

Getting information (fundament, description, outer rating, stock news, inside trader) of an individual stock.

from finvizfinance.quote import finvizfinance

stock = finvizfinance('tsla')

Chart

stock.ticker_charts()

Fundament

stock_fundament = stock.ticker_fundament()

# result
# stock_fundament = {'Company': 'Tesla, Inc.', 'Sector': 'Consumer Cyclical',
# 'Industry': 'Auto Manufacturers', 'Country': 'USA', 'Index': '-', 'P/E': '849.57',
# 'EPS (ttm)': '1.94', 'Insider Own': '0.10%', 'Shs Outstand': '186.00M',
# 'Perf Week': '13.63%', 'Market Cap': '302.10B', 'Forward P/E': '106.17',
# ...}

Description

stock_description = stock.ticker_description()

# stock_description
# stock_description = 'Tesla, Inc. designs, develops, manufactures, ...'

Peer

stock_peer = stock.ticker_peer()

# stock_peer
# stock_peer = ['LI', 'XPEV', 'NIO', 'RIVN', 'LCID', 'TM', 'HMC', 'GM', 'STLA', 'F']

ETF Holders

stock_etf_holders = stock.ticker_etf_holders()

# stock_etf_holders
# stock_etf_holders = ['VTI', 'VOO', 'IVV', 'SPY', 'VUG', 'QQQ', 'VGT', 'IWF', 'XLK', 'SPLG']

Outer Ratings

outer_ratings_df = stock.ticker_outer_ratings()

Outer Ratings example

Stock News

news_df = stock.ticker_news()

stock news example

Inside Trader

inside_trader_df = stock.ticker_inside_trader()

insider trader example

News

Getting recent financial news from finviz.

from finvizfinance.news import News

fnews = News()
all_news = fnews.get_news()

Finviz News include 'news' and 'blogs'.

all_news['news'].head()

news example

all_news['blogs'].head()

news example

Insider

Getting insider trading information.

from finvizfinance.insider import Insider

finsider = Insider(option='top owner trade')
# option: latest, top week, top owner trade
# default: latest

insider_trader = finsider.get_insider()

insider example

Screener (Overview, Valuation, Financial, Ownership, Performance, Technical)

Getting multiple tickers' information according to the filters.

Example: Overview

from finvizfinance.screener.overview import Overview

foverview = Overview()
filters_dict = {'Index':'S&P 500','Sector':'Basic Materials'}
foverview.set_filter(filters_dict=filters_dict)
df = foverview.screener_view()
df.head()

insider example

Screener (Ticker)

Getting list of tickers according to the filters.

Calendar

Getting the economic calendar (release datetime, impact, actual/expected/prior).

from finvizfinance.calendar import Calendar

fcalendar = Calendar()
df = fcalendar.calendar()
df.head()

Earnings

Partitioning tickers by their earnings dates for a period.

from finvizfinance.earnings import Earnings

# period: This Week (default), Next Week, Previous Week, This Month
fearnings = Earnings(period='This Week')

# mode: financial (default), overview, valuation, ownership, performance, technical
days = fearnings.partition_days(mode='financial')

# optionally export the partitioned tables
fearnings.output_excel('earning_days.xlsx')
fearnings.output_csv('earning_days')

Future

Getting futures performance.

from finvizfinance.future import Future

ffuture = Future()
# timeframe: D (default), W, M, Q, HY, Y
df = ffuture.performance(timeframe='D')
df.head()

Misc (Proxy)

Optional proxy can be used for getting information from FinViz website. Accessible from finvizfinance it's an extension of requests library proxies

from finvizfinance.util import set_proxy

proxies={'http': 'http://127.0.0.1:8080'}
set_proxy(proxies)

Credit

Developed by Tianning Li. Feel free to give comments or suggestions.