UTC --:--:--
Provider skill

The weights are per cell.

Use the forecast source that has earned trust for this decision. Goable weights forecast sources by measured performance for the variable, region and horizon, then checks eligible forecasts against representative observations.

01
The problem

No provider is best everywhere

Any single weather forecast is accurate somewhere and drifts off elsewhere. Provider performance varies by variable, region, horizon and available reference data. Goable estimates that performance continuously and reports the source mix used in each decision. Average sources naively, with a plain mean, and you inherit everyone's weakness equally, which makes the result mediocre everywhere.

02
The forecasts

The forecast sources

Open-Meteo
Model aggregator API (ICON, GFS, ECMWF, GEM)

The always-on forecast blend, spanning land and atmospheric variables globally.

Live
Stormglass
Marine and weather API aggregator; lineage varies per variable

A second forecast opinion, used when its API key is set.

When key is set
Meteomatics
Commercial multi-model forecast

A distinct model chain rather than more of the same blend, where the contract is active.

Contracted, plan-gated
03
Reference taxonomy

Every source carries its type

A reference is only as good as the honesty about what kind of thing it is. Each source type has a role, and a reanalysis is never dressed up as a live observation.

in_situ_observation

A physical instrument measuring where it stands (buoy, METAR). Reality check and near-real-time correction when QC and representativeness pass.

satellite_observation

A gridded measurement from orbit, for example CMEMS sea-surface temperature.

forecast_model

A future-state prediction used for decision support, labelled as a model.

reanalysis

ERA5: a consistent historical and regime baseline for backtesting. Not a live truth.

operator_outcome

An operational outcome reported by an operator. A programme concept, not a physical measurement.

derived_metric

A score, confidence, skill or drift value computed by Goable. Not a physical measurement.

04
Observations

Eligible observations can constrain the forecast

A blend of models is still a blend of predictions. So where a representative, fresh observation sits near your spot, it can constrain, correct or lower confidence in the forecast state, according to variable-specific representativeness and QC rules. Some sources can override a value; others only validate. Every score that used a check carries its provenance.

How a score is built
Multiple forecast models
several independent providers
Blended by measured skill
per region · variable · horizon
Checked against real observations
METAR · satellite (CMEMS) · lightning
Physics engine
25+ formulas, 20 namespaces
0–100 score
verdict + confidence
CMEMS sea-surface temperature
satellite_observation · can correct

Ingested by a cron and applied at score time. Can correct forecast SST when a fresh, representative reading diverges past the per-variable threshold. Available in covered regions.

Buoy observations
in_situ_observation · can correct

Where a representative moored buoy reports recently, it can correct forecast wave height, sea temperature or wind, threshold-gated per variable.

METAR / SPECI
in_situ_observation · can correct

Broadly available aviation observations. Used only where a station is representative, fresh and passes QC under the local confidence policy, not everywhere.

CMEMS wave
satellite_observation · deployment-specific

The reader is wired, but ingest is partial: period and direction stubs are not yet on. Availability is deployment and region specific.

CMEMS ocean-colour (water clarity, Kd490)
satellite_observation · deployment-specific

Reads the CMEMS ocean-colour Kd490 diffuse-attenuation product as a direct optical turbidity measurement for water clarity. When a fresh satellite pass exists it supersedes the rainfall-derived turbidity proxy; otherwise it falls back to that proxy. Availability is deployment and region specific.

CMEMS surface current
forecast_model · deployment-specific

Reads the CMEMS daily-mean surface current (uo/vo) to fill tidal current speed where the harmonic tide model is blind: far from a tide station, or in microtidal basins such as the Mediterranean. Availability is deployment and region specific.

Tide gauge, river, snow
validate-only

These annotate the forecast with the observed value and the gap, and never override it. A transparency check, not a correction.

Lightning strikes
in_situ_observation · gate

Real observed strikes from XWeather (Vaisala GLD360), fetched by a live per-score lookup and only when a forecast CAPE / lifted-index gate flags genuine near-term storm risk near the spot — so calm or far-out windows never query it. They blend with the CAPE-based estimate and raise lightning_proximity toward the universal hard safety gate, globally. Activates in production as the XWeather strike credentials roll out.

The response surfaces the real fields for each corrected value: source_type, overridden, validated, stale_minutes and source_distance_km. When no eligible observation is nearby, the score leans on the model consensus and says so. It never invents an observation to look more confident.

POST /v1/score · response sliceillustrative
{
"wave_height": {
"source_type": "in_situ_observation",
"overridden": true,
"validated": true,
"stale_minutes": 18,
"source_distance_km": 4.2
},
"sea_surface_temperature": {
"source_type": "satellite_observation",
"overridden": false,
"validated": true,
"stale_minutes": 240,
"source_distance_km": 7.9
}
}
05
The blend

Variance-weighted consensus, per cell

A variance-weighted consensus is the baseline. Each provider's per-cell error is estimated over a rolling window: ERA5 provides a consistent historical reference for broad-scale regime and backtesting, and where representative observations exist, provider skill and operational bias are evaluated against those observations. All references stay labelled by source type.

forecast_consensus(c)  =  Sum_p  ( w_p(c) . forecast_p(c) )

where  w_p(c)  =  (1/s2_p(c)) / Sum_j (1/s2_j(c))

       s2_p(c)  <- per-provider MSE over a rolling window
       c        = (region, variable, horizon_h)
What the baseline does and does not do
  • Pooled per (region × variable × horizon) at a 30-sample minimum. A stratum is published only at n greater than or equal to 30; below that the weights are withheld, not guessed.
  • Per-provider bias is measured and reported as a diagnostic. It is not applied as a separate correction step; the inverse-variance weight already uses error that includes bias.
  • Dependence handling for providers that share an upstream model is a future refinement, not a current step.
  • The zero-mean and independence assumptions this rests on are approximations, not guarantees.
06
Stratification

Why per cell, not per company

The skill estimate is keyed on a cell, not on a company. Cell granularity is the difference between "this source is good in Spain" and "this source is good at wave_period in Western Mediterranean coastal cells at horizons up to 48h". Only the second is precise enough to weight a forecast on.

region

European coastal versus North American, tropical versus alpine, coastal versus offshore. The same source's skill varies across regions.

variable

Wind speed versus wind direction versus wave height versus precipitation. A source may do well on one and poorly on another.

horizon

0 to 24h versus 24 to 72h versus 72 to 168h. Different physics dominate at different horizons.

07
Capability status

What is live, and what is not

Not every layer is globally live. This is the honest status of each capability, so nothing here reads as if the whole stack ships everywhere today.

Forecast blendingAvailable
ERA5 provider priorAvailable
Stormglass second opinionWhen its key is set
Meteomatics modelContracted, plan-gated
METAR validationAvailable where representative
CMEMS SST correctionAvailable in covered regions
CMEMS wave correctionDeployment-specific
CMEMS ocean-colour water clarityDeployment-specific
CMEMS surface currentDeployment-specific
Lightning gateLive per-score, storm-gated; prod on credential rollout
Outcome-based calibrationEarly, pre-revenue
Public verification exportLive, partial coverage
08
Recalibration

The refit

The provider-skill weights are refit on a schedule: recent forecasts are scored against their reference, each cell's weighting is updated, and the new weights go live with no downtime. A stratum with fewer than 30 paired samples keeps its previous weights rather than chasing noise. Every refit is recorded, so any past weighting decision can be replayed and audited.

09
Access

Where you can read the weights

The full per-cell weight matrix is available to commercial and research partners under agreement; it is not something we publish openly. If you are pricing parametric weather risk or working on weather-model ensembling, the partnerships team can set up an access-controlled export.