diff --git a/funnel/app.py b/funnel/app.py index 3452dea..f3498aa 100644 --- a/funnel/app.py +++ b/funnel/app.py @@ -1,3 +1,6 @@ +import os +from pathlib import Path + import dash import dash_bootstrap_components as dbc import numpy as np @@ -10,7 +13,8 @@ from .models.main import TradeBot logger.setup_logging() -algo = TradeBot() +ROOT_DIR = Path(__file__).parent +algo = TradeBot(os.path.join(ROOT_DIR, "financial_data/all_etfs_rets.parquet.gzip")) def load_page(): diff --git a/funnel/dashboard/app_callbacks.py b/funnel/dashboard/app_callbacks.py index 83b710a..cb881a5 100644 --- a/funnel/dashboard/app_callbacks.py +++ b/funnel/dashboard/app_callbacks.py @@ -1,3 +1,6 @@ +import os +from pathlib import Path + import flask from dash import dcc from dash.dependencies import Input, Output, State @@ -11,7 +14,9 @@ page_mobile_layout, ) -algo = TradeBot() +ROOT_DIR = Path(__file__).parent.parent +algo = TradeBot(os.path.join(ROOT_DIR, "financial_data/all_etfs_rets.parquet.gzip")) + def get_callbacks(app): diff --git a/funnel/dashboard/components_and_styles/ai_feature_selection_page.py b/funnel/dashboard/components_and_styles/ai_feature_selection_page.py index eb3473d..fef7b10 100644 --- a/funnel/dashboard/components_and_styles/ai_feature_selection_page.py +++ b/funnel/dashboard/components_and_styles/ai_feature_selection_page.py @@ -1,3 +1,6 @@ +import os +from pathlib import Path + import dash_bootstrap_components as dbc from dash import dash_table, dcc, html @@ -13,7 +16,8 @@ SUB_TITLE, ) -algo = TradeBot() +ROOT_DIR = Path(__file__).parent.parent.parent +algo = TradeBot(os.path.join(ROOT_DIR, "financial_data/all_etfs_rets.parquet.gzip")) optionML = html.Div( diff --git a/funnel/dashboard/components_and_styles/backtest_page.py b/funnel/dashboard/components_and_styles/backtest_page.py index ea4c0cf..a518884 100644 --- a/funnel/dashboard/components_and_styles/backtest_page.py +++ b/funnel/dashboard/components_and_styles/backtest_page.py @@ -1,3 +1,6 @@ +import os +from pathlib import Path + import cvxpy import dash_bootstrap_components as dbc from dash import dcc, html @@ -14,7 +17,8 @@ SUB_TITLE, ) -algo = TradeBot() +ROOT_DIR = Path(__file__).parent.parent.parent +algo = TradeBot(os.path.join(ROOT_DIR, "financial_data/all_etfs_rets.parquet.gzip")) optionBacktest = html.Div( diff --git a/funnel/dashboard/components_and_styles/lifecycle_page.py b/funnel/dashboard/components_and_styles/lifecycle_page.py index 67cc117..b7e62a1 100644 --- a/funnel/dashboard/components_and_styles/lifecycle_page.py +++ b/funnel/dashboard/components_and_styles/lifecycle_page.py @@ -1,3 +1,6 @@ +import os +from pathlib import Path + import dash_bootstrap_components as dbc from dash import dcc, html @@ -13,7 +16,8 @@ SUB_TITLE, ) -algo = TradeBot() +ROOT_DIR = Path(__file__).parent.parent.parent +algo = TradeBot(os.path.join(ROOT_DIR, "financial_data/all_etfs_rets.parquet.gzip")) options_lifecycle = html.Div( diff --git a/funnel/dashboard/components_and_styles/market_overview_page.py b/funnel/dashboard/components_and_styles/market_overview_page.py index be0c771..362c7f4 100644 --- a/funnel/dashboard/components_and_styles/market_overview_page.py +++ b/funnel/dashboard/components_and_styles/market_overview_page.py @@ -1,3 +1,6 @@ +import os +from pathlib import Path + import dash_bootstrap_components as dbc from dash import dcc, html @@ -12,7 +15,8 @@ SUB_TITLE, ) -algo = TradeBot() +ROOT_DIR = Path(__file__).parent.parent.parent +algo = TradeBot(os.path.join(ROOT_DIR, "financial_data/all_etfs_rets.parquet.gzip")) optionGraph = html.Div( diff --git a/funnel/models/main.py b/funnel/models/main.py index 7bc3110..9780f24 100644 --- a/funnel/models/main.py +++ b/funnel/models/main.py @@ -29,14 +29,14 @@ pio.renderers.default = "browser" -# that's unfortunate but will be addressed later -ROOT_DIR = Path(__file__).parent.parent -# Load our data -weekly_returns = pd.read_parquet( - os.path.join(ROOT_DIR, "financial_data/all_etfs_rets.parquet.gzip") -) -tickers = [pair[0] for pair in weekly_returns.columns.values] -names = [pair[1] for pair in weekly_returns.columns.values] +# # that's unfortunate but will be addressed later +# ROOT_DIR = Path(__file__).parent.parent +# # Load our data +# weekly_returns = pd.read_parquet( +# os.path.join(ROOT_DIR, "financial_data/all_etfs_rets.parquet.gzip") +# ) +# tickers = [pair[0] for pair in weekly_returns.columns.values] +# names = [pair[1] for pair in weekly_returns.columns.values] class TradeBot: @@ -45,14 +45,14 @@ class TradeBot: optimization suggesting optimal portfolio of assets. """ - def __init__(self): - self.tickers = tickers - self.names = names - self.weeklyReturns = weekly_returns - self.min_date = str(weekly_returns.index[0]) - self.max_date = str(weekly_returns.index[-1]) + def __init__(self, data_path: str) -> None: + self.weeklyReturns = pd.read_parquet(data_path) + self.tickers = [pair[0] for pair in self.weeklyReturns.columns.values] + self.names = [pair[1] for pair in self.weeklyReturns.columns.values] + self.min_date = str(self.weeklyReturns.index[0]) + self.max_date = str(self.weeklyReturns.index[-1]) - weekly_returns.columns = tickers + self.weeklyReturns.columns = self.tickers @staticmethod def __plot_backtest( @@ -881,7 +881,8 @@ def lifecycle_scenario_analysis( if __name__ == "__main__": # INITIALIZATION OF THE CLASS - algo = TradeBot() + ROOT_DIR = Path(__file__).parent.parent + algo = TradeBot(os.path.join(ROOT_DIR, "financial_data/all_etfs_rets.parquet.gzip")) # Get top performing assets for given periods and measure top_assets = algo.get_top_performing_assets(