3
$\begingroup$

Let's say a fund's net returns are described by the following table:

Long Short Total
1.0% 0.25% 1.25%
1.0% 0.25% 1.25%
... ... ...
1.0% 0.25% 1.25%

After 12 months the net performance of the fund would be calculated to be (1+1.25%)^12-1 = 16.08%. My question is how would one go about attributing the returns of the net performance figure to Long or Short? This is only an example, but in a real-world example where Long/Short oscillates between positive and negative performance is attribution attainable.

Some rough numbers I've played around with to attempt to do this: (1+1%)^12-1 = 12.68%

(1+0.25%)^12-1= 3.04%

(1+12.68%)*(1+3.04%) = 16.11% (This is obviously an approximation which is very close but over a longer period of time and with absolute larger Long/Short numbers this becomes much less accurate).

Looking for advice from someone who's worked in the L/S equity space in the past.

$\endgroup$
2
  • $\begingroup$ Let's be carefuk what we mean when you say Short returns are 0.25% in January. The dollar P&L on shorts in Jan is 0.25% of what: the total equity of the fund at beginning of month or of the amrket value of securities short at the beginning of the month? $\endgroup$
    – nbbo2
    Jul 25, 2022 at 18:36
  • 1
    $\begingroup$ @nbbo2 the returns are computed by dividing the long/short P&L by the overall P&L and multiplying by the total p&l % $\endgroup$
    – ccox11
    Jul 25, 2022 at 18:59

2 Answers 2

2
$\begingroup$

You may want to use a technique I learned on this forum from Enrico Schumann, who referenced the book by Bruce Feibel (specifically the Chapter 2 on Portfolio Contribution). See this answer https://quant.stackexchange.com/a/36530/16148

The technique is based on the assumption "that a segment's return contribution in one period is reinvested in the overall portfolio in succeeding periods". Here the two segments are the Long Segment and the Short Segment. We also need the monthly returns for the whole fund.

So for example the Short Segment earned 0.25% in January. We assume that this grew at the overall rate of the whole fund in Feb, Mar, ..., December. So we can find how much this was worth on December 31. Next we look how much the Short Segment made in Feb, this amount is similarly "compounded forward" using the overall fund rate for Mar, ..., December. In this way we find out how much all 12 months Short contributions were worth at year end. Then do the same for the longs.

$\endgroup$
1
$\begingroup$

It is no surprise that the value resulting strays from the true performance since in most cases, $$(1+a+b)^n ≠ (1+a)^n * (1+b)^n $$

The financial intuition behind this is that the portfolio compounds on the gains of both the long and the short allocation whereas this is not the case when you multiply the returns of the two exposures separately.

One (perhaps dirty) method would be to compute: $$r^{Long}_{TOT}=\sum_{i=1}^{T} (r_{i}^{Long} * \prod_{j=0}^{i-1}(1+r_{j}^{Long}+r_{j}^{Short}))$$ with $$r_{0}^{Long}=r_{0}^{Short}=0$$

In this example, it would make: $$r^{Long}_{TOT}=12.86\%$$ and in the same manner: $$r^{Short}_{TOT}=3.22\%$$ with $$r^{Short}_{TOT}+r^{Long}_{TOT}=r^{Portfolio}_{TOT} = 16.08\%$$ The issue I see with this method is that part of what is attributed to the long exposure is derived from the short exposure of the previous periods.

In response to @nbbo2:

Using the thread's method, with parameters:

weights <- rbind(c( 1, 1),
                 c( 1, 1),
                 c( 1, 1),
                 c( 1, 1),
                 c( 1, 1),
                 c( 1, 1),
                 c( 1, 1),
                 c( 1, 1),
                 c( 1, 1),
                 c( 1, 1),
                 c( 1, 1),
                 c( 1, 1))


R <- rbind(c( 1,   0.25),
           c( 1,   0.25),
           c( 1,   0.25),
           c( 1,   0.25),
           c( 1,   0.25),
           c( 1,   0.25),
           c( 1,   0.25),
           c( 1,   0.25),
           c( 1,   0.25),
           c( 1,   0.25),
           c( 1,   0.25),
           c( 1,   0.25))/100

calling:

rc(R, weights, segment = c("F1", "F2"))

We get:

$period_contributions
   timestamp   F1     F2  total
1          1 0.01 0.0025 0.0125
2          2 0.01 0.0025 0.0125
3          1 0.01 0.0025 0.0125
4          2 0.01 0.0025 0.0125
5          1 0.01 0.0025 0.0125
6          2 0.01 0.0025 0.0125
7          1 0.01 0.0025 0.0125
8          2 0.01 0.0025 0.0125
9          1 0.01 0.0025 0.0125
10         2 0.01 0.0025 0.0125
11         1 0.01 0.0025 0.0125
12         2 0.01 0.0025 0.0125

$total_contributions
      F1        F2     total 
0.1286036 0.0321509 0.1607545 

attr(,"method")
[1] "contribution"

This is indeed what was computed.

$\endgroup$
1
  • $\begingroup$ Yes, I now see your answer (posted an hour before mine) would give the same result as mine. 'great minds think alike'. ;) $\endgroup$
    – nbbo2
    Jul 27, 2022 at 16:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.