Portfolio Allocation Optimizer

Two assets, one question: how much in each? Set their return and volatility, and let the simulation find your optimal split.

Capital & horizon

Time horizon
yrs

Asset A

Preset
Expected return (CAGR)
%
Volatility
How wildly yearly returns swing around the expected return. A broad stock index sits around 15%; single sectors and leveraged products are far higher.
%

Asset B

Preset
Expected return (CAGR)
%
Volatility
How wildly yearly returns swing around the expected return. A broad stock index sits around 15%; single sectors and leveraged products are far higher.
%
Advanced
How the two move together
Correlation measures whether the two assets rise and fall together. The less they move in lockstep, the more a blend cuts risk — that's the whole point of diversification.
Drawdown cap
%

Optimize for

Picks the split with the best return per unit of risk (CAGR ÷ volatility). Usually an interior blend, since diversification lowers risk faster than it lowers return.

This is a risk-adjusted ratio (the Sharpe ratio), NOT a win rate. It measures how much annual growth you get per unit of volatility you endure — higher means a more efficient trade-off. A blend often scores highest because diversification cuts volatility faster than it cuts return.
Optimal allocation
100% A / 0% B
A = QQQ — Nasdaq 100 · B = SPY — S&P 500
Median 1.7M · sim. CAGR 20.7% · volatility 19.0%
75–100% QQQ — Nasdaq 100 is near-optimal — the exact split barely matters here.
Unlucky (P10)
663K
Typical (P50)
1.7M
Lucky (P90)
4.3M
Max drawdown
Median worst peak-to-trough drop along the simulated paths for this mix — the deepest loss you'd typically endure before recovering.
13.5%
Optimal mix
100% A
100% B
Median ending
1.7M
1.7M
791K
Downside (P10)
663K
663K
354K
Volatility
19.0%
19.0%
16.0%
Max drawdown
−13.5%
−13.5%
−13.9%

Ending wealth by allocation

01.1M2.1M3.2M4.3M100% B← more B · more A →100% A
Median10–90% rangeOptimalNear-optimal

Based on 168000 simulated paths. A simplified lognormal model — not a forecast. Real markets have fatter tails and shifting correlations; treat these as rough odds, not promises.

Historical replay: backtest with real data

Pick any two tickers and a start month to see what the five split ratios actually did — the Monte Carlo above says "what might happen", this says "what did".

Rebalancing frequency

Data as of 2026-07-04 (Yahoo Finance monthly).

Replay result 1999-04 → 2026-06

QQQ / SPY
100/0
QQQ
75/25
50/50
25/75
0/100
SPY
Final value
3.7M
3.2M
2.8M
2.3M
1.9M
Total invested
263K
263K
263K
263K
263K
Multiple on invested
14.0×
12.3×
10.5×
8.8×
7.2×
Annualised return (IRR)
99999999999900.0%
99999999999900.0%
99999999999900.0%
99999999999900.0%
99999999999900.0%
Max drawdown
−81.1%
−74.3%
−66.1%
−56.2%
−50.8%

Actual portfolio growth per split

10K100K1.0M10.0M2000200420082012201620202024
100/075/2550/5025/750/100log scale

The replay uses real (partly synthetic-backfilled) monthly adjusted prices — dividends and splits included; trading costs, taxes, spreads and FX are not. Prices come from Yahoo Finance via automated processing and may contain errors or gaps; synthetic-backfill segments are estimates that can deviate from actual performance, so treat the results as indicative only. Past performance does not predict future returns.

Support the creator

Did this tool help you? ☕

This is a free side project I built in my spare time. If it saved you time or helped you think through a decision, buying me a coffee keeps the lights on!

Buy me a coffee

Portfolio allocation — FAQ

What does this calculator actually do?
It compares two assets and simulates every capital split between them — from 100% in one to 100% in the other — across thousands of randomized market paths. For each split it reports the range of outcomes after your chosen number of years, then highlights the allocation that's best for your selected objective.
What's the difference between the three objectives?
‘Risk-adjusted’ maximizes return per unit of risk (CAGR ÷ volatility) and usually lands on a blend. ‘Calmar’ maximizes return per unit of max drawdown (CAGR ÷ drawdown) and also favors a blend. ‘Min drawdown’ minimizes the typical worst peak-to-trough fall (max drawdown) — the calmest split through a crash.
How do I know the correlation between my two assets?
You don't need a number — pick the plain-language option that fits. Two funds in the same market move almost in lockstep; stocks in different regions move mostly together; stocks versus gold are loosely linked; stocks versus bonds sometimes move oppositely. When you pick two built-in ETF presets, a sensible value is filled in automatically.
Why does a mix sometimes beat putting everything in the higher-return asset?
Because the two assets don't move in perfect lockstep, a blend has lower volatility than the average of its parts. Lower volatility means less drag from big swings, so the risk-adjusted and downside outcomes can beat a single concentrated bet — even if the median slightly favors the higher-return asset.
What does ‘rebalance yearly’ change?
With rebalancing on, each year you trim the asset that grew and top up the one that lagged, restoring your target split. This keeps risk controlled and is the standard efficient-frontier assumption. With it off, the higher-return asset gradually dominates, and over long horizons the ‘optimal’ split drifts toward simply holding the winner.
Is the expected return a CAGR or an average?
It's the CAGR (compound annual growth rate) — the median, geometric outcome. The simulation treats your input as the median path and lets volatility spread the distribution around it, consistent with how ETF returns are usually quoted.
What do P10, P50, and P90 mean?
They're percentiles of the ending wealth across all simulated paths. P50 is the median (typical) outcome, P10 is an unlucky result (only 10% of paths end lower), and P90 is a lucky one (only 10% end higher). The gap between P10 and P90 shows how much risk a given allocation carries.
Can I use this for assets other than ETFs?
Yes. The presets are a convenience that fill in a return and volatility, but you can choose ‘Custom’ for either asset and enter any CAGR and volatility — for stocks, bonds, crypto, real estate proxies, or anything you can characterize with those two numbers plus a correlation.

References

  • Modern Portfolio Theorywhy combining imperfectly-correlated assets can raise return per unit of risk.
  • Rebalancing (Bogleheads)how periodically restoring target weights harvests volatility and controls risk.
  • Sharpe ratiothe return-per-unit-of-risk measure behind the risk-adjusted objective.

Popular allocation scenarios

Jump into a pre-filled mix, then tweak every number to fit your own holdings.

Built by indigo.la.ringo · AppicLab ·

More small utilities from AppicLab

The Portfolio Allocation Optimizer answers a question every two-fund investor faces: how much should go in each? Enter the expected return (CAGR) and volatility for two assets, set how correlated they are, and it runs thousands of Monte Carlo paths across every split from 0% to 100% — then highlights the mix that maximizes your chosen objective, whether that's risk-adjusted return, the median outcome, or the worst-case floor. Because the two assets rarely move in lockstep, a blend often beats betting everything on either one.

indigo.la.ringo

About the Author

indigo.la.ringo

A software engineer chasing the slash-career dream. Was trying to figure out my relationship with the world — now being forced to figure out my relationship with AI. Lately, obsessed with figuring out the relationship between people and money. Either way, whatever answer I land on, it's fine.