Posted on Sep 7, 2026 · 14 min read

How to Forecast Cloud Spend: A Practical Guide (2026)

Forecasting cloud spend is a different exercise from estimating it. Estimation prices a workload before it exists, using specs and a pricing calculator — covered in our cloud cost estimation guide. Forecasting projects what an already-running workload will cost next month, next quarter, or at year-end, using its own historical billing data. Both matter, but they answer different questions and use different tools.

The FinOps Framework's own forecasting capability sets concrete variance targets by maturity level, and mature teams don't get there with a single static number — they run a rolling forecast that updates monthly and gets checked against actuals on a schedule. This guide covers how AWS, Azure, and GCP's built-in forecasting tools work, how to build a rolling forecast on top of them, and how to know if your forecast is actually good.

TL;DR — forecasting cloud spend

  • Forecasting projects an already-running workload's future spend from its own billing history — different from pre-deployment cost estimation
  • The FinOps Framework sets variance targets by maturity: Crawl ≤20%, Walk ≤15%, Run ≤12% (finops.org)
  • Mature FinOps teams keep monthly forecast variance under 10%; less mature ones commonly see 20–30%
  • AWS Cost Explorer forecasts at an 80% prediction interval from historical usage, and needs at least one full billing cycle of data before it will forecast at all
  • Azure Cost Management uses ML to project end-of-month/end-of-quarter spend, with service/team/region-level breakdowns
  • GCP ships basic historical-trend forecasting in Billing Reports; a real custom model needs 12–18 months of normalized data via BigQuery Billing export
  • Native tool forecasts don't know about planned changes — a migration, a new project, or a Reserved Instance purchase — so build a manual overlay for those, covered below
Upward-trending line chart on a screen, representing a cloud spend forecast

Forecasting vs. estimation: what's the difference?

The two terms get used interchangeably, but they answer different questions and rely on different inputs:

Cost estimationCost forecasting
WhenBefore a workload deploysWhile a workload is already running
InputSpecs: instance sizes, storage, expected trafficThe workload's own historical billing data
ToolAWS/Azure/GCP pricing calculatorsCost Explorer / Cost Management / Billing Reports forecast views
Question answered“What will this cost once it's live?”“What will this cost next month if nothing changes?”

In practice, most teams need both: an estimate to set the initial budget, and a rolling forecast to keep that budget honest as real usage data accumulates. For the AWS-specific estimation walkthrough, see AWS Cost Estimation: A Practical Walkthrough.

Why cloud spend forecasting matters

The FinOps Framework's Budgeting capability ties variance directly to organizational maturity: a practice operating at Crawl maturity is expected to stay within roughly 20% of actual spend, Walk maturity tightens that to around 15%, and Run maturity expects 12% or tighter — and teams that consistently land within 5% of budget are, unsurprisingly, the ones already operating at Run.

That variance can't be managed with a number set once a year. It requires a forecast that updates as often as the underlying usage does, checked against what actually happened — the same discipline covered in our monthly cloud cost review template. The FinOps Foundation's 2026 State of FinOps survey (1,192 respondents, $83B in combined annual cloud spend) found teams increasingly prioritizing forecasting and governance alongside pure cost optimization — a sign that “what did we spend” reporting alone is no longer considered sufficient FinOps maturity on its own.

AWS Cost Explorer forecasting, step by step

AWS Cost Explorer forecasting (AWS documentation, 2026) predicts future spend from your account's own historical usage:

  1. Open Cost Explorer and select a future date range in the report — the forecast appears automatically for that period.
  2. Read the 80% prediction interval band around the forecast line: the tighter the band, the more consistent your historical spend has been. A wide band means volatile past usage, not a broken forecast.
  3. Note that Cost Explorer needs at least one full billing cycle of data before it will produce a forecast at all — new accounts won't see one.
  4. Discounts are included in the forecast by default; enable Show net unblended costs if you want non-recurring items like refunds folded in too.
  5. If you use AWS Organizations consolidated billing, forecasts include all member accounts — but a newly added member account is excluded until its spending pattern has enough history to analyze.
  6. Use Analyze with Amazon Q on a future date range to get an AI-generated explanation of what's driving the forecast, service by service, and to ask follow-up questions about specific projected increases.

Cost Explorer's forecast is a good baseline, but it's purely trend-based — it has no idea a migration, a new product launch, or a Savings Plan purchase is coming. See adjusting for planned changes below.

Azure Cost Management forecasting, step by step

Azure Cost Management's forecast uses machine learning to project end-of-month and end-of-quarter spend from recent usage trajectory, with breakdowns available at the service, team, and region level:

  1. Open Cost Management + Billing → Cost analysis and select the scope (subscription, resource group, or management group) you want forecast for.
  2. Switch the chart to a forward-looking date range; Azure projects the remainder of the current month/quarter based on consumption so far.
  3. Filter by service, team tag, or region to see which segment is driving the projected trend — useful for isolating a spike to one team or workload before it hits the full bill.
  4. Watch the forecast-to-budget ratio as the period progresses: if the forecast reads 115% of budget with two weeks still left in the month, that's an actionable early-warning signal, not something to wait out.
  5. Layer in known upcoming events — a planned Reservation purchase, a migration cutover date — manually, since the ML model only sees consumption patterns, not your roadmap.

GCP Billing forecasting, step by step

GCP's built-in forecasting lives in Billing Reports and is intentionally simpler than AWS or Azure's — for a serious custom forecast model, Google steers you toward exporting billing data to BigQuery instead:

  1. Open Billing → Reports in the Cloud Console; the report shows previous and current month spend alongside a forecasted total based on historical cost data.
  2. Set up a budget under Billing → Budgets & alerts with specific thresholds, and configure alerts via email or Pub/Sub so a forecast overrun notifies the right channel automatically rather than waiting for someone to check the console.
  3. For anything more than a rough trend line, enable BigQuery Billing export and accumulate 12–18 months of normalized billing data — that's the baseline Google itself recommends before building a real forecasting model on GCP data.
  4. With billing data in BigQuery, a straightforward moving-average or linear-trend query over the label/project dimensions you care about will out-perform the console's built-in report for anything beyond a single-project sanity check.

This is the one provider where the console-native forecast is closer to a rough sanity check than a planning tool — budget for a BigQuery export pipeline if GCP is a meaningful share of your spend.

Person reviewing a spending trend chart on a laptop, representing a rolling cloud cost forecast

Building a rolling forecast on top of the native tools

None of the three native tools alone gets you to Run-level FinOps maturity — they forecast one provider, one account scope, at whatever cadence you happen to check the console. A rolling forecast turns that into a repeatable process:

StepWhat it does
1. Pull actuals monthlyExport last month's final, reconciled spend by provider/account/tag into one shared source of truth.
2. Re-forecast the next 3 monthsRe-run each provider's native forecast (or your BigQuery trend query) with the new month's data included — don't reuse last month's forecast.
3. Overlay known changesAdd or subtract for anything the trend line can't see — see the next section.
4. Compare to last month's forecastCalculate variance: (actual − forecast) / forecast. Log it, don't just note it and move on.
5. Investigate misses > thresholdAny month that breaches your maturity-level variance target (see below) gets a root-cause note, not just a shrug.

Rolling this monthly, three months out, is what separates a forecast from a one-time budget guess — and it's the same cadence the FinOps Framework's Budgeting capability describes as replacing a static annual budget with rolling forecasts that update as actual spend and usage trends come in.

Adjusting for planned changes the native forecast can't see

Every native forecasting tool covered above is trend-based: it assumes tomorrow looks like the recent past. That assumption breaks for anything genuinely new, and the forecast silently misses it rather than warning you. Overlay these manually before trusting the number:

  • New workloads or migrations landing mid-period — a service that goes live on the 15th has zero trend history; add its estimate (see our cost estimation guide) on top of the trend forecast rather than waiting for it to show up in next month's baseline.
  • Reserved Instance / Savings Plan / CUD purchases — a large upfront or reserved commitment changes the monthly run rate immediately; the trend forecast won't reflect it until enough billed months pass. See AWS Savings Plans explained.
  • Known seasonal spikes — a Black Friday traffic surge or an end-of-quarter batch job that only runs a few times a year won't show up in a 30/60/90-day trailing trend; add it as a one-time line item in the month it actually lands.
  • Decommissioning or right-sizing projects already underway — a planned resource cleanup should reduce the forecast even before the last invoice reflects it, if the completion date is known.
  • Price changes announced by the provider — a published rate change effective a future date should be modeled explicitly rather than left for the trend line to eventually catch up to after the fact.

Setting a variance threshold and tracking it

A forecast without a variance target is just a number nobody holds accountable. Use the FinOps Framework's maturity-linked thresholds as a starting point, and tighten them as your process matures:

Maturity levelTarget monthly variance
Crawl≤ 20% of actual spend
Walk≤ 15% of actual spend
Run≤ 12% of actual spend (best-practice teams land within 5%)

Source: FinOps Framework Budgeting/Forecasting capabilities (finops.org, 2026). Industry practice generally cites <10% monthly forecast variance for mature FinOps teams versus 20–30% for teams earlier in their maturity curve.

Don't treat missing the threshold as a failure to fix by padding the next forecast — treat it as a signal to run the root-cause step from the rolling-forecast process above. A forecast that's consistently 15% low because of a recurring, unmodeled cost (data transfer is a common culprit — see our egress costs guide) is a process gap, not statistical noise.

Common cloud forecasting mistakes

  • Treating the native tool's forecast as final. AWS, Azure, and GCP's built-in forecasts are pure trend extrapolations — they don't know about your roadmap.
  • Setting one static annual budget and never revisiting it. A number set in January is stale by March; a rolling forecast that updates monthly is what the FinOps Framework's Run maturity actually expects.
  • Forecasting the total but not the breakdown. A correct total can hide two offsetting errors — one team over budget, another under — that only surface when you forecast by service, team, or tag.
  • Never calculating variance. Without logging (actual − forecast) / forecast every period, there's no way to know if the forecasting process itself is improving or just getting lucky some months.
  • Ignoring commitment discounts in the forecast baseline. A forecast built on On-Demand trend data will overstate spend the moment a Savings Plan or Reservation kicks in — model the discount explicitly, don't let the tool catch up on its own.

Providers with simpler bills to forecast

Forecasting is easier when the underlying bill has fewer moving parts. These providers price on flatter, more predictable line items than the hyperscalers' usage-based models.

  • DigitalOcean — flat droplet and managed-database pricing that trends predictably month to month.
  • Hetzner — published dedicated and cloud pricing with minimal usage-driven variance to forecast.
  • Vultr — simple compute pricing without a Savings-Plan/RI layer to model separately.

Some provider links above are affiliate links — we may earn a commission at no extra cost to you. It never affects our pricing data.

Frequently asked questions

What's the difference between forecasting and estimating cloud costs?

Estimation prices a workload before it deploys, using specs like instance size and expected traffic. Forecasting projects what an already-running workload will cost next month or quarter, using its own historical billing data. Most teams need both: an estimate to set the initial budget, and a rolling forecast to keep it accurate.

How accurate should a cloud spend forecast be?

The FinOps Framework ties variance targets to maturity: roughly 20% for Crawl, 15% for Walk, and 12% or tighter for Run maturity, with best-practice teams landing within 5%. Industry practice generally cites under 10% monthly variance for mature FinOps teams versus 20–30% for less mature ones.

Does AWS Cost Explorer's forecast include discounts?

Yes, by default. If you want non-recurring items like refunds included as well, enable "Show net unblended costs" in Cost Explorer's advanced options. Note that Cost Explorer needs at least one full billing cycle of historical data before it will generate a forecast at all.

Why doesn't GCP's built-in forecast feel as accurate as AWS or Azure's?

GCP's console-native Billing Reports forecast is a simpler historical-trend projection. For a genuinely predictive model, Google's own guidance points toward exporting billing data to BigQuery and accumulating 12–18 months of normalized data to build a custom forecast on top of it.

How do I forecast for a workload that's about to change significantly?

Native trend-based forecasts can't see planned changes. Overlay them manually: add estimated cost for new workloads or migrations, subtract for planned decommissioning, and adjust immediately for Reserved Instance, Savings Plan, or CUD purchases rather than waiting for enough billed history to shift the trend line on its own.

Estimate your cloud costs — for free

Compare AWS, Azure, and GCP pricing side by side with our free calculator, and dig into the guides to learn how to cut cloud waste. No sign-up required.