mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 04:31:13 +00:00
Feature/mstarpy (#4068)
* add mstarpy to new terminal version * add mstarpy to new terminal version * add mstarpy with poetry * mapping country openbb convention and mstarpy iso * empty dataframe if no assets * remove investing command * plot with parameters * change source * mstarpy in pyproject * chnage poetry * change poetry * mstarpy key * reformat with black * spelling instantiated * correct instantiate * delete fo to pass codespell test * correction flake8 test * correction test mypy * correction pylint * pass mypy test * correction test pylint * remove mutable default value * delete equity, comment, add sweden menu * delete not used EXPORT_ONLY_RAW_DATA_ALLOWED * delete not used investpy and yfinance view * mstarpy 0.0.2 * minor changes to user msgs * added countries to autocompletion * hinting * small change on load * adjustments and deprecating investpy * minor adjustment to also load country on reset * removing forecasting as self.data is not popullated * adjustments on sector * minor adjustments * fix tests * fix tests * improved swe functions * plot display Nav * united_states as default country * mstarpy version 0.0.4 * adjustments * dependencies --------- Co-authored-by: James Maslek <jmaslek11@gmail.com> Co-authored-by: Henrique Joaquim <h.joaquim@campus.fct.unl.pt>
This commit is contained in:
@@ -488,14 +488,15 @@
|
||||
"fwd": ["FXEmpire"]
|
||||
},
|
||||
"funds": {
|
||||
"country": ["Investing"],
|
||||
"overview": ["Investing"],
|
||||
"search": ["Investing"],
|
||||
"load": ["Investing"],
|
||||
"info": ["Investing"],
|
||||
"plot": ["Investing"],
|
||||
"sector": ["YahooFinance"],
|
||||
"equity": ["YahooFinance"],
|
||||
"country": ["MorningStar"],
|
||||
"search": ["MorningStar"],
|
||||
"load": ["MorningStar"],
|
||||
"info": ["MorningStar"],
|
||||
"plot": ["MorningStar"],
|
||||
"sector": ["MorningStar"],
|
||||
"carbon" : ["MorningStar"],
|
||||
"exclusion" : ["MorningStar"],
|
||||
"holdings": ["MorningStar"],
|
||||
"alswe": ["Avanza"],
|
||||
"infoswe": ["Avanza"]
|
||||
},
|
||||
|
||||
7
openbb_terminal/miscellaneous/i18n/en.yml
vendored
7
openbb_terminal/miscellaneous/i18n/en.yml
vendored
@@ -89,7 +89,7 @@ en:
|
||||
forecast: timeseries forecasting with machine learning
|
||||
portfolio: perform portfolio optimization and look at portfolio performance and attribution
|
||||
dashboards: interactive dashboards using voila and jupyter notebooks
|
||||
stocks/filings: the most-recent form submissions to the SEC
|
||||
stocks/filings: the most-recent form submissions to the SEC
|
||||
stocks/search: search a specific stock ticker for analysis
|
||||
stocks/load: load a specific stock ticker and additional info for analysis
|
||||
stocks/_ticker: Stock
|
||||
@@ -861,6 +861,11 @@ en:
|
||||
funds/alswe: display fund allocation (sector, country, holdings)
|
||||
funds/infoswe: get fund information
|
||||
funds/forecast: forecasting techniques
|
||||
funds/country_ms: set a country for filtering
|
||||
funds/holdings: holdings of the loaded funds
|
||||
funds/carbon: carbon metrics
|
||||
funds/exclusion: exclusion policy
|
||||
funds/_country_ms: Current Country MorningStar
|
||||
alternative/hn: Hacker News most popular stories
|
||||
alternative/covid: COVID menu, cases, deaths, rates
|
||||
alternative/oss: Open Source menu, star history, repos information
|
||||
|
||||
@@ -15,20 +15,19 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_data(name: str):
|
||||
def get_data(isin: str):
|
||||
"""Gets the data from Avanza
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name: str
|
||||
Full name of the fund
|
||||
isin: str
|
||||
ISIN of the fund
|
||||
"""
|
||||
ava_fund = pd.read_csv(
|
||||
os.path.join("openbb_terminal", "mutual_funds", "avanza_fund_ID.csv"),
|
||||
index_col=0,
|
||||
)
|
||||
ava_fund.index = ava_fund.index.str.upper()
|
||||
fund_id = ava_fund.loc[name, "ID"]
|
||||
fund_id = ava_fund.loc[ava_fund["ISIN"] == isin]["ID"].tolist()[0]
|
||||
url = f"https://www.avanza.se/_api/fund-guide/guide/{fund_id}"
|
||||
response = request(url)
|
||||
fund_data = response.json()
|
||||
|
||||
@@ -28,18 +28,20 @@ sector_dict = {
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_allocation(name: str, focus: str):
|
||||
def display_allocation(name: str, isin: str, focus: str):
|
||||
"""Displays the allocation of the selected swedish fund
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name: str
|
||||
Full name of the fund
|
||||
isin: str
|
||||
ISIN of the fund
|
||||
focus: str
|
||||
The focus of the displayed allocation/exposure of the fund
|
||||
"""
|
||||
# Taken from: https://github.com/northern-64bit/Portfolio-Report-Generator/tree/main
|
||||
fund_data = avanza_model.get_data(name.upper())
|
||||
fund_data = avanza_model.get_data(isin)
|
||||
if focus in ["holding", "all"]:
|
||||
table_row = []
|
||||
console.print("")
|
||||
@@ -81,15 +83,15 @@ def display_allocation(name: str, focus: str):
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_info(name: str):
|
||||
def display_info(isin: str):
|
||||
"""Displays info of swedish funds
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name: str
|
||||
Full name of the fund
|
||||
isin: str
|
||||
ISIN of the fund
|
||||
"""
|
||||
fund_data = avanza_model.get_data(name.upper())
|
||||
fund_data = avanza_model.get_data(isin)
|
||||
text = f"\nSwedish Description:\n\n{fund_data['description']}\n\nThe fund is managed by:\n"
|
||||
for manager in fund_data["fundManagers"]:
|
||||
text = text + f"\t- {manager['name']} since {manager['startDate']}\n"
|
||||
|
||||
125
openbb_terminal/mutual_funds/mstarpy_model.py
Normal file
125
openbb_terminal/mutual_funds/mstarpy_model.py
Normal file
@@ -0,0 +1,125 @@
|
||||
import logging
|
||||
|
||||
import mstarpy
|
||||
import pandas as pd
|
||||
|
||||
from openbb_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def load_carbon_metrics(loaded_funds: mstarpy.Funds) -> pd.DataFrame:
|
||||
"""Search mstarpy for carbon metrics
|
||||
|
||||
Parameters
|
||||
----------
|
||||
loaded_funds: mstarpy.Funds
|
||||
class mstarpy.Funds instantiated with selected funds
|
||||
|
||||
Returns
|
||||
-------
|
||||
pd.DataFrame of carbon metrics
|
||||
"""
|
||||
carbonMetrics = loaded_funds.carbonMetrics()
|
||||
return pd.Series(carbonMetrics, name="carbonMetrics").reset_index()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def load_exclusion_policy(loaded_funds: mstarpy.Funds) -> pd.DataFrame:
|
||||
"""Search mstarpy exclusion policy in esgData
|
||||
|
||||
Parameters
|
||||
----------
|
||||
loaded_funds: mstarpy.Funds
|
||||
class mstarpy.Funds instantiated with selected funds
|
||||
|
||||
Returns
|
||||
-------
|
||||
pd.DataFrame of exclusion policy
|
||||
"""
|
||||
esgData = loaded_funds.esgData()
|
||||
if "sustainabilityIntentionality" in esgData:
|
||||
return pd.Series(
|
||||
esgData["sustainabilityIntentionality"], name="exclusionPolicy"
|
||||
).reset_index()
|
||||
return pd.DataFrame()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def load_funds(
|
||||
term: str = "",
|
||||
country: str = "",
|
||||
) -> mstarpy.Funds:
|
||||
"""Search mstarpy for matching funds
|
||||
|
||||
Parameters
|
||||
----------
|
||||
term : str
|
||||
String that will be searched for. Can be name or isin
|
||||
country : str
|
||||
country where the funds is hosted
|
||||
|
||||
Returns
|
||||
-------
|
||||
mstarpy.Funds
|
||||
"""
|
||||
return mstarpy.Funds(term, country)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def load_holdings(
|
||||
loaded_funds: mstarpy.Funds, holding_type: str = "all"
|
||||
) -> pd.DataFrame:
|
||||
"""Search mstarpy for holdings
|
||||
|
||||
Parameters
|
||||
----------
|
||||
loaded_funds: mstarpy.Funds
|
||||
class mstarpy.Funds instantiated with selected funds
|
||||
|
||||
holding_type : str
|
||||
type of holdings, can be all, equity, bond, other
|
||||
|
||||
Returns
|
||||
-------
|
||||
pd.DataFrame of funds holdings
|
||||
"""
|
||||
holdings = loaded_funds.holdings(holding_type)
|
||||
if holdings.empty:
|
||||
return pd.DataFrame()
|
||||
return holdings[["isin", "securityName", "weighting", "country"]]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def search_funds(
|
||||
term: str = "",
|
||||
country: str = "",
|
||||
pageSize=10,
|
||||
) -> pd.DataFrame:
|
||||
"""Search mstarpy for matching funds
|
||||
|
||||
Parameters
|
||||
----------
|
||||
term : str
|
||||
String that will be searched for. Can be name or isin
|
||||
field : list
|
||||
list of field who will be displayed
|
||||
country : str
|
||||
country where the funds is hosted
|
||||
pageSize : int
|
||||
length of results to display
|
||||
|
||||
Returns
|
||||
-------
|
||||
pd.DataFrame
|
||||
Dataframe containing matches
|
||||
"""
|
||||
field = ["SecId", "TenforeId", "LegalName"]
|
||||
try:
|
||||
return pd.DataFrame(
|
||||
mstarpy.search_funds(term, field, country=country, pageSize=pageSize)
|
||||
)
|
||||
except RuntimeError as e:
|
||||
logger.exception(str(e))
|
||||
return pd.DataFrame()
|
||||
275
openbb_terminal/mutual_funds/mstarpy_view.py
Normal file
275
openbb_terminal/mutual_funds/mstarpy_view.py
Normal file
@@ -0,0 +1,275 @@
|
||||
import logging
|
||||
from typing import Union
|
||||
|
||||
import mstarpy
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
|
||||
from openbb_terminal.mutual_funds.mutual_funds_utils import mapping_country
|
||||
from openbb_terminal.mutual_funds import mstarpy_model
|
||||
from openbb_terminal.rich_config import console
|
||||
from openbb_terminal.decorators import log_start_end
|
||||
from openbb_terminal.helper_funcs import (
|
||||
print_rich_table,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_carbon_metrics(loaded_funds: mstarpy.Funds):
|
||||
"""Display results of carbon metrics
|
||||
|
||||
Parameters
|
||||
----------
|
||||
loaded_funds: mstarpy.Funds
|
||||
class mstarpy.Funds instantiated with selected funds
|
||||
|
||||
"""
|
||||
carbonMetrics = mstarpy_model.load_carbon_metrics(loaded_funds)
|
||||
|
||||
print_rich_table(
|
||||
carbonMetrics,
|
||||
show_index=False,
|
||||
title=f"[bold]Carbon metrics of the funds {loaded_funds.name}[/bold]",
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_exclusion_policy(loaded_funds: mstarpy.Funds):
|
||||
"""Display results of exclusion policy
|
||||
|
||||
Parameters
|
||||
----------
|
||||
loaded_funds: mstarpy.Funds
|
||||
class mstarpy.Funds instantiated with selected funds
|
||||
|
||||
"""
|
||||
exclusion_policy = mstarpy_model.load_exclusion_policy(loaded_funds)
|
||||
|
||||
print_rich_table(
|
||||
exclusion_policy,
|
||||
show_index=False,
|
||||
title=f"[bold]Exclusion policy of the funds {loaded_funds.name}[/bold]",
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_historical(
|
||||
loaded_funds: mstarpy.Funds,
|
||||
start_date: str,
|
||||
end_date: str,
|
||||
comparison: str = "",
|
||||
):
|
||||
"""Display historical fund, category, index price
|
||||
|
||||
Parameters
|
||||
----------
|
||||
loaded_funds: mstarpy.funds
|
||||
class mstarpy.Funds instantiated with selected funds
|
||||
start_date: str
|
||||
start date of the period to be displayed
|
||||
end_date: str
|
||||
end date of the period to be displayed
|
||||
comparison: str
|
||||
type of comparison, can be index, category, both
|
||||
"""
|
||||
|
||||
title = f"Performance of {loaded_funds.name}"
|
||||
|
||||
if not comparison:
|
||||
data = loaded_funds.nav(start_date, end_date, frequency="daily")
|
||||
fig, ax = plt.subplots(figsize=(10, 10))
|
||||
ax.set_xlabel("Date")
|
||||
ax.set_ylabel("Nav")
|
||||
df = pd.DataFrame(data)
|
||||
df["date"] = pd.to_datetime(df["date"])
|
||||
ax.plot(df.date, df.nav, label=loaded_funds.name)
|
||||
ax.legend(loc="best")
|
||||
ax.set_title(title)
|
||||
ax.tick_params(axis="x", rotation=45)
|
||||
fig.tight_layout(pad=2)
|
||||
|
||||
else:
|
||||
data = loaded_funds.historicalData()
|
||||
comparison_list = {
|
||||
"index": [
|
||||
"fund",
|
||||
"index",
|
||||
],
|
||||
"category": ["fund", "category"],
|
||||
"both": ["fund", "index", "category"],
|
||||
}
|
||||
fig, ax = plt.subplots(figsize=(10, 10))
|
||||
ax.set_xlabel("Date")
|
||||
ax.set_ylabel("Performance (Base 100)")
|
||||
|
||||
for x in comparison_list[comparison]:
|
||||
df = pd.DataFrame(data["graphData"][x])
|
||||
df["date"] = pd.to_datetime(df["date"])
|
||||
df = df.loc[(df["date"] >= start_date) & (df["date"] <= end_date)]
|
||||
df["pct"] = (df["value"] / df["value"].shift(1) - 1).fillna(0)
|
||||
df["base_100"] = 100 * np.cumprod(1 + df["pct"])
|
||||
|
||||
if x == "fund":
|
||||
label = f"funds : {loaded_funds.name}"
|
||||
else:
|
||||
key = f"{x}Name"
|
||||
if key in data:
|
||||
label = f"{x} : {data[key]}"
|
||||
title += f" vs {label}"
|
||||
else:
|
||||
label = x
|
||||
ax.plot(df.date, df.base_100, label=label)
|
||||
ax.legend(loc="best")
|
||||
ax.set_title(title)
|
||||
ax.tick_params(axis="x", rotation=45)
|
||||
fig.tight_layout(pad=2)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_holdings(loaded_funds: mstarpy.Funds, holding_type: str = "all"):
|
||||
"""Display results of holdings
|
||||
|
||||
Parameters
|
||||
----------
|
||||
loaded_funds: mstarpy.Funds
|
||||
class mstarpy.Funds instantiated with selected funds
|
||||
|
||||
holding_type : str
|
||||
type of holdings, can be all, equity, bond, other
|
||||
|
||||
"""
|
||||
|
||||
holdings = mstarpy_model.load_holdings(loaded_funds, holding_type)
|
||||
if isinstance(holdings, pd.DataFrame):
|
||||
if holdings.empty:
|
||||
if holding_type != "all":
|
||||
console.print(f"The funds does not hold {holding_type} assets.")
|
||||
else:
|
||||
console.print("No holdings to be displayed.")
|
||||
|
||||
else:
|
||||
print_rich_table(
|
||||
holdings,
|
||||
show_index=False,
|
||||
title=f"[bold]{holding_type} holdings of the funds {loaded_funds.name}[/bold]",
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_load(
|
||||
term: str = "",
|
||||
country: str = "",
|
||||
) -> Union[mstarpy.Funds, None]:
|
||||
"""instantiate mstarpy Funds class and display the funds selected
|
||||
|
||||
Parameters
|
||||
----------
|
||||
term : str
|
||||
String that will be searched for
|
||||
|
||||
country: str
|
||||
Country to filter on
|
||||
|
||||
"""
|
||||
if country:
|
||||
iso_country = mapping_country[country]
|
||||
else:
|
||||
iso_country = ""
|
||||
funds = mstarpy_model.load_funds(term, country=iso_country)
|
||||
if isinstance(funds, mstarpy.Funds):
|
||||
return funds
|
||||
|
||||
return None
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_search(
|
||||
term: str = "",
|
||||
country: str = "",
|
||||
limit: int = 10,
|
||||
):
|
||||
"""Display results of searching for Mutual Funds
|
||||
|
||||
Parameters
|
||||
----------
|
||||
term : str
|
||||
String that will be searched for
|
||||
country: str
|
||||
Country to filter on
|
||||
limit: int
|
||||
Number to show
|
||||
"""
|
||||
if country:
|
||||
iso_country = mapping_country[country]
|
||||
else:
|
||||
iso_country = ""
|
||||
searches = mstarpy_model.search_funds(term, country=iso_country, pageSize=limit)
|
||||
if searches.empty:
|
||||
console.print("No matches found.")
|
||||
return
|
||||
|
||||
if country:
|
||||
title = f"Mutual Funds from {country.title()} matching {term}"
|
||||
else:
|
||||
title = f"Mutual Funds matching {term}"
|
||||
|
||||
print_rich_table(
|
||||
searches,
|
||||
show_index=False,
|
||||
title=f"[bold]{title}[/bold]",
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_sector(loaded_funds: mstarpy.Funds, asset_type: str = "equity"):
|
||||
"""Display fund, category, index sector breakdown
|
||||
|
||||
Parameters
|
||||
----------
|
||||
loaded_funds: mstarpy.funds
|
||||
class mstarpy.Funds instantiated with selected funds
|
||||
asset_type: str
|
||||
can be equity or fixed income
|
||||
"""
|
||||
if asset_type == "equity":
|
||||
key = "EQUITY"
|
||||
else:
|
||||
key = "FIXEDINCOME"
|
||||
|
||||
d = loaded_funds.sector()[key]
|
||||
fig, ax = plt.subplots(figsize=(10, 10))
|
||||
|
||||
width = -0.3
|
||||
|
||||
title = "Sector breakdown of "
|
||||
for x in ["fund", "index", "category"]:
|
||||
name = d[f"{x}Name"]
|
||||
data = d[f"{x}Portfolio"]
|
||||
|
||||
p_date = data["portfolioDate"]
|
||||
portfolio_date = p_date[:10] if p_date else ""
|
||||
data.pop("portfolioDate")
|
||||
|
||||
labels = list(data.keys())
|
||||
values = list(data.values())
|
||||
|
||||
# if all values are 0, skip
|
||||
values = [0 if v is None else v for v in values]
|
||||
if sum(values) == 0:
|
||||
continue
|
||||
|
||||
label_loc = np.arange(len(labels)) # the label locations
|
||||
|
||||
ax.bar(label_loc + width, values, 0.3, label=f"{x} : {name} - {portfolio_date}")
|
||||
width += 0.3 # the width of the bars
|
||||
|
||||
title += f" {name}"
|
||||
|
||||
ax.legend(loc="best")
|
||||
ax.set_xticks(label_loc, labels)
|
||||
ax.tick_params(axis="x", rotation=90)
|
||||
ax.set_title(title)
|
||||
fig.tight_layout(pad=2)
|
||||
@@ -6,29 +6,23 @@ import logging
|
||||
import os
|
||||
from datetime import datetime, timedelta
|
||||
from typing import List
|
||||
|
||||
import investpy
|
||||
import pandas as pd
|
||||
|
||||
from openbb_terminal.custom_prompt_toolkit import NestedCompleter
|
||||
|
||||
from openbb_terminal.custom_prompt_toolkit import NestedCompleter
|
||||
from openbb_terminal import feature_flags as obbff
|
||||
from openbb_terminal.decorators import log_start_end
|
||||
from openbb_terminal.helper_funcs import (
|
||||
EXPORT_BOTH_RAW_DATA_AND_FIGURES,
|
||||
EXPORT_ONLY_FIGURES_ALLOWED,
|
||||
EXPORT_ONLY_RAW_DATA_ALLOWED,
|
||||
check_non_negative_float,
|
||||
check_positive,
|
||||
valid_date,
|
||||
)
|
||||
from openbb_terminal.menu import session
|
||||
from openbb_terminal.mutual_funds import (
|
||||
investpy_model,
|
||||
investpy_view,
|
||||
yfinance_view,
|
||||
avanza_view,
|
||||
mstarpy_view,
|
||||
)
|
||||
from openbb_terminal.mutual_funds.mutual_funds_utils import mapping_country
|
||||
from openbb_terminal.parent_classes import BaseController
|
||||
from openbb_terminal.rich_config import console, MenuText
|
||||
|
||||
@@ -42,80 +36,37 @@ class FundController(BaseController):
|
||||
"resources",
|
||||
"country",
|
||||
"search",
|
||||
"info",
|
||||
"load",
|
||||
"plot",
|
||||
"sector",
|
||||
"equity",
|
||||
"alswe",
|
||||
"infoswe",
|
||||
"forecast",
|
||||
"holdings",
|
||||
"carbon",
|
||||
"exclusion",
|
||||
]
|
||||
|
||||
fund_countries = investpy.funds.get_fund_countries()
|
||||
search_by_choices = ["name", "issuer", "isin", "symbol"]
|
||||
search_cols = [
|
||||
"country",
|
||||
"name",
|
||||
"symbol",
|
||||
"issuer",
|
||||
"isin",
|
||||
"asset_class",
|
||||
"currency",
|
||||
"underlying",
|
||||
]
|
||||
focus_choices = ["all", "country", "sector", "holding"]
|
||||
fund_countries = list(mapping_country.keys())
|
||||
PATH = "/funds/"
|
||||
FILE_PATH = os.path.join(os.path.dirname(__file__), "README.md")
|
||||
CHOICES_GENERATION = True
|
||||
|
||||
def __init__(self, queue: List[str] = None):
|
||||
"""Constructor"""
|
||||
super().__init__(queue)
|
||||
|
||||
self.country = "united states"
|
||||
self.data = pd.DataFrame()
|
||||
self.country = "united_states"
|
||||
self.funds_loaded = None
|
||||
self.fund_name = ""
|
||||
self.fund_symbol = ""
|
||||
self.fund_isin = ""
|
||||
self.TRY_RELOAD = True
|
||||
self.end_date = ""
|
||||
self.start_date = ""
|
||||
|
||||
if session and obbff.USE_PROMPT_TOOLKIT:
|
||||
choices: dict = {c: {} for c in self.controller_choices}
|
||||
|
||||
one_to_hundred: dict = {str(c): {} for c in range(1, 100)}
|
||||
choices["country"] = {c: {} for c in self.fund_countries}
|
||||
choices["overview"] = {
|
||||
"--limit": None,
|
||||
"-l": "--limit",
|
||||
}
|
||||
choices["search"] = {
|
||||
"--by": {c: {} for c in self.search_by_choices},
|
||||
"-b": "--by",
|
||||
"--fund": None,
|
||||
"--sortby": {c: None for c in self.search_cols},
|
||||
"-s": "--sortby",
|
||||
"--limit": None,
|
||||
"-l": "--limit",
|
||||
"--reverse": {},
|
||||
"-r": "--reverse",
|
||||
}
|
||||
choices["load"] = {
|
||||
"--fund": None,
|
||||
"--name": {},
|
||||
"-n": "--name",
|
||||
"--start": None,
|
||||
"-s": "--start",
|
||||
"--end": None,
|
||||
"-e": "--end",
|
||||
}
|
||||
choices["sector"] = {
|
||||
"--min": one_to_hundred,
|
||||
"-m": "--min",
|
||||
}
|
||||
choices["alswe"] = {"--focus": {c: {} for c in self.focus_choices}}
|
||||
|
||||
choices["support"] = self.SUPPORT_CHOICES
|
||||
choices["about"] = self.ABOUT_CHOICES
|
||||
|
||||
choices: dict = self.choices_default
|
||||
choices["country"].update({c: {} for c in self.fund_countries})
|
||||
self.completer = NestedCompleter.from_nested_dict(choices)
|
||||
|
||||
def print_help(self):
|
||||
@@ -137,328 +88,22 @@ class FundController(BaseController):
|
||||
mt.add_raw("\n")
|
||||
mt.add_param("_fund", fund_string)
|
||||
mt.add_raw("\n")
|
||||
mt.add_cmd("info", self.fund_symbol)
|
||||
mt.add_cmd("plot", self.fund_symbol)
|
||||
if self.country == "united states":
|
||||
mt.add_cmd("sector", self.fund_symbol)
|
||||
mt.add_cmd("equity", self.fund_symbol)
|
||||
if self.country == "sweden":
|
||||
mt.add_cmd("alswe", self.fund_symbol)
|
||||
mt.add_cmd("infoswe", self.fund_symbol)
|
||||
mt.add_cmd("forecast", self.fund_symbol)
|
||||
mt.add_cmd("sector", self.fund_symbol)
|
||||
mt.add_cmd("holdings", self.fund_symbol)
|
||||
mt.add_cmd("carbon", self.fund_symbol)
|
||||
mt.add_cmd("exclusion", self.fund_symbol)
|
||||
mt.add_cmd("alswe", self.fund_symbol and self.country == "sweden")
|
||||
mt.add_cmd("infoswe", self.fund_symbol and self.country == "sweden")
|
||||
|
||||
console.print(text=mt.menu_text, menu="Mutual Funds")
|
||||
|
||||
def custom_reset(self):
|
||||
"""Class specific component of reset command"""
|
||||
if self.fund_name:
|
||||
return ["funds", f"load {self.fund_name} --name"]
|
||||
if self.fund_symbol and self.country:
|
||||
return ["funds", f"country {self.country}", f"load {self.fund_symbol}"]
|
||||
return []
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_country(self, other_args: List[str]):
|
||||
"""Process country command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="country",
|
||||
description="Set a country for funds",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-n",
|
||||
"--name",
|
||||
type=str,
|
||||
dest="name",
|
||||
nargs="+",
|
||||
help="country to select",
|
||||
)
|
||||
if other_args and "-" not in other_args[0][0]:
|
||||
other_args.insert(0, "-n")
|
||||
ns_parser = self.parse_known_args_and_warn(parser, other_args)
|
||||
if ns_parser:
|
||||
country_candidate = " ".join(ns_parser.name)
|
||||
if country_candidate.lower() in self.fund_countries:
|
||||
self.country = " ".join(ns_parser.name)
|
||||
else:
|
||||
console.print(
|
||||
f"{country_candidate.lower()} not a valid country to select."
|
||||
)
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_search(self, other_args: List[str]):
|
||||
"""Process country command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="search",
|
||||
description="Search mutual funds in selected country based on selected field.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-b",
|
||||
"--by",
|
||||
choices=self.search_by_choices,
|
||||
default="name",
|
||||
dest="by",
|
||||
help="Field to search by",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--fund",
|
||||
help="Fund string to search for",
|
||||
dest="fund",
|
||||
type=str,
|
||||
nargs="+",
|
||||
required="-h" not in other_args,
|
||||
)
|
||||
parser.add_argument(
|
||||
"-s",
|
||||
"--sortby",
|
||||
dest="sortby",
|
||||
choices=self.search_cols,
|
||||
help="Column to sort by",
|
||||
default="name",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-l",
|
||||
"--limit",
|
||||
help="Number of search results to show",
|
||||
type=check_positive,
|
||||
dest="limit",
|
||||
default=10,
|
||||
)
|
||||
parser.add_argument(
|
||||
"-r",
|
||||
"--reverse",
|
||||
action="store_true",
|
||||
dest="reverse",
|
||||
default=False,
|
||||
help=(
|
||||
"Data is sorted in descending order by default. "
|
||||
"Reverse flag will sort it in an ascending way. "
|
||||
"Only works when raw data is displayed."
|
||||
),
|
||||
)
|
||||
if other_args and "-" not in other_args[0][0]:
|
||||
other_args.insert(0, "--fund")
|
||||
ns_parser = self.parse_known_args_and_warn(parser, other_args)
|
||||
if ns_parser:
|
||||
search_string = " ".join(ns_parser.fund)
|
||||
investpy_view.display_search(
|
||||
by=ns_parser.by,
|
||||
value=search_string,
|
||||
country=self.country,
|
||||
limit=ns_parser.limit,
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
)
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_overview(self, other_args: List[str]):
|
||||
"""Process country command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="overview",
|
||||
description="Show overview of funds from selected country.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-l",
|
||||
"--limit",
|
||||
help="Number of search results to show",
|
||||
type=check_positive,
|
||||
dest="limit",
|
||||
default=10,
|
||||
)
|
||||
ns_parser = self.parse_known_args_and_warn(
|
||||
parser, other_args, export_allowed=EXPORT_ONLY_RAW_DATA_ALLOWED
|
||||
)
|
||||
if ns_parser:
|
||||
investpy_view.display_overview(
|
||||
self.country, limit=ns_parser.limit, export=ns_parser.export
|
||||
)
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_info(self, other_args: List[str]):
|
||||
"""Process country command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="info",
|
||||
description="Get fund information.",
|
||||
)
|
||||
ns_parser = self.parse_known_args_and_warn(parser, other_args)
|
||||
if ns_parser:
|
||||
if not self.fund_name:
|
||||
console.print(
|
||||
"No fund loaded. Please use `load` first to plot.\n", style="bold"
|
||||
)
|
||||
return self.queue
|
||||
investpy_view.display_fund_info(self.fund_name, country=self.country)
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_load(self, other_args: List[str]):
|
||||
"""Process country command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="load",
|
||||
description="Get historical data.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--fund",
|
||||
help="Fund string to search for",
|
||||
dest="fund",
|
||||
type=str,
|
||||
nargs="+",
|
||||
required="-h" not in other_args,
|
||||
)
|
||||
parser.add_argument(
|
||||
"-n",
|
||||
"--name",
|
||||
action="store_true",
|
||||
default=False,
|
||||
dest="name",
|
||||
help="Flag to indicate name provided instead of symbol.",
|
||||
)
|
||||
# Keeping the date format constant for investpy even though it needs to be reformatted in model
|
||||
parser.add_argument(
|
||||
"-s",
|
||||
"--start",
|
||||
type=valid_date,
|
||||
default=(datetime.now() - timedelta(days=366)).strftime("%Y-%m-%d"),
|
||||
dest="start",
|
||||
help="The starting date (format YYYY-MM-DD) of the fund",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-e",
|
||||
"--end",
|
||||
type=valid_date,
|
||||
default=datetime.now().strftime("%Y-%m-%d"),
|
||||
dest="end",
|
||||
help="The ending date (format YYYY-MM-DD) of the fund",
|
||||
)
|
||||
if other_args and "-" not in other_args[0][0]:
|
||||
other_args.insert(0, "--fund")
|
||||
ns_parser = self.parse_known_args_and_warn(parser, other_args)
|
||||
if ns_parser:
|
||||
parsed_fund = " ".join(ns_parser.fund)
|
||||
(
|
||||
self.data,
|
||||
self.fund_name,
|
||||
self.fund_symbol,
|
||||
self.country,
|
||||
) = investpy_model.get_fund_historical(
|
||||
name=parsed_fund,
|
||||
by_name=ns_parser.name,
|
||||
country=self.country,
|
||||
start_date=ns_parser.start,
|
||||
end_date=ns_parser.end,
|
||||
)
|
||||
if self.data.empty:
|
||||
console.print(
|
||||
"""No data found.
|
||||
Potential errors
|
||||
-- Incorrect country specified
|
||||
-- ISIN supplied instead of symbol
|
||||
-- Name used, but --name flag not passed"""
|
||||
)
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_plot(self, other_args: List[str]):
|
||||
"""Process country command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="plot",
|
||||
description="Plot historical data.",
|
||||
)
|
||||
|
||||
ns_parser = self.parse_known_args_and_warn(
|
||||
parser, other_args, export_allowed=EXPORT_ONLY_FIGURES_ALLOWED
|
||||
)
|
||||
if ns_parser:
|
||||
if not self.fund_symbol:
|
||||
console.print(
|
||||
"No fund loaded. Please use `load` first to plot.\n", style="bold"
|
||||
)
|
||||
return self.queue
|
||||
investpy_view.display_historical(
|
||||
self.data, name=self.fund_name, export=ns_parser.export
|
||||
)
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_sector(self, other_args: List[str]):
|
||||
"""Process sector command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="sector",
|
||||
description="Show fund sector weighting.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-m",
|
||||
"--min",
|
||||
type=check_non_negative_float,
|
||||
dest="min",
|
||||
help="Minimum positive float to display sector",
|
||||
default=5,
|
||||
)
|
||||
|
||||
ns_parser = self.parse_known_args_and_warn(
|
||||
parser, other_args, export_allowed=EXPORT_BOTH_RAW_DATA_AND_FIGURES
|
||||
)
|
||||
if ns_parser:
|
||||
if self.country != "united states":
|
||||
console.print(
|
||||
"YFinance implementation currently only supports funds from united states"
|
||||
)
|
||||
return self.queue
|
||||
if not self.fund_symbol or not self.fund_name:
|
||||
console.print(
|
||||
"No fund loaded. Please use `load` first to plot.\n", style="bold"
|
||||
)
|
||||
return self.queue
|
||||
yfinance_view.display_sector(
|
||||
self.fund_symbol,
|
||||
min_pct_to_display=ns_parser.min,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_equity(self, other_args: List[str]):
|
||||
"""Process equity command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="equity",
|
||||
description="Show fund equity holdings.",
|
||||
)
|
||||
|
||||
ns_parser = self.parse_known_args_and_warn(parser, other_args)
|
||||
if ns_parser:
|
||||
if self.country != "united states":
|
||||
console.print(
|
||||
"YFinance implementation currently only supports funds from united states"
|
||||
)
|
||||
return self.queue
|
||||
if not self.fund_symbol or not self.fund_name:
|
||||
console.print(
|
||||
"No fund loaded. Please use `load` first to plot.\n", style="bold"
|
||||
)
|
||||
return self.queue
|
||||
yfinance_view.display_equity(self.fund_symbol)
|
||||
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_alswe(self, other_args: List[str]):
|
||||
"""Process alswe command"""
|
||||
@@ -466,13 +111,14 @@ Potential errors
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="alswe",
|
||||
description="Show allocation of a swedish fund.",
|
||||
description="Show allocation of a swedish fund. "
|
||||
"To get a list of available funds, check the file `avanza_fund_ID.csv`.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--focus",
|
||||
dest="focus",
|
||||
type=str,
|
||||
choices=self.focus_choices,
|
||||
choices=["all", "country", "sector", "holding"],
|
||||
default="all",
|
||||
help="The focus of the funds exposure/allocation",
|
||||
)
|
||||
@@ -488,20 +134,14 @@ Potential errors
|
||||
"Avanza implementation currently only supports funds from sweden."
|
||||
)
|
||||
return self.queue
|
||||
if self.fund_name == "":
|
||||
if self.fund_symbol != "":
|
||||
self.fund_symbol = investpy_model.get_fund_name_from_symbol(
|
||||
self.fund_symbol
|
||||
)
|
||||
else:
|
||||
console.print(
|
||||
"No fund loaded. Please use `load` first.\n", style="bold"
|
||||
)
|
||||
return self.queue
|
||||
if self.fund_name.upper() not in ava_fund.index.str.upper().to_numpy():
|
||||
console.print("No fund data. Please use another fund", style="bold")
|
||||
|
||||
if self.fund_isin not in ava_fund["ISIN"].tolist():
|
||||
console.print("No fund data. Please use another fund.")
|
||||
return self.queue
|
||||
avanza_view.display_allocation(self.fund_name, ns_parser.focus)
|
||||
|
||||
avanza_view.display_allocation(
|
||||
name=self.fund_name, isin=self.fund_isin, focus=ns_parser.focus
|
||||
)
|
||||
|
||||
return self.queue
|
||||
|
||||
@@ -512,7 +152,8 @@ Potential errors
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="infoswe",
|
||||
description="Show fund info of a swedish fund.",
|
||||
description="Show fund info of a swedish fund. "
|
||||
"To get a list of available funds, check the file `avanza_fund_ID.csv`.",
|
||||
)
|
||||
|
||||
ns_parser = self.parse_known_args_and_warn(parser, other_args)
|
||||
@@ -526,32 +167,276 @@ Potential errors
|
||||
"Avanza implementation currently only supports funds from sweden."
|
||||
)
|
||||
return self.queue
|
||||
if self.fund_name == "":
|
||||
if self.fund_symbol != "":
|
||||
self.fund_symbol = investpy_model.get_fund_name_from_symbol(
|
||||
self.fund_symbol
|
||||
)
|
||||
else:
|
||||
console.print(
|
||||
"No fund loaded. Please use `load` first.\n", style="bold"
|
||||
)
|
||||
return self.queue
|
||||
if self.fund_name.upper() not in ava_fund.index.str.upper().to_numpy():
|
||||
console.print("No fund data. Please use another fund", style="bold")
|
||||
|
||||
if self.fund_isin not in ava_fund["ISIN"].tolist():
|
||||
console.print("No fund data. Please use another fund.")
|
||||
return self.queue
|
||||
avanza_view.display_info(self.fund_name)
|
||||
|
||||
avanza_view.display_info(self.fund_isin)
|
||||
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_forecast(self, _):
|
||||
"""Process forecast command"""
|
||||
# pylint: disable=import-outside-toplevel
|
||||
from openbb_terminal.forecast import forecast_controller
|
||||
|
||||
self.queue = self.load_class(
|
||||
forecast_controller.ForecastController,
|
||||
self.fund_name,
|
||||
self.data,
|
||||
self.queue,
|
||||
def call_country(self, other_args: List[str]):
|
||||
"""Process country command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="country",
|
||||
description="Set a country for funds",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-n",
|
||||
"--name",
|
||||
type=str,
|
||||
choices=self.fund_countries,
|
||||
dest="name",
|
||||
help="country to select",
|
||||
default="",
|
||||
)
|
||||
if other_args and "-" not in other_args[0][0]:
|
||||
other_args.insert(0, "-n")
|
||||
ns_parser = self.parse_known_args_and_warn(parser, other_args)
|
||||
if ns_parser:
|
||||
country_candidate = ns_parser.name
|
||||
if country_candidate.lower() in self.fund_countries:
|
||||
self.country = country_candidate
|
||||
console.print(f"{country_candidate.title()} selected.")
|
||||
else:
|
||||
console.print(
|
||||
f'" {country_candidate.title()} " not a valid country to select.'
|
||||
)
|
||||
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_search(self, other_args: List[str]):
|
||||
"""Process search command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="search",
|
||||
description="Search mutual funds in selected country",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--fund",
|
||||
help="Fund string to search for",
|
||||
dest="fund",
|
||||
type=str,
|
||||
required="-h" not in other_args,
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"-l",
|
||||
"--limit",
|
||||
help="Number of search results to show",
|
||||
type=check_positive,
|
||||
dest="limit",
|
||||
default=10,
|
||||
)
|
||||
if other_args and "-" not in other_args[0][0]:
|
||||
other_args.insert(0, "--fund")
|
||||
ns_parser = self.parse_known_args_and_warn(parser, other_args)
|
||||
if ns_parser:
|
||||
mstarpy_view.display_search(
|
||||
term=ns_parser.fund,
|
||||
country=self.country,
|
||||
limit=ns_parser.limit,
|
||||
)
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_load(self, other_args: List[str]):
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="load",
|
||||
description="Load the fund to perform analysis on.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--fund",
|
||||
help="Fund string to search for",
|
||||
dest="fund",
|
||||
type=str,
|
||||
required="-h" not in other_args,
|
||||
)
|
||||
parser.add_argument(
|
||||
"-s",
|
||||
"--start",
|
||||
type=valid_date,
|
||||
default=(datetime.now() - timedelta(days=365)).strftime("%Y-%m-%d"),
|
||||
dest="start",
|
||||
help="The starting date (format YYYY-MM-DD) of the stock",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-e",
|
||||
"--end",
|
||||
type=valid_date,
|
||||
default=datetime.now().strftime("%Y-%m-%d"),
|
||||
dest="end",
|
||||
help="The ending date (format YYYY-MM-DD) of the stock",
|
||||
)
|
||||
if other_args and "-" not in other_args[0][0]:
|
||||
other_args.insert(0, "--fund")
|
||||
ns_parser = self.parse_known_args_and_warn(parser, other_args)
|
||||
if ns_parser:
|
||||
if not self.country:
|
||||
console.print(
|
||||
"[yellow]Loading without a country selected "
|
||||
" might result in unexpected results.[/yellow]"
|
||||
)
|
||||
|
||||
funds_loaded = mstarpy_view.display_load(
|
||||
term=ns_parser.fund, country=self.country
|
||||
)
|
||||
|
||||
if funds_loaded:
|
||||
self.funds_loaded = funds_loaded
|
||||
self.fund_name = funds_loaded.name
|
||||
self.fund_symbol = funds_loaded.code
|
||||
self.fund_isin = funds_loaded.isin
|
||||
self.end_date = ns_parser.end.strftime("%Y-%m-%d")
|
||||
self.start_date = ns_parser.start.strftime("%Y-%m-%d")
|
||||
|
||||
console.print(
|
||||
f"The fund {self.fund_name} - {self.fund_isin} ({self.fund_symbol})"
|
||||
" was successfully loaded."
|
||||
)
|
||||
|
||||
else:
|
||||
console.print("No funds were loaded.")
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_plot(self, other_args: List[str]):
|
||||
"""Process plot command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="plot",
|
||||
description="Plot historical data.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-c",
|
||||
default="",
|
||||
choices=["category", "index", "both"],
|
||||
dest="compare",
|
||||
type=str.lower,
|
||||
help="Compare funds performance with its category or index",
|
||||
)
|
||||
ns_parser = self.parse_known_args_and_warn(
|
||||
parser, other_args, export_allowed=EXPORT_ONLY_FIGURES_ALLOWED
|
||||
)
|
||||
if ns_parser:
|
||||
if not self.fund_symbol:
|
||||
console.print("No fund loaded. Please use `load` first to plot.")
|
||||
return self.queue
|
||||
mstarpy_view.display_historical(
|
||||
loaded_funds=self.funds_loaded,
|
||||
start_date=datetime.strptime(self.start_date, "%Y-%m-%d"),
|
||||
end_date=datetime.strptime(self.end_date, "%Y-%m-%d"),
|
||||
comparison=ns_parser.compare,
|
||||
)
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_sector(self, other_args: List[str]):
|
||||
"""Process plot command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="sector",
|
||||
description="Show funds, index, category sector breakdown.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-t",
|
||||
"--type",
|
||||
type=str,
|
||||
choices=["equity", "fixed_income"],
|
||||
dest="type",
|
||||
help="asset type to select",
|
||||
default="equity",
|
||||
)
|
||||
if other_args and "-" not in other_args[0][0]:
|
||||
other_args.insert(0, "-t")
|
||||
|
||||
ns_parser = self.parse_known_args_and_warn(parser, other_args)
|
||||
|
||||
if ns_parser:
|
||||
if not self.fund_symbol:
|
||||
console.print("No fund loaded. Please use `load` first.")
|
||||
return self.queue
|
||||
|
||||
mstarpy_view.display_sector(self.funds_loaded, asset_type=ns_parser.type)
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_holdings(self, other_args: List[str]):
|
||||
"""Process holdings command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="holdings",
|
||||
description="Show funds holdings.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-t",
|
||||
"--type",
|
||||
type=str,
|
||||
choices=["all", "equity", "bond", "other"],
|
||||
dest="type",
|
||||
help="type of holdings",
|
||||
default="all",
|
||||
)
|
||||
if other_args and "-" not in other_args[0][0]:
|
||||
other_args.insert(0, "-t")
|
||||
ns_parser = self.parse_known_args_and_warn(parser, other_args)
|
||||
|
||||
if ns_parser:
|
||||
if not self.fund_symbol:
|
||||
console.print("No fund loaded. Please use `load` first.")
|
||||
return self.queue
|
||||
|
||||
mstarpy_view.display_holdings(self.funds_loaded, ns_parser.type)
|
||||
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_carbon(self, other_args: List[str]):
|
||||
"""Process carbon_metrics command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="carbon",
|
||||
description="Show funds carbon metrcis.",
|
||||
)
|
||||
|
||||
ns_parser = self.parse_known_args_and_warn(parser, other_args)
|
||||
if ns_parser:
|
||||
if not self.fund_symbol:
|
||||
console.print("No fund loaded. Please use `load` first.")
|
||||
return self.queue
|
||||
|
||||
mstarpy_view.display_carbon_metrics(self.funds_loaded)
|
||||
|
||||
return self.queue
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_exclusion(self, other_args: List[str]):
|
||||
"""Process exclusion_policy command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="exclusion",
|
||||
description="Show funds exclsuion policy.",
|
||||
)
|
||||
|
||||
ns_parser = self.parse_known_args_and_warn(parser, other_args)
|
||||
if ns_parser:
|
||||
if not self.fund_symbol:
|
||||
console.print("No fund loaded. Please use `load` first to plot.")
|
||||
return self.queue
|
||||
|
||||
mstarpy_view.display_exclusion_policy(self.funds_loaded)
|
||||
|
||||
return self.queue
|
||||
|
||||
250
openbb_terminal/mutual_funds/mutual_funds_utils.py
Normal file
250
openbb_terminal/mutual_funds/mutual_funds_utils.py
Normal file
@@ -0,0 +1,250 @@
|
||||
mapping_country = {
|
||||
"afghanistan": "af",
|
||||
"åland_islands": "ax",
|
||||
"albania": "al",
|
||||
"algeria": "dz",
|
||||
"american_samoa": "as",
|
||||
"andorra": "ad",
|
||||
"angola": "ao",
|
||||
"anguilla": "ai",
|
||||
"antarctica": "aq",
|
||||
"antigua_and_barbuda": "ag",
|
||||
"argentina": "ar",
|
||||
"armenia": "am",
|
||||
"aruba": "aw",
|
||||
"australia": "au",
|
||||
"austria": "at",
|
||||
"azerbaijan": "az",
|
||||
"bahamas": "bs",
|
||||
"bahrain": "bh",
|
||||
"bangladesh": "bd",
|
||||
"barbados": "bb",
|
||||
"belarus": "by",
|
||||
"belgium": "be",
|
||||
"belize": "bz",
|
||||
"benin": "bj",
|
||||
"bermuda": "bm",
|
||||
"bhutan": "bt",
|
||||
"bolivia": "bo",
|
||||
"bonaire": "bq",
|
||||
"bosnia_and_herzegovina": "ba",
|
||||
"botswana": "bw",
|
||||
"bouvet_island": "bv",
|
||||
"brazil": "br",
|
||||
"british_indian_ocean_territory": "io",
|
||||
"brunei_darussalam": "bn",
|
||||
"bulgaria": "bg",
|
||||
"burkina_faso": "bf",
|
||||
"burundi": "bi",
|
||||
"cabo_verde": "cv",
|
||||
"cambodia": "kh",
|
||||
"cameroon": "cm",
|
||||
"canada": "ca",
|
||||
"cayman_islands": "ky",
|
||||
"central_african_republic": "cf",
|
||||
"chad": "td",
|
||||
"chile": "cl",
|
||||
"china": "cn",
|
||||
"christmas_island": "cx",
|
||||
"cocos_(keeling)_islands": "cc",
|
||||
"colombia": "co",
|
||||
"comoros": "km",
|
||||
"congo_(the_democratic_republic_of_the)": "cd",
|
||||
"congo_(the)": "cg",
|
||||
"cook_islands": "ck",
|
||||
"costa_rica": "cr",
|
||||
"cote_divoire": "ci",
|
||||
"croatia": "hr",
|
||||
"cuba": "cu",
|
||||
"curaçao": "cw",
|
||||
"cyprus": "cy",
|
||||
"czechia": "cz",
|
||||
"denmark": "dk",
|
||||
"djibouti": "dj",
|
||||
"dominica": "dm",
|
||||
"dominican_republic": "do",
|
||||
"ecuador": "ec",
|
||||
"egypt": "eg",
|
||||
"el_salvador": "sv",
|
||||
"equatorial_guinea": "gq",
|
||||
"eritrea": "er",
|
||||
"estonia": "ee",
|
||||
"eswatini": "sz",
|
||||
"ethiopia": "et",
|
||||
"falkland_islands": "fk",
|
||||
"fiji": "fj",
|
||||
"finland": "fi",
|
||||
"france": "fr",
|
||||
"french_guiana": "gf",
|
||||
"french_polynesia": "pf",
|
||||
"french_southern_territories": "tf",
|
||||
"gabon": "ga",
|
||||
"gambia": "gm",
|
||||
"georgia": "ge",
|
||||
"germany": "de",
|
||||
"ghana": "gh",
|
||||
"gibraltar": "gi",
|
||||
"greece": "gr",
|
||||
"greenland": "gl",
|
||||
"grenada": "gd",
|
||||
"guadeloupe": "gp",
|
||||
"guam": "gu",
|
||||
"guatemala": "gt",
|
||||
"guernsey": "gg",
|
||||
"guinea": "gn",
|
||||
"guinea-bissau": "gw",
|
||||
"guyana": "gy",
|
||||
"haiti": "ht",
|
||||
"heard_island_and_mcdonald_islands": "hm",
|
||||
"holy_see": "va",
|
||||
"honduras": "hn",
|
||||
"hong_kong": "hk",
|
||||
"hungary": "hu",
|
||||
"iceland": "is",
|
||||
"india": "in",
|
||||
"indonesia": "id",
|
||||
"iran": "ir",
|
||||
"iraq": "iq",
|
||||
"ireland": "ie",
|
||||
"isle_of_man": "im",
|
||||
"israel": "il",
|
||||
"italy": "it",
|
||||
"jamaica": "jm",
|
||||
"japan": "jp",
|
||||
"jersey": "je",
|
||||
"jordan": "jo",
|
||||
"kazakhstan": "kz",
|
||||
"kenya": "ke",
|
||||
"kiribati": "ki",
|
||||
"korea_(the_democratic_peoples_republic_of)": "kp",
|
||||
"korea_(the_republic_of)": "kr",
|
||||
"kuwait": "kw",
|
||||
"kyrgyzstan": "kg",
|
||||
"lao_peoples_democratic_republic": "la",
|
||||
"latvia": "lv",
|
||||
"lebanon": "lb",
|
||||
"lesotho": "ls",
|
||||
"liberia": "lr",
|
||||
"libya": "ly",
|
||||
"liechtenstein": "li",
|
||||
"lithuania": "lt",
|
||||
"luxembourg": "lu",
|
||||
"macao": "mo",
|
||||
"north_macedonia": "mk",
|
||||
"madagascar": "mg",
|
||||
"malawi": "mw",
|
||||
"malaysia": "my",
|
||||
"maldives": "mv",
|
||||
"mali": "ml",
|
||||
"malta": "mt",
|
||||
"marshall_islands": "mh",
|
||||
"martinique": "mq",
|
||||
"mauritania": "mr",
|
||||
"mauritius": "mu",
|
||||
"mayotte": "yt",
|
||||
"mexico": "mx",
|
||||
"micronesia": "fm",
|
||||
"moldova": "md",
|
||||
"monaco": "mc",
|
||||
"mongolia": "mn",
|
||||
"montenegro": "me",
|
||||
"montserrat": "ms",
|
||||
"morocco": "ma",
|
||||
"mozambique": "mz",
|
||||
"myanmar": "mm",
|
||||
"namibia": "na",
|
||||
"nauru": "nr",
|
||||
"nepal": "np",
|
||||
"netherlands": "nl",
|
||||
"new_caledonia": "nc",
|
||||
"new_zealand": "nz",
|
||||
"nicaragua": "ni",
|
||||
"niger": "ne",
|
||||
"nigeria": "ng",
|
||||
"niue": "nu",
|
||||
"norfolk_island": "nf",
|
||||
"northern_mariana_islands": "mp",
|
||||
"norway": "no",
|
||||
"oman": "om",
|
||||
"pakistan": "pk",
|
||||
"palau": "pw",
|
||||
"palestine": "ps",
|
||||
"panama": "pa",
|
||||
"papua_new_guinea": "pg",
|
||||
"paraguay": "py",
|
||||
"peru": "pe",
|
||||
"philippines": "ph",
|
||||
"pitcairn": "pn",
|
||||
"poland": "pl",
|
||||
"portugal": "pt",
|
||||
"puerto_rico": "pr",
|
||||
"qatar": "qa",
|
||||
"réunion": "re",
|
||||
"romania": "ro",
|
||||
"russian_federation": "ru",
|
||||
"rwanda": "rw",
|
||||
"saint_barthélemy": "bl",
|
||||
"saint_helena": "sh",
|
||||
"saint_kitts_and_nevis": "kn",
|
||||
"saint_lucia": "lc",
|
||||
"saint_martin_(french_part)": "mf",
|
||||
"saint_pierre_and_miquelon": "pm",
|
||||
"saint_vincent_and_the_grenadines": "vc",
|
||||
"samoa": "ws",
|
||||
"san_marino": "sm",
|
||||
"sao_tome_and_principe": "st",
|
||||
"saudi_arabia": "sa",
|
||||
"senegal": "sn",
|
||||
"serbia": "rs",
|
||||
"seychelles": "sc",
|
||||
"sierra_leone": "sl",
|
||||
"singapore": "sg",
|
||||
"sint_maarten_(dutch_part)": "sx",
|
||||
"slovakia": "sk",
|
||||
"slovenia": "si",
|
||||
"solomon_islands": "sb",
|
||||
"somalia": "so",
|
||||
"south_africa": "za",
|
||||
"south_georgia_and_the_south_sandwich_islands": "gs",
|
||||
"south_sudan": "ss",
|
||||
"spain": "es",
|
||||
"sri_lanka": "lk",
|
||||
"sudan": "sd",
|
||||
"suriname": "sr",
|
||||
"svalbard": "sj",
|
||||
"sweden": "se",
|
||||
"switzerland": "ch",
|
||||
"syrian_arab_republic": "sy",
|
||||
"taiwan": "tw",
|
||||
"tajikistan": "tj",
|
||||
"tanzania": "tz",
|
||||
"thailand": "th",
|
||||
"timor-leste": "tl",
|
||||
"togo": "tg",
|
||||
"tokelau": "tk",
|
||||
"tonga": "to",
|
||||
"trinidad_and_tobago": "tt",
|
||||
"tunisia": "tn",
|
||||
"türkiye": "tr",
|
||||
"turkmenistan": "tm",
|
||||
"turks_and_caicos_islands": "tc",
|
||||
"tuvalu": "tv",
|
||||
"uganda": "ug",
|
||||
"ukraine": "ua",
|
||||
"united_arab_emirates": "ae",
|
||||
"united_kingdom": "gb",
|
||||
"united_states_minor_outlying_islands": "um",
|
||||
"united_states": "us",
|
||||
"uruguay": "uy",
|
||||
"uzbekistan": "uz",
|
||||
"vanuatu": "vu",
|
||||
"venezuela": "ve",
|
||||
"viet_nam": "vn",
|
||||
"virgin_islands_(british)": "vg",
|
||||
"virgin_islands_(u.s.)": "vi",
|
||||
"wallis_and_futuna": "wf",
|
||||
"western_sahara": "eh",
|
||||
"yemen": "ye",
|
||||
"zambia": "zm",
|
||||
"zimbabwe": "zw",
|
||||
}
|
||||
@@ -104,6 +104,7 @@ class TerminalController(BaseController):
|
||||
"sources",
|
||||
"forecast",
|
||||
"futures",
|
||||
"funds",
|
||||
]
|
||||
|
||||
PATH = "/"
|
||||
@@ -187,6 +188,7 @@ class TerminalController(BaseController):
|
||||
mt.add_menu("forex")
|
||||
mt.add_menu("futures")
|
||||
mt.add_menu("alternative")
|
||||
mt.add_menu("funds")
|
||||
mt.add_raw("\n")
|
||||
mt.add_info("_others_")
|
||||
mt.add_menu("econometrics")
|
||||
@@ -472,6 +474,14 @@ class TerminalController(BaseController):
|
||||
|
||||
self.queue = self.load_class(FuturesController, self.queue)
|
||||
|
||||
def call_funds(self, _):
|
||||
"""Process etf command"""
|
||||
from openbb_terminal.mutual_funds.mutual_fund_controller import (
|
||||
FundController,
|
||||
)
|
||||
|
||||
self.queue = self.load_class(FundController, self.queue)
|
||||
|
||||
def call_intro(self, _):
|
||||
"""Process intro command."""
|
||||
console.print(panel.Panel("[purple]Welcome to the OpenBB Terminal.[/purple]"))
|
||||
|
||||
742
poetry.lock
generated
vendored
742
poetry.lock
generated
vendored
File diff suppressed because it is too large
Load Diff
1
pyproject.toml
vendored
1
pyproject.toml
vendored
@@ -107,6 +107,7 @@ u8darts = {extras = ["torch"], version = "0.23.0", optional = true}
|
||||
docstring-parser = {version = "^0.15", optional = true}
|
||||
grpcio = "^1.51.1"
|
||||
jupyterlab-widgets = "^3.0.3"
|
||||
mstarpy = "^0.0.4"
|
||||
packaging = ">=22.0"
|
||||
SPARQLWrapper = "^2.0.0"
|
||||
|
||||
|
||||
311
requirements-full.txt
vendored
311
requirements-full.txt
vendored
@@ -1,10 +1,11 @@
|
||||
absl-py==1.3.0; python_version >= "3.7"
|
||||
absl-py==1.4.0; python_version >= "3.7"
|
||||
aiodns==3.0.0; python_version >= "3.5.2" and python_full_version >= "3.7.0"
|
||||
aiohttp==3.8.3; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
aiosignal==1.2.0; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
alabaster==0.7.12; python_version >= "3.6"
|
||||
aiohttp==3.8.3; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
aiosignal==1.3.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
alabaster==0.7.13; python_version >= "3.6"
|
||||
alpha-vantage==2.3.1
|
||||
altair==4.2.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
altair==4.2.2; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
ansiwrap==0.8.4; python_version >= "3.7"
|
||||
anyio==3.6.2; python_full_version >= "3.6.2" and python_version >= "3.8" and python_version < "4.0"
|
||||
appdirs==1.4.4
|
||||
appnope==0.1.3; sys_platform == "darwin" and python_version >= "3.8" and platform_system == "Darwin" and python_full_version >= "3.7.0" and python_full_version < "4.0.0"
|
||||
@@ -13,48 +14,49 @@ argon2-cffi-bindings==21.2.0; python_version >= "3.7"
|
||||
argon2-cffi==21.3.0; python_version >= "3.7"
|
||||
ascii-magic==1.6; python_version >= "3.5"
|
||||
astor==0.8.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
astroid==2.12.12; python_full_version >= "3.7.2"
|
||||
astropy==5.1.1; python_version >= "3.8"
|
||||
asttokens==2.0.8; python_version >= "3.8"
|
||||
async-timeout==4.0.2; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
astroid==2.13.5; python_full_version >= "3.7.2"
|
||||
astropy==5.2.1; python_version >= "3.8"
|
||||
asttokens==2.2.1; python_version >= "3.8"
|
||||
async-timeout==4.0.2; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
atomicwrites==1.4.1; sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.7.0" and python_full_version < "4.0.0"
|
||||
attrs==21.4.0; python_full_version >= "3.7.0" and python_version >= "3.7" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.6" and python_version < "4.0" and python_full_version >= "3.5.0") and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0")
|
||||
babel==2.10.3; python_version >= "3.7"
|
||||
attrs==21.4.0; python_full_version >= "3.7.0" and python_version >= "3.8" and python_version < "4.0" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.6" and python_version < "4.0" and python_full_version >= "3.5.0") and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0")
|
||||
babel==2.11.0; python_version >= "3.7"
|
||||
backcall==0.2.0; python_version >= "3.8"
|
||||
backoff==2.2.1; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
backports.zoneinfo==0.2.1; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.9" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.6") or python_full_version > "3.9.7" and python_version >= "3.6" and python_version < "3.9" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.6")
|
||||
backports.zoneinfo==0.2.1; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.9" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.7") or python_full_version > "3.9.7" and python_version >= "3.7" and python_version < "3.9" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.7")
|
||||
bandit==1.7.4; python_version >= "3.7"
|
||||
base58==2.1.1; python_version >= "3.5" and python_full_version >= "3.7.0"
|
||||
beartype==0.7.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
|
||||
beautifulsoup4==4.11.1; python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
beautifulsoup4==4.11.2; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
|
||||
black==23.1.0; python_version >= "3.7"
|
||||
bleach==5.0.1; python_version >= "3.7"
|
||||
bleach==6.0.0; python_version >= "3.7"
|
||||
blinker==1.5; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.5.0" or python_full_version > "3.9.7"
|
||||
bs4==0.0.1
|
||||
bt==0.2.9; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0")
|
||||
cachetools==5.2.0; python_version >= "3.7" and python_version < "4.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7")
|
||||
cachetools==5.3.0; python_version >= "3.7" and python_version < "4.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7")
|
||||
catboost==1.1.1; python_version >= "3.7"
|
||||
ccxt==2.5.80
|
||||
ccxt==2.7.36
|
||||
certifi==2022.12.7; python_version >= "3.8" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
|
||||
cffi==1.15.1; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.7.0" and python_full_version < "4.0.0"
|
||||
cffi==1.15.1; implementation_name == "pypy" and python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0"
|
||||
cfgv==3.3.1; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
charset-normalizer==2.1.1; python_full_version >= "3.6.0"
|
||||
click==8.1.3; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
cloudpickle==2.2.0; python_version >= "3.7"
|
||||
cmdstanpy==1.0.8; python_version >= "3.7"
|
||||
cloudpickle==2.2.1; python_version >= "3.7"
|
||||
cmdstanpy==1.1.0; python_version >= "3.7"
|
||||
codespell==2.2.2; python_version >= "3.7"
|
||||
colorama==0.4.6; python_full_version >= "3.7.2" and python_version >= "3.8" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.7.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.7" and python_full_version >= "3.7.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") or platform_system == "Windows" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") and python_full_version >= "3.7.0") and (python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.8" and python_full_version >= "3.7.0") and python_full_version < "4.0.0"
|
||||
colorama==0.4.6; python_full_version >= "3.7.2" and python_version >= "3.8" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.7.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.7" and python_full_version >= "3.7.0") and (python_version >= "3.8" and python_full_version < "3.0.0" and python_version < "4.0" and platform_system == "Windows" or python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0" and platform_system == "Windows") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") or platform_system == "Windows" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") and python_full_version >= "3.7.0") and (python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.8" and python_full_version >= "3.7.0") and python_full_version < "4.0.0"
|
||||
comm==0.1.2; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
commonmark==0.9.1; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
|
||||
convertdate==2.4.0; python_version >= "3.7" and python_version < "4"
|
||||
coverage==6.5.0; python_version >= "3.7"
|
||||
coverage==7.1.0; python_version >= "3.7"
|
||||
cryptography==39.0.0; python_version >= "3.6"
|
||||
cssselect==1.1.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
|
||||
cvxpy==1.2.1; python_version >= "3.7"
|
||||
cssselect==1.2.0; python_version >= "3.8" and python_version < "4.0"
|
||||
cvxpy==1.3.0; python_version >= "3.7"
|
||||
cycler==0.11.0; python_version >= "3.7"
|
||||
cython==0.29.32; python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "darwin" or python_full_version >= "3.3.0" and sys_platform == "darwin" and python_version >= "3.8"
|
||||
dateparser==1.1.2; python_version >= "3.5"
|
||||
datetime==4.7; python_version >= "3.5"
|
||||
debugpy==1.6.3; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
cython==0.29.33; python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "darwin" or python_full_version >= "3.3.0" and sys_platform == "darwin" and python_version >= "3.8"
|
||||
dateparser==1.1.7; python_version >= "3.7"
|
||||
datetime==5.0; python_version >= "3.5"
|
||||
debugpy==1.6.6; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
decorator==5.1.1; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8"
|
||||
defusedxml==0.7.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
|
||||
degiro-connector==2.0.21; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
|
||||
@@ -62,172 +64,173 @@ deprecation==2.1.0
|
||||
detecta==0.0.5; python_version >= "3.6"
|
||||
dill==0.3.6; python_version >= "3.7" and python_full_version >= "3.7.2"
|
||||
distlib==0.3.6; python_version >= "3.7"
|
||||
dnspython==2.2.1; python_version >= "3.6" and python_version < "4.0"
|
||||
dnspython==2.3.0; python_version >= "3.7" and python_version < "4.0"
|
||||
docutils==0.17.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
|
||||
ecos==2.0.10; python_version >= "3.7"
|
||||
entrypoints==0.4; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7")
|
||||
ephem==4.1.3; python_version >= "3.7" and python_version < "4"
|
||||
ecos==2.0.12; python_version >= "3.7"
|
||||
entrypoints==0.4; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7")
|
||||
ephem==4.1.4; python_version >= "3.7" and python_version < "4"
|
||||
et-xmlfile==1.1.0; python_version >= "3.6"
|
||||
exchange-calendars==4.2.3; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
executing==1.1.1; python_version >= "3.8"
|
||||
exchange-calendars==4.2.5; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
executing==1.2.0; python_version >= "3.8"
|
||||
fastjsonschema==2.16.2; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
feedparser==6.0.10; python_version >= "3.6"
|
||||
ffn==0.3.6; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
filelock==3.8.0; python_version >= "3.7"
|
||||
filelock==3.9.0; python_version >= "3.7"
|
||||
financedatabase==1.0.2
|
||||
finnhub-python==2.4.15
|
||||
finviz==1.4.4
|
||||
finnhub-python==2.4.16
|
||||
finviz==1.4.5; python_version >= "3.8" and python_version < "4.0"
|
||||
finvizfinance==0.14.4; python_version >= "3.5"
|
||||
flake8==3.9.2; python_full_version >= "3.7.0"
|
||||
flake8==5.0.4; python_full_version >= "3.7.0"
|
||||
fonttools==4.38.0; python_version >= "3.7"
|
||||
formulaic==0.3.4; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
fred==3.1
|
||||
fredapi==0.4.3
|
||||
frozendict==2.3.4; python_version >= "3.6"
|
||||
frozenlist==1.3.1; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
frozenlist==1.3.3; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
fsspec==2023.1.0; python_version >= "3.7"
|
||||
fundamentalanalysis==0.2.14
|
||||
future==0.18.3; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
gitdb==4.0.9; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
gitdb==4.0.10; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
gitpython==3.1.30; python_version >= "3.7"
|
||||
google-auth-oauthlib==0.4.6; python_version >= "3.7"
|
||||
google-auth==2.14.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
google-auth==2.16.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
graphviz==0.20.1; python_version >= "3.7"
|
||||
grpcio==1.51.1; python_version >= "3.7"
|
||||
h11==0.12.0; python_version >= "3.8" and python_version < "4.0"
|
||||
h11==0.14.0; python_version >= "3.8" and python_version < "4.0"
|
||||
hijri-converter==2.2.4; python_version >= "3.7"
|
||||
holidays==0.14.2; python_version >= "3.7"
|
||||
html5lib==1.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
|
||||
httpcore==0.15.0; python_version >= "3.8" and python_version < "4.0"
|
||||
httpx==0.23.0; python_version >= "3.8" and python_version < "4.0"
|
||||
identify==2.5.7; python_version >= "3.7"
|
||||
httpcore==0.16.3; python_version >= "3.8" and python_version < "4.0"
|
||||
httpx==0.23.3; python_version >= "3.8" and python_version < "4.0"
|
||||
identify==2.5.17; python_version >= "3.7"
|
||||
idna==3.4; python_version >= "3.8" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
|
||||
imagesize==1.4.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
|
||||
importlib-metadata==5.0.0; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.9" or python_full_version > "3.9.7" and python_version >= "3.7" and python_version < "3.9"
|
||||
importlib-metadata==6.0.0; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.9" or python_full_version > "3.9.7" and python_version >= "3.7" and python_version < "3.9"
|
||||
inflection==0.5.1; python_version >= "3.6"
|
||||
iniconfig==1.1.1; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
iniconfig==2.0.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
interface-meta==1.3.0; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.1" and python_full_version < "4.0.0"
|
||||
investiny==0.5.0; python_version >= "3.8" and python_version < "4.0"
|
||||
investpy==1.0.8; python_version >= "3.7"
|
||||
ipyflex==0.2.4; python_version >= "3.6"
|
||||
ipykernel==6.16.1; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
ipyflex==0.2.6; python_version >= "3.6"
|
||||
ipykernel==6.21.1; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
ipympl==0.8.4
|
||||
ipython-genutils==0.2.0; python_version >= "3.7"
|
||||
ipython==8.5.0; python_version >= "3.8"
|
||||
ipywidgets==8.0.2; python_version >= "3.7"
|
||||
ipywidgets==8.0.4; python_version >= "3.7"
|
||||
iso8601==0.1.16
|
||||
isodate==0.6.1; python_version >= "3.7"
|
||||
isort==5.10.1; python_full_version >= "3.7.2" and python_version < "4.0"
|
||||
isort==5.12.0; python_full_version >= "3.8.0"
|
||||
jedi==0.18.2; python_version >= "3.8"
|
||||
jinja2==3.1.2; python_version >= "3.7"
|
||||
joblib==1.2.0; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
|
||||
json5==0.9.10; python_version >= "3.7"
|
||||
json5==0.9.11; python_version >= "3.7"
|
||||
jsonschema==3.2.0
|
||||
jupyter-client==7.4.1; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
jupyter-core==4.11.2; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
jupyter-server==1.21.0; python_version >= "3.7"
|
||||
jupyter-client==7.4.1; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
jupyter-core==5.2.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
jupyter-server==1.23.5; python_version >= "3.7"
|
||||
jupyterlab-pygments==0.2.2; python_version >= "3.7"
|
||||
jupyterlab-server==2.16.1; python_version >= "3.7"
|
||||
jupyterlab-widgets==3.0.3; python_version >= "3.7"
|
||||
jupyterlab==3.5.0; python_version >= "3.7"
|
||||
jupyterlab-server==2.16.6; python_version >= "3.7"
|
||||
jupyterlab-widgets==3.0.5; python_version >= "3.7"
|
||||
jupyterlab==3.5.3; python_version >= "3.7"
|
||||
kiwisolver==1.4.4; python_version >= "3.7"
|
||||
korean-lunar-calendar==0.3.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
lazy-object-proxy==1.7.1; python_version >= "3.6" and python_full_version >= "3.7.2"
|
||||
lightgbm==3.3.3; python_version >= "3.7"
|
||||
lazy-object-proxy==1.9.0; python_version >= "3.7" and python_full_version >= "3.7.2"
|
||||
lightgbm==3.3.5; python_version >= "3.7"
|
||||
linearmodels==4.27; python_version >= "3.8"
|
||||
llvmlite==0.39.1; python_version >= "3.7"
|
||||
loguru==0.6.0; python_version >= "3.5" and python_full_version >= "3.7.0"
|
||||
lunarcalendar==0.0.9; python_version >= "3.7" and python_version < "4"
|
||||
lxml==4.9.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
lxml==4.9.2; python_version >= "3.8" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
|
||||
markdown-it-py==1.1.0; python_version >= "3.6" and python_version < "4.0"
|
||||
markdown==3.4.1; python_version >= "3.7"
|
||||
markupsafe==2.1.1; python_version >= "3.7"
|
||||
markupsafe==2.1.2; python_version >= "3.7"
|
||||
matplotlib-inline==0.1.6; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
matplotlib==3.5.3; python_version >= "3.7"
|
||||
mccabe==0.6.1; python_full_version >= "3.7.2"
|
||||
mccabe==0.7.0; python_version >= "3.6" and python_full_version >= "3.7.2"
|
||||
mdit-py-plugins==0.2.8; python_version >= "3.6" and python_version < "4.0"
|
||||
mistune==0.8.4; python_version >= "3.7"
|
||||
mistune==2.0.4; python_version >= "3.7"
|
||||
mock==4.0.3; python_version >= "3.6"
|
||||
more-itertools==9.0.0; python_version >= "3.7"
|
||||
mplfinance==0.12.9b1
|
||||
multidict==6.0.2; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
mplfinance==0.12.9b7
|
||||
mstarpy==0.0.4
|
||||
multidict==6.0.4; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
multitasking==0.0.11
|
||||
mypy-extensions==0.4.3; python_version >= "3.8"
|
||||
mypy==0.930; python_version >= "3.6"
|
||||
myst-parser==0.15.2; python_version >= "3.6"
|
||||
nbclassic==0.4.5; python_version >= "3.7"
|
||||
nbclient==0.5.13; python_full_version >= "3.7.0" and python_version >= "3.7" and python_full_version < "4.0.0"
|
||||
nbconvert==6.5.4; python_version >= "3.7"
|
||||
nbformat==5.7.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
nbmake==1.3.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0"
|
||||
nest-asyncio==1.5.6; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
networkx==2.8.7; python_version >= "3.8"
|
||||
nbclassic==0.5.1; python_version >= "3.7"
|
||||
nbclient==0.6.8; python_full_version >= "3.7.0" and python_version >= "3.7" and python_full_version < "4.0.0"
|
||||
nbconvert==7.2.9; python_version >= "3.7"
|
||||
nbformat==5.7.3; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
nbmake==1.3.5; python_full_version >= "3.7.0" and python_full_version < "4.0.0"
|
||||
nest-asyncio==1.5.6; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
networkx==3.0; python_version >= "3.8"
|
||||
nfoursid==1.0.1; python_version >= "3.7"
|
||||
nodeenv==1.7.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
notebook-shim==0.2.0; python_version >= "3.7"
|
||||
notebook==6.5.1; python_version >= "3.7"
|
||||
notebook-shim==0.2.2; python_version >= "3.7"
|
||||
notebook==6.5.2; python_version >= "3.7"
|
||||
numba==0.56.4; python_version >= "3.7"
|
||||
numpy==1.23.4; python_version >= "3.8"
|
||||
oandapyv20==0.6.3
|
||||
oauthlib==3.2.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
|
||||
onetimepass==1.0.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
|
||||
openpyxl==3.0.10; python_version >= "3.6"
|
||||
osqp==0.6.2.post5; python_version >= "3.7"
|
||||
packaging==22.0; python_version >= "3.7"
|
||||
openpyxl==3.1.0; python_version >= "3.6"
|
||||
osqp==0.6.2.post8; python_version >= "3.7"
|
||||
packaging==23.0; python_version >= "3.7"
|
||||
pandas-datareader==0.10.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
|
||||
pandas-market-calendars==3.2; python_full_version >= "3.7.0"
|
||||
pandas-ta==0.3.14b
|
||||
pandas==1.5.1; python_version >= "3.8"
|
||||
pandas==1.5.3; python_version >= "3.8"
|
||||
pandocfilters==1.5.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
|
||||
papermill @ git+https://github.com/nteract/papermill.git@main ; python_version >= "3.7"
|
||||
papermill==2.4.0; python_version >= "3.7"
|
||||
parso==0.8.3; python_version >= "3.8"
|
||||
pathspec==0.11.0; python_version >= "3.7"
|
||||
patsy==0.5.3; python_version >= "3.8"
|
||||
pbr==5.11.0; python_version >= "3.8"
|
||||
pbr==5.11.1; python_version >= "3.8"
|
||||
pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.8"
|
||||
pickleshare==0.7.5; python_version >= "3.8"
|
||||
pillow==9.4.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
platformdirs==2.5.2; python_version >= "3.7" and python_full_version >= "3.7.2"
|
||||
plotly==5.10.0; python_version >= "3.6"
|
||||
platformdirs==2.6.2; python_version >= "3.8" and python_full_version >= "3.7.2"
|
||||
plotly==5.13.0; python_version >= "3.6"
|
||||
pluggy==1.0.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
pmdarima==2.0.1; python_version >= "3.7"
|
||||
praw==7.6.0; python_version >= "3.7" and python_version < "4.0"
|
||||
pmdarima==2.0.2; python_version >= "3.7"
|
||||
praw==7.6.1; python_version >= "3.7" and python_version < "4.0"
|
||||
prawcore==2.3.0; python_version >= "3.7" and python_version < "4.0"
|
||||
pre-commit==2.20.0; python_version >= "3.7"
|
||||
prometheus-client==0.15.0; python_version >= "3.7"
|
||||
prompt-toolkit==3.0.31; python_full_version >= "3.6.2"
|
||||
pre-commit==2.21.0; python_version >= "3.7"
|
||||
prometheus-client==0.16.0; python_version >= "3.7"
|
||||
prompt-toolkit==3.0.36; python_full_version >= "3.6.2"
|
||||
property-cached==1.6.4; python_version >= "3.8"
|
||||
prophet==1.1.1; python_version >= "3.7"
|
||||
prophet==1.1.2; python_version >= "3.7"
|
||||
protobuf==3.20.1; python_version >= "3.7"
|
||||
psaw==0.0.12; python_version >= "3"
|
||||
psutil==5.9.3; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
psutil==5.9.4; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
ptyprocess==0.7.0; sys_platform != "win32" and python_version >= "3.8" and os_name != "nt"
|
||||
pure-eval==0.2.2; python_version >= "3.8"
|
||||
py==1.11.0; python_full_version >= "3.7.0" and python_version >= "3.7" and python_full_version < "4.0.0" and implementation_name == "pypy"
|
||||
py==1.11.0; python_full_version >= "3.7.0" and python_version >= "3.7" and python_full_version < "4.0.0"
|
||||
pyally==1.1.2
|
||||
pyarrow==9.0.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
pyarrow==11.0.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
pyasn1-modules==0.2.8; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
pyasn1==0.4.8; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") or python_full_version >= "3.6.0" and python_version >= "3.7" and python_version < "4" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7")
|
||||
pycares==4.2.2; python_version >= "3.5.2" and python_full_version >= "3.7.0"
|
||||
pycodestyle==2.7.0; python_full_version >= "3.7.0"
|
||||
pycares==4.3.0; python_version >= "3.5.2" and python_full_version >= "3.7.0"
|
||||
pycodestyle==2.9.1; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
pycoingecko==2.3.0
|
||||
pycparser==2.21; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
|
||||
pydantic==1.10.4; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
pydeck==0.8.0b4; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
pydeck==0.8.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
pydeprecate==0.3.2; python_version >= "3.7"
|
||||
pyerfa==2.0.0.1; python_version >= "3.8"
|
||||
pyex==0.5.0
|
||||
pyflakes==2.3.1; python_full_version >= "3.7.0"
|
||||
pygments==2.13.0; python_version >= "3.6"
|
||||
pyhdfe==0.1.0; python_version >= "3.8"
|
||||
pyflakes==2.5.0; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
pygments==2.14.0; python_version >= "3.6"
|
||||
pyhdfe==0.1.2; python_version >= "3.8"
|
||||
pylint==2.15.2; python_full_version >= "3.7.2"
|
||||
pyluach==2.0.2; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
pymeeus==0.5.11; python_version >= "3.7" and python_version < "4"
|
||||
pymeeus==0.5.12; python_version >= "3.7" and python_version < "4"
|
||||
pympler==1.0.1; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.6"
|
||||
pyobjc-core==8.5.1; python_version >= "3.6" and sys_platform == "darwin"
|
||||
pyobjc-framework-cocoa==8.5.1; python_version >= "3.6" and sys_platform == "darwin"
|
||||
pyobjc-core==9.0.1; python_version >= "3.7" and sys_platform == "darwin"
|
||||
pyobjc-framework-cocoa==9.0.1; python_version >= "3.7" and sys_platform == "darwin"
|
||||
pyod==1.0.7; python_version >= "3.7"
|
||||
pyotp==2.7.0; python_version >= "3.6"
|
||||
pyotp==2.8.0; python_version >= "3.7"
|
||||
pyparsing==3.0.9; python_full_version >= "3.6.8" and python_version >= "3.7"
|
||||
pyprind==2.11.3; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
pyrsistent==0.18.1; python_version >= "3.7"
|
||||
@@ -235,28 +238,28 @@ pytest-cov==3.0.0; python_version >= "3.6"
|
||||
pytest-mock==3.10.0; python_version >= "3.7"
|
||||
pytest-recording==0.12.1; python_version >= "3.5"
|
||||
pytest==6.2.5; python_version >= "3.6"
|
||||
pythclient==0.1.2; python_full_version >= "3.7.0"
|
||||
pythclient==0.1.4; python_full_version >= "3.7.0"
|
||||
python-binance==1.0.16
|
||||
python-coinmarketcap==0.2
|
||||
python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.8" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7") and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5") and python_version < "4.0" and (python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.7" and python_version < "4" and python_full_version >= "3.3.0")
|
||||
python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.8" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7") and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and python_version < "4.0" and (python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.7" and python_version < "4" and python_full_version >= "3.3.0")
|
||||
python-dotenv==0.19.2; python_version >= "3.5"
|
||||
python-i18n==0.3.9
|
||||
pytorch-lightning==1.6.5; python_version >= "3.7"
|
||||
pytrends==4.8.0
|
||||
pytz-deprecation-shim==0.1.0.post0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.6"
|
||||
pytz==2022.5; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8" and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and python_version < "4.0"
|
||||
pytrends==4.9.0; python_version >= "3.7"
|
||||
pytz-deprecation-shim==0.1.0.post0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
pytz==2022.7.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8" and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and python_version < "4.0"
|
||||
pyupgrade==2.38.4; python_version >= "3.7"
|
||||
pywin32==305; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.7"
|
||||
pywinpty==2.0.8; os_name == "nt" and python_version >= "3.7"
|
||||
pywin32==305; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.8"
|
||||
pywinpty==2.0.10; os_name == "nt" and python_version >= "3.7"
|
||||
pyyaml==6.0; python_version >= "3.8"
|
||||
pyzmq==24.0.1; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
qdldl==0.1.5.post2; python_version >= "3.7"
|
||||
pyzmq==25.0.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
qdldl==0.1.5.post3; python_version >= "3.7"
|
||||
quandl==3.7.0; python_version >= "3.6"
|
||||
rapidfuzz==1.9.1; python_version >= "2.7"
|
||||
rdflib==6.2.0; python_version >= "3.7"
|
||||
regex==2022.3.2; python_version >= "3.6"
|
||||
regex==2022.10.31; python_version >= "3.7"
|
||||
requests-oauthlib==1.3.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
|
||||
requests==2.28.1; python_version >= "3.7" and python_version < "4"
|
||||
requests==2.28.2; python_version >= "3.7" and python_version < "4"
|
||||
rfc3986==1.5.0; python_version >= "3.8" and python_version < "4.0"
|
||||
rich==12.6.0; python_full_version >= "3.6.3" and python_full_version < "4.0.0"
|
||||
riskfolio-lib==3.3.0; python_version >= "3.7"
|
||||
@@ -265,49 +268,49 @@ rsa==4.9; python_version >= "3.6" and python_version < "4" and (python_version >
|
||||
ruamel.yaml.clib==0.2.7; platform_python_implementation == "CPython" and python_version < "3.11" and python_version >= "3.5"
|
||||
ruamel.yaml==0.17.21; python_version >= "3"
|
||||
ruff==0.0.236; python_version >= "3.7"
|
||||
scikit-learn==1.1.2; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
|
||||
scikit-learn==1.2.1; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
|
||||
scipy==1.10.0; python_version >= "3.8" and python_version < "3.12"
|
||||
screeninfo==0.6.7
|
||||
scs==3.2.0; python_version >= "3.7"
|
||||
scs==3.2.2; python_version >= "3.7"
|
||||
seaborn==0.11.2; python_version >= "3.6"
|
||||
semver==2.13.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.4.0" or python_full_version > "3.9.7"
|
||||
send2trash==1.8.0; python_version >= "3.7"
|
||||
sentiment-investor==2.1.0; python_version >= "3.8" and python_version < "4.0"
|
||||
setuptools-git==1.2; python_version >= "3.7"
|
||||
setuptools-scm==6.4.2; python_version >= "3.8"
|
||||
sgmllib3k==1.0.0; python_version >= "3.6"
|
||||
shap==0.41.0; python_version >= "3.7"
|
||||
six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.8" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7") and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0") and (python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7")
|
||||
six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.8" and python_version < "4.0" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7") and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0") and (python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7")
|
||||
slicer==0.0.7; python_version >= "3.7"
|
||||
smmap==5.0.0; python_version >= "3.7"
|
||||
sniffio==1.3.0; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.2"
|
||||
snowballstemmer==2.2.0; python_version >= "3.6"
|
||||
socketio-client-nexus==0.7.6
|
||||
soupsieve==2.3.2.post1; python_version >= "3.6" and python_full_version >= "3.6.0"
|
||||
soupsieve==2.3.2.post1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
|
||||
sparqlwrapper==2.0.0; python_version >= "3.7"
|
||||
sphinx==4.5.0; python_version >= "3.6"
|
||||
sphinxcontrib-applehelp==1.0.2; python_version >= "3.6"
|
||||
sphinxcontrib-applehelp==1.0.4; python_version >= "3.8"
|
||||
sphinxcontrib-devhelp==1.0.2; python_version >= "3.6"
|
||||
sphinxcontrib-htmlhelp==2.0.0; python_version >= "3.6"
|
||||
sphinxcontrib-htmlhelp==2.0.1; python_version >= "3.8"
|
||||
sphinxcontrib-jsmath==1.0.1; python_version >= "3.6"
|
||||
sphinxcontrib-qthelp==1.0.3; python_version >= "3.6"
|
||||
sphinxcontrib-serializinghtml==1.1.5; python_version >= "3.6"
|
||||
squarify==0.4.3
|
||||
sseclient==0.0.27
|
||||
stack-data==0.5.1; python_version >= "3.8"
|
||||
statsforecast==1.3.1; python_version >= "3.7"
|
||||
stack-data==0.6.2; python_version >= "3.8"
|
||||
statsforecast==1.4.0; python_version >= "3.7"
|
||||
statsmodels==0.13.2; python_version >= "3.7"
|
||||
stevedore==4.1.0; python_version >= "3.8"
|
||||
stevedore==4.1.1; python_version >= "3.8"
|
||||
stocksera==0.1.21; python_version >= "3.6"
|
||||
streamlit==1.13.0; (python_version >= "3.7" and python_full_version < "3.9.7") or (python_full_version > "3.9.7")
|
||||
streamlit==1.17.0; (python_version >= "3.7" and python_full_version < "3.9.7") or (python_full_version > "3.9.7")
|
||||
tabulate==0.9.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
tbats==1.1.1; python_version >= "3.7"
|
||||
tbats==1.1.2; python_version >= "3.7"
|
||||
temporal-cache==0.1.4
|
||||
tenacity==8.1.0; python_version >= "3.7"
|
||||
tenacity==7.0.0; python_version >= "3.8" and python_version < "4.0"
|
||||
tensorboard-data-server==0.6.1; python_version >= "3.7"
|
||||
tensorboard-plugin-wit==1.8.1; python_version >= "3.7"
|
||||
tensorboard==2.11.0; python_version >= "3.7"
|
||||
terminado==0.16.0; python_version >= "3.7"
|
||||
tensorboard==2.11.2; python_version >= "3.7"
|
||||
terminado==0.17.1; python_version >= "3.7"
|
||||
textwrap3==0.9.2; python_version >= "3.7"
|
||||
thepassiveinvestor==1.1.2
|
||||
threadpoolctl==3.1.0; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
|
||||
tinycss2==1.2.1; python_version >= "3.7"
|
||||
@@ -315,49 +318,49 @@ tokenize-rt==4.2.1; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
tokenterminal==1.0.1
|
||||
toml==0.10.2; python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0"
|
||||
tomli==2.0.1; python_version < "3.11" and python_full_version >= "3.7.2" and python_version >= "3.8" and python_full_version <= "3.11.0a6"
|
||||
tomlkit==0.11.5; python_version >= "3.6" and python_version < "4.0" and python_full_version >= "3.7.2"
|
||||
tomlkit==0.11.6; python_version >= "3.6" and python_full_version >= "3.7.2"
|
||||
toolz==0.12.0; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7")
|
||||
torch==1.11.0; python_full_version >= "3.7.0"
|
||||
torchmetrics==0.10.3; python_version >= "3.7"
|
||||
tornado==6.2; python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0"
|
||||
tqdm==4.64.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
|
||||
torchmetrics==0.11.1; python_version >= "3.7"
|
||||
tornado==6.2; python_version >= "3.8" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.8" and python_full_version < "4.0.0"
|
||||
tqdm==4.64.1; python_version >= "3.8" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.4.0"
|
||||
tradingview-ta==3.3.0; python_version >= "3.6"
|
||||
traitlets==5.5.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
types-python-dateutil==2.8.19.2
|
||||
traitlets==5.9.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
types-python-dateutil==2.8.19.6
|
||||
types-pytz==2021.3.8
|
||||
types-pyyaml==6.0.12
|
||||
types-requests==2.28.11.2
|
||||
types-pyyaml==6.0.12.4
|
||||
types-requests==2.28.11.8
|
||||
types-setuptools==57.4.18
|
||||
types-six==1.16.21
|
||||
types-urllib3==1.26.25.1
|
||||
types-six==1.16.21.4
|
||||
types-urllib3==1.26.25.4
|
||||
typing-extensions==4.4.0; python_full_version >= "3.7.2" and python_full_version < "4.0.0" and python_version < "3.9" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
|
||||
tzdata==2022.5; python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_version >= "3.7" and python_full_version < "3.9.7" and platform_system == "Windows" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.6" and platform_system == "Windows"
|
||||
tzlocal==4.2; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.6"
|
||||
tzdata==2022.7; python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_version >= "3.7" and python_full_version < "3.9.7" and platform_system == "Windows" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.7" and platform_system == "Windows"
|
||||
tzlocal==4.2; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
u8darts==0.23.0; python_version >= "3.7"
|
||||
ujson==5.5.0; python_version >= "3.7"
|
||||
ujson==5.7.0; python_version >= "3.7"
|
||||
unidecode==1.3.6; python_version >= "3.7"
|
||||
update-checker==0.18.0; python_version >= "3.7" and python_version < "4.0"
|
||||
urllib3==1.26.12; python_full_version >= "3.7.1" and python_version < "4" and python_version >= "3.8" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7")
|
||||
user-agent==0.1.10
|
||||
urllib3==1.26.14; python_version >= "3.8" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7")
|
||||
user-agent==0.1.10; python_version >= "3.8" and python_version < "4.0"
|
||||
vadersentiment==3.3.2
|
||||
validators==0.20.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.4"
|
||||
valinvest==0.0.2; python_version >= "3.6"
|
||||
vcrpy==4.2.1; python_version >= "3.7"
|
||||
virtualenv==20.16.5; python_version >= "3.7"
|
||||
virtualenv==20.17.1; python_version >= "3.7"
|
||||
voila==0.4.0; python_version >= "3.7"
|
||||
watchdog==2.1.9; python_version >= "3.6"
|
||||
wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.8"
|
||||
watchdog==2.2.1; python_version >= "3.6"
|
||||
wcwidth==0.2.6; python_full_version >= "3.6.2" and python_version >= "3.8"
|
||||
webencodings==0.5.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
|
||||
websocket-client==1.4.1; python_version >= "3.8" and python_version < "4.0"
|
||||
websockets==10.3; python_version >= "3.7"
|
||||
websocket-client==1.5.0; python_version >= "3.8" and python_version < "4.0"
|
||||
websockets==10.4; python_version >= "3.7"
|
||||
werkzeug==2.2.2; python_version >= "3.7"
|
||||
widgetsnbextension==4.0.3; python_version >= "3.7"
|
||||
widgetsnbextension==4.0.5; python_version >= "3.7"
|
||||
win32-setctime==1.1.0; python_version >= "3.5" and python_full_version >= "3.7.0" and sys_platform == "win32"
|
||||
wrapt==1.14.1; python_full_version >= "3.7.2" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7") and python_version >= "3.8" and python_version < "3.11"
|
||||
xarray==2022.11.0; python_version >= "3.8"
|
||||
xgboost==1.7.2; python_version >= "3.8"
|
||||
xlsxwriter==3.0.3; python_version >= "3.7"
|
||||
yarl==1.8.1; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
xarray==2023.1.0; python_version >= "3.8"
|
||||
xgboost==1.7.3; python_version >= "3.8"
|
||||
xlsxwriter==3.0.8; python_version >= "3.7"
|
||||
yarl==1.8.2; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
yfinance==0.2.9
|
||||
zipp==3.10.0; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.10" or python_full_version > "3.9.7" and python_version >= "3.7" and python_version < "3.10"
|
||||
zope.interface==5.5.0; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5"
|
||||
zipp==3.12.0; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.10" or python_full_version > "3.9.7" and python_version >= "3.7" and python_version < "3.10"
|
||||
zope.interface==5.5.2; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5"
|
||||
|
||||
306
requirements.txt
vendored
306
requirements.txt
vendored
@@ -1,269 +1,319 @@
|
||||
aiodns==3.0.0; python_version >= "3.5.2" and python_full_version >= "3.7.0"
|
||||
aiohttp==3.8.3; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
aiosignal==1.2.0; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
aiohttp==3.8.3; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
aiosignal==1.3.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
alabaster==0.7.13; python_version >= "3.6"
|
||||
alpha-vantage==2.3.1
|
||||
altair==4.2.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
altair==4.2.2; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
ansiwrap==0.8.4; python_version >= "3.7"
|
||||
anyio==3.6.2; python_full_version >= "3.6.2" and python_version >= "3.8" and python_version < "4.0"
|
||||
appdirs==1.4.4
|
||||
appnope==0.1.3; sys_platform == "darwin" and python_version >= "3.8" and platform_system == "Darwin"
|
||||
arch==5.3.1; python_version >= "3.7"
|
||||
appnope==0.1.3; sys_platform == "darwin" and python_version >= "3.8" and platform_system == "Darwin" and python_full_version >= "3.7.0" and python_full_version < "4.0.0"
|
||||
argon2-cffi-bindings==21.2.0; python_version >= "3.7"
|
||||
argon2-cffi==21.3.0; python_version >= "3.7"
|
||||
ascii-magic==1.6; python_version >= "3.5"
|
||||
astor==0.8.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
astropy==5.1.1; python_version >= "3.8"
|
||||
asttokens==2.0.8; python_version >= "3.8"
|
||||
async-timeout==4.0.2; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
attrs==21.4.0; python_version >= "3.6" and python_full_version >= "3.7.0" and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7")
|
||||
babel==2.10.3; python_version >= "3.7"
|
||||
astroid==2.13.5; python_full_version >= "3.7.2"
|
||||
asttokens==2.2.1; python_version >= "3.8"
|
||||
async-timeout==4.0.2; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
atomicwrites==1.4.1; sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.7.0" and python_full_version < "4.0.0"
|
||||
attrs==21.4.0; python_full_version >= "3.7.0" and python_version >= "3.8" and python_version < "4.0" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.6" and python_version < "4.0" and python_full_version >= "3.5.0") and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0")
|
||||
babel==2.11.0; python_version >= "3.7"
|
||||
backcall==0.2.0; python_version >= "3.8"
|
||||
backoff==2.2.1; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
backports.zoneinfo==0.2.1; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.9" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.6") or python_full_version > "3.9.7" and python_version >= "3.6" and python_version < "3.9" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.6")
|
||||
backports.zoneinfo==0.2.1; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.9" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.7") or python_full_version > "3.9.7" and python_version >= "3.7" and python_version < "3.9" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.7")
|
||||
bandit==1.7.4; python_version >= "3.7"
|
||||
base58==2.1.1; python_version >= "3.5" and python_full_version >= "3.7.0"
|
||||
beartype==0.7.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
|
||||
beautifulsoup4==4.11.1; python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
bleach==5.0.1; python_version >= "3.7"
|
||||
beautifulsoup4==4.11.2; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
|
||||
black==23.1.0; python_version >= "3.7"
|
||||
bleach==6.0.0; python_version >= "3.7"
|
||||
blinker==1.5; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.5.0" or python_full_version > "3.9.7"
|
||||
bs4==0.0.1
|
||||
bt==0.2.9; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0")
|
||||
cachetools==5.2.0; python_version >= "3.7" and python_version < "4.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
|
||||
ccxt==2.5.80
|
||||
cachetools==5.3.0; python_version >= "3.7" and python_version < "4.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
|
||||
ccxt==2.7.36
|
||||
certifi==2022.12.7; python_version >= "3.8" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
|
||||
cffi==1.15.1; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
cffi==1.15.1; implementation_name == "pypy" and python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0"
|
||||
cfgv==3.3.1; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
charset-normalizer==2.1.1; python_full_version >= "3.6.0"
|
||||
click==8.1.3; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
colorama==0.4.6; python_full_version >= "3.7.0" and python_version >= "3.8" and sys_platform == "win32" and platform_system == "Windows" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7")
|
||||
codespell==2.2.2; python_version >= "3.7"
|
||||
colorama==0.4.6; python_full_version >= "3.7.2" and python_version >= "3.8" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.7.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.7" and python_full_version >= "3.7.0") and (python_version >= "3.8" and python_full_version < "3.0.0" and python_version < "4.0" and platform_system == "Windows" or python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0" and platform_system == "Windows") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") or platform_system == "Windows" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") and python_full_version >= "3.7.0") and (python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.8" and python_full_version >= "3.7.0") and python_full_version < "4.0.0"
|
||||
comm==0.1.2; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
commonmark==0.9.1; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
|
||||
convertdate==2.4.0; python_version >= "3.7" and python_version < "4"
|
||||
coverage==7.1.0; python_version >= "3.7"
|
||||
cryptography==39.0.0; python_version >= "3.6"
|
||||
cssselect==1.1.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
|
||||
cvxpy==1.2.1; python_version >= "3.7"
|
||||
cssselect==1.2.0; python_version >= "3.8" and python_version < "4.0"
|
||||
cycler==0.11.0; python_version >= "3.7"
|
||||
cython==0.29.32; python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "darwin" or python_full_version >= "3.3.0" and sys_platform == "darwin" and python_version >= "3.8"
|
||||
dateparser==1.1.2; python_version >= "3.5"
|
||||
datetime==4.7; python_version >= "3.5"
|
||||
debugpy==1.6.3; python_version >= "3.7"
|
||||
cython==0.29.33; python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "darwin" or python_full_version >= "3.3.0" and sys_platform == "darwin" and python_version >= "3.8"
|
||||
dateparser==1.1.7; python_version >= "3.7"
|
||||
datetime==5.0; python_version >= "3.5"
|
||||
debugpy==1.6.6; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
decorator==5.1.1; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8"
|
||||
defusedxml==0.7.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
|
||||
degiro-connector==2.0.21; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
|
||||
deprecation==2.1.0
|
||||
detecta==0.0.5; python_version >= "3.6"
|
||||
dnspython==2.2.1; python_version >= "3.6" and python_version < "4.0"
|
||||
ecos==2.0.10; python_version >= "3.7"
|
||||
entrypoints==0.4; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
dill==0.3.6; python_version >= "3.7" and python_full_version >= "3.7.2"
|
||||
distlib==0.3.6; python_version >= "3.7"
|
||||
dnspython==2.3.0; python_version >= "3.7" and python_version < "4.0"
|
||||
docutils==0.17.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
|
||||
entrypoints==0.4; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7")
|
||||
et-xmlfile==1.1.0; python_version >= "3.6"
|
||||
exchange-calendars==4.2.3; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
executing==1.1.1; python_version >= "3.8"
|
||||
fastjsonschema==2.16.2; python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
exchange-calendars==4.2.5; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
executing==1.2.0; python_version >= "3.8"
|
||||
fastjsonschema==2.16.2; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
feedparser==6.0.10; python_version >= "3.6"
|
||||
ffn==0.3.6; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
filelock==3.9.0; python_version >= "3.7"
|
||||
financedatabase==1.0.2
|
||||
finnhub-python==2.4.15
|
||||
finviz==1.4.4
|
||||
finnhub-python==2.4.16
|
||||
finviz==1.4.5; python_version >= "3.8" and python_version < "4.0"
|
||||
finvizfinance==0.14.4; python_version >= "3.5"
|
||||
flake8==3.9.2; python_full_version >= "3.7.0"
|
||||
flake8==5.0.4; python_full_version >= "3.7.0"
|
||||
fonttools==4.38.0; python_version >= "3.7"
|
||||
formulaic==0.3.4; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
fred==3.1
|
||||
fredapi==0.4.3
|
||||
frozendict==2.3.4; python_version >= "3.6"
|
||||
frozenlist==1.3.1; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
frozenlist==1.3.3; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
fundamentalanalysis==0.2.14
|
||||
future==0.18.3; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
gitdb==4.0.9; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
gitdb==4.0.10; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
gitpython==3.1.30; python_version >= "3.7"
|
||||
grpcio==1.51.1; python_version >= "3.7"
|
||||
h11==0.12.0; python_version >= "3.8" and python_version < "4.0"
|
||||
h11==0.14.0; python_version >= "3.8" and python_version < "4.0"
|
||||
hijri-converter==2.2.4; python_version >= "3.7"
|
||||
holidays==0.14.2; python_version >= "3.7"
|
||||
html5lib==1.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
|
||||
httpcore==0.15.0; python_version >= "3.8" and python_version < "4.0"
|
||||
httpx==0.23.0; python_version >= "3.8" and python_version < "4.0"
|
||||
httpcore==0.16.3; python_version >= "3.8" and python_version < "4.0"
|
||||
httpx==0.23.3; python_version >= "3.8" and python_version < "4.0"
|
||||
identify==2.5.17; python_version >= "3.7"
|
||||
idna==3.4; python_version >= "3.8" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
|
||||
importlib-metadata==5.0.0; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.10" or python_full_version > "3.9.7" and python_version >= "3.7" and python_version < "3.10"
|
||||
imagesize==1.4.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
|
||||
importlib-metadata==6.0.0; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.10" or python_full_version > "3.9.7" and python_version >= "3.7" and python_version < "3.10"
|
||||
inflection==0.5.1; python_version >= "3.6"
|
||||
iniconfig==2.0.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
interface-meta==1.3.0; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.1" and python_full_version < "4.0.0"
|
||||
investiny==0.5.0; python_version >= "3.8" and python_version < "4.0"
|
||||
investpy==1.0.8; python_version >= "3.7"
|
||||
ipyflex==0.2.4; python_version >= "3.6"
|
||||
ipykernel==6.16.1; python_version >= "3.7"
|
||||
ipyflex==0.2.6; python_version >= "3.6"
|
||||
ipykernel==6.21.1; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
ipympl==0.8.4
|
||||
ipython-genutils==0.2.0; python_version >= "3.7"
|
||||
ipython==8.5.0; python_version >= "3.8"
|
||||
ipywidgets==8.0.2; python_version >= "3.7"
|
||||
ipywidgets==8.0.4; python_version >= "3.7"
|
||||
iso8601==0.1.16
|
||||
isodate==0.6.1; python_version >= "3.7"
|
||||
isort==5.12.0; python_full_version >= "3.8.0"
|
||||
jedi==0.18.2; python_version >= "3.8"
|
||||
jinja2==3.1.2; python_version >= "3.7"
|
||||
joblib==1.2.0; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
|
||||
json5==0.9.10; python_version >= "3.7"
|
||||
json5==0.9.11; python_version >= "3.7"
|
||||
jsonschema==3.2.0
|
||||
jupyter-client==7.4.1; python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
jupyter-core==4.11.2; python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
jupyter-server==1.21.0; python_version >= "3.7"
|
||||
jupyter-client==7.4.1; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
jupyter-core==5.2.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
jupyter-server==1.23.5; python_version >= "3.7"
|
||||
jupyterlab-pygments==0.2.2; python_version >= "3.7"
|
||||
jupyterlab-server==2.16.1; python_version >= "3.7"
|
||||
jupyterlab-widgets==3.0.3; python_version >= "3.7"
|
||||
jupyterlab==3.5.0; python_version >= "3.7"
|
||||
jupyterlab-server==2.16.6; python_version >= "3.7"
|
||||
jupyterlab-widgets==3.0.5; python_version >= "3.7"
|
||||
jupyterlab==3.5.3; python_version >= "3.7"
|
||||
kiwisolver==1.4.4; python_version >= "3.7"
|
||||
korean-lunar-calendar==0.3.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
lazy-object-proxy==1.9.0; python_version >= "3.7" and python_full_version >= "3.7.2"
|
||||
linearmodels==4.27; python_version >= "3.8"
|
||||
loguru==0.6.0; python_version >= "3.5" and python_full_version >= "3.7.0"
|
||||
lxml==4.9.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
markupsafe==2.1.1; python_version >= "3.7"
|
||||
matplotlib-inline==0.1.6; python_version >= "3.8"
|
||||
lxml==4.9.2; python_version >= "3.8" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
|
||||
markdown-it-py==1.1.0; python_version >= "3.6" and python_version < "4.0"
|
||||
markupsafe==2.1.2; python_version >= "3.7"
|
||||
matplotlib-inline==0.1.6; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
matplotlib==3.5.3; python_version >= "3.7"
|
||||
mccabe==0.6.1; python_full_version >= "3.7.0"
|
||||
mistune==0.8.4; python_version >= "3.7"
|
||||
mccabe==0.7.0; python_version >= "3.6" and python_full_version >= "3.7.2"
|
||||
mdit-py-plugins==0.2.8; python_version >= "3.6" and python_version < "4.0"
|
||||
mistune==2.0.4; python_version >= "3.7"
|
||||
mock==4.0.3; python_version >= "3.6"
|
||||
more-itertools==9.0.0; python_version >= "3.7"
|
||||
mplfinance==0.12.9b1
|
||||
multidict==6.0.2; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
mplfinance==0.12.9b7
|
||||
mstarpy==0.0.4
|
||||
multidict==6.0.4; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
multitasking==0.0.11
|
||||
mypy-extensions==0.4.3; python_version >= "3.8"
|
||||
nbclassic==0.4.5; python_version >= "3.7"
|
||||
nbclient==0.5.13; python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
nbconvert==6.5.4; python_version >= "3.7"
|
||||
nbformat==5.7.0; python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
nest-asyncio==1.5.6; python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
networkx==2.8.7; python_version >= "3.8"
|
||||
notebook-shim==0.2.0; python_version >= "3.7"
|
||||
notebook==6.5.1; python_version >= "3.7"
|
||||
mypy==0.930; python_version >= "3.6"
|
||||
myst-parser==0.15.2; python_version >= "3.6"
|
||||
nbclassic==0.5.1; python_version >= "3.7"
|
||||
nbclient==0.6.8; python_full_version >= "3.7.0" and python_version >= "3.7" and python_full_version < "4.0.0"
|
||||
nbconvert==7.2.9; python_version >= "3.7"
|
||||
nbformat==5.7.3; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
nbmake==1.3.5; python_full_version >= "3.7.0" and python_full_version < "4.0.0"
|
||||
nest-asyncio==1.5.6; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
nodeenv==1.7.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.7.0" and python_version >= "3.7"
|
||||
notebook-shim==0.2.2; python_version >= "3.7"
|
||||
notebook==6.5.2; python_version >= "3.7"
|
||||
numpy==1.23.4; python_version >= "3.8"
|
||||
oandapyv20==0.6.3
|
||||
oauthlib==3.2.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
|
||||
onetimepass==1.0.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
|
||||
openpyxl==3.0.10; python_version >= "3.6"
|
||||
osqp==0.6.2.post5; python_version >= "3.7"
|
||||
packaging==22.0; python_version >= "3.7"
|
||||
openpyxl==3.1.0; python_version >= "3.6"
|
||||
packaging==23.0; python_version >= "3.7"
|
||||
pandas-datareader==0.10.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
|
||||
pandas-market-calendars==3.2; python_full_version >= "3.7.0"
|
||||
pandas-ta==0.3.14b
|
||||
pandas==1.5.1; python_version >= "3.8"
|
||||
pandas==1.5.3; python_version >= "3.8"
|
||||
pandocfilters==1.5.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
|
||||
papermill @ git+https://github.com/nteract/papermill.git@main ; python_version >= "3.7"
|
||||
papermill==2.4.0; python_version >= "3.7"
|
||||
parso==0.8.3; python_version >= "3.8"
|
||||
pathspec==0.11.0; python_version >= "3.7"
|
||||
patsy==0.5.3; python_version >= "3.8"
|
||||
pbr==5.11.1; python_version >= "3.8"
|
||||
pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.8"
|
||||
pickleshare==0.7.5; python_version >= "3.8"
|
||||
pillow==9.4.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
plotly==5.10.0; python_version >= "3.6"
|
||||
praw==7.6.0; python_version >= "3.7" and python_version < "4.0"
|
||||
platformdirs==2.6.2; python_version >= "3.8" and python_full_version >= "3.7.2"
|
||||
plotly==5.13.0; python_version >= "3.6"
|
||||
pluggy==1.0.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
praw==7.6.1; python_version >= "3.7" and python_version < "4.0"
|
||||
prawcore==2.3.0; python_version >= "3.7" and python_version < "4.0"
|
||||
prometheus-client==0.15.0; python_version >= "3.7"
|
||||
prompt-toolkit==3.0.31; python_full_version >= "3.6.2"
|
||||
pre-commit==2.21.0; python_version >= "3.7"
|
||||
prometheus-client==0.16.0; python_version >= "3.7"
|
||||
prompt-toolkit==3.0.36; python_full_version >= "3.6.2"
|
||||
property-cached==1.6.4; python_version >= "3.8"
|
||||
protobuf==3.20.1; python_version >= "3.7"
|
||||
psaw==0.0.12; python_version >= "3"
|
||||
psutil==5.9.3; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
|
||||
psutil==5.9.4; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
ptyprocess==0.7.0; sys_platform != "win32" and python_version >= "3.8" and os_name != "nt"
|
||||
pure-eval==0.2.2; python_version >= "3.8"
|
||||
py==1.11.0; python_version >= "3.7" and python_full_version < "3.0.0" and implementation_name == "pypy" or implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.5.0"
|
||||
py==1.11.0; python_full_version >= "3.7.0" and python_version >= "3.7" and python_full_version < "4.0.0"
|
||||
pyally==1.1.2
|
||||
pyarrow==9.0.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
pycares==4.2.2; python_version >= "3.5.2" and python_full_version >= "3.7.0"
|
||||
pycodestyle==2.7.0; python_full_version >= "3.7.0"
|
||||
pyarrow==11.0.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
pycares==4.3.0; python_version >= "3.5.2" and python_full_version >= "3.7.0"
|
||||
pycodestyle==2.9.1; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
pycoingecko==2.3.0
|
||||
pycparser==2.21; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
|
||||
pydeck==0.8.0b4; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
pyerfa==2.0.0.1; python_version >= "3.8"
|
||||
pydantic==1.10.4; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
pydeck==0.8.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
pyex==0.5.0
|
||||
pyflakes==2.3.1; python_full_version >= "3.7.0"
|
||||
pygments==2.13.0; python_version >= "3.6"
|
||||
pyhdfe==0.1.0; python_version >= "3.8"
|
||||
pyflakes==2.5.0; python_version >= "3.6" and python_full_version >= "3.7.0"
|
||||
pygments==2.14.0; python_version >= "3.6"
|
||||
pyhdfe==0.1.2; python_version >= "3.8"
|
||||
pylint==2.15.2; python_full_version >= "3.7.2"
|
||||
pyluach==2.0.2; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
pymeeus==0.5.11; python_version >= "3.7" and python_version < "4"
|
||||
pymeeus==0.5.12; python_version >= "3.7" and python_version < "4"
|
||||
pympler==1.0.1; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.6"
|
||||
pyobjc-core==8.5.1; python_version >= "3.6" and sys_platform == "darwin"
|
||||
pyobjc-framework-cocoa==8.5.1; python_version >= "3.6" and sys_platform == "darwin"
|
||||
pyotp==2.7.0; python_version >= "3.6"
|
||||
pyobjc-core==9.0.1; python_version >= "3.7" and sys_platform == "darwin"
|
||||
pyobjc-framework-cocoa==9.0.1; python_version >= "3.7" and sys_platform == "darwin"
|
||||
pyotp==2.8.0; python_version >= "3.7"
|
||||
pyparsing==3.0.9; python_full_version >= "3.6.8" and python_version >= "3.7"
|
||||
pyprind==2.11.3; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
pyrsistent==0.18.1; python_version >= "3.7"
|
||||
pythclient==0.1.2; python_full_version >= "3.7.0"
|
||||
pytest-cov==3.0.0; python_version >= "3.6"
|
||||
pytest-mock==3.10.0; python_version >= "3.7"
|
||||
pytest-recording==0.12.1; python_version >= "3.5"
|
||||
pytest==6.2.5; python_version >= "3.6"
|
||||
pythclient==0.1.4; python_full_version >= "3.7.0"
|
||||
python-binance==1.0.16
|
||||
python-coinmarketcap==0.2
|
||||
python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.8" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7") and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5") and python_version < "4.0"
|
||||
python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.8" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7") and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and python_version < "4.0"
|
||||
python-dotenv==0.19.2; python_version >= "3.5"
|
||||
python-i18n==0.3.9
|
||||
pytrends==4.8.0
|
||||
pytz-deprecation-shim==0.1.0.post0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.6"
|
||||
pytz==2022.5; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8" and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and python_version < "4.0"
|
||||
pywin32==305; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.7"
|
||||
pywinpty==2.0.8; os_name == "nt" and python_version >= "3.7"
|
||||
pyyaml==6.0; python_version >= "3.8"
|
||||
pyzmq==24.0.1; python_version >= "3.7"
|
||||
qdldl==0.1.5.post2; python_version >= "3.7"
|
||||
pytrends==4.9.0; python_version >= "3.7"
|
||||
pytz-deprecation-shim==0.1.0.post0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
pytz==2022.7.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8" and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and python_version < "4.0"
|
||||
pyupgrade==2.38.4; python_version >= "3.7"
|
||||
pywin32==305; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.8"
|
||||
pywinpty==2.0.10; os_name == "nt" and python_version >= "3.7"
|
||||
pyyaml==6.0; python_version >= "3.7"
|
||||
pyzmq==25.0.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
quandl==3.7.0; python_version >= "3.6"
|
||||
rapidfuzz==1.9.1; python_version >= "2.7"
|
||||
rdflib==6.2.0; python_version >= "3.7"
|
||||
regex==2022.3.2; python_version >= "3.6"
|
||||
regex==2022.10.31; python_version >= "3.7"
|
||||
requests-oauthlib==1.3.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
|
||||
requests==2.28.1; python_version >= "3.7" and python_version < "4"
|
||||
requests==2.28.2; python_version >= "3.7" and python_version < "4"
|
||||
rfc3986==1.5.0; python_version >= "3.8" and python_version < "4.0"
|
||||
rich==12.6.0; python_full_version >= "3.6.3" and python_full_version < "4.0.0"
|
||||
riskfolio-lib==3.3.0; python_version >= "3.7"
|
||||
robin-stocks==2.1.0; python_version >= "3"
|
||||
ruamel.yaml.clib==0.2.7; platform_python_implementation == "CPython" and python_version < "3.11" and python_version >= "3.5"
|
||||
ruamel.yaml==0.17.21; python_version >= "3"
|
||||
scikit-learn==1.1.2; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
|
||||
ruff==0.0.236; python_version >= "3.7"
|
||||
scikit-learn==1.2.1; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
|
||||
scipy==1.10.0; python_version >= "3.8" and python_version < "3.12"
|
||||
screeninfo==0.6.7
|
||||
scs==3.2.0; python_version >= "3.7"
|
||||
seaborn==0.11.2; python_version >= "3.6"
|
||||
semver==2.13.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.4.0" or python_full_version > "3.9.7"
|
||||
send2trash==1.8.0; python_version >= "3.7"
|
||||
sentiment-investor==2.1.0; python_version >= "3.8" and python_version < "4.0"
|
||||
setuptools-scm==6.4.2; python_version >= "3.8"
|
||||
sgmllib3k==1.0.0; python_version >= "3.6"
|
||||
six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.8" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7") and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7") and (python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.8")
|
||||
six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.8" and python_version < "4.0" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7") and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0") and (python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.8")
|
||||
smmap==5.0.0; python_version >= "3.7"
|
||||
sniffio==1.3.0; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.2"
|
||||
snowballstemmer==2.2.0; python_version >= "3.6"
|
||||
socketio-client-nexus==0.7.6
|
||||
soupsieve==2.3.2.post1; python_version >= "3.6" and python_full_version >= "3.6.0"
|
||||
soupsieve==2.3.2.post1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
|
||||
sparqlwrapper==2.0.0; python_version >= "3.7"
|
||||
sphinx==4.5.0; python_version >= "3.6"
|
||||
sphinxcontrib-applehelp==1.0.4; python_version >= "3.8"
|
||||
sphinxcontrib-devhelp==1.0.2; python_version >= "3.6"
|
||||
sphinxcontrib-htmlhelp==2.0.1; python_version >= "3.8"
|
||||
sphinxcontrib-jsmath==1.0.1; python_version >= "3.6"
|
||||
sphinxcontrib-qthelp==1.0.3; python_version >= "3.6"
|
||||
sphinxcontrib-serializinghtml==1.1.5; python_version >= "3.6"
|
||||
squarify==0.4.3
|
||||
sseclient==0.0.27
|
||||
stack-data==0.5.1; python_version >= "3.8"
|
||||
stack-data==0.6.2; python_version >= "3.8"
|
||||
statsmodels==0.13.2; python_version >= "3.7"
|
||||
stevedore==4.1.1; python_version >= "3.8"
|
||||
stocksera==0.1.21; python_version >= "3.6"
|
||||
streamlit==1.13.0; (python_version >= "3.7" and python_full_version < "3.9.7") or (python_full_version > "3.9.7")
|
||||
streamlit==1.17.0; (python_version >= "3.7" and python_full_version < "3.9.7") or (python_full_version > "3.9.7")
|
||||
tabulate==0.9.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
temporal-cache==0.1.4
|
||||
tenacity==8.1.0; python_version >= "3.7"
|
||||
terminado==0.16.0; python_version >= "3.7"
|
||||
tenacity==7.0.0; python_version >= "3.8" and python_version < "4.0"
|
||||
terminado==0.17.1; python_version >= "3.7"
|
||||
textwrap3==0.9.2; python_version >= "3.7"
|
||||
thepassiveinvestor==1.1.2
|
||||
threadpoolctl==3.1.0; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
|
||||
tinycss2==1.2.1; python_version >= "3.7"
|
||||
tokenize-rt==4.2.1; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
tokenterminal==1.0.1
|
||||
toml==0.10.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7"
|
||||
tomli==2.0.1; python_version >= "3.8"
|
||||
toml==0.10.2; python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0"
|
||||
tomli==2.0.1; python_version < "3.11" and python_full_version >= "3.7.2" and python_version >= "3.8" and python_full_version <= "3.11.0a6"
|
||||
tomlkit==0.11.6; python_version >= "3.6" and python_full_version >= "3.7.2"
|
||||
toolz==0.12.0; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7")
|
||||
tornado==6.2; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
tqdm==4.64.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
|
||||
tornado==6.2; python_version >= "3.8" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.8" and python_full_version < "4.0.0"
|
||||
tqdm==4.64.1; python_version >= "3.8" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.4.0"
|
||||
tradingview-ta==3.3.0; python_version >= "3.6"
|
||||
traitlets==5.5.0; python_full_version >= "3.7.0" and python_version >= "3.8"
|
||||
typing-extensions==4.4.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version < "3.9" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
|
||||
tzdata==2022.5; python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_version >= "3.7" and python_full_version < "3.9.7" and platform_system == "Windows" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.6" and platform_system == "Windows"
|
||||
tzlocal==4.2; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.6"
|
||||
ujson==5.5.0; python_version >= "3.7"
|
||||
traitlets==5.9.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
types-python-dateutil==2.8.19.6
|
||||
types-pytz==2021.3.8
|
||||
types-pyyaml==6.0.12.4
|
||||
types-requests==2.28.11.8
|
||||
types-setuptools==57.4.18
|
||||
types-six==1.16.21.4
|
||||
types-urllib3==1.26.25.4
|
||||
typing-extensions==4.4.0; python_full_version >= "3.7.2" and python_full_version < "4.0.0" and python_version < "3.9" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
|
||||
tzdata==2022.7; python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_version >= "3.7" and python_full_version < "3.9.7" and platform_system == "Windows" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.7" and platform_system == "Windows"
|
||||
tzlocal==4.2; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
|
||||
ujson==5.7.0; python_version >= "3.7"
|
||||
unidecode==1.3.6; python_version >= "3.7"
|
||||
update-checker==0.18.0; python_version >= "3.7" and python_version < "4.0"
|
||||
urllib3==1.26.12; python_full_version >= "3.7.1" and python_version < "4" and python_version >= "3.8" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
|
||||
user-agent==0.1.10
|
||||
urllib3==1.26.14; python_version >= "3.8" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
|
||||
user-agent==0.1.10; python_version >= "3.8" and python_version < "4.0"
|
||||
vadersentiment==3.3.2
|
||||
validators==0.20.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.4"
|
||||
valinvest==0.0.2; python_version >= "3.6"
|
||||
vcrpy==4.2.1; python_version >= "3.7"
|
||||
virtualenv==20.17.1; python_version >= "3.7"
|
||||
voila==0.4.0; python_version >= "3.7"
|
||||
watchdog==2.1.9; python_version >= "3.6"
|
||||
wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.8"
|
||||
watchdog==2.2.1; python_version >= "3.6"
|
||||
wcwidth==0.2.6; python_full_version >= "3.6.2" and python_version >= "3.8"
|
||||
webencodings==0.5.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
|
||||
websocket-client==1.4.1; python_version >= "3.8" and python_version < "4.0"
|
||||
websockets==10.3; python_version >= "3.7"
|
||||
widgetsnbextension==4.0.3; python_version >= "3.7"
|
||||
websocket-client==1.5.0; python_version >= "3.8" and python_version < "4.0"
|
||||
websockets==10.4; python_version >= "3.7"
|
||||
widgetsnbextension==4.0.5; python_version >= "3.7"
|
||||
win32-setctime==1.1.0; python_version >= "3.5" and python_full_version >= "3.7.0" and sys_platform == "win32"
|
||||
wrapt==1.14.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
|
||||
xlsxwriter==3.0.3; python_version >= "3.7"
|
||||
yarl==1.8.1; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
wrapt==1.14.1; python_full_version >= "3.7.2" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7") and python_version >= "3.8" and python_version < "3.11"
|
||||
yarl==1.8.2; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
|
||||
yfinance==0.2.9
|
||||
zipp==3.10.0; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.10" or python_full_version > "3.9.7" and python_version >= "3.7" and python_version < "3.10"
|
||||
zope.interface==5.5.0; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5"
|
||||
zipp==3.12.0; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.10" or python_full_version > "3.9.7" and python_version >= "3.7" and python_version < "3.10"
|
||||
zope.interface==5.5.2; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5"
|
||||
|
||||
@@ -2525,11 +2525,11 @@ interactions:
|
||||
Content-Type:
|
||||
- text/plain; charset=utf-8
|
||||
Date:
|
||||
- Tue, 24 Jan 2023 09:56:48 GMT
|
||||
- Thu, 02 Feb 2023 12:38:47 GMT
|
||||
ETag:
|
||||
- '"08f456d8e5ec3e2bfa8f503f02be6faa9459c3ea66fc1cd9a553858d3b959041"'
|
||||
Expires:
|
||||
- Tue, 24 Jan 2023 10:01:48 GMT
|
||||
- Thu, 02 Feb 2023 12:43:47 GMT
|
||||
Source-Age:
|
||||
- '0'
|
||||
Strict-Transport-Security:
|
||||
@@ -2545,15 +2545,15 @@ interactions:
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Fastly-Request-ID:
|
||||
- 93af81fa391c37967a8816d18af82f0a38573c2c
|
||||
- 2fc33d40d5235a2812d15e0e67a2ab5f268516de
|
||||
X-Frame-Options:
|
||||
- deny
|
||||
X-GitHub-Request-Id:
|
||||
- 61CA:D26D:B4AB6:D2B74:63CFAB60
|
||||
- 5704:0C77:59AE13:659218:63DBAED6
|
||||
X-Served-By:
|
||||
- cache-ams21028-AMS
|
||||
- cache-lis1490049-LIS
|
||||
X-Timer:
|
||||
- S1674554208.229202,VS0,VE191
|
||||
- S1675341527.731863,VS0,VE390
|
||||
X-XSS-Protection:
|
||||
- 1; mode=block
|
||||
status:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -2525,13 +2525,13 @@ interactions:
|
||||
Content-Type:
|
||||
- text/plain; charset=utf-8
|
||||
Date:
|
||||
- Mon, 23 Jan 2023 14:16:13 GMT
|
||||
- Thu, 02 Feb 2023 12:39:21 GMT
|
||||
ETag:
|
||||
- '"08f456d8e5ec3e2bfa8f503f02be6faa9459c3ea66fc1cd9a553858d3b959041"'
|
||||
Expires:
|
||||
- Mon, 23 Jan 2023 14:21:13 GMT
|
||||
- Thu, 02 Feb 2023 12:44:21 GMT
|
||||
Source-Age:
|
||||
- '118'
|
||||
- '35'
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000
|
||||
Vary:
|
||||
@@ -2545,15 +2545,15 @@ interactions:
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Fastly-Request-ID:
|
||||
- 82b2e2f8392fd91a239d6db3662a21bf790a7cde
|
||||
- 025cfed2c5c1961614a1c28193dd73d12fc19beb
|
||||
X-Frame-Options:
|
||||
- deny
|
||||
X-GitHub-Request-Id:
|
||||
- B832:BCB0:BDF798:CD756D:63CE91D4
|
||||
- 5704:0C77:59AE13:659218:63DBAED6
|
||||
X-Served-By:
|
||||
- cache-ams21056-AMS
|
||||
- cache-lis1490032-LIS
|
||||
X-Timer:
|
||||
- S1674483373.259799,VS0,VE1
|
||||
- S1675341562.501079,VS0,VE1
|
||||
X-XSS-Protection:
|
||||
- 1; mode=block
|
||||
status:
|
||||
|
||||
@@ -2525,13 +2525,13 @@ interactions:
|
||||
Content-Type:
|
||||
- text/plain; charset=utf-8
|
||||
Date:
|
||||
- Mon, 23 Jan 2023 14:16:13 GMT
|
||||
- Thu, 02 Feb 2023 12:39:21 GMT
|
||||
ETag:
|
||||
- '"08f456d8e5ec3e2bfa8f503f02be6faa9459c3ea66fc1cd9a553858d3b959041"'
|
||||
Expires:
|
||||
- Mon, 23 Jan 2023 14:21:13 GMT
|
||||
- Thu, 02 Feb 2023 12:44:21 GMT
|
||||
Source-Age:
|
||||
- '118'
|
||||
- '34'
|
||||
Strict-Transport-Security:
|
||||
- max-age=31536000
|
||||
Vary:
|
||||
@@ -2541,19 +2541,19 @@ interactions:
|
||||
X-Cache:
|
||||
- HIT
|
||||
X-Cache-Hits:
|
||||
- '2'
|
||||
- '1'
|
||||
X-Content-Type-Options:
|
||||
- nosniff
|
||||
X-Fastly-Request-ID:
|
||||
- 4403d9531379a70e2f9e9a5d87a02c98f0fc10a0
|
||||
- d659bbcf9cff7140058b5866069d442a9de7507b
|
||||
X-Frame-Options:
|
||||
- deny
|
||||
X-GitHub-Request-Id:
|
||||
- B832:BCB0:BDF798:CD756D:63CE91D4
|
||||
- 5704:0C77:59AE13:659218:63DBAED6
|
||||
X-Served-By:
|
||||
- cache-ams21059-AMS
|
||||
- cache-lis1490041-LIS
|
||||
X-Timer:
|
||||
- S1674483373.134627,VS0,VE0
|
||||
- S1675341561.436595,VS0,VE1
|
||||
X-XSS-Protection:
|
||||
- 1; mode=block
|
||||
status:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,18 +1,18 @@
|
||||
,Date,Company,Symbol,Price,LastPrice,Change (%),Recommendation
|
||||
0,06/15,Applied Materials ,AMAT,97.42,114.15,14.66,Buy
|
||||
1,06/15,AMN Healthcare Services ,AMN,103.32,101.67,-1.6199999999999999,Buy
|
||||
2,06/15,Alibaba ,BABA,108.03,119.53,9.62,Sell
|
||||
3,06/15,Dutch Bros ,BROS,34.17,34.42,0.73,Buy
|
||||
4,06/15,Chargepoint ,CHPT,13.36,11.87,-12.55,Sell
|
||||
5,06/15,Cleveland-Cliffs ,CLF,18.05,20.61,12.42,Sell
|
||||
6,06/15,Ford Motor ,F,12.27,12.8,4.14,Buy
|
||||
7,06/15,Eli Lilly ,LLY,292.99,342.21,14.38,Buy
|
||||
8,06/15,Meta Platforms ,META,169.35,143.27,-18.2,Buy
|
||||
9,06/15,Medical Properties Trust ,MPW,14.99,13.78,-8.780000000000001,Buy
|
||||
10,06/15,Nucor ,NUE,116.46,153.85,24.3,Buy
|
||||
11,06/15,Planet Fitness ,PLNT,64.42,80.87,20.34,Buy
|
||||
12,06/15,Prothena ,PRTA,23.68,55.1,57.02,Sell
|
||||
13,06/15,SoFi Technologies ,SOFI,5.94,5.87,-1.1900000000000002,Buy
|
||||
14,06/15,Toll Brothers ,TOL,44.38,56.04,20.810000000000002,Buy
|
||||
15,06/15,Woodside Energy Group ,WDS,22.11,26.39,16.220000000000002,Buy
|
||||
16,06/15,Whirlpool ,WHR,155.52,152.12,-2.2399999999999998,Buy
|
||||
0,06/15,Applied Materials ,AMAT,97.42,119.01,18.14,Buy
|
||||
1,06/15,AMN Healthcare Services ,AMN,103.32,99.77,-3.56,Buy
|
||||
2,06/15,Alibaba ,BABA,108.03,112.82,4.25,Sell
|
||||
3,06/15,Dutch Bros ,BROS,34.17,38.52,11.29,Buy
|
||||
4,06/15,Chargepoint ,CHPT,13.36,12.46,-7.22,Sell
|
||||
5,06/15,Cleveland-Cliffs ,CLF,18.05,21.89,17.54,Sell
|
||||
6,06/15,Ford Motor ,F,12.27,13.79,11.020000000000001,Buy
|
||||
7,06/15,Eli Lilly ,LLY,292.99,342.57,14.469999999999999,Buy
|
||||
8,06/15,Meta Platforms ,META,169.35,153.12,-10.6,Buy
|
||||
9,06/15,Medical Properties Trust ,MPW,14.99,12.93,-15.93,Buy
|
||||
10,06/15,Nucor ,NUE,116.46,174.98,33.44,Buy
|
||||
11,06/15,Planet Fitness ,PLNT,64.42,83.8,23.13,Buy
|
||||
12,06/15,Prothena ,PRTA,23.68,53.67,55.879999999999995,Sell
|
||||
13,06/15,SoFi Technologies ,SOFI,5.94,7.38,19.509999999999998,Buy
|
||||
14,06/15,Toll Brothers ,TOL,44.38,60.26,26.35,Buy
|
||||
15,06/15,Woodside Energy Group ,WDS,22.11,25.31,12.64,Buy
|
||||
16,06/15,Whirlpool ,WHR,155.52,156.5,0.63,Buy
|
||||
|
||||
|
@@ -1,18 +1,18 @@
|
||||
,Date,Company,Symbol,Price,LastPrice,Change (%),Recommendation,InverseCramer
|
||||
0,06/15,Applied Materials ,AMAT,97.42,114.15,14.66,Buy,Sell
|
||||
1,06/15,AMN Healthcare Services ,AMN,103.32,101.67,-1.6199999999999999,Buy,Sell
|
||||
2,06/15,Alibaba ,BABA,108.03,119.53,9.62,Sell,Buy
|
||||
3,06/15,Dutch Bros ,BROS,34.17,34.42,0.73,Buy,Sell
|
||||
4,06/15,Chargepoint ,CHPT,13.36,11.87,-12.55,Sell,Buy
|
||||
5,06/15,Cleveland-Cliffs ,CLF,18.05,20.61,12.42,Sell,Buy
|
||||
6,06/15,Ford Motor ,F,12.27,12.8,4.14,Buy,Sell
|
||||
7,06/15,Eli Lilly ,LLY,292.99,342.21,14.38,Buy,Sell
|
||||
8,06/15,Meta Platforms ,META,169.35,143.27,-18.2,Buy,Sell
|
||||
9,06/15,Medical Properties Trust ,MPW,14.99,13.78,-8.780000000000001,Buy,Sell
|
||||
10,06/15,Nucor ,NUE,116.46,153.85,24.3,Buy,Sell
|
||||
11,06/15,Planet Fitness ,PLNT,64.42,80.87,20.34,Buy,Sell
|
||||
12,06/15,Prothena ,PRTA,23.68,55.1,57.02,Sell,Buy
|
||||
13,06/15,SoFi Technologies ,SOFI,5.94,5.87,-1.1900000000000002,Buy,Sell
|
||||
14,06/15,Toll Brothers ,TOL,44.38,56.04,20.810000000000002,Buy,Sell
|
||||
15,06/15,Woodside Energy Group ,WDS,22.11,26.39,16.220000000000002,Buy,Sell
|
||||
16,06/15,Whirlpool ,WHR,155.52,152.12,-2.2399999999999998,Buy,Sell
|
||||
0,06/15,Applied Materials ,AMAT,97.42,119.01,18.14,Buy,Sell
|
||||
1,06/15,AMN Healthcare Services ,AMN,103.32,99.77,-3.56,Buy,Sell
|
||||
2,06/15,Alibaba ,BABA,108.03,112.82,4.25,Sell,Buy
|
||||
3,06/15,Dutch Bros ,BROS,34.17,38.52,11.29,Buy,Sell
|
||||
4,06/15,Chargepoint ,CHPT,13.36,12.46,-7.22,Sell,Buy
|
||||
5,06/15,Cleveland-Cliffs ,CLF,18.05,21.89,17.54,Sell,Buy
|
||||
6,06/15,Ford Motor ,F,12.27,13.79,11.020000000000001,Buy,Sell
|
||||
7,06/15,Eli Lilly ,LLY,292.99,342.57,14.469999999999999,Buy,Sell
|
||||
8,06/15,Meta Platforms ,META,169.35,153.12,-10.6,Buy,Sell
|
||||
9,06/15,Medical Properties Trust ,MPW,14.99,12.93,-15.93,Buy,Sell
|
||||
10,06/15,Nucor ,NUE,116.46,174.98,33.44,Buy,Sell
|
||||
11,06/15,Planet Fitness ,PLNT,64.42,83.8,23.13,Buy,Sell
|
||||
12,06/15,Prothena ,PRTA,23.68,53.67,55.879999999999995,Sell,Buy
|
||||
13,06/15,SoFi Technologies ,SOFI,5.94,7.38,19.509999999999998,Buy,Sell
|
||||
14,06/15,Toll Brothers ,TOL,44.38,60.26,26.35,Buy,Sell
|
||||
15,06/15,Woodside Energy Group ,WDS,22.11,25.31,12.64,Buy,Sell
|
||||
16,06/15,Whirlpool ,WHR,155.52,156.5,0.63,Buy,Sell
|
||||
|
||||
|
@@ -3,20 +3,20 @@
|
||||
[yellow]Warning[/yellow]: We noticed Jim Crammer recommendation data has not been updated for a while, and we're investigating on finding a replacement.
|
||||
|
||||
Company Symbol Price LastPrice Change (%) Recommendation
|
||||
0 Applied Materials AMAT 97.42 109.65 11.15 Buy
|
||||
1 AMN Healthcare Services AMN 103.32 99.14 -4.22 Buy
|
||||
2 Alibaba BABA 108.03 119.86 9.87 Sell
|
||||
3 Dutch Bros BROS 34.17 34.00 -0.50 Buy
|
||||
4 Chargepoint CHPT 13.36 11.09 -20.47 Sell
|
||||
5 Cleveland-Cliffs CLF 18.05 20.97 13.92 Sell
|
||||
6 Ford Motor F 12.27 12.40 1.05 Buy
|
||||
7 Eli Lilly LLY 292.99 346.07 15.34 Buy
|
||||
8 Meta Platforms META 169.35 139.37 -21.51 Buy
|
||||
9 Medical Properties Trust MPW 14.99 13.72 -9.26 Buy
|
||||
10 Nucor NUE 116.46 153.47 24.12 Buy
|
||||
11 Planet Fitness PLNT 64.42 79.22 18.68 Buy
|
||||
12 Prothena PRTA 23.68 54.56 56.60 Sell
|
||||
13 SoFi Technologies SOFI 5.94 5.67 -4.76 Buy
|
||||
14 Toll Brothers TOL 44.38 55.86 20.55 Buy
|
||||
15 Woodside Energy Group WDS 22.11 25.98 14.90 Buy
|
||||
16 Whirlpool WHR 155.52 150.82 -3.12 Buy
|
||||
0 Applied Materials AMAT 97.42 119.01 18.14 Buy
|
||||
1 AMN Healthcare Services AMN 103.32 99.77 -3.56 Buy
|
||||
2 Alibaba BABA 108.03 112.82 4.25 Sell
|
||||
3 Dutch Bros BROS 34.17 38.52 11.29 Buy
|
||||
4 Chargepoint CHPT 13.36 12.46 -7.22 Sell
|
||||
5 Cleveland-Cliffs CLF 18.05 21.89 17.54 Sell
|
||||
6 Ford Motor F 12.27 13.79 11.02 Buy
|
||||
7 Eli Lilly LLY 292.99 342.57 14.47 Buy
|
||||
8 Meta Platforms META 169.35 153.12 -10.60 Buy
|
||||
9 Medical Properties Trust MPW 14.99 12.93 -15.93 Buy
|
||||
10 Nucor NUE 116.46 174.98 33.44 Buy
|
||||
11 Planet Fitness PLNT 64.42 83.80 23.13 Buy
|
||||
12 Prothena PRTA 23.68 53.67 55.88 Sell
|
||||
13 SoFi Technologies SOFI 5.94 7.38 19.51 Buy
|
||||
14 Toll Brothers TOL 44.38 60.26 26.35 Buy
|
||||
15 Woodside Energy Group WDS 22.11 25.31 12.64 Buy
|
||||
16 Whirlpool WHR 155.52 156.50 0.63 Buy
|
||||
|
||||
@@ -3,20 +3,20 @@
|
||||
[yellow]Warning[/yellow]: We noticed Jim Crammer recommendation data has not been updated for a while, and we're investigating on finding a replacement.
|
||||
|
||||
Company Symbol Price LastPrice Change (%) Recommendation InverseCramer
|
||||
0 Applied Materials AMAT 97.42 109.65 11.15 Buy Sell
|
||||
1 AMN Healthcare Services AMN 103.32 99.14 -4.22 Buy Sell
|
||||
2 Alibaba BABA 108.03 119.86 9.87 Sell Buy
|
||||
3 Dutch Bros BROS 34.17 34.00 -0.50 Buy Sell
|
||||
4 Chargepoint CHPT 13.36 11.09 -20.47 Sell Buy
|
||||
5 Cleveland-Cliffs CLF 18.05 20.97 13.92 Sell Buy
|
||||
6 Ford Motor F 12.27 12.40 1.05 Buy Sell
|
||||
7 Eli Lilly LLY 292.99 346.07 15.34 Buy Sell
|
||||
8 Meta Platforms META 169.35 139.37 -21.51 Buy Sell
|
||||
9 Medical Properties Trust MPW 14.99 13.72 -9.26 Buy Sell
|
||||
10 Nucor NUE 116.46 153.47 24.12 Buy Sell
|
||||
11 Planet Fitness PLNT 64.42 79.22 18.68 Buy Sell
|
||||
12 Prothena PRTA 23.68 54.56 56.60 Sell Buy
|
||||
13 SoFi Technologies SOFI 5.94 5.67 -4.76 Buy Sell
|
||||
14 Toll Brothers TOL 44.38 55.86 20.55 Buy Sell
|
||||
15 Woodside Energy Group WDS 22.11 25.98 14.90 Buy Sell
|
||||
16 Whirlpool WHR 155.52 150.82 -3.12 Buy Sell
|
||||
0 Applied Materials AMAT 97.42 119.01 18.14 Buy Sell
|
||||
1 AMN Healthcare Services AMN 103.32 99.77 -3.56 Buy Sell
|
||||
2 Alibaba BABA 108.03 112.82 4.25 Sell Buy
|
||||
3 Dutch Bros BROS 34.17 38.52 11.29 Buy Sell
|
||||
4 Chargepoint CHPT 13.36 12.46 -7.22 Sell Buy
|
||||
5 Cleveland-Cliffs CLF 18.05 21.89 17.54 Sell Buy
|
||||
6 Ford Motor F 12.27 13.79 11.02 Buy Sell
|
||||
7 Eli Lilly LLY 292.99 342.57 14.47 Buy Sell
|
||||
8 Meta Platforms META 169.35 153.12 -10.60 Buy Sell
|
||||
9 Medical Properties Trust MPW 14.99 12.93 -15.93 Buy Sell
|
||||
10 Nucor NUE 116.46 174.98 33.44 Buy Sell
|
||||
11 Planet Fitness PLNT 64.42 83.80 23.13 Buy Sell
|
||||
12 Prothena PRTA 23.68 53.67 55.88 Sell Buy
|
||||
13 SoFi Technologies SOFI 5.94 7.38 19.51 Buy Sell
|
||||
14 Toll Brothers TOL 44.38 60.26 26.35 Buy Sell
|
||||
15 Woodside Energy Group WDS 22.11 25.31 12.64 Buy Sell
|
||||
16 Whirlpool WHR 155.52 156.50 0.63 Buy Sell
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -297,7 +297,7 @@ interactions:
|
||||
x-envoy-decorator-operation:
|
||||
- finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/*
|
||||
x-envoy-upstream-service-time:
|
||||
- '9'
|
||||
- '6'
|
||||
x-request-id:
|
||||
- 46d5c0a0-b781-4531-a7e8-5827fe2aa12a
|
||||
x-yahoo-request-id:
|
||||
|
||||
@@ -593,7 +593,7 @@ interactions:
|
||||
AvrCVZON4gAA
|
||||
headers:
|
||||
Age:
|
||||
- '0'
|
||||
- '1'
|
||||
Connection:
|
||||
- keep-alive
|
||||
Expect-CT:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,5 @@
|
||||
,X,Y,dist
|
||||
ZBH,1,1,0
|
||||
D,1,1,0
|
||||
LLY,1,1,0
|
||||
EW,1,1,0
|
||||
ETR,1,1,0
|
||||
@@ -27,11 +26,11 @@ FSLR,1,1,0
|
||||
FRT,1,1,0
|
||||
FRC,1,1,0
|
||||
FITB,1,1,0
|
||||
FFIV,1,1,0
|
||||
D,1,1,0
|
||||
DAL,1,1,0
|
||||
DE,1,1,0
|
||||
DFS,1,1,0
|
||||
DG,1,1,0
|
||||
CTRA,1,1,0
|
||||
CSX,1,1,0
|
||||
CSGP,1,1,0
|
||||
CPRT,1,1,0
|
||||
@@ -44,9 +43,9 @@ CMA,1,1,0
|
||||
CEG,1,1,0
|
||||
CCI,1,1,0
|
||||
CAG,1,1,0
|
||||
FFIV,1,1,0
|
||||
XRAY,1,1,0
|
||||
DXCM,1,1,0
|
||||
FE,1,1,0
|
||||
FANG,1,1,0
|
||||
DVN,1,1,0
|
||||
DVA,1,1,0
|
||||
DUK,1,1,0
|
||||
@@ -59,11 +58,11 @@ DLTR,1,1,0
|
||||
DLR,1,1,0
|
||||
DISH,1,1,0
|
||||
DIS,1,1,0
|
||||
FANG,1,1,0
|
||||
CTVA,1,1,0
|
||||
FE,1,1,0
|
||||
FDS,1,1,0
|
||||
HST,1,1,0
|
||||
DG,1,1,0
|
||||
DXCM,1,1,0
|
||||
CTRA,1,1,0
|
||||
FDX,1,1,0
|
||||
FAST,1,1,0
|
||||
HSIC,1,1,0
|
||||
HRL,1,1,0
|
||||
HPE,1,1,0
|
||||
@@ -90,11 +89,11 @@ IP,1,1,0
|
||||
INTU,1,1,0
|
||||
INTC,1,1,0
|
||||
INCY,1,1,0
|
||||
ILMN,1,1,0
|
||||
HST,1,1,0
|
||||
HSY,1,1,0
|
||||
PEAK,1,1,0
|
||||
BEN,1,1,0
|
||||
F,1,1,0
|
||||
FAST,1,1,0
|
||||
EXR,1,1,0
|
||||
EXPE,1,1,0
|
||||
EXPD,1,1,0
|
||||
@@ -107,9 +106,9 @@ EL,1,1,0
|
||||
IT,1,1,0
|
||||
GRMN,1,1,0
|
||||
GNRC,1,1,0
|
||||
FDX,1,1,0
|
||||
GM,1,1,0
|
||||
GEN,1,1,0
|
||||
FDS,1,1,0
|
||||
GIS,1,1,0
|
||||
GEHC,1,1,0
|
||||
GE,1,1,0
|
||||
GD,1,1,0
|
||||
@@ -122,11 +121,11 @@ FLT,1,1,0
|
||||
FISV,1,1,0
|
||||
FIS,1,1,0
|
||||
FCX,1,1,0
|
||||
GIS,1,1,0
|
||||
ILMN,1,1,0
|
||||
CVS,1,1,0
|
||||
DHR,1,1,0
|
||||
AMCR,1,1,0
|
||||
F,1,1,0
|
||||
GEN,1,1,0
|
||||
IFF,1,1,0
|
||||
CTVA,1,1,0
|
||||
DHI,1,1,0
|
||||
ALL,1,1,0
|
||||
AIG,1,1,0
|
||||
AEP,1,1,0
|
||||
@@ -153,11 +152,11 @@ ADSK,1,1,0
|
||||
ADI,1,1,0
|
||||
ACGL,1,1,0
|
||||
AAPL,1,1,0
|
||||
WRB,1,1,0
|
||||
AMCR,1,1,0
|
||||
AMD,1,1,0
|
||||
AME,1,1,0
|
||||
AMGN,1,1,0
|
||||
AMP,1,1,0
|
||||
ATVI,1,1,0
|
||||
ARE,1,1,0
|
||||
APD,1,1,0
|
||||
AOS,1,1,0
|
||||
@@ -170,9 +169,9 @@ AFL,1,1,0
|
||||
AES,1,1,0
|
||||
ADP,1,1,0
|
||||
ADM,1,1,0
|
||||
WRB,1,1,0
|
||||
ADBE,1,1,0
|
||||
ABT,1,1,0
|
||||
TECH,1,1,0
|
||||
ACN,1,1,0
|
||||
ABBV,1,1,0
|
||||
AAP,1,1,0
|
||||
A,1,1,0
|
||||
@@ -185,11 +184,11 @@ AWK,1,1,0
|
||||
APH,1,1,0
|
||||
AMZN,1,1,0
|
||||
AMT,1,1,0
|
||||
ACN,1,1,0
|
||||
DHI,1,1,0
|
||||
TECH,1,1,0
|
||||
BWA,1,1,0
|
||||
CAT,1,1,0
|
||||
AMP,1,1,0
|
||||
ABT,1,1,0
|
||||
CVS,1,1,0
|
||||
BXP,1,1,0
|
||||
BSX,1,1,0
|
||||
CARR,1,1,0
|
||||
CAH,1,1,0
|
||||
BF-B,1,1,0
|
||||
@@ -216,11 +215,11 @@ C,1,1,0
|
||||
STZ,1,1,0
|
||||
GLW,1,1,0
|
||||
ED,1,1,0
|
||||
DHR,1,1,0
|
||||
CAT,1,1,0
|
||||
CBOE,1,1,0
|
||||
CBRE,1,1,0
|
||||
CCL,1,1,0
|
||||
CDAY,1,1,0
|
||||
BSX,1,1,0
|
||||
BRO,1,1,0
|
||||
BRK-B,1,1,0
|
||||
BR,1,1,0
|
||||
@@ -233,9 +232,9 @@ BIIB,1,1,0
|
||||
BDX,1,1,0
|
||||
BBY,1,1,0
|
||||
BBWI,1,1,0
|
||||
BXP,1,1,0
|
||||
BAX,1,1,0
|
||||
AVGO,1,1,0
|
||||
BWA,1,1,0
|
||||
BA,1,1,0
|
||||
KMX,1,1,0
|
||||
CZR,1,1,0
|
||||
CTLT,1,1,0
|
||||
@@ -248,10 +247,11 @@ CHRW,1,1,0
|
||||
CE,1,1,0
|
||||
CDW,1,1,0
|
||||
CDNS,1,1,0
|
||||
BA,1,1,0
|
||||
IFF,1,1,0
|
||||
CDAY,1,1,0
|
||||
AVGO,1,1,0
|
||||
ATVI,1,1,0
|
||||
IEX,1,1,0
|
||||
IDXX,1,1,0
|
||||
ICE,1,1,0
|
||||
ROP,1,1,0
|
||||
ROL,1,1,0
|
||||
ROK,1,1,0
|
||||
@@ -375,10 +375,9 @@ VMC,1,1,0
|
||||
VLO,1,1,0
|
||||
VICI,1,1,0
|
||||
TEL,1,1,0
|
||||
IDXX,1,1,0
|
||||
PAYC,1,1,0
|
||||
PAYX,1,1,0
|
||||
PCAR,1,1,0
|
||||
LYB,1,1,0
|
||||
LW,1,1,0
|
||||
LVS,1,1,0
|
||||
LUMN,1,1,0
|
||||
@@ -405,11 +404,11 @@ MKC,1,1,0
|
||||
MGM,1,1,0
|
||||
META,1,1,0
|
||||
MET,1,1,0
|
||||
MDT,1,1,0
|
||||
LYB,1,1,0
|
||||
LYV,1,1,0
|
||||
MKTX,1,1,0
|
||||
MPC,1,1,0
|
||||
MRO,1,1,0
|
||||
ICE,1,1,0
|
||||
IBM,1,1,0
|
||||
HWM,1,1,0
|
||||
HUM,1,1,0
|
||||
@@ -422,9 +421,9 @@ KMB,1,1,0
|
||||
KLAC,1,1,0
|
||||
KIM,1,1,0
|
||||
KHC,1,1,0
|
||||
MDT,1,1,0
|
||||
KEYS,1,1,0
|
||||
KDP,1,1,0
|
||||
MCK,1,1,0
|
||||
KEY,1,1,0
|
||||
K,1,1,0
|
||||
JPM,1,1,0
|
||||
JNPR,1,1,0
|
||||
@@ -437,11 +436,11 @@ IRM,1,1,0
|
||||
IQV,1,1,0
|
||||
INVH,1,1,0
|
||||
MTB,1,1,0
|
||||
KEY,1,1,0
|
||||
MCK,1,1,0
|
||||
MRO,1,1,0
|
||||
KDP,1,1,0
|
||||
PAYX,1,1,0
|
||||
MCHP,1,1,0
|
||||
MCD,1,1,0
|
||||
ODFL,1,1,0
|
||||
MAS,1,1,0
|
||||
NXPI,1,1,0
|
||||
NVR,1,1,0
|
||||
NVDA,1,1,0
|
||||
@@ -454,8 +453,8 @@ NI,1,1,0
|
||||
NDSN,1,1,0
|
||||
NCLH,1,1,0
|
||||
PYPL,1,1,0
|
||||
OGN,1,1,0
|
||||
PXD,1,1,0
|
||||
PSX,1,1,0
|
||||
PPL,1,1,0
|
||||
PPG,1,1,0
|
||||
POOL,1,1,0
|
||||
@@ -469,11 +468,10 @@ PH,1,1,0
|
||||
PFE,1,1,0
|
||||
PEP,1,1,0
|
||||
PCG,1,1,0
|
||||
PSX,1,1,0
|
||||
MMM,1,1,0
|
||||
ODFL,1,1,0
|
||||
OGN,1,1,0
|
||||
OKE,1,1,0
|
||||
ON,1,1,0
|
||||
MAS,1,1,0
|
||||
OMC,1,1,0
|
||||
MAR,1,1,0
|
||||
MAA,1,1,0
|
||||
MA,1,1,0
|
||||
@@ -486,9 +484,9 @@ NKE,1,1,0
|
||||
NFLX,1,1,0
|
||||
NEM,1,1,0
|
||||
NEE,1,1,0
|
||||
OMC,1,1,0
|
||||
NDAQ,1,1,0
|
||||
MSCI,1,1,0
|
||||
MCD,1,1,0
|
||||
MSI,1,1,0
|
||||
MS,1,1,0
|
||||
MPWR,1,1,0
|
||||
MOS,1,1,0
|
||||
@@ -501,5 +499,6 @@ OXY,1,1,0
|
||||
OTIS,1,1,0
|
||||
ORLY,1,1,0
|
||||
ORCL,1,1,0
|
||||
MSI,1,1,0
|
||||
TOT.TO,1,1,0
|
||||
ON,1,1,0
|
||||
MSCI,1,1,0
|
||||
MMM,1,1,0
|
||||
|
||||
|
@@ -34,7 +34,7 @@ def test_get_historical(mocker, recorder):
|
||||
mocker.patch("yfinance.download", side_effect=mock_yf_download)
|
||||
|
||||
result_df = yahoo_finance_model.get_historical(
|
||||
similar=["TSLA", "GM"],
|
||||
similar=["TSLA", "AAPL"],
|
||||
start_date=datetime.strptime("2020-12-21", "%Y-%m-%d"),
|
||||
candle_type="o",
|
||||
)
|
||||
@@ -82,7 +82,7 @@ def test_get_sp500_comps_tsne(mocker, recorder):
|
||||
side_effect=lambda x: np.full((len(x), 2), 1),
|
||||
)
|
||||
result_df = yahoo_finance_model.get_sp500_comps_tsne(
|
||||
symbol="TOT.TO",
|
||||
symbol="AAPL",
|
||||
)
|
||||
|
||||
recorder.capture(result_df)
|
||||
|
||||
Reference in New Issue
Block a user