mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-11-01 23:12:21 +00:00
* Update portfolio_view.py * mypy 1.0 test * Update helpers.py * black * ruff * Update thought_of_the_day.py * isort * Update portfolio_view.py * Update business_insider_view.py * funds,bt,ca,fa view updates * economy,etf,futures view updates * econometrics regression * mypy * reports notebooks, PlotlyTA class adjustments, crypto finbrain view * crypto views updates * crypto views done?, ba, econometrics, funds, reports * update docstrings * Update sec_view.py * portfolio reports * Update equity.ipynb * ruff * mypy + equity reports * Update yahoo_finance_view.py * Update economy_controller.py * clean up returns * mypy * finished dashboards/reports templates * update some tests * Update common.py * Update account_controller.py * Update banner.txt * update tests * tests * Update helpers_denomination.py * tests * tests * finished tests, refactor add_histplot/add_corr_plot * ruff * Update backend.py * mypy * Update backend.py * pywry linux libs for tests * pywry version bump * OpenBBFIgure import changes * Update business_insider_view.py * Update backend.py * tests * bump pywry version * forecast plot_explainability converted to plotly * Update helpers.py * tests * Update helpers.py * tests * Update helpers.py * Update helpers.py * default plotly annotation `showarrow` to false * Update backend.py * fixes * Update poetry.lock * docker * Update openbb.dockerfile * up * Update style.css * bump pywry version * Update unit-test.yml * Update unit-test.yml * figure to image/pdf export * requirements txt files, pywry version bump * mypy, pylint * cleanup * Update covid_view.py * Update helper_funcs.py * Update backend.py * updates * Update backend.py * Update backend.py * bump pywry version * Update poetry.lock * Update trailmap.py * update reports * Update custom_indicators_plugin.py * Update momentum_plugin.py * equity report * reqs files * Update fred_view.py * ruff * Update po_view.py * bump pywry version * reqs txt files * fix installer icons for mac * test updated torch/darts/pyinstaller on mac * Update dashboards_controller.py * Update terminal.py * Update terminal.spec * Update terminal.spec * test * Update poetry.lock * Report adjustments, improved dashboard subprocesses termination * pylint * Update plotly_helper.py * Update plotly_helper.py * pylint * revert darts * test * test * fix * improve shap scatter plot * Update helpers.py * Update helpers.py * cleanup * Update runa_view.py * more cleanupp * fixes * update tests * Update intrinio_view.py * Update intrinio_view.py * Update intrinio_view.py * reqs files, poetry lock * Update backend.py * test for new icon * Update fmp_view.py * updates * Update plotly_helper.py * Update businessinsider_view.py * ruff * pylint * fix previous merge * Update plotly_helper.py * update reqs files * Update directories.py * fix alt covid * fix display_candle data is None load being unreachable, get covid views ready for sdk server * Update covid_view.py * refactor cleanup * plotly_ta adjustments * terminal wide ignore print_table if export * Update plotly_helper.py * forgot to save a few * added edge case fallback if figures are in queue before backend fail * Update ta_class.py * Rename env variable name required to return plotly json * Resolve pydocstyle warnings * Resolve linting errors * revert forecasting/pyinstaller versions * Update terminal.spec * finished incoming fixedincome menu, improve get_ecb_yield_curve speed with multiprocessing * update deps * Update backend.py * fix fred model/view from switch to DataFrame, improve ecb_model * Update config_terminal.py * Update backend.py * black * clean up * Update fred_view.py * Update ta_class.py * Update ta_class.py * Update plotly_helper.py * sync fixedincome * Update ecb_model.py * convert excel to csv for faster processing * cleanup * remove excel files * Update terminal_controller.py * update tests * adjustments/missed figs in export_data * Update cryptocurrency_helpers.py * fixes * account for volume column with no volume when plotting indicators , images autogen POC * Update plotly_helper.py * Update etf_controller.py * Update etf_controller.py * margin arg for export_data func figures, some plot adjustments * logic for numpy array for plotly helper `get_dateindex` function * cleanup * update * req file updates * views * Update backend.py * update tests * Update test_load_none[btc-usd].yaml * convert merged cpi chart * linting * updates * clean * tests * Update openbb.dockerfile * remove test docker in root * Update CONTRIBUTING.md --------- Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com> Co-authored-by: Chavithra <chavithra@gmail.com>
201 lines
6.6 KiB
Plaintext
Vendored
201 lines
6.6 KiB
Plaintext
Vendored
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "e9ad60bc",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import os\n",
|
|
"from datetime import datetime, timedelta\n",
|
|
"import ipywidgets as widgets\n",
|
|
"from openbb_terminal import OpenBBFigure, theme\n",
|
|
"import yfinance as yf\n",
|
|
"import pandas as pd\n",
|
|
"from IPython.display import display\n",
|
|
"\n",
|
|
"theme.apply_style(\"light\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "6c554cd2-462c-4832-b73c-c214aae11ce4",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"interval_opts = [\n",
|
|
" \"1m\",\n",
|
|
" \"2m\",\n",
|
|
" \"5m\",\n",
|
|
" \"15m\",\n",
|
|
" \"30m\",\n",
|
|
" \"60m\",\n",
|
|
" \"90m\",\n",
|
|
" \"1h\",\n",
|
|
" \"1d\",\n",
|
|
" \"5d\",\n",
|
|
" \"1wk\",\n",
|
|
" \"1mo\",\n",
|
|
" \"3mo\",\n",
|
|
"]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "f8c2f65c",
|
|
"metadata": {
|
|
"tags": [
|
|
"parameters"
|
|
]
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"class Chart:\n",
|
|
" def __init__(self):\n",
|
|
" self.last_tickers = \"\"\n",
|
|
" self.last_interval = \"1d\"\n",
|
|
" self.df = pd.DataFrame()\n",
|
|
"\n",
|
|
" def create(self, data, start, end, interval, tickers):\n",
|
|
" global last_tickers, df, last_interval\n",
|
|
" if tickers and tickers[-1] == \",\":\n",
|
|
" if tickers != self.last_tickers or interval != self.last_interval:\n",
|
|
" if interval in [\"1d\", \"5d\", \"1wk\", \"1mo\", \"3mo\"]:\n",
|
|
" self.df = yf.download(\n",
|
|
" tickers, period=\"max\", interval=interval, progress=False\n",
|
|
" )\n",
|
|
" else:\n",
|
|
" self.df = yf.download(\n",
|
|
" tickers, start=start, end=end, interval=interval, progress=False\n",
|
|
" )\n",
|
|
" self.last_tickers = tickers\n",
|
|
" self.last_interval = interval\n",
|
|
"\n",
|
|
" start_n = datetime(start.year, start.month, start.day)\n",
|
|
" end_n = datetime(end.year, end.month, end.day)\n",
|
|
"\n",
|
|
" df = self.df[data]\n",
|
|
"\n",
|
|
" if not isinstance(df, pd.Series):\n",
|
|
" if interval in [\"1d\", \"5d\", \"1wk\", \"1mo\", \"3mo\"]:\n",
|
|
" result = df.loc[(df.index >= start_n) & (df.index <= end_n)].corr()\n",
|
|
" else:\n",
|
|
" result = df.corr()\n",
|
|
"\n",
|
|
" base = [\n",
|
|
" [\n",
|
|
" \"black\" if x == 1 else \"lightgreen\" if x > 0 else \"lightpink\"\n",
|
|
" for x in result[y].tolist()\n",
|
|
" ]\n",
|
|
" for y in result.columns\n",
|
|
" ]\n",
|
|
" base = [[\"lightgray\" for _ in range(result.shape[0])]] + base\n",
|
|
" result = result.reset_index()\n",
|
|
" result.rename(columns={\"index\": \"\"}, inplace=True)\n",
|
|
"\n",
|
|
" fig = OpenBBFigure.to_table(result, print_index=False)\n",
|
|
" fig.update_layout(\n",
|
|
" margin=dict(l=0, r=0, t=0, b=0),\n",
|
|
" paper_bgcolor=\"rgba(0,0,0,0)\",\n",
|
|
" plot_bgcolor=\"rgba(0,0,0,0)\",\n",
|
|
" autosize=True,\n",
|
|
" height=600,\n",
|
|
" showlegend=False,\n",
|
|
" )\n",
|
|
" if os.environ.get(\"SERVER_SOFTWARE\", \"jupyter\").startswith(\"voila\"):\n",
|
|
" fig.show(\n",
|
|
" margin=False, config={\"showTips\": False}, renderer=\"notebook\"\n",
|
|
" )\n",
|
|
" else:\n",
|
|
" fig.show(margin=False, config={\"showTips\": False})\n",
|
|
"\n",
|
|
"\n",
|
|
"w_auto = widgets.Layout(width=\"auto\")\n",
|
|
"data_opts = [\"Open\", \"Close\", \"High\", \"Low\", \"Volume\"]\n",
|
|
"data_widget = widgets.Dropdown(\n",
|
|
" options=data_opts, value=\"Close\", layout=w_auto, description=\"Data\"\n",
|
|
")\n",
|
|
"\n",
|
|
"base_date = (datetime.today() - timedelta(days=365)).date()\n",
|
|
"start_widget = widgets.DatePicker(value=base_date, layout=w_auto, description=\"Start\")\n",
|
|
"end_widget = widgets.DatePicker(\n",
|
|
" value=datetime.today().date(), layout=w_auto, description=\"End\"\n",
|
|
")\n",
|
|
"interval_widget = widgets.Dropdown(\n",
|
|
" options=interval_opts, value=\"1d\", layout=w_auto, description=\"Interval\"\n",
|
|
")\n",
|
|
"tickers_widget = widgets.Textarea(value=\"TSLA,AAPL,\", layout=w_auto)\n",
|
|
"\n",
|
|
"data_box = widgets.VBox([tickers_widget, data_widget])\n",
|
|
"date_box = widgets.VBox([start_widget, end_widget, interval_widget])\n",
|
|
"controls = widgets.HBox([data_box, date_box], layout=widgets.Layout(width=\"60%\"))\n",
|
|
"\n",
|
|
"chart = Chart()\n",
|
|
"stocks_view = widgets.interactive_output(\n",
|
|
" chart.create,\n",
|
|
" {\n",
|
|
" \"data\": data_widget,\n",
|
|
" \"start\": start_widget,\n",
|
|
" \"end\": end_widget,\n",
|
|
" \"interval\": interval_widget,\n",
|
|
" \"tickers\": tickers_widget,\n",
|
|
" },\n",
|
|
")\n",
|
|
"\n",
|
|
"title_html = \"<h1>Correlation Analysis Dashboard</h1>\"\n",
|
|
"warning_html = '<p style=\"color:red\">Use a comma after EVERY stock typed.</p>'\n",
|
|
"app_contents = [\n",
|
|
" widgets.HTML(title_html),\n",
|
|
" controls,\n",
|
|
" widgets.HTML(warning_html),\n",
|
|
" stocks_view,\n",
|
|
"]\n",
|
|
"app = widgets.VBox(app_contents)\n",
|
|
"display(app)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "37f46146-a206-4c25-b969-81c5abec4b1d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "venv",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.10.8"
|
|
},
|
|
"metadata": {
|
|
"interpreter": {
|
|
"hash": "e896a00ead8b521528d79ac9ef24990696f2b751eb283ab8e0d078c9c4971ffc"
|
|
}
|
|
},
|
|
"vscode": {
|
|
"interpreter": {
|
|
"hash": "381a209f752e9104bff95ec5e80679ea2e476866b80e4326f1ee6b7658af6049"
|
|
}
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|