Method

How the numbers are made

ComputeTick is a price wire for people training models and people watching the companies that rent them the GPUs. The product is the change: who cut, who raised, and by how much. The index underneath is the latest list price, in US dollars per GPU-hour.

What a quote is

Every snapshot has a provider, a normalized GPU model, a GPU count, a price type (on-demand, spot, or reserved), a region, an instance name, and a timestamp. Virtual-machine prices are divided by the GPU count on that SKU. A price that does not survive that division — unknown GPU count, Windows license, fractional GPU, or a per-GPU rate above $100 — is dropped rather than published.

Sources

  • AWS — EC2 on-demand Linux price map (the file behind the AWS pricing page), one region per worker run. Instance price divided by GPU count. Reserved and spot are not in that file.
  • Azure — Azure Retail Prices API. Linux consumption meters, plus 1-year and 3-year reservations converted to hourly.
  • RunPod — Public RunPod GraphQL gpuTypes catalog. Secure and community clouds are separate on-demand markets.
  • Lambda — Lambda public pricing page (lambda.ai/pricing). On-demand instance tables and published cluster rates.
  • Shadeform — Shadeform GET /v1/instances/types. Only regions marked available. Interconnect decides SXM vs PCIe. Skipped when the API rejects an unauthenticated call and SHADEFORM_API_KEY is unset.
  • CoreWeave — CoreWeave public pricing page. On-demand and spot instance hourly rates divided by the published GPU count, stored per published region.
  • Nebius — Nebius public prices page. On-demand and preemptible columns are already USD per GPU-hour.
  • Together — Together public pricing page. GPU-cluster preemptible, on-demand, and 3–30 day reserved rates, plus dedicated inference. Already per GPU-hour. Token rates are ignored.

Azure reservations are published as a term total. ComputeTick divides a 1-year total by 8,760 hours and a 3-year total by 26,280, then by GPU count. Azure spot meters that sit within 1% of the on-demand rate for the same SKU are dropped, because several of those meters currently repeat the pay-as-you-go price.

AWS prices come from the on-demand Linux map the EC2 pricing page loads, one region per worker run, so the free-plan CPU limit can hold it. The instance hourly rate is divided by GPU count. Spot bids and reserved rates are not in that file. Regions come from AWS_PRICE_REGIONS (default us-east-1 and us-west-2).

Shadeform integer prices are cents. A row is kept only when at least one region is marked available, and the GPU name follows the interconnect: an H100 with pcie is H100 PCIe, not H100 SXM. The board uses each provider's latest collection hour, so a SKU that disappears from that hour leaves the index.

Vast.ai is excluded. Its pricing API needs a license, and this project does not scrape around that.

Sample data

Seeded sample rows fill the board only before the first live snapshot. They are a deterministic walk around plausible list prices, not observations. Once any live quote is stored, sample rows and sample news are hidden from public pages. They stay in the database. Sample news never enters the RSS feed or the X draft.

Changes

After each collection, the latest two distinct hours of a series are compared. A series is provider + GPU + count + price type + region + instance name. A move is recorded when the per-GPU price changes by at least 0.4% and at least half a cent. The headline is generated from that diff. Re-running the same hour does not duplicate the event.

Referrals

Some outbound links can carry a referral code. They use rel="sponsored" and a visible “ref” mark. The RunPod link is the one turned on today. Edit lib/providers.ts to change it. Prices on the site are public list prices, not a discounted referral rate.

RunPod referral linkref

Newsletter and sponsors

Email signups are stored with the prices: Cloudflare D1 on the hosted site, Postgres when DATABASE_URL is set, otherwise data/store.json. Nothing is sent. A Beehiiv or similar sync can read that table later. The sponsor slot renders only when SPONSOR_ENABLED=true.

What this is not

Not a throughput benchmark, not a stock tip, and not an availability monitor. A cheap GPU-hour can still be a bad hour if the machine is queued, throttled, or missing the fabric you need. Interconnect and memory are kept on the model name — H100 SXM is not priced as if it were H100 PCIe — but the site does not score performance.