virgo-modules 0.2.9__tar.gz → 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of virgo-modules might be problematic. Click here for more details.

Files changed (24) hide show
  1. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/PKG-INFO +1 -18
  2. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/setup.py +4 -4
  3. virgo_modules-0.3.0/virgo_app/virgo_modules/src/edge_utils/__init__.py +0 -0
  4. virgo_modules-0.3.0/virgo_app/virgo_modules/src/edge_utils/conformal_utils.py +71 -0
  5. {virgo_modules-0.2.9/virgo_app/virgo_modules/src → virgo_modules-0.3.0/virgo_app/virgo_modules/src/edge_utils}/edge_utils.py +30 -2
  6. virgo_modules-0.3.0/virgo_app/virgo_modules/src/edge_utils/shap_utils.py +81 -0
  7. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/virgo_app/virgo_modules/src/re_utils.py +8 -25
  8. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/virgo_app/virgo_modules/src/ticketer_source.py +18 -3
  9. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/virgo_app/virgo_modules.egg-info/PKG-INFO +1 -18
  10. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/virgo_app/virgo_modules.egg-info/SOURCES.txt +5 -2
  11. virgo_modules-0.3.0/virgo_app/virgo_modules.egg-info/requires.txt +3 -0
  12. virgo_modules-0.2.9/virgo_app/virgo_modules.egg-info/requires.txt +0 -20
  13. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/LICENSE +0 -0
  14. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/README.md +0 -0
  15. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/setup.cfg +0 -0
  16. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/virgo_app/virgo_modules/__init__.py +0 -0
  17. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/virgo_app/virgo_modules/src/__init__.py +0 -0
  18. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/virgo_app/virgo_modules/src/aws_utils.py +0 -0
  19. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/virgo_app/virgo_modules/src/backtester.py +0 -0
  20. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/virgo_app/virgo_modules/src/hmm_utils.py +0 -0
  21. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/virgo_app/virgo_modules/src/pull_artifacts.py +0 -0
  22. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/virgo_app/virgo_modules/src/transformer_utils.py +0 -0
  23. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/virgo_app/virgo_modules.egg-info/dependency_links.txt +0 -0
  24. {virgo_modules-0.2.9 → virgo_modules-0.3.0}/virgo_app/virgo_modules.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: virgo_modules
3
- Version: 0.2.9
3
+ Version: 0.3.0
4
4
  Summary: data processing and statistical modeling using stock market data
5
5
  Home-page: https://github.com/miguelmayhem92/virgo_module
6
6
  Author: Miguel Mayhuire
@@ -12,23 +12,6 @@ Classifier: Operating System :: OS Independent
12
12
  Requires-Python: >=3.9, <3.10
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: feature-engine==1.6.1
16
- Requires-Dist: matplotlib==3.6.3
17
- Requires-Dist: mlflow==2.1.1
18
- Requires-Dist: numpy==1.23.5
19
- Requires-Dist: optuna==3.1.0
20
- Requires-Dist: pandas==1.5.3
21
- Requires-Dist: plotly==5.15.0
22
- Requires-Dist: rsa==4.9
23
- Requires-Dist: scikit-learn==1.2.1
24
- Requires-Dist: scipy==1.10.0
25
- Requires-Dist: seaborn==0.12.2
26
- Requires-Dist: starlette==0.22.0
27
- Requires-Dist: statsmodels==0.13.5
28
- Requires-Dist: ta==0.10.2
29
- Requires-Dist: yfinance==0.2.9
30
- Requires-Dist: hmmlearn==0.3.0
31
- Requires-Dist: boto3
32
15
  Provides-Extra: dev
33
16
  Requires-Dist: pytest>=7.0; extra == "dev"
34
17
 
@@ -5,7 +5,7 @@ with open("virgo_app/README.md", "r") as f:
5
5
 
6
6
  setup(
7
7
  name="virgo_modules",
8
- version="0.2.9",
8
+ version="0.3.0",
9
9
  description="data processing and statistical modeling using stock market data",
10
10
  package_dir={"": "virgo_app"},
11
11
  packages=find_packages(where="virgo_app"),
@@ -20,9 +20,9 @@ setup(
20
20
  "Programming Language :: Python :: 3.9",
21
21
  "Operating System :: OS Independent",
22
22
  ],
23
- install_requires=["feature-engine==1.6.1","matplotlib==3.6.3","mlflow==2.1.1","numpy==1.23.5","optuna==3.1.0","pandas==1.5.3",
24
- "plotly==5.15.0","rsa==4.9","scikit-learn==1.2.1","scipy==1.10.0","seaborn==0.12.2","starlette==0.22.0","statsmodels==0.13.5",
25
- "ta==0.10.2","yfinance==0.2.9","hmmlearn==0.3.0","boto3"],
23
+ # install_requires=["feature-engine==1.6.1","matplotlib==3.6.3","mlflow==2.1.1","numpy==1.23.5","optuna==3.1.0","pandas==1.5.3",
24
+ # "plotly==5.15.0","rsa==4.9","scikit-learn==1.2.1","scipy==1.10.0","seaborn==0.12.2","starlette==0.22.0","statsmodels==0.13.5",
25
+ # "ta==0.10.2","yfinance==0.2.9","hmmlearn==0.3.0","boto3"],
26
26
  extras_require={
27
27
  "dev": ["pytest>=7.0"],
28
28
  },
@@ -0,0 +1,71 @@
1
+ from plotly.subplots import make_subplots
2
+ import plotly.graph_objects as go
3
+ from mapie.classification import MapieClassifier
4
+ from sklearn.pipeline import Pipeline
5
+ import mlflow
6
+ import numpy as np
7
+
8
+
9
+ def get_conformal_classifiers(model, data, targets):
10
+ classfiers = list()
11
+ for i, _ in enumerate(model['model'].estimators_):
12
+ seg_model = Pipeline([
13
+ ('pipe',model['pipe_transform']),
14
+ ('model',model['model'].estimators_[i])
15
+ ])
16
+ mapie_class = MapieClassifier(seg_model, cv='prefit', random_state=123, method="lac")
17
+ mapie_class.fit(data, data[targets[i]].values)
18
+ classfiers.append(mapie_class)
19
+ return classfiers
20
+
21
+ def log_confmodels(runid, classifiers):
22
+ with mlflow.start_run(run_id=runid) as run:
23
+ for i,classifier in enumerate(classifiers):
24
+ mlflow.sklearn.log_model(classifier,f"conformal/conformal_model-{i}")
25
+ print('models were logged')
26
+
27
+ def load_confmodel(runid, target_variables):
28
+ classifiers = list()
29
+ for i in range(len(target_variables)):
30
+ folder = f"conformal/conformal_model-{i}"
31
+ model = mlflow.sklearn.load_model(f"runs:/{runid}/{folder}")
32
+ classifiers.append(model)
33
+ return classifiers
34
+
35
+
36
+ def get_conformal_prediction(classifier, alphas, data, prefix='conf'):
37
+ _, y_pis = classifier.predict(data, alpha=alphas)
38
+ for i,alpha in enumerate(alphas):
39
+ data[f'{prefix}-{alpha}'] = y_pis[:,1,i]
40
+ data[f'{prefix}-{alpha}'] = np.where(data[f'{prefix}-{alpha}'] == True,alpha,0)
41
+ return data
42
+
43
+ def edge_conformal_lines(data, alphas,threshold = 0.6, plot = False, look_back = 750, offset = 0.08):
44
+ ### corect labels ####
45
+ df = data.sort_values('Date').iloc[-look_back:]
46
+ fig = make_subplots(specs=[[{"secondary_y": True}]])
47
+ fig.add_trace(go.Scatter(x=df.Date, y=df.Close,mode='lines+markers',marker = dict(color = 'grey'),line = dict(color = 'grey'),name='Close price'))
48
+ fig.add_trace(go.Scatter(x=df.Date, y=df.proba_target_up,mode='lines',marker = dict(color = 'blue'),showlegend=True,legendgroup='go up', name='go up'),secondary_y=True)
49
+ fig.add_trace(go.Scatter(x=df.Date, y=df.proba_target_down,mode='lines',marker = dict(color = 'coral'),showlegend=True,legendgroup='go down',name='go down'),secondary_y=True)
50
+ for i,alpha in enumerate(alphas, start=1):
51
+ try:
52
+ col_alpha = [x for x in df.columns if str(alpha) in x and 'target_up' in x][0]
53
+ df_ = df[df[col_alpha] != 0]
54
+ fig.add_trace(go.Scatter(x=df_.Date, y=df_.proba_target_up + (offset*i),mode='markers',marker = dict(opacity=0.7,size=10, color = 'blue')
55
+ ,showlegend=False,legendgroup='go up',name='go up', text=df_[col_alpha],textposition="bottom center")
56
+ , secondary_y=True)
57
+ except:
58
+ pass
59
+ try:
60
+ col_alpha = [x for x in df.columns if str(alpha) in x and 'target_down' in x][0]
61
+ df_ = df[df[col_alpha] != 0]
62
+ fig.add_trace(go.Scatter(x=df_.Date, y=df_.proba_target_down + (offset*i),mode='markers',marker = dict(opacity=0.7,size=10, color = 'coral')
63
+ ,showlegend=False,legendgroup='go down', name='go down',text=df_[col_alpha].astype(str),textposition="bottom center")
64
+ , secondary_y=True)
65
+ except:
66
+ pass
67
+ fig.add_shape(type="line", xref="paper", yref="y2",x0=0.02, y0=threshold, x1=0.9, y1=threshold,line=dict(color="red",dash="dash"))
68
+ fig.update_layout(title_text="sirius - edge probabilities conformal",width=1200,height = 500)
69
+ if plot:
70
+ fig.show()
71
+ return fig
@@ -9,7 +9,10 @@ from feature_engine.imputation import MeanMedianImputer
9
9
  from feature_engine.discretisation import EqualWidthDiscretiser
10
10
  from feature_engine.datetime import DatetimeFeatures
11
11
 
12
- from .transformer_utils import VirgoWinsorizerFeature, InverseHyperbolicSine, FeaturesEntropy, FeatureSelector
12
+ from ..transformer_utils import VirgoWinsorizerFeature, InverseHyperbolicSine, FeaturesEntropy, FeatureSelector
13
+
14
+ from plotly.subplots import make_subplots
15
+ import plotly.graph_objects as go
13
16
 
14
17
  class produce_model_wrapper:
15
18
  """
@@ -386,4 +389,29 @@ class ExpandingMultipleTimeSeriesKFold:
386
389
  -------
387
390
  number_window (int): number of splits
388
391
  """
389
- return self.number_window
392
+ return self.number_window
393
+
394
+ def edge_probas_lines(data, threshold, plot = False, look_back = 750):
395
+ """
396
+ produce a plotly plot of edges and closing prices
397
+
398
+ Parameters:
399
+ data (pd.DataFrame): asset data with edge probabilities
400
+ plot (boolean): if true, display plot
401
+ threshold (float): edge threshold
402
+ look_back (int): number of rows back to display
403
+
404
+ Returns:
405
+ fig (obj): plotly go object
406
+ """
407
+ df = data[['Date','Close','proba_target_down','proba_target_up']].iloc[-look_back:]
408
+
409
+ fig = make_subplots(specs=[[{"secondary_y": True}]])
410
+ fig.add_trace(go.Scatter(x=df.Date, y=df.Close,mode='lines+markers',name='Close price'))
411
+ fig.add_trace(go.Scatter(x=df.Date, y=df.proba_target_down,mode='lines',marker = dict(color = 'coral'),name='go down'),secondary_y=True)
412
+ fig.add_trace(go.Scatter(x=df.Date, y=df.proba_target_up,mode='lines',marker = dict(opacity=0.1,size=80), name='go up'),secondary_y=True)
413
+ fig.add_shape(type="line", xref="paper", yref="y2",x0=0.02, y0=threshold, x1=0.9, y1=threshold,line=dict(color="red",dash="dash"),)
414
+ fig.update_layout(title_text="sirius - edge probabilities",width=1200,height = 500)
415
+ if plot:
416
+ fig.show()
417
+ return fig
@@ -0,0 +1,81 @@
1
+ import shap
2
+ import mlflow
3
+ import pandas as pd
4
+ import numpy as np
5
+ from plotly.subplots import make_subplots
6
+ import plotly.graph_objects as go
7
+
8
+ def get_explainers(model, data):
9
+ explainers = list()
10
+ for i, _ in enumerate(model['model'].estimators_):
11
+ transf_data = model['pipe_transform'].transform(data)
12
+ predictor = model['model'].estimators_[i]
13
+ explainer= shap.Explainer(predictor, transf_data)
14
+ explainers.append(explainer)
15
+ return explainers
16
+
17
+ def log_explainer(runid, classifiers):
18
+ with mlflow.start_run(run_id=runid) as run:
19
+ for i,classifier in enumerate(classifiers):
20
+ mlflow.sklearn.log_model(classifier,f"explainer/explainer-{i}")
21
+ print('models were logged')
22
+
23
+ def load_explainer(runid, target_variables):
24
+ explainers = list()
25
+ for i in range(len(target_variables)):
26
+ folder = f"explainer/explainer-{i}"
27
+ model = mlflow.sklearn.load_model(f"runs:/{runid}/{folder}")
28
+ explainers.append(model)
29
+ return explainers
30
+
31
+ def get_shapvalues(explainers, data):
32
+ shap_values = {}
33
+ for i,explainer in enumerate(explainers):
34
+ shap_value_i = explainer(data)
35
+ shap_values[i] = shap_value_i
36
+ return shap_values
37
+
38
+ def get_explainerclusters(model, data, targets):
39
+ clustermodels = list()
40
+ for i, _ in enumerate(model['model'].estimators_):
41
+ transf_data = model['pipe_transform'].transform(data)
42
+ Y = data[targets[i]]
43
+ cluster_model = shap.utils.hclust(transf_data, Y)
44
+ clustermodels.append(cluster_model)
45
+ return clustermodels
46
+
47
+ def mean_shap(data, explainers, pipe_transform):
48
+ t_data = pipe_transform.transform(data)
49
+ input_features = t_data.columns
50
+ shap_results = get_shapvalues(explainers,t_data)
51
+ arrays_ = list()
52
+ for k,_ in shap_results.items():
53
+ arrays_.append(shap_results.get(k).values)
54
+ shap_results_mean = np.mean(np.array(arrays_), axis = 0)
55
+ df_shap = pd.DataFrame(shap_results_mean, columns=input_features, index=data.index)
56
+ df_shap['Close'] = data['Close']
57
+ df_shap['Date'] = data['Date']
58
+ return df_shap
59
+
60
+ def edge_shap_lines(data, dict_shap_values, plot = False, look_back = 750):
61
+ ### corect labels ####
62
+ df = data.sort_values('Date').iloc[-look_back:]
63
+ fig = make_subplots(specs=[[{"secondary_y": True}]])
64
+ fig.add_trace(go.Scatter(x=df.Date, y=df.Close,mode='lines+markers',marker = dict(color = 'grey'),line = dict(color = 'grey'),name='Close price'))
65
+ top_features_shap = dict_shap_values.keys()
66
+ for col in top_features_shap:
67
+ fig.add_trace(go.Scatter(x=df.Date, y=df[col],mode='lines+markers',name=dict_shap_values.get(col).get('tag')),secondary_y=True)
68
+ fig.update_layout(title_text="sirius - feature power",width=1200,height = 500)
69
+ if plot:
70
+ fig.show()
71
+ return fig
72
+
73
+ def log_top_shap(runid, top_shap):
74
+ with mlflow.start_run(run_id=runid) as run:
75
+ mlflow.log_dict(top_shap,f"explainer/top_shap.json")
76
+ print('artifact was logged')
77
+
78
+ def load_top_shap(runid):
79
+ folder = f"explainer/top_shap.json"
80
+ top_shap = mlflow.artifacts.load_dict(f"runs:/{runid}/{folder}")
81
+ return top_shap
@@ -1574,8 +1574,9 @@ def produce_probas(model,data, target_variables):
1574
1574
  """
1575
1575
  label_prediction = ['proba_'+x for x in target_variables]
1576
1576
  predictions = model.predict_proba(data)
1577
+ if isinstance(predictions, list):
1578
+ predictions = np.array([ x[:,1].T for x in predictions]).T
1577
1579
  predictions = pd.DataFrame(predictions, columns = label_prediction, index = data.index)
1578
-
1579
1580
  result_df = pd.concat([data, predictions], axis=1)
1580
1581
  result_df = result_df[['Date'] + target_variables + label_prediction]
1581
1582
 
@@ -1604,27 +1605,9 @@ def produce_signals(result_df, feature_name, threshold, label_prediction):
1604
1605
 
1605
1606
  return result_df
1606
1607
 
1607
- def edge_probas_lines(data, threshold, plot = False, look_back = 750):
1608
- """
1609
- produce a plotly plot of edges and closing prices
1610
-
1611
- Parameters:
1612
- data (pd.DataFrame): asset data with edge probabilities
1613
- plot (boolean): if true, display plot
1614
- threshold (float): edge threshold
1615
- look_back (int): number of rows back to display
1616
-
1617
- Returns:
1618
- fig (obj): plotly go object
1619
- """
1620
- df = data[['Date','Close','proba_target_down','proba_target_up']].iloc[-look_back:]
1621
-
1622
- fig = make_subplots(specs=[[{"secondary_y": True}]])
1623
- fig.add_trace(go.Scatter(x=df.Date, y=df.Close,mode='lines+markers',name='Close price'))
1624
- fig.add_trace(go.Scatter(x=df.Date, y=df.proba_target_down,mode='lines',marker = dict(color = 'coral'),name='go down'),secondary_y=True)
1625
- fig.add_trace(go.Scatter(x=df.Date, y=df.proba_target_up,mode='lines',marker = dict(opacity=0.1,size=80), name='go up'),secondary_y=True)
1626
- fig.add_shape(type="line", xref="paper", yref="y2",x0=0.02, y0=threshold, x1=0.9, y1=threshold,line=dict(color="red",dash="dash"),)
1627
- fig.update_layout(title_text="sirius - edge probabilities",width=1200,height = 500)
1628
- if plot:
1629
- fig.show()
1630
- return fig
1608
+ def clean_cols(data, patterns):
1609
+ drop_cols = list()
1610
+ for pattern in patterns:
1611
+ drop_cols = drop_cols + [ x for x in data.columns if pattern in x]
1612
+ data = data.drop(columns = drop_cols)
1613
+ return data
@@ -1287,7 +1287,7 @@ class stock_eda_panel(object):
1287
1287
 
1288
1288
  setattr(self,f'settings_{name_attr}_pricefeature' , {'type_func': type_func, 'window': window, 'distance': distance})
1289
1289
 
1290
- def pair_index_feature(self, pair_symbol, feature_label, window, threshold, plot = False, save_features = False):
1290
+ def pair_index_feature(self, pair_symbol, feature_label,threshold, window = None,ta_method='ROC',param_set=False,plot = False, save_features = False):
1291
1291
  """
1292
1292
  perform additional asset ROC feature, then a new feature is created in the main dataframe
1293
1293
 
@@ -1295,8 +1295,10 @@ class stock_eda_panel(object):
1295
1295
  ----------
1296
1296
  pair_symbol (str): symbol of the asset to extract the data
1297
1297
  feature_label (str): name of the resulting feature
1298
- window (int): window to apply to the feature
1298
+ window (int): window to apply to the feature as default (this parameter is going to be deprecated)
1299
1299
  threshold (float): alpha or z thrsholds for the normalized feature
1300
+ param_set (dict): parameter set in case ta_method is other than ROC
1301
+ ta_method (str): method to use, available RSI, ROC, VORTEX, STOCH
1300
1302
  plot (boolean): True to display plot
1301
1303
  save_features (boolean): True to save feature configuration and feature names
1302
1304
 
@@ -1326,7 +1328,20 @@ class stock_eda_panel(object):
1326
1328
  self.pair_index_df = self.pair_index_df.fillna(method = 'bfill')
1327
1329
  self.pair_index_df = self.pair_index_df.fillna(method = 'ffill')
1328
1330
 
1329
- self.pair_index_df[feature_label] = ROCIndicator(close = self.pair_index_df['Close'], window = window).roc()
1331
+ if ta_method == 'ROC':
1332
+ window = window if window else param_set.get('window')
1333
+ roc = ROCIndicator(close = self.pair_index_df['Close'], window = window).roc()
1334
+ self.pair_index_df[feature_label] = roc.replace([np.inf, -np.inf], 0).fillna(method = 'ffill')
1335
+ elif ta_method == 'RSI':
1336
+ rsi = RSIIndicator(close = self.pair_index_df['Close'], **param_set).rsi()
1337
+ self.pair_index_df[feature_label] = rsi.replace([np.inf, -np.inf], 0).fillna(method = 'ffill')
1338
+ elif ta_method == 'VORTEX':
1339
+ vortex = VortexIndicator(close = self.pair_index_df['Close'], high = self.pair_index_df['High'], low = self.pair_index_df['Low'], **param_set).vortex_indicator_diff()
1340
+ self.pair_index_df[feature_label] = vortex.replace([np.inf, -np.inf], 0).fillna(method = 'ffill')
1341
+ elif ta_method == 'STOCH':
1342
+ stoch = StochRSIIndicator(close = self.pair_index_df['Close'], **param_set).stochrsi()
1343
+ self.pair_index_df[feature_label] = stoch.replace([np.inf, -np.inf], 0).fillna(method = 'ffill')
1344
+
1330
1345
  df_to_merge = self.pair_index_df[['Date',feature_label]]
1331
1346
  self.df = self.df.merge(df_to_merge, on ='Date',how = 'left')
1332
1347
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: virgo-modules
3
- Version: 0.2.9
3
+ Version: 0.3.0
4
4
  Summary: data processing and statistical modeling using stock market data
5
5
  Home-page: https://github.com/miguelmayhem92/virgo_module
6
6
  Author: Miguel Mayhuire
@@ -12,23 +12,6 @@ Classifier: Operating System :: OS Independent
12
12
  Requires-Python: >=3.9, <3.10
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: feature-engine==1.6.1
16
- Requires-Dist: matplotlib==3.6.3
17
- Requires-Dist: mlflow==2.1.1
18
- Requires-Dist: numpy==1.23.5
19
- Requires-Dist: optuna==3.1.0
20
- Requires-Dist: pandas==1.5.3
21
- Requires-Dist: plotly==5.15.0
22
- Requires-Dist: rsa==4.9
23
- Requires-Dist: scikit-learn==1.2.1
24
- Requires-Dist: scipy==1.10.0
25
- Requires-Dist: seaborn==0.12.2
26
- Requires-Dist: starlette==0.22.0
27
- Requires-Dist: statsmodels==0.13.5
28
- Requires-Dist: ta==0.10.2
29
- Requires-Dist: yfinance==0.2.9
30
- Requires-Dist: hmmlearn==0.3.0
31
- Requires-Dist: boto3
32
15
  Provides-Extra: dev
33
16
  Requires-Dist: pytest>=7.0; extra == "dev"
34
17
 
@@ -10,9 +10,12 @@ virgo_app/virgo_modules.egg-info/top_level.txt
10
10
  virgo_app/virgo_modules/src/__init__.py
11
11
  virgo_app/virgo_modules/src/aws_utils.py
12
12
  virgo_app/virgo_modules/src/backtester.py
13
- virgo_app/virgo_modules/src/edge_utils.py
14
13
  virgo_app/virgo_modules/src/hmm_utils.py
15
14
  virgo_app/virgo_modules/src/pull_artifacts.py
16
15
  virgo_app/virgo_modules/src/re_utils.py
17
16
  virgo_app/virgo_modules/src/ticketer_source.py
18
- virgo_app/virgo_modules/src/transformer_utils.py
17
+ virgo_app/virgo_modules/src/transformer_utils.py
18
+ virgo_app/virgo_modules/src/edge_utils/__init__.py
19
+ virgo_app/virgo_modules/src/edge_utils/conformal_utils.py
20
+ virgo_app/virgo_modules/src/edge_utils/edge_utils.py
21
+ virgo_app/virgo_modules/src/edge_utils/shap_utils.py
@@ -0,0 +1,3 @@
1
+
2
+ [dev]
3
+ pytest>=7.0
@@ -1,20 +0,0 @@
1
- feature-engine==1.6.1
2
- matplotlib==3.6.3
3
- mlflow==2.1.1
4
- numpy==1.23.5
5
- optuna==3.1.0
6
- pandas==1.5.3
7
- plotly==5.15.0
8
- rsa==4.9
9
- scikit-learn==1.2.1
10
- scipy==1.10.0
11
- seaborn==0.12.2
12
- starlette==0.22.0
13
- statsmodels==0.13.5
14
- ta==0.10.2
15
- yfinance==0.2.9
16
- hmmlearn==0.3.0
17
- boto3
18
-
19
- [dev]
20
- pytest>=7.0
File without changes
File without changes
File without changes