Permutationstests für Korrelationen
Wie verhält sich die Volatilität von Bitcoin im Vergleich zur Volatilität des S&P 500?
Zuvor hast du die Volatilität als prozentuale tägliche Veränderung berechnet; diese ist in den Spalten Pct_Daily_Change_BTC und Pct_Daily_Change_SP500 deiner Daten gespeichert. Die Frage ist, in welchem Ausmaß diese beiden Werte korrelieren. Eine Möglichkeit, das zu beantworten, ist ein Permutationstest. Durch zufälliges Vertauschen von Werten zwischen dem S&P 500 und BTC kannst du sehen, wie ein zufälliges Ergebnis aussehen würde, und dieses dann mit den beobachteten Werten vergleichen.
Ein DataFrame mit S&P-500- und Bitcoin-Preisen (btc_sp_df) ist bereits geladen, ebenso die Pakete pandas als pd, NumPy als np und stats aus SciPy.
Diese Übung ist Teil des Kurses
Grundlagen der Inferenz in Python
Anleitung zur Übung
- Definiere eine Funktion
statistic(), die nur den Pearson-R-Wert zwischen zwei Vektoren zurückgibt. - Setze
dataauf ein Tupel, das die Volatilität vonBTCundSP500enthält. - Führe einen Permutationstest mit diesen Daten, der Kennzahl, 1000 Resamples und der alternativen Hypothese „größere Volatilität bei Bitcoin“ durch.
- Gib aus, ob der p-Wert auf dem 5-%-Niveau signifikant ist.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Define a function which returns the Pearson R value
def statistic(x, y):
____
# Define the data as the percent daily change from each asset
data = ____
# Compute a permutation test for the percent daily change of each asset
res = ____(____, ____,
n_resamples=____,
vectorized=____,
alternative='____')
# Print if the p-value is significant at 5%
print(res.pvalue < 0.05)