Longshort

多頭/空頭基金的回報歸因

  • July 27, 2022

假設一個基金的淨回報由下表描述:

12 個月後,基金的淨業績將計算為 (1+1.25%)^12-1 = 16.08%。我的問題是如何將淨業績數據的回報歸因於多頭或空頭?這只是一個範例,但在實際範例中,多頭/空頭在正面和負面表現之間波動是可以歸因的。

我嘗試過一些粗略的數字來嘗試這樣做:(1+1%)^12-1 = 12.68%

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

(1+12.68%)*(1+3.04%) = 16.11%(這顯然是一個非常接近的近似值,但在更長的時間段內,並且絕對更大的長/短數字,這變得不那麼準確)。

向過去在 L/S 股票領域工作過的人尋求建議。

您可能想使用我在這個論壇上從 Enrico Schumann 那裡學到的技術,他參考了 Bruce Feibel 的書(特別是關於投資組合貢獻的第 2 章)。請參閱此答案https://quant.stackexchange.com/a/36530/16148

該技術基於“一個部門在一個時期內的回報貢獻在隨後時期內再投資於整個投資組合”的假設。這裡的兩個段是長段和短段。我們還需要整個基金的每月回報。

例如,短線板塊在一月份的收益為 0.25%。我們假設這在 2 月、3 月、…、12 月以整個基金的整體速度增長。因此,我們可以在 12 月 31 日找到這個值。接下來我們看看 2 月份的空頭部分做了多少,這個金額同樣是使用 3 月、…、12 月的整體基金利率“複合遠期”。通過這種方式,我們可以找出所有 12 個月的短期捐款在年底時的價值。然後對多頭做同樣的事情。

產生的值偏離真實性能也就不足為奇了,因為在大多數情況下,$$ (1+a+b)^n ≠ (1+a)^n * (1+b)^n $$

這背後的金融直覺是,投資組合會增加多頭和空頭配置的收益,而當您將兩種風險敞口的收益分別相乘時,情況並非如此。

一種(可能是骯髒的)方法是計算: $$ r^{Long}{TOT}=\sum{i=1}^{T} (r_{i}^{Long} * \prod_{j=0}^{i-1}(1+r_{j}^{Long}+r_{j}^{Short})) $$ 和$$ r_{0}^{Long}=r_{0}^{Short}=0 $$

在此範例中,它將使:$$ r^{Long}{TOT}=12.86% $$並以同樣的方式:$$ r^{Short}{TOT}=3.22% $$ 和$$ r^{Short}{TOT}+r^{Long}{TOT}=r^{Portfolio}_{TOT} = 16.08% $$ 我用這種方法看到的問題是,長期敞口的部分原因是來自前幾個時期的短期敞口。

回應@nbbo2:

使用執行緒的方法,帶參數:

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

呼叫:

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

我們得到:

$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"

這確實是計算出來的。

引用自:https://quant.stackexchange.com/questions/71726