Sentiment News correlation with Stock price (#1421)

* news api refactored in model and view

* fix apis

* allow news to be displayed as vertical bar in candle

* add gst letters only

* small fix

* minor fixes

* redo normal candle without news

* add a new funtion for sentiment of headlines and stock price

* add finnhub python to requirements

* fix FRED granularity

* fix grhist plot coloring

* remove unused arg

* improve defi menu

* stocks/ba/snews API

* add tests for stocks/ba/snews

* update hugo

* Update _index.md

* ensure error is catch when wrong API key

* fix tests

* fix economy tests

* remove stats because that finnhub data is now premium

* improve plot snews
This commit is contained in:
didierlopes.eth
2022-03-03 21:18:41 +00:00
committed by GitHub
parent 517e89c4e8
commit b28e387b10
43 changed files with 1158 additions and 778 deletions

View File

@@ -63,6 +63,7 @@ fear-greed-index==0.1.4; python_version >= "3.7"
ffn==0.3.6; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
filelock==3.6.0; python_version >= "3.7" and python_full_version >= "3.6.1"
financedatabase==1.0.2
finnhub-python==2.4.10
finviz==1.4.3
finvizfinance==0.9.10; python_version >= "3.5"
flake8==3.9.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")

View File

@@ -28,6 +28,7 @@ def display_sentiment_stats(ticker: str, export: str = ""):
Format to export data
"""
d_stats = finnhub_model.get_sentiment_stats(ticker)
print(d_stats)
if d_stats:
console.print(

View File

@@ -0,0 +1,71 @@
""" News Model """
__docformat__ = "numpy"
import logging
from typing import Dict
import requests
from gamestonk_terminal import config_terminal as cfg
from gamestonk_terminal.decorators import log_start_end
from gamestonk_terminal.rich_config import console
logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def get_news(
term: str,
s_from: str,
show_newest: bool = True,
sources: str = "",
) -> Dict:
"""Get news for a given term. [Source: NewsAPI]
Parameters
----------
term : str
term to search on the news articles
s_from: str
date to start searching articles from formatted YYYY-MM-DD
show_newest: bool
flag to show newest articles first
sources: str
sources to exclusively show news from
Returns
----------
articles : dict
term to search on the news articles
"""
link = (
f"https://newsapi.org/v2/everything?q={term}&from={s_from}&sortBy=publishedAt&language=en"
f"&apiKey={cfg.API_NEWS_TOKEN}"
)
if sources:
link += f"&domain={sources}"
response = requests.get(link)
# Check that the API response was successful
if response.status_code == 426:
console.print(f"Error in request: {response.json()['message']}", "\n")
return {}
if response.status_code != 200:
console.print(
f"Error in request {response.status_code}. Check News API token", "\n"
)
return {}
console.print(
f"{response.json()['totalResults']} news articles for {term} were found since {s_from}\n"
)
if show_newest:
articles = response.json()["articles"]
else:
articles = response.json()["articles"][::-1]
return articles

View File

@@ -3,9 +3,7 @@ __docformat__ = "numpy"
import logging
import requests
from gamestonk_terminal import config_terminal as cfg
from gamestonk_terminal.common import newsapi_model
from gamestonk_terminal.decorators import log_start_end
from gamestonk_terminal.rich_config import console
@@ -13,58 +11,31 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def news(
def display_news(
term: str,
num: int,
s_from: str,
show_newest: bool,
sources: str,
num: int = 5,
show_newest: bool = True,
sources: str = "",
):
"""Display news for a given title. [Source: NewsAPI]
"""Display news for a given term. [Source: NewsAPI]
Parameters
----------
term : str
term to search on the news articles
num : int
number of articles to display
s_from: str
date to start searching articles from formatted YYYY-MM-DD
num : int
number of articles to display
show_newest: bool
flag to show newest articles first
sources: str
sources to exclusively show news from
"""
link = (
f"https://newsapi.org/v2/everything?q={term}&from={s_from}&sortBy=publishedAt&language=en"
f"&apiKey={cfg.API_NEWS_TOKEN}"
)
if sources:
link += f"&domains={sources}"
response = requests.get(link)
# Check that the API response was successful
if response.status_code == 426:
console.print(f"Error in request: {response.json()['message']}", "\n")
elif response.status_code != 200:
console.print(
f"Error in request {response.status_code}. Check News API token", "\n"
)
else:
console.print(
f"{response.json()['totalResults']} news articles for {term} were found since {s_from}\n"
)
if show_newest:
articles = response.json()["articles"]
else:
articles = response.json()["articles"][::-1]
articles = newsapi_model.get_news(term, s_from, show_newest, sources)
if articles:
for idx, article in enumerate(articles):
console.print(
article["publishedAt"].replace("T", " ").replace("Z", ""),

View File

@@ -966,7 +966,7 @@ def display_line(
else:
text_loc = (0, 10)
ax.annotate(
str(n),
str(n + 1),
(mdates.date2num(marker_date), data.iloc[price_location_idx]),
xytext=text_loc,
textcoords="offset points",
@@ -975,7 +975,7 @@ def display_line(
marker_date,
data.iloc[price_location_idx],
color="#00AAFF",
s=200,
s=100,
)
ax.set_xlim(data.index[0], data.index[-1])

View File

@@ -103,13 +103,12 @@ class DefiController(BaseController):
def print_help(self):
"""Print help"""
help_text = """[cmds]
[info]Overview:[/info]
newsletter Recent DeFi related newsletters [src][Substack][/src]
dpi DeFi protocols listed on DefiPulse [src][Defipulse][/src]
funding Funding rates - current or last 30 days average [src][Defirate][/src]
borrow DeFi borrow rates - current or last 30 days average [src][Defirate][/src]
lending DeFi ending rates - current or last 30 days average [src][Defirate][/src]
vaults Top DeFi Vaults on different blockchains [src][[Coindix][/src]
vaults Top DeFi Vaults on different blockchains [src][Coindix][/src]
[src][The Graph][/src] [info]Uniswap[/info]
tokens Tokens trade-able on Uniswap
stats Base statistics about Uniswap
@@ -122,8 +121,8 @@ class DefiController(BaseController):
stvl Displays historical values of the total sum of TVLs from all dApps
dtvl Displays historical total value locked (TVL) by dApp
[src][Terra Engineer][/src]
aterra Displays 30-day history of specified asset in terra address [src][Terra Engineer][/src]
ayr Displays 30-day history of anchor yield reserve [src][Terra Engineer][/src]
aterra Displays 30-day history of specified asset in terra address
ayr Displays 30-day history of anchor yield reserve
[src][Terra FCD][/src]
sinfo Displays staking info for provided terra account address
validators Displays information about terra blockchain validators
@@ -131,7 +130,6 @@ class DefiController(BaseController):
gacc Displays terra blockchain account growth history
sratio Displays terra blockchain staking ratio history
sreturn Displays terra blockchain staking returns history
[src][Smartstake][/src]
lcsc Displays Luna circulating supply changes[/cmds]
"""

View File

@@ -112,7 +112,6 @@ def display_fred_series(
],
axis=1,
)
data = data.dropna()
# Try to get everything onto the same 0-10 scale.
# To do so, think in scientific notation. Divide the data by whatever the E would be
if external_axes is None:

View File

@@ -7,7 +7,8 @@ from gamestonk_terminal.helper_classes import ModelsNamespace as _models
# Context menus
from gamestonk_terminal.stocks.stocks_helper import display_candle as candle
from gamestonk_terminal.common.newsapi_view import news
from gamestonk_terminal.common.newsapi_view import display_news
from gamestonk_terminal.common.newsapi_model import get_news
from .financedatabase_view import display_etf_by_name as ln
from .financedatabase_view import display_etf_by_description as ld
from .stockanalysis_view import view_overview as overview

View File

@@ -413,7 +413,7 @@ class ETFController(BaseController):
d_stock = yf.Ticker(self.etf_name).info
newsapi_view.news(
newsapi_view.display_news(
term=d_stock["shortName"].replace(" ", "+")
if "shortName" in d_stock
else self.etf_name,

View File

@@ -9,6 +9,7 @@ import os
import random
import re
import sys
from difflib import SequenceMatcher
import pytz
import pandas as pd
from rich.table import Table
@@ -48,6 +49,25 @@ def log_and_raise(error: Union[argparse.ArgumentTypeError, ValueError]) -> None:
raise error
def similar(a: str, b: str) -> float:
"""
Return a similarity float between string a and string b
Parameters
----------
a: str
string a
b: str
string b
Returns
-------
float:
Ratio of similarity between two strings
"""
return SequenceMatcher(None, a, b).ratio()
def print_rich_table(
df: pd.DataFrame,
show_index: bool = False,

View File

@@ -52,7 +52,7 @@ class DegiroView:
@log_start_end(log=logger)
def help_display():
console.print(
"\nDegiro:\n"
"\n[cmds]"
" login connect to degiro's api\n"
" logout disconnect from degiro's api\n"
"\n"
@@ -66,7 +66,7 @@ class DegiroView:
"\n"
" companynews view news about a company with it's isin\n"
" lastnews view latest news\n"
" topnews view top news preview\n"
" topnews view top news preview[/cmds]\n"
)
@log_start_end(log=logger)

View File

@@ -55,9 +55,6 @@ from gamestonk_terminal.common.behavioural_analysis.twitter_view import (
from gamestonk_terminal.common.behavioural_analysis.finbrain_view import (
display_sentiment_analysis as headlines,
)
from gamestonk_terminal.common.behavioural_analysis.finnhub_view import (
display_sentiment_stats as stats,
)
from gamestonk_terminal.common.behavioural_analysis.sentimentinvestor_view import (
display_historical as hist,
)
@@ -65,3 +62,7 @@ from gamestonk_terminal.common.behavioural_analysis.sentimentinvestor_view impor
from gamestonk_terminal.common.behavioural_analysis.sentimentinvestor_view import (
display_trending as trend,
)
from gamestonk_terminal.stocks.behavioural_analysis.finnhub_view import (
display_stock_price_headlines_sentiment as snews,
)

View File

@@ -11,13 +11,13 @@ from prompt_toolkit.completion import NestedCompleter
from gamestonk_terminal import feature_flags as gtff
from gamestonk_terminal.common.behavioural_analysis import (
finbrain_view,
finnhub_view,
google_view,
reddit_view,
sentimentinvestor_view,
stocktwits_view,
twitter_view,
)
from gamestonk_terminal.stocks.behavioural_analysis import finnhub_view
from gamestonk_terminal.decorators import log_start_end
from gamestonk_terminal.helper_funcs import (
EXPORT_BOTH_RAW_DATA_AND_FIGURES,
@@ -59,11 +59,11 @@ class BehaviouralAnalysisController(StockBaseController):
"queries",
"rise",
"headlines",
"stats",
"popular",
"getdd",
"hist",
"trend",
"snews",
]
historical_sort = ["date", "value"]
@@ -93,7 +93,7 @@ class BehaviouralAnalysisController(StockBaseController):
[src][Finbrain][/src]
headlines sentiment from 15+ major news headlines
[src][Finnhub][/src]
stats sentiment stats including comparison with sector{has_ticker_end}
snews stock price displayed over sentiment of news headlines{has_ticker_end}
[src][Reddit][/src]
wsb show what WSB gang is up to in subreddit wallstreetbets
watchlist show other users watchlist
@@ -117,7 +117,6 @@ class BehaviouralAnalysisController(StockBaseController):
[src][SentimentInvestor][/src]
trend most talked about tickers within the last hour{has_ticker_start}
hist plot historical RHI and AHI data by hour{has_ticker_end}[/cmds]
"""
console.print(text=help_text, menu="Stocks - Behavioural Analysis")
@@ -145,6 +144,23 @@ class BehaviouralAnalysisController(StockBaseController):
if ns_parser:
reddit_view.display_watchlist(num=ns_parser.limit)
@log_start_end(log=logger)
def call_snews(self, other_args: List[str]):
"""Process snews command"""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
prog="snews",
description="""Display stock price and headlines sentiment using VADER model over time. [Source: Finnhub]""",
)
ns_parser = parse_known_args_and_warn(
parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES
)
if ns_parser:
finnhub_view.display_stock_price_headlines_sentiment(
ticker=self.ticker, export=ns_parser.export
)
@log_start_end(log=logger)
def call_spac(self, other_args: List[str]):
"""Process spac command"""
@@ -667,30 +683,6 @@ class BehaviouralAnalysisController(StockBaseController):
else:
console.print("No ticker loaded. Please load using 'load <ticker>'\n")
@log_start_end(log=logger)
def call_stats(self, other_args: List[str]):
"""Process stats command"""
parser = argparse.ArgumentParser(
add_help=False,
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
prog="stats",
description="""
Sentiment stats which displays buzz, news score, articles last week, articles weekly average,
bullish vs bearish percentages, sector average bullish percentage, and sector average news score.
[Source: https://finnhub.io]
""",
)
ns_parser = parse_known_args_and_warn(
parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES
)
if ns_parser:
if self.ticker:
finnhub_view.display_sentiment_stats(
ticker=self.ticker, export=ns_parser.export
)
else:
console.print("No ticker loaded. Please load using 'load <ticker>'\n")
@log_start_end(log=logger)
def call_hist(self, other_args: List[str]):
"""Process hist command"""

View File

@@ -0,0 +1,83 @@
""" Finnhub Model """
__docformat__ = "numpy"
import logging
from datetime import datetime
from typing import List, Dict
import finnhub
import pandas as pd
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
from gamestonk_terminal import config_terminal as cfg
from gamestonk_terminal.decorators import log_start_end
from gamestonk_terminal.helper_funcs import similar
from gamestonk_terminal.rich_config import console
logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def get_company_news(
ticker: str,
s_start: str,
s_end: str,
) -> List[Dict]:
"""Get news from a company. [Source: Finnhub]
Parameters
----------
ticker : str
company ticker to look for news articles
s_start: str
date to start searching articles, with format YYYY-MM-DD
s_end: str
date to end searching articles, with format YYYY-MM-DD
Returns
----------
articles : List
term to search on the news articles
"""
try:
finnhub_client = finnhub.Client(api_key=cfg.API_FINNHUB_KEY)
articles = finnhub_client.company_news(ticker.upper(), _from=s_start, to=s_end)
return articles
except Exception as e:
console.print(f"[red]{e}\n[/red]")
return [{}]
@log_start_end(log=logger)
def process_news_headlines_sentiment(
articles: List[Dict],
) -> pd.DataFrame:
"""Process news headlines sentiment of a company using a VADER model.
Parameters
----------
articles : List[Dict]
list of articles with `headline` and `datetime` keys
Returns
----------
pd.DataFrame
Headlines sentiment using VADER model over time
"""
l_datetime = list()
l_compound = list()
if articles and len(articles) > 1:
analyzer = SentimentIntensityAnalyzer()
last_headline = ""
for article in articles:
# allows to discard news with similar headline
if similar(last_headline, article["headline"].upper()) < 0.7:
l_compound.append(
analyzer.polarity_scores(article["headline"])["compound"]
)
l_datetime.append(datetime.fromtimestamp(article["datetime"]))
last_headline = article["headline"].upper()
return pd.DataFrame(l_compound, index=l_datetime).sort_index()

View File

@@ -0,0 +1,129 @@
""" Finnhub View """
__docformat__ = "numpy"
import logging
import os
from datetime import datetime, timedelta
from typing import Optional, List
import numpy as np
import pandas as pd
import yfinance as yf
from matplotlib import pyplot as plt
from gamestonk_terminal.stocks.behavioural_analysis import finnhub_model
from gamestonk_terminal.decorators import log_start_end
from gamestonk_terminal.config_terminal import theme
from gamestonk_terminal.config_plot import PLOT_DPI
from gamestonk_terminal.helper_funcs import (
export_data,
plot_autoscale,
)
from gamestonk_terminal.rich_config import console
logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_stock_price_headlines_sentiment(
ticker: str,
export: str = "",
external_axes: Optional[List[plt.Axes]] = None,
):
"""Display stock price and headlines sentiment using VADER model over time. [Source: Finnhub]
Parameters
----------
ticker : str
Ticker of company
export: str
Format to export data
external_axes : Optional[List[plt.Axes]], optional
External axes (1 axis is expected in the list), by default None
"""
start = datetime.now() - timedelta(days=30)
articles = finnhub_model.get_company_news(
ticker.upper(),
s_start=start.strftime("%Y-%m-%d"),
s_end=datetime.now().strftime("%Y-%m-%d"),
)
sentiment = finnhub_model.process_news_headlines_sentiment(articles)
if not sentiment.empty:
sentiment_data = [item for sublist in sentiment.values for item in sublist]
df_stock = yf.download(
ticker,
start=min(sentiment.index).to_pydatetime().date(),
interval="15m",
prepost=True,
progress=False,
)
if not df_stock.empty:
# This plot has 1 axis
if external_axes is None:
_, ax = plt.subplots(
figsize=plot_autoscale(),
dpi=PLOT_DPI,
nrows=2,
ncols=1,
sharex=True,
gridspec_kw={"height_ratios": [2, 1]},
)
else:
if len(external_axes) != 1:
logger.error("Expected list of one axis item.")
console.print("[red]Expected list of one axis item./n[/red]")
return
(ax,) = external_axes
ax[0].set_title(f"Headlines sentiment and {ticker} price")
for uniquedate in np.unique(df_stock.index.date):
ax[0].plot(
df_stock[df_stock.index.date == uniquedate].index,
df_stock[df_stock.index.date == uniquedate]["Adj Close"].values,
c="#FCED00",
)
ax[0].set_ylabel("Stock Price")
theme.style_primary_axis(ax[0])
theme.style_primary_axis(ax[1])
ax[1].plot(
sentiment.index,
pd.Series(sentiment_data)
.rolling(window=5, min_periods=1)
.mean()
.values,
c="#FCED00",
)
ax[1].bar(
sentiment[sentiment.values >= 0].index,
[
item
for sublist in sentiment[sentiment.values >= 0].values
for item in sublist
],
color=theme.up_color,
width=0.01,
)
ax[1].bar(
sentiment[sentiment.values < 0].index,
[
item
for sublist in sentiment[sentiment.values < 0].values
for item in sublist
],
color=theme.down_color,
width=0.01,
)
ax[1].yaxis.set_label_position("right")
ax[1].set_ylabel("Headline Sentiment")
if external_axes is None:
theme.visualize_output()
export_data(
export, os.path.dirname(os.path.abspath(__file__)), "snews", sentiment
)

View File

@@ -116,7 +116,7 @@ def view_historical_greeks(
export: str = "",
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots historical greeks for a given option
"""Plots historical greeks for a given option. [Source: Syncretism]
Parameters
----------
@@ -157,7 +157,6 @@ def view_historical_greeks(
return
(ax,) = external_axes
# Theo I am sorry but I don't know how to get different line colors and move the delta
im1 = ax.plot(df.index, df[greek], label=greek.title(), color=theme.up_color)
ax.set_ylabel(greek)
ax1 = ax.twinx()

View File

@@ -3,7 +3,8 @@
# pylint: disable=unused-import
# Context root level functions
from gamestonk_terminal.common.newsapi_view import news
from gamestonk_terminal.common.newsapi_view import display_news
from gamestonk_terminal.common.newsapi_model import get_news
from .stocks_helper import load, process_candle, search, quote
from .stocks_helper import display_candle as candle

View File

@@ -26,7 +26,7 @@ from gamestonk_terminal.parent_classes import StockBaseController
from gamestonk_terminal.rich_config import console
from gamestonk_terminal.stocks import stocks_helper
# pylint: disable=R1710,import-outside-toplevel
# pylint: disable=R1710,import-outside-toplevel,R0913,R1702
logger = logging.getLogger(__name__)
@@ -264,7 +264,6 @@ Stock: [/param]{stock_text}
mov_avgs = []
if ns_parser.mov_avg:
mov_list = (num for num in ns_parser.mov_avg.split(","))
for num in mov_list:
@@ -272,7 +271,7 @@ Stock: [/param]{stock_text}
mov_avgs.append(int(num))
except ValueError:
console.print(
f"{num} is not valid moving average, must be integer"
f"{num} is not a valid moving average, must be integer"
)
stocks_helper.display_candle(
@@ -301,13 +300,13 @@ Stock: [/param]{stock_text}
""",
)
parser.add_argument(
"-n",
"--num",
"-l",
"--limit",
action="store",
dest="n_num",
dest="limit",
type=check_positive,
default=5,
help="Number of latest news being printed.",
help="Limit of latest news being printed.",
)
parser.add_argument(
"-d",
@@ -333,7 +332,8 @@ Stock: [/param]{stock_text}
nargs="+",
help="Show news only from the sources specified (e.g bbc yahoo.com)",
)
if other_args and "-" not in other_args[0][0]:
other_args.insert(0, "-l")
ns_parser = parse_known_args_and_warn(parser, other_args)
if ns_parser:
sources = ns_parser.sources
@@ -343,11 +343,11 @@ Stock: [/param]{stock_text}
d_stock = yf.Ticker(self.ticker).info
newsapi_view.news(
newsapi_view.display_news(
term=d_stock["shortName"].replace(" ", "+")
if "shortName" in d_stock
else self.ticker,
num=ns_parser.n_num,
num=ns_parser.limit,
s_from=ns_parser.n_start_date.strftime("%Y-%m-%d"),
show_newest=ns_parser.n_oldest,
sources=",".join(sources),

View File

@@ -35,7 +35,7 @@ from gamestonk_terminal.rich_config import console
logger = logging.getLogger(__name__)
# pylint: disable=no-member,too-many-branches,C0302
# pylint: disable=no-member,too-many-branches,C0302,R0913
INTERVALS = [1, 5, 15, 30, 60]
SOURCES = ["yf", "av", "iex"]
@@ -289,7 +289,7 @@ def display_candle(
Flag for intraday data for plotly range breaks
add_trend: bool
Flag to add high and low trends to chart
mov_avg: Tuple[int]
ma: Tuple[int]
Moving averages to add to the candle
asset_type_: str
String to include in title
@@ -526,7 +526,6 @@ def display_candle(
)
fig.show(config=dict({"scrollZoom": True}))
console.print("")
def quote(other_args: List[str], s_ticker: str):

17
poetry.lock generated vendored
View File

@@ -830,6 +830,17 @@ category = "main"
optional = false
python-versions = "*"
[[package]]
name = "finnhub-python"
version = "2.4.10"
description = "Finnhub API"
category = "main"
optional = false
python-versions = "*"
[package.dependencies]
requests = ">=2.22.0"
[[package]]
name = "finviz"
version = "1.4.3"
@@ -3988,7 +3999,7 @@ prediction = ["tensorflow"]
[metadata]
lock-version = "1.1"
python-versions = "^3.8,<3.10"
content-hash = "9c4b1ab073be95f2bbabdc2c1309ec600cf0fe5309a00f35a7d927eecd4c12a9"
content-hash = "5627f70eca6b911461177c361ec7374f5f3576c96dbc9052887ab0c7749b4e5a"
[metadata.files]
absl-py = [
@@ -4557,6 +4568,10 @@ financedatabase = [
{file = "financedatabase-1.0.2-py3-none-any.whl", hash = "sha256:2fbe8acea1a12d2e3371c81b075f357f61f34cae5e6d94de9b3afd68ff3c3a19"},
{file = "financedatabase-1.0.2.tar.gz", hash = "sha256:7b03d37ef5eef8433380d92122f2fd24bad741971518eaf1bd4a9c6f30763e23"},
]
finnhub-python = [
{file = "finnhub-python-2.4.10.tar.gz", hash = "sha256:5be38a649ad2e81f1aaa41375d7870b1dec0e6f64055813b3d30e4e534222b8f"},
{file = "finnhub_python-2.4.10-py3-none-any.whl", hash = "sha256:6bc25e57aabb942fa6a62bc95cd4451a3f974ed71a27b4b2e5fab54d85003a51"},
]
finviz = [
{file = "finviz-1.4.3.tar.gz", hash = "sha256:26e15a4c0ffbff2fa9bc04b588f2edaf33caa7e7344e5f64e74437ea98641943"},
]

1
pyproject.toml vendored
View File

@@ -86,6 +86,7 @@ disnake = {version = "^2.3.0", optional = true}
PyNaCl = {version = "^1.5.0", optional = true}
ascii-magic = "^1.6"
squarify = "^0.4.3"
finnhub-python = "^2.4.10"
[tool.poetry.dev-dependencies]

View File

@@ -62,6 +62,7 @@ fear-greed-index==0.1.4; python_version >= "3.7"
ffn==0.3.6; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
filelock==3.6.0; python_version >= "3.7" and python_full_version >= "3.6.1"
financedatabase==1.0.2
finnhub-python==2.4.10
finviz==1.4.3
finvizfinance==0.9.10; python_version >= "3.5"
flake8==3.9.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")

1
requirements.txt vendored
View File

@@ -50,6 +50,7 @@ executing==0.8.2; python_version >= "3.8"
fear-greed-index==0.1.4; python_version >= "3.7"
ffn==0.3.6; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
financedatabase==1.0.2
finnhub-python==2.4.10
finviz==1.4.3
finvizfinance==0.9.10; python_version >= "3.5"
fonttools==4.29.1; python_version >= "3.7"

View File

@@ -1,11 +1,10 @@
Overview:
newsletter Recent DeFi related newsletters [Substack]
dpi DeFi protocols listed on DefiPulse [Defipulse]
funding Funding rates - current or last 30 days average [Defirate]
borrow DeFi borrow rates - current or last 30 days average [Defirate]
lending DeFi ending rates - current or last 30 days average [Defirate]
vaults Top DeFi Vaults on different blockchains [[Coindix]
vaults Top DeFi Vaults on different blockchains [Coindix]
[The Graph] Uniswap
tokens Tokens trade-able on Uniswap
stats Base statistics about Uniswap
@@ -18,8 +17,8 @@ Overview:
stvl Displays historical values of the total sum of TVLs from all dApps
dtvl Displays historical total value locked (TVL) by dApp
[Terra Engineer]
aterra Displays 30-day history of specified asset in terra address [Terra Engineer]
ayr Displays 30-day history of anchor yield reserve [Terra Engineer]
aterra Displays 30-day history of specified asset in terra address
ayr Displays 30-day history of anchor yield reserve
[Terra FCD]
sinfo Displays staking info for provided terra account address
validators Displays information about terra blockchain validators
@@ -27,7 +26,6 @@ Overview:
gacc Displays terra blockchain account growth history
sratio Displays terra blockchain staking ratio history
sreturn Displays terra blockchain staking returns history
[Smartstake]
lcsc Displays Luna circulating supply changes

View File

@@ -8,23 +8,26 @@ interactions:
- gzip, deflate
Connection:
- keep-alive
User-Agent:
- python-requests/2.27.1
method: GET
uri: https://data.nasdaq.com/api/v3/datasets/ECONOMIST/BIGMAC_VNM?api_key=MOCK_API_KEY&column_index=3
response:
body:
string: !!binary |
H4sIAAAAAAAAA21Uy27bMBD8FYJn2+BDfOnWJkXhg5NDjBxaBAYj0TZRvUpKTowg/96lI9lOEUA+
2LOzszO71hsubW+j63H+hn2Jc8a0pCSTswnYFG3pcI6/L3+uvt1sHu9W+AN7BtoE/ri5v7tfLR/W
gDW2PtX7HVrZAi2b0r2iOXr0rgcokV0sgu963zZQt9479LnWR2Qb5JttG2pbodrZOASH2i0qhhBc
UxyRey32ttk5FGzvoLxHXdct0LKfqiPq984HdLDV4JDdWd/EHlkUfe0rGxAM/8f1qeeubcskWKLo
wsEXLs5AG+gwRgEWgTSOt0C3frt1wTc71IVUmYRrG1Kn/yZ6aYeqRL7uqiO0grK2cZfxofUAsQTU
wnMA2TRluYBsgtsGF/eu3FhYCWaEsTmhcyrWhOTwMLUwXP1KMbsXF/uNPVgw9Fy5DSwy5Q4UOidq
zikUtRWE/WURzc5FRVsNdbNJe4s4/41vUyNYU1tBUpuTU/w0wzDY3yGlDyIliB6hpj92SXPta4ce
IBloMMNdcLUfapxvbRXdDFeQOZhphqoCRrBNTJudfhjVfToTnPMZjr0N/cXN1aCuKb90mU4YBv/9
yTtbGCOZVowYzpRQT7MJp6ds2AIOXRKWGcWNFtmIkykWwDPFNKPcKCXkxAf8zM+UUlwIrQU35oNP
zYWvjEqNBcnO8gk+0wnVWWaIokTTka2v1BllGVWaZIzIC3w1vNGSQQsuJlhd2JIbbhh8JOPTaABP
bCk0eBeCaaNG51ResQ0RmhlhZEb5qA3wma2IYBkxhAs25kLFlW9BCaeSSy25HtkAX3wDBJ4FZXJq
fj5GSJ1Jqg0XGdD1E9wdHEhluwh39nFBbYB/zvQlrf70IkrvLsE5eX//B27vTLnTBAAA
H4sIAAAAAAAAA21Uy24iMRD8FctnQH6MX9x2k9WKA8khKIeNIuTMGLB2XmvPkKAo/75tYBgSRYID
VFVXV3fPvOPCdja6Ds/fsS/wnDEtKcnkZADWeVM4PMc/F7+XP27Wj3dLfMJeQDaAv27u7+6Xi4cV
YLWtjny/RUubo0VduDc0RY/edQAlsYt58G3nmxp4q51Dn7k+IlsjX2+aUNkSVc7GPjjUbFDeh+Dq
/IDcW76z9dahYDsH9A61bTtDi25gR9TtnA9ob8veIbu1vo4dsij6ypc2IGj+r+tSzW3TFMmwQNGF
vc9dnIA3yKGNHCKC6NzeDN36zcYFX29RGxIzGVc2pEpfOnpt+rJAvmrLA5QCWlO7sX0o3cNYAmrg
swfb1GUxg9kEtwku7lyxtrASzAhjU8KmVKwImcOHihmn5E8as3t1sVvbvYVAL6VbwyLT3E8SOuUU
SE0Jw/6WRLMpUSdS3pR9Va/T3iKeP+HbVAjW1JQwqfUxKX6eYGjsX5+mDyYFmB6A0x3a5LnylUMP
MBkoMMFtcJXvKzzf2DK6CS5h5hCm7ssSFMHWMW12+OPs7tOZ4Dmf4NjZ0I1prhp1dfFtynTC0PjT
p+x8BlfMhZJUaJOR7HlyxOkQm82MkUwrRgxnSqgRP82OzeBBkIRlRnGjxaAno15nimlGuVFKyEEP
+EWfKaW4EFoLbsypPjWjXhmVCguSXewTfJETqrPMEEWJpme1vnJnlGVUaZIxIkf4qnmjJYMSXAyw
GtWSG24YfCXjQ2sAD2opNGQXgmmjzsmpvFIbIjQzwsiM8rM3wBe1IoJlxBAu2HkuVFzlFpRwKrnU
kuuzGuAxN0CQWVAmh+KXY4WtMEm14SIDuX6Gu4QDKm0b4Q5PF9YEeLKGH+k0ji+q9G4TnJOPj/+g
l/r48wQAAA==
headers:
Access-Control-Allow-Credentials:
- 'true'
@@ -47,15 +50,15 @@ interactions:
Content-Encoding:
- gzip
Content-Length:
- '678'
- '691'
Content-Security-Policy:
- frame-ancestors 'self';
Content-Type:
- application/json; charset=utf-8
Date:
- Mon, 24 Jan 2022 18:27:54 GMT
- Thu, 03 Mar 2022 15:58:30 GMT
ETag:
- W/"213829aa5f7d40ef9cfb801209d06212"
- W/"d3fbeb372e3105853a66dc23f7077d59"
Pragma:
- no-cache
Referrer-Policy:
@@ -63,10 +66,10 @@ interactions:
Server:
- openresty
Set-Cookie:
- visid_incap_2170999=H3u2wO7WQKuKN8N/iywt3qnv7mEAAAAAQUIPAAAAAAASn1+FT7/6mlILYAo3V2OW;
expires=Tue, 24 Jan 2023 09:00:57 GMT; HttpOnly; path=/; Domain=.nasdaq.com
- nlbi_2170999=LaImQMkIj3aoGLuAKj7S7QAAAAAJCtSqmyubCBXkwldUQXNP; path=/; Domain=.nasdaq.com
- incap_ses_891_2170999=F+8uPyS6ImB32wM9THhdDKnv7mEAAAAAsyeqIsmJAOjK5fObYw0UAw==;
- visid_incap_2170999=e/6oNgBHR7CvOerhN9k2jqHlIGIAAAAAQUIPAAAAAAACaa46anfOur19ybA3pWv6;
expires=Fri, 03 Mar 2023 15:44:50 GMT; HttpOnly; path=/; Domain=.nasdaq.com
- nlbi_2170999=4Sm5LxmHKg2yuNzoKj7S7QAAAAC9GGQ7HEP/OB6FHrJy+HSS; path=/; Domain=.nasdaq.com
- incap_ses_1346_2170999=ncY/NGPj3mmA7KXPRPStEqXlIGIAAAAAxvLXCLJ/Do5+CIatFJH48g==;
path=/; Domain=.nasdaq.com
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
@@ -77,16 +80,16 @@ interactions:
X-Frame-Options:
- SAMEORIGIN
X-Iinfo:
- 10-29222217-29222237 NNNN CT(2 39 0) RT(1643048873176 130) q(0 0 0 -1) r(2
- 9-7623695-7623708 NNNY CT(1023 208 0) RT(1646323109240 111) q(0 0 0 2) r(2
2) U2
X-RateLimit-Limit:
- '50000'
X-RateLimit-Remaining:
- '49996'
- '49993'
X-Request-Id:
- 640de875-e76a-42bf-bb28-c9607f0a5896
- e4b156f9-4a65-4679-b1e6-75aa426f3688
X-Runtime:
- '0.139344'
- '0.141636'
X-XSS-Protection:
- 1; mode=block
status:
@@ -101,28 +104,30 @@ interactions:
- gzip, deflate
Connection:
- keep-alive
User-Agent:
- python-requests/2.27.1
method: GET
uri: https://data.nasdaq.com/api/v3/datasets/ECONOMIST/BIGMAC_ARG?api_key=MOCK_API_KEY&column_index=3
response:
body:
string: !!binary |
H4sIAAAAAAAAA21VXW/bOBD8K4SebWH5Lfot1x6KPOQKXPN0RWGwFu0Ipw8fJacNiv73G1pk3BYF
nADm7OzOzi7pb1XrFz+Hpdp9q7q22jlrjeFqU873h6kN1a764/7dw92b/d3f76oV+wxWAf988/6v
9w/3Hx6BjX64xncn9uAP7H5sw1e2ZXfxFMalG32ih/kQu/PSTSMiH58C+zm6m5kfWTcepzj4ng3B
z5cY2HRkh0uMYTy8sPD18OTHU2DRLwHhCzufzzW7X0r0zJan0EX27PtLYP7ku3FemGdzN3S9jwzy
/w1LynmapjYVbNkc4nN3CPMGtUGHjAOaBCnLq9nb7ngMsRtP7BxTZCo8+Jgy/aLoy3TpW9YN5/4F
qRA2jeEmH6kvMCayCZ9nlE0q2xrexHCMYX4K7d5jJpUgIbbEt1w/Eu3wEbZ20v6TjA5fwrzs/bNH
Q5/7sMckk/Og8C3ZreQImnqY/dsgoi2prSQEHab+Moz7NLm52n2s3qZEGNPUw6n9tdPq06aCsP8u
yX0UaVH0BTHLyznVfOyGwD7AGSTYVOcYhu4yVLuj7+ewqXp4jmbGS9+DEf04p8mWg1y9S4tS7eSm
mhcfl1s3PwgNY/vbLtMOQ/jHn3qXtVPKcGe4Mc5y82lTcH71RtZWNUJySVJqaWXGYcvqnaw1OSGF
ks4IrfgNX/mibpRpGqtIctJOrTh3hQ/ckiYlLdfS3dDCJhKKRNNIZSgn582NDC6XzhqttdKZDbho
d4ag6/pXKttCVjUXWkvFyUlhbCYDLmTolo6k5to0BTa3vqWyjSKjhG10SQ64CJeNs4QCSikrcnJ9
Y5OBcEUuGV/aBlxqCy1Iln+ZrW5ta0vWCmsErCttAy5sQldITlY3Ok+My1vtxjpHIHOhbPEUcGE3
3GInpEzdl8ZwvdZ5wzVDzkjtki15Xfj19qV1UbWRxpAhUopUk5W/3jRVI6mBXwK4Lab+uEy6cUqT
sARrMhvwmpxjl0SDYWFReVlFel0lWRNOG4GFVUrkxgjbYK4XWNaYlWusUA5DycrRVYZFbdAPWUyL
o/haO8FloMaSwxrCVPFaG/PW175FLRwJ4uBipQr7dR14rTVJI4TTvCkoxr0q4zANt8cKIq1FHhie
nZyb18VIwpTW1whnWSGsX4+ottlvSM5nos7bcXse0hGeKbwnvT/PeJbWB2eKeGjLl/RSXH+50m+d
lpK+f/8f4KOrOAMHAAA=
H4sIAAAAAAAAA21Vy47bOBD8FUJnW2i+Sd9mk0Uwh9kAmzltEBiMRXuE1cMryZMMgvz7Fi1ynAQB
bANmdXVXV7eob1UTljDHpdp9q9qm2nlrjeFqU873h7GJ1a764/7dw92b/d3f76oV+wxWAf988/6v
9w/3Hx6BDaG/xrcn9hAO7H5o4le2ZXfTKQ5LO4REj/Nhas9LOw6IfHyK7OfodmZhYO1wHKc+dKyP
Yb5MkY1HdrhMUxwOLyx+PTyF4RTZFJaI8IWdz+ea3S8lembLU2wn9hy6S2ThFNphXlhgc9u3XZgY
5P8bl5TzNI5NKtiwOU7P7SHOG9QGHTIOaBKkLK9mb9vjMU7tcGLnKUWmwn2YUqZfFH0ZL13D2v7c
vSAVwsYh3uQj9QXGTGzE5xllk8qmhjdTPE5xforNPmAmlSAhtiS2XD8S7fDhupac/klGxy9xXvbh
OaChz13cY5LJ+ZXCt5IjaOxg9m+DiLaktpIQdBi7Sz/s0+TmavexepsSYUxjB6f2106rT5sKwv67
JPdRpEHRF8QsL+dU87HtI/sAZ5BgU52n2LeXvtodQzfHTdXBczQzXLoOjCkMc5psOcjV27Qo1U5u
qnkJ03Lr5gehcWh+22XaYQj/+FPvqhZOkyIvBFfk+KfNFedbsldvZO2VMtwbboy33Nzw1TtZW+WE
5JKk1NLKjMO2wtfILYWS3gitSn7gK1/UThnnrCIMTHu18rkvfOCWIFBarqW/oYVNJBQJ56QylJNz
dyODy6W3RmutdGYDLtq9Iei6fktlW8iq5kJrqTh5KYzNZMCFDN3Sk9RcG1dgc+tbKusUGSWs0yU5
4CJcOm8JBZRSVuTk+sYmA+EYSzK+tA241BZakCw/ma1ubWtL1gprBKwrbQMubEJXSE5WO50nxuWt
trPeE8hcKFs8BVzYjlvshJSp+9IYHr913nDNkDdS+2RLXhcOeGWr2khjyBApRcpl5a/bpmokNfBL
ALfF1B+XSTuvNAlLsCazX3eJY5eEw7CwqLysIr2ukqwJp05gYZUSuTHCNpjrAy5rzMo7K5THULJy
dJVhURv0QxbT4ii+1k5wGaix5LGGMFW81sa89fUxErXwJIiDi5Uq7Nd14LXWJI0QXnNXUIx7VcZh
Gp4eK4i0FnlguJZybl4XIwlTWm8rnGWFsH49otpmvyE5n4k6b8ft+khHuMZw33ThPOPaWi+kccJF
XP6km+T6ZkvvQi0lff/+Py42B04jBwAA
headers:
Access-Control-Allow-Credentials:
- 'true'
@@ -145,15 +150,15 @@ interactions:
Content-Encoding:
- gzip
Content-Length:
- '926'
- '936'
Content-Security-Policy:
- frame-ancestors 'self';
Content-Type:
- application/json; charset=utf-8
Date:
- Mon, 24 Jan 2022 18:27:54 GMT
- Thu, 03 Mar 2022 15:58:31 GMT
ETag:
- W/"78ad4124a9a0a5a40d42035affcc280b"
- W/"496691ed60c585948e779aa3af9ff0cd"
Pragma:
- no-cache
Referrer-Policy:
@@ -161,10 +166,10 @@ interactions:
Server:
- openresty
Set-Cookie:
- visid_incap_2170999=pSLDYE0GQiqeWDC9vfZXd6rv7mEAAAAAQUIPAAAAAACoM6+JKkDyTKGeT6P8JlS8;
expires=Tue, 24 Jan 2023 09:00:56 GMT; HttpOnly; path=/; Domain=.nasdaq.com
- nlbi_2170999=xDEkcYxZ7xYyxB0VKj7S7QAAAABGzyhrwbiEA2c2AtuJD4Ru; path=/; Domain=.nasdaq.com
- incap_ses_891_2170999=9lbgCLRyvHRo3AM9THhdDKrv7mEAAAAApeelD1oTX5fEsyl70KVydQ==;
- visid_incap_2170999=e/6oNgBHR7CvOerhN9k2jqHlIGIAAAAAQUIPAAAAAAACaa46anfOur19ybA3pWv6;
expires=Fri, 03 Mar 2023 15:44:50 GMT; HttpOnly; path=/; Domain=.nasdaq.com
- nlbi_2170999=ABiyfZKY7lPRmrtIKj7S7QAAAAArrYC6JVNPrHr0ySRac20l; path=/; Domain=.nasdaq.com
- incap_ses_1346_2170999=MIJZKZaGV3CA7KXPRPStEqblIGIAAAAAdAbUADFV715NEyL4fWi0kg==;
path=/; Domain=.nasdaq.com
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
@@ -175,16 +180,15 @@ interactions:
X-Frame-Options:
- SAMEORIGIN
X-Iinfo:
- 4-17251222-17251230 NNNN CT(2 1 0) RT(1643048873720 136) q(0 0 0 -1) r(2 2)
U2
- 10-10125631-10125498 PNNy RT(1646323109689 368) q(0 0 0 0) r(1 1) U2
X-RateLimit-Limit:
- '50000'
X-RateLimit-Remaining:
- '49995'
- '49992'
X-Request-Id:
- 88ac730d-6f63-4b26-ada9-f7175c487126
- fd0e09da-1b9c-4232-9868-65188ac363a7
X-Runtime:
- '0.137028'
- '0.127307'
X-XSS-Protection:
- 1; mode=block
status:
@@ -199,26 +203,28 @@ interactions:
- gzip, deflate
Connection:
- keep-alive
User-Agent:
- python-requests/2.27.1
method: GET
uri: https://data.nasdaq.com/api/v3/datasets/ECONOMIST/BIGMAC_AUS?api_key=MOCK_API_KEY&column_index=3
response:
body:
string: !!binary |
H4sIAAAAAAAAA21VyW7bMBT8FYJnW+BO0bd0QZFD2kPSS4vAYCXaIaqtpJQ2KPrvfbREySlqGAHy
5s1bZkj6N67taKMb8eE39jU+GK2VonKX48eqrx0+4De3H+5u3h5vPt/jGfsGrAy+f/vp46e72/sH
wDrbXvL9Gd3ZCt12tfuF9uhmimOwjbeJ7mIV/DD6voPMhyeHXmf7iGyHfHfqQ2sb1Dobp+BQf0LV
FILrqhfkflVPtjs7FOzoIH1EwzAU6HbM2RGNT84H9GybySF7tr6LI7Io+tY3NiAY/7sbU81z39ep
YY2iC8++cnEHvYEOY1SwJJCW8Qr0zp9OLvjujIaQMlPj1oZU6Z+JfvZTUyPfDs0LlIK0vnPb+FB6
AmEC6uH7DG3TlHUB2gR3Ci4+ufpowRPMCGN7QvdUPhBygC/TheH6SxLa/XRxPNpnCwt9a9wRnEzK
A4Xuid5zCkl9A2L/N4mQPRF7TiCp6pup7Y7JuYgPX/G7VAhs6htQ6njZFD/uMAz2Y0rqQ5Mamr5A
zvgypJ4PvnXoHpSBAjs8BNf6qcWHk22i2+EGNIdluqlpgBFsF5OzObB09+mg4APf4TjaMG7bXA3q
uvq/W6YzDIN/fbW7KLRhRjFh5s/jLuP0oo0oTCm0WMKgxiyZKKQuhSTLh254pglJ6Zqw4NRsfKYI
JXLmpXjmccmIyPHyqh+VguorIBM0UZTnuL4iMG3kVTznMy1pufRVWzonQvO1PgBzPi+04GqtIzOB
F4YxpnJ9iK8L0FKvi4mtQUkFCLI0hvgqlOZSsAzwjaCoKdUrZLWEgESZASc/e6JKQqVaWlxuxGIh
bJDD66kHZwXXbLGWrtbyouTKbFIDkKWAZw92Y9xQZhYeWS3lRaomwCVYk5t5CgIOqsv9AVgxqTkx
RlDJFhj8mmEG05Sa6uXvBs+9WaEZB3pJpCqlXmBwSV5WZIXgpVFGaEMpzcVXEwEWjApC4NFmWQmg
rr2F0TTZZmhJc3GwKBdnOQbuzK8BLZYjREDmHFK5MWicY+um60NCCyke4aGAG93YIcLDMF/5PsBT
l/9Jd/Xy25F+bSTn5M+fv8qSq5mFBgAA
H4sIAAAAAAAAA21VyW7bMBT8FYJnW+BO0bd0QZFD2kPSS4vAYCXaIaqtpJQ2KPrvfbREySlqGAb8
3sxbZijqN67taKMb8eE39jU+GK2VonKX48eqrx0+4De3H+5u3h5vPt/jOfcNWDn5/u2nj5/ubu8f
INfZ9oL3Z3RnK3Tb1e4X2qObKY7BNt4muotV8MPo+w6QD08OvUb7iGyHfHfqQ2sb1Dobp+BQf0LV
FILrqhfkflVPtjs7FOzoAD6iYRgKdDtmdETjk/MBPdtmcsiere/iiCyKvvWNDQjG/+7GVPPc93Vq
WKPowrOvXNxBb6DDGBUsCaRlvAK986eTC747oyEkZGrc2pAq/TPRz35qauTboXmBUgDrO7eND6Un
ECagHr7P0DZNWRegTXCn4OKTq48WPMGMMLYnbE/lAyEH+FJZcEq+JKHdTxfHo322sNC3xh3ByaT8
TKF7TgHUNyD2f0GE7InYcwKgqm+mtjsm5yI+fMXvUiGwqW9AqeNlU/y4wzDYjympD01qaPoCmPFl
SD0ffOvQPSgDBXZ4CK71U4sPJ9tEt8MNaA7LdFPTACPYLiZnc2Dp7tNBwQe+w3G0Ydy2uRrUdfV/
t0xnGAb/+mp3UUhiKCPLhz7uLnm6J/qijSi0YUYxYebPlp+1E4UphRZLGNTKNKlLIf8tC/lME5LS
FbC0pWbjM0UokXPdFM88LhkROV5e9aNSUH2VyARNFOU5rq8ITBt5Fc94piUtl75qg3MiNF/rQ2LG
80ILrtY6MhN4YRhjKteH+LoALfW6mNgalFSAIEtjiK9CaS4Fywm+ERQ1pXqVWS0hIFFmwJORPVEl
oVItLSC+4mGDHL5y3giu2WItXa3lRcmV2aRePYWVtYbdGIcDZRYeWS3lRaomwCVYk5t5CgIOqsvz
BWnFpObEGEElW9Lg15xmhRGlpnr53dLzDqzQjAO9JFKVUi9pcEleTjErBC+NMkIbSmkuvpoIacGo
IAQudZaVAOraWxhNk22GljQXB4tycZZj4M58W9BiOUJwK60hlRuDxhm2brpeNLSQ4hEuEnjiGztE
uDjmK6EPcBXmP+lZvrxb0ttIck7+/PkLjj1d2qUGAAA=
headers:
Access-Control-Allow-Credentials:
- 'true'
@@ -241,15 +247,15 @@ interactions:
Content-Encoding:
- gzip
Content-Length:
- '822'
- '830'
Content-Security-Policy:
- frame-ancestors 'self';
Content-Type:
- application/json; charset=utf-8
Date:
- Mon, 24 Jan 2022 18:27:55 GMT
- Thu, 03 Mar 2022 15:58:31 GMT
ETag:
- W/"24d7fd1a832d96feeba80de3265297b5"
- W/"7e8e49eff7b6210cb48a16a1c09da631"
Pragma:
- no-cache
Referrer-Policy:
@@ -257,10 +263,10 @@ interactions:
Server:
- openresty
Set-Cookie:
- visid_incap_2170999=60n1zTp/Q6eQz+cVdtxwRqrv7mEAAAAAQUIPAAAAAAAnXsLTUbYCcocoS/7HvABO;
expires=Tue, 24 Jan 2023 09:00:57 GMT; HttpOnly; path=/; Domain=.nasdaq.com
- nlbi_2170999=4JOQN5nmzD6rN2S5Kj7S7QAAAADMfvU76ylbSx9Gtv6G/abt; path=/; Domain=.nasdaq.com
- incap_ses_891_2170999=/y+qD+aQr1H+3AM9THhdDKrv7mEAAAAABknbLVGoeNsq6mjIKKB+3w==;
- visid_incap_2170999=e/6oNgBHR7CvOerhN9k2jqHlIGIAAAAAQUIPAAAAAAACaa46anfOur19ybA3pWv6;
expires=Fri, 03 Mar 2023 15:44:50 GMT; HttpOnly; path=/; Domain=.nasdaq.com
- nlbi_2170999=QepEIDeXQxnOhxSUKj7S7QAAAADjkrZbwmPS/C/50yeWQylI; path=/; Domain=.nasdaq.com
- incap_ses_1346_2170999=KB1Ec+rnUEyA7KXPRPStEqblIGIAAAAADx0Ksqh8rF9ukd8y6soKJQ==;
path=/; Domain=.nasdaq.com
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
@@ -271,16 +277,15 @@ interactions:
X-Frame-Options:
- SAMEORIGIN
X-Iinfo:
- 7-27921314-27921318 NNNY CT(2 12 0) RT(1643048874242 111) q(0 0 0 -1) r(2
2) U2
- 8-5288547-5288558 NNNY CT(1 6 0) RT(1646323110489 98) q(0 0 0 0) r(2 2) U2
X-RateLimit-Limit:
- '50000'
X-RateLimit-Remaining:
- '49994'
- '49991'
X-Request-Id:
- 05cbd069-9117-4a4b-9c41-f85639d35e45
- ce11c349-292c-4f87-b077-1f258c1cb92c
X-Runtime:
- '0.173050'
- '0.095326'
X-XSS-Protection:
- 1; mode=block
status:

View File

@@ -1,5 +1,6 @@
VNM ARG AUS
Date
2022-01-31 3.046358 4.285041 4.509120
2021-07-31 2.996287 3.944620 4.792962
2021-01-31 2.861602 3.748231 4.984740
2020-07-31 2.847282 3.509232 4.578450

View File

@@ -1,5 +1,6 @@
VNM ARG AUS
Date
2022-01-31 3.046358 4.285041 4.509120
2021-07-31 2.996287 3.944620 4.792962
2021-01-31 2.861602 3.748231 4.984740
2020-07-31 2.847282 3.509232 4.578450

View File

@@ -8,17 +8,14 @@ interactions:
- gzip, deflate
Connection:
- keep-alive
User-Agent:
- Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/39.0.2171.95 Safari/537.36
method: GET
uri: https://query2.finance.yahoo.com/v8/finance/chart/ARKW?period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2&interval=1d&includePrePost=False&events=div%2Csplits
uri: https://query2.finance.yahoo.com/v8/finance/chart/ARKW?events=div%2Csplits&includePrePost=False&interval=1d&period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2
response:
body:
string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"ARKW","exchangeName":"PCX","instrumentType":"ETF","firstTradeDate":1412083800,"regularMarketTime":1642694754,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":103.255,"chartPreviousClose":120.66,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","end":1642689000,"start":1642669200,"gmtoffset":-18000},"regular":{"timezone":"EST","end":1642712400,"start":1642689000,"gmtoffset":-18000},"post":{"timezone":"EST","end":1642726800,"start":1642712400,"gmtoffset":-18000}},"dataGranularity":"1d","range":"","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1639578600,1639665000,1639751400],"indicators":{"quote":[{"low":[115.37000274658203,116.48999786376953,114.55000305175781],"close":[121.55999755859375,117.88999938964844,121.55000305175781],"volume":[1503000,1292600,1459500],"open":[119.62999725341797,123.26000213623047,116.5],"high":[122.19999694824219,123.47000122070312,122.33999633789062]}],"adjclose":[{"adjclose":[118.27759552001953,114.70669555664062,118.26786804199219]}]}}],"error":null}}'
string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"ARKW","exchangeName":"PCX","instrumentType":"ETF","firstTradeDate":1412083800,"regularMarketTime":1646320709,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":83.82,"chartPreviousClose":120.66,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","start":1646298000,"end":1646317800,"gmtoffset":-18000},"regular":{"timezone":"EST","start":1646317800,"end":1646341200,"gmtoffset":-18000},"post":{"timezone":"EST","start":1646341200,"end":1646355600,"gmtoffset":-18000}},"dataGranularity":"1d","range":"","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1639578600,1639665000,1639751400],"indicators":{"quote":[{"high":[122.19999694824219,123.47000122070312,122.33999633789062],"close":[121.55999755859375,117.88999938964844,121.55000305175781],"low":[115.37000274658203,116.48999786376953,114.55000305175781],"volume":[1503000,1292600,1459500],"open":[119.62999725341797,123.26000213623047,116.5]}],"adjclose":[{"adjclose":[118.27759552001953,114.70669555664062,118.26786804199219]}]}}],"error":null}}'
headers:
Age:
- '0'
- '1'
Connection:
- keep-alive
Expect-CT:
@@ -36,11 +33,11 @@ interactions:
cache-control:
- public, max-age=10, stale-while-revalidate=20
content-length:
- '1157'
- '1155'
content-type:
- application/json;charset=utf-8
date:
- Thu, 20 Jan 2022 16:06:30 GMT
- Thu, 03 Mar 2022 15:19:22 GMT
server:
- ATS
vary:
@@ -48,13 +45,13 @@ interactions:
x-envoy-decorator-operation:
- finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time:
- '13'
- '11'
x-request-id:
- 233a77be-ba62-4f6f-b948-6436c4ceb0d5
- 77d53c37-b2b3-44d9-bb50-ac8abeccd09e
x-yahoo-request-id:
- 3sml3bhguj246
- 3ejhaq5h21n3r
y-rid:
- 3sml3bhguj246
- 3ejhaq5h21n3r
status:
code: 200
message: OK
@@ -67,271 +64,258 @@ interactions:
- gzip, deflate
Connection:
- keep-alive
User-Agent:
- Mozilla/5.0 (Windows NT 6.1; WOW64; rv:86.1) Gecko/20100101 Firefox/86.1
method: GET
uri: https://stockanalysis.com/etf/ARKW/holdings/
response:
body:
string: !!binary |
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
PdXk25wAAA==
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 6e6359a2081a887f-LHR
Cache-Control:
- public, max-age=0, s-max-age=3600
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- text/html; charset=utf-8
Date:
- Thu, 03 Mar 2022 15:19:23 GMT
Expect-CT:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server:
- cloudflare
Transfer-Encoding:
- chunked
X-Content-Type-Options:
- nosniff
age:
- '0'
cache-control:
- public, max-age=0, must-revalidate
date:
- Thu, 20 Jan 2022 16:06:30 GMT
etag:
- W/"ac63-455tmHsaZ+w5ZVk06wUCaTSKZkQ"
server:
- Vercel
- '104'
alt-svc:
- h3=":443"; ma=86400, h3-29=":443"; ma=86400
strict-transport-security:
- max-age=63072000
- max-age=31536000; includeSubDomains; preload
x-frame-options:
- sameorigin
x-matched-path:
@@ -339,9 +323,9 @@ interactions:
x-powered-by:
- Next.js
x-vercel-cache:
- MISS
- HIT
x-vercel-id:
- lhr1::iad1::w8p76-1642694790571-6233d034be3b
- lhr1::iad1::kxwrh-1646320763244-100b3e0b61ab
status:
code: 200
message: OK

View File

@@ -8,17 +8,14 @@ interactions:
- gzip, deflate
Connection:
- keep-alive
User-Agent:
- Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/39.0.2171.95 Safari/537.36
method: GET
uri: https://query2.finance.yahoo.com/v8/finance/chart/ARKW?period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2&interval=1d&includePrePost=False&events=div%2Csplits
uri: https://query2.finance.yahoo.com/v8/finance/chart/ARKW?events=div%2Csplits&includePrePost=False&interval=1d&period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2
response:
body:
string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"ARKW","exchangeName":"PCX","instrumentType":"ETF","firstTradeDate":1412083800,"regularMarketTime":1642694754,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":103.255,"chartPreviousClose":120.66,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","end":1642689000,"start":1642669200,"gmtoffset":-18000},"regular":{"timezone":"EST","end":1642712400,"start":1642689000,"gmtoffset":-18000},"post":{"timezone":"EST","end":1642726800,"start":1642712400,"gmtoffset":-18000}},"dataGranularity":"1d","range":"","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1639578600,1639665000,1639751400],"indicators":{"quote":[{"open":[119.62999725341797,123.26000213623047,116.5],"close":[121.55999755859375,117.88999938964844,121.55000305175781],"high":[122.19999694824219,123.47000122070312,122.33999633789062],"volume":[1503000,1292600,1459500],"low":[115.37000274658203,116.48999786376953,114.55000305175781]}],"adjclose":[{"adjclose":[118.27759552001953,114.70669555664062,118.26786804199219]}]}}],"error":null}}'
string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"ARKW","exchangeName":"PCX","instrumentType":"ETF","firstTradeDate":1412083800,"regularMarketTime":1646320709,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":83.82,"chartPreviousClose":120.66,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","start":1646298000,"end":1646317800,"gmtoffset":-18000},"regular":{"timezone":"EST","start":1646317800,"end":1646341200,"gmtoffset":-18000},"post":{"timezone":"EST","start":1646341200,"end":1646355600,"gmtoffset":-18000}},"dataGranularity":"1d","range":"","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1639578600,1639665000,1639751400],"indicators":{"quote":[{"high":[122.19999694824219,123.47000122070312,122.33999633789062],"volume":[1503000,1292600,1459500],"open":[119.62999725341797,123.26000213623047,116.5],"low":[115.37000274658203,116.48999786376953,114.55000305175781],"close":[121.55999755859375,117.88999938964844,121.55000305175781]}],"adjclose":[{"adjclose":[118.27759552001953,114.70669555664062,118.26786804199219]}]}}],"error":null}}'
headers:
Age:
- '1'
- '0'
Connection:
- keep-alive
Expect-CT:
@@ -36,11 +33,11 @@ interactions:
cache-control:
- public, max-age=10, stale-while-revalidate=20
content-length:
- '1157'
- '1155'
content-type:
- application/json;charset=utf-8
date:
- Thu, 20 Jan 2022 16:06:29 GMT
- Thu, 03 Mar 2022 15:19:22 GMT
server:
- ATS
vary:
@@ -48,13 +45,13 @@ interactions:
x-envoy-decorator-operation:
- finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time:
- '9'
- '11'
x-request-id:
- c2c4d52d-f5cf-4008-b67b-0d61c63861ae
- 139f9f9a-0e46-494b-a8be-9b02dd971090
x-yahoo-request-id:
- dorr5ndguj246
- 2lmld89h21n3q
y-rid:
- dorr5ndguj246
- 2lmld89h21n3q
status:
code: 200
message: OK
@@ -67,271 +64,258 @@ interactions:
- gzip, deflate
Connection:
- keep-alive
User-Agent:
- Mozilla/5.0 (Windows NT 6.1; WOW64; rv:86.1) Gecko/20100101 Firefox/86.1
method: GET
uri: https://stockanalysis.com/etf/ARKW/holdings/
response:
body:
string: !!binary |
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
PdXk25wAAA==
headers:
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 6e63599fcb508898-LHR
Cache-Control:
- public, max-age=0, s-max-age=3600
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- text/html; charset=utf-8
Date:
- Thu, 03 Mar 2022 15:19:22 GMT
Expect-CT:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server:
- cloudflare
Transfer-Encoding:
- chunked
X-Content-Type-Options:
- nosniff
age:
- '0'
cache-control:
- public, max-age=0, must-revalidate
date:
- Thu, 20 Jan 2022 16:06:30 GMT
etag:
- W/"ac63-455tmHsaZ+w5ZVk06wUCaTSKZkQ"
server:
- Vercel
- '104'
alt-svc:
- h3=":443"; ma=86400, h3-29=":443"; ma=86400
strict-transport-security:
- max-age=63072000
- max-age=31536000; includeSubDomains; preload
x-frame-options:
- sameorigin
x-matched-path:
@@ -339,9 +323,9 @@ interactions:
x-powered-by:
- Next.js
x-vercel-cache:
- MISS
- HIT
x-vercel-id:
- lhr1::iad1::6l2sk-1642694790141-c6b36beb8349
- lhr1::iad1::hnkcb-1646320762895-4428714bc531
status:
code: 200
message: OK

View File

@@ -432,7 +432,7 @@ def test_call_news(mocker):
)
mock_news = mocker.Mock()
mocker.patch(
target="gamestonk_terminal.etf.etf_controller.newsapi_view.news",
target="gamestonk_terminal.etf.etf_controller.newsapi_view.display_news",
new=mock_news,
)

View File

@@ -1,3 +1,3 @@
Top company holdings found: COIN, TSLA, GBTC, ZM, ROKU
Top company holdings found: COIN, TSLA, GBTC, ROKU, SQ

View File

@@ -1,6 +1,5 @@
Degiro:
login connect to degiro's api
[cmds] login connect to degiro's api
logout disconnect from degiro's api
hold view holdings
@@ -13,5 +12,5 @@ Degiro:
companynews view news about a company with it's isin
lastnews view latest news
topnews view top news preview
topnews view top news preview[/cmds]

View File

@@ -1,6 +1,5 @@
Degiro:
login connect to degiro's api
[cmds] login connect to degiro's api
logout disconnect from degiro's api
hold view holdings
@@ -13,5 +12,5 @@ Degiro:
companynews view news about a company with it's isin
lastnews view latest news
topnews view top news preview
topnews view top news preview[/cmds]

View File

@@ -13,38 +13,40 @@ interactions:
response:
body:
string: !!binary |
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
0d8NQz+snhxOu935/C/JNQWlixQAAA==
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
headers:
Age:
- '0'
@@ -67,11 +69,11 @@ interactions:
content-encoding:
- gzip
content-length:
- '1789'
- '1933'
content-type:
- application/json;charset=utf-8
date:
- Tue, 22 Feb 2022 08:08:50 GMT
- Thu, 03 Mar 2022 17:19:57 GMT
server:
- ATS
vary:
@@ -79,13 +81,13 @@ interactions:
x-envoy-decorator-operation:
- finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time:
- '4'
- '3'
x-request-id:
- 69a9eb2f-ee02-4875-b32f-54654da99cd5
- e3e78e42-f3a9-44d8-b1b5-b492ebd49e8b
x-yahoo-request-id:
- ftid9jdh196gi
- 5ospvq9h21u5t
y-rid:
- ftid9jdh196gi
- 5ospvq9h21u5t
status:
code: 200
message: OK

View File

@@ -0,0 +1,70 @@
interactions:
- request:
body: null
headers:
Accept:
- '*/*'
Accept-Encoding:
- gzip, deflate
Connection:
- keep-alive
User-Agent:
- python-requests/2.27.1
method: GET
uri: https://finnhub.io/api/v1/calendar/ipo?from=MOCK_FROM&to=MOCK_TO&token=MOCK_TOKEN
response:
body:
string: !!binary |
H4sIAAAAAAAAA7SU207jMBRFf8U6zwE5EZdR3yITSqTSlKZFoBkeThPTWnXsjO2oIMS/jzLhqiai
BMhbju2ttawtP4AoNUPJVY4GBr8fIEfHYQABDfw9P9ijAXjA77IVqmU9H4fpSXhBhlIvUIIHCot6
PJ+FJMz+VsIKJ7QiTJuyXq2KBTfJbbpCwy0MAtp8HpRGZPVBn+5TCh5Yh66yMGgW8npyXyy0bLLD
OXjgtEPZJF2irPhrHH30+oJPE0Yixc3yfot/v0XA/9VDYJqwDoHnuC8IDLHglvypKA2OSGRLbZwl
0V3JjeAq47tZHR9+3moYRVcdVk9xrVb+OytVSfmikpZo1iTKqwz/445c3gLbHHkCbX5eKDfCrXKD
G/UGtNmyTVnPPwaE8XUavd72ZJokp1t3SuK2rh/0qMokZHFH1w/orpfa2XXtVoSdvcO/JEy3VoL2
K/qooxL0y/QMS+FQbrRZWxIV3CyFWpJzNGvu7I89Puyc9Xl8dlOajYbXJGQX8ziNZ3EyJiyZTr6L
vA7/iPzm8R8AAAD//wMALKjsCwEGAAA=
headers:
Access-Control-Allow-Credentials:
- 'true'
Access-Control-Allow-Headers:
- Origin
Access-Control-Allow-Methods:
- POST, GET, OPTIONS, PUT, DELETE
Access-Control-Allow-Origin:
- '*'
Access-Control-Expose-Headers:
- Content-Length
CF-Cache-Status:
- DYNAMIC
CF-RAY:
- 6e62f07ee8f406b2-LHR
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json; charset=utf-8
Date:
- Thu, 03 Mar 2022 14:07:37 GMT
Expect-CT:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
NEL:
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
Report-To:
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=LUavwMra4cuvWTjGI14fnmnQafbFQmlpCOojESb%2FyXVY52J8zBvzWcHtXCXwCsSxNRrbucJQRHtlAUHUCvCLMX3eVQxQx%2FAAKGK%2FR0FodmtwmznnB9doJVXllNql2%2B8DSxy3Q3kHHCau"}],"group":"cf-nel","max_age":604800}'
Server:
- cloudflare
Transfer-Encoding:
- chunked
X-Ratelimit-Limit:
- '60'
X-Ratelimit-Remaining:
- '58'
X-Ratelimit-Reset:
- '1646316499'
alt-svc:
- h3=":443"; ma=86400, h3-29=":443"; ma=86400
status:
code: 200
message: OK
version: 1

View File

@@ -0,0 +1,9 @@
,Date,Exchange,Name,Number of Shares,Price,Status,symbol,Total Shares Value
0,2021-12-02,NASDAQ Global,UTA Acquisition Corp,20000000.0,10.00,priced,UTAAU,200000000.0
1,2021-12-02,NASDAQ Global,ROC Energy Acquisition Corp.,18000000.0,10.00,priced,ROCAU,180000000.0
2,2021-12-02,NASDAQ Global,Games & Esports Experience Acquisition Corp.,17500000.0,10.00,priced,GEEXU,175000000.0
3,2021-12-01,,Spark Education Ltd,,,withdrawn,,
4,2021-12-01,NYSE,PROOF Acquisition Corp I,24000000.0,10.00,priced,PACIU,240000000.0
5,2021-12-01,NASDAQ Global,Roth CH Acquisition V Co.,10000000.0,10.00,priced,ROCLU,100000000.0
6,2021-12-01,NASDAQ Global,Capitalworks Emerging Markets Acquisition Corp,20000000.0,10.00,priced,CMCAU,200000000.0
7,2021-12-01,NASDAQ Global,TLGY ACQUISITION CORP,20000000.0,10.00,priced,TLGYU,200000000.0
1 Date Exchange Name Number of Shares Price Status symbol Total Shares Value
2 0 2021-12-02 NASDAQ Global UTA Acquisition Corp 20000000.0 10.00 priced UTAAU 200000000.0
3 1 2021-12-02 NASDAQ Global ROC Energy Acquisition Corp. 18000000.0 10.00 priced ROCAU 180000000.0
4 2 2021-12-02 NASDAQ Global Games & Esports Experience Acquisition Corp. 17500000.0 10.00 priced GEEXU 175000000.0
5 3 2021-12-01 Spark Education Ltd withdrawn
6 4 2021-12-01 NYSE PROOF Acquisition Corp I 24000000.0 10.00 priced PACIU 240000000.0
7 5 2021-12-01 NASDAQ Global Roth CH Acquisition V Co. 10000000.0 10.00 priced ROCLU 100000000.0
8 6 2021-12-01 NASDAQ Global Capitalworks Emerging Markets Acquisition Corp 20000000.0 10.00 priced CMCAU 200000000.0
9 7 2021-12-01 NASDAQ Global TLGY ACQUISITION CORP 20000000.0 10.00 priced TLGYU 200000000.0

View File

@@ -389,16 +389,6 @@ def test_call_func_expect_queue(expected_queue, queue, func):
export="csv",
),
),
(
"call_stats",
["--export=csv"],
"finnhub_view.display_sentiment_stats",
[],
dict(
ticker="MOCK_TICKER",
export="csv",
),
),
(
"call_hist",
[
@@ -515,7 +505,7 @@ def test_call_func(
"call_queries",
"call_rise",
"call_headlines",
"call_stats",
"call_snews",
"call_hist",
"call_trend",
"call_popular",
@@ -543,7 +533,6 @@ def test_call_func_no_parser(func, mocker):
"func",
[
"call_hist",
"call_stats",
"call_headlines",
"call_sentiment",
"call_infer",

View File

@@ -0,0 +1,40 @@
# IMPORTATION STANDARD
# IMPORTATION THIRDPARTY
import pytest
import requests
# IMPORTATION INTERNAL
from gamestonk_terminal.stocks.discovery import finnhub_model
@pytest.fixture(scope="module")
def vcr_config():
return {
"filter_query_parameters": [
("from", "MOCK_FROM"),
("to", "MOCK_TO"),
("token", "MOCK_TOKEN"),
]
}
@pytest.mark.vcr
def test_get_ipo_calendar(recorder):
ipo_df = finnhub_model.get_ipo_calendar(
from_date="2021-12-01",
to_date="2021-12-02",
)
recorder.capture(ipo_df)
@pytest.mark.vcr(record_mode="none")
def test_get_ipo_calendar_400(mocker):
mock_response = requests.Response()
mock_response.status_code = 400
mocker.patch(target="requests.get", new=mocker.Mock(return_value=mock_response))
ipo_df = finnhub_model.get_ipo_calendar(
from_date="2021-12-01",
to_date="2021-12-02",
)
assert ipo_df.empty

View File

@@ -6,7 +6,7 @@ Ticker: TSLA
[Finbrain]
headlines sentiment from 15+ major news headlines
[Finnhub]
stats sentiment stats including comparison with sector
snews stock price displayed over sentiment of news headlines
[Reddit]
wsb show what WSB gang is up to in subreddit wallstreetbets
watchlist show other users watchlist
@@ -30,5 +30,4 @@ Ticker: TSLA
[SentimentInvestor]
trend most talked about tickers within the last hour
hist plot historical RHI and AHI data by hour

View File

@@ -12,7 +12,7 @@ interactions:
uri: https://query2.finance.yahoo.com/v8/finance/chart/TSLA?events=div%2Csplits&includePrePost=False&interval=1d&period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2
response:
body:
string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"TSLA","exchangeName":"NMS","instrumentType":"EQUITY","firstTradeDate":1277818200,"regularMarketTime":1645218003,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":856.98,"chartPreviousClose":926.92,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","start":1645520400,"end":1645540200,"gmtoffset":-18000},"regular":{"timezone":"EST","start":1645540200,"end":1645563600,"gmtoffset":-18000},"post":{"timezone":"EST","start":1645563600,"end":1645578000,"gmtoffset":-18000}},"dataGranularity":"1d","range":"","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1639665000,1639751400],"indicators":{"quote":[{"high":[994.97998046875,960.6599731445312],"open":[994.5,914.77001953125],"low":[921.8499755859375,909.0399780273438],"close":[926.9199829101562,932.5700073242188],"volume":[27590500,33479100]}],"adjclose":[{"adjclose":[926.9199829101562,932.5700073242188]}]}}],"error":null}}'
string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"TSLA","exchangeName":"NMS","instrumentType":"EQUITY","firstTradeDate":1277818200,"regularMarketTime":1646320856,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":864.23,"chartPreviousClose":926.92,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","end":1646317800,"start":1646298000,"gmtoffset":-18000},"regular":{"timezone":"EST","end":1646341200,"start":1646317800,"gmtoffset":-18000},"post":{"timezone":"EST","end":1646355600,"start":1646341200,"gmtoffset":-18000}},"dataGranularity":"1d","range":"","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1639751400],"indicators":{"quote":[{"close":[932.5700073242188],"open":[914.77001953125],"high":[960.6599731445312],"volume":[33479100],"low":[909.0399780273438]}],"adjclose":[{"adjclose":[932.5700073242188]}]}}],"error":null}}'
headers:
Age:
- '1'
@@ -33,11 +33,11 @@ interactions:
cache-control:
- public, max-age=10, stale-while-revalidate=20
content-length:
- '1034'
- '938'
content-type:
- application/json;charset=utf-8
date:
- Tue, 22 Feb 2022 08:08:46 GMT
- Thu, 03 Mar 2022 15:20:57 GMT
server:
- ATS
vary:
@@ -45,13 +45,13 @@ interactions:
x-envoy-decorator-operation:
- finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/*
x-envoy-upstream-service-time:
- '3'
- '5'
x-request-id:
- c4c3b25c-c216-46ee-ab8a-e3f01ef7ba22
- 880a3d97-4103-43fa-8585-bb77159343b2
x-yahoo-request-id:
- 5c4vh6hh196gf
- 8ap7j71h21n6q
y-rid:
- 5c4vh6hh196gf
- 8ap7j71h21n6q
status:
code: 200
message: OK

View File

@@ -309,12 +309,12 @@ def test_call_func_expect_queue(expected_queue, func, queue):
(
"call_news",
[
"--num=1",
"--limit=1",
"--date=2022-01-07",
"--oldest",
"--sources=MOCK_SOURCE_1,MOCK_SOURCE_2",
],
"newsapi_view.news",
"newsapi_view.display_news",
[],
dict(
term="MOCK_TICKER",

View File

@@ -0,0 +1,14 @@
```text
usage: snews [-h] [--export {csv,json,xlsx,png,jpg,pdf,svg}]
```
Display stock price and headlines sentiment using VADER model over time. [Source: Finnhub]
```
optional arguments:
-h, --help show this help message (default: False)
--export {csv,json,xlsx,png,jpg,pdf,svg}
Export raw data into csv, json, xlsx and figure into png, jpg, pdf, svg (default: )
```
![snews](https://user-images.githubusercontent.com/25267873/156584514-33c2cd52-4763-43cd-8a53-4118b8615450.png)

View File

@@ -510,6 +510,8 @@ main:
ref: "/common/behavioural_analysis/headlines"
- name: stats
ref: "/common/behavioural_analysis/stats"
- name: snews
ref: "/stocks/behavioural_analysis/snews"
- name: wsb
ref: "/common/behavioural_analysis/wsb"
- name: watchlist