Skip to main content

SingleSampleForecastPayload

class SingleSampleForecastPayload(BaseModel):
    sample_id: Any
    timestamps: List[str]
    values: List[Optional[float]]
    model_name: str
    quantiles: Optional[dict[str, List[Optional[float]]]] = None

Parameters

sample_id

Type: Any Unique identifier for the sample. Must match the input sample_id.

timestamps

Type: List[str] List of timestamp strings for the forecasted values. Must be in ISO format or compatible with pandas datetime parsing.

values

Type: List[Optional[float]] List of forecasted values corresponding to timestamps. None values represent missing or invalid forecasts.

model_name

Type: str Name of the model used to generate the forecast. Must be a non-empty string.

quantiles

Type: Optional[dict[str, List[Optional[float]]]] Default: None Optional quantile forecasts. Keys are quantile levels as strings (e.g., “0.1”, “0.5”, “0.9”), and values are lists of forecasted values at that quantile level. When provided, each quantile list must have the same length as timestamps.

Raises

ValueError

  • If timestamps or values lists are empty
  • If timestamps and values have mismatched lengths
  • If model_name is empty or whitespace

Notes

  • NaN values in values are converted to None for JSON compatibility
  • model_name is automatically trimmed of whitespace
  • Each forecast represents predictions for one time series column
  • When quantiles are provided, they are excluded from JSON output when None
  • Quantile values are also converted from NaN to None for JSON compatibility

Examples

Basic Forecast

forecast = SingleSampleForecastPayload(
    sample_id="sales",
    timestamps=["2023-01-04", "2023-01-05"],
    values=[130.0, 140.0],
    model_name="Migas-1.0"
)

Forecast with Missing Values

forecast = SingleSampleForecastPayload(
    sample_id="temperature",
    timestamps=["2023-01-04", "2023-01-05"],
    values=[23.0, None],  # Missing forecast for 2023-01-05
    model_name="Migas-1.0"
)

Forecast with Quantiles

forecast = SingleSampleForecastPayload(
    sample_id="sales",
    timestamps=["2023-01-04", "2023-01-05"],
    values=[130.0, 140.0],  # Point forecasts (median)
    model_name="Migas-1.0",
    quantiles={
        "0.1": [110.0, 118.0],   # 10th percentile
        "0.5": [130.0, 140.0],   # 50th percentile (median)
        "0.9": [150.0, 162.0]    # 90th percentile
    }
)

See Also