PortfoliosLab logoPortfoliosLab logo

Why does a portfolio optimized for max Sortino ratio result in a proposed portfolio with a worse Sortino ratio?

DB
Don BenkeserJuly 08, 26 | Posted in General

I don't get it. The constraints provided are less stringent in all regards than the original portfolio. If a better Sortino ratio is not possible,

shouldn't the resulting portfolio be unchanged?

Thoughts?

>> My BAD - only looked at 1 year return

1 comment
2 replies

Sort by

DS

Yeah, this is a good question. We should probably expand on this in the docs, since it's pretty common to see optimization results that underperform the original portfolio. It boils down to how the results are calculated and represented.

Many other optimizers on the internet train on the entire available history and present the results as if you'd held the optimal allocation from your portfolio's inception. It's very easy to find an allocation that maximized Sortino when you already know the past. Those results look great on paper and would definitely outperform the original portfolio but are pretty useless in practice, because they don't answer the real question: would this max-Sortino strategy work going forward?

So we take a different approach by default, with two options. The first splits your history into a training set and a testing set (12 months by default). If your portfolio has 4 years of data, the optimizer builds the optimal allocation from the first 3 years and uses the last year to check whether it outperforms your original portfolio. It's testing the scenario where you'd optimized a year ago, applied the result, and waited a year to compare. It might have worked out, or not, and a negative result matters just as much. These optimizers use mathematical models under the hood, and those models are sensitive to their inputs. On one set of assets they find structural dependencies and exploit them while on another they find only noise that doesn't translate into a better strategy. When it's the latter, we show the honest result: your Sortino would have decreased if you'd held the "optimal" allocation.

The second option is walk-forward backtesting (see optimization frequency in the docs). The same idea as above but applied repeatedly. It simulates running the optimizer on a regular schedule (quarterly, yearly, etc). Each round trains on past data and tests on data it hasn't seen. This gives the most honest answer on whether a strategy actually works, and it can also produce a Sortino lower than naive equal-weight (which, I'll admit, sometimes works unreasonably well).


DB

My initial example above was interpreted incorrectly -- but I believe I had seen it before ..

Rather than put this in the docs,, why not just reply that the portfolio cannot be further optimized? Simple - done!

Also, when I optimize the portfolio, it often provides me market sector allocations that I am not comfortable with using. For example, it may say the optimum

is to increase my investment in Gold by 30%. Well, I'm not going to do that. So why not add further optimization constraints based on market sector - i.e., Commodities

less than 20% or Industrials greater than 4%. The result would be much more useful to me - like infinitely more useful.

DB
... And, by the way, nobody reads the docs. If its not obvious from the layout of the app, then ..


Category
General

Views
11