Scenario optimization

Why do scenario optimization?

The optimization that trade.optimizer performs — mean-variance type optimization — depends on two things:

  • symmetry
  • a 1-period future

It (implicitly) assumes that the distribution of returns is approximately symmetrical.  Some people think it depends on the distribution being normal.  That’s not true — symmetry is enough to justify it.

It also depends on the future having no distinguishing time points (except, perhaps, an end).

These assumptions hold well enough for equity portfolios.


If there are options in the portfolio, then the returns will not be symmetric.  Symmetry will also fail if bonds are in the portfolio and held to maturity.


Options and bonds also put markers at specific points in the future.  The value of an option doesn’t change after its expiry, for instance.

The decisions to make

When doing scenario optimization, there are three things to decide:

  • what utility
  • how to create scenarios
  • what constraints should the portfolio obey

Doing it

The scenario optimization done here specifies constraints in the exact same way as if you were generating random portfolios or using trade.optimizer.  The full details of how to do that are in the constraints chapter of the Portfolio Probe User’s Manual.

Generate scenarios

Generating scenarios is a major subject in itself, but here are a couple of easy options:

Scenario optimization


One of the possibilities with scenario optimization is to combine utilities at different points in the future to create the overall utility.  An example of this sort of weighting is shown in the omega ratio recipe.

All scenarios are not necessarily created equal.  You can have different weights for scenarios.  The maximize value recipe shows an example of this.

The utility functions in the pprobeSup package are merely examples of what is possible.  You have exceptional freedom to create whatever utility you like.