The 4× GPU rig with 4× RTX 5090 is the only bundle class that clears the 7%/yr hurdle in the base (peer-median) scenario. Build cost 141 100 NOK (118 000 GPUs + 23 100 support). OPEX 3 113 NOK/mo (insurance, bandwidth, monitoring labour, replacement reserve). Failed candidates (NPV AS below hurdle): 1× GPU rig/RTX 3090, 1× GPU rig/RTX 4090, 2× GPU rig/RTX 3090, 1× GPU rig/RTX 5090, +3 more.
| Scenario | USD/hr assumed | net NOK/mo (after OPEX, pre-corp-tax) | payback priv real (mo) | payback AS real (mo, post-22% corp tax) | NPV AS @ 7% / 36 mo (normalised) | IRR AS (annualised) |
|---|---|---|---|---|---|---|
| Stress (rate −40% from base) | — | 3 402 | — | — | -51 643 | — |
| Base (peer-median = RunPod tier) | $0.99 | 7 747 | 22.4 | 23.1 | +26 537 | 27% |
| Upside (today's vast.ai spike) | $1.52 | 14 154 | 11.0 | 11.3 | +141 840 | 134% |
Decay window: 60 mo (linear to zero), NPV/IRR over a normalised 36-mo horizon for cross-GPU comparability. MVA refund applied to cost (×0.80). Corp tax 22% applied to AS revenue. Hurdle for NPV: 7%/yr real (~MSCI World).
Switch rate_basis in data/constants.json to make upside or blended the base case.
| rate −20% | rate base | rate +20% | |
|---|---|---|---|
| FX −10% | — | 29.2 mo | 19.9 mo |
| FX base | 41.3 mo | 23.1 mo | 16.5 mo |
| FX +10% | 30.9 mo | 19.3 mo | 14.1 mo |
Base rate $0.99/hr per card · base FX 9.252 NOK/USD · all paybacks after MVA refund + 22% corp tax + OPEX. Green = clears in < 12 mo, amber = 18-30 mo, red = unreachable / > 30 mo.
| profile | gpu | gpu unit NOK | gpu total | support total | build total | net NOK/mo | priv naïve (mo) | priv real (mo) | AS naïve (mo) | AS real (mo) |
|---|---|---|---|---|---|---|---|---|---|---|
| 4× GPU rig | RTX 5090 ↗ | 29 500 | 118 000 | 23 100 ram: 9 000 used · nvme: 3 000 used · mobo: 1 500 used · psu: 4 500 new · cpu: 2 100 used · chassis: 3 000 new | 141 100 | 7 747 | 18.2 | 22.4 | 18.7 | 23.1 |
| 2× GPU rig | RTX 5090 ↗ | 29 500 | 59 000 | 13 700 ram: 4 900 used · nvme: 2 200 used · mobo: 1 500 used · psu: 1 800 used · cpu: 2 100 used · chassis: 1 200 new | 72 700 | 3 474 | 20.9 | 27.0 | 21.5 | 28.0 |
| 1× GPU rig | RTX 3090 ↗ | 9 500 | 9 500 | 12 495 ram: 4 900 used · nvme: 2 200 used · mobo: 1 500 used · psu: 995 used · cpu: 2 100 used · chassis: 800 new | 21 995 | 0 | — | — | — | — |
| 1× GPU rig | RTX 4090 ↗ | 19 500 | 19 500 | 12 495 ram: 4 900 used · nvme: 2 200 used · mobo: 1 500 used · psu: 995 used · cpu: 2 100 used · chassis: 800 new | 31 995 | 330 | 96.8 | — | 99.3 | — |
| 2× GPU rig | RTX 3090 ↗ | 9 500 | 19 000 | 13 700 ram: 4 900 used · nvme: 2 200 used · mobo: 1 500 used · psu: 1 800 used · cpu: 2 100 used · chassis: 1 200 new | 32 700 | 816 | 40.1 | — | 41.1 | — |
| 1× GPU rig | RTX 5090 ↗ | 29 500 | 29 500 | 12 495 ram: 4 900 used · nvme: 2 200 used · mobo: 1 500 used · psu: 995 used · cpu: 2 100 used · chassis: 800 new | 41 995 | 1 120 | 37.5 | — | 38.4 | — |
| 2× GPU rig | RTX 4090 ↗ | 19 500 | 39 000 | 13 700 ram: 4 900 used · nvme: 2 200 used · mobo: 1 500 used · psu: 1 800 used · cpu: 2 100 used · chassis: 1 200 new | 52 700 | 1 945 | 27.1 | — | 27.8 | — |
| 4× GPU rig | RTX 3090 ↗ | 9 500 | 38 000 | 23 100 ram: 9 000 used · nvme: 3 000 used · mobo: 1 500 used · psu: 4 500 new · cpu: 2 100 used · chassis: 3 000 new | 61 100 | 2 763 | 22.1 | — | 22.7 | — |
| 4× GPU rig | RTX 4090 ↗ | 19 500 | 78 000 | 23 100 ram: 9 000 used · nvme: 3 000 used · mobo: 1 500 used · psu: 4 500 new · cpu: 2 100 used · chassis: 3 000 new | 101 100 | 4 855 | 20.8 | — | 21.4 | — |
| Risk | Probability | Impact | Mitigation / trigger |
|---|---|---|---|
| Vast.ai rate revert to peer median | HIGH | MAJOR | Base scenario is already at peer median; upside is icing. Kill-switch: peer rate falls ≥30% from base. |
| Vast.ai rate revert below peer | MED | MAJOR | Stress row models this (−40%). If headline 3090 spot < $0.30/hr for 30 days → liquidate. |
| Used 3090 hardware failure | MED | MAJOR | Replacement reserve booked at 15%/yr of CAPEX for quad. RMA cycle ~2 weeks of lost revenue per failed card. |
| Vast.ai platform risk (go bust, T&C) | LOW | BLOCKER | Single-customer concentration. Mitigation: keep host stack provider-agnostic (Docker, SSH). Migration target: RunPod Community. |
| USD/NOK appreciation | MED | MODERATE | 10% NOK gain ⇒ ~10% revenue cut. Unhedged. Fits in stress range. |
| Norwegian electricity spike | MED | MODERATE | Spot has 3–5× winter peaks. OPEX uses 0.70 NOK/kWh; verify against your actual rate. |
| Tax / accounting error | LOW | MAJOR | AS path assumes correct MVA reclaim and 22% corp tax. Confirm with regnskapsfører before first quarter. |
| Single point of failure (one rig) | MED | MODERATE | 100% revenue lost on PSU/mobo failure. Mitigation: build two duals not one quad once budget allows. |
Kill-switch: if peer-median rate for the chosen GPU falls below $0.30/hr for 30 consecutive days, halt new spend, run rig to end-of-life or resell on finn.no.
| listing | gpu | price NOK | priv naïve (mo) | priv real (mo) | AS naïve (mo) | AS real (mo) | |
|---|---|---|---|---|---|---|---|
| RTX 3090 ZOTAC Trinity correction: 9 500 NOK is per-card, seller has 3 available — not a bundle of 3 for 9 500 | RTX 3090 | 9 500 | 7.8 | 9.8 | 8.0 | 10.1 | open ↗ |
| RTX 3090 Zotac Trinity | RTX 3090 | 9 500 | 7.8 | 9.8 | 8.0 | 10.1 | open ↗ |
| RTX 3090 EVGA | RTX 3090 | 9 500 | 7.8 | 9.8 | 8.0 | 10.1 | open ↗ |
| RTX 3090 Gigabyte Vision OC | RTX 3090 | 9 500 | 7.8 | 9.8 | 8.0 | 10.1 | open ↗ |
| 2x RTX 3090 Phantom bundle (×2, 9 500/card) | RTX 3090 | 19 000 | 7.8 | 9.8 | 8.0 | 10.1 | open ↗ |
| RTX 3090 MSI Ventus 3X | RTX 3090 | 10 290 | 8.4 | 10.9 | 8.7 | 11.3 | open ↗ |
| RTX 3090 Gaming Trio X | RTX 3090 | 11 000 | 9.0 | 12.0 | 9.3 | 12.5 | open ↗ |
| RTX 3090 MSI Suprim X | RTX 3090 | 11 000 | 9.0 | 12.0 | 9.3 | 12.5 | open ↗ |
| RTX 5090 Gainward Phantom new listing | RTX 5090 | 29 500 | 10.9 | 12.1 | 11.1 | 12.4 | open ↗ |
| RTX 4090 | RTX 4090 | 19 500 | 10.4 | 12.7 | 10.7 | 13.1 | open ↗ |
| RTX 5090 Zotac SOLID OC | RTX 5090 | 32 777 | 12.1 | 13.6 | 12.4 | 14.0 | open ↗ |
| RTX 5090 MSI Gaming Trio | RTX 5090 | 33 124 | 12.2 | 13.8 | 12.5 | 14.2 | open ↗ |
| RTX 4090 ROG Strix | RTX 4090 | 21 000 | 11.2 | 13.9 | 11.5 | 14.4 | open ↗ |
| RTX 5090 ROG Astral LC OC (bytte) trade-only listing | RTX 5090 | 34 990 | 12.9 | 14.7 | 13.2 | 15.1 | open ↗ |
| RTX 5090 ASUS ROG Astral OC | RTX 5090 | 35 000 | 12.9 | 14.7 | 13.2 | 15.1 | open ↗ |
| RTX 5090 Astral OC (old) | RTX 5090 | 35 000 | 12.9 | 14.7 | 13.2 | 15.1 | open ↗ |
| RTX 3090 Arctic Storm | RTX 3090 | 12 500 | 10.3 | 14.8 | 10.5 | 15.6 | open ↗ |
| RTX 3090 Zotac Trinity (older) | RTX 3090 | 12 500 | 10.3 | 14.8 | 10.5 | 15.6 | open ↗ |
| RTX 4090 ROG Strix OC | RTX 4090 | 23 000 | 12.3 | 15.8 | 12.6 | 16.3 | open ↗ |
| RTX 4090 Gainward Phantom | RTX 4090 | 23 000 | 12.3 | 15.8 | 12.6 | 16.3 | open ↗ |
| RTX 4090 | RTX 4090 | 25 000 | 13.4 | 17.8 | 13.7 | 18.5 | open ↗ |
| RTX 4090 ROG Strix LC | RTX 4090 | 25 000 | 13.4 | 17.8 | 13.7 | 18.5 | open ↗ |
| RTX 4090 Suprim X (older) | RTX 4090 | 26 000 | 13.9 | 18.9 | 14.3 | 19.6 | open ↗ |
| RTX 4090 Suprim X | RTX 4090 | 27 000 | 14.5 | 20.0 | 14.8 | 20.9 | open ↗ |
| category | listing | spec | price NOK | |
|---|---|---|---|---|
| cpu | AMD Ryzen 9 7900 | Ryzen 9 7900 | 2 100 | open ↗ |
| mobo | ASUS B650E Max Gaming Wifi AM5 (ubrukt) | B650E | 1 500 | open ↗ |
| mobo | ASUS TUF Gaming B650-Plus WiFi AM5 (ubrukt) | B650 | 1 500 | open ↗ |
| mobo | ASRock X670E Steel Legend | X670E | 1 990 | open ↗ |
| mobo | MSI PRO B650-P WiFi AM5 | B650 | 2 000 | open ↗ |
| mobo | ASUS TUF Gaming X670E-PLUS WIFI | X670E | 2 499 | open ↗ |
| mobo | ASUS ROG Strix X870-F Gaming WiFi | X870 | 2 500 | open ↗ |
| nvme | Kingston NV3 2TB M.2 NVMe SSD 6000MB/s | 2000 GB | 2 200 | open ↗ |
| nvme | Crucial P3 Plus PCIe Gen4 NVMe M.2 SSD 2TB | 2000 GB | 2 500 | open ↗ |
| nvme | WD Green SN350 NVMe SSD 2TB | 2000 GB | 2 500 | open ↗ |
| nvme | WD Black SN7100 2TB NVMe SSD | 2000 GB | 2 780 | open ↗ |
| nvme | Kingston NV2 4TB | 4000 GB | 3 000 | open ↗ |
| nvme | Kingston NV2 4TB | 4000 GB | 4 000 | open ↗ |
| nvme | Samsung 990 EVO Plus 4TB | 4000 GB | 4 500 | open ↗ |
| nvme | Lexar NM790 4TB | 4000 GB | 4 999 | open ↗ |
| nvme | Samsung 990 EVO Plus 4TB | 4000 GB | 5 900 | open ↗ |
| nvme | Samsung 990 Pro 4TB m/varmespreder | 4000 GB | 6 000 | open ↗ |
| nvme | Samsung 990 PRO 4TB | 4000 GB | 6 500 | open ↗ |
| nvme | Samsung 970 PRO 4TB | 4000 GB | 6 500 | open ↗ |
| nvme | Samsung 990 PRO 4TB | 4000 GB | 6 800 | open ↗ |
| nvme | Samsung 990 PRO 4TB | 4000 GB | 6 999 | open ↗ |
| nvme | Samsung 990 PRO 4TB (unopened) | 4000 GB | 7 500 | open ↗ |
| nvme | Samsung 990 PRO 4TB (helt ny) | 4000 GB | 8 000 | open ↗ |
| psu | Corsair HX1000 80+ Platinum | 1000 W Platinum | 995 | open ↗ |
| psu | Corsair AX1500i 1500W (Titanium) m/kabler | 1500 W Titanium | 1 800 | open ↗ |
| psu | Corsair HX1000i 1000W Platinum (new) | 1000 W Platinum | 2 500 | open ↗ |
| psu | ASUS ROG Thor 1000W Platinum | 1000 W Platinum | 2 999 | open ↗ |
| psu | ASUS ROG Thor 1000P2 Platinum | 1000 W Platinum | 2 999 | open ↗ |
| psu | ASUS ROG Thor 1000P2 Platinum | 1000 W Platinum | 2 999 | open ↗ |
| psu | Corsair HX1500i 1500W 80+ Platinum (sealed) | 1500 W Platinum | 3 500 | open ↗ |
| psu | ASUS ROG Thor 1000W Platinum II (unopened) | 1000 W Platinum | 4 000 | open ↗ |
| ram | Corsair Dominator Platinum RGB DDR5 64GB 5200MHz | 64 GB DDR5 | 4 900 | open ↗ |
| ram | 64GB DDR5 | 64 GB DDR5 | 5 000 | open ↗ |
| ram | Kingston Fury Beast Black DDR5 6000Mhz 64GB | 64 GB DDR5 | 5 500 | open ↗ |
| ram | Kingston FURY Beast RGB 64GB DDR5 5600MT/s | 64 GB DDR5 | 6 000 | open ↗ |
| ram | Kingston Fury Beast 64GB DDR5 6000Mt 2x32GB | 64 GB DDR5 | 6 000 | open ↗ |
| ram | Corsair DOMINATOR PLATINUM RGB 64GB DDR5 5600MT/s | 64 GB DDR5 | 6 000 | open ↗ |
| ram | Corsair Vengeance DDR5 64GB 5200MHz | 64 GB DDR5 | 6 900 | open ↗ |
| ram | Corsair Dominator Platinum RGB 64gb 5600mhz | 64 GB DDR5 | 6 900 | open ↗ |
| ram | Kingston FURY Beast DDR5-5600 64GB | 64 GB DDR5 | 7 000 | open ↗ |
| ram | Kingston Fury Beast 64GB 6000MHz CL36 | 64 GB DDR5 | 8 000 | open ↗ |
| ram | Kingston FURY Beast Black DDR5 6000MHz 128GB | 128 GB DDR5 | 9 000 | open ↗ |
| ram | Kingston Fury Beast DDR5 128GB ECC ODECC | 128 GB DDR5 ECC | 9 000 | open ↗ |
| ram | G.Skill Trident Z5 RGB DDR5-6400 64GB | 64 GB DDR5 | 9 200 | open ↗ |
| ram | 4x Corsair Vengeance 32GB DDR5 5200MHz | 128 GB DDR5 | 11 000 | open ↗ |
| ram | Corsair Dominator Platinum 6800MHz RGB 2x32GB | 64 GB DDR5 | 12 000 | open ↗ |
| GPU | n | min | p25 | med | p75 | max | spread | min ─── p25 / med / p75 ─── max |
|---|---|---|---|---|---|---|---|---|
| RTX 5090 | 38 | $0.40 | $1.27 | $1.52 | $1.74 | $4.67 | 31% | |
| RTX 4090 | 40 | $0.14 | $0.94 | $1.19 | $1.51 | $2.00 | 48% | |
| RTX 3090 | 28 | $0.16 | $0.20 | $0.55 | $0.67 | $2.01 | 84% |
| GPU | range | first | latest | change | trend |
|---|---|---|---|---|---|
| RTX 5090 | 2 pts · 2026-05-30 → 2026-05-30 | $1.57 | $1.52 | -3% | |
| RTX 4090 | 5 pts · 2026-02-28 → 2026-05-30 | $0.59 | $1.19 | +102% | |
| RTX 3090 | 2 pts · 2026-05-30 → 2026-05-30 | $0.54 | $0.55 | +3% |
Sparse early-2026 points seeded from gpus.io / synpixcloud / vast.ai marketing snapshots. Auto-appended every 4 h going forward.
| GPU | vast.ai | RunPod | Sesterce | Novita | Lambda | vast premium vs cheapest peer |
|---|---|---|---|---|---|---|
| RTX 5090 | $1.52 | $0.99 | — | — | — | +53% |
| RTX 4090 | $1.19 | $0.69 | $0.66 | $0.67 | — | +80% |
| RTX 3090 | $0.55 | $0.46 | — | — | — | +20% |
| H100 SXM | — | $3.29 | — | — | $3.29 | |
| A100 SXM | — | $1.49 | — | — | — |
RunPod values from runpod.io/pricing (Community Cloud). Sesterce / Novita via gpus.io. Lambda doesn't rent consumer GeForce; H100/A100 only. Hyperscaler on-demand (AWS p5 ~$12.29 / H100, GCP ~$11.06) is 4–7× marketplace pricing — different product class entirely.
data/vast_rates.json's rates_usd_per_hour by hand if you want to model that reversion explicitly.