Last active
June 10, 2021 01:14
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #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