{% extends "base.html" %} {% block title %}Forecasting Lab{% endblock %} {% block page_title %}Forecasting Lab{% endblock %} {% block content %}
| Type | {{ forecast_labels.get(view_forecast.forecast_type, view_forecast.forecast_type)|replace('_', ' ')|title }} |
| Method | {{ view_forecast.method|replace('_', ' ')|title }} |
| Horizon | {{ view_forecast.horizon_days }} days |
| Status | {{ view_forecast.status|title }} |
| MAE | {{ "%.2f"|format(view_forecast.accuracy_mae) }} |
| RMSE | {{ "%.2f"|format(view_forecast.accuracy_rmse) }} |
| MAPE | {{ "%.2f"|format(view_forecast.accuracy_mape) }}% |
{{ summary.direction_icon }} {{ summary.trend|title }} Trend Detected
{{ summary.recommendation }}
| Date | Forecast | Lower Bound | Upper Bound | Range Width |
|---|---|---|---|---|
| {{ r.date.strftime('%Y-%m-%d') }} | {{ currency_symbol }}{{ "{:,.0f}".format(r.value) }} | {{ currency_symbol }}{{ "{:,.0f}".format(r.lower_bound) if r.lower_bound else '—' }} | {{ currency_symbol }}{{ "{:,.0f}".format(r.upper_bound) if r.upper_bound else '—' }} | {% if r.lower_bound and r.upper_bound %} {% set width = r.upper_bound - r.lower_bound %} {% set pct = (width / r.value * 100) if r.value != 0 else 0 %} {{ "{:.1f}%".format(pct) }} {% else %} — {% endif %} |
| Name | Type | Method | Horizon | Status | Actions |
|---|---|---|---|---|---|
| {{ fc.name }} | {{ forecast_labels.get(fc.forecast_type, fc.forecast_type)|replace('_', ' ')|title }} | {{ fc.method|replace('_', ' ')|title }} | {{ fc.horizon_days }}d | {{ fc.status|title }} | View |
No forecasts yet
Create your first forecast using the form on the left.