Start · Sprachen · PHP · Referenz · trader_correl

trader_correl

Funktion

Berechnet den Pearson-Korrelationskoeffizienten zwischen zwei Zeitreihen über einen gleitenden Zeitraum.

Kategorie: math

Signatur

trader_correl(array $real0, array $real1, int $timePeriod = 30): array|false

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 - 1 der 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

Typ
array|false
Beschreibung
Gibt ein numerisches Array mit den berechneten Korrelationskoeffizienten zurück. Bei ungültigen Eingaben (z. B. zu kurze Arrays oder falscher Typ) wird 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);
    }
}
?>
Anzahl der berechneten Werte: 31 Index 0: Korrelation = 0.9986 Index 1: Korrelation = 0.9991 ...

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;
}
?>
Periode 0: r = -1.0000 Periode 1: r = -1.0000 Periode 2: r = -1.0000 Periode 3: r = -1.0000 Periode 4: r = -1.0000 Periode 5: r = -1.0000

// 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.