Source code for timesmith.eval.summary

"""Summary functions for backtest results."""

import logging
from typing import Dict

from timesmith.results.backtest import BacktestResult

logger = logging.getLogger(__name__)


[docs] def summarize_backtest(result: BacktestResult) -> Dict: """Summarize backtest results with aggregate and per-fold metrics. Args: result: BacktestResult from backtest_forecaster. Returns: Dictionary with aggregate metrics and per-fold metrics DataFrame. """ summary = { "aggregate_metrics": result.summary.copy(), "n_folds": len(result.results), } if result.per_fold_metrics is not None: summary["per_fold_metrics"] = result.per_fold_metrics.copy() return summary