I am working on a research project, where I am creating a variety of portfolios to compare the implementation of transaction-based attribution versus holdings-based. I began this study more than a year ago with my first test portfolio, and am now putting several more together. I chose the S&P 500 index for this project.
To avoid complicating the matter, I began by selecting months where the S&P 500’s constituents saw no changes, as I didn’t want to be bothered with worrying about capturing those transactions (one or more securities leaving during the month, and being replaced by other securities, possibly altering the weights of the various sectors). The problem is that it’s often difficult to find such a month.
And so I decided to discard this requirement, and select any month, even if changes had taken place. The problem was that when I made this decision, I forgot about the need to capture the transactions on the index side.
Almost immediately residuals appeared when no portfolio transactions had occurred: they weren’t terribly large (usually only one or two basis points), but when there is supposed to be no residual whatsoever, this posed a dilemma. At first I thought the fault lied with my spreadsheet somehow: that perhaps in loading the data, I had altered a cell’s formula. But after some reflection it hit me: the benchmark’s composition had changed, and I hadn’t accounted for it (ironic, because my initial intention was to avoid this situation, but somehow forgot about it when I decided to forgo the original constraint). In other words, the benchmark sector weights used in the formulas were based solely on what they looked like at the start of the period, without accounting for the changes that occurred during the month. And so, the formula:
fails. And yet, the sector returns are the result of changes in their weights, which aren’t captured here. The result: we have a residual.
The solution? Well, in “real life,” one would want to make sure you captured the changes in the sector weights that resulted from securities leaving or entering the sector during the month. In my case, because I am evaluating changes to the portfolio, not the benchmark, I will simply alter the benchmark’s overall return so that the formula is satisfied: something I have the luxury of doing in my analysis, and arguably a “must” to properly assess what the study is all about. Hopefully, you’ll read more on this in an upcoming article.
My point? Make sure that your implementation of a transaction-based model properly captures the benchmark’s changes, too; i.e., not just the ones to your portfolios!