Profitability methodology
Every figure in the profitability calculator comes from one of the formulas below, run against a live network/price snapshot. No formula here is hidden inside the app — this page is that same code, in prose.
Expected earnings
Your expected daily BTC mined is your share of the network’s total hashrate, multiplied by the BTC paid out per day:
expectedBtcPerDay = (yourHashrate / networkHashrate)
× 144 blocks/day
× (blockSubsidy + avgTxFeesPerBlock)
× (1 − poolFeeRatio)144 is the number of Bitcoin blocks per day at the 10-minute target. Block subsidy is a protocol constant that halves on schedule (see the halving countdown); average transaction fees per block come from a live snapshot, not a guess.
Electricity cost
dailyElectricityCostUsd = (powerW / 1000) × 24 hours × electricityUsdPerKwh
Break-even electricity price
The exact $/kWh at which daily electricity cost would equal daily revenue — above it you lose money, below it you profit:
breakEvenUsdPerKwh = (dailyBtcMined × btcPriceUsd) / ((powerW / 1000) × 24)
Cost to mine 1 BTC
costToMineOneBtcUsd = totalCostUsd / minedBtc
totalCostUsd and minedBtc must cover the same period (both daily, or both monthly) — the calculator always compares like periods.
Days to ROI
daysToRoi = hardwareCostUsd / dailyProfitUsd
A flat, non-compounding projection at today’s profit rate — not a promise. If dailyProfitUsd is zero or negative, this is reported as “never,” not a nonsense number.
Advanced mode: the month-by-month projection
Advanced mode re-runs the same per-block math above for each future month, but lets difficulty and price drift according to assumptions you set — this is the whole point of Advanced mode: naive calculators assume difficulty stays flat forever, which historically overstates long-run earnings.
difficulty_m = difficulty_0 × (1 + annualDifficultyGrowth)^(m/12)
price_m = price_0 × (1 + annualPriceGrowth)^(m/12)
subsidy_m switches automatically at each projected halving height
profit_m = mined_m × price_m × (1 − hodlRatio)
+ Δ(HODL stack value) // mark-to-market on BTC already held
− electricity_m − opex_m
NPV = Σ profit_m / (1 + monthlyDiscountRate)^m − capexHardware and infrastructure value depreciate on a straight-line schedule you set (%/year), independent of the profit math — they affect the “fully depreciated” month shown, not the profit figures themselves.
Data sources
| Figure | Source | Refresh |
|---|---|---|
| Network hashrate, difficulty | mempool.space /api/v1/mining/hashrate/3d, /api/v1/difficulty-adjustment | 10 min |
| BTC price | mempool.space /api/v1/prices (CoinGecko fallback) | 5 min |
| Block height | mempool.space /api/blocks/tip/height | 2 min |
| Average tx fees per block | mempool.space /api/v1/mining/blocks/fees/24h | hourly |
All four are fetched by a scheduled job and stored — the calculator itself never calls an external API while you use it, so nothing you enter is exposed to a third party, and the page loads instantly. The same snapshot backs the /api/v1/network endpoint.
Questions
Does the profitability calculator call any external API when I use it?
No. It computes entirely from a snapshot already stored in minermath’s own database, refreshed on a schedule (see the data sources table below) — never a live external call while you’re using the page.
What isn’t included in the profitability math?
Pool fees default to 0 in Simple mode (set one in Advanced mode if you pool mine), and hardware/infrastructure depreciation, HODL ratio, and NPV discounting only apply in Advanced mode. Simple mode is deliberately the smallest honest model: hashrate, power, electricity price, and optional up-front hardware cost.