CAPM Bestandteile wiederholend berechnen
-
- Beiträge: 16
- Registriert: Mo Aug 06, 2018 12:33 pm
CAPM Bestandteile wiederholend berechnen
Hallo zusammen,
ich denke ich bin hier im Forum richtig aufgehoben und nicht im Bereich der Regressionsanalyse.
Ich muss für diverse Fonds ( Ca. 2000 ) die Überrendite gegenüber einem Marktportfolio berechnen, wobei ich das Alpha gemäß dem CAPM verwenden möchte. Warum mache ich das ganze? Ich will die Überrenditen untersuchen, welche die Manager erzielen, um daraus Aussagen ableiten zu können. Dabei soll untersucht werden, ob das Geschlecht des Managers einen Einfluss auf das Alpha / die Performance hat.
Am Ende möchte ich in der Lage sein eine Aussage darüber zu treffen wie viele Alphas signifkant positiv oder negativ waren. Für die Differenzierung zwischen Mann und Frau hätte ich an eine Dummy-Variable gedacht.
Als zweiter Schritt möchte ich wissen wie viele signifikante positive und negative Cooeffizienten ich habe im Bezug auf die beiden Risikofaktorenen SMB und HML aus dem 3 Faktor-CAPM habe. SMB und HML sind ebenso nur Renditen wie die Rendite es Marktporlios
Zur Berechnung des Alphas im 1-Faktor CAPM bin ich bereits auf die Funktion CAPM.alpha () aufmerksam geworden.
D
Meine Problemstellung resultiert aus meinem Stichprobenumfang. Ich werde vermutlich um die 2.000 Fonds haben und möchte nicht für jeden Fonds die Formel händisch schreiben. Ich gehe davon aus, dass man in R die Möglichkeit so etwas zu automatisieren. Im Prinzip ist es ja immer so, dass der Fonds die wechselnde Variable ist, während das Marktportfolio und der risikolose Zinssatz bzw. deren Spalten immer gleich bleiben.
Der nächste Schritt wäre die Berechnung des Alphas im Kontext eines 3 Faktor CAPM. Hierzu habe ich bisher keine Formel gefunden, aber schlussendlich ist es auch "nur" eine multiple lineare Regression.
Die Idee einer Panel-Regression habe ich bisher verworfen. Vielleicht liegt aber auch genau hier mein Verständnisproblem
Nach meinem Verständnis führt die Panel-Regression nachher zu "einem" Alpha. Oder kann ich hier das Alpha ganz regulär bestimmen und erhalte durch die Dummy-Variable die Aussagekraft, ob das Alpha unterschiedlich je Geschlecht ist.
Ich hoffe mein Problem ist soweit verständlich.
Ergänzend: In einem Paper, welches mich inspiriert hat wurde im Nachgang eine Quantil-Regression durchgeführt. Ich habe hierzu bisher sehr wenig Literatur gefunden, da es sich anscheinend um ein etwas fortschrittlicheres Thema handelt. Dabei wurden Portfolien gebildet, welche die Renditen der Fonds nach Geschlecht gleich gewichtet und dann darauf eine Quantilsregression auf das 3 Faktor CAPM gebildet.
ich denke ich bin hier im Forum richtig aufgehoben und nicht im Bereich der Regressionsanalyse.
Ich muss für diverse Fonds ( Ca. 2000 ) die Überrendite gegenüber einem Marktportfolio berechnen, wobei ich das Alpha gemäß dem CAPM verwenden möchte. Warum mache ich das ganze? Ich will die Überrenditen untersuchen, welche die Manager erzielen, um daraus Aussagen ableiten zu können. Dabei soll untersucht werden, ob das Geschlecht des Managers einen Einfluss auf das Alpha / die Performance hat.
Am Ende möchte ich in der Lage sein eine Aussage darüber zu treffen wie viele Alphas signifkant positiv oder negativ waren. Für die Differenzierung zwischen Mann und Frau hätte ich an eine Dummy-Variable gedacht.
Als zweiter Schritt möchte ich wissen wie viele signifikante positive und negative Cooeffizienten ich habe im Bezug auf die beiden Risikofaktorenen SMB und HML aus dem 3 Faktor-CAPM habe. SMB und HML sind ebenso nur Renditen wie die Rendite es Marktporlios
Zur Berechnung des Alphas im 1-Faktor CAPM bin ich bereits auf die Funktion CAPM.alpha () aufmerksam geworden.
D
Meine Problemstellung resultiert aus meinem Stichprobenumfang. Ich werde vermutlich um die 2.000 Fonds haben und möchte nicht für jeden Fonds die Formel händisch schreiben. Ich gehe davon aus, dass man in R die Möglichkeit so etwas zu automatisieren. Im Prinzip ist es ja immer so, dass der Fonds die wechselnde Variable ist, während das Marktportfolio und der risikolose Zinssatz bzw. deren Spalten immer gleich bleiben.
Der nächste Schritt wäre die Berechnung des Alphas im Kontext eines 3 Faktor CAPM. Hierzu habe ich bisher keine Formel gefunden, aber schlussendlich ist es auch "nur" eine multiple lineare Regression.
Die Idee einer Panel-Regression habe ich bisher verworfen. Vielleicht liegt aber auch genau hier mein Verständnisproblem
Nach meinem Verständnis führt die Panel-Regression nachher zu "einem" Alpha. Oder kann ich hier das Alpha ganz regulär bestimmen und erhalte durch die Dummy-Variable die Aussagekraft, ob das Alpha unterschiedlich je Geschlecht ist.
Ich hoffe mein Problem ist soweit verständlich.
Ergänzend: In einem Paper, welches mich inspiriert hat wurde im Nachgang eine Quantil-Regression durchgeführt. Ich habe hierzu bisher sehr wenig Literatur gefunden, da es sich anscheinend um ein etwas fortschrittlicheres Thema handelt. Dabei wurden Portfolien gebildet, welche die Renditen der Fonds nach Geschlecht gleich gewichtet und dann darauf eine Quantilsregression auf das 3 Faktor CAPM gebildet.
Zuletzt geändert von Sentinel66 am Mi Feb 20, 2019 6:07 pm, insgesamt 3-mal geändert.
Re: CAPM Bestandteile wiederholend berechnen
Hallo Sentinel66,
willkommen im Forum!
Das Verstehen wird üblicherweise besser, wenn Du uns anhand von Daten erklärst, was Du erreichen willst.
Bitte lies hierfür: viewtopic.php?f=20&t=11
Gruß, Jörg
willkommen im Forum!
Üblicherweise ist R sehr gut darin, zu wiederholende Berechnungen auf anderen Daten durchzuführen, wenn die Rechenvorschift ein Schema darstellt.Sentinel66 hat geschrieben: ↑Mo Aug 06, 2018 12:56 pm Ich muss für diverse Fonds die Überrendite gegenüber einem Marktportfolio berechnen, wobei ich das Alpha gemäß dem CAPM verwenden möchte.
Ich bin hierzu bereits auf die Funktion CAPM.alpha () aufmerksam geworden.
Meine Problemstellung resuliert aus meinem Stichprobenumfang. Ich werde vermutlich um die 2.000 Fonds haben und möchte nicht für jeden Fond die Formel händisch schreiben, insbesondere weil sich das ganze auf 1 bzw. 2 Marktportfolien bezieht.
Von dem Rest habe ich wenig verstanden.Der nächste Schritt wäre die Berechnung des Alphas im Kontext eines 3 Faktor CAPM. Hierzu habe ich bisher keine Formel gefunden.
Warum mache ich das ganze? Ich will die Überrenditen untersuchen, welche die Manager erzielen, um daraus Aussagen ableiten zu können.
Oder liegt hier ein Panel-Modell vor, was ich übersehen habe? In dem Paper, welches ich als Inspiration genommen habe wurde eine Quantil-Regression vorgenommen, weil die Alphas eine sehr unregelmäßige Verteilung hatten.
Ich hoffe mein Problem ist soweit verständlich.
Das Verstehen wird üblicherweise besser, wenn Du uns anhand von Daten erklärst, was Du erreichen willst.
Bitte lies hierfür: viewtopic.php?f=20&t=11
Gruß, Jörg
-
- Beiträge: 16
- Registriert: Mo Aug 06, 2018 12:33 pm
Re: CAPM Bestandteile wiederholend berechnen
Hallo Jörg,
Ich habe den obigen Text nochmal ergänzt.
ich habe noch keine Rohdaten, daher versuche ich es wie folgt:
Ich werde ein Tabelle erhalten mit Spalten:
Tag, Rendite der Fonds (diese Spalte wird es je Fonds geben also n mal), Rendite des Marktportfolios, Rendite des Risikolosen Zinssatzes
Das CAPM sagt: prognostizierte Rendite (abhängige Variabel)= Beta Faktor * ( Rendite Marktportfolio - Risikoloser Zinssatz) + Risikoloser Zinssatz
In der Realität werden abweichende Renditen am Markt gemessen (quasi Theorie vs. Realität) --> das besagte Alpha wird berechnet:
(realisierte Rendite - prognostizierte Rendite) * ( Rendite Marktportfolio - Risikoloser Zinssatz)
Gemäß der nachfolgenden Beschreibung der Funktion CAPM.alpha müsste ich jedes mal das Ra neu definieren um je Fonds das Alpha zu berechnen. Es müsste für das Ra also immer wieder eine neue Spalte definiert werden, was ich am liebsten automatisiert hätte. Und dann müsste ich die Alphas alle am besten in einer Tabelle als Output haben. Das wäre dann ein Traum.
Description
This is a wrapper for calculating a CAPM alpha.
"Alpha" purports to be a measure of a manager's skill by measuring the portion of the managers returns that are not attributable to "Beta", or the portion of performance attributable to a benchmark.
Usage
CAPM.alpha(Ra, Rb, Rf = 0)
Arguments
Ra an xts, vector, matrix, data frame, timeSeries or zoo object of asset returns
Rb return vector of the benchmark asset
Rf risk free rate, in same period as your returns
Ich habe den obigen Text nochmal ergänzt.
ich habe noch keine Rohdaten, daher versuche ich es wie folgt:
Ich werde ein Tabelle erhalten mit Spalten:
Tag, Rendite der Fonds (diese Spalte wird es je Fonds geben also n mal), Rendite des Marktportfolios, Rendite des Risikolosen Zinssatzes
Das CAPM sagt: prognostizierte Rendite (abhängige Variabel)= Beta Faktor * ( Rendite Marktportfolio - Risikoloser Zinssatz) + Risikoloser Zinssatz
In der Realität werden abweichende Renditen am Markt gemessen (quasi Theorie vs. Realität) --> das besagte Alpha wird berechnet:
(realisierte Rendite - prognostizierte Rendite) * ( Rendite Marktportfolio - Risikoloser Zinssatz)
Gemäß der nachfolgenden Beschreibung der Funktion CAPM.alpha müsste ich jedes mal das Ra neu definieren um je Fonds das Alpha zu berechnen. Es müsste für das Ra also immer wieder eine neue Spalte definiert werden, was ich am liebsten automatisiert hätte. Und dann müsste ich die Alphas alle am besten in einer Tabelle als Output haben. Das wäre dann ein Traum.
Description
This is a wrapper for calculating a CAPM alpha.
"Alpha" purports to be a measure of a manager's skill by measuring the portion of the managers returns that are not attributable to "Beta", or the portion of performance attributable to a benchmark.
Usage
CAPM.alpha(Ra, Rb, Rf = 0)
Arguments
Ra an xts, vector, matrix, data frame, timeSeries or zoo object of asset returns
Rb return vector of the benchmark asset
Rf risk free rate, in same period as your returns
-
- Beiträge: 16
- Registriert: Mo Aug 06, 2018 12:33 pm
Re: CAPM Bestandteile wiederholend berechnen
Hallo zusammen,
ich habe jetzt einen Test Datensatz und hoffe ihr könnt über meinen dput Zusatz darauf zugreifen. Ansonsten muss ich die CSV.Datei hochladen.
Mein Problem ist aktuell, dass mein Coding an der Stelle mit "myalpha[1] <--" scheitert, weil der myalpha nicht findet. Ich vermute hier liegt schon mein Fehler.
Ich hoffe ihr könnt mir auch einen Feedback zu meiner Schleife geben. Ich hätte nachher gerne zu den Alphas folgende Sachen ausgewertet
p-Wert der Alphas um zu prüfen, ob diese signifikant zu meinem Signifikanzniveau sind
Die Standardabweichung der Daten und die Kurtosis. --> Das ganze würde ich gerne wieder als CSV-Datei exportieren.
Ich befürchte hier gerade aktuell etwas daneben zu liegen und kann nicht einschätzen ob eine Panel-Regression zum selben Ergebnis kommen würde.
Die wechselnde Variable des Fonds ist ab Spalte 8. Ich hoffe das ist mit 7+j richtig codiert. Kann es aber aktuell nicht prüfen, weil das Skript am "myalpha" scheitert.
ich habe jetzt einen Test Datensatz und hoffe ihr könnt über meinen dput Zusatz darauf zugreifen. Ansonsten muss ich die CSV.Datei hochladen.
Mein Problem ist aktuell, dass mein Coding an der Stelle mit "myalpha[1] <--" scheitert, weil der myalpha nicht findet. Ich vermute hier liegt schon mein Fehler.
Ich hoffe ihr könnt mir auch einen Feedback zu meiner Schleife geben. Ich hätte nachher gerne zu den Alphas folgende Sachen ausgewertet
p-Wert der Alphas um zu prüfen, ob diese signifikant zu meinem Signifikanzniveau sind
Die Standardabweichung der Daten und die Kurtosis. --> Das ganze würde ich gerne wieder als CSV-Datei exportieren.
Ich befürchte hier gerade aktuell etwas daneben zu liegen und kann nicht einschätzen ob eine Panel-Regression zum selben Ergebnis kommen würde.
Die wechselnde Variable des Fonds ist ab Spalte 8. Ich hoffe das ist mit 7+j richtig codiert. Kann es aber aktuell nicht prüfen, weil das Skript am "myalpha" scheitert.
Code: Alles auswählen
install.packages("tidyquant")
install.packages("tidyverse")
install.packages("timetk")
install.packages("tibbletime")
install.packages("broom")
install.packages("PerformanceAnalytics")
library(capm)
library(CAPM.alpha)
library(tidyquant)
library(tidyverse)
library(timetk)
library(tibbletime)
library(broom)
data_table <- read.table("test1.csv", header=TRUE, sep=";",dec=",")
dput(data_table)
#Ueberrendite Marktportfolio = Rendite Marktportfolio - Risikoloser Zinsatz
Rm <- data_table[ ,3] - data_table[ ,2]
Rf <- data_table[ ,2]
Rp <- data_table[ ,8]
#CAPM berechnen
# Rp = Rf + Beta * RM
#Alpha bestimmen Single Faktor Model
#Formally, the single factor performance measure is the intercept ( ̨p) in the regression of the
#fund excess returns on the excess returns of a representative market index:
#Rp,t â Rf,t = alpha + Beta (Rm,t â Rf,t) + εp,t
#where Rp,t is the return of fund p in period t; Rf,t is the risk-free rate in period t;
# Rm,t is the return of the proper market portfolio of each fund in period t.
#Rp,t â Rf,t = alpha + Beta (Rm,t â Rf,t) + εp,t
Resultsinglea <-lm (Rp-Rf~ Rm)
summary(Resultsinglea)
mysummmarysinglea <-summary(Resultsinglea)
mycoef <- coef(mysummmarysinglea)
myalpha[1] <- mycoef[1,1]
#Automatisierte Wiederholung um Alpha für alle Fonds zu berechnen
for(j in 1:9){
Rp <- data_table[ ,7+j]-data_table[ ,1]
Resultsinglea <-lm (Rp-Rf~ Rm)
summary(Ressultsinglea)
Rm <- data_table[ ,3] - data_table[ ,2]
Rf <- data_table[ ,2]
Rp <- data_table[ ,j]
myalpha[j] <- mycoef[1,1]
}
[Code/]
Re: CAPM Bestandteile wiederholend berechnen
Hallo Sentinel,
ansonsten einfach:
Gruß, Jörg
Was meinst Du mit dput-Zusatz? Wo können wir den sehen?Sentinel66 hat geschrieben: ↑Mi Aug 08, 2018 11:54 am ich habe jetzt einen Test Datensatz und hoffe ihr könnt über meinen dput Zusatz darauf zugreifen. Ansonsten muss ich die CSV.Datei hochladen.
Soll myalpha ein Vektor werden? Wenn ja, empfiehlt sich die vorherige Initialisierung per:Mein Problem ist aktuell, dass mein Coding an der Stelle mit "myalpha[1] <--" scheitert, weil der myalpha nicht findet. Ich vermute hier liegt schon mein Fehler.
Code: Alles auswählen
myalpha <- numeric(...)
Code: Alles auswählen
myalpha <- mycoef[1,1]
Re: CAPM Bestandteile wiederholend berechnen
so, jetzt zur Schleife:
Ich glaube nicht, dass Du das so willst.
Ich weiß auch nicht, warum Du am Ende der Schleife:setzt, wenn Du beim Beginn vom nächsten Duchlauf das Objekt Rp gleich wieder überschreibst.
Meiner Meinung nach ist das sinnfrei.
Gruß, Jörg
Da Du in der Schleife das Objekt mycoef nicht veränderst, werden alle myalpha[j] (für j=1, ..., 9) den gleichen Wert haben.Sentinel66 hat geschrieben: ↑Mi Aug 08, 2018 11:54 am Ich hoffe ihr könnt mir auch einen Feedback zu meiner Schleife geben. Ich hätte nachher gerne zu den Alphas folgende Sachen ausgewertet
p-Wert der Alphas um zu prüfen, ob diese signifikant zu meinem Signifikanzniveau sind
Die Standardabweichung der Daten und die Kurtosis. --> Das ganze würde ich gerne wieder als CSV-Datei exportieren.Code: Alles auswählen
#Automatisierte Wiederholung um Alpha für alle Fonds zu berechnen for(j in 1:9){ Rp <- data_table[ ,7+j]-data_table[ ,1] Resultsinglea <-lm (Rp-Rf~ Rm) summary(Ressultsinglea) Rm <- data_table[ ,3] - data_table[ ,2] Rf <- data_table[ ,2] Rp <- data_table[ ,j] myalpha[j] <- mycoef[1,1] }
Ich glaube nicht, dass Du das so willst.
Ich weiß auch nicht, warum Du am Ende der Schleife:
Code: Alles auswählen
Rp <- data_table[ ,j]
Meiner Meinung nach ist das sinnfrei.
Gruß, Jörg
-
- Beiträge: 16
- Registriert: Mo Aug 06, 2018 12:33 pm
Re: CAPM Bestandteile wiederholend berechnen
Hallo Jörg,
danke für die schnelle Rückmeldung
Ein Vektor ist für myalpha nicht notwendig.
Ich möchte jeweils unterschiedliche myalphas angezeigt bekommen.
Wie meinst du müsste ich mycoeff anpassen? mycoef[1,j]?
Meine Schleife kann ich nun starten, aber es kommt nix gescheites bei rum.
Mit dput wollte ich gemäß eurem Leitfaden "Wie erstelle ich ein reproduzierbares Beispiel?" die Daten zugänglich machen.
danke für die schnelle Rückmeldung
Ein Vektor ist für myalpha nicht notwendig.
Da hast du Recht, das möchte ich nicht. Ich bin auf dieses Beispiel zufällig gestoßen. Mit Schleifen habe ich bisher keine Erfahrung.Da Du in der Schleife das Objekt mycoef nicht veränderst, werden alle myalpha[j] (für j=1, ..., 9) den gleichen Wert haben.
Ich glaube nicht, dass Du das so willst.
Ich möchte jeweils unterschiedliche myalphas angezeigt bekommen.
Wie meinst du müsste ich mycoeff anpassen? mycoef[1,j]?
Meine Schleife kann ich nun starten, aber es kommt nix gescheites bei rum.
Code: Alles auswählen
> #Automatisierte Wiederholung um Alpha für alle Fonds zu berechnen
> for(j in 1:9){
+ Rp <- data_table[ ,7+j]-data_table[ ,1]
+ Resultsinglea <-lm (Rp-Rf~ Rm)
+ summary(Ressultsinglea)
+ Rm <- data_table[ ,3] - data_table[ ,2]
+ Rf <- data_table[ ,2]
+ Rp <- data_table[ ,j]
+
+ myalpha[j] <- mycoef[1,1]
+ }
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
alle Fälle NA
In addition: Warning message:
In Ops.factor(data_table[, 7 + j], data_table[, 1]) :
‘-’ not meaningful for factors
Code: Alles auswählen
dput(data_table)
structure(list(X = structure(c(58L, 52L, 18L, 46L, 12L, 40L,
5L, 34L, 68L, 28L, 63L, 23L, 57L, 51L, 17L, 45L, 11L, 39L, 4L,
33L, 67L, 27L, 62L, 22L, 56L, 50L, 16L, 44L, 10L, 38L, 6L, 32L,
66L, 26L, 61L, 21L, 55L, 49L, 15L, 43L, 9L, 37L, 3L, 31L, 65L,
25L, 60L, 20L, 54L, 48L, 14L, 42L, 8L, 36L, 2L, 30L, 64L, 24L,
59L, 19L, 53L, 47L, 13L, 41L, 7L, 35L, 1L, 29L), .Label = c("28.02.2013",
"28.02.2014", "28.02.2015", "28.02.2017", "28.02.2018", "29.02.2016",
"30.04.2013", "30.04.2014", "30.04.2015", "30.04.2016", "30.04.2017",
"30.04.2018", "30.06.2013", "30.06.2014", "30.06.2015", "30.06.2016",
"30.06.2017", "30.06.2018", "30.09.2013", "30.09.2014", "30.09.2015",
"30.09.2016", "30.09.2017", "30.11.2013", "30.11.2014", "30.11.2015",
"30.11.2016", "30.11.2017", "31.01.2013", "31.01.2014", "31.01.2015",
"31.01.2016", "31.01.2017", "31.01.2018", "31.03.2013", "31.03.2014",
"31.03.2015", "31.03.2016", "31.03.2017", "31.03.2018", "31.05.2013",
"31.05.2014", "31.05.2015", "31.05.2016", "31.05.2017", "31.05.2018",
"31.07.2013", "31.07.2014", "31.07.2015", "31.07.2016", "31.07.2017",
"31.07.2018", "31.08.2013", "31.08.2014", "31.08.2015", "31.08.2016",
"31.08.2017", "31.08.2018", "31.10.2013", "31.10.2014", "31.10.2015",
"31.10.2016", "31.10.2017", "31.12.2013", "31.12.2014", "31.12.2015",
"31.12.2016", "31.12.2017"), class = "factor"), EURIBOR3MD.X = c(-0.319,
-0.319, -0.321, -0.321, -0.329, -0.328, -0.327, -0.328, -0.329,
-0.329, -0.331, -0.329, -0.329, -0.33, -0.331, -0.329, -0.329,
-0.329, -0.33, -0.327, -0.319, -0.314, -0.313, -0.301, -0.299,
-0.297, -0.286, -0.261, -0.251, -0.244, -0.205, -0.162, -0.131,
-0.114, -0.068, -0.04, -0.033, -0.023, -0.014, -0.012, -0.005,
0.019, 0.039, 0.054, 0.078, 0.082, 0.086, 0.083, 0.163, 0.209,
0.207, 0.311, 0.339, 0.313, 0.286, 0.296, 0.287, 0.234, 0.23,
0.225, 0.224, 0.228, 0.218, 0.2, 0.207, 0.211, 0.209, 0.232),
.STOXX = c(391.17, 391.61, 379.93, 383.06, 385.32, 370.87,
379.63, 395.46, 389.18, 386.69, 395.22, 388.16, 373.88, 377.85,
379.37, 389.99, 387.09, 381.14, 370.24, 360.12, 361.42, 341.99,
338.97, 342.92, 343.53, 341.89, 329.88, 347.45, 341.48, 337.54,
333.92, 342.27, 365.81, 385.43, 375.47, 347.77, 362.79, 396.37,
381.31, 399.87, 395.79, 397.3, 392.21, 367.05, 342.54, 347.25,
336.8, 343.08, 342, 335.99, 341.86, 344.24, 337.89, 334.31,
338.02, 322.52, 328.26, 325.16, 322.37, 310.46, 297.32, 299.58,
285.02, 300.88, 296.72, 293.78, 289.94, 287.22), .XBBSF = c(563.33,
566.69, 558.01, 565.6, 558.04, 539.66, 549.04, 565.51, 554.98,
542.63, 557.04, 549.79, 529.23, 535.11, 530.27, 543.75, 541.02,
517.95, 509.68, 494.75, 492.04, 471.07, 463.99, 476.65, 474.46,
466.44, 440.16, 488.27, 470.23, 470.58, 457.96, 461.57, 504.02,
516.51, 495.69, 467.3, 481.53, 511.47, 497.47, 513.35, 498.75,
494.79, 489.34, 450.28, 422.82, 414.25, 405.99, 410.66, 419.47,
414.49, 425.27, 431.46, 423.89, 430.95, 435.78, 407.99, 406.63,
398.43, 392.49, 376, 358.05, 355.69, 337.24, 355.56, 357.38,
344.89, 342.28, 328.18), .XBATF = c(327.64, 330.48, 320.12,
322.37, 325.63, 312.62, 320, 334.98, 329.51, 327.97, 335.59,
330.01, 317.64, 321.46, 323.51, 332.38, 329.74, 326.64, 317.27,
309.07, 311.4, 293.41, 291.19, 293.42, 294.11, 293.26, 284.63,
296, 291.39, 287.45, 285.54, 293.32, 312.52, 330.79, 323.47,
299.04, 312.71, 343.55, 329.62, 346.62, 344.55, 346.48, 342.51,
321.27, 300.04, 306.04, 297.73, 304.34, 301.91, 296.41, 300.67,
302.04, 296.77, 292.34, 295.29, 282.79, 289.05, 286.71, 284.36,
273.98, 262.23, 264.76, 252.95, 267.4, 264.35, 261.31, 257.93,
257.01), .STVP = c(1315.94, 1321.92, 1277.17, 1286.74, 1313.95,
1256.6, 1291.11, 1346.86, 1321.05, 1310.63, 1342.25, 1323.11,
1273.1, 1292.79, 1291.15, 1315.73, 1307.59, 1292.5, 1258.37,
1237.35, 1246.87, 1173.67, 1150.7, 1137.16, 1139.11, 1117.68,
1081.14, 1137.84, 1134.21, 1102.86, 1097.47, 1133.09, 1211.6,
1282.98, 1257.81, 1169.7, 1229.23, 1345.4, 1308.55, 1372.84,
1373.16, 1379.99, 1372.61, 1274.12, 1210.96, 1233.09, 1214.52,
1252.49, 1253.74, 1241.89, 1265.81, 1266.8, 1251.6, 1224.93,
1231.56, 1178.93, 1194.96, 1181.61, 1173.12, 1120.78, 1069.88,
1075.02, 1014.59, 1080.61, 1061.13, 1037.69, 1040.41, 1052.98
), .STGP = c(2332.98, 2327.73, 2263.89, 2289.83, 2238.05,
2168.68, 2211.41, 2300.94, 2260.17, 2238.05, 2297.09, 2231.8,
2153.1, 2162.86, 2195.44, 2279.24, 2250.9, 2187.61, 2125.43,
2047.52, 2049.76, 1956.46, 1952.08, 2024.29, 2026.31, 2037.18,
1947.79, 2032.22, 1986, 1983.22, 1960.62, 1998.94, 2141.24,
2233.82, 2171.17, 2009.67, 2077.77, 2256.29, 2155.54, 2266.48,
2227.66, 2252.09, 2203.06, 2067.13, 1910.42, 1929.01, 1855.35,
1877.27, 1871.47, 1833.27, 1873.92, 1885.54, 1851.51, 1846.78,
1873.87, 1780.76, 1813.17, 1798.37, 1776.39, 1731.02, 1665.89,
1682.05, 1620.66, 1691.2, 1674.69, 1679.76, 1631.31, 1578.26
), UniEuropa..net...ISIN.DE0009750232...EUR. = c(68.18, 68.36,
66.68, 67.53, 65.78, 62.87, 64.55, 67.61, 66.06, 65.59, 67.34,
65.1, 62.45, 63.13, 62.77, 63.94, 64.27, 62.17, 59.82, 59.16,
59.04, 56.66, 56.91, 58.6, 58.64, 57.97, 56.26, 59.66, 57.97,
58.36, 57.54, 59.46, 63.58, 66.09, 63.4, 59.06, 60.8, 65.85,
62.9, 65.74, 65.5, 65.8, 64.41, 60.36, 55.41, 56.37, 54.51,
55.08, 54.5, 53.19, 54.03, 54.36, 53.55, 53.12, 54.5, 51.68,
52.14, 51.59, 50.81, 49.09, 47.29, 48.04, 45.68, 47.64, 47.23,
46.76, 45.88, 45.24), UniValueFonds..Europa.A..ISIN..LU0126314995...EUR. = c(53.9,
54.76, 53.05, 53.93, 54.33, 51.55, 53.18, 55.6, 54.33, 54.2,
55.9, 55.44, 53.18, 54.04, 53.44, 54.38, 54.11, 53.52, 51.64,
51.33, 52.11, 48.71, 48.65, 47.86, 47.83, 47.2, 45.7, 48.65,
47.61, 46.38, 45.75, 47.2, 50.98, 53.83, 53.87, 50.09, 52.79,
57.18, 54.83, 57.24, 56.69, 56.34, 55.72, 51.99, 48.41, 49.35,
48.72, 49.94, 49.58, 48.69, 49.46, 49.8, 49.05, 48.52, 49.24,
46.9, 47.33, 46.88, 47.12, 44.73, 42.73, 43.02, 40.51, 42.86,
41.39, 40.06, 39.84, 40.29)), class = "data.frame", row.names = c(NA,
-68L))
Re: CAPM Bestandteile wiederholend berechnen
Hallo Sentinel,
vor
dass die erste Spalte nicht numerisch ist, siehe:
Rein optisch programmtechnisch könnte es am Ende so oder ähnlich aussehen:
Die Sachlogik habe ich nicht kontrolliert - das müsstest Du erledigen.
Gruß, Jörg
wenn Du die verschiedenen Werte von Alpha in einem Objekt speichern möchtest, brauchst Du sehr wohl einen Vektor (im einfachsten Fall).Sentinel66 hat geschrieben: ↑Mi Aug 08, 2018 1:12 pm Ein Vektor ist für myalpha nicht notwendig.
Da hast du Recht, das möchte ich nicht. Ich bin auf dieses Beispiel zufällig gestoßen. Mit Schleifen habe ich bisher keine Erfahrung.Da Du in der Schleife das Objekt mycoef nicht veränderst, werden alle myalpha[j] (für j=1, ..., 9) den gleichen Wert haben.
Ich glaube nicht, dass Du das so willst.
Ich möchte jeweils unterschiedliche myalphas angezeigt bekommen.
Warum bist Du der Meinung, dass Du es mit einer Matrix von Koeffizienten zu tun hast (Du verwendest Indizes für zwei Dimensionen). Hier ein lauffähiges Beispiel:Wie meinst du müsste ich mycoeff anpassen? mycoef[1,j]?
Code: Alles auswählen
coef(lm(Sepal.Length ~ Petal.Length, data=iris))
coef(lm(Sepal.Length ~ Petal.Length, data=iris))[1]
coef(lm(Sepal.Length ~ Petal.Length, data=iris))[1,1]
Die erste Spalte von data_table enhält das Datum. Wie stellst Du Dir die DifferenzbildungMeine Schleife kann ich nun starten, aber es kommt nix gescheites bei rum.
Code: Alles auswählen
In addition: Warning message: In Ops.factor(data_table[, 7 + j], data_table[, 1]) : ‘-’ not meaningful for factors
Code: Alles auswählen
data_table[, 7 + j] - data_table[, 1]
ja, prima Jetzt (mit vorhandenem Output) lässt sich viel besser helfen, z.B. konnte ich schon feststellen,Mit dput wollte ich gemäß eurem Leitfaden "Wie erstelle ich ein reproduzierbares Beispiel?" die Daten zugänglich machen.Code: Alles auswählen
dput(data_table) structure(list(X = structure(c(58L, 52L, 18L, 46L, 12L, 40L, 5L, 34L, 68L, 28L, 63L, 23L, 57L, 51L, 17L, 45L, 11L, 39L, 4L, ... 46.9, 47.33, 46.88, 47.12, 44.73, 42.73, 43.02, 40.51, 42.86, 41.39, 40.06, 39.84, 40.29)), class = "data.frame", row.names = c(NA, -68L))
dass die erste Spalte nicht numerisch ist, siehe:
Code: Alles auswählen
str(data_table)
Code: Alles auswählen
#Automatisierte Wiederholung um Alpha für alle Fonds zu berechnen
single.a <- function(j) {
Rf <- data_table[ , 2]
Rp <- data_table[ , 7+j]
Rm <- data_table[ , 3] - Rf
Resultsinglea <- lm(Rp-Rf ~ Rm)
coef(Resultsinglea)["(Intercept)"]
}
myalpha <- sapply(1:2, single.a)
Gruß, Jörg