Source code for finstmt.forecast.models.chooser

from typing import Type

from finstmt.forecast.config import ForecastConfig, ForecastItemConfig
from finstmt.forecast.models.average import AverageModel
from finstmt.forecast.models.base import ForecastModel
from finstmt.forecast.models.cagr import CAGRModel
from finstmt.forecast.models.manual import ManualForecastModel
from finstmt.forecast.models.prophet import FBProphetModel
from finstmt.forecast.models.recent import RecentValueModel
from finstmt.forecast.models.trend import LinearTrendModel
from finstmt.items.config import ItemConfig


[docs]def get_model( config: ForecastConfig, item_config: ForecastItemConfig, base_config: ItemConfig ) -> ForecastModel: model_class: Type[ForecastModel] if item_config.method == "auto": model_class = FBProphetModel elif item_config.method == "trend": model_class = LinearTrendModel elif item_config.method == "cagr": model_class = CAGRModel elif item_config.method == "mean": model_class = AverageModel elif item_config.method == "recent": model_class = RecentValueModel elif item_config.method == "manual": model_class = ManualForecastModel else: raise NotImplementedError(f"need to implement method {item_config.method}") return model_class(config, item_config, base_config)