Skip to content

Instantly share code, notes, and snippets.

@McKlayne
Last active June 10, 2021 01:14
Show Gist options
  • Select an option

  • Save McKlayne/8ed59dc287a37824e8ad2817f96833f0 to your computer and use it in GitHub Desktop.

Select an option

Save McKlayne/8ed59dc287a37824e8ad2817f96833f0 to your computer and use it in GitHub Desktop.
A break down of how to grab all of the analyst data from Webull for every stock.
#Import all packages needed
import pandas as pd
import numpy as np
from config import username, password
from progressbar import progressbar
from webull import webull # for paper trading, import 'paper_webull'
#login to webull/authenticate with API
wb = webull()
wb.login(username, password)
#Grab all active stocks on webull
data = wb.get_active_gainer_loser('active', 9999)
#Convert to dataframe
data = pd.DataFrame(data)
#Add columns and zero values for ratings data
data['ratingTotal'] = np.zeros(len(data.tickerId))
data['ratingAnalysis'] = np.zeros(len(data.tickerId))
data['underPerform'] = np.zeros(len(data.tickerId))
data['buy'] = np.zeros(len(data.tickerId))
data['sell'] = np.zeros(len(data.tickerId))
data['strongBuy'] = np.zeros(len(data.tickerId))
data['hold'] = np.zeros(len(data.tickerId))
#Add columns and zero values for targetPrice data
data['targetLow'] = np.zeros(len(data.tickerId))
data['targetHigh'] = np.zeros(len(data.tickerId))
data['current'] = np.zeros(len(data.tickerId))
data['mean'] = np.zeros(len(data.tickerId))
#Loop through all of the stocks
for i in progressbar(range(len(data.symbol))):
try:
stock = wb.get_analysis(data.loc[i,'symbol'])
#Ratings
data.loc[i,'ratingTotal'] = stock['rating']['ratingAnalysisTotals']
data.loc[i,'ratingAnalysis'] = stock['rating']['ratingAnalysis']
data.loc[i,'underPerform'] = stock['rating']['ratingSpread']['underPerform']
data.loc[i,'buy'] = stock['rating']['ratingSpread']['buy']
data.loc[i,'sell'] = stock['rating']['ratingSpread']['sell']
data.loc[i,'strongBuy'] = stock['rating']['ratingSpread']['strongBuy']
data.loc[i,'hold'] = stock['rating']['ratingSpread']['hold']
#TargetPrice
data.loc[i,'targetLow'] = stock['targetPrice']['low']
data.loc[i,'targetHigh'] = stock['targetPrice']['high']
data.loc[i,'current'] = stock['targetPrice']['current']
data.loc[i,'mean'] = stock['targetPrice']['mean']
except KeyboardInterrupt:
break
except:
pass
#Drop to CSV file
data.to_csv("wb_analysis_data.csv", index = False)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment