# categoryWeights

Compute average and periodic category weights

Since R2022b

## Description

example

[AverageCategoryWeights,PeriodicCategoryWeights] = categoryWeights(brinsonAttributionObj) computes the average and periodic category weights for the portfolio and the benchmark as well as the corresponding active weights.

## Examples

collapse all

This example shows how to create a brinsonAttribution object and then use categoryWeights to compute average and periodic category (sector) weights.

Prepare Data

Create a table for the monthly prices for four assets.

GM =[17.82;22.68;19.37;20.28];
HD = [39.79;39.12;40.67;40.96];
KO = [38.98;39.44;40.00;40.20];
PG = [56.38;57.08;57.76;55.54];
MonthlyPrices  = table(GM,HD,KO,PG);

Use tick2ret to define the monthly returns.

MonthlyReturns = tick2ret(MonthlyPrices.Variables)';
[NumAssets,NumPeriods] = size(MonthlyReturns);

Define the periods.

Period = ones(NumAssets*NumPeriods,1);
for k = 1:NumPeriods
Period(k*NumAssets+1:end,1) = Period(k*NumAssets,1) + 1;
end

Define the categories for the four assets.

Name = repmat(string(MonthlyPrices.Properties.VariableNames(:)),NumPeriods,1);
Categories = repmat(categorical([ ...
"Consumer Discretionary"; ...
"Consumer Discretionary"; ...
"Consumer Staples"; ...
"Consumer Staples"]),NumPeriods,1);

Define benchmark and portfolio weights.

BenchmarkWeight = repmat(1./NumAssets.*ones(NumAssets, 1),NumPeriods,1);
PortfolioWeight = repmat([1;0;1;1]./3,NumPeriods,1);

Create AssetTable Input

Create AssetTable as the input for the brinsonAttribution object.

AssetTable = table(Period, Name, ...
MonthlyReturns(:), Categories, PortfolioWeight, BenchmarkWeight, ...
VariableNames=["Period","Name","Return","Category","PortfolioWeight","BenchmarkWeight"])
AssetTable=12×6 table
Period    Name     Return             Category           PortfolioWeight    BenchmarkWeight
______    ____    _________    ______________________    _______________    _______________

1       "GM"      0.27273    Consumer Discretionary        0.33333             0.25
1       "HD"    -0.016838    Consumer Discretionary              0             0.25
1       "KO"     0.011801    Consumer Staples              0.33333             0.25
1       "PG"     0.012416    Consumer Staples              0.33333             0.25
2       "GM"     -0.14594    Consumer Discretionary        0.33333             0.25
2       "HD"     0.039622    Consumer Discretionary              0             0.25
2       "KO"     0.014199    Consumer Staples              0.33333             0.25
2       "PG"     0.011913    Consumer Staples              0.33333             0.25
3       "GM"      0.04698    Consumer Discretionary        0.33333             0.25
3       "HD"    0.0071306    Consumer Discretionary              0             0.25
3       "KO"        0.005    Consumer Staples              0.33333             0.25
3       "PG"    -0.038435    Consumer Staples              0.33333             0.25

BrinsonPAobj =

NumAssets: 4
NumPortfolioAssets: 3
NumBenchmarkAssets: 4
NumPeriods: 3
NumCategories: 2
AssetName: [4x1 string]
AssetReturn: [4x3 double]
AssetCategory: [4x3 categorical]
PortfolioAssetWeight: [4x3 double]
BenchmarkAssetWeight: [4x3 double]
PortfolioCategoryReturn: [2x3 double]
BenchmarkCategoryReturn: [2x3 double]
PortfolioCategoryWeight: [2x3 double]
BenchmarkCategoryWeight: [2x3 double]
PortfolioReturn: 0.0598
BenchmarkReturn: 0.0540
ActiveReturn: 0.0059

Compute Category Weights

Use categoryWeights to compute the average and periodic category weights for the portfolio and the benchmark, as well as, the corresponding active weights.

[AverageCategoryWeights,PeriodicCategoryWeights] = categoryWeights(BrinsonPAobj)
AverageCategoryWeights=2×4 table
Category           AveragePortfolioWeight    AverageBenchmarkWeight    AverageActiveWeight
______________________    ______________________    ______________________    ___________________

Consumer Discretionary           0.33333                     0.5                   -0.16667
Consumer Staples                 0.66667                     0.5                    0.16667

PeriodicCategoryWeights=6×5 table
Period           Category           PortfolioWeight    BenchmarkWeight    ActiveWeight
______    ______________________    _______________    _______________    ____________

1       Consumer Discretionary        0.33333              0.5            -0.16667
1       Consumer Staples              0.66667              0.5             0.16667
2       Consumer Discretionary        0.33333              0.5            -0.16667
2       Consumer Staples              0.66667              0.5             0.16667
3       Consumer Discretionary        0.33333              0.5            -0.16667
3       Consumer Staples              0.66667              0.5             0.16667

## Input Arguments

collapse all

Data Types: object

## Output Arguments

collapse all

Category weights averaged over all periods, returned as a table with the following columns:

• Category — Asset category

• AveragePortfolioWeight — Average portfolio weights

• AverageBenchmarkWeight — Average benchmark weights

• AverageActiveWeight — Average active weights

Category weights for each period, returned as a table with the following columns:

• Period — Time period numbers (1 for the first period, 2 for the second period, and so on)

• Category — Asset category

• PortfolioWeight — Portfolio weights

• BenchmarkWeight — Benchmark weights

• ActiveWeight — Active weights

## References

[1] Brinson, G. P. and Fachler, N. “Measuring Non-US Equity Portfolio Performance.” Journal of Portfolio Management. Spring 1985: 73–76.

[2] Brinson, G. P., Hood, L. R., and Beebower, G. L. “Determinants of Portfolio Performance.” Financial Analysts Journal. Vol. 42, No. 4, 1986: 39–44.

[3] Menchero, J. “Multiperiod Arithmetic Attribution.” Financial Analysts Journal. Vol. 60, No. 4, 2004: 76–91.

[4] Tuttle, D. L., Pinto, J. E., and McLeavey, D. W. Managing Investment Portfolios: A Dynamic Process. Third Edition. CFA Institute, 2007.

## Version History

Introduced in R2022b