Start · Sprachen · PHP · Referenz · trader_linearreg_slope

trader_linearreg_slope

Funktion

Berechnet die Steigung (Slope) der linearen Regression über eine Zeitreihe für jeden Datenpunkt.

Kategorie: math

Signatur

trader_linearreg_slope(array $real, int $timePeriod = 14): array|false

Beschreibung

trader_linearreg_slope gehört zur TRADER-Erweiterung (Technical Analysis Library) und berechnet für jeden Datenpunkt einer Zeitreihe die Steigung der linearen Regressionsgerade. Die Steigung gibt an, wie stark sich der Wert pro Zeiteinheit im betrachteten Fenster (Periode) ändert – sie ist das m aus der Geradengleichung y = m·x + b.

In der technischen Analyse von Finanzmärkten wird die Steigung genutzt, um die Richtung und Intensität eines Trends zu quantifizieren. Ein positiver Wert zeigt einen Aufwärtstrend an, ein negativer Wert einen Abwärtstrend; je größer der Betrag, desto steiler der Trend im betrachteten Zeitfenster.

Die Funktion verwendet die Methode der kleinsten Quadrate (Ordinary Least Squares). Das Zeitfenster verschiebt sich gleitend über das Eingabe-Array, sodass für jeden Datenpunkt ab Index timePeriod - 1 ein Steigungswert berechnet wird. Die ersten timePeriod - 1 Elemente fehlen im Rückgabe-Array (sie werden übersprungen).

Typische Einsatzgebiete sind algorithmisches Trading, Trendstärken-Analysen sowie die Entwicklung von Handelsstrategien, die auf der Dynamik von Kursbewegungen basieren.

Parameter

Name Typ Default Beschreibung
$real Pflicht array Eindimensionales Array mit numerischen Eingabewerten (z. B. Schlusskurse). Die Werte müssen in chronologischer Reihenfolge vorliegen.
$timePeriod int 14 Anzahl der Datenpunkte (Perioden), über die die lineare Regression berechnet wird. Muss mindestens 2 betragen. Standardwert ist 14.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein numerisch indiziertes Array mit den berechneten Steigungswerten zurück. Die ersten timePeriod - 1 Einträge des Eingabe-Arrays haben keinen korrespondierenden Ausgabewert. Bei ungültigen Parametern oder einem Fehler wird false zurückgegeben.

Beispiele

Grundlegende Berechnung der Regressionssteigung

<?php
// Beispielhafte Schlusskurse einer Aktie
$closes = [100.0, 102.5, 101.0, 103.0, 105.5, 107.0, 106.0, 108.5, 110.0, 111.5,
           112.0, 113.5, 115.0, 114.5, 116.0, 117.5, 119.0, 118.0, 120.5, 122.0];

$timePeriod = 5;
$slopes = trader_linearreg_slope($closes, $timePeriod);

if ($slopes === false) {
    echo 'Fehler bei der Berechnung.' . PHP_EOL;
} else {
    echo 'Berechnete Steigungswerte:' . PHP_EOL;
    foreach ($slopes as $index => $slope) {
        printf("Index %2d: Steigung = %.4f\n", $index, $slope);
    }
}
Berechnete Steigungswerte: Index 4: Steigung = 1.3500 Index 5: Steigung = 1.1500 Index 6: Steigung = 0.8500 Index 7: Steigung = 1.1000 Index 8: Steigung = 1.2000 ...

Trendrichtung anhand der Steigung bestimmen

<?php
$closes = [200.0, 198.5, 197.0, 195.5, 194.0, 193.0, 194.5, 196.0, 198.0, 200.5,
           202.0, 203.5, 205.0, 207.0, 206.5, 208.0, 210.5, 212.0, 211.5, 213.0];

$slopes = trader_linearreg_slope($closes, 10);

if ($slopes !== false) {
    $lastSlope = end($slopes);
    if ($lastSlope > 0) {
        echo sprintf("Aufwärtstrend — Steigung: %.4f pro Periode\n", $lastSlope);
    } elseif ($lastSlope < 0) {
        echo sprintf("Abwärtstrend — Steigung: %.4f pro Periode\n", $lastSlope);
    } else {
        echo "Kein klarer Trend (Steigung = 0)\n";
    }
}
Aufwärtstrend — Steigung: 1.4727 pro Periode

// Wichtig · Fallstricke

Voraussetzung: Die TRADER-Erweiterung muss kompiliert und aktiviert sein (extension=trader in der php.ini). Sie basiert auf der TA-Lib (Technical Analysis Library).

Rückgabe-Index: Das zurückgegebene Array beginnt nicht bei Index 0, sondern bei Index timePeriod - 1. Beim Zugriff auf Ergebnisse muss dies berücksichtigt werden, da es sonst zu Undefined offset-Warnungen kommen kann.

Gleitende vs. kumulative Berechnung: Die Steigung wird gleitend (rollierend) berechnet. Jeder Ausgabewert repräsentiert ausschließlich das Zeitfenster der letzten timePeriod Werte, nicht die gesamte Zeitreihe.

Verwandte Funktionen: Für den Achsenabschnitt (Intercept) der selben Regressionsgerade siehe trader_linearreg_intercept; für den aktuellen Regressionswert am letzten Punkt des Fensters trader_linearreg.