Portfolio optimizer
Set your objective and limits, press Run and click any portfolio to open its full report.
1 · Configuration
2Date range
3In-sample / out-of-sample
4Objective function
Past data only. In our tests this rule was not statistically distinguishable from a random portfolio; any difference was small and concentrated in one year. Not a recommendation.
5Constraints
6Engine
2 · Top-scoring portfolios
In-sample results are always optimistic. The engine picks these portfolios precisely because they did well on that data, so expect clearly weaker out-of-sample figures: in our historical tests on this database, the out-of-sample Sharpe of the top portfolio was typically between about a fifth and a half of its in-sample value. The order of the table comes from in-sample scores; out-of-sample, the differences between these portfolios are usually small. Compare the out-of-sample columns with the reference rows. They are a check on past data, not a forecast, and choosing among these portfolios by them would make them optimistic too.
This portfolio is picked by a rule, not optimised. The in-sample period only supplies the signal (each asset's return from 12 to 7 months before its end, and its volatility), so the in-sample figures are not the winner of a search; they are still past data. The out-of-sample columns are a check on past data, not a forecast. In our tests since 2018 this rule could not be told apart statistically from a random portfolio with the same limits, and it can lag sharply after market reversals. Costs and taxes are not included, and the small edge seen in our tests was concentrated in a single year (2023). This is not a recommendation to buy or sell. Compare it with the reference rows.
| In-sample | Out-of-sample | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| # | Portfolio | Objective (Sharpe) | Return ann. | Avg. monthly return | Volatility ann. |
Objective (Sharpe) | Return ann. | Avg. monthly return | Volatility ann. |
Assets | Max corr. | ||||||
The out-of-sample objective is not shown: this objective does not optimise anything, so there is no out-of-sample objective to test. Compare the out-of-sample return and volatility with the reference rows, or open the full report.
Best found, not optimal. For each number of assets the engine reports the best portfolio its heuristic search found; nothing guarantees it is the best possible. In-sample figures are optimistic by construction, and searching longer improves the in-sample score, not the future. Compare the out-of-sample figures with the reference rows. Picking the size with the best out-of-sample result turns the out-of-sample period into another selection step, so it becomes optimistic too.
| In-sample | Out-of-sample | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Assets | Portfolio | Objective (Sharpe) | Return ann. | Volatility ann. | Greedy start |
Objective (Sharpe) | Return ann. | Volatility ann. | Max drawdown |
Stability | ||||||
These results come from your previous run; press Run engine to search with the new filters.
The portfolio is picked with past data only (prices up to the end of the in-sample period), with equal weights. The out-of-sample period is also past data: it is a check, not a forecast. Results ignore costs, taxes and dividends and are not a recommendation to buy or sell any security. The database only contains assets that still have prices (survivorship bias), which makes past results look better than they were.
The engine selects assets using past data and tries a very large number of portfolios (multiple testing), so in-sample results are optimistic by construction (overfitting) and some portfolios score well by chance alone. The out-of-sample period is also past data: it is a check, not a forecast, and choosing among portfolios, sizes or runs by their out-of-sample results turns it into another selection step and weakens that check. Results come from equal-weight combinations and ignore costs, taxes and dividends. These results are not a recommendation to buy or sell any security. The database only contains assets that still have prices (survivorship bias), which makes past results look better than they were.