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.
%

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
55% A / 45% B
A = QQQ — Nasdaq 100 · B = SPY — S&P 500
Median 1.3M · sim. CAGR 18.7% · volatility 17.1%
Unlucky (P10)
556K
Typical (P50)
1.3M
Lucky (P90)
3.1M
Optimal mix
100% A
100% B
Median ending
1.3M
1.8M
821K
Downside (P10)
556K
692K
394K
Volatility
17.1%
20.0%
15.0%

Ending wealth by allocation

01.2M2.5M3.7M4.9M100% B← more B · more A →100% A
Median10–90% rangeOptimal

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

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. ‘Max median’ maximizes the typical ending value and leans toward the higher-return asset. ‘Protect downside’ maximizes the unlucky-case (10th percentile) outcome — the most defensive split.
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.

This tool is for educational purposes only and is not investment advice. CAGR, volatility, and correlation are assumptions you provide — real markets deviate from any model. Consult a qualified financial adviser before making allocation decisions.

Built by indigo.la.ringo · AppicLab ·

More small utilities from AppicLab

· indigo.la.ringo

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.