Start · Sprachen · PHP · Referenz · trader_stddev

trader_stddev

Funktion

Berechnet die Standardabweichung einer Zeitreihe über ein gleitendes Fenster (Teil der TRADER-Erweiterung für technische Analyse).

Kategorie: math

Signatur

trader_stddev(array $real, int $timePeriod = 5, float $nbDev = 1.0): array|false

Beschreibung

trader_stddev ist Teil der PHP-Erweiterung TRADER (basierend auf der TA-Lib) und berechnet die Standardabweichung einer numerischen Zeitreihe – typischerweise Schlusskurse eines Finanzinstruments – über ein gleitendes Fenster der Länge $timePeriod. Die Standardabweichung misst die Streuung der Werte um ihren Mittelwert und ist ein klassisches Maß für Volatilität.

Der Parameter $nbDev erlaubt es, das Ergebnis mit einem Faktor zu skalieren. Ein Wert von 1.0 liefert die unveränderliche Standardabweichung, 2.0 verdoppelt sie – was beispielsweise bei der Berechnung von Bollinger Bands benötigt wird (oberes Band = Mittelwert + 2 × Standardabweichung).

Das Rückgabe-Array hat denselben Index wie das Eingabe-Array. Die ersten $timePeriod - 1 Einträge fehlen im Ergebnis, da für diese Positionen noch nicht genug Datenpunkte vorhanden sind. Der Rückgabewert ist false, wenn die Berechnung fehlschlägt (z. B. ungültige Parameter oder zu kurze Eingabedaten).

Typische Anwendungsfälle sind die Messung von Marktvolatilität, das Erstellen von Bollinger Bands sowie statistische Analysen von Zeitreihendaten in Handelsalgorithmen.

Parameter

Name Typ Default Beschreibung
$real Pflicht array Numerisches Array mit den Eingabewerten der Zeitreihe (z. B. tägliche Schlusskurse). Indizes sollten aufsteigend und lückenlos sein.
$timePeriod int 5 Anzahl der Perioden (Fenstergröße) für die Berechnung. Muss >= 2 sein. Typische Werte sind 5, 10 oder 20.
$nbDev float 1.0 Skalierungsfaktor für die berechnete Standardabweichung. Ein Wert von 2.0 verdoppelt das Ergebnis, was z. B. für Bollinger Bands benötigt wird.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein Array mit den berechneten Standardabweichungswerten zurück. Die ersten $timePeriod - 1 Indizes sind nicht im Array enthalten. Bei einem Fehler (z. B. zu wenige Datenpunkte oder ungültige Parameter) wird false zurückgegeben.

Beispiele

Einfache Standardabweichung über 5 Perioden

<?php
// Tägliche Schlusskurse einer Aktie
$closes = [10.0, 10.5, 11.0, 10.8, 10.3, 10.9, 11.2, 11.5, 11.1, 10.7];

$result = trader_stddev($closes, 5, 1.0);

if ($result === false) {
    echo "Berechnung fehlgeschlagen.";
} else {
    foreach ($result as $index => $value) {
        echo "Index $index: " . round($value, 4) . "\n";
    }
}
Index 4: 0.3633 Index 5: 0.2317 Index 6: 0.3033 Index 7: 0.2317 Index 8: 0.1720 Index 9: 0.2881

Bollinger Bands mit trader_stddev und trader_sma

<?php
// Schlusskurse
$closes = [20.0, 20.5, 21.0, 20.8, 20.3, 20.9, 21.2, 21.5, 21.1, 20.7,
           21.3, 21.8, 22.0, 21.6, 21.4, 21.9, 22.3, 22.1, 21.8, 22.5];

$period = 10;
$nbDev  = 2.0;

$sma    = trader_sma($closes, $period);
$stddev = trader_stddev($closes, $period, $nbDev);

if ($sma === false || $stddev === false) {
    echo "Berechnungsfehler.";
    exit;
}

foreach ($sma as $i => $middle) {
    if (!isset($stddev[$i])) continue;
    $upper = $middle + $stddev[$i];
    $lower = $middle - $stddev[$i];
    printf(
        "Index %2d | Mitte: %6.3f | Oben: %6.3f | Unten: %6.3f\n",
        $i, $middle, $upper, $lower
    );
}
Index 9 | Mitte: 20.900 | Oben: 21.826 | Unten: 19.974 Index 10 | Mitte: 21.030 | Oben: 21.966 | Unten: 20.094 ...

// Wichtig · Fallstricke

Voraussetzung: Die PHP-Erweiterung trader muss installiert und in der php.ini aktiviert sein (extension=trader). Sie basiert auf der C-Bibliothek TA-Lib.

Achtung bei kurzen Arrays: Ist das Eingabe-Array kürzer als $timePeriod, gibt die Funktion false zurück. Prüfe den Rückgabewert daher stets mit === false.

Populationsabweichung: TA-Lib verwendet die Populationsstandardabweichung (Division durch n), nicht die Stichproben-Standardabweichung (Division durch n-1). Dies kann von anderen statistischen Werkzeugen abweichen.