There's a question every Bitcoin holder eventually asks: should I have held something other than just BTC? The honest answer is uncomfortable, because almost every diversified mix loses against 100% Bitcoin on end value over the last 10 years. But end value isn't the only thing that matters.
We built the Portfolio Simulator to make that uncomfortable trade-off visible.
What it does
Pick a mix of 5 assets, a time range, and a rebalancing mode. We compute how that exact allocation would have evolved — using real daily closes, dividend-adjusted where needed, against 100% Bitcoin as a reference line.
The 5 assets:
| Asset | Source | Available from |
|---|---|---|
| Bitcoin | Binance + early-years backfill | 2010-07-17 |
| S&P 500 | SPY-ETF Adjusted Close (Total-Return proxy) | 1993-01-29 |
| Ethereum | EODHD ETH-USD.CC | 2015-08-07 |
| Gold | EODHD XAUUSD spot | 1990-01-01 |
| Cash | FRED 3-Month T-Bill (DTB3), daily compounded | 1990-01-01 |
Cash is the new one — most simulators leave it out. But cash isn't zero return: at 4% annual the T-Bill rate, your cash grows ~0.016% per day. Max drawdown = 0, Sharpe ≈ 0. It's the cleanest risk-off anchor you can have.
The slider behavior
When you change one allocation, the others keep their ratio between each other but get proportionally scaled so the total always stays at 100%.
Example — start: BTC 25 · SPX 45 · ETH 10 · GOLD 15 · CASH 5. You drag Gold from 15 → 30:
- Room left for the other four = 100 − 30 = 70
- Current sum of the others = 25 + 45 + 10 + 5 = 85
- Each other slider scales by × 70/85 → BTC 20.6 · SPX 37.1 · ETH 8.2 · CASH 4.1
- Plus Gold 30 = 100% ✓
Three additional rules:
- Sliders at 0 stay at 0. Drag ETH to 0 and it won't sneak back in via re-normalization.
- If only one asset is > 0 and you drag it down, the remainder distributes evenly across the other four.
- Float drift is pushed onto the largest other slider so it always reads exactly 100%.
The four metrics that matter
Under the chart, four values per column (mix vs 100% BTC):
- End value — what €100 grew to over the period
- Sharpe ratio — risk-adjusted return, higher = better. We subtract the actual risk-free rate from FRED per period (rates near zero 2010-2022, jumping from 2023; a fixed 2% would be inaccurate)
- Max drawdown — largest peak-to-trough decline. 100% BTC is regularly in -75% to -85% territory in bear markets
- Volatility — annualized standard deviation. BTC typically 60-80%, S&P 15-20%, cash <0.5%
The better value per row wins (orange highlight). For end value + Sharpe, higher wins. For drawdown + volatility, smaller wins.
The actual point
Run a 50/30/15/5 mix (BTC/SPX/Gold/Cash) over 2017-2024. You'll lose against 100% BTC on end value — by a lot. But:
- The Sharpe of the mix is roughly double what 100% BTC delivered
- The max drawdown of the mix is roughly one third of what 100% BTC delivered
That's the trade-off no chart on Twitter shows you. End value is what gets compared, but it's not what most people actually experience holding the position. The drawdowns of 100% BTC are what made many people sell at the bottom in 2018 and 2022. A diversified mix doesn't make you the most money — but it lets you actually stay invested through the cycles.
Three rebalancing modes
- Never — initial mix is set, then drift. In long BTC rallies, a 20% BTC slice can grow to 50% of your portfolio.
- Yearly — reset on the first trading day of each new year. Bogleheads standard, matches typical retail behavior.
- Quarterly — reset on the first trading day of each new quarter. Tighter control, higher trading costs in real life.
Default is yearly. Try toggling between never and yearly on a long BTC bull run to see how dramatic the drift effect is.
Reproducible math, not a black box
The entire calculation is a pure function in src/lib/portfolio/simulate.ts. Unit-based allocation (not percentage-based — that's the difference between a correct backtest and a wrong one when rebalancing is "never"). Log returns for volatility (academic standard). √252 annualization matching the trading-day iteration. Identical inputs always produce identical outputs (cached via SHA-256 hash).
The data sources are the same ones we use for our daily Arena Pulse cycle scoring — same provenance, same update cadence.
What it isn't
- Not a future prediction. Past performance is no indicator. The past is the past.
- Not a trade simulator. No entry/exit timing. Lump-sum on start date.
- No fees or taxes modeled. In real life both reduce the actual end value.
- Not a substitute for a real plan. A simulator is a thinking tool, not a recommendation.
Where it goes from here
V1 is the foundation. Three follow-up versions are pre-specified:
- V1.5 — Sweet-Spot Finder. Pick a base portfolio (e.g. 70% S&P / 30% Gold) and let BTC sweep from 0% to 15% in 1% steps. The system plots Sharpe, max drawdown and end value across the sweep — and overlays the consensus bands from BlackRock (1-2% BTC), Fidelity (0-5%), VanEck (3-6%). The sweet spot becomes visible.
- V2 — Efficient Frontier. Markowitz mean-variance optimization for the truly curious. Gives you the mathematically optimal mix for any risk level, with the tangency portfolio (highest Sharpe) and the minimum-variance portfolio highlighted.
- V3 — Pro Portfolios. Pre-built model portfolios from BlackRock, Fidelity, VanEck, Bridgewater (Dalio's All-Weather), Harry Browne's Permanent Portfolio. Click through them, modify them, compare against your own version.
V1 is live now. V1.5 is the next build, ~half the effort of V1 because the engine already exists.
Try it: tradingstrategies.work/dashboard/portfolio/simulator (Pro+).
If you have feedback on the asset selection, the methodology, or the next version's scope — Improvements reads everything.