Tuesday, November 1, 2016

Exponential moving average algorithmus

Ich versuche, den gleitenden Durchschnitt eines Signals zu berechnen. Der Signalwert (ein Doppel) wird zu beliebigen Zeiten aktualisiert. Ich bin auf der Suche nach einem effizienten Weg, um seine Zeit gewichteten Durchschnitt über ein Zeitfenster, in Echtzeit zu berechnen. Ich könnte es selbst tun, aber es ist schwieriger als ich dachte. Die meisten der Ressourcen Ive gefunden über das Internet berechnen gleitenden Durchschnitt des periodischen Signals, aber Mine Updates zu beliebigen Zeit. Kennt jemand gute Ressourcen für die Der Trick ist die folgende: Sie erhalten Updates zu beliebigen Zeiten über void update (int Zeit, float-Wert). Allerdings müssen Sie auch nachverfolgen, wenn ein Update fällt aus dem Zeitfenster, so dass Sie einen Alarm, der bei der Zeit N, die die vorherige Aktualisierung entfernt wird immer wieder in der Berechnung berücksichtigt. Wenn dies in Echtzeit geschieht, können Sie das Betriebssystem anfordern, einen Aufruf einer Methode void dropoffoldestupdate (int time) aufzurufen, die zum Zeitpunkt N aufgerufen werden soll. Wenn es sich um eine Simulation handelt, können Sie keine Hilfe vom Betriebssystem bekommen und müssen dies tun Tun Sie es manuell. In einer Simulation würden Sie Methoden mit der angegebenen Zeit als Argument aufrufen (was nicht mit der Echtzeit korreliert). Eine vernünftige Annahme ist jedoch, dass die Anrufe so gewartet werden, dass die Zeitargumente zunehmen. In diesem Fall müssen Sie eine sortierte Liste der Alarmzeitwerte pflegen und bei jedem Aktualisierungs - und Leseaufruf überprüfen, ob das Zeitargument größer ist als der Kopf der Alarmliste. Während es größer ist, tun Sie die alarmbezogene Verarbeitung (Drop off der ältesten Aktualisierung), entfernen Sie den Kopf und überprüfen Sie erneut, bis alle Alarme vor der angegebenen Zeit verarbeitet werden. Anschließend den Update-Aufruf durchführen. Ich habe bis jetzt angenommen, dass es offensichtlich ist, was Sie für die tatsächliche Berechnung tun würden, aber ich erarbeiten gerade für den Fall. Ich nehme an, Sie haben eine Methode float read (int Zeit), die Sie verwenden, um die Werte zu lesen. Das Ziel ist, diesen Anruf so effizient wie möglich zu machen. So berechnen Sie den gleitenden Durchschnitt nicht jedes Mal, wenn die Lesemethode aufgerufen wird. Stattdessen müssen Sie den Wert der letzten Aktualisierung oder des letzten Alarms vorberechnen und diesen Wert durch ein paar Gleitkommaoperationen anpassen, um die Zeit seit der letzten Aktualisierung zu berücksichtigen. (D. h. eine konstante Anzahl von Operationen, außer dass möglicherweise eine Liste von aufgestauten Alarmen verarbeitet wird). Hoffentlich ist dies klar - das sollte ein ganz einfacher Algorithmus und sehr effizient sein. Weitere Optimierung. Einer der verbleibenden Probleme ist, wenn eine große Anzahl von Updates innerhalb des Zeitfensters auftreten, dann gibt es eine lange Zeit, für die es weder liest noch Updates, und dann ein Lesen oder Update kommt entlang. In diesem Fall ist der obige Algorithmus ineffizient, wenn der Wert für jedes der Aktualisierungen, die herunterfallen, inkremental aktualisiert wird. Dies ist nicht notwendig, weil wir nur kümmern uns um die letzte Aktualisierung über das Zeitfenster so, wenn es einen Weg, um effizient drop off alle älteren Updates, würde es helfen. Um dies zu tun, können wir den Algorithmus ändern, um eine binäre Suche nach Updates durchzuführen, um das neueste Update vor dem Zeitfenster zu finden. Wenn es relativ wenige Updates gibt, die gelöscht werden müssen, dann kann man den Wert für jedes heruntergelassene Update inkremental aktualisieren. Aber, wenn es viele Updates gibt, die gelöscht werden müssen, dann kann man den Wert vom Kratzer neu berechnen, nachdem er weg von den alten Updates. Anhang auf Inkrementelle Berechnung: Ich sollte klären, was ich meine durch inkrementelle Berechnung oben in den Satz zwicken diesen Wert durch ein paar Gleitkomma-Operationen, um für den Ablauf der Zeit seit dem letzten Update. Initiale nicht-inkrementale Berechnung: dann über die relevanten Daten in der Reihenfolge der zunehmenden Zeit iterieren: movingaverage (sum lastupdate timesincelastupdate) / windowlength. Nun, wenn genau ein Update fällt aus dem Fenster, aber keine neuen Aktualisierungen ankommen, stellen Sie die Summe als: (beachten Sie, es ist Priorupdate, deren Timestamp geändert, um den Beginn der letzten Fenster beginnt). Und wenn genau ein Update in das Fenster eintritt, aber keine neuen Updates abfallen, passen Sie die Summe als an: Wie offensichtlich sein sollte, ist dies eine grobe Skizze, aber hoffentlich zeigt es, wie Sie den Durchschnitt so halten können, dass es O (1) Operationen pro Update ist Auf amortisierte Basis. Aber beachten Sie weitere Optimierung im vorherigen Absatz. Beachten Sie auch Stabilitätsprobleme, auf die in einer älteren Antwort hingewiesen wird, was bedeutet, dass Gleitkomma-Fehler über eine große Anzahl derartiger Inkrementierungsoperationen akkumulieren können, so dass es eine Abweichung von dem Ergebnis der Vollberechnung gibt, die für die Anwendung signifikant ist. Wenn eine Annäherung OK und theres eine minimale Zeit zwischen Proben ist, könnten Sie versuchen, Super-Sampling. Sie haben ein Array, das gleichmäßig beabstandete Zeitintervalle repräsentiert, die kürzer als das Minimum sind, und zu jedem Zeitpunkt die letzte empfangene Probe speichern. Je kürzer das Intervall, desto näher ist der Mittelwert auf den wahren Wert. Der Zeitraum sollte nicht größer als die Hälfte des Minimums sein, oder es besteht die Möglichkeit, eine Stichprobe zu fehlen. Antwortete Dec 15 11 at 18:12 antwortete 15 Dez, um 22:38 Uhr Danke für die Antwort. Eine Verbesserung, die erforderlich wäre, um tatsächlich Quotecachequot den Wert des Gesamtdurchschnitts, so dass wir don39t Schleife die ganze Zeit. Auch kann es ein kleiner Punkt sein, aber wäre es nicht effizienter, ein deque oder eine Liste zu verwenden, um den Wert zu speichern, da wir davon ausgehen, dass die Aktualisierung in der richtigen Reihenfolge kommen wird. Einfügen wäre schneller als in der Karte. Ndash Arthur Ja, Sie könnten den Wert der Summe zwischenspeichern. Subtrahieren Sie die Werte der Proben, die Sie löschen, fügen Sie die Werte der Proben, die Sie einfügen. Auch, ja, ein dequeltpairltSample, Dategtgt könnte effizienter sein. Ich wählte Karte für Lesbarkeit, und die Leichtigkeit der Aufruf der Karte :: upperbound. Wie immer, schreiben Sie den richtigen Code zuerst, dann Profil und messen inkrementelle Änderungen. Ndash Rob Dez 16 11 um 15:00 Hinweis: Anscheinend ist dies nicht der Weg, um dies zu nähern. Lassen Sie es hier als Referenz auf, was ist falsch mit diesem Ansatz. Überprüfen Sie die Kommentare. AKTUALISIERT - basierend auf Olis Kommentar. Nicht sicher über die Instabilität, dass er aber reden. Verwenden Sie eine sortierte Karte der Ankunftszeiten mit Werten. Bei der Ankunft eines Wertes addieren Sie die Ankunftszeit zur sortierten Karte zusammen mit ihrem Wert und aktualisieren Sie den gleitenden Durchschnitt. Warnung dies ist Pseudocode: Dort. Nicht vollständig ausgefuellt, aber Sie bekommen die Idee. Dinge zu beachten. Wie ich schon sagte ist Pseudocode. Youll Notwendigkeit, eine passende Karte zu wählen. Entfernen Sie nicht die Paare, während Sie iterieren durch, wie Sie den Iterator ungültig machen und müssen wieder neu starten. Siehe Olis Kommentar unten auch. Antwort # 2 am: Dezember 15, 2010, um 12:22 Uhr Dies doesn39t Arbeit: es doesn39t berücksichtigen, welcher Anteil der Fensterlänge jeder Wert für vorhanden ist. Auch dieser Ansatz der Addition und dann Subtraktion ist nur stabil für Ganzzahl-Typen, nicht Floaten. Ndash Oliver Charlesworth OliCharlesworth - sorry Ich habe einige wichtige Punkte in der Beschreibung (doppelt und zeitgewichtet) verpasst. Ich werde aktualisieren. Vielen Dank. Ndash Dennis Dec 15 11 at 12:33 Die Zeitgewichtung ist ein weiteres Problem. Aber das ist nicht das, worüber ich rede. Ich bezog sich auf die Tatsache, dass, wenn ein neuer Wert zuerst das Zeitfenster betritt, sein Beitrag zum Durchschnitt minimal ist. Ihr Beitrag steigt, bis ein neuer Wert eintritt. Ndash Oliver Charlesworth Dez 15 11 um 12: 35Exponential Moving Average - EMA Laden des Spielers. BREAKING DOWN Exponential Moving Average - EMA Die 12- und 26-Tage-EMAs sind die beliebtesten Kurzzeitmittelwerte und werden verwendet, um Indikatoren wie die gleitende durchschnittliche Konvergenzdivergenz (MACD) und den prozentualen Preisoszillator (PPO) zu erzeugen. Im Allgemeinen werden die 50- und 200-Tage-EMAs als Signale von langfristigen Trends verwendet. Trader, die technische Analyse verwenden finden fließende Mittelwerte sehr nützlich und aufschlussreich, wenn sie richtig angewendet werden, aber Chaos verursachen, wenn sie falsch verwendet werden oder falsch interpretiert werden. Alle gleitenden Durchschnitte, die gewöhnlich in der technischen Analyse verwendet werden, sind von Natur aus nacheilende Indikatoren. Folglich sollten die Schlussfolgerungen aus der Anwendung eines gleitenden Durchschnitts auf ein bestimmtes Marktdiagramm eine Marktbewegung bestätigen oder ihre Stärke belegen. Sehr oft, bis eine gleitende durchschnittliche Indikatorlinie eine Änderung vorgenommen hat, um eine bedeutende Bewegung auf dem Markt zu reflektieren, ist der optimale Punkt des Markteintritts bereits vergangen. Eine EMA dient dazu, dieses Dilemma zu einem gewissen Grad zu lindern. Da die EMA-Berechnung mehr Gewicht auf die neuesten Daten setzt, umgibt sie die Preisaktion etwas fester und reagiert damit schneller. Dies ist wünschenswert, wenn ein EMA verwendet wird, um ein Handelseintragungssignal abzuleiten. Interpretation der EMA Wie alle gleitenden Durchschnittsindikatoren sind sie für Trendmärkte viel besser geeignet. Wenn der Markt in einem starken und anhaltenden Aufwärtstrend ist. Zeigt die EMA-Indikatorlinie auch einen Aufwärtstrend und umgekehrt einen Abwärtstrend. Ein wachsamer Händler achtet nicht nur auf die Richtung der EMA-Linie, sondern auch auf das Verhältnis der Änderungsgeschwindigkeit von einem Balken zum nächsten. Wenn zum Beispiel die Preisaktion eines starken Aufwärtstrends beginnt, sich zu verflachen und umzukehren, wird die EMA-Rate der Änderung von einem Balken zum nächsten abnehmen, bis zu dem Zeitpunkt, zu dem die Indikatorlinie flacht und die Änderungsrate null ist. Wegen der nacheilenden Wirkung, von diesem Punkt, oder sogar ein paar Takte zuvor, sollte die Preisaktion bereits umgekehrt haben. Daraus folgt, dass die Beobachtung eines konsequenten Abschwächens der Veränderungsrate der EMA selbst als Indikator genutzt werden könnte, der das Dilemma, das durch den nacheilenden Effekt von gleitenden Durchschnittswerten verursacht wird, weiter beheben könnte. Gemeinsame Verwendung der EMA-EMAs werden häufig in Verbindung mit anderen Indikatoren verwendet, um signifikante Marktbewegungen zu bestätigen und deren Gültigkeit zu messen. Für Händler, die intraday und schnelllebigen Märkten handeln, ist die EMA mehr anwendbar. Häufig benutzen Händler EMAs, um eine Handel Bias zu bestimmen. Zum Beispiel, wenn eine EMA auf einer Tages-Chart zeigt einen starken Aufwärtstrend, eine Intraday-Trader-Strategie kann nur von der langen Seite auf einem Intraday-Chart handeln. Moving durchschnittliche und exponentielle Glättung Modelle Als ein erster Schritt, Random-Walk-Modelle und lineare Trendmodelle, nicht-saisonale Muster und Trends können mit einem gleitenden Durchschnitt oder Glättungsmodell extrapoliert werden. Die grundlegende Annahme hinter Mittelwertbildung und Glättungsmodellen ist, dass die Zeitreihe lokal stationär mit einem sich langsam verändernden Mittelwert ist. Daher nehmen wir einen bewegten (lokalen) Durchschnitt, um den aktuellen Wert des Mittelwerts abzuschätzen und dann als die Prognose für die nahe Zukunft zu verwenden. Dies kann als Kompromiss zwischen dem mittleren Modell und dem random-walk-ohne-Drift-Modell betrachtet werden. Die gleiche Strategie kann verwendet werden, um einen lokalen Trend abzuschätzen und zu extrapolieren. Ein gleitender Durchschnitt wird oft als "quotsmoothedquot" - Version der ursprünglichen Serie bezeichnet, da die kurzzeitige Mittelung die Wirkung hat, die Stöße in der ursprünglichen Reihe zu glätten. Durch Anpassen des Glättungsgrades (die Breite des gleitenden Durchschnitts) können wir hoffen, eine Art von optimaler Balance zwischen der Leistung des Mittelwerts und der zufälligen Wandermodelle zu erreichen. Die einfachste Art der Mittelung Modell ist die. Einfache (gleichgewichtige) Moving Average: Die Prognose für den Wert von Y zum Zeitpunkt t1, der zum Zeitpunkt t gemacht wird, entspricht dem einfachen Mittelwert der letzten m Beobachtungen: (Hier und anderswo werde ich das Symbol 8220Y-hat8221 stehen lassen Für eine Prognose der Zeitreihe Y, die am frühestmöglichen früheren Zeitpunkt durch ein gegebenes Modell durchgeführt wird.) Dieser Mittelwert wird in der Periode t (m1) / 2 zentriert, was bedeutet, daß die Schätzung des lokalen Mittels dazu neigt, hinter dem Wert zu liegen Wahren Wert des lokalen Mittels um etwa (m1) / 2 Perioden. Das Durchschnittsalter der Daten im einfachen gleitenden Durchschnitt ist also (m1) / 2 relativ zu der Periode, für die die Prognose berechnet wird: dies ist die Zeitspanne, in der die Prognosen dazu tendieren, hinter den Wendepunkten in der Region zu liegen Daten. Wenn Sie z. B. die letzten 5 Werte mitteln, werden die Prognosen etwa 3 Perioden spät sein, wenn sie auf Wendepunkte reagieren. Beachten Sie, dass, wenn m1, die einfache gleitende Durchschnitt (SMA) - Modell ist gleichbedeutend mit der random walk-Modell (ohne Wachstum). Wenn m sehr groß ist (vergleichbar der Länge des Schätzzeitraums), entspricht das SMA-Modell dem mittleren Modell. Wie bei jedem Parameter eines Prognosemodells ist es üblich, den Wert von k anzupassen, um den besten Quotienten der Daten zu erhalten, d. H. Die kleinsten Prognosefehler im Durchschnitt. Hier ist ein Beispiel einer Reihe, die zufällige Fluktuationen um ein sich langsam veränderndes Mittel zu zeigen scheint. Erstens können wir versuchen, es mit einem zufälligen Fußmodell, das entspricht einem einfachen gleitenden Durchschnitt von 1 Begriff entspricht: Das zufällige Wandermodell reagiert sehr schnell auf Änderungen in der Serie, aber dabei nimmt er viel von der quotnoisequot in der Daten (die zufälligen Fluktuationen) sowie das Quotsignalquot (das lokale Mittel). Wenn wir stattdessen einen einfachen gleitenden Durchschnitt von 5 Begriffen anwenden, erhalten wir einen glatteren Satz von Prognosen: Der 5-Term-einfache gleitende Durchschnitt liefert in diesem Fall deutlich kleinere Fehler als das zufällige Wegmodell. Das durchschnittliche Alter der Daten in dieser Prognose beträgt 3 ((51) / 2), so dass es dazu neigt, hinter den Wendepunkten um etwa drei Perioden zu liegen. (Zum Beispiel scheint ein Abschwung in Periode 21 aufgetreten zu sein, aber die Prognosen drehen sich erst nach mehreren Perioden später.) Beachten Sie, dass die Langzeitprognosen des SMA-Modells eine horizontale Gerade sind, genau wie beim zufälligen Weg Modell. Somit geht das SMA-Modell davon aus, dass es keinen Trend in den Daten gibt. Während jedoch die Prognosen aus dem Zufallswegmodell einfach dem letzten beobachteten Wert entsprechen, sind die Prognosen des SMA-Modells gleich einem gewichteten Mittelwert der neueren Werte. Die von Statgraphics berechneten Konfidenzgrenzen für die Langzeitprognosen des einfachen gleitenden Durchschnitts werden nicht breiter, wenn der Prognosehorizont zunimmt. Dies ist offensichtlich nicht richtig Leider gibt es keine zugrunde liegende statistische Theorie, die uns sagt, wie sich die Vertrauensintervalle für dieses Modell erweitern sollten. Allerdings ist es nicht zu schwer, empirische Schätzungen der Konfidenzgrenzen für die längerfristigen Prognosen zu berechnen. Beispielsweise können Sie eine Tabellenkalkulation einrichten, in der das SMA-Modell für die Vorhersage von 2 Schritten im Voraus, 3 Schritten voraus usw. innerhalb der historischen Datenprobe verwendet wird. Sie könnten dann die Stichproben-Standardabweichungen der Fehler bei jedem Prognosehorizont berechnen und dann Konfidenzintervalle für längerfristige Prognosen durch Addieren und Subtrahieren von Vielfachen der geeigneten Standardabweichung konstruieren. Wenn wir einen 9-term einfachen gleitenden Durchschnitt ausprobieren, erhalten wir sogar noch bessere Prognosen und mehr eine nacheilende Wirkung: Das Durchschnittsalter beträgt jetzt 5 Perioden ((91) / 2). Wenn wir einen 19-term gleitenden Durchschnitt nehmen, steigt das Durchschnittsalter auf 10 an: Beachten Sie, dass die Prognosen tatsächlich hinter den Wendepunkten um etwa 10 Perioden zurückbleiben. Welches Maß an Glättung ist am besten für diese Serie Hier ist eine Tabelle, die ihre Fehlerstatistiken vergleicht, darunter auch einen 3-Term-Durchschnitt: Modell C, der 5-Term-Gleitender Durchschnitt, ergibt den niedrigsten Wert von RMSE mit einer kleinen Marge über die 3 - term und 9-Term-Mittelwerte, und ihre anderen Statistiken sind fast identisch. So können wir bei Modellen mit sehr ähnlichen Fehlerstatistiken wählen, ob wir ein wenig mehr Reaktionsfähigkeit oder ein wenig mehr Glätte in den Prognosen bevorzugen würden. (Rückkehr nach oben.) Browns Einfache Exponentialglättung (exponentiell gewichteter gleitender Durchschnitt) Das oben beschriebene einfache gleitende Durchschnittsmodell hat die unerwünschte Eigenschaft, daß es die letzten k-Beobachtungen gleich und vollständig ignoriert. Intuitiv sollten vergangene Daten in einer allmählicheren Weise diskontiert werden - zum Beispiel sollte die jüngste Beobachtung ein wenig mehr Gewicht als die zweitletzte erhalten, und die 2. jüngsten sollten ein wenig mehr Gewicht als die 3. jüngsten erhalten, und bald. Das einfache exponentielle Glättungsmodell (SES) erfüllt dies. Es sei 945 eine quotsmoothing constantquot (eine Zahl zwischen 0 und 1). Eine Möglichkeit, das Modell zu schreiben, besteht darin, eine Reihe L zu definieren, die den gegenwärtigen Pegel (d. H. Den lokalen Mittelwert) der Serie, wie er aus Daten bis zu der Zeit geschätzt wird, darstellt. Der Wert von L zur Zeit t wird rekursiv von seinem eigenen vorherigen Wert wie folgt berechnet: Somit ist der aktuelle geglättete Wert eine Interpolation zwischen dem vorher geglätteten Wert und der aktuellen Beobachtung, wobei 945 die Nähe des interpolierten Wertes auf die neueste steuert Überwachung. Die Prognose für die nächste Periode ist einfach der aktuelle geglättete Wert: Äquivalent können wir die nächste Prognose direkt in Form früherer Prognosen und früherer Beobachtungen in einer der folgenden gleichwertigen Versionen ausdrücken. In der ersten Version ist die Prognose eine Interpolation zwischen vorheriger Prognose und vorheriger Beobachtung: In der zweiten Version wird die nächste Prognose durch Anpassung der bisherigen Prognose in Richtung des bisherigen Fehlers um einen Bruchteil 945 erhalten Zeit t. In der dritten Version ist die Prognose ein exponentiell gewichteter (dh diskontierter) gleitender Durchschnitt mit Abzinsungsfaktor 1-945: Die Interpolationsversion der Prognoseformel ist am einfachsten zu verwenden, wenn Sie das Modell in einer Tabellenkalkulation implementieren Einzelne Zelle und enthält Zellverweise, die auf die vorhergehende Prognose, die vorherige Beobachtung und die Zelle mit dem Wert von 945 zeigen. Beachten Sie, dass, wenn 945 1, das SES-Modell zu einem zufälligen Weg-Modell (ohne Wachstum) äquivalent ist. Wenn 945 0 ist, entspricht das SES-Modell dem mittleren Modell, wobei angenommen wird, dass der erste geglättete Wert gleich dem Mittelwert gesetzt ist. (Zurück zum Seitenanfang) Das Durchschnittsalter der Daten in der Simple-Exponential-Glättungsprognose beträgt 1/945 relativ zu dem Zeitraum, für den die Prognose berechnet wird. (Dies sollte nicht offensichtlich sein, kann aber leicht durch die Auswertung einer unendlichen Reihe gezeigt werden.) Die einfache gleitende Durchschnittsprognose neigt daher zu Verzögerungen hinter den Wendepunkten um etwa 1/945 Perioden. Wenn beispielsweise 945 0,5 die Verzögerung 2 Perioden beträgt, wenn 945 0,2 die Verzögerung 5 Perioden beträgt, wenn 945 0,1 die Verzögerung 10 Perioden und so weiter ist. Für ein gegebenes Durchschnittsalter (d. H. Eine Verzögerung) ist die einfache exponentielle Glättungsprognose (SES) der simplen gleitenden Durchschnittsprognose (SMA) etwas überlegen, weil sie relativ viel mehr Gewicht auf die jüngste Beobachtung - i. e stellt. Es ist etwas mehr quresponsivequot zu Änderungen, die sich in der jüngsten Vergangenheit. Zum Beispiel haben ein SMA - Modell mit 9 Terminen und ein SES - Modell mit 945 0,2 beide ein durchschnittliches Alter von 5 Jahren für die Daten in ihren Prognosen, aber das SES - Modell legt mehr Gewicht auf die letzten 3 Werte als das SMA - Modell und am Gleiches gilt für die Werte von mehr als 9 Perioden, wie in dieser Tabelle gezeigt: 822forget8221. Ein weiterer wichtiger Vorteil des SES-Modells gegenüber dem SMA-Modell ist, dass das SES-Modell einen Glättungsparameter verwendet, der kontinuierlich variabel ist und somit leicht optimiert werden kann Indem ein Quotsolverquot-Algorithmus verwendet wird, um den mittleren quadratischen Fehler zu minimieren. Der optimale Wert von 945 im SES-Modell für diese Serie ergibt sich wie folgt: Das Durchschnittsalter der Daten in dieser Prognose beträgt 1 / 0,2961 3,4 Perioden, was ähnlich wie bei einem 6-Term-Simple Moving ist durchschnittlich. Die Langzeitprognosen aus dem SES-Modell sind eine horizontale Gerade. Wie im SMA-Modell und dem Random-Walk-Modell ohne Wachstum. Es ist jedoch anzumerken, dass die von Statgraphics berechneten Konfidenzintervalle nun in einer vernünftigen Weise abweichen und dass sie wesentlich schmaler sind als die Konfidenzintervalle für das Zufallswegmodell. Das SES-Modell geht davon aus, dass die Serie etwas vorhersehbarer ist als das Zufallswandermodell. Ein SES-Modell ist eigentlich ein Spezialfall eines ARIMA-Modells. So dass die statistische Theorie der ARIMA-Modelle eine solide Grundlage für die Berechnung der Konfidenzintervalle für das SES-Modell bildet. Insbesondere ist ein SES-Modell ein ARIMA-Modell mit einer nicht sonderbaren Differenz, einem MA (1) - Term und kein konstanter Term. Ansonsten als quotARIMA (0,1,1) - Modell ohne Konstantquot bekannt. Der MA (1) - Koeffizient im ARIMA-Modell entspricht der Größe 1 - 945 im SES-Modell. Wenn Sie zum Beispiel ein ARIMA-Modell (0,1,1) ohne Konstante an die hier analysierte Serie anpassen, ergibt sich der geschätzte MA (1) - Koeffizient auf 0,7029, was fast genau ein Minus von 0,2961 ist. Es ist möglich, die Annahme eines von Null verschiedenen konstanten linearen Trends zu einem SES-Modell hinzuzufügen. Dazu wird nur ein ARIMA-Modell mit einer Nicht-Seasonal-Differenz und einem MA (1) - Term mit einer Konstanten, d. h. einem ARIMA-Modell (0,1,1) mit konstantem Wert angegeben. Die langfristigen Prognosen haben dann einen Trend, der dem durchschnittlichen Trend über den gesamten Schätzungszeitraum entspricht. Sie können dies nicht in Verbindung mit saisonalen Anpassungen tun, da die saisonalen Anpassungsoptionen deaktiviert sind, wenn der Modelltyp auf ARIMA gesetzt ist. Sie können jedoch einen konstanten langfristigen exponentiellen Trend zu einem einfachen exponentiellen Glättungsmodell (mit oder ohne saisonale Anpassung) hinzufügen, indem Sie die Inflationsanpassungsoption im Prognoseverfahren verwenden. Die prozentuale Zinssatzquote (prozentuale Wachstumsrate) pro Periode kann als der Steigungskoeffizient in einem linearen Trendmodell geschätzt werden, das an die Daten in Verbindung mit einer natürlichen Logarithmuswandlung angepasst ist, oder es kann auf anderen unabhängigen Informationen bezüglich der langfristigen Wachstumsperspektiven beruhen . (Rückkehr nach oben.) Browns Linear (dh doppelt) Exponentielle Glättung Die SMA-Modelle und SES-Modelle gehen davon aus, dass es in den Daten keinen Trend gibt (was in der Regel in Ordnung ist oder zumindest nicht zu schlecht für 1- Wenn die Daten relativ verrauscht sind), und sie können modifiziert werden, um einen konstanten linearen Trend, wie oben gezeigt, zu integrieren. Was ist mit kurzfristigen Trends Wenn eine Serie eine unterschiedliche Wachstumsrate oder ein zyklisches Muster zeigt, das sich deutlich gegen das Rauschen auszeichnet, und wenn es notwendig ist, mehr als eine Periode vorher zu prognostizieren, könnte die Schätzung eines lokalen Trends auch sein Ein Problem. Das einfache exponentielle Glättungsmodell kann verallgemeinert werden, um ein lineares exponentielles Glättungsmodell (LES) zu erhalten, das lokale Schätzungen sowohl des Niveaus als auch des Trends berechnet. Das einfachste zeitvariable Trendmodell ist Browns lineares exponentielles Glättungsmodell, das zwei verschiedene geglättete Serien verwendet, die zu verschiedenen Zeitpunkten zentriert sind. Die Prognoseformel basiert auf einer Extrapolation einer Linie durch die beiden Zentren. (Eine weiterentwickelte Version dieses Modells, Holt8217s, wird unten diskutiert.) Die algebraische Form des Brown8217s linearen exponentiellen Glättungsmodells, wie die des einfachen exponentiellen Glättungsmodells, kann in einer Anzahl von unterschiedlichen, aber äquivalenten Formen ausgedrückt werden. Die quadratische quadratische Form dieses Modells wird gewöhnlich wie folgt ausgedrückt: Sei S die einfach geglättete Reihe, die durch Anwendung einfacher exponentieller Glättung auf Reihe Y erhalten wird. Das heißt, der Wert von S in der Periode t ist gegeben durch: (Erinnern wir uns, Exponentielle Glättung, so würde dies die Prognose für Y in der Periode t1 sein.) Dann sei Squot die doppelt geglättete Folge, die man erhält, indem man eine einfache exponentielle Glättung (unter Verwendung desselben 945) auf die Reihe S anwendet: Schließlich die Prognose für Ytk. Für jedes kgt1 ist gegeben durch: Dies ergibt e & sub1; & sub0; (d. h. Cheat ein Bit und die erste Prognose der tatsächlichen ersten Beobachtung gleich) und e & sub2; Y & sub2; 8211 Y & sub1; Nach denen die Prognosen unter Verwendung der obigen Gleichung erzeugt werden. Dies ergibt die gleichen Anpassungswerte wie die Formel auf der Basis von S und S, wenn diese mit S 1 S 1 Y 1 gestartet wurden. Diese Version des Modells wird auf der nächsten Seite verwendet, die eine Kombination von exponentieller Glättung mit saisonaler Anpassung veranschaulicht. Holt8217s Lineares Exponentialglättung Brown8217s LES-Modell berechnet lokale Schätzungen von Pegel und Trend durch Glätten der letzten Daten, aber die Tatsache, dass dies mit einem einzigen Glättungsparameter erfolgt, legt eine Einschränkung für die Datenmuster fest, die es anpassen kann: den Pegel und den Trend Dürfen nicht zu unabhängigen Preisen variieren. Holt8217s LES-Modell adressiert dieses Problem durch zwei Glättungskonstanten, eine für die Ebene und eine für den Trend. Zu jedem Zeitpunkt t, wie in Brown8217s-Modell, gibt es eine Schätzung L t der lokalen Ebene und eine Schätzung T t der lokalen Trend. Hier werden sie rekursiv aus dem zum Zeitpunkt t beobachteten Wert von Y und den vorherigen Schätzungen von Pegel und Trend durch zwei Gleichungen berechnet, die exponentielle Glättung separat anwenden. Wenn der geschätzte Pegel und der Trend zum Zeitpunkt t-1 L t82091 und T t-1 sind. Dann ist die Prognose für Y tshy, die zum Zeitpunkt t-1 gemacht worden wäre, gleich L t-1 T t-1. Wenn der tatsächliche Wert beobachtet wird, wird die aktualisierte Schätzung des Pegels rekursiv berechnet, indem zwischen Y tshy und seiner Prognose L t-1 T t-1 unter Verwendung von Gewichten von 945 und 1- 945 interpoliert wird. Die Änderung des geschätzten Pegels, Nämlich L t 8209 L t82091. Kann als eine verrauschte Messung des Trends zum Zeitpunkt t interpretiert werden. Die aktualisierte Schätzung des Trends wird dann rekursiv berechnet, indem zwischen L t 8209 L t82091 und der vorherigen Schätzung des Trends T t-1 interpoliert wird. Unter Verwendung der Gewichte von 946 und 1-946: Die Interpretation der Trendglättungskonstanten 946 ist analog zu der Pegelglättungskonstante 945. Modelle mit kleinen Werten von 946 nehmen an, dass sich der Trend mit der Zeit nur sehr langsam ändert, während Modelle mit Größere 946 nehmen an, dass sie sich schneller ändert. Ein Modell mit einem großen 946 glaubt, dass die ferne Zukunft sehr unsicher ist, da Fehler in der Trendschätzung bei der Prognose von mehr als einer Periode ganz wichtig werden. (Rückkehr nach oben) Die Glättungskonstanten 945 und 946 können auf übliche Weise geschätzt werden, indem der mittlere quadratische Fehler der 1-Schritt-Voraus-Prognosen minimiert wird. Wenn dies in Statgraphics getan wird, erweisen sich die Schätzungen als 945 0.3048 und 946 0,008. Der sehr geringe Wert von 946 bedeutet, dass das Modell eine sehr geringe Veränderung im Trend von einer Periode zur nächsten annimmt, so dass dieses Modell im Grunde versucht, einen langfristigen Trend abzuschätzen. In Analogie zum Durchschnittsalter der Daten, die für die Schätzung der lokalen Ebene der Serie verwendet werden, ist das Durchschnittsalter der Daten, die bei der Schätzung des lokalen Trends verwendet werden, proportional zu 1/946, wenn auch nicht exakt gleich es. In diesem Fall ergibt sich 1 / 0,006 125. Dies ist eine sehr genaue Zahl, da die Genauigkeit der Schätzung von 946 nicht wirklich 3 Dezimalstellen beträgt, sondern sie ist von der gleichen Größenordnung wie die Stichprobengröße von 100 , So dass dieses Modell ist im Durchschnitt über eine ganze Menge Geschichte bei der Schätzung der Trend. Das Prognose-Diagramm unten zeigt, dass das LES-Modell einen etwas größeren lokalen Trend am Ende der Serie schätzt als der im SEStrend-Modell geschätzte konstante Trend. Außerdem ist der Schätzwert von 945 fast identisch mit dem, der durch Anpassen des SES-Modells mit oder ohne Trend erhalten wird, so dass dies fast das gleiche Modell ist. Nun, sehen diese aussehen wie vernünftige Prognosen für ein Modell, das soll Schätzung einer lokalen Tendenz Wenn Sie 8220eyeball8221 dieser Handlung, sieht es so aus, als ob der lokale Trend nach unten am Ende der Serie gedreht hat Was ist passiert Die Parameter dieses Modells Wurden durch Minimierung des quadratischen Fehlers von 1-Schritt-Voraus-Prognosen, nicht längerfristigen Prognosen, abgeschätzt, wobei der Trend keinen großen Unterschied macht. Wenn alles, was Sie suchen, 1-Schritt-vor-Fehler sind, sehen Sie nicht das größere Bild der Trends über (sagen) 10 oder 20 Perioden. Um dieses Modell im Einklang mit unserer Augapfel-Extrapolation der Daten zu erhalten, können wir die Trendglättungskonstante manuell anpassen, so dass sie eine kürzere Basislinie für die Trendschätzung verwendet. Wenn wir beispielsweise 946 0,1 setzen, beträgt das durchschnittliche Alter der Daten, die bei der Schätzung des lokalen Trends verwendet werden, 10 Perioden, was bedeutet, dass wir den Trend über die letzten 20 Perioden oder so mitteln. Here8217s, was das Prognose-Plot aussieht, wenn wir 946 0,1 setzen, während 945 0,3 halten. Dies scheint intuitiv vernünftig für diese Serie, obwohl es wahrscheinlich gefährlich, diesen Trend mehr als 10 Perioden in der Zukunft zu extrapolieren. Was ist mit den Fehlerstatistiken Hier ist ein Modellvergleich für die beiden oben gezeigten Modelle sowie drei SES-Modelle. Der optimale Wert von 945 für das SES-Modell beträgt etwa 0,3, aber ähnliche Ergebnisse (mit etwas mehr oder weniger Reaktionsfähigkeit) werden mit 0,5 und 0,2 erhalten. (A) Holts linearer Exp. Glättung mit alpha 0.3048 und beta 0,008 (B) Holts linear exp. Glättung mit alpha 0,3 (E) Einfache exponentielle Glättung mit alpha 0,3 (E) Einfache exponentielle Glättung mit alpha 0,2 Ihre Stats sind nahezu identisch, so dass wir wirklich die Wahl auf der Basis machen können Von 1-Schritt-Vorhersagefehlern innerhalb der Datenprobe. Wir müssen auf andere Überlegungen zurückgreifen. Wenn wir glauben, dass es sinnvoll ist, die aktuelle Trendschätzung auf das, was in den letzten 20 Perioden passiert ist, zugrunde zu legen, können wir für das LES-Modell mit 945 0,3 und 946 0,1 einen Fall machen. Wenn wir agnostisch sein wollen, ob es einen lokalen Trend gibt, dann könnte eines der SES-Modelle leichter zu erklären sein, und würde auch für die nächsten 5 oder 10 Perioden mehr Mittelprognosen geben. (Rückkehr nach oben.) Welche Art von Trend-Extrapolation am besten ist: horizontal oder linear Empirische Evidenz deutet darauf hin, dass es, wenn die Daten bereits für die Inflation angepasst wurden (wenn nötig), unprätent ist, kurzfristige lineare Werte zu extrapolieren Trends sehr weit in die Zukunft. Die heutigen Trends können sich in Zukunft aufgrund unterschiedlicher Ursachen wie Produktveralterung, verstärkte Konkurrenz und konjunkturelle Abschwünge oder Aufschwünge in einer Branche abschwächen. Aus diesem Grund führt eine einfache exponentielle Glättung oft zu einer besseren Out-of-Probe, als ansonsten erwartet werden könnte, trotz ihrer quotnaivequot horizontalen Trend-Extrapolation. Damped Trendmodifikationen des linearen exponentiellen Glättungsmodells werden in der Praxis häufig auch eingesetzt, um in seinen Trendprojektionen eine Note des Konservatismus einzuführen. Das Dämpfungs-Trend-LES-Modell kann als Spezialfall eines ARIMA-Modells, insbesondere eines ARIMA-Modells (1,1,2), implementiert werden. Es ist möglich, Konfidenzintervalle um langfristige Prognosen zu berechnen, die durch exponentielle Glättungsmodelle erzeugt werden, indem man sie als Spezialfälle von ARIMA-Modellen betrachtet. (Achtung: Nicht alle Software berechnet die Konfidenzintervalle für diese Modelle korrekt.) Die Breite der Konfidenzintervalle hängt ab von (i) dem RMS-Fehler des Modells, (ii) der Art der Glättung (einfach oder linear) (iii) dem Wert (S) der Glättungskonstante (n) und (iv) die Anzahl der Perioden vor der Prognose. Im Allgemeinen breiten sich die Intervalle schneller aus, da 945 im SES-Modell größer wird und sich viel schneller ausbreiten, wenn lineare statt einfache Glättung verwendet wird. Dieses Thema wird im Abschnitt "ARIMA-Modelle" weiter erläutert. (EMA) - Formel und wie wird die EMA berechnet Der exponentielle gleitende Durchschnitt (EMA) ist ein gewichteter gleitender Durchschnitt (WMA), der dem jüngsten Preis mehr Gewichtung oder Bedeutung verleiht Daten als der einfache gleitende Durchschnitt (SMA). Die EMA reagiert schneller auf die jüngsten Preisänderungen als die SMA. Die Formel für die Berechnung der EMA beinhaltet nur die Verwendung eines Multiplikators und beginnend mit dem SMA. Die Berechnung für die SMA ist sehr einfach. Die SMA für eine gegebene Anzahl von Zeitperioden ist einfach die Summe der Schlusskurse für diese Anzahl von Zeitperioden, geteilt durch dieselbe Zahl. So ist beispielsweise eine 10-tägige SMA nur die Summe der Schlusskurse der letzten 10 Tage, geteilt durch 10. Die drei Schritte zur Berechnung der EMA sind: Berechnen Sie die SMA. Berechnen Sie den Multiplikator für die Gewichtung der EMA. Berechnen Sie die aktuelle EMA. Die mathematische Formel, in diesem Fall für die Berechnung einer 10-Perioden-EMA, sieht so aus: SMA: 10 Periodensumme / 10 Berechnung des Gewichtungsmultiplikators: (2 / (ausgewählter Zeitraum 1)) (2 / (10 1)) 0,1818 (18.18) Berechnung des EMA: (Schlusskurs-EMA (Vortag)) x Multiplikator EMA (Vortag) Die Gewichtung des jüngsten Preises ist für einen kürzeren Zeitraum höher als für einen längeren Zeitraum EMA. Beispielsweise wird ein 18,18-Multiplikator auf die jüngsten Preisdaten für eine 10 EMA angewendet, während für eine 20 EMA nur eine 9,52-Multiplikator-Gewichtung verwendet wird. Es gibt auch leichte Variationen der EMA angekommen, indem Sie den offenen, hohen, niedrigen oder mittleren Preis anstelle der Verwendung der Schlusskurs. Verwenden Sie den exponentiellen gleitenden Durchschnitt (EMA), um eine dynamische Forex-Handelsstrategie zu erstellen. Erfahren Sie, wie EMAs sehr genutzt werden können. Read Answer Lernen Sie die wichtigen potenziellen Vorteile der Verwendung eines exponentiellen gleitenden Durchschnitt beim Trading, anstatt einer einfachen Bewegung. Read Answer Erfahren Sie mehr über einfache gleitende Durchschnitte und exponentielle gleitende Durchschnitte, was diese technischen Indikatoren messen und den Unterschied. Read Answer Erfahren Sie die Formel für die gleitende durchschnittliche Konvergenz Divergenz Momentum Indikator und finden Sie heraus, wie die MACD zu berechnen. Antwort lesen Entdecken Sie die primären Unterschiede zwischen exponentiellen und einfachen gleitenden durchschnittlichen Indikatoren, und welche Nachteile EMAs können. Read Answer Erfahren Sie über verschiedene Arten von gleitenden Durchschnitten, sowie gleitende durchschnittliche Crossover und zu verstehen, wie sie verwendet werden. Lesen Sie Antwort Im arbeitet an einem Sound-Erkennung-Algorithmus, wo ein exponentieller gleitender Durchschnitt für die Anpassung an die Schallpegel verwendet wird. Es stellt sich heraus, dass eine durchschnittliche Anzahl von Protokollen besser als einfache Summen funktioniert (reibungslose erratische Daten besser), so dass ich diesen Algorithmus verwendet: newAverageX exp (((dInterval - 1.0) log (dOldAverage)) log (dValue)) / dInterval) Dies funktioniert gut, aber jetzt Ive erweitert in einen Bereich, wo ich einige Werte, die Null oder negativ sein können, und das hat offensichtlich Probleme mit log. So versuchte ich das folgende: Dieses vermeidet Fehler mit Protokoll eines Negativs, aber die Resultate für positive Werte unterscheiden sich vom Original. Gibt es einen Algorithmus, der die logisch korrekten Ergebnisse erzeugen würde (was auch immer das bedeutet) für alle Fälle. Oder gibt es eine andere Mittelung Technik, die ähnlich wie bei der Verwendung von Protokoll oben funktionieren würde, aber tolerant sein von Negativen gefragt, Mar 12 12 um 16:52


No comments:

Post a Comment