Update reddit connection client (#4478)

* Change deprecated psaw dependency to the maintained pmaw

* Fix docstring linting errors

* Remove deprecated watchlist command because it's taking too long to run

* Remove deprecated spac command because it's taking too long to run

* Update SDK and trailmap

* Fix legacy seaborn chart popping up when calling redditsent

* Clean up spacc code

* Refactor reddit ba commands to reflect the dependency change

* Change regex that searches for tickers

* Fix popular command error when no stock tickers found

* Update tests

* Update requirements.txt files

* Sync dependencies with upstream

---------

Co-authored-by: James Maslek <jmaslek11@gmail.com>
This commit is contained in:
Theodore Aptekarev
2023-03-14 18:54:15 +01:00
committed by GitHub
parent 7ec63f827b
commit a276dc4dfe
14 changed files with 11072 additions and 11568 deletions

View File

@@ -1,4 +1,4 @@
"""Reddit Helpers"""
"""Reddit Helpers."""
__docformat__ = "numpy"
import re
@@ -8,7 +8,7 @@ import praw
def find_tickers(submission: praw.models.reddit.submission.Submission) -> List[str]:
"""Extracts potential tickers from reddit submission.
"""Extract potential tickers from reddit submission.
Parameters
----------
@@ -27,7 +27,7 @@ def find_tickers(submission: praw.models.reddit.submission.Submission) -> List[s
l_tickers_found = []
for s_text in ls_text:
for s_ticker in set(re.findall(r"([A-Z]{3,5} )", s_text)):
for s_ticker in set(re.findall(r"([A-Z]{3,5})", s_text)):
l_tickers_found.append(s_ticker.strip())
return l_tickers_found

View File

@@ -1,4 +1,4 @@
"""Reddit Model"""
"""Reddit Model."""
__docformat__ = "numpy"
# pylint:disable=C0302
@@ -10,8 +10,8 @@ from typing import List, Tuple
import finviz
import pandas as pd
import praw
from pmaw import PushshiftAPI
from prawcore.exceptions import ResponseException
from psaw import PushshiftAPI
from requests import HTTPError
from sklearn.feature_extraction import _stop_words
from tqdm import tqdm
@@ -36,114 +36,6 @@ l_sub_reddits = [
]
@log_start_end(log=logger)
@check_api_key(
[
"API_REDDIT_CLIENT_ID",
"API_REDDIT_CLIENT_SECRET",
"API_REDDIT_USERNAME",
"API_REDDIT_USER_AGENT",
"API_REDDIT_PASSWORD",
]
)
def get_watchlists(
limit: int = 5,
) -> Tuple[List[praw.models.reddit.submission.Submission], dict, int]:
"""Get reddit users watchlists [Source: reddit].
Parameters
----------
limit : int
Number of posts to look through
Returns
-------
Tuple[List[praw.models.reddit.submission.Submission], dict, int]
List of reddit submissions,
Dictionary of tickers and their count,
Count of how many posts were analyzed.
"""
current_user = get_current_user()
d_watchlist_tickers: dict = {}
l_watchlist_author = []
subs = []
praw_api = praw.Reddit(
client_id=current_user.credentials.API_REDDIT_CLIENT_ID,
client_secret=current_user.credentials.API_REDDIT_CLIENT_SECRET,
username=current_user.credentials.API_REDDIT_USERNAME,
user_agent=current_user.credentials.API_REDDIT_USER_AGENT,
password=current_user.credentials.API_REDDIT_PASSWORD,
check_for_updates=False,
comment_kind="t1",
message_kind="t4",
redditor_kind="t2",
submission_kind="t3",
subreddit_kind="t5",
trophy_kind="t6",
oauth_url="https://oauth.reddit.com",
reddit_url="https://www.reddit.com",
short_url="https://redd.it",
ratelimit_seconds=5,
timeout=16,
)
try:
praw_api.user.me()
except (Exception, ResponseException):
console.print("[red]Wrong Reddit API keys[/red]\n")
return [], {}, 0
psaw_api = PushshiftAPI()
submissions = psaw_api.search_submissions(
subreddit=l_sub_reddits,
q="WATCHLIST|Watchlist|watchlist",
filter=["id"],
)
n_flair_posts_found = 0
try:
for sub in submissions:
submission = praw_api.submission(id=sub.id)
if (
not submission.removed_by_category
and submission.selftext
and submission.link_flair_text not in ["Yolo", "Meme"]
and submission.author.name not in l_watchlist_author
):
l_tickers_found = find_tickers(submission)
if l_tickers_found:
# Add another author's name to the parsed watchlists
l_watchlist_author.append(submission.author.name)
# Lookup stock tickers within a watchlist
for key in l_tickers_found:
if key in d_watchlist_tickers:
# Increment stock ticker found
d_watchlist_tickers[key] += 1
else:
# Initialize stock ticker found
d_watchlist_tickers[key] = 1
# Increment count of valid posts found
n_flair_posts_found += 1
subs.append(submission)
if n_flair_posts_found > limit - 1:
break
except ResponseException as e:
logger.exception("Invalid response: %s", str(e))
if "received 401 HTTP response" in str(e):
console.print("[red]Invalid API Key[/red]\n")
else:
console.print(f"[red]Invalid response: {str(e)}[/red]\n")
return subs, d_watchlist_tickers, n_flair_posts_found
@log_start_end(log=logger)
@check_api_key(
[
@@ -207,43 +99,57 @@ def get_popular_tickers(
console.print("[red]Wrong Reddit API keys[/red]\n")
return pd.DataFrame()
psaw_api = PushshiftAPI()
pmaw_api = PushshiftAPI()
for s_sub_reddit in sub_reddit_list:
console.print(
f"Searching for latest tickers for {post_limit} '{s_sub_reddit}' posts"
f"Searching for tickers in latest {post_limit} '{s_sub_reddit}' posts"
)
warnings.filterwarnings(
"ignore", message=".*Not all PushShift shards are active.*"
)
submissions = psaw_api.search_submissions(
submissions = pmaw_api.search_submissions(
subreddit=s_sub_reddit,
limit=post_limit,
filter=["id"],
)
n_tickers = 0
for submission in submissions:
for submission in submissions.responses:
try:
# Get more information about post using PRAW api
submission = praw_api.submission(id=submission.id)
submission_ = praw_api.submission(id=submission["id"])
# Ensure that the post hasn't been removed by moderator in the meanwhile,
# that there is a description and it's not just an image, that the flair is
# meaningful, and that we aren't re-considering same author's content
def has_author(submission_) -> bool:
"""Check if submission has author."""
return (
hasattr(submission_, "author")
and hasattr(submission_.author, "name")
and submission_.author.name not in l_watchlist_author
)
def has_content(submission_) -> bool:
"""Check if submission has text or title."""
return hasattr(submission_, "selftext") or hasattr(
submission_, "title"
)
if (
submission is not None
and not submission.removed_by_category
and (submission.selftext or submission.title)
and submission.author.name not in l_watchlist_author
submission_ is not None
and not submission_.removed_by_category
and has_content(submission_)
and has_author(submission_)
):
l_tickers_found = find_tickers(submission)
l_tickers_found = find_tickers(submission_)
if l_tickers_found:
n_tickers += len(l_tickers_found)
# Add another author's name to the parsed watchlists
l_watchlist_author.append(submission.author.name)
l_watchlist_author.append(submission_.author.name)
# Lookup stock tickers within a watchlist
for key in l_tickers_found:
@@ -315,6 +221,8 @@ def get_popular_tickers(
"URL",
],
)
else:
popular_tickers_df = pd.DataFrame()
return popular_tickers_df
@@ -346,7 +254,6 @@ def get_spac_community(
Dataframe of reddit submission,
Dictionary of tickers and number of mentions.
"""
current_user = get_current_user()
praw_api = praw.Reddit(
@@ -460,154 +367,6 @@ def get_spac_community(
return subs, d_watchlist_tickers
@log_start_end(log=logger)
@check_api_key(
[
"API_REDDIT_CLIENT_ID",
"API_REDDIT_CLIENT_SECRET",
"API_REDDIT_USERNAME",
"API_REDDIT_USER_AGENT",
"API_REDDIT_PASSWORD",
]
)
def get_spac(
limit: int = 5,
) -> Tuple[pd.DataFrame, dict, int]:
"""Get posts containing SPAC from top subreddits [Source: reddit].
Parameters
----------
limit : int, optional
Number of posts to get for each subreddit, by default 5
Returns
-------
Tuple[pd.DataFrame, dict, int]
Dataframe of reddit submission,
Dictionary of tickers and counts,
Number of posts found.
"""
current_user = get_current_user()
praw_api = praw.Reddit(
client_id=current_user.credentials.API_REDDIT_CLIENT_ID,
client_secret=current_user.credentials.API_REDDIT_CLIENT_SECRET,
username=current_user.credentials.API_REDDIT_USERNAME,
user_agent=current_user.credentials.API_REDDIT_USER_AGENT,
password=current_user.credentials.API_REDDIT_PASSWORD,
check_for_updates=False,
comment_kind="t1",
message_kind="t4",
redditor_kind="t2",
submission_kind="t3",
subreddit_kind="t5",
trophy_kind="t6",
oauth_url="https://oauth.reddit.com",
reddit_url="https://www.reddit.com",
short_url="https://redd.it",
ratelimit_seconds=5,
timeout=16,
)
try:
praw_api.user.me()
except (Exception, ResponseException):
console.print("[red]Wrong Reddit API keys[/red]\n")
return pd.DataFrame(), {}, 0
d_watchlist_tickers: dict = {}
l_watchlist_author = []
columns = [
"Date",
"Subreddit",
"Flair",
"Title",
"Score",
"# Comments",
"Upvote %",
"Awards",
"Link",
]
subs = pd.DataFrame(columns=columns)
psaw_api = PushshiftAPI()
submissions = psaw_api.search_submissions(
subreddit=l_sub_reddits,
q="SPAC|Spac|spac|Spacs|spacs",
filter=["id"],
)
n_flair_posts_found = 0
try:
for submission in submissions:
# Get more information about post using PRAW api
submission = praw_api.submission(id=submission.id)
# Ensure that the post hasn't been removed by moderator in the meanwhile,
# that there is a description and it's not just an image, that the flair is
# meaningful, and that we aren't re-considering same author's watchlist
if (
not submission.removed_by_category
and submission.selftext
and submission.link_flair_text not in ["Yolo", "Meme"]
and submission.author.name not in l_watchlist_author
):
l_tickers_found = find_tickers(submission)
s_datetime = datetime.utcfromtimestamp(submission.created_utc).strftime(
"%Y-%m-%d %H:%M:%S"
)
s_link = f"https://old.reddit.com{submission.permalink}"
s_all_awards = "".join(
f"{award['count']} {award['name']}\n"
for award in submission.all_awardings
)
s_all_awards = s_all_awards[:-2]
data = [
s_datetime,
submission.subreddit,
submission.link_flair_text,
submission.title,
submission.score,
submission.num_comments,
f"{round(100 * submission.upvote_ratio)}%",
s_all_awards,
s_link,
]
subs.loc[len(subs)] = data
if l_tickers_found:
# Add another author's name to the parsed watchlists
l_watchlist_author.append(submission.author.name)
# Lookup stock tickers within a watchlist
for key in l_tickers_found:
if key in d_watchlist_tickers:
# Increment stock ticker found
d_watchlist_tickers[key] += 1
else:
# Initialize stock ticker found
d_watchlist_tickers[key] = 1
# Increment count of valid posts found
n_flair_posts_found += 1
# Check if number of wanted posts found has been reached
if n_flair_posts_found > limit - 1:
break
except ResponseException as e:
logger.exception("Invalid response: %s", str(e))
if "received 401 HTTP response" in str(e):
console.print("[red]Invalid API Key[/red]\n")
else:
console.print(f"[red]Invalid response: {str(e)}[/red]\n")
return subs, d_watchlist_tickers, n_flair_posts_found
@log_start_end(log=logger)
@check_api_key(
[
@@ -633,7 +392,6 @@ def get_wsb_community(limit: int = 10, new: bool = False) -> pd.DataFrame:
pd.DataFrame
Dataframe of reddit submissions
"""
current_user = get_current_user()
# See https://github.com/praw-dev/praw/issues/1016 regarding praw arguments
@@ -682,30 +440,30 @@ def get_wsb_community(limit: int = 10, new: bool = False) -> pd.DataFrame:
try:
for submission in submissions:
submission = praw_api.submission(id=submission.id)
submission_ = praw_api.submission(submission.id)
# Ensure that the post hasn't been removed by moderator in the meanwhile,
# that there is a description and it's not just an image, that the flair is
# meaningful, and that we aren't re-considering same author's watchlist
if not submission.removed_by_category:
s_datetime = datetime.utcfromtimestamp(submission.created_utc).strftime(
"%Y-%m-%d %H:%M:%S"
)
s_link = f"https://old.reddit.com{submission.permalink}"
if not submission_.removed_by_category:
s_datetime = datetime.utcfromtimestamp(
submission_.created_utc
).strftime("%Y-%m-%d %H:%M:%S")
s_link = f"https://old.reddit.com{submission_.permalink}"
s_all_awards = "".join(
f"{award['count']} {award['name']}\n"
for award in submission.all_awardings
for award in submission_.all_awardings
)
s_all_awards = s_all_awards[:-2]
data = [
s_datetime,
submission.subreddit,
submission.link_flair_text,
submission.title,
submission.score,
submission.num_comments,
f"{round(100 * submission.upvote_ratio)}%",
submission_.subreddit,
submission_.link_flair_text,
submission_.title,
submission_.score,
submission_.num_comments,
f"{round(100 * submission_.upvote_ratio)}%",
s_all_awards,
s_link,
]
@@ -731,14 +489,12 @@ def get_wsb_community(limit: int = 10, new: bool = False) -> pd.DataFrame:
]
)
def get_due_dilligence(
symbol: str, limit: int = 5, n_days: int = 3, show_all_flairs: bool = False
limit: int = 5, n_days: int = 3, show_all_flairs: bool = False
) -> pd.DataFrame:
"""Gets due diligence posts from list of subreddits [Source: reddit].
"""Get due diligence posts from list of subreddits [Source: reddit].
Parameters
----------
symbol: str
Stock ticker
limit: int
Number of posts to get
n_days: int
@@ -751,7 +507,6 @@ def get_due_dilligence(
pd.DataFrame
Dataframe of submissions
"""
current_user = get_current_user()
praw_api = praw.Reddit(
@@ -779,7 +534,7 @@ def get_due_dilligence(
console.print("[red]Wrong Reddit API keys[/red]\n")
return pd.DataFrame()
psaw_api = PushshiftAPI()
pmaw_api = PushshiftAPI()
n_ts_after = int((datetime.today() - timedelta(days=n_days)).timestamp())
l_flair_text = [
@@ -806,8 +561,10 @@ def get_due_dilligence(
"Forexstrategy",
]
submissions = psaw_api.search_submissions(
after=int(n_ts_after), subreddit=l_sub_reddits_dd, q=symbol, filter=["id"]
submissions = pmaw_api.search_submissions(
after=int(n_ts_after),
subreddit=l_sub_reddits_dd,
filter=["id"],
)
n_flair_posts_found = 0
columns = [
@@ -824,36 +581,36 @@ def get_due_dilligence(
subs = pd.DataFrame(columns=columns)
try:
for submission in submissions:
for submission in submissions.responses:
# Get more information about post using PRAW api
submission = praw_api.submission(id=submission.id)
submission_ = praw_api.submission(id=submission["id"])
# Ensure that the post hasn't been removed in the meanwhile
# Either just filter out Yolo, and Meme flairs, or focus on DD, based on b_DD flag
if (
not submission.removed_by_category
and submission.link_flair_text in l_flair_text,
submission.link_flair_text not in ["Yolo", "Meme"],
not submission_.removed_by_category
and submission_.link_flair_text in l_flair_text,
submission_.link_flair_text not in ["Yolo", "Meme"],
)[show_all_flairs]:
s_datetime = datetime.utcfromtimestamp(submission.created_utc).strftime(
"%Y-%m-%d %H:%M:%S"
)
s_link = f"https://old.reddit.com{submission.permalink}"
s_datetime = datetime.utcfromtimestamp(
submission_.created_utc
).strftime("%Y-%m-%d %H:%M:%S")
s_link = f"https://old.reddit.com{submission_.permalink}"
s_all_awards = "".join(
f"{award['count']} {award['name']}\n"
for award in submission.all_awardings
for award in submission_.all_awardings
)
s_all_awards = s_all_awards[:-2]
data = [
s_datetime,
submission.subreddit,
submission.link_flair_text,
submission.title,
submission.score,
submission.num_comments,
f"{round(100 * submission.upvote_ratio)}%",
submission_.subreddit,
submission_.link_flair_text,
submission_.title,
submission_.score,
submission_.num_comments,
f"{round(100 * submission_.upvote_ratio)}%",
s_all_awards,
s_link,
]
@@ -892,7 +649,7 @@ def get_posts_about(
full_search: bool = True,
subreddits: str = "all",
) -> Tuple[pd.DataFrame, list, float]:
"""Finds posts related to a specific search term in Reddit.
"""Find posts related to a specific search term in Reddit.
Parameters
----------
@@ -916,7 +673,6 @@ def get_posts_about(
List of polarity scores,
Average polarity score.
"""
current_user = get_current_user()
praw_api = praw.Reddit(
@@ -976,8 +732,8 @@ def get_posts_about(
for p in tqdm(posts):
texts = [p.title, p.selftext]
if full_search:
tlcs = get_comments(p)
texts.extend(tlcs)
top_level_comments = get_comments(p)
texts.extend(top_level_comments)
preprocessed_text = clean_reddit_text(texts)
sentiment = get_sentiment(preprocessed_text)
polarity_scores.append(sentiment)
@@ -1018,14 +774,14 @@ def get_comments(
"""
def get_more_comments(comments):
sub_tlcs = []
sub_top_level_comments = []
for comment in comments:
if isinstance(comment, praw.models.reddit.comment.Comment):
sub_tlcs.append(comment.body)
sub_top_level_comments.append(comment.body)
else:
sub_comments = get_more_comments(comment.comments())
sub_tlcs.extend(sub_comments)
return sub_tlcs
sub_top_level_comments.extend(sub_comments)
return sub_top_level_comments
if post.comments:
return get_more_comments(post.comments)
@@ -1034,7 +790,7 @@ def get_comments(
@log_start_end(log=logger)
def clean_reddit_text(docs: List[str]) -> List[str]:
"""Tokenizes and cleans a list of documents for sentiment analysis.
"""Tokenize and clean a list of documents for sentiment analysis.
Parameters
----------
@@ -1046,7 +802,7 @@ def clean_reddit_text(docs: List[str]) -> List[str]:
list[str]
List of cleaned and prepared docs
"""
stopwords = _stop_words.ENGLISH_STOP_WORDS
stop_words = _stop_words.ENGLISH_STOP_WORDS
clean_docs = []
docs = [doc.lower().strip() for doc in docs]
@@ -1055,9 +811,9 @@ def clean_reddit_text(docs: List[str]) -> List[str]:
tokens = doc.split()
for tok in tokens:
clean_tok = [c for c in tok if c.isalpha()]
tok = "".join(clean_tok)
if tok not in stopwords:
clean_doc.append(tok)
tok_ = "".join(clean_tok)
if tok_ not in stop_words:
clean_doc.append(tok_)
clean_docs.append(" ".join(clean_doc))
return clean_docs

View File

@@ -1,24 +1,19 @@
"""Reddit View"""
"""Reddit View."""
__docformat__ = "numpy"
import logging
import os
import warnings
from datetime import datetime
from typing import Dict, Optional, Union
import finviz
import matplotlib.pyplot as plt
import pandas as pd
import praw
import seaborn as sns
from openbb_terminal import OpenBBFigure
from openbb_terminal.common.behavioural_analysis import reddit_model
from openbb_terminal.config_terminal import theme
from openbb_terminal.core.session.current_user import get_current_user
from openbb_terminal.decorators import check_api_key, log_start_end
from openbb_terminal.helper_funcs import export_data, plot_autoscale, print_rich_table
from openbb_terminal.helper_funcs import export_data, print_rich_table
from openbb_terminal.rich_config import console
# pylint: disable=R0913,C0302
@@ -41,7 +36,7 @@ logger = logging.getLogger(__name__)
def print_and_record_reddit_post(
submissions_dict: Dict, submission: praw.models.reddit.submission.Submission
):
"""Prints reddit submission.
"""Print reddit submission.
Parameters
----------
@@ -101,14 +96,13 @@ def print_and_record_reddit_post(
]
)
def print_reddit_post(sub: tuple):
"""Prints reddit submission.
"""Print reddit submission.
Parameters
----------
sub : tuple
Row from submissions dataframe
"""
sub_list = list(sub[1])
date = sub_list[0]
title = sub_list[3]
@@ -132,54 +126,6 @@ def print_reddit_post(sub: tuple):
)
@log_start_end(log=logger)
@check_api_key(
[
"API_REDDIT_CLIENT_ID",
"API_REDDIT_CLIENT_SECRET",
"API_REDDIT_USERNAME",
"API_REDDIT_USER_AGENT",
"API_REDDIT_PASSWORD",
]
)
def display_watchlist(limit: int = 5):
"""Prints other users watchlist. [Source: Reddit].
Parameters
----------
limit: int
Maximum number of submissions to look at
"""
subs, d_watchlist_tickers, n_flair_posts_found = reddit_model.get_watchlists(limit)
if subs:
for sub in subs:
print_and_record_reddit_post({}, sub)
console.print("")
if n_flair_posts_found > 0:
lt_watchlist_sorted = sorted(
d_watchlist_tickers.items(), key=lambda item: item[1], reverse=True
)
s_watchlist_tickers = ""
n_tickers = 0
for t_ticker in lt_watchlist_sorted:
try:
# If try doesn't trigger exception, it means that this stock exists on finviz
# thus we can print it.
finviz.get_stock(t_ticker[0])
if int(t_ticker[1]) > 1:
s_watchlist_tickers += f"{t_ticker[1]} {t_ticker[0]}, "
n_tickers += 1
except Exception:
# console.print(e, "\n")
pass # noqa
if n_tickers:
console.print(
"The following stock tickers have been mentioned more than once across the previous watchlists:"
)
console.print(s_watchlist_tickers[:-2] + "\n")
@log_start_end(log=logger)
@check_api_key(
[
@@ -197,7 +143,7 @@ def display_popular_tickers(
export: str = "",
sheet_name: Optional[str] = None,
):
"""Prints table showing latest popular tickers. [Source: Reddit].
"""Print table showing latest popular tickers. [Source: Reddit].
Parameters
----------
@@ -242,7 +188,7 @@ def display_popular_tickers(
]
)
def display_spac_community(limit: int = 10, popular: bool = False):
"""Prints tickers mentioned in r/SPACs [Source: Reddit].
"""Print tickers mentioned in r/SPACs [Source: Reddit].
Parameters
----------
@@ -271,7 +217,7 @@ def display_spac_community(limit: int = 10, popular: bool = False):
if int(t_ticker[1]) > 1:
s_watchlist_tickers += f"{t_ticker[1]} {t_ticker[0]}, "
n_tickers += 1
except Exception:
except Exception: # nosec
# console.print(e, "\n")
pass # noqa
@@ -282,54 +228,6 @@ def display_spac_community(limit: int = 10, popular: bool = False):
console.print(s_watchlist_tickers[:-2])
@log_start_end(log=logger)
@check_api_key(
[
"API_REDDIT_CLIENT_ID",
"API_REDDIT_CLIENT_SECRET",
"API_REDDIT_USERNAME",
"API_REDDIT_USER_AGENT",
"API_REDDIT_PASSWORD",
]
)
def display_spac(limit: int = 5):
"""Prints posts containing 'spac' in top communities.
Parameters
----------
limit: int
Number of posts to get from each subreddit
"""
warnings.filterwarnings("ignore") # To avoid printing the warning
subs, d_watchlist_tickers, n_flair_posts_found = reddit_model.get_spac(limit)
if not subs.empty:
for sub in subs.iterrows():
print_reddit_post(sub)
console.print("")
if n_flair_posts_found > 0:
lt_watchlist_sorted = sorted(
d_watchlist_tickers.items(), key=lambda item: item[1], reverse=True
)
s_watchlist_tickers = ""
n_tickers = 0
for t_ticker in lt_watchlist_sorted:
try:
# If try doesn't trigger exception, it means that this stock exists on finviz
# thus we can print it.
finviz.get_stock(t_ticker[0])
if int(t_ticker[1]) > 1:
s_watchlist_tickers += f"{t_ticker[1]} {t_ticker[0]}, "
n_tickers += 1
except Exception:
pass # noqa
if n_tickers:
console.print(
"The following stock tickers have been mentioned more than once across the previous SPACs:"
)
console.print(s_watchlist_tickers[:-2])
@log_start_end(log=logger)
@check_api_key(
[
@@ -341,7 +239,7 @@ def display_spac(limit: int = 5):
]
)
def display_wsb_community(limit: int = 10, new: bool = False):
"""Prints WSB posts.
"""Print WSB posts.
Parameters
----------
@@ -368,14 +266,12 @@ def display_wsb_community(limit: int = 10, new: bool = False):
]
)
def display_due_diligence(
symbol: str, limit: int = 10, n_days: int = 3, show_all_flairs: bool = False
limit: int = 10, n_days: int = 3, show_all_flairs: bool = False
):
"""Prints Reddit due diligence data for a given ticker.
"""Print Reddit due diligence data for a given ticker.
Parameters
----------
symbol: str
Stock ticker symbol
limit: int
Number of posts to get
n_days: int
@@ -383,13 +279,13 @@ def display_due_diligence(
show_all_flairs: bool
Search through all flairs (apart from Yolo and Meme)
"""
subs = reddit_model.get_due_dilligence(symbol, limit, n_days, show_all_flairs)
subs = reddit_model.get_due_dilligence(limit, n_days, show_all_flairs)
if not subs.empty:
for sub in subs.iterrows():
print_reddit_post(sub)
console.print("")
else:
console.print(f"No DD posts found for {symbol}\n")
console.print("No DD posts found\n")
@log_start_end(log=logger)
@@ -415,7 +311,7 @@ def display_redditsent(
sheet_name: Optional[str] = None,
external_axes: bool = False,
) -> Union[OpenBBFigure, None]:
"""Plots Reddit sentiment about a search term. Prints table showing if display is True.
"""Plot Reddit sentiment about a search term. Prints table showing if display is True.
Parameters
----------
@@ -466,22 +362,15 @@ def display_redditsent(
console.print(f"Sentiment Analysis for {symbol} is {avg_polarity}\n")
if graphic:
_, ax = plt.subplots(
figsize=plot_autoscale(), dpi=get_current_user().preferences.PLOT_DPI
)
sns.boxplot(x=polarity_scores, ax=ax)
ax.set_title(f"Sentiment Score of {symbol}")
ax.set_xlabel("Sentiment Score")
if not external_axes:
theme.visualize_output()
fig = OpenBBFigure(
title=f"Sentiment Score of {symbol}", xaxis_title="Sentiment Score"
title=f"Sentiment Score of {symbol}",
xaxis_title="Sentiment Score",
)
fig.add_bar(x=polarity_scores)
# remove y ticks of graph object because number based index doesn't make sense here
fig.layout.yaxis.tickvals = []
if fig.is_image_export(export):
export_data(
export,

View File

@@ -37,7 +37,7 @@ class StocksController(model.StocksRoot):
Attributes:
`bullbear`: Gets bullbear sentiment for ticker [Source: stocktwits].\n
`cnews`: Get news from a company. [Source: Finnhub]\n
`getdd`: Gets due diligence posts from list of subreddits [Source: reddit].\n
`getdd`: Get due diligence posts from list of subreddits [Source: reddit].\n
`headlines`: Gets Sentiment analysis provided by FinBrain's API [Source: finbrain].\n
`headlines_chart`: Plots Sentiment analysis from FinBrain. Prints table if raw is True. [Source: FinBrain]\n
`infer`: Load tweets from twitter API and analyzes using VADER.\n
@@ -47,7 +47,7 @@ class StocksController(model.StocksRoot):
`messages`: Get last messages for a given ticker [Source: stocktwits].\n
`popular`: Get popular tickers from list of subreddits [Source: reddit].\n
`queries`: Get related queries from google api [Source: google].\n
`redditsent`: Finds posts related to a specific search term in Reddit.\n
`redditsent`: Find posts related to a specific search term in Reddit.\n
`regions`: Get interest by region from google api [Source: google].\n
`regions_chart`: Plots bars of regions based on stock's interest. [Source: Google].\n
`rise`: Get top rising related queries with this stock's query [Source: google].\n
@@ -55,12 +55,10 @@ class StocksController(model.StocksRoot):
`sentiment_chart`: Plots sentiments from symbol\n
`snews`: Get headlines sentiment using VADER model over time. [Source: Finnhub]\n
`snews_chart`: Display stock price and headlines sentiment using VADER model over time. [Source: Finnhub]\n
`spac`: Get posts containing SPAC from top subreddits [Source: reddit].\n
`spacc`: Get top tickers from r/SPACs [Source: reddit].\n
`stalker`: Gets messages from given user [Source: stocktwits].\n
`text_sent`: Find the sentiment of a post and related comments.\n
`trending`: Get trending tickers from stocktwits [Source: stocktwits].\n
`watchlist`: Get reddit users watchlists [Source: reddit].\n
`wsb`: Get wsb posts [Source: reddit].\n
"""

View File

@@ -35,7 +35,7 @@ class StocksBehavioralAnalysis(Category):
Attributes:
`bullbear`: Gets bullbear sentiment for ticker [Source: stocktwits].\n
`cnews`: Get news from a company. [Source: Finnhub]\n
`getdd`: Gets due diligence posts from list of subreddits [Source: reddit].\n
`getdd`: Get due diligence posts from list of subreddits [Source: reddit].\n
`headlines`: Gets Sentiment analysis provided by FinBrain's API [Source: finbrain].\n
`headlines_chart`: Plots Sentiment analysis from FinBrain. Prints table if raw is True. [Source: FinBrain]\n
`infer`: Load tweets from twitter API and analyzes using VADER.\n
@@ -45,7 +45,7 @@ class StocksBehavioralAnalysis(Category):
`messages`: Get last messages for a given ticker [Source: stocktwits].\n
`popular`: Get popular tickers from list of subreddits [Source: reddit].\n
`queries`: Get related queries from google api [Source: google].\n
`redditsent`: Finds posts related to a specific search term in Reddit.\n
`redditsent`: Find posts related to a specific search term in Reddit.\n
`regions`: Get interest by region from google api [Source: google].\n
`regions_chart`: Plots bars of regions based on stock's interest. [Source: Google].\n
`rise`: Get top rising related queries with this stock's query [Source: google].\n
@@ -53,12 +53,10 @@ class StocksBehavioralAnalysis(Category):
`sentiment_chart`: Plots sentiments from symbol\n
`snews`: Get headlines sentiment using VADER model over time. [Source: Finnhub]\n
`snews_chart`: Display stock price and headlines sentiment using VADER model over time. [Source: Finnhub]\n
`spac`: Get posts containing SPAC from top subreddits [Source: reddit].\n
`spacc`: Get top tickers from r/SPACs [Source: reddit].\n
`stalker`: Gets messages from given user [Source: stocktwits].\n
`text_sent`: Find the sentiment of a post and related comments.\n
`trending`: Get trending tickers from stocktwits [Source: stocktwits].\n
`watchlist`: Get reddit users watchlists [Source: reddit].\n
`wsb`: Get wsb posts [Source: reddit].\n
"""
@@ -88,12 +86,10 @@ class StocksBehavioralAnalysis(Category):
self.snews_chart = (
lib.stocks_ba_finnhub_view.display_stock_price_headlines_sentiment
)
self.spac = lib.stocks_ba_reddit_model.get_spac
self.spacc = lib.stocks_ba_reddit_model.get_spac_community
self.stalker = lib.stocks_ba_stocktwits_model.get_stalker
self.text_sent = lib.stocks_ba_reddit_model.get_sentiment
self.trending = lib.stocks_ba_stocktwits_model.get_trending
self.watchlist = lib.stocks_ba_reddit_model.get_watchlists
self.wsb = lib.stocks_ba_reddit_model.get_wsb_community
@@ -310,7 +306,6 @@ class StocksFundamentalAnalysis(Category):
self.dupont = lib.stocks_fa_av_model.get_dupont
self.earnings = lib.stocks_fa_sdk_helpers.earnings
self.enterprise = lib.stocks_fa_fmp_model.get_enterprise
self.enterprise_chart = lib.stocks_fa_fmp_view.display_enterprise
self.epsfc = lib.stocks_fa_seeking_alpha_model.get_estimates_eps
self.est = lib.stocks_fa_business_insider_model.get_estimates
self.fama_coe = lib.stocks_fa_dcf_model.get_fama_coe

View File

@@ -361,27 +361,25 @@ qa.spread,common_qa_rolling_model.get_spread,common_qa_rolling_view.display_spre
qa.summary,common_qa_model.get_summary,common_qa_view.display_summary
qa.unitroot,common_qa_model.get_unitroot,common_qa_view.display_unitroot
qa.var,common_qa_model.get_var,common_qa_view.display_var
stocks.ba.bullbear,stocks_ba_stocktwits_model.get_bullbear,
stocks.ba.cnews,stocks_ba_finnhub_model.get_company_news,
stocks.ba.getdd,stocks_ba_reddit_model.get_due_dilligence,
stocks.ba.headlines,stocks_ba_finbrain_model.get_sentiment,stocks_ba_finbrain_view.display_sentiment_analysis
stocks.ba.cnews,stocks_ba_finnhub_model.get_company_news,
stocks.ba.wsb,stocks_ba_reddit_model.get_wsb_community,
stocks.ba.popular,stocks_ba_reddit_model.get_popular_tickers,
stocks.ba.spacc,stocks_ba_reddit_model.get_spac_community,
stocks.ba.getdd,stocks_ba_reddit_model.get_due_dilligence,
stocks.ba.redditsent,stocks_ba_reddit_model.get_posts_about,
stocks.ba.bullbear,stocks_ba_stocktwits_model.get_bullbear,
stocks.ba.infer,stocks_ba_twitter_model.load_analyze_tweets,stocks_ba_twitter_view.display_inference
stocks.ba.mentions,stocks_ba_google_model.get_mentions,stocks_ba_google_view.display_mentions
stocks.ba.messages,stocks_ba_stocktwits_model.get_messages,
stocks.ba.popular,stocks_ba_reddit_model.get_popular_tickers,
stocks.ba.queries,stocks_ba_google_model.get_queries,
stocks.ba.redditsent,stocks_ba_reddit_model.get_posts_about,
stocks.ba.regions,stocks_ba_google_model.get_regions,stocks_ba_google_view.display_regions
stocks.ba.rise,stocks_ba_google_model.get_rise,
stocks.ba.sentiment,stocks_ba_twitter_model.get_sentiment,stocks_ba_twitter_view.display_sentiment
stocks.ba.snews,stocks_ba_finnhub_model.get_headlines_sentiment,stocks_ba_finnhub_view.display_stock_price_headlines_sentiment
stocks.ba.spac,stocks_ba_reddit_model.get_spac,
stocks.ba.spacc,stocks_ba_reddit_model.get_spac_community,
stocks.ba.stalker,stocks_ba_stocktwits_model.get_stalker,
stocks.ba.text_sent,stocks_ba_reddit_model.get_sentiment,
stocks.ba.trending,stocks_ba_stocktwits_model.get_trending,
stocks.ba.watchlist,stocks_ba_reddit_model.get_watchlists,
stocks.ba.wsb,stocks_ba_reddit_model.get_wsb_community,
stocks.ca.balance,stocks_ca_marketwatch_model.get_balance_comparison,
stocks.ca.cashflow,stocks_ca_marketwatch_model.get_cashflow_comparison,
stocks.ca.hcorr,stocks_ca_yahoo_finance_model.get_correlation,stocks_ca_yahoo_finance_view.display_correlation
1 trail model view
361 qa.summary common_qa_model.get_summary common_qa_view.display_summary
362 qa.unitroot common_qa_model.get_unitroot common_qa_view.display_unitroot
363 qa.var common_qa_model.get_var common_qa_view.display_var
stocks.ba.bullbear stocks_ba_stocktwits_model.get_bullbear
stocks.ba.cnews stocks_ba_finnhub_model.get_company_news
stocks.ba.getdd stocks_ba_reddit_model.get_due_dilligence
364 stocks.ba.headlines stocks_ba_finbrain_model.get_sentiment stocks_ba_finbrain_view.display_sentiment_analysis
365 stocks.ba.cnews stocks_ba_finnhub_model.get_company_news
366 stocks.ba.wsb stocks_ba_reddit_model.get_wsb_community
367 stocks.ba.popular stocks_ba_reddit_model.get_popular_tickers
368 stocks.ba.spacc stocks_ba_reddit_model.get_spac_community
369 stocks.ba.getdd stocks_ba_reddit_model.get_due_dilligence
370 stocks.ba.redditsent stocks_ba_reddit_model.get_posts_about
371 stocks.ba.bullbear stocks_ba_stocktwits_model.get_bullbear
372 stocks.ba.infer stocks_ba_twitter_model.load_analyze_tweets stocks_ba_twitter_view.display_inference
373 stocks.ba.mentions stocks_ba_google_model.get_mentions stocks_ba_google_view.display_mentions
374 stocks.ba.messages stocks_ba_stocktwits_model.get_messages
stocks.ba.popular stocks_ba_reddit_model.get_popular_tickers
375 stocks.ba.queries stocks_ba_google_model.get_queries
stocks.ba.redditsent stocks_ba_reddit_model.get_posts_about
376 stocks.ba.regions stocks_ba_google_model.get_regions stocks_ba_google_view.display_regions
377 stocks.ba.rise stocks_ba_google_model.get_rise
378 stocks.ba.sentiment stocks_ba_twitter_model.get_sentiment stocks_ba_twitter_view.display_sentiment
379 stocks.ba.snews stocks_ba_finnhub_model.get_headlines_sentiment stocks_ba_finnhub_view.display_stock_price_headlines_sentiment
stocks.ba.spac stocks_ba_reddit_model.get_spac
stocks.ba.spacc stocks_ba_reddit_model.get_spac_community
380 stocks.ba.stalker stocks_ba_stocktwits_model.get_stalker
381 stocks.ba.text_sent stocks_ba_reddit_model.get_sentiment
382 stocks.ba.trending stocks_ba_stocktwits_model.get_trending
stocks.ba.watchlist stocks_ba_reddit_model.get_watchlists
stocks.ba.wsb stocks_ba_reddit_model.get_wsb_community
383 stocks.ca.balance stocks_ca_marketwatch_model.get_balance_comparison
384 stocks.ca.cashflow stocks_ca_marketwatch_model.get_cashflow_comparison
385 stocks.ca.hcorr stocks_ca_yahoo_finance_model.get_correlation stocks_ca_yahoo_finance_view.display_correlation

View File

@@ -165,6 +165,8 @@
"wsb": ["Reddit"],
"spacc": ["Reddit"],
"redditsent": ["Reddit"],
"popular": ["Reddit"],
"getdd": ["Reddit"],
"trending": ["Stocktwits"],
"stalker": ["Stocktwits"],
"bullbear": ["Stocktwits"],

View File

@@ -1,4 +1,4 @@
"""Behavioural Analysis Controller Module"""
"""Behavioural Analysis Controller Module."""
__docformat__ = "numpy"
import argparse
@@ -37,29 +37,26 @@ logger = logging.getLogger(__name__)
class BehaviouralAnalysisController(StockBaseController):
"""Behavioural Analysis Controller class"""
"""Behavioural Analysis Controller class."""
CHOICES_COMMANDS = [
"load",
# "watchlist",
# "spac",
"spacc",
"wsb",
"popular",
"spacc",
"getdd",
"redditsent",
"bullbear",
"messages",
"trending",
"stalker",
"infer",
"sentiment",
"redditsent",
"mentions",
"regions",
"queries",
"rise",
"headlines",
# "popular",
# "getdd",
"snews",
"interest",
]
@@ -73,7 +70,7 @@ class BehaviouralAnalysisController(StockBaseController):
CHOICES_GENERATION = True
def __init__(self, ticker: str, start: datetime, queue: Optional[List[str]] = None):
"""Constructor"""
"""Construct a new instance."""
super().__init__(queue)
self.ticker = ticker
@@ -85,7 +82,7 @@ class BehaviouralAnalysisController(StockBaseController):
self.completer = NestedCompleter.from_nested_dict(choices)
def print_help(self):
"""Print help"""
"""Print help."""
mt = MenuText("stocks/ba/")
mt.add_cmd("load")
mt.add_raw("\n")
@@ -94,11 +91,9 @@ class BehaviouralAnalysisController(StockBaseController):
mt.add_cmd("headlines", self.ticker)
mt.add_cmd("snews", self.ticker)
mt.add_cmd("wsb")
# mt.add_cmd("watchlist")
# mt.add_cmd("popular")
mt.add_cmd("popular")
mt.add_cmd("spacc")
# mt.add_cmd("spac")
# mt.add_cmd("getdd", self.ticker)
mt.add_cmd("getdd")
mt.add_cmd("redditsent", self.ticker)
mt.add_cmd("trending")
mt.add_cmd("stalker")
@@ -114,38 +109,14 @@ class BehaviouralAnalysisController(StockBaseController):
console.print(text=mt.menu_text, menu="Stocks - Behavioural Analysis")
def custom_reset(self):
"""Class specific component of reset command"""
"""Class specific component of reset command."""
if self.ticker:
return ["stocks", "ba", f"load {self.ticker}"]
return []
@log_start_end(log=logger)
def call_watchlist(self, other_args: List[str]):
"""Process watchlist command"""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
prog="watchlist",
description="""Print other users watchlist. [Source: Reddit]""",
)
parser.add_argument(
"-l",
"--limit",
action="store",
dest="limit",
type=check_positive,
default=5,
help="limit of posts with watch lists retrieved.",
)
if other_args and "-" not in other_args[0][0]:
other_args.insert(0, "-l")
ns_parser = self.parse_known_args_and_warn(parser, other_args)
if ns_parser:
reddit_view.display_watchlist(limit=ns_parser.limit)
@log_start_end(log=logger)
def call_snews(self, other_args: List[str]):
"""Process snews command"""
"""Process snews command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -160,33 +131,9 @@ class BehaviouralAnalysisController(StockBaseController):
symbol=self.ticker, export=ns_parser.export
)
@log_start_end(log=logger)
def call_spac(self, other_args: List[str]):
"""Process spac command"""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
prog="spac",
description="""Show other users SPACs announcement. [Source: Reddit]""",
)
parser.add_argument(
"-l",
"--limit",
action="store",
dest="n_limit",
type=check_positive,
default=5,
help="limit of posts with SPACs retrieved.",
)
if other_args and "-" not in other_args[0][0]:
other_args.insert(0, "-l")
ns_parser = self.parse_known_args_and_warn(parser, other_args)
if ns_parser:
reddit_view.display_spac(limit=ns_parser.n_limit)
@log_start_end(log=logger)
def call_spacc(self, other_args: List[str]):
"""Process spacc command"""
"""Process spacc command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -220,7 +167,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_wsb(self, other_args: List[str]):
"""Process wsb command"""
"""Process wsb command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -253,7 +200,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_popular(self, other_args: List[str]):
"""Process popular command"""
"""Process popular command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -275,7 +222,7 @@ class BehaviouralAnalysisController(StockBaseController):
action="store",
dest="num",
type=check_positive,
default=50,
default=10,
help="number of posts retrieved per sub reddit.",
)
parser.add_argument(
@@ -308,7 +255,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_getdd(self, other_args: List[str]):
"""Process getdd command"""
"""Process getdd command."""
parser = argparse.ArgumentParser(
add_help=False,
prog="getdd",
@@ -348,19 +295,15 @@ class BehaviouralAnalysisController(StockBaseController):
other_args.insert(0, "-l")
ns_parser = self.parse_known_args_and_warn(parser, other_args)
if ns_parser:
if self.ticker:
reddit_view.display_due_diligence(
symbol=self.ticker,
limit=ns_parser.limit,
n_days=ns_parser.days,
show_all_flairs=ns_parser.all,
)
else:
console.print("No ticker loaded. Please load using 'load <ticker>'\n")
reddit_view.display_due_diligence(
limit=ns_parser.limit,
n_days=ns_parser.days,
show_all_flairs=ns_parser.all,
)
@log_start_end(log=logger)
def call_redditsent(self, other_args: List[str]):
"""Process redditsent command"""
"""Process redditsent command."""
parser = argparse.ArgumentParser(
add_help=False,
prog="redditsent",
@@ -430,7 +373,7 @@ class BehaviouralAnalysisController(StockBaseController):
"--display",
action="store_true",
dest="display",
default=False,
default=True,
help="Print table of sentiment values",
)
if other_args and "-" not in other_args[0][0]:
@@ -460,7 +403,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_bullbear(self, other_args: List[str]):
"""Process bullbear command"""
"""Process bullbear command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -479,7 +422,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_messages(self, other_args: List[str]):
"""Process messages command"""
"""Process messages command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -508,7 +451,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_trending(self, other_args: List[str]):
"""Process trending command"""
"""Process trending command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -521,7 +464,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_stalker(self, other_args: List[str]):
"""Process stalker command"""
"""Process stalker command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -558,7 +501,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_mentions(self, other_args: List[str]):
"""Process mentions command"""
"""Process mentions command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -595,7 +538,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_regions(self, other_args: List[str]):
"""Process regions command"""
"""Process regions command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -626,7 +569,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_interest(self, other_args: List[str]):
"""Process interest command"""
"""Process interest command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -690,7 +633,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_queries(self, other_args: List[str]):
"""Process queries command"""
"""Process queries command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -726,7 +669,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_rise(self, other_args: List[str]):
"""Process rise command"""
"""Process rise command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -762,7 +705,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_infer(self, other_args: List[str]):
"""Process infer command"""
"""Process infer command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -802,7 +745,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_sentiment(self, other_args: List[str]):
"""Process sentiment command"""
"""Process sentiment command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -862,7 +805,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_headlines(self, other_args: List[str]):
"""Process finbrain command"""
"""Process finbrain command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -886,7 +829,7 @@ class BehaviouralAnalysisController(StockBaseController):
console.print("No ticker loaded. Please load using 'load <ticker>'\n")
def call_jcdr(self, other_args: List[str]):
"""Process jcdr command"""
"""Process jcdr command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
@@ -913,7 +856,7 @@ class BehaviouralAnalysisController(StockBaseController):
@log_start_end(log=logger)
def call_jctr(self, other_args: List[str]):
"""Process jctr command"""
"""Process jctr command."""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,

20489
poetry.lock generated vendored

File diff suppressed because it is too large Load Diff

2
pyproject.toml vendored
View File

@@ -26,7 +26,7 @@ alpha-vantage = "^2.3.1"
finviz = "^1.3.4, !=1.4.5"
bs4 = "^0.0.1"
yfinance = "^0.2.12"
psaw = "^0.0.12"
pmaw = "^3.0.0"
praw = "^7.1.4"
Quandl = "^3.6.0"
pytrends = "^4.7.3"

822
requirements-full.txt vendored
View File

@@ -1,411 +1,411 @@
absl-py==1.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
adagio==0.2.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
aiodns==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
aiohttp==3.8.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
aiosignal==1.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
alabaster==0.7.13 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
alpha-vantage==2.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
altair==4.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
altgraph==0.17.3 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
ansi2html==1.8.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
ansiwrap==0.8.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
antlr4-python3-runtime==4.11.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
anyio==3.6.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
appdirs==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
appnope==0.1.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin" or python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and platform_system == "Darwin"
arch==5.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
argon2-cffi-bindings==21.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
argon2-cffi==21.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ascii-magic==1.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
astor==0.8.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
astroid==2.13.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
astropy==5.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
asttokens==2.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
async-timeout==4.0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
atomicwrites==1.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "win32"
attrs==21.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
babel==2.12.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
backcall==0.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
backoff==2.2.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
backports-zoneinfo==0.2.1 ; python_version >= "3.8" and python_version < "3.9"
bandit==1.7.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
base58==2.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
beautifulsoup4==4.11.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
black==23.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
bleach==6.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
blinker==1.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
brotli==1.0.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and platform_python_implementation == "CPython"
brotlicffi==1.0.9.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and platform_python_implementation != "CPython"
bs4==0.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
bt==0.2.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cachetools==5.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
catboost==1.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ccxt==2.8.78 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
certifi==2022.12.7 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
cffi==1.15.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cfgv==3.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
charset-normalizer==3.0.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
click==8.1.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cloudpickle==2.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cmdstanpy==1.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
codespell==2.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
colorama==0.4.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
comm==0.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
commonmark==0.9.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
contourpy==1.0.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
convertdate==2.4.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
coverage==7.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
coverage[toml]==7.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cryptography==39.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cssselect2==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cssselect==1.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cvxpy==1.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cycler==0.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cython==0.29.33 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
dash-core-components==2.0.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
dash-html-components==2.0.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
dash-table==5.0.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
dash==2.8.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
dateparser==1.1.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
datetime==5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
debugpy==1.6.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
decorator==5.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
defusedxml==0.7.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
degiro-connector==2.0.21 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
detecta==0.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
dill==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
distlib==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
dnspython==2.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
docutils==0.17.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ecos==2.0.12 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
entrypoints==0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ephem==4.1.4 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
et-xmlfile==1.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
exchange-calendars==4.2.5 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
execnet==1.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
executing==1.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fastjsonschema==2.16.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
feedparser==6.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ffmpeg-python==0.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ffn==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
filelock==3.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
financedatabase==2.0.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
finnhub-python==2.4.16 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
finviz==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
finvizfinance==0.14.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
flake8==5.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
flask-cors==3.0.10 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
flask==2.2.3 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
fonttools==4.38.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
formulaic==0.3.4 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
fred==3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fredapi==0.4.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
frozendict==2.3.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
frozenlist==1.3.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fs==2.4.16 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fsspec[http]==2023.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fugue-sql-antlr==0.1.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fugue==0.8.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fundamentalanalysis==0.2.14 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
future==0.18.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
gitdb==4.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
gitpython==3.1.31 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
google-auth-oauthlib==0.4.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
google-auth==2.16.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
graphviz==0.20.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
greenlet==2.0.2 ; python_version >= "3.8" and platform_machine == "aarch64" and python_full_version != "3.9.7" and python_version < "3.11" or python_version >= "3.8" and platform_machine == "ppc64le" and python_full_version != "3.9.7" and python_version < "3.11" or python_version >= "3.8" and platform_machine == "x86_64" and python_full_version != "3.9.7" and python_version < "3.11" or python_version >= "3.8" and platform_machine == "amd64" and python_full_version != "3.9.7" and python_version < "3.11" or python_version >= "3.8" and platform_machine == "AMD64" and python_full_version != "3.9.7" and python_version < "3.11" or python_version >= "3.8" and platform_machine == "win32" and python_full_version != "3.9.7" and python_version < "3.11" or python_version >= "3.8" and platform_machine == "WIN32" and python_full_version != "3.9.7" and python_version < "3.11"
grpcio==1.51.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
hijri-converter==2.2.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
holidays==0.14.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
html5lib==1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
huggingface-hub==0.12.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
identify==2.5.18 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
idna==3.4 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
imagesize==1.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
importlib-metadata==6.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
importlib-resources==5.12.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.10"
inflection==0.5.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
iniconfig==2.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
interface-meta==1.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
intrinio-sdk==6.22.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipyflex==0.2.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipykernel==6.21.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipympl==0.8.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipython-genutils==0.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipython==8.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipywidgets==8.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
iso8601==0.1.16 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
isodate==0.6.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
isort==5.12.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
itsdangerous==2.1.2 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
jedi==0.18.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jinja2==3.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
joblib==1.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
json5==0.9.11 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jsonschema==4.17.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyter-client==7.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyter-core==5.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyter-dash==0.4.2 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
jupyter-server==1.23.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab-pygments==0.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab-server==2.19.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab-widgets==3.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab==3.5.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
kiwisolver==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
korean-lunar-calendar==0.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
lazy-object-proxy==1.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
lightgbm==3.3.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
linearmodels==4.27 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
llvmlite==0.39.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
loguru==0.6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
lunarcalendar==0.0.9 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
lxml==4.9.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
macholib==1.16.2 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7" and sys_platform == "darwin"
markdown-it-py==1.1.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
markdown==3.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
markupsafe==2.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
matplotlib-inline==0.1.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
matplotlib==3.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mccabe==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mdit-py-plugins==0.2.8 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
mistune==2.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mock==4.0.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
more-itertools==9.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mplfinance==0.12.9b7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mstarpy==0.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
multidict==6.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
multitasking==0.0.11 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mutagen==1.46.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mypy-extensions==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mypy==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
myst-parser==0.15.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbclassic==0.5.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbclient==0.6.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbconvert==7.2.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbformat==5.7.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbmake==1.4.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
nest-asyncio==1.5.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
networkx==3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nfoursid==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nodeenv==1.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
notebook-shim==0.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
notebook==6.5.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
numba==0.56.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
numpy==1.23.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
oandapyv20==0.6.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
oauthlib==3.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
onetimepass==1.0.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
openai-whisper==20230124 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
openpyxl==3.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
orjson==3.8.7 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
osqp==0.6.2.post8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
packaging==23.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas-datareader==0.10.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas-market-calendars==3.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas-ta==0.3.14b ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas==1.5.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandocfilters==1.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
papermill==2.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
parso==0.8.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pathspec==0.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
patsy==0.5.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pbr==5.11.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pefile==2023.2.7 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7" and sys_platform == "win32"
pexpect==4.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform != "win32"
pickleshare==0.7.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pillow==9.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9"
platformdirs==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
plotly-resampler==0.8.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
plotly==5.13.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pluggy==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pmdarima==2.0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
praw==7.7.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
prawcore==2.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pre-commit==2.21.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
prometheus-client==0.16.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
prompt-toolkit==3.0.38 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
property-cached==1.6.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
prophet==1.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
protobuf==3.20.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
psaw==0.0.12 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
psutil==5.9.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ptyprocess==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform != "win32" or python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and os_name != "nt"
pure-eval==0.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
py==1.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyally==1.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyarrow==11.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyasn1-modules==0.2.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyasn1==0.4.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycares==4.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycodestyle==2.9.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycoingecko==3.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycparser==2.21 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycryptodome==3.17 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycryptodomex==3.17 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pydantic==1.10.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pydeck==0.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pydeprecate==0.3.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pydocstyle==6.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyerfa==2.0.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyflakes==2.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pygments==2.14.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyhdfe==0.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyinstaller-hooks-contrib==2023.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pyinstaller==4.10 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pylint==2.15.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyluach==2.2.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pymeeus==0.5.12 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pympler==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyobjc-core==9.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin"
pyobjc-framework-cocoa==9.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin"
pyod==1.0.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyotp==2.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyparsing==3.0.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyprind==2.11.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyrsistent==0.19.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-cov==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-mock==3.10.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-recording==0.12.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-timeout==2.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-xdist==3.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest==6.2.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pythclient==0.1.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-binance==1.0.17 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-coinmarketcap==0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-dateutil==2.8.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-dotenv==0.19.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-i18n==0.3.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytorch-lightning==1.6.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytrends==4.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytz-deprecation-shim==0.1.0.post0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytz==2022.7.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pywin32-ctypes==0.2.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7" and sys_platform == "win32"
pywin32==305 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pywinpty==2.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and os_name == "nt"
pywry==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyyaml==6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyzmq==25.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
qdldl==0.1.5.post3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
qpd==0.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
quandl==3.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
rapidfuzz==2.13.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
rdflib==6.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
regex==2022.10.31 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
reportlab==3.6.12 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
requests-futures==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
requests-oauthlib==1.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
requests==2.28.2 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
retrying==1.3.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
rich==12.6.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
riskfolio-lib==3.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
robin-stocks==2.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
rsa==4.9 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
ruamel-yaml-clib==0.2.7 ; platform_python_implementation == "CPython" and python_version < "3.11" and python_version >= "3.8" and python_full_version != "3.9.7"
ruamel-yaml==0.17.21 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ruff==0.0.247 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
scikit-learn==1.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
scipy==1.10.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
screeninfo==0.6.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
scs==3.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
seaborn==0.11.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
semantic-version==2.10.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
semver==2.13.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
send2trash==1.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
setuptools-rust==1.5.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
setuptools-scm==6.4.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
setuptools==65.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sgmllib3k==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
shap==0.41.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
six==1.16.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
slicer==0.0.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
smmap==5.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sniffio==1.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
snowballstemmer==2.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
soupsieve==2.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sparqlwrapper==2.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinx==4.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-applehelp==1.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-devhelp==1.0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-htmlhelp==2.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sqlalchemy==2.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sqlglot==11.2.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
squarify==0.4.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
stack-data==0.6.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
statsforecast==1.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
statsmodels==0.13.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
stevedore==5.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
stocksera==0.1.21 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
streamlit==1.19.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
svglib==1.5.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tabulate==0.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tbats==1.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tenacity==7.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tensorboard-data-server==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tensorboard-plugin-wit==1.8.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tensorboard==2.12.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
terminado==0.17.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
textwrap3==0.9.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
thepassiveinvestor==1.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
threadpoolctl==3.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tinycss2==1.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tokenizers==0.13.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tokenterminal==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
toml==0.10.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tomli==2.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tomlkit==0.11.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
toolz==0.12.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
torch==1.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
torchmetrics==0.11.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tornado==6.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tqdm==4.64.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
trace-updater==0.0.9 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
tradingview-ta==3.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
traitlets==5.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
transformers==4.26.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
triad==0.8.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tweepy==4.12.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-python-dateutil==2.8.19.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-pytz==2021.3.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-pyyaml==6.0.12.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-requests==2.28.11.15 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-setuptools==57.4.18 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-six==1.16.21.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-urllib3==1.26.25.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
typing-extensions==4.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tzdata==2022.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tzlocal==4.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
u8darts[torch]==0.23.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ujson==5.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
update-checker==0.18.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
urllib3==1.26.14 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
user-agent==0.1.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
vadersentiment==3.3.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
validators==0.20.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
valinvest==0.0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
vcrpy==4.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
virtualenv==20.20.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
voila==0.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
watchdog==2.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
wcwidth==0.2.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
webencodings==0.5.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
websocket-client==1.5.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
websockets==10.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
werkzeug==2.2.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
wheel==0.38.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
widgetsnbextension==4.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
win32-setctime==1.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "win32"
wrapt==1.15.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
xarray==2023.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
xgboost==1.7.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
xlsxwriter==3.0.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
y-py==0.6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
yahooquery==2.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
yarl==1.8.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
yfinance==0.2.12 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
yt-dlp==2023.2.17 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
zipp==3.15.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
zope-interface==5.5.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
absl-py==1.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
adagio==0.2.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
aiodns==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
aiohttp==3.8.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
aiosignal==1.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
alabaster==0.7.13 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
alpha-vantage==2.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
altair==4.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
altgraph==0.17.3 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
ansi2html==1.8.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
ansiwrap==0.8.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
antlr4-python3-runtime==4.11.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
anyio==3.6.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
appdirs==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
appnope==0.1.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin" or python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and platform_system == "Darwin"
arch==5.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
argon2-cffi-bindings==21.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
argon2-cffi==21.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ascii-magic==1.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
astor==0.8.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
astroid==2.13.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
astropy==5.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
asttokens==2.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
async-timeout==4.0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
atomicwrites==1.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "win32"
attrs==21.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
babel==2.12.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
backcall==0.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
backoff==2.2.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
backports-zoneinfo==0.2.1 ; python_version >= "3.8" and python_version < "3.9"
bandit==1.7.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
base58==2.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
beautifulsoup4==4.11.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
black==23.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
bleach==6.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
blinker==1.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
brotli==1.0.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and platform_python_implementation == "CPython"
brotlicffi==1.0.9.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and platform_python_implementation != "CPython"
bs4==0.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
bt==0.2.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cachetools==5.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
catboost==1.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ccxt==2.8.78 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
certifi==2022.12.7 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
cffi==1.15.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cfgv==3.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
charset-normalizer==3.0.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
click==8.1.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cloudpickle==2.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cmdstanpy==1.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
codespell==2.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
colorama==0.4.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
comm==0.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
commonmark==0.9.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
contourpy==1.0.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
convertdate==2.4.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
coverage==7.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
coverage[toml]==7.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cryptography==39.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cssselect2==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cssselect==1.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cvxpy==1.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cycler==0.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cython==0.29.33 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
dash-core-components==2.0.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
dash-html-components==2.0.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
dash-table==5.0.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
dash==2.8.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
dateparser==1.1.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
datetime==5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
debugpy==1.6.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
decorator==5.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
defusedxml==0.7.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
degiro-connector==2.0.21 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
detecta==0.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
dill==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
distlib==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
dnspython==2.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
docutils==0.17.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ecos==2.0.12 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
entrypoints==0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ephem==4.1.4 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
et-xmlfile==1.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
exchange-calendars==4.2.5 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
execnet==1.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
executing==1.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fastjsonschema==2.16.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
feedparser==6.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ffmpeg-python==0.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ffn==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
filelock==3.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
financedatabase==2.0.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
finnhub-python==2.4.16 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
finviz==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
finvizfinance==0.14.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
flake8==5.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
flask-cors==3.0.10 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
flask==2.2.3 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
fonttools==4.38.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
formulaic==0.3.4 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
fred==3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fredapi==0.4.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
frozendict==2.3.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
frozenlist==1.3.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fs==2.4.16 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fsspec[http]==2023.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fugue-sql-antlr==0.1.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fugue==0.8.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fundamentalanalysis==0.2.14 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
future==0.18.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
gitdb==4.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
gitpython==3.1.31 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
google-auth-oauthlib==0.4.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
google-auth==2.16.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
graphviz==0.20.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
greenlet==2.0.2 ; python_version >= "3.8" and platform_machine == "aarch64" and python_full_version != "3.9.7" and python_version < "3.11" or python_version >= "3.8" and platform_machine == "ppc64le" and python_full_version != "3.9.7" and python_version < "3.11" or python_version >= "3.8" and platform_machine == "x86_64" and python_full_version != "3.9.7" and python_version < "3.11" or python_version >= "3.8" and platform_machine == "amd64" and python_full_version != "3.9.7" and python_version < "3.11" or python_version >= "3.8" and platform_machine == "AMD64" and python_full_version != "3.9.7" and python_version < "3.11" or python_version >= "3.8" and platform_machine == "win32" and python_full_version != "3.9.7" and python_version < "3.11" or python_version >= "3.8" and platform_machine == "WIN32" and python_full_version != "3.9.7" and python_version < "3.11"
grpcio==1.51.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
hijri-converter==2.2.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
holidays==0.14.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
html5lib==1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
huggingface-hub==0.12.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
identify==2.5.18 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
idna==3.4 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
imagesize==1.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
importlib-metadata==6.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
importlib-resources==5.12.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.10"
inflection==0.5.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
iniconfig==2.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
interface-meta==1.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
intrinio-sdk==6.22.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipyflex==0.2.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipykernel==6.21.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipympl==0.8.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipython-genutils==0.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipython==8.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipywidgets==8.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
iso8601==0.1.16 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
isodate==0.6.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
isort==5.12.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
itsdangerous==2.1.2 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
jedi==0.18.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jinja2==3.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
joblib==1.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
json5==0.9.11 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jsonschema==4.17.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyter-client==7.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyter-core==5.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyter-dash==0.4.2 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
jupyter-server==1.23.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab-pygments==0.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab-server==2.19.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab-widgets==3.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab==3.5.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
kiwisolver==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
korean-lunar-calendar==0.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
lazy-object-proxy==1.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
lightgbm==3.3.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
linearmodels==4.27 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
llvmlite==0.39.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
loguru==0.6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
lunarcalendar==0.0.9 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
lxml==4.9.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
macholib==1.16.2 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7" and sys_platform == "darwin"
markdown-it-py==1.1.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
markdown==3.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
markupsafe==2.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
matplotlib-inline==0.1.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
matplotlib==3.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mccabe==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mdit-py-plugins==0.2.8 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
mistune==2.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mock==4.0.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
more-itertools==9.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mplfinance==0.12.9b7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mstarpy==0.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
multidict==6.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
multitasking==0.0.11 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mutagen==1.46.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mypy-extensions==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mypy==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
myst-parser==0.15.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbclassic==0.5.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbclient==0.6.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbconvert==7.2.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbformat==5.7.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbmake==1.4.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
nest-asyncio==1.5.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
networkx==3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nfoursid==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nodeenv==1.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
notebook-shim==0.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
notebook==6.5.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
numba==0.56.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
numpy==1.23.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
oandapyv20==0.6.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
oauthlib==3.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
onetimepass==1.0.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
openai-whisper==20230124 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
openpyxl==3.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
orjson==3.8.7 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
osqp==0.6.2.post8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
packaging==23.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas-datareader==0.10.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas-market-calendars==3.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas-ta==0.3.14b ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas==1.5.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandocfilters==1.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
papermill==2.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
parso==0.8.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pathspec==0.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
patsy==0.5.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pbr==5.11.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pefile==2023.2.7 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7" and sys_platform == "win32"
pexpect==4.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform != "win32"
pickleshare==0.7.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pillow==9.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9"
platformdirs==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
plotly-resampler==0.8.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
plotly==5.13.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pluggy==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pmaw==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pmdarima==2.0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
praw==7.7.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
prawcore==2.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pre-commit==2.21.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
prometheus-client==0.16.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
prompt-toolkit==3.0.38 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
property-cached==1.6.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
prophet==1.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
protobuf==3.20.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
psutil==5.9.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ptyprocess==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform != "win32" or python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and os_name != "nt"
pure-eval==0.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
py==1.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyally==1.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyarrow==11.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyasn1-modules==0.2.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyasn1==0.4.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycares==4.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycodestyle==2.9.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycoingecko==3.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycparser==2.21 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycryptodome==3.17 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycryptodomex==3.17 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pydantic==1.10.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pydeck==0.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pydeprecate==0.3.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pydocstyle==6.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyerfa==2.0.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyflakes==2.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pygments==2.14.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyhdfe==0.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyinstaller-hooks-contrib==2023.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pyinstaller==4.10 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pylint==2.15.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyluach==2.2.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pymeeus==0.5.12 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pympler==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyobjc-core==9.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin"
pyobjc-framework-cocoa==9.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin"
pyod==1.0.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyotp==2.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyparsing==3.0.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyprind==2.11.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyrsistent==0.19.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-cov==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-mock==3.10.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-recording==0.12.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-timeout==2.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-xdist==3.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest==6.2.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pythclient==0.1.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-binance==1.0.17 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-coinmarketcap==0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-dateutil==2.8.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-dotenv==0.19.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-i18n==0.3.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytorch-lightning==1.6.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytrends==4.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytz-deprecation-shim==0.1.0.post0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytz==2022.7.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pywin32-ctypes==0.2.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7" and sys_platform == "win32"
pywin32==305 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pywinpty==2.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and os_name == "nt"
pywry==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyyaml==6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyzmq==25.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
qdldl==0.1.5.post3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
qpd==0.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
quandl==3.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
rapidfuzz==2.13.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
rdflib==6.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
regex==2022.10.31 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
reportlab==3.6.12 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
requests-futures==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
requests-oauthlib==1.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
requests==2.28.2 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
retrying==1.3.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
rich==12.6.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
riskfolio-lib==3.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
robin-stocks==2.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
rsa==4.9 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
ruamel-yaml-clib==0.2.7 ; platform_python_implementation == "CPython" and python_version < "3.11" and python_version >= "3.8" and python_full_version != "3.9.7"
ruamel-yaml==0.17.21 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ruff==0.0.247 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
scikit-learn==1.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
scipy==1.10.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
screeninfo==0.6.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
scs==3.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
seaborn==0.11.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
semantic-version==2.10.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
semver==2.13.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
send2trash==1.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
setuptools-rust==1.5.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
setuptools-scm==6.4.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
setuptools==65.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sgmllib3k==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
shap==0.41.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
six==1.16.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
slicer==0.0.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
smmap==5.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sniffio==1.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
snowballstemmer==2.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
soupsieve==2.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sparqlwrapper==2.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinx==4.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-applehelp==1.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-devhelp==1.0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-htmlhelp==2.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sqlalchemy==2.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sqlglot==11.2.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
squarify==0.4.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
stack-data==0.6.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
statsforecast==1.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
statsmodels==0.13.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
stevedore==5.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
stocksera==0.1.21 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
streamlit==1.19.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
svglib==1.5.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tabulate==0.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tbats==1.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tenacity==7.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tensorboard-data-server==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tensorboard-plugin-wit==1.8.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tensorboard==2.12.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
terminado==0.17.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
textwrap3==0.9.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
thepassiveinvestor==1.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
threadpoolctl==3.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tinycss2==1.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tokenizers==0.13.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tokenterminal==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
toml==0.10.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tomli==2.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tomlkit==0.11.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
toolz==0.12.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
torch==1.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
torchmetrics==0.11.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tornado==6.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tqdm==4.64.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
trace-updater==0.0.9 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
tradingview-ta==3.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
traitlets==5.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
transformers==4.26.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
triad==0.8.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tweepy==4.12.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-python-dateutil==2.8.19.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-pytz==2021.3.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-pyyaml==6.0.12.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-requests==2.28.11.15 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-setuptools==57.4.18 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-six==1.16.21.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-urllib3==1.26.25.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
typing-extensions==4.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tzdata==2022.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tzlocal==4.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
u8darts[torch]==0.23.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ujson==5.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
update-checker==0.18.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
urllib3==1.26.14 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
user-agent==0.1.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
vadersentiment==3.3.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
validators==0.20.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
valinvest==0.0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
vcrpy==4.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
virtualenv==20.20.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
voila==0.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
watchdog==2.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
wcwidth==0.2.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
webencodings==0.5.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
websocket-client==1.5.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
websockets==10.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
werkzeug==2.2.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
wheel==0.38.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
widgetsnbextension==4.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
win32-setctime==1.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "win32"
wrapt==1.15.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
xarray==2023.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
xgboost==1.7.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
xlsxwriter==3.0.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
y-py==0.6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
yahooquery==2.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
yarl==1.8.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
yfinance==0.2.12 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
yt-dlp==2023.2.17 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
zipp==3.15.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
zope-interface==5.5.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"

587
requirements.txt vendored
View File

@@ -1,323 +1,264 @@
aiodns==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
aiohttp==3.8.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
aiosignal==1.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
alabaster==0.7.13 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
alpha-vantage==2.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
altair==4.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ansiwrap==0.8.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
anyio==3.6.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
appdirs==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
appnope==0.1.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin" or python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and platform_system == "Darwin"
argon2-cffi-bindings==21.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
argon2-cffi==21.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ascii-magic==1.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
astor==0.8.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
astroid==2.13.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
asttokens==2.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
async-timeout==4.0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
atomicwrites==1.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "win32"
attrs==21.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
babel==2.12.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
backcall==0.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
backoff==2.2.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
backports-zoneinfo==0.2.1 ; python_version >= "3.8" and python_version < "3.9"
bandit==1.7.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
base58==2.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
beautifulsoup4==4.11.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
black==23.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
bleach==6.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
blinker==1.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
bs4==0.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
bt==0.2.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cachetools==5.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
ccxt==2.8.78 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
certifi==2022.12.7 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
cffi==1.15.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cfgv==3.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
charset-normalizer==3.0.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
click==8.1.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
codespell==2.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
colorama==0.4.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
comm==0.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
commonmark==0.9.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
contourpy==1.0.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
convertdate==2.4.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
coverage==7.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
coverage[toml]==7.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cryptography==39.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cssselect2==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cssselect==1.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cycler==0.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cython==0.29.33 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
dateparser==1.1.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
datetime==5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
debugpy==1.6.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
decorator==5.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
defusedxml==0.7.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
degiro-connector==2.0.21 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
detecta==0.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
dill==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
distlib==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
dnspython==2.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
docutils==0.17.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
entrypoints==0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
et-xmlfile==1.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
exchange-calendars==4.2.5 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
execnet==1.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
executing==1.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fastjsonschema==2.16.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
feedparser==6.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ffn==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
filelock==3.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
financedatabase==2.0.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
finnhub-python==2.4.16 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
finviz==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
finvizfinance==0.14.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
flake8==5.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fonttools==4.38.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
formulaic==0.3.4 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
fred==3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fredapi==0.4.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
frozendict==2.3.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
frozenlist==1.3.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fundamentalanalysis==0.2.14 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
future==0.18.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
gitdb==4.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
gitpython==3.1.31 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
grpcio==1.51.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
hijri-converter==2.2.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
holidays==0.14.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
html5lib==1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
identify==2.5.18 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
idna==3.4 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
imagesize==1.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
importlib-metadata==6.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
importlib-resources==5.12.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.10"
inflection==0.5.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
iniconfig==2.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
interface-meta==1.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
intrinio-sdk==6.22.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipyflex==0.2.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipykernel==6.21.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipympl==0.8.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipython-genutils==0.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipython==8.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipywidgets==8.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
iso8601==0.1.16 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
isodate==0.6.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
isort==5.12.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jedi==0.18.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jinja2==3.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
joblib==1.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
json5==0.9.11 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jsonschema==4.17.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyter-client==7.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyter-core==5.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyter-server==1.23.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab-pygments==0.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab-server==2.19.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab-widgets==3.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab==3.5.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
kiwisolver==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
korean-lunar-calendar==0.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
lazy-object-proxy==1.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
linearmodels==4.27 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
loguru==0.6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
lxml==4.9.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
markdown-it-py==1.1.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
markupsafe==2.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
matplotlib-inline==0.1.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
matplotlib==3.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mccabe==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mdit-py-plugins==0.2.8 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
mistune==2.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mock==4.0.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
more-itertools==9.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mplfinance==0.12.9b7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mstarpy==0.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
multidict==6.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
multitasking==0.0.11 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mypy-extensions==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mypy==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
myst-parser==0.15.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbclassic==0.5.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbclient==0.6.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbconvert==7.2.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbformat==5.7.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbmake==1.4.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
nest-asyncio==1.5.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nodeenv==1.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
notebook-shim==0.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
notebook==6.5.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
numpy==1.23.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
oandapyv20==0.6.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
oauthlib==3.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
onetimepass==1.0.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
openpyxl==3.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
packaging==23.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas-datareader==0.10.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas-market-calendars==3.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas-ta==0.3.14b ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas==1.5.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandocfilters==1.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
papermill==2.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
parso==0.8.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pathspec==0.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
patsy==0.5.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pbr==5.11.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pexpect==4.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform != "win32"
pickleshare==0.7.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pillow==9.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9"
platformdirs==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
plotly==5.13.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pluggy==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
praw==7.7.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
prawcore==2.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pre-commit==2.21.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
prometheus-client==0.16.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
prompt-toolkit==3.0.38 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
property-cached==1.6.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
protobuf==3.20.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
psaw==0.0.12 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
psutil==5.9.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ptyprocess==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform != "win32" or python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and os_name != "nt"
pure-eval==0.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
py==1.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyally==1.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyarrow==11.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycares==4.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycodestyle==2.9.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycoingecko==3.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycparser==2.21 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycryptodome==3.17 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pydantic==1.10.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pydeck==0.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pydocstyle==6.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyflakes==2.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pygments==2.14.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyhdfe==0.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pylint==2.15.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyluach==2.2.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pymeeus==0.5.12 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pympler==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyobjc-core==9.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin"
pyobjc-framework-cocoa==9.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin"
pyotp==2.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyparsing==3.0.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyprind==2.11.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyrsistent==0.19.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-cov==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-mock==3.10.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-recording==0.12.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-timeout==2.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest-xdist==3.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytest==6.2.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pythclient==0.1.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-binance==1.0.17 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-coinmarketcap==0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-dateutil==2.8.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-dotenv==0.19.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-i18n==0.3.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytrends==4.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytz-deprecation-shim==0.1.0.post0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytz==2022.7.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pywin32==305 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pywinpty==2.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and os_name == "nt"
pywry==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyyaml==6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyzmq==25.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
quandl==3.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
rapidfuzz==2.13.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
rdflib==6.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
regex==2022.10.31 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
reportlab==3.6.12 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
requests-futures==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
requests-oauthlib==1.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
requests==2.28.2 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
retrying==1.3.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
rich==12.6.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
robin-stocks==2.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ruamel-yaml-clib==0.2.7 ; platform_python_implementation == "CPython" and python_version < "3.11" and python_version >= "3.8" and python_full_version != "3.9.7"
ruamel-yaml==0.17.21 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ruff==0.0.247 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
scikit-learn==1.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
scipy==1.10.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
screeninfo==0.6.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
seaborn==0.11.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
semver==2.13.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
send2trash==1.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
setuptools-scm==6.4.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
setuptools==65.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sgmllib3k==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
six==1.16.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
smmap==5.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sniffio==1.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
snowballstemmer==2.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
soupsieve==2.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sparqlwrapper==2.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinx==4.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-applehelp==1.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-devhelp==1.0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-htmlhelp==2.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
squarify==0.4.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
stack-data==0.6.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
statsmodels==0.13.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
stevedore==5.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
stocksera==0.1.21 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
streamlit==1.19.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
svglib==1.5.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tabulate==0.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tenacity==7.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
terminado==0.17.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
textwrap3==0.9.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
thepassiveinvestor==1.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
threadpoolctl==3.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tinycss2==1.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tokenterminal==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
toml==0.10.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tomli==2.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tomlkit==0.11.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
toolz==0.12.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
tornado==6.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tqdm==4.64.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tradingview-ta==3.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
traitlets==5.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tweepy==4.12.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-python-dateutil==2.8.19.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-pytz==2021.3.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-pyyaml==6.0.12.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-requests==2.28.11.15 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-setuptools==57.4.18 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-six==1.16.21.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
types-urllib3==1.26.25.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
typing-extensions==4.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tzdata==2022.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tzlocal==4.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ujson==5.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
update-checker==0.18.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
urllib3==1.26.14 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
user-agent==0.1.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
vadersentiment==3.3.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
validators==0.20.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
valinvest==0.0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
vcrpy==4.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
virtualenv==20.20.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
voila==0.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
watchdog==2.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
wcwidth==0.2.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
webencodings==0.5.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
websocket-client==1.5.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
websockets==10.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
widgetsnbextension==4.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
win32-setctime==1.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "win32"
wrapt==1.15.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
y-py==0.6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
yahooquery==2.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
yarl==1.8.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
yfinance==0.2.12 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
zipp==3.15.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
zope-interface==5.5.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
aiodns==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
aiohttp==3.8.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
aiosignal==1.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
alpha-vantage==2.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
altair==4.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ansiwrap==0.8.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
anyio==3.6.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
appdirs==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
appnope==0.1.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin" or python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and platform_system == "Darwin"
argon2-cffi-bindings==21.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
argon2-cffi==21.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ascii-magic==1.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
astor==0.8.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
asttokens==2.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
async-timeout==4.0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
attrs==21.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
babel==2.12.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
backcall==0.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
backoff==2.2.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
backports-zoneinfo==0.2.1 ; python_version >= "3.8" and python_version < "3.9"
base58==2.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
beautifulsoup4==4.11.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
bleach==6.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
blinker==1.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
bs4==0.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
bt==0.2.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cachetools==5.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
ccxt==2.8.78 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
certifi==2022.12.7 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
cffi==1.15.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
charset-normalizer==3.0.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
click==8.1.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
colorama==0.4.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
comm==0.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
commonmark==0.9.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
contourpy==1.0.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
convertdate==2.4.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
cryptography==39.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cssselect2==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cssselect==1.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cycler==0.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
cython==0.29.33 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
dateparser==1.1.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
datetime==5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
debugpy==1.6.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
decorator==5.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
defusedxml==0.7.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
degiro-connector==2.0.21 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
detecta==0.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
dnspython==2.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
entrypoints==0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
et-xmlfile==1.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
exchange-calendars==4.2.5 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
executing==1.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fastjsonschema==2.16.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
feedparser==6.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ffn==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
financedatabase==2.0.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
finnhub-python==2.4.16 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
finviz==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
finvizfinance==0.14.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
flake8==5.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fonttools==4.38.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
formulaic==0.3.4 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
fred==3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fredapi==0.4.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
frozendict==2.3.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
frozenlist==1.3.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
fundamentalanalysis==0.2.14 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
future==0.18.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
gitdb==4.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
gitpython==3.1.31 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
grpcio==1.51.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
hijri-converter==2.2.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
holidays==0.14.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
html5lib==1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
idna==3.4 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
importlib-metadata==6.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
importlib-resources==5.12.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.10"
inflection==0.5.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
interface-meta==1.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
intrinio-sdk==6.22.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipyflex==0.2.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipykernel==6.21.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipympl==0.8.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipython-genutils==0.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipython==8.11.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ipywidgets==8.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
iso8601==0.1.16 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
isodate==0.6.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jedi==0.18.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jinja2==3.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
joblib==1.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
json5==0.9.11 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jsonschema==4.17.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyter-client==7.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyter-core==5.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyter-server==1.23.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab-pygments==0.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab-server==2.19.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab-widgets==3.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
jupyterlab==3.5.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
kiwisolver==1.4.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
korean-lunar-calendar==0.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
linearmodels==4.27 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
loguru==0.6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
lxml==4.9.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
markupsafe==2.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
matplotlib-inline==0.1.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
matplotlib==3.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mccabe==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mistune==2.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
more-itertools==9.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mplfinance==0.12.9b7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mstarpy==0.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
multidict==6.0.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
multitasking==0.0.11 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
mypy-extensions==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbclassic==0.5.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbclient==0.6.8 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbconvert==7.2.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nbformat==5.7.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
nest-asyncio==1.5.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
notebook-shim==0.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
notebook==6.5.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
numpy==1.23.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
oandapyv20==0.6.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
oauthlib==3.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
onetimepass==1.0.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
openpyxl==3.1.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
packaging==23.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas-datareader==0.10.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas-market-calendars==3.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas-ta==0.3.14b ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandas==1.5.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pandocfilters==1.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
papermill==2.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
parso==0.8.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
patsy==0.5.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pexpect==4.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform != "win32"
pickleshare==0.7.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pillow==9.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9"
platformdirs==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
plotly==5.13.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pmaw==3.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
praw==7.7.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
prawcore==2.3.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
prometheus-client==0.16.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
prompt-toolkit==3.0.38 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
property-cached==1.6.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
protobuf==3.20.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
psutil==5.9.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ptyprocess==0.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform != "win32" or python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and os_name != "nt"
pure-eval==0.2.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyally==1.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyarrow==11.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycares==4.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycodestyle==2.9.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycoingecko==3.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycparser==2.21 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pycryptodome==3.17 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pydantic==1.10.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pydeck==0.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyflakes==2.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pygments==2.14.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyhdfe==0.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyluach==2.2.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pymeeus==0.5.12 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
pympler==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyobjc-core==9.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin"
pyobjc-framework-cocoa==9.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin"
pyotp==2.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyparsing==3.0.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyprind==2.11.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyrsistent==0.19.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pythclient==0.1.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-binance==1.0.17 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-coinmarketcap==0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-dateutil==2.8.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-dotenv==0.19.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
python-i18n==0.3.9 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytrends==4.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytz-deprecation-shim==0.1.0.post0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pytz==2022.7.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pywin32==305 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pywinpty==2.0.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and os_name == "nt"
pywry==0.3.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyyaml==6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
pyzmq==25.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
quandl==3.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
rapidfuzz==2.13.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
rdflib==6.2.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
regex==2022.10.31 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
reportlab==3.6.12 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
requests-futures==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
requests-oauthlib==1.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
requests==2.28.2 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
retrying==1.3.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
rich==12.6.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
robin-stocks==2.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ruamel-yaml-clib==0.2.7 ; platform_python_implementation == "CPython" and python_version < "3.11" and python_version >= "3.8" and python_full_version != "3.9.7"
ruamel-yaml==0.17.21 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
scikit-learn==1.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
scipy==1.10.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
screeninfo==0.6.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
seaborn==0.11.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
semver==2.13.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
send2trash==1.8.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
setuptools-scm==6.4.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
setuptools==65.4.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sgmllib3k==1.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
six==1.16.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
smmap==5.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sniffio==1.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
soupsieve==2.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
sparqlwrapper==2.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
squarify==0.4.3 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
stack-data==0.6.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
statsmodels==0.13.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
stocksera==0.1.21 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
streamlit==1.19.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
svglib==1.5.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tabulate==0.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tenacity==7.0.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
terminado==0.17.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
textwrap3==0.9.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
thepassiveinvestor==1.1.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
threadpoolctl==3.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tinycss2==1.2.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tokenterminal==1.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
toml==0.10.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tomli==2.0.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
toolz==0.12.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
tornado==6.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tqdm==4.64.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tradingview-ta==3.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
traitlets==5.9.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tweepy==4.12.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
typing-extensions==4.5.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tzdata==2022.7 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
tzlocal==4.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
ujson==5.7.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
update-checker==0.18.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
urllib3==1.26.14 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
user-agent==0.1.10 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
vadersentiment==3.3.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
validators==0.20.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
valinvest==0.0.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
voila==0.4.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
watchdog==2.3.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
wcwidth==0.2.6 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
webencodings==0.5.1 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
websocket-client==1.5.1 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
websockets==10.4 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
widgetsnbextension==4.0.5 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
win32-setctime==1.1.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "win32"
wrapt==1.15.0 ; python_version >= "3.8" and python_version < "3.11" and python_full_version != "3.9.7"
y-py==0.6.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
yahooquery==2.3.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
yarl==1.8.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
yfinance==0.2.12 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
zipp==3.15.0 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"
zope-interface==5.5.2 ; python_version >= "3.8" and python_full_version != "3.9.7" and python_version < "3.11"

View File

@@ -9,10 +9,7 @@ import pytest
# IMPORTATION INTERNAL
from openbb_terminal import parent_classes
from openbb_terminal.core.session.current_user import (
PreferencesModel,
copy_user,
)
from openbb_terminal.core.session.current_user import PreferencesModel, copy_user
from openbb_terminal.stocks.behavioural_analysis import ba_controller
# pylint: disable=E1101
@@ -241,20 +238,6 @@ def test_call_func_expect_queue(expected_queue, queue, func):
@pytest.mark.parametrize(
"tested_func, other_args, mocked_func, called_args, called_kwargs",
[
(
"call_watchlist",
["--limit=2"],
"reddit_view.display_watchlist",
[],
dict(limit=2),
),
(
"call_spac",
["--limit=2"],
"reddit_view.display_spac",
[],
dict(limit=2),
),
(
"call_spacc",
["--limit=5", "--popular"],
@@ -400,7 +383,6 @@ def test_call_func_expect_queue(expected_queue, queue, func):
"reddit_view.display_due_diligence",
[],
dict(
symbol="MOCK_TICKER",
limit=1,
n_days=2,
show_all_flairs=True,
@@ -444,8 +426,6 @@ def test_call_func(
@pytest.mark.parametrize(
"func",
[
"call_watchlist",
"call_spac",
"call_spacc",
"call_wsb",
"call_popular",
@@ -495,7 +475,6 @@ def test_call_func_no_parser(func, mocker):
"call_mentions",
"call_messages",
"call_bullbear",
"call_getdd",
],
)
def test_call_func_no_ticker(func, mocker):

View File

@@ -5,7 +5,9 @@ Ticker: TSLA
headlines sentiment from 15+ major news headlines [FinBrain]
snews stock price displayed over sentiment of news headlines [Finnhub]
wsb show what WSB gang is up to in subreddit wallstreetbets [Reddit]
popular show popular tickers [Reddit]
spacc show other users spacs announcements from subreddit SPACs [Reddit]
getdd gets due diligence from another user's post [Reddit]
redditsent searches reddit for ticker and finds reddit sentiment [Reddit]
trending trending stocks [Stocktwits]
stalker stalk stocktwits user's last messages [Stocktwits]