SCR Calculator User Manual

Version 1.13.2.0 Last modified 2024-3-21

Step 3. Generate an Efficient Frontier

You must have noticed that a Constraint Setting Panel has appeared to the right of the form. It has two tabs - a "Numeric Constraints" tab and a "Verbal Constraints" tab, like below:

Numeric Constraints tab Verbal Constraints tab

Let's ignore them for now and just click the "Run EF Calibration" button on the middle right side. An efficient frontier will appear like below:

Click on points on the efficient frontier, and pie charts showing risk, return and allocations would appear.

We want to understand how much the efficient frontier has expanded due to the introduction of the high yield asset classes. To do this, set the Upper Bounds for Euro HY and US HY alternatively to zero, and then both to zero, and in each case re-run the optimisation. You will see a lower set of efficient frontiers #2, #3, #4, such as below:

Almost all new assets will cause the efficient frontier to expand, so these EFs being lower than EF #1 is not surprising. What we care about is how much it has expanded, and which new strategy has the most effect. From the look of it, EF #2 and #3 are close, meaning the risk-return boosts provided by EUR HY and US HY are similar to each other.

Note that the tool keeps a record of the efficient frontiers in the bottom right list. Click on any of them and the rest of the form will refresh to reflect that particular efficient frontier.

Now, delete EFs #2, #3 and #4. The allocation table and everything else in the form will revert to the situation for EF #1.

You can do a number of non-calculation investigations with EF #1:

  • Hover over any points on the efficient frontier, it will tell you the exact risk/return value.
  • Click the "Data" tab next to the "AA Chart" tab. This is a table that stores the important metrics:
    • Each row is the data behind one point on the efficient frontier. Click on any point in the EF chart and the corresponding row will be highlighted, in addition to the pie chart.
    • The first column "OpResCode" tells you the status of the point:
      The first row is the current allocation point.
      For other rows, the 'oprescode' values are:
      • "1" - relative function improvement is no more than EpsF.
      • "2" - relative step is no more than EpsX.
      • "4" - gradient norm is no more than EpsG
      • "5" - MaxIts steps was taken
      • "7" - stopping conditions are too stringent, further improvement is impossible, X contains best point found so far.
      • "8" - terminated by user who called mincgrequesttermination(). X contains point which was "current accepted" when termination request was submitted.
    • Then you have the volatility, return, duration and other metrics - in fact all the numeric columns included in your original allocation table will appear here. They were calculated for you behind the scene by the calculator at the same time as the optimisation was done. So if you have included additional metrics, e.g. ESG scores by asset class, the stats of these additional metrics will appear here. Besides being 'observed', these numeric metrics can also be used to set optimisation constraints, as we will describe shortly.

To the right there is a list of all the efficient frontiers (currently just one) and an "Export Data of Selected EF" button. The button will give you a spreadsheet with multiple data tabs:

  • "ALLOC": a copy of the allocation table.
  • "TRS": a copy of the Total Return Series.
  • "SETTINGS": a record of the minimum and maximum expected returns and step size.
  • "NCON": a record of all the numerical constraints. Currently empty.
  • "VCON": a record of all the verbal constraints. Currently empty.
  • "CORR": a record of the correlation matrix.
  • "EF": a record of the efficient frontier data table.
This spreadsheet can serve as a complete definition of this efficient frontier. It can be used as an inputsheet to regenerate that efficient frontier. There is also a "Optional: Import Constraints" button where this saved spreadsheet can be used.