Projection

Six granularities (hourly, daily, weekly, monthly, quarterly, annual), each with a horizon sized to fit (168 hours, 90 days, 52 weeks, 24 months, 8 quarters, 5 years). Point estimate plus 50, 80, and 95 percent prediction intervals calibrated empirically from walk-forward residuals.

Drivers

Every other numeric series in your workspace is tested against the target. Pearson, Spearman, and cross-lag windows up to 14 days. Benjamini-Hochberg controls the false discovery rate at q=0.05.

Anomalies

Detrended z-scores combined with an IQR fence. Severity labels (mild, moderate, severe) match what you would call them in a meeting.

Structural changes

Segmented OLS finds points where the slope changed and reports the before and after rates. Useful for spotting when a new channel or pricing change rewrote the trend.

Three steps from connect to projection

1

Pick the metric

From Forecasting → New, choose any source already in the workspace: a metric on a generated report, a dashboard widget value, a goal's progress, or a raw column on a connected data source.

2

Set the schedule

Default is monthly at 2 AM UTC. Switch to daily or weekly for fast-moving series, or set the cadence to manual if you only want to run it on demand. Each run consumes credits based on history length and how many correlated series it had to forecast.

3

Read the result

The detail page shows the historical series and the projection in one continuous chart with three nested confidence bands (50, 80, 95 percent) shaded over the forecast portion as a fan chart. An AI narrative summarises the headline outlook, highlights the most decision-relevant facts, risks, and recommendations, plus the methodology behind the chosen method. Below the chart sits the table of correlated drivers with their lag, FDR-adjusted q-value, and block-bootstrap stability, then the list of anomalies and structural changepoints (level or variance) from the historical series with the exact dates they occurred. A separate Trust tab compares each past run's projection against the actuals that have since materialised, so you can see whether your forecasts have been getting more accurate over time.

Twelve methods, the one that wins your data

Most forecasting tools pick a method up front and live with it. clariBI runs every applicable method through a walk-forward backtest, scores them with sMAPE, MAPE, and RMSE, and reports the winner. A per-organization cache keyed on the series fingerprint (length, trend strength, seasonality, variability, granularity, horizon bucket) skips the backtest when a similar series has already been characterised. You can also pin a specific method via method override when you know your data.

Baselines

When in doubt, simple wins.

Naive Seasonal Naive Moving Average Drift

Statistical

Closed form, fits in milliseconds.

Linear Trend (OLS) AR(p) with AIC selection Holt-Winters (additive) Holt-Winters (multiplicative) Holt-Winters (damped) STL-Theta

Machine learning + ensemble

Picks up non-linear regimes the others miss; ensemble averages the top three by backtest sMAPE.

Gradient Boosting (lag + rolling + seasonal phase) Ensemble Top-3

No statsmodels, no scipy. Implemented on numpy, pandas, and scikit-learn so cold starts stay fast and the Docker image stays small. Optional log transform for revenue-style series with multiplicative noise; optional non-negative clamp for count metrics. When a stable leading-indicator exists in your workspace, the gradient-boost path pins it as an exogenous regressor to close the loop between correlation discovery and the headline forecast.

Drivers, with the fragility flagged

Discovery is half the battle. Knowing which correlations will hold up is the other half. Every reported driver carries three signals so you can act on the strong ones and ignore the lucky ones.

Direction and lag

Positive or negative Pearson and Spearman, plus the lag in days that maximises the correlation. A driver that leads the target by 7 days is more actionable than one that moves with it.

Adjusted p-value

Benjamini-Hochberg correction across every candidate pair. With 50 candidate series you would expect ~2.5 false hits at p<0.05; the q-value column tells you which survive the correction.

Bootstrap stability

A 200-iteration bootstrap resample gives an 80 percent confidence interval on the correlation. If the interval crosses zero, the driver is flagged as fragile so you know to discount it.

Honest credit math

Each run is priced on what it actually costs to compute, with a floor of 1 credit and a cap of 10. Cached series with no correlation work cost the floor. The pricing modal shows the breakdown before you commit.

cost = 1                                       # base run
     + (2 if target method not cached)         # backtest
     + ceil(correlated_count / 4)              # discovered drivers
     + (1 if history_days > 180)               # long history
     + (1 if granularity == 'weekly'           # weekly long history
        and history_days > 365)

floor = 1, cap = 10

Same feature, every surface

Forecasts are not a UI-only feature. The same configuration, scheduling, and run history are reachable from the public REST API and from any MCP-aware LLM client.

REST API

POST /api/v1/forecasts/
{
  "name": "Weekly MRR",
  "source_type": "data_source",
  "source_id": "...",
  "metric_path": "mrr",
  "granularity": "weekly",
  "horizon_days": 60,
  "schedule_frequency": "weekly"
}

Scopes: forecasts:read, forecasts:write, forecasts:run.

MCP from Claude or Cursor

// Tools available to your LLM
list_forecasts
get_forecast
get_forecast_run
get_forecast_trust
create_forecast
run_forecast
regenerate_forecast_narrative

Ask "Forecast our MRR for the next two months and tell me which channels are driving it."

Forecast your first metric in five minutes

Connect a data source, pick a column, and pick a cadence. clariBI runs the backtest on the spot and projects the next 30 days.