Source code for babao.models.rootModel
"""
Root Model, base of the models tree
"""
import pandas as pd
import babao.utils.log as log
import babao.utils.date as du
from babao.models.modelBase import ABCModel
from babao.models.tree.extremaModel import ExtremaModel
# from babao.models.tree.tendencyModel import TendencyModel
# from babao.models.tree.macdModel import MacdModel
from babao.utils.enum import ActionEnum, CryptoEnum, cryptoAndActionTotrade
MIN_PROBA = 1e-2
[docs]class RootModel(ABCModel):
"""
Root Model, base of the models tree
Not modeling much, but handle the call of the dependencies predictions
"""
dependencies_class = [
ExtremaModel,
# TendencyModel,
# MacdModel,
]
need_training = False
[docs] def predict(self, since):
"""Call predict on the dependencies, then somehow merge the results"""
for model in self.dependencies: # de-bug loop
pred_df = model.predict(since)
pred_df = pd.DataFrame(
(pred_df["buy"] - pred_df["sell"]).values, columns=["action"]
)
last_pred = pred_df.iat[-1, 0]
log.debug(
model.__class__.__name__, "prediction:",
du.toStr(du.TIME_TRAVELER.getTime()),
last_pred, ActionEnum(round(last_pred))
)
pred_df = (
(pred_df < -MIN_PROBA).astype(int).replace(1, ActionEnum.SELL.value)
+ (pred_df > MIN_PROBA).astype(int).replace(1, ActionEnum.BUY.value)
).replace(0, ActionEnum.HODL.value)
return cryptoAndActionTotrade(CryptoEnum.XBT.value, pred_df)
[docs] def plot(self, since):
pass
[docs] def train(self, since):
pass