I'm looking to do a Brinson performance attribution on a portfolio of stocks where instead of decomposing the returns in terms of sectors we use factors instead. Basically, I want to do what Style Analytics claims to do in their Factor Attribution module:
https://www.styleanalytics.com/solutions/overview/#factor-return-attribution
What confuses me about this is how they obtain the factor active weight (see screenshot) in the portfolio. In the classic Brinson analysis with sectors, it is clear how to get the portfolio and benchmark weight for each sector since every stock maps cleanly into one and only one sector and the total weights will always add up to 100%.
The only way I can think of doing this for an arbitrary set of factors is to do a returns-based attribution where you regress the portfolio/benchmark returns on the long-short factor returns and then map the resulting coefficients/sensitivities to weights.
Now, the issue with the regression approach is that you can obtain negative weights. Would it be acceptable to add a fitting constraint that requires coefficients to be between 0 and 1 and add up to 1?