Skip to content
CryptoSums

Methodology

Last updated Jul 11, 2026

This page documents how every number on this site is produced: the formulas, the data sources, how often each dataset refreshes, and the assumptions we make when reality requires simplification. If something here doesn't match what a tool shows, that's a bug — tell us.

Data sources

  • Historical prices — daily/weekly/monthly closing prices from Binance's public market-data API for the ten coins with history tools, with CoinGecko as fallback. Bitcoin history before August 2017 (before Binance listed BTC) uses a bundled static series of month-end prices compiled from public historical records; values from that early era are close approximations, which is why what-if results are labeled estimates. Last refreshed: 2026-07-11.
  • Live spot prices — CoinGecko's public price endpoint, fetched client-side through an edge-cached proxy. If the live fetch fails, tools fall back to a bundled snapshot and display a "cached prices" banner with the snapshot date.
  • S&P 500 — month-end closes of the SP500 price index from FRED (Federal Reserve Bank of St. Louis), extended before the FRED window with well-known static month-end values. Total return is approximated by adding a constant 1.8%/yr dividend yield (0.15%/month); real total-return indexes differ slightly.
  • Staking APYs — hand-maintained indicative ranges for native delegation, not exchange promo tiers. Last verified: 2026-07-11.
  • Tax rules — brackets, allowances and rates for the current tax year per country, stored as open data files with an official source link on every tax page. US file, for example: tax year 2025, verified 2026-07-11.
  • Stablecoin yields — hand-verified weekly from platform pages and protocol dashboards. Last verified: 2026-07-11.

The formulas

  • Profit: qty = (amount − buy fee) ÷ buy price; profit = qty × sell price − sell fee − amount; ROI = profit ÷ amount.
  • What-if: buys at the chosen month's close; valued at the live price; peak scans intra-month highs since purchase.
  • DCA backtest: buys at actual weekly closes on your schedule; lump-sum comparison invests the same total on the first buy date. No fees are assumed on either side.
  • Compound interest / staking: final = P × (1 + r/n)^(n·t) with contributions compounding from the month they arrive; "effective APY" is (1 + r/n)^n − 1.
  • Bitcoin retirement: monthly compounding at your CAGR with end-of-month contributions until retirement; required nest egg = inflation-adjusted spend ÷ withdrawal rate; post-retirement the balance grows at half your CAGR (a deliberate conservatism) while withdrawals rise with inflation.
  • Crypto 401(k): projections compound monthly, with the blended portfolio rebalanced monthly (r = w·r_crypto + (1−w)·r_stocks). The backtest replays actual monthly BTC and S&P 500 returns since 2015 and reports growth multiples and maximum drawdowns.
  • Tax estimators: apply each country's headline capital-gains rules (allowances → rate schedule) to your inputs. They deliberately ignore cost-basis method choices, loss offsets, and state/local taxes — that's what tax software is for.
  • Average down: new avg = (q₁·p₁ + new $) ÷ (q₁ + new $ ÷ p₂).
  • Converters: 1 BTC = 100,000,000 sats; 1 ETH = 10⁹ gwei; transfer cost = gas price × 21,000 gas.

Every engine above is implemented as a pure function with automated unit tests (87 test cases at last count) that must pass before any deploy.

Rounding & display

  • Currency displays to 2 decimals; sub-cent prices switch to 4 significant digits.
  • Coin quantities show up to 6 significant digits below 1, and 2–4 decimals above.
  • Internal calculations are never rounded — only the display is.

Refresh cadence

  • Live prices: on page load, edge-cached ~60 seconds.
  • Bundled price history & snapshot: refreshed with each site deploy (script-driven).
  • Staking APYs & stablecoin yields: reviewed weekly by hand.
  • Tax data: reviewed at tax-year changes and whenever rules change materially.

Dates shown on each page ("data as of", "rates last verified") always reflect the underlying file, not the page build time.