Signatur
Beschreibung
trader_correl ist Teil der TRADER-Erweiterung für PHP, die technische Analyse-Funktionen aus der TA-Lib-Bibliothek bereitstellt. Die Funktion berechnet den Pearson-Korrelationskoeffizienten (auch als Pearson's r bekannt) zwischen zwei numerischen Zeitreihen $real0 und $real1 über ein gleitendes Fenster der angegebenen Länge.
Der Pearson-Korrelationskoeffizient misst die lineare Abhängigkeit zwischen zwei Variablen und liefert Werte zwischen -1 (vollständig negativ korreliert) und +1 (vollständig positiv korreliert). Ein Wert nahe 0 deutet auf keine lineare Beziehung hin. Diese Funktion ist besonders nützlich in der Finanzanalyse, um beispielsweise die Korrelation zwischen zwei Kursverläufen oder zwischen einem Wertpapier und einem Index zu ermitteln.
Typische Anwendungsfälle sind die Portfolioanalyse, das Risikomanagement sowie die Entwicklung von Handelssystemen, bei denen Paare von Instrumenten beobachtet werden sollen. Die Ausgabe ist ein Array, dessen Länge von der Eingabelänge und dem $timePeriod-Parameter abhängt — die ersten $timePeriod - 1 Elemente fehlen im Ergebnis (Anlaufphase der Berechnung).
- Beide Eingabe-Arrays müssen dieselbe Länge haben.
- Das Ergebnis-Array beginnt am Index 0, entspricht jedoch inhaltlich dem Bereich ab Position
$timePeriod - 1der Eingabe.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $real0 Pflicht | array | Erste numerische Zeitreihe (z. B. Schlusskurse eines Wertpapiers). Muss dieselbe Anzahl an Elementen wie $real1 besitzen. |
|
| $real1 Pflicht | array | Zweite numerische Zeitreihe (z. B. Schlusskurse eines anderen Wertpapiers oder eines Index). Muss dieselbe Anzahl an Elementen wie $real0 besitzen. |
|
| $timePeriod | int | 30 | Anzahl der Perioden, über die der gleitende Korrelationskoeffizient berechnet wird. Muss mindestens 2 betragen. Üblicher Standardwert ist 30. |
Rückgabewert
false zurückgegeben. Die Werte im Array liegen im Bereich [-1.0, 1.0].Beispiele
Korrelation zwischen zwei Kursreihen berechnen
<?php
// Zwei simulierte Kursreihen (z. B. Aktie A und Aktie B)
$kursA = [100, 102, 101, 105, 107, 110, 108, 112, 115, 113,
116, 118, 120, 119, 122, 125, 123, 127, 130, 128,
131, 133, 135, 134, 137, 140, 138, 142, 145, 143,
146, 148, 150, 149, 152];
$kursB = [200, 203, 202, 207, 209, 213, 211, 215, 219, 217,
220, 223, 225, 224, 227, 231, 229, 233, 237, 235,
238, 241, 244, 242, 246, 250, 248, 252, 256, 253,
257, 260, 263, 261, 265];
$timePeriod = 5;
$ergebnis = trader_correl($kursA, $kursB, $timePeriod);
if ($ergebnis === false) {
echo 'Fehler bei der Berechnung.' . PHP_EOL;
} else {
echo 'Anzahl der berechneten Werte: ' . count($ergebnis) . PHP_EOL;
foreach ($ergebnis as $index => $wert) {
printf('Index %d: Korrelation = %.4f%s', $index, $wert, PHP_EOL);
}
}
?>
Stark negativ korrelierende Zeitreihen erkennen
<?php
// Zwei gegenläufige Zeitreihen
$reiheA = [10, 12, 14, 16, 18, 20, 22, 24, 26, 28];
$reiheB = [28, 26, 24, 22, 20, 18, 16, 14, 12, 10];
$ergebnis = trader_correl($reiheA, $reiheB, 5);
if ($ergebnis !== false) {
foreach ($ergebnis as $i => $wert) {
printf('Periode %d: r = %.4f%s', $i, $wert, PHP_EOL);
}
} else {
echo 'Berechnung fehlgeschlagen.' . PHP_EOL;
}
?>
// Wichtig · Fallstricke
Voraussetzung: Die TRADER-Erweiterung (ext/trader) muss installiert und in der php.ini aktiviert sein (extension=trader). Sie ist nicht Bestandteil der PHP-Standardinstallation und muss über PECL nachinstalliert werden: pecl install trader.
Array-Längen: Beide Eingabe-Arrays müssen exakt gleich lang sein. Unterschiedliche Längen führen zu false als Rückgabewert. Außerdem muss die Anzahl der Elemente mindestens $timePeriod betragen, da sonst keine Ausgabe berechnet werden kann.
Indexverschiebung: Das Ergebnis-Array ist kürzer als die Eingabe — es enthält count($real0) - $timePeriod + 1 Elemente. Der erste Wert im Ergebnis entspricht der Korrelation über die ersten $timePeriod Elemente der Eingabe.
Konstante Zeitreihen: Wenn eine der Zeitreihen innerhalb eines Fensters eine Standardabweichung von 0 hat (alle Werte identisch), ist der Korrelationskoeffizient mathematisch undefiniert. In diesem Fall können NAN oder 0 im Ergebnis erscheinen.