2012-04-16 2 views
5

Am Anfang kann diese Frage wirklich dumm klingen, aber es ist nicht in Grundton. Vielleicht kann es genau wie bei jedem Algorithmus als unlösbar erscheinen, aber ich tue so, als ob es so wäre.Wie finden Sie Tops und Bottoms in Zeitreihen?

Also Frage. Ich habe Chart, zum Beispiel Gold. Ich muss herausfinden, wo Tops und Bottoms in axialer Richtung sind. Das Problem ist, dass ich herausfinden muss, wo große Auf- und Abschwünge beginnen. Das Problem ist, dass es viele kleine irrelevante Auf- und Abschwünge gibt.

Hier ist das Bild zum besseren Verständnis - die roten Flecken sind, die ich finden möchte (NICHT GENAU, aber in gewisser Weise so).

enter image description here

Also muss ich wohl kleine Turn-ups und turndowns, um herauszufiltern, haben aber keine Ahnung, wie es zu tun. Ich werde von irgendwelchen Ideen erfreut sein. Ich brauche keinen Algorithmus in Java usw., nur in Worten würde es reichen.

+0

Ich hoffe, dass Sie diese Daten für die Inflation anpassen ... $ 100 im Jahr 1980 war heute mehr als 100 Dollar wert. (Angenommen 2% jährliche Inflation, so etwas wie ** doppelt so viel!) –

Antwort

8
  1. Sie könnten eine Glättungs oder Tiefpaßfilterung Operation ausführen erste und die Standorte der lokalen Minima/Maxima aus den geglätteten Daten finden. Dann hole die Werte der Minima und Maxima aus den Originaldaten.

  2. Sie könnten einen normalen Maximum/Minimum-Filter verwenden, der alle Wendepunkte findet, und dann die Liste der Wendepunkte nach Schwellenwert filtern.

  3. Ich denke, was Sie wirklich wollen die „langfristige Veränderung“ aus dem Signal und schauen nur auf die „kurzfristige Variation“ zu tun ist, zu entfernen. Dies kann unter Verwendung der empirischen Moduszerlegung durchgeführt werden. Siehe § 2.3.2 my thesis. (Alernately, Google um für "Empirische Modus Zersetzung", "EMD" oder "Hilbert-Huang Transform".)

Hier ist die EMD ist in Aktion:

enter image description here

Beachten Sie die zunehmende Allgemeinheit, da der EMD-Algorithmus Komponenten des Signals extrahiert, beginnend bei "am ausführlichsten" und endend mit "am allgemeinsten Trend". (Beachten Sie, dass es anscheinend neun Komponenten gibt - nur einige werden gezeigt.)

+0

Übrigens ist es viel einfacher, diese Art von Signalverarbeitungscode in einer für numerische Mathematik entworfenen Sprache zu schreiben (MATLAB, NumPy, Octave).) –

+0

große Antwort, danke – John

+0

4.) Sie können einen Filter auf der Grundlage der Volatilität wie folgt verwenden: http://www2.math.su.se/matstat/reports/serieb/2009/rep7/report.pdf - Kapitel 2.3 @ Li-aungYip schöne These! eigentlich versuche ich Blasen vorherzusagen, indem ich didier sornettes lppl – KIC

0

Sie beginnen normalerweise mit einem gleitenden Durchschnitt - das heißt, die N letzten Punkte werden gemittelt, wobei der Glättungsgrad ungefähr proportional zu N ist (dh im Durchschnitt mehr Punkte, Ihr Ergebnis wird glatter).

Dann können Sie die Unterschiede zwischen jedem gemittelten Punkt und dem nächsten nehmen. Wenn die Differenz das Vorzeichen ändert, haben Sie ein Minimum oder Maximum (wo es von positiv zu negativ geht, Sie haben ein Maximum, von negativ zu positiv, ein Minimum).

0

Ich verstehe vielleicht nicht ganz, aber warum können Sie nicht einfach den niedrigsten Punkt für einen bestimmten Zeitraum nehmen? Die meisten Datenanbieter bieten Hoch/Tief des Tages, können Sie sie nicht einfach speichern und erhalten dann einfach den niedrigsten Wert für den Zeitbereich x?

Durch die Erweiterung der Reichweite Ihrer Studie entfernen Sie die kleinen Höhen und Tiefen. Dies ist, was ich normalerweise tue.Ein anderer Weg ist, können Sie Durchschnittswerte der letzten X Tage verwenden, um die Ergebnisse (gleitende Durchschnitte) zu glätten, aber dann verlieren Sie Genauigkeit (Grad ist abhängig von Bereich..wenn es ein beweglicher Durchschnitt von 2-3 Tagen als sein nicht als ist schlechter 2-jähriger gleitender Durchschnitt).

EDIT: Entschuldigung, ich vermisse verstanden, Sie versuchen, den Bereich zu finden. Nun, wenn Sie die Daten haben, dann suchen Sie zuerst den/die tiefsten Punkt (e) und gehen Sie dann zum nächsten Tag und ermitteln Sie die% Veränderung, dann den nächsten usw. und überschreiben Sie den Tag, an dem Sie einen höheren Bereich finden. Sie müssen später etwas mehr Logik hinzufügen (z. B.% nach unten von diesem Höchstwert oder etwas anderes), ansonsten melden Sie normalerweise den Börsenotizwert der Aktie und nehmen alles so hoch und sagen, dass es sich um eine einzige Periode handelt.

+0

Ich kann nicht den tiefsten Punkt für bestimmte Zeitbereich nehmen, weil ich diesen Zeitbereich finden will. Ich bin auf der Suche nach einigen Aufschwüngen und Abschwüngen. – John

+0

@John: Schauen Sie sich die empirische Moduszerlegung dann unbedingt an. Es zerlegt Signale durch "Zeitskalen" - Langzeitvariationen, mittelfristige Variationen, kurzfristige Variationen usw. –

Verwandte Themen