Monday 16 October 2017

Exponentiell Gewichtete Gleitende Durchschnitt Sql


Ich habe die Diskussion gelesen, die du erwähnt hast. Es gilt für PostgreSQL, da es erlaubt ist, benutzerdefinierte Aggregatfunktion mit SQL in PostgreSQL zu erstellen, aber nicht in SQL Server erlaubt. Mit rekursiven CTE ist ein machbarer Weg in SQL Server, aber ich merke, dass CTE-Weg kann mehr Tabellen-Scan als Fenster-Funktionen entstehen. Also mache ich diesen Beitrag zu fragen, ob es möglich ist, exponentiell gleitenden Durchschnitt mit SQL Server 2012 Fenster Funktion zu berechnen, wie die Berechnung einfacher gleitender Durchschnitt. Ndash xiagao1982 Apr 14 13 at 2:53 Zuerst berechnen Sie die EMA (SMA (x)) anstelle der EMA (x). Zweitens ist dein quotsmoothing constantquot eigentlich der Beta-Wert in meiner Formel, nicht das Alpha. Mit diesen beiden Änderungen sieht das SQLFiddle so aus: sqlfiddle6191921 Allerdings gibt es noch einen kleinen Unterschied zwischen dem tatsächlichen Ergebnis und dem erwarteten Ergebnis. Ich würde zurückgehen und sehen, ob ihre EMA-Definition mit dem übereinstimmt, den ich kenne. Ndash Sebastian Meine Mai 7 13 um 13:46 Ich habe gerade auf die Formular in der Kalkulationstabelle Sie befestigt und es ist weg von der Standard-EMA-Definition. Meine Formel berechnet den exponentiellen gleitenden Durchschnitt der letzten zehn Zeilen. Die Kalkulationstabelle berechnet zunächst den Standard-Durchschnitt über die letzten zehn Zeilen und dann den unbeschränkten exponentiell gewichteten gleitenden Durchschnitt über alle Mittelwerte. Dies folgt dem Formular hier: en. wikipedia. orgwikiEWMAchart ndash Sebastian Meine Mai 7 13 bei 13: 52Exponentieller gleitender Durchschnitt in T-SQL Exponentielle gleitende Durchschnitte ähneln wie gewichteten gleitenden Durchschnitten, indem sie vor langer Zeit weniger Gewicht verleihen und mehr Gewicht Zu den jüngsten änderungen Gewichtete Bewegungsdurchschnitte sind linear, aber exponentielle gleitende Durchschnitte sind exponentiell. Das heißt, das Gewicht kann als Kurve ausgedrückt werden: Es gibt eine großartige Möglichkeit, exponentielle gleitende Durchschnitte in T-SQL zu berechnen, indem ein undokumentiertes Merkmal über Variablen und laufende Summen in SQL Server verwendet wird. In diesem Blog-Post werde ich zeigen, wie man diese Methode verwendet, um exponentiellen gleitenden Durchschnitt in T-SQL zu berechnen, aber ich werde auch eine Methode, die Standard-Features in SQL Server verwendet. Leider bedeutet das mit einer Schleife. In den Beispielen berechne ich einen 9 Tage exponentiellen gleitenden Durchschnitt. Die Beispiele verwenden die Datenbank TAdb. Ein Skript zum Erstellen von TAdb finden Sie hier. Exponential Moving Average (EMA): Laufen Totals-Methode Die Theorie hinter den laufenden Total-Features in Updates wird ausführlich von Jeff Moden in seinem Artikel beschrieben, der die laufenden Total - und Ordinal-Rank-Probleme löscht. Andere Ressourcen, die mit dieser Methode beschreiben, um EMA zu berechnen, sind der Blog-Beitrag, der die Umschlagsdurchschnitte mit T-SQL von Gabriel Priester berechnet und die Forumspost Exponential Moving Average Challenge. Sowohl auf SQL Server Central. Grundsätzlich können Sie in T-SQL Variablen sowie Spalten in einer Update-Anweisung aktualisieren. Die Updates werden Zeile für Zeile intern von SQL Server ausgeführt. Dieses Zeilen-zu-Zeilen-Verhalten macht das Berechnen einer laufenden Summe möglich. Dieses Beispiel zeigt, wie es funktioniert: Beachten Sie, dass 8220ColumnRunningTotal8221 eine laufende Summe von 8220ColumnToSum8221 ist. Mit dieser Methode können wir EMA9 mit diesem T-SQL berechnen: Die Berechnung von EMA ist ziemlich einfach. Wir verwenden die aktuelle Zeile und die vorherige, aber mit mehr Gewicht auf die aktuelle Zeile. Das Gewicht wird nach der Formel 2 (19) berechnet, wobei 822098221 der Parameter für die Länge der EMA ist. Um die EMA9 für Zeile 10 oben zu berechnen, ist die Berechnung: In diesem Fall erhält die aktuelle Zeile 20 des Gewichts (2 (19) 0,2) und die vorherige Zeile erhält 80 des Gewichts (1-2 (19) 0,8). Sie finden diese Berechnungen in der obigen Anweisung in der CASE-Anweisung: Exponential Moving Average (EMA): Looping-Methode Soweit ich weiß, mit Ausnahme der laufenden Summen-Methode, die oben beschrieben wurde, gibt es keine Möglichkeit, EMA mit einer setbasierten SQL-Anweisung zu berechnen . Daher verwendet das T-SQL unten eine while-Schleife, um EMA9 zu berechnen: Die Ergebnisse sind die gleichen wie im laufenden Summenbeispiel oben. Leistung Wie erwartet, ist die setbasierte laufende Summenversion viel schneller als die Loop-Version. Auf meiner Maschine war die Set-basierte Lösung ca. 300 ms, im Vergleich zu etwa 1200 mit der Loop-Version. Die Loop-Version entspricht eher den SQL-Standards. Also die Wahl zwischen den Methoden hängt davon ab, was8217s wichtigste für Sie, Leistung oder Standards. Der exponentielle gleitende Durchschnitt kann in der Trendanalyse verwendet werden, wie bei den anderen Arten von gleitenden Durchschnitten, Simple Moving Average (SMA) und Weighted Gleitender Durchschnitt (WMA). Es gibt auch andere Berechnungen in der technischen Analyse, die die EMA, MACD zum Beispiel verwendet. Dieser Blog-Post ist Teil einer Serie über technische Analyse, TA, in SQL Server. Sehen Sie die anderen Beiträge hier. Geschrieben von Tomas Lind Tomas Lind - Beratungsdienste als SQL Server DBA und Datenbankentwickler bei High Coast Datenbanklösungen AB. Exploring Die exponentiell gewichtete Moving Average Volatilität ist das häufigste Maß an Risiko, aber es kommt in mehreren Geschmacksrichtungen. In einem früheren Artikel haben wir gezeigt, wie man einfache historische Volatilität berechnet. (Um diesen Artikel zu lesen, siehe Volatilität verwenden, um zukünftiges Risiko zu beurteilen.) Wir haben Googles aktuelle Aktienkursdaten verwendet, um die tägliche Volatilität auf der Grundlage von 30 Tagen Lagerbestand zu berechnen. In diesem Artikel werden wir die einfache Volatilität verbessern und den exponentiell gewichteten gleitenden Durchschnitt (EWMA) diskutieren. Historische Vs. Implizite Volatilität Zuerst können wir diese Metrik in ein bisschen Perspektive bringen. Es gibt zwei breite Ansätze: historische und implizite (oder implizite) Volatilität. Der historische Ansatz geht davon aus, dass Vergangenheit Prolog ist, messen wir die Geschichte in der Hoffnung, dass es prädiktiv ist. Implizite Volatilität hingegen ignoriert die Geschichte, die sie für die Volatilität der Marktpreise löst. Es hofft, dass der Markt am besten weiß und dass der Marktpreis, auch wenn implizit, eine Konsensschätzung der Volatilität enthält. (Für verwandte Lesung siehe die Verwendungen und Grenzen der Volatilität.) Wenn wir uns nur auf die drei historischen Ansätze konzentrieren (links oben), haben sie zwei Schritte gemeinsam: Berechnen Sie die Reihe der periodischen Renditen Bewerben Sie ein Gewichtungsschema Zuerst haben wir Berechnen Sie die periodische Rückkehr. Das ist typischerweise eine Reihe von täglichen Renditen, bei denen jede Rückkehr in kontinuierlich zusammengesetzten Begriffen ausgedrückt wird. Für jeden Tag nehmen wir das natürliche Protokoll des Verhältnisses der Aktienkurse (d. h. Preis heute geteilt durch den Preis gestern und so weiter). Dies führt zu einer Reihe von täglichen Renditen, von u i zu u i-m. Je nachdem wie viele Tage (m Tage) wir messen. Das bringt uns zum zweiten Schritt: Hier unterscheiden sich die drei Ansätze. In dem vorherigen Artikel (mit Volatility To Gauge Future Risk), haben wir gezeigt, dass unter ein paar akzeptablen Vereinfachungen, die einfache Varianz ist der Durchschnitt der quadrierten Renditen: Beachten Sie, dass dies summiert jede der periodischen Renditen, dann teilt diese Summe durch die Anzahl der Tage oder Beobachtungen (m). Also, es ist wirklich nur ein Durchschnitt der quadratischen periodischen Rückkehr. Setzen Sie einen anderen Weg, jede quadratische Rückkehr wird ein gleiches Gewicht gegeben. Wenn also Alpha (a) ein Gewichtungsfaktor ist (speziell 1 m), dann sieht eine einfache Varianz so aus: Die EWMA verbessert sich auf einfache Abweichung Die Schwäche dieses Ansatzes ist, dass alle Renditen das gleiche Gewicht verdienen. Gestern (sehr neuere) Rückkehr hat keinen Einfluss mehr auf die Varianz als die letzten Monate zurück. Dieses Problem wird durch die Verwendung des exponentiell gewichteten gleitenden Durchschnitts (EWMA) behoben, bei dem neuere Renditen ein größeres Gewicht auf die Varianz haben. Der exponentiell gewichtete gleitende Durchschnitt (EWMA) führt Lambda ein. Der als Glättungsparameter bezeichnet wird. Lambda muss kleiner als eins sein. Unter dieser Bedingung wird anstelle von gleichen Gewichten jede quadrierte Rendite mit einem Multiplikator wie folgt gewichtet: Zum Beispiel neigt RiskMetrics TM, ein Finanzrisikomanagement-Unternehmen, dazu, ein Lambda von 0,94 oder 94 zu verwenden. In diesem Fall ist das erste ( (1 - 0,94) (94) 0 6. Die nächste quadratische Rückkehr ist einfach ein Lambda-Vielfaches des vorherigen Gewichts in diesem Fall 6 multipliziert mit 94 5,64. Und das dritte vorherige Tagegewicht ist gleich (1-0,94) (0,94) 2 5,30. Das ist die Bedeutung von Exponential in EWMA: jedes Gewicht ist ein konstanter Multiplikator (d. h. Lambda, der kleiner als eins sein muss) des vorherigen Tagegewichts. Dies stellt eine Varianz sicher, die gewichtet oder voreingenommen auf neuere Daten ist. (Um mehr zu erfahren, schau dir das Excel-Arbeitsblatt für Googles-Volatilität an.) Der Unterschied zwischen einfacher Volatilität und EWMA für Google ist unten dargestellt. Die einfache Volatilität wirkt effektiv jede periodische Rendite um 0,196, wie in Spalte O gezeigt (wir hatten zwei Jahre täglich Kursdaten, das sind 509 tägliche Renditen und 1509 0,196). Aber beachten Sie, dass Spalte P ein Gewicht von 6, dann 5.64, dann 5.3 und so weiter zuteilt. Das ist der einzige Unterschied zwischen einfacher Varianz und EWMA. Denken Sie daran: Nachdem wir die ganze Serie (in Spalte Q) zusammengefasst haben, haben wir die Varianz, die das Quadrat der Standardabweichung ist. Wenn wir Volatilität wollen, müssen wir uns daran erinnern, die Quadratwurzel dieser Varianz zu nehmen. Was ist der Unterschied in der täglichen Volatilität zwischen der Varianz und EWMA im Googles-Fall Sein signifikant: Die einfache Varianz gab uns eine tägliche Volatilität von 2,4, aber die EWMA gab eine tägliche Volatilität von nur 1,4 (siehe die Kalkulationstabelle für Details). Anscheinend hat sich die Googles-Volatilität in jüngster Zeit niedergelassen, eine einfache Varianz könnte künstlich hoch sein. Heutige Varianz ist eine Funktion von Pior Days Variance Youll bemerken wir brauchten, um eine lange Reihe von exponentiell abnehmenden Gewichten zu berechnen. Wir werden die Mathematik hier nicht machen, aber eines der besten Features der EWMA ist, dass die ganze Serie bequem auf eine rekursive Formel reduziert: Rekursive bedeutet, dass heutige Varianzreferenzen (d. h. eine Funktion der vorherigen Tagesabweichung) ist. Sie finden diese Formel auch in der Kalkulationstabelle, und sie erzeugt genau das gleiche Ergebnis wie die Langzeitberechnung Es heißt: Die heutige Varianz (unter EWMA) ist gleichbedeutend mit der vulkanischen Varianz (gewichtet durch Lambda) plus gestern quadrierte Rückkehr (gewogen von einem Minus Lambda). Beachten Sie, wie wir nur zwei Begriffe zusammenfügen: gestern gewichtete Varianz und gestern gewichtet, quadratische Rückkehr. Dennoch ist Lambda unser Glättungsparameter. Ein höheres Lambda (z. B. RiskMetrics 94) zeigt einen langsamen Abfall in der Serie an - in relativer Hinsicht werden wir mehr Datenpunkte in der Serie haben und sie werden langsamer abfallen. Auf der anderen Seite, wenn wir das Lambda reduzieren, zeigen wir einen höheren Zerfall an: die Gewichte fallen schneller ab, und als direkte Folge des schnellen Zerfalls werden weniger Datenpunkte verwendet. (In der Kalkulationstabelle ist Lambda ein Eingang, also kannst du mit seiner Empfindlichkeit experimentieren). Zusammenfassung Volatilität ist die momentane Standardabweichung eines Bestandes und die häufigste Risikometrität. Es ist auch die Quadratwurzel der Varianz. Wir können die Abweichung historisch oder implizit (implizite Volatilität) messen. Wenn man historisch misst, ist die einfachste Methode eine einfache Varianz. Aber die Schwäche mit einfacher Abweichung ist, dass alle Renditen das gleiche Gewicht bekommen. So stehen wir vor einem klassischen Kompromiss: Wir wollen immer mehr Daten, aber je mehr Daten wir haben, desto mehr wird unsere Berechnung durch entfernte (weniger relevante) Daten verdünnt. Der exponentiell gewichtete gleitende Durchschnitt (EWMA) verbessert die einfache Varianz durch die Zuordnung von Gewichten zu den periodischen Renditen. Auf diese Weise können wir beide eine große Stichprobengröße verwenden, aber auch ein größeres Gewicht auf neuere Renditen geben. (Um ein Film Tutorial zu diesem Thema zu sehen, besuchen Sie die Bionic Turtle.)

No comments:

Post a Comment