0 Daumen
1,2k Aufrufe

Ich muss die Grundstatistik eines Aktienportfolios berechnen: annualisierte Rendite, annualisierte Volatilität ...


Hier ist ein Auszug der Aktienkurse:

    > head(df)
          Date .SXQR .SXTR .SXNR .SXMR .SXAR .SX3R .SX6R .SXFR .SXOR .SXDR
  1 2000-01-03 364.94 223.93 489.04 586.38 306.56 246.81 385.36 403.82 283.78 455.39
  2 2000-01-04 345.04 218.90 474.05 566.15 301.13 239.24 374.64 390.41 275.93 434.92
  3 2000-01-05 338.22 215.88 464.20 542.29 298.22 239.55 373.26 383.48 272.54 430.05
  4 2000-01-06 343.13 218.18 470.82 529.33 300.69 249.75 377.26 383.48 272.47 434.15
  5 2000-01-07 349.46 220.10 478.87 531.65 306.50 255.17 381.19 390.23 273.76 447.02
  6 2000-01-10 356.20 223.01 484.07 581.82 310.84 252.75 387.74 393.75 278.76 453.80
    .SX4R .SXRR .SXER .SXKR .SX7R .SX8R .SXIR .SXPR
  1 427.43 498.08 457.57 1016.39 489.65 1070.72 466.36 368.62
  2 414.10 476.17 435.72  971.51 471.23 1015.13 450.38 365.89
  3 406.33 466.19 436.23  924.57 464.75  949.91 446.67 363.78
  4 417.91 464.59 438.26  887.88 461.62  935.48 448.10 370.22
  5 428.54 474.40 445.40  918.33 465.41  970.17 456.69 376.62
  6 431.81 473.14 440.15  944.22 467.89 1002.93 460.26 373.81

Die Datei ist [hier][1].

Ich habe die Portfolio-Gewichte mit:

    w = optimalPortfolio(Sigma = Sigma,control = list(type = 'erc', constraint = 'lo'))


Und die jährliche Rendite der Aktien:

    yearly_return <- df %>% 
    group_by(gr = floor_date(Date, unit = "year")) %>%
    summarize_at(vars(-Date, -gr), percent_change2) %>%
    ungroup()
 
  # Wir generieren die xts und geben die Spalte mit der Zeitinfo # ISSUE an: Es gibt nas
  yearly_return <- xts(yearly_return[,-1], order.by=yearly_return$gr)


So ** Wie berechnet man die jährlichen Renditen eines Portfolios mit den angegebenen Koeffizienten?

Ich habe es versucht:

   yearly_return_erc <- yearly_return*w
  Error in `*.default`(yearly_return, w) : non-conformable arrays


[1]: https://docs.google.com/spreadsheets/d/1MExW-r0NNGAlMxlQh_tjOscpm6xBiMsfMKRPQykJgr8/edit?usp=sharing

Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Wie berechnet man die jährlichen Renditen eines Portfolios mit den angegebenen Koeffizienten?

Um die jährlichen Renditen eines Portfolios zu berechnen, das verschiedene Aktien oder Vermögenswerte umfasst, müssen Sie die Renditen der einzelnen Bestandteile des Portfolios kennen sowie die Gewichtung jedes Bestandteils innerhalb des Portfolios. Die Berechnung erfolgt in der Regel in mehreren Schritten:

Schritt 1: Berechnung der Renditen der einzelnen Aktien

Zuerst muss man für jede Aktie oder jeden Vermögenswert in Ihrem Portfolio die Rendite über den gewünschten Zeitraum berechnen. Die Rendite eines Vermögenswerts wird oft berechnet, indem man die prozentuale Veränderung seines Preises über den Zeitraum betrachtet:

\( \text{Rendite} = \frac{\text{Endpreis} - \text{Startpreis}}{\text{Startpreis}} \)

Im gegebenen Fall haben Sie schon die jährliche Rendite für jede Aktie berechnet mit einem Befehl, der die Renditen jährlich gruppiert und aggregiert (percent_change2).

Schritt 2: Gewichtung der einzelnen Aktien im Portfolio

Die Gewichtung eines jeden Vermögenswerts im Portfolio ist entscheidend, da sie angibt, welchen Anteil des Gesamtportfolios jeder Vermögenswert ausmacht. Sie haben bereits die Gewichtung der verschiedenen Vermögenswerte in Ihrem Portfolio ermittelt, möglicherweise mit einer Methode zur Optimierung Ihres Portfolios.

Schritt 3: Berechnung der Portfolio-Rendite

Nachdem Sie die Rendite jedes Vermögenswerts sowie seine Gewichtung im Portfolio kennen, können Sie die gesamte Portfolio-Rendite wie folgt berechnen:

\( \text{Portfolio-Rendite} = \sum (\text{Rendite des Vermögenswerts} \times \text{Gewichtung des Vermögenswerts}) \)

Dies wird oft als gewichtete Summe der einzelnen Renditen berechnet.

Problembehebung des Fehlers "non-conformable arrays"

Der Fehler, den Sie sehen (non-conformable arrays), bedeutet, dass die Dimensionen Ihrer jährlichen Renditen und der Gewichtungsmatrix nicht zusammenpassen, um eine Matrixmultiplikation oder ein elementweises Multiplizieren zu ermöglichen. Beachten Sie, dass die Gewichte (w) vertikal angeordnet sind (eine Spalte pro Vermögenswert) und Ihre Renditen vermutlich zeilenweise angeordnet sind (eine Zeile pro Jahr und eine Spalte pro Vermögenswert).

Um dieses Problem zu beheben, müssen Sie sicherstellen, dass die Operation korrekt über die Dimensionen hinweg ausgeführt wird. In R können Sie die Funktion sweep() verwenden, um die Renditen jedes Vermögenswerts mit seinen jeweiligen Gewichten zu multiplizieren:

r
# Annahme, dass `yearly_return` die Renditen und `w` die Gewichte sind
yearly_return_weighted <- sweep(yearly_return, 2, w, "*")

# Berechnen der Summe der gewichteten Renditen für jedes Jahr
portfolio_yearly_return <- rowSums(yearly_return_weighted)


Stellen Sie sicher, dass sowohl yearly_return als auch w korrekt formatiert sind, bevor Sie diesen Code ausführen. yearly_return sollte eine Matrix oder ein Dataframe sein, in dem Zeilen die Jahre und Spalten die einzelnen Vermögenswerte repräsentieren; w sollte ein Vektor sein, dessen Länge der Anzahl der Spalten in yearly_return entspricht.
Avatar von 4,6 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community