Eine Rendite durch eine andere erklären
Eine Aktie bewegt sich selten allein: Steigt der Markt, steigt sie meist auch. Die lineare Regression quantifiziert diesen Zusammenhang, indem sie eine Gerade y = alpha + beta * x durch die Renditepaare legt (x: der Markt, y: die Aktie). Die Methode der kleinsten Quadrate (OLS) wählt die Gerade, die die Summe der quadrierten senkrechten Abstände, der Residuen, so klein wie möglich macht. Das Ergebnis hat eine geschlossene Form: Die Steigung beta ist die Kovarianz von x und y geteilt durch die Varianz von x, und der Achsenabschnitt alpha lässt die Gerade durch den Mittelpunkt der Daten laufen.
import numpy as np
market = np.array([0.010, -0.005, 0.004, 0.012, -0.008, 0.003, -0.002, 0.007, 0.001, -0.004])
asset = np.array([0.013, -0.004, 0.007, 0.016, -0.011, 0.004, -0.001, 0.011, 0.002, -0.007])
dx = market - market.mean() # deviations of x from its mean
beta = (dx * (asset - asset.mean())).sum() / (dx ** 2).sum()
alpha = asset.mean() - beta * market.mean()
print(round(beta, 4), round(alpha, 5)) # 1.3271 0.00061 the asset moves 1.33 times as much as the marketResiduen und R-Quadrat
Ein Residuum ist das, was die Gerade bei einer Beobachtung nicht erklärt: y - (alpha + beta * x). OLS-Residuen summieren sich immer zu null und sind mit x unkorreliert, eine praktische Kontrolle Ihres eigenen Codes. R-Quadrat sagt, welchen Teil der Variation von y die Gerade erklärt: 1 - sum(Residuen²) / sum((y - mean_y)²). Es reicht von 0 (die Gerade ist nicht besser als der Durchschnitt) bis 1 (alle Punkte liegen auf der Geraden) und ist bei einfacher Regression gleich der quadrierten Korrelation von x und y.
residuals = asset - (alpha + beta * market)
print(abs(residuals.sum()) < 1e-12, abs((residuals * market).sum()) < 1e-12) # True True the OLS fingerprints
ss_res = (residuals ** 2).sum()
ss_tot = ((asset - asset.mean()) ** 2).sum()
print(round(1 - ss_res / ss_tot, 4)) # 0.9785
print(round(np.corrcoef(market, asset)[0, 1] ** 2, 4)) # 0.9785 the squared correlationCAPM: Beta und Alpha
In der Finanzwelt hat die Regression einen Namen. Beta ist die Sensitivität gegenüber dem Markt: Ein Beta von 1,3 heißt, die Aktie bewegt sich tendenziell 30 % stärker als der Markt, nach oben wie nach unten. Alpha ist die durchschnittliche Rendite, die bleibt, wenn man diese Markt-Exposure berücksichtigt hat, und das reklamiert ein Manager als Können. Um den risikofreien Zins herauszuhalten, nutzt die CAPM-Regression Überschussrenditen: die Rendite minus risikofreier Zins, für Wert und Markt. Eine Strategie mit Alpha nahe null ist nur verkleidete Markt-Exposure.
risk_free = 0.0001 # risk-free return of one day
x = market - risk_free # excess returns of the market
y = asset - risk_free # excess returns of the asset
beta = ((x - x.mean()) * (y - y.mean())).sum() / ((x - x.mean()) ** 2).sum()
alpha = y.mean() - beta * x.mean()
print(round(beta, 4), round(alpha, 6)) # 1.3271 0.000644 a daily alpha of 0.064%, on 10 days of data# Points exactly on y = 1 + 2x: the fit recovers the line
x = np.array([1.0, 2.0, 3.0, 4.0])
y = 1 + 2 * x
dx = x - x.mean()
slope = (dx * (y - y.mean())).sum() / (dx ** 2).sum()
print(y.mean() - slope * x.mean(), slope) # 1.0 2.0- OLS minimiert die quadrierten Residuen:
beta = cov(x, y) / var(x)(Summen zentrierter Produkte) undalpha = mean_y - beta * mean_x. - Die Residuen
y - (alpha + beta * x)summieren sich zu null; R-Quadrat1 - ss_res / ss_totist der erklärte Varianzanteil. - CAPM: Regressieren Sie die Überschussrenditen des Werts auf die des Marktes; Beta ist die Markt-Exposure, Alpha der Rest.
Als Nächstes: Volatilität, um zu messen und vorherzusagen, wie stark Renditen schwanken.
Lab: Was bewertet wird
- Mit
ols_fitdie Gerade durch die Punkte legen25 Pkt. - Mit
residualsmessen, was die Gerade verfehlt25 Pkt. - Mit
r_squareddie Anpassung bewerten25 Pkt. - Mit
capm_alpha_betaeinen Wert in Marktexposure und Können aufteilen25 Pkt.