Design Multi-Level Allocation Effect Using VisQuant

Thumbnail

1. Top-Down Multi-Level (TDML) Decisions

The intent of this article is to demonstrate the early feature of VisQuant and collect your valuable feedback. The goal is to create a workflow that computes the top-down asset allocation effect. The top-down attribution model is used when the plan sponsor follows a top-down investment process. I will draft a detailed interpretation of the top-down versus bottom-up attribution model in future articles.

Before constructing the workflow, let’s define the mathematical frameworks for the asset allocation model (more details can be found in Bacon, C.R.[1]):

riAA=(wiPw~iB)(riBrSB)w~iB=wiBwSPwSB \begin{align} r_i^{AA} &=(w_i^P-\widetilde{w}_i^B)(r_i^B-r_S^B)\\ \widetilde{w}_i^B&=w_i^B \frac{w_S^P}{w_S^B}\\ \end{align}

Unlike the bottom-up attribution model or single-level top-down attribution model, notice the benchmark weight notation w~iB\widetilde{w}_i^B, calculation of lower level asset allocation effects in TDML applied a trick to re-weight benchmark weight so that higher level benchmark weight becomes identical to the higher level portfolio weight.

With this adjustment on lower level benchmark weight, higher level asset allocation decision effect is isolated and does not spill over to lower level asset allocation decision. This calculation process is recursively applied to lower levels.

In VisQuant’s top-down attribution model, the user is allowed to construct an unlimited level of decision levels.

2. Basic Example and Using Prebuild Widget

Let’s apply this to a basic example:

A sample portfolio contains global allocation decisions to two counties (the US and Japan) and invested in both equities and bonds in each country. The long-term goal is built into the asset mix and set as the portfolio’s benchmark. The decision levels are as follows:

  1. The fund’s committee/board makes a global allocation decision on overweight/underweight in the US and Japan. (i.e. r1AAr_1^{AA})
  2. An economist/strategist decides how the total assets in each country should be separated between equities and bonds, and makes allocation decisions in terms of relative exposures in each asset class. (i.e. r2AAr_2^{AA})
  3. Fund managers of each asset class take care of stock picking.

The fund structure is set up in VisQuant as shown below:

maximize

The example weights and one month returns of Sep-2017 is shown in the table below:

Segment 1Segment 2wiPriPwiBriBUSEquities15.00%-0.50%17.00%2.00%Bonds40.00%2.50%41.50%3.00%JapanEquities10.00%6.50%7.50%5.50%Bonds35.00%7.50%34.00%7.00%Total100.00%4.20%100.00%4.38%\begin{array}{c:c:cccccc} Segment\space 1 & Segment\space 2 & w_i^P & r_i^P & w_i^B & r_i^B \\ \hline US & Equities & 15.00\% & \color{red}\text{-0.50\%} & 17.00\% & 2.00\% \\ & Bonds & 40.00\% & 2.50\% & 41.50\% & 3.00\% \\ Japan & Equities & 10.00\% & 6.50\% & 7.50\% & 5.50\% \\ & Bonds & 35.00\% & 7.50\% & 34.00\% & 7.00\% \\ \hline Total & & 100.00\% & 4.20\% & 100.00\% & 4.38\% \\ \end {array}

The sample portfolio can be attributed using the pre-packaged component widget Brinson (Multi-Period) to get results almost instantly:

maximize

From the resulting attribution analysis table shown above, the sample portfolio underperformed the benchmark by 18bps18bps during the month. The first level country allocation decision(i.e. r1AAr_1^{AA}) added 14bps14bps, the asset class level decision(r2AAr_2^{AA}) is attributed 2bps-2bps:

r1AA=0.06%+0.08%=0.14%r2AA=0.01%+0.00%+-0.02%+-0.01%=-0.02%rAA=r1AA+r2AA=0.14%+-0.02%=0.12% \begin{aligned} r_1^{AA}&=0.06\% + 0.08\% = 0.14\% \\ r_2^{AA}&=0.01\% + 0.00\% + \color{red}\text{-0.02\%} + \text{-0.01\%} = \text{-0.02\%} \\ r^{AA}&=r_1^{AA} + r_2^{AA} = 0.14\% + \color{red}\text{-0.02\%} \color{black} = 0.12\% \end{aligned}

Let’s validate the second-level allocation effect for Japan Equities as an example. The new, rescaled benchmark weight using formula (2) for Japan Equities is shown below:

Segment 1Segment 2w~iBJapanEquities7.50%×45.00%41.50%=8.13%\begin{array}{c:c:c} Segment\space 1 & Segment\space 2 & \widetilde{w}_i^B \\ \hline Japan & Equities & 7.50\% \times \frac{45.00\%}{41.50\%}=8.13\% \\ \end {array}

Applying formula (1) The second level asset allocation effect for Japan Equities is:

(10.00%8.13%)×(5.50%6.73%)=-0.02%(10.00\% - \textbf{8.13\%}) \times (5.50\% - 6.73\%) = \color{red}\text{-0.02\%}

which is the same as the result from the component widget Brinson (Multi-Period).

3. Calculate Asset Allocation Effect - The Hard Way

Can I calculate the allocation effect using basic components? Absolutely, one of the key features of VisQuant is to help the users visually design their proprietary calculations.

3.1 Compute Adjusted Benchmark Weights

We can first start by importing and normalizing the sample portfolio and benchmark weights. Let’s implement the adjusted benchmark weights as formula (2) using Time Series Operations components as below:

maximize

The first step ( 1 shown above) is to compute the ratio of parent group between portfolio and benchmark, i.e. wSPwSB\frac{w_S^P}{w_S^B}. We supply the Time Series Operations component with the normalized portfolio and benchmark weights, Division operator allows you to calculate the ratio of the two weights.

maximize

We have not finished the calculation of the first step. Because the adjusted weight is calculated from multiplication of lower level weight with higher level weight ratio. Therefore, we need to shift the ratio down one level with option Copy Parent Value as shown below:

maximize

We can now implement second step (2 shown above) using Multiplication Operator from a new Time Series Operations component. Notice the Japan Equities adjusted weights 8.13%8.13\% shown below, it matches the manual calculation example that I demonstrated previously.

maximize

3.2 Compute Benchmark Relative Return Against Group

Let’s using import benchmark returns and apply Weighted Average component to calculate group and total level performance. The output of Normalization component for Benchmark Weight can be reused as input of Weighted Average component. The newly added Weighted Average component is shown below:

maximize

Using Weighted Average component, we can easily calculate performance for higher level segments rSBr_S^B, but there is more than that. To calculate relative benchmark performance against higher level grouping riBrSBr_i^B-r_S^B, simply select Parent Group (minus) as post arithmetic calculation scheme, the child level performance will be subtracted with parent level performance for all levels. The results are shown below:

maximize

3.3 Two More Arithmetic Operators To Get Allocation Effect

Finally, if you got this far, it will be easy for you to compute the final top-down allocation effect using two more component widgets:

  1. One Time Series Opration to compute relative benchmark weights, i.e. wiPw~iBw_i^P-\widetilde{w}_i^B

  2. Another Weighted Average to multiply relative weight with relative benchmark performance, i.e. (wiPw~iB)(riBrSB)(w_i^P-\widetilde{w}_i^B)(r_i^B-r_S^B)

maximize

The final result produced by the above workflow is same as prebuild Brinson Multi-Period component widget:

maximize

4. Visual Programming Versus Prebuild Component Widget

What are the benefits of visual programming in the context of portfolio analytics? The main advantages are:

  • you could build a lot of custom analytics,
  • minimize your usage of excel and human error,
  • and your data processing logic is more clear and transparent.

For example, constructing your proprietary quantitative strategies using VisQuant’s workflow. You could bring along your quantitative workflow for transparent discussion rather than talking with a black box.

Not everything gains a competitive advantage from being constructed as a workflow! There could have analytics calculations dependent on many other preconditions/settings; There are computation processes that are not easy to generalize as a component widget; You may have a huge graph after designing your process as a workflow that is hard to comprehend and so on.

In those situations, it would be better to construct a prebuild component widget to bundle complex logic together. For example, Brinson Multi-Period is constructed to contain commonly used models and settings:

  • Excess return model: Geometric or Arithmetic
  • Investment process: Top-down or Bottom-up
  • Off-benchmark treatment: Selection decision or Allocation decision
  • and more

Brinson Multi. Widget

Feedback

That was a quick demonstration on key feature of VisQuant. I plan to provide more updates on functionalities and improvements in future posts. Meanwhile, I invite you to submit your recommendations or feedbacks through the VisQuant Public.

References
[1]: Bacon, C. (2008). Practical portfolio performance measurement and attribution, 2nd edition. Wiley Finance.