Home / DC Solutions / Technical Manuals / TCO Calculator

Technical Manual · Total Cost of Ownership

TCO Calculator — Methodology & Formulas

Every input, equation, constant, market constant, and output behind the Build vs Colo vs Cloud total-cost-of-ownership calculator. All cost arithmetic is inline in tco-calculator.html (no separate engine file). Market pricing data is sourced from CBRE, JLL, Cushman & Wakefield, and DC Byte (2025). The Monte Carlo delegates to RZEngine.models.sim.monteCarlo when the engine is present; otherwise falls back to the inline Box–Muller sampler.

Engine inline JS (WACC + Monte Carlo) Markets 12 Horizons 5 yr / 10 yr MC Iterations 10 000 Scenarios 4 macro
▶ Open the live calculator

01 Purpose & engineering basis

The calculator answers one question at two horizons (5 or 10 years): for a given IT load and region, which deployment model — owning your own facility (Build), renting power-and-space in a third-party data hall (Colo), or consuming compute from a hyperscaler (Cloud) — delivers the lowest total cost of ownership?

The comparison is user-driven: you supply the IT load (MW), region, Uptime Institute tier, PUE, cooling type, utilisation rate, and annual growth rate. The calculator returns deterministic CAPEX+OPEX totals for all three paths, a breakeven year where Build crosses below Colo, an effective $/kW/yr metric, and (for Pro users) a scenario-weighted Monte Carlo risk distribution and a WACC-adjusted NPV table.

The model is a financial pre-feasibility aid — not a substitute for a full techno-economic study. Market data reflects publicly available pricing surveys; individual project costs will vary. The calculation is fully deterministic given fixed inputs; the only stochastic element is the Monte Carlo risk simulation accessed via the Pro panel.

02 Inputs

Eight inputs across two groups — site & capacity, and analysis parameters. All validation is client-side via RZCalc.validateNumbers(). Missing numerics fall back to the listed defaults.

FieldIDUnitDefaultMeaning
RegiontcoRegionenum (12 markets)n-virginiaSelects the MARKET_DATA block supplying build cost, colo rate, power rate, staff cost, and year-indexed projections.
IT LoadtcoItLoadMW5Rated IT power draw. Drives all linear cost scaling.
Analysis periodtcoPeriodyears (5 / 10)5Accumulation horizon. Breakeven search extends to 15 years regardless of this setting.
TiertcoTierenum (II / III / IV)tier-3Uptime Institute tier. Multiplies Build CAPEX: II = 0.85×, III = 1.00×, IV = 1.35×. Also sets staffing density.
PUEtcoPuedimensionless1.3Power Usage Effectiveness. Scales the total facility power draw in the annual power cost formula.
UtilisationtcoUtil%70Average IT load factor. Scales power consumption (0–100%).
Cooling typetcoCoolingenumchilled-waterAir / Chilled-water / Evaporative / DLC. Sets the default PUE reference (inline: air 1.40, chilled-water 1.25, evaporative 1.15, DLC 1.08).
Annual growthtcoGrowth%/yr10Compound capacity growth rate applied to Colo and Cloud spend via (1 + growthRate)^y scale factor per year.

Three additional inputs are available to Pro (authenticated) users: power rate override ($/kWh), staff headcount override (FTE), colo escalation override (%), cloud reserved-instance discount (%), and debt-to-equity ratio for the WACC computation.

03 Calculation methodology

All arithmetic lives in the inline calculate() function in tco-calculator.html. There is no external TCO engine file. The inline constants are tagged INLINE below; market rates sourced from the in-page MARKET_DATA object are tagged MARKET_DATA.

3a — Build TCO: CAPEX

CAPEX = IT_MW × buildCost × tierMult × 1,000,000 [USD] buildCost = market construction cost per MW ($/MW) from MARKET_DATA. tierMult: Tier II = 0.85, Tier III = 1.00, Tier IV = 1.35. MARKET_DATA · CBRE/JLL 2025 tierMult · INLINE

CAPEX is a one-time charge, added at year 0. It also seeds the maintenance and insurance annual rates.

3b — Build TCO: annual OPEX components (Year 1)

annualPower = IT_MW × PUE × 8,760 h/yr × util × powerRate × 1,000 [USD/yr] annualStaff = staffCount × staffSalary [USD/yr] annualMaint = CAPEX × 0.03 [USD/yr] annualInsurance= CAPEX × 0.007 [USD/yr] annualNetwork = IT_MW × 20,000 × 12 [USD/yr] annualOther = (power + staff + maint + ins + net) × 0.04 [USD/yr] yr1Opex = power + staff + maint + ins + net + other powerRate = $/kWh from MARKET_DATA (Pro: overridable). staffCount = ceil(staffPerMW × IT_MW); staffPerMW: Tier II = 3, III = 5, IV = 8 (INLINE). staffSalary = $/FTE/yr from MARKET_DATA. Maintenance 3% of CAPEX, insurance 0.7% of CAPEX, network $20k/MW/month, other 4% of all other OPEX items — all INLINE constants. power · MARKET_DATA maint/ins/net/other · INLINE

3c — Build TCO: multi-year accumulation

For y = 0 .. years-1: yPowerRate = MARKET_DATA.projections.powerCostByYear[y] (fallback: powerRate × (1 + PROJECTIONS.powerInflationByYear[2025+y])^y) yStaffCost = MARKET_DATA.projections.staffCostByYear[y] (fallback: staffSalary × 1.05^y) yPower = IT_MW × PUE × 8,760 × util × yPowerRate × 1,000 yStaff = staffCount × yStaffCost yMaint = annualMaint × 1.03^y yOther = (yPower + yStaff + yMaint + yIns + yNet) × 0.04 buildTotal += CAPEX + ∑(yPower + yStaff + yMaint + yIns + yNet + yOther) Year-indexed power and staff costs come from per-market projection arrays (2025–2030, capped at the 2030 value for years beyond index). Global PROJECTIONS.powerInflationByYear fallback: 4% (2025), 5% (2026), 4% (2027), 3% (2028–2029), 2% (2030). Staff inflation fallback 5%/yr, maintenance inflation 3%/yr — INLINE. projections · MARKET_DATA inflation rates · INLINE/PROJECTIONS

3d — Colo TCO

coloSetup = IT_MW × 50,000 (one-time setup fees) [USD] INLINE For y = 0 .. years-1: scale = (1 + growthRate)^y yColoPrice = MARKET_DATA.projections.coloPriceByYear[y] (fallback: coloKW × (1 + coloEsc)^y) yColo = IT_MW × 1,000 × yColoPrice × 12 × scale [USD/yr] yColoStaff = coloStaffCount × staffCostByYear[y] [USD/yr] yColoNet = IT_MW × 15,000 × 12 [USD/yr] INLINE yColoOther = (yColo + yColoStaff + yColoNet) × 0.03 [USD/yr] INLINE coloTotal += coloSetup + ∑(yColo + yColoStaff + yColoNet + yColoOther) coloKW = $/kW/month from MARKET_DATA. coloStaffCount = ceil(1.5 × IT_MW) — reduced headcount vs own-build (INLINE). coloEsc = colo escalation rate, default 3%/yr (INLINE; Pro: overridable). Network $15k/MW/month (INLINE). Growth scale is applied to the colo lease only (workload grows, you rent more kW). Setup fees do not escalate. coloKW · MARKET_DATA setup/staffing/net/other · INLINE

3e — Cloud TCO

CLOUD_BASE = $420 /kW/month (list-price equivalent) INLINE yr1Cloud = IT_MW × 1,000 × CLOUD_BASE × 12 × (1 - cloudDiscount) cloudEgress = yr1Cloud × 0.15 INLINE cloudSupport = yr1Cloud × 0.10 INLINE For y = 0 .. years-1: scale = (1 + growthRate)^y cloudCumRate = ∏(1 + PROJECTIONS.cloudPricingByYear[2025..2025+y]) yCloud = yr1Cloud × cloudCumRate × scale yEgress = yCloud × 0.15 ySupport = yCloud × 0.10 yCloudOther = yCloud × 0.02 INLINE cloudTotal += ∑(yCloud + yEgress + ySupport + yCloudOther) cloudDiscount = reserved-instance/committed-use discount, default 30% (INLINE; Pro: overridable). PROJECTIONS.cloudPricingByYear: 0.0% (2025), −5% (2026), −8% (2027), −3% (2028), −2% (2029), −1% (2030) — cloud pricing is modelled as declining year-on-year (INLINE). Egress 15%, support 10%, other 2% — INLINE multiples on the compute line. No CAPEX for Cloud. CLOUD_BASE · INLINE cloudPricingByYear · INLINE/PROJECTIONS

3f — Breakeven year

Extend to 15 years. For y = 0 .. 14: beCum += Build_OPEX_year_y (same formula as 3c, using market projections) ceCum += Colo_OPEX_year_y (same formula as 3d) If beCum < ceCum for the first time: breakevenYear = y + 1 break The Build accumulator starts at CAPEX (year 0). The Colo accumulator starts at coloSetup. The first year y where the Build running total falls below Colo is reported as the breakeven. If no crossover by year 15, the output reads "N/A". INLINE algorithm. INLINE

3g — Effective cost per kW per year

costPerKw = winnerTCO / (IT_MW × 1,000) / years [$/kW/yr] Divides the winning option's total TCO by the installed kW capacity and the number of years. INLINE.INLINE

3h — WACC-adjusted NPV (Pro)

WACC = D/V × kd × (1 - T) + E/V × ke kd = 0.06 (cost of debt), ke = 0.12 (cost of equity), T = 0.25 (tax rate) INLINE D/V = debtEquity (default 0.60), E/V = 1 - D/V Default WACC ≈ 0.60 × 0.06 × 0.75 + 0.40 × 0.12 = 0.027 + 0.048 = 7.5% NPV_Build = CAPEX + ∑(Build_OPEX_y / (1 + WACC)^(y+1)) for y = 0..9 NPV_Colo = coloSetup + ∑(Colo_OPEX_y / (1 + WACC)^(y+1)) NPV_Cloud = ∑(Cloud_OPEX_y / (1 + WACC)^(y+1)) NPV_diff = max(NPV_Build, NPV_Colo, NPV_Cloud) - min(...) The NPV spread is displayed as the "NPV advantage" of the cheapest option over the most expensive one. The WACC uses the Modigliani–Miller tax-shield form for the debt term. All rates are INLINE (not from FINEngine — the TCO calculator does not call FINEngine). D/V is the Pro user's debt/equity input, defaulting to 60%. INLINE · Modigliani–Miller

3i — Monte Carlo risk simulation (Pro)

N = 10,000 iterations Each iteration draws: scenario ~ categorical({baseline:0.50, aiBoom:0.25, recession:0.15, powerCrisis:0.10}) conZ, pwrZ ~ N(0,1) with Cholesky correlation ρ = 0.65 (Box–Muller / engine stdNormal) occU, colU, dmdU ~ Uniform(-0.5, 0.5) Per-iteration winner TCO (e.g. Build path): CAPEX_i = CAPEX × (1 + conZ × mktVariance × scenario.costMult) [clamped 0.7–1.5] yPower_i = yPower × (1 + pwrZ × mktVariance × scenario.costMult) [clamped 0.7–1.5] yStaff_i = yStaff × (1 + occU × mktVariance × 1.5) [clamped 0.75–1.25] (Colo) colPrice_i = coloPrice × (1 + colU × mktVariance × 2.0) [clamped 0.7–1.4] (Cloud) demandScale_i = scenario.demandMult × (1 + dmdU × 0.10) Output: sorted array bestArr[0..9999]; P5 = bestArr[500], P50 = bestArr[5000], P95 = bestArr[9500] Macro scenarios multiply both demand and cost simultaneously. Construction cost and power cost shocks are positively correlated (rho = 0.65): energy-intensive supply crunches tend to hit both together. Market-specific variance (mkt.variance) scales the shock magnitude; emerging markets (Jakarta 0.22, Mumbai 0.20, São Paulo 0.25) carry wider distributions than mature markets (Frankfurt 0.09, Chicago 0.10).

Preferred path: RZEngine.models.sim.monteCarlo(fn, distributions, 10000, 20260705, {correlations:[{a:'conZ',b:'pwrZ',rho:0.65}]}) — seeded LCG (seed 20260705), reproducible across sessions. Fallback: inline Math.random() Box–Muller, non-seeded, non-reproducible. Histogram rendered in 40 bins; P5 zone green, P95 zone red. RZEngine.models.sim.monteCarlo · rz-engine.js:8990 scenario weights · INLINE/SCENARIOS

04 Constants & data sources

The 12-market dataset (MARKET_DATA) is the single largest source of externally-sourced data in the calculator. Every field is attributed below. Purely structural coefficients (tier multipliers, percentage ratios) are inline constants with no external provenance and are so labelled.

MarketBuild $/MWColo $/kW/moPower $/kWhStaff $/FTE/yrCAGRVariance
N. Virginia$12.0 M$215$0.065$85 K25%0.12
Dallas$9.5 M$160$0.055$75 K22%0.15
Phoenix$9.0 M$150$0.058$72 K20%0.13
Chicago$10.5 M$175$0.072$80 K15%0.10
Singapore$14.5 M$390$0.180$92 K12%0.14
Frankfurt$11.6 M$195$0.150$88 K10%0.09
Tokyo$15.2 M$270$0.160$95 K8%0.11
Jakarta$8.5 M$160$0.080$35 K18%0.22
Sydney$12.5 M$180$0.140$90 K14%0.11
London$12.0 M$200$0.170$92 K10%0.10
Mumbai$7.5 M$125$0.085$28 K20%0.20
São Paulo$10.0 M$165$0.100$42 K16%0.25

Source attribution in code: /* Source: CBRE H1 2025, JLL 2026, Cushman & Wakefield 2025, DC Byte 2025 */. Each market also carries 6-year projection arrays (2025–2030) for build cost, colo price, power cost, vacancy, and staff cost; year-indexed values take precedence over the flat-rate fallbacks.

ConstantValueLocationProvenance
Tier II CAPEX multiplier0.85TIER_MULT inlineINLINE — structural
Tier III CAPEX multiplier1.00 (base)TIER_MULT inlineINLINE — structural
Tier IV CAPEX multiplier1.35TIER_MULT inlineINLINE — structural
Staff per MW: Tier II/III/IV3 / 5 / 8 FTETIER_STAFF_PER_MW inlineINLINE — engineering judgement
Colo staff per MW1.5 FTEcoloStaffPerMW inlineINLINE — reduced vs own-build
Maintenance rate3% of CAPEX/yrinlineINLINE — industry convention
Insurance rate0.7% of CAPEX/yrinlineINLINE — industry convention
Other OPEX overhead4% of (power+staff+maint+ins+net)/yr (Build); 3% for ColoinlineINLINE
Build network cost$20,000/MW/monthinlineINLINE
Colo network cost$15,000/MW/monthinlineINLINE
Colo setup fees$50,000/MWinlineINLINE
Cloud list-price base$420/kW/monthCLOUD_BASEINLINE
Cloud reserved discount30% (Pro: overridable)inline defaultINLINE
Egress as % of compute15%inlineINLINE
Cloud support as % of compute10%inlineINLINE
Cloud other2% of computeinlineINLINE
Cost of debt (WACC)6%inline WACC constantsINLINE
Cost of equity (WACC)12%inline WACC constantsINLINE
Tax rate (WACC)25%inline WACC constantsINLINE
MC corr. construction/powerρ = 0.65renderMonteCarlo()INLINE — Cholesky pair
MC seed20260705E.models.sim.monteCarlo(...)INLINE
Construction inflation 2025–20308/10/7/6/5/4 %PROJECTIONS inlineINLINE/McKinsey 2025
Cloud pricing 2025–20300/−5/−8/−3/−2/−1 %PROJECTIONS inlineINLINE
AI demand growth 2025–203033/30/28/25/22/20 %PROJECTIONS inlineMcKinsey 2025 (attributed in code)

05 Outputs

OutputFormula refUnitInterpretation
Build TCO§3c sumUSDCAPEX + all OPEX over the analysis horizon. Year-indexed power and staff costs.
Colo TCO§3d sumUSDSetup + lease + staff + network + other over horizon. Lease grows with capacity growth rate.
Cloud TCO§3e sumUSDCompute + egress + support + other over horizon. Compute price declines per cloudPricingByYear; spend grows with capacity.
Best optionmin(Build, Colo, Cloud)nameLowest-TCO model at the selected horizon and growth rate.
Savings vs #2(#2 − winner) / #2 × 100%Relative advantage of the winning model over the second-cheapest.
Build CAPEX§3aUSDOne-time construction cost at Year 0.
Annual OPEX (Year 1)§3b yr1OpexUSD/yrYear-1 run cost for own-build; useful for budget planning.
Effective $/kW/yr§3gUSD/kW/yrWinner TCO amortised per installed kW over the analysis period.
Breakeven year§3fyear (1–15)First year Build cumulative total falls below Colo. N/A if never crosses within 15 yr.
P5 / P50 / P95 (MC)§3i sorted arrayUSDRisk distribution of the winning option's TCO across 10 000 stochastic scenarios. Pro only.
WACC-adjusted NPV spread§3hUSDPresent-value advantage of cheapest vs most expensive option at the computed WACC. Pro only.
Breakeven (NPV projection)§3h year loopyear (1–10)Year Build NPV cumulative crosses below Colo NPV cumulative in the 10-year WACC projection. Pro only.

06 Worked example

Market: Dallas · IT load: 5 MW · Period: 5 years · Tier: III · PUE: 1.3 · Utilisation: 70% · Cooling: chilled-water · Growth: 10%/yr. All numbers computed by hand from the inline formulas and market constants extracted above. Year-1 values use the Year 0 projection array entries.

  1. Build CAPEX: 5 MW × $9.5 M × 1.00 (Tier III) = $47,500,000
  2. Build Year-1 power: 5 × 1.3 × 8,760 × 0.70 × $0.055/kWh × 1,000 = $2,185,650/yr (using Dallas power $0.055/kWh Y0)
  3. Build Year-1 staff: ceil(5 × 5 FTE/MW) = 25 FTE × $75,000 = $1,875,000/yr
  4. Build Year-1 maint: $47.5 M × 0.03 = $1,425,000/yr · Insurance: $47.5 M × 0.007 = $332,500/yr
  5. Build Year-1 network: 5 × $20,000 × 12 = $1,200,000/yr
  6. Build Year-1 other: (2,185,650 + 1,875,000 + 1,425,000 + 332,500 + 1,200,000) × 0.04 = $280,726/yr
  7. Build Year-1 OPEX total: 2,185,650 + 1,875,000 + 1,425,000 + 332,500 + 1,200,000 + 280,726 = $7,298,876/yr
  8. Build 5-yr TCO: CAPEX + sum of 5 annual OPEX rows (years escalate slightly). Using Year 0 rate for all 5 years as a conservative lower bound: $47,500,000 + 5 × $7,298,876 ≈ ~$84,000,000 (live calculator will be modestly higher due to year-indexed power/staff escalation from Dallas projections: power $0.055→$0.068, staff $75K→$95.7K by 2030)
  9. Colo Year-1 lease: 5 MW × 1,000 kW/MW × $160/kW/mo × 12 × 1.0 (scale Y0) = $9,600,000/yr
  10. Colo staff: ceil(1.5 × 5) = 8 FTE × $75,000 = $600,000/yr
  11. Colo network: 5 × $15,000 × 12 = $900,000/yr
  12. Colo other Y1: (9,600,000 + 600,000 + 900,000) × 0.03 = $333,000/yr
  13. Colo setup: 5 MW × $50,000 = $250,000
  14. Colo 5-yr TCO: Setup + 5 years (lease grows 10%/yr from year 0 scale=1 to year 4 scale=1.464). Sum of lease years: 1.0+1.1+1.21+1.331+1.464 = 6.105. $250,000 + 6.105 × $9,600,000 + 5 × ($600,000 + $900,000 + $333,000) ≈ ~$67,800,000
  15. Cloud Year-1: 5 MW × 1,000 kW/MW × $420/kW/mo × 12 × (1 − 0.30) = $17,640,000/yr
  16. Cloud 5-yr TCO (with 15% egress + 10% support + 2% other = 1.27× multiplier, cloud pricing cumulative rate Y0–Y4: 1.00×0.95×0.87×0.84×0.82 ≈ 0.574, growth scale cumulative sum ≈ 6.105): $17,640,000 × 0.574 × 1.27 × 5 ≈ (each year priced independently) ~$70,000,000 (cloud pricing declines partially offset growth)
  17. Winner at 5 years, 10%/yr growth: Colo ≈ $67.8 M < Cloud ≈ $70 M < Build ≈ $84 M → Colo wins
  18. Breakeven (Build vs Colo): With Build CAPEX of $47.5 M vs Colo $250 K setup, the Colo annual spend ($11.4 M/yr Y1, escalating) exceeds Build annual OPEX ($7.3 M/yr Y1) each year. The gap narrows only as growth compounds the colo lease. At 10% growth the colo lease grows faster than build OPEX, so the crossover is driven by growth rate vs savings per year. Rough breakeven: Build cumulative ≈ Colo cumulative → at flat rates, ΔY1 = $9.6 M − $7.3 M = $2.3 M/yr savings on colo, but CAPEX excess = $47.25 M → payback ≈ $47.25 M / $2.3 M ≈ ~20 yr (beyond the 15-yr search horizon, so reported as N/A at this scale and growth rate)
Verification note: The worked example was computed by hand directly from the inline formulas and MARKET_DATA constants extracted from tco-calculator.html. The live calculator applies year-indexed projections from the Dallas projections arrays (powerCostByYear, staffCostByYear, coloPriceByYear), so actual calculator output will differ modestly from the flat-rate approximation used here. The order of magnitude and winner (Colo) are consistent at 5 MW / 10% growth / 5 years in Dallas.

07 References & data sources

08 Assumptions & limitations

The model assumes a greenfield build at the stated IT load from Year 0 (no phased capacity expansion within the horizon). Power consumption is modelled as flat at IT_MW × PUE × utilisation throughout; the growth rate only scales the Colo lease and Cloud compute spend — it does not model incremental Build CAPEX for new capacity. This is conservative for Build (no expansion CAPEX) and aggressive for Colo/Cloud (full growth-rate escalation of the lease/compute line).

Colo pricing uses market-specific year-by-year arrays where available (2025–2030). Beyond 2030 the 2030 value is clamped. Mean-reversion and S-curve capacity models exist in the code (predictColoPrice, predictCapacity) but are display-only for market intelligence chips and do not feed into the TCO accumulator.

The Cloud base rate of $420/kW/month is a list-price equivalent for IaaS compute-intensive workloads; storage, managed databases, and other services are not separately modelled. Reserved-instance / committed-use discounts default to 30% (a typical 1-year commitment discount from the major hyperscalers as of 2025). The 15% egress charge is a mid-market estimate; egress costs vary substantially by provider and architecture.

WACC parameters (6% debt, 12% equity, 25% tax) are illustrative defaults for a mid-market infrastructure borrower. Real projects should compute the WACC from their actual capital structure and jurisdiction tax rate via the Pro override fields. This calculator is an engineering education and pre-feasibility aid — not a substitute for a full financial model or independent techno-economic study.

▶ Open the live TCO Calculator