Sunday 9 April 2017

Kdb Q Gleitender Durchschnitt

29. März 2014 von Ryan Hamilton Let8217s Blick auf, wie zu schreiben gleitenden Durchschnitt Analytics in q für die kdb-Datenbank. Als Beispieldaten (mcd. csv) verwenden wir Aktienkursdaten für McDonalds MCD. Der unten stehende Code lädt historische Bestandsdaten für MCD herunter und platziert ihn in die Tabelle t: Einfacher gleitender Durchschnitt Der einfache gleitende Durchschnitt kann verwendet werden, um fluktuierende Daten zu glätten, um allgemeine Trends und Zyklen zu identifizieren. Der einfache gleitende Durchschnitt ist der Mittelwert der Datenpunkte und gewichtet jeden Wert in der Berechnung gleichmäßig. Zum Beispiel, um die gleitenden Durchschnittspreis einer Aktie für die letzten zehn Tage zu finden, fügen wir einfach den Tagespreis für die zehn Tage und teilen durch zehn. Dieses Fenster mit einer Größe von zehn Tagen bewegt sich dann über die Daten, wobei die Werte innerhalb des Fensters verwendet werden, um den Durchschnitt zu finden. Hier8217s der Code in kdb für 1020 Tage gleitenden Durchschnitt und das resultierende Diagramm. Simple Moving Durchschnittliche Aktienchance Kdb (Produziert mit qStudio) Was Exponential Moving Average ist und wie es zu berechnen Eines der Probleme mit dem einfachen gleitenden Durchschnitt ist, dass es jeden Tag eine gleiche Gewichtung gibt. Für viele Zwecke macht es mehr Sinn, den jüngeren Tagen eine höhere Gewichtung zu geben, eine Methode, dies zu tun, ist mit dem Exponential Moving Average. Die einfachste Form der exponentiellen Glättung ergibt sich aus der Formel: wo ist der Glättungsfaktor, und 0 Diese Tabelle zeigt an, wie die verschiedenen GewichteEMAs unter den Werten 1,2,3 berechnet werden , 4,8,10,20 und einem Glättungsfaktor von 0,7. (Excel-Kalkulationstabelle) Um diese Berechnung in kdb durchzuführen, können wir folgendes tun: (Dieser Code wurde ursprünglich auf die Google Mail-Liste von Attila geschrieben, die vollständige Diskussion finden Sie hier) Dieser Backslash-Adverb funktioniert wie Die alternative Syntax verallgemeinert auf Funktionen von 3 oder mehr Argumente, wobei das erste Argument als Anfangswert verwendet wird und die Argumente entsprechende Elemente aus den Listen sind: Exponential Moving Average Chart Schließlich nehmen wir unsere Formel und wenden sie auf unsere Aktienkurse an, so dass wir den exponentiellen gleitenden Durchschnitt sehen können Für zwei verschiedene Glättungsfaktoren: Exponential Moving Durchschnittliche Aktienkurse, die mit qStudio erzeugt werden Wie Sie mit EMA sehen können, können wir mit einem ausgewählten Glättungsfaktor neuere Werte priorisieren, um die Balance zwischen den letzten und historischen Daten zu bestimmen. Das Schreiben von kdb-Analysen wie Exponential Moving Average erfolgt in unserem kdb-Kurs. Wir stellen regelmäßig Schulungen in London, New York. Asien oder unsere Online-kdb-Kurs ist ab sofort verfügbar. 1 Response to 8220Exponential Moving Average EMA in Kdb8221 Vielen Dank Ryan, das ist sehr hilfreich. Aber ich denke, es ist ein Tippfehler in ema8217s Definition, sollte sein: ema: xyI implementiert das msum Verb in kdb mit dem Schiebefenster-Code. Der erste Schritt besteht darin, die Schiebefensterfunktion in q mit dem Scanoperator zu finden: Das erste Argument der internen diadischen Funktion ist x 08217s und das zweite Argument ist die Liste y. Beim ersten Scan wird die interne Funktion auf x 08217s und y0 angewendet. Bei der zweiten Abtastung wird sie auf die Ausgabe der ersten Abtastung angewendet und y1 und daher fährt sie fort. Nun, dies zu berechnen, die msum Funktion in q. Q) 2 msum y 1 7 27 77 q) Summe jeder sw2y 1 7 27 77 msum wird verwendet, um die N-Item-Bewegungssumme auf der Liste y zu berechnen, wobei N das erste Argument ist. In diesem Fall ist es 2. Punkt zu überdenken. Mdev ist eine Funktion, die die Bewegungsabweichung berechnet. Sie kann jedoch nicht direkt mit diesem Schiebefenstercode implementiert werden. Es braucht einige Tweaks. Folgen Sie novieq13Time Serie in Finance: die Array-Datenbank Ansatz Prof. Dennis Shasha Courant Institut für Mathematische Wissenschaften Department of Computer Science Universität New York shashacs. nyu. edu cs. nyu. educsfacultyshashaindex. html Was sind Zeitreihen, wie in der Wirtschaft und Finanzen Was tun Typische Systeme (FAME, S-PLUS, SAS, KSQL) tun, um sie zu unterstützen Ich enthalten Herausforderung Abfragen für Sie gegen Ihre Lieblings-SQL oder alternative Datenbank-Management-System zu versuchen. Was sind die relevanten Stärken eines jeden Systems Gibt es eine ideale Zeitreihen-Sprache Fintime, eine Zeitreihe Benchmark cs. nyu. educsfacultyshashafintime. html Welche Forschung im zeitlichen Data Mining könnte helfen, finanzieren Zeitreihen-Bibliographie. Kurzes Glossar der statistischen Konzepte. Gruppe entdeckt die Wünschbarkeit von Paaren Handel. Ziel ist die Identifizierung von Paaren (oder generellen Gruppen) von Beständen, deren Preise sich nach der Dividendenfeststellung gegenseitig verfolgen. Man kann Geld verdienen (Lose wurde in den 1980er Jahren gemacht), weil zum Beispiel, wenn Sie wissen, dass die beiden Banken Chase und Citibank verfolgen einander (ihr Unterschied ist ein stationärer Prozess) und Chase geht aber Citibank doesnt, dann kaufen Citibank Und verkaufen Chase. Es sei denn, es gibt einen guten äußeren Grund für den Unterschied, das heißt. (Dies ist vereinfacht: Man braucht eine lineare Kombination der beiden Preisreihen (sobald der Marktfaktor berücksichtigt (entfernt) und Dividenden eingeschlossen ist), aber das ist die Idee.) Typische Herausforderung Abfragen aus einer solchen Anwendung: Correlate Die Preisverläufe von zwei Aktien oder allgemein unter vielen Aktien und Optionen. (Für die meisten Händler sind die Renditen interessanter als die Preise, weil sie bessere Statistiken haben: Eine Aktie, die sich über die Jahre hinweg entwickelt, hat einen unstationären Mittelwert, aber vielleicht eine stationäre Rendite. So führt man Korrelationen über Renditen durch Ist ln (Preis (t) Preis (t-1)).) Führen Sie die Korrelation über bestimmte Zeitintervalle, um die Stationarität zu bewerten. Die Korrelation kann gewichtet werden: die jüngste Geschichte zählt mehr als die entfernte Geschichte Also, was ist das Datenbankproblem Die Rohdaten kommen in Form von Zecken (Bestand, Menge, Preis) und können in einer relationalen Datenbank ohne Problem gespeichert werden. Die grundlegende Schwierigkeit ist, dass das relationale Modell die Reihenfolge der Zeilen nicht ausnutzt. Während man eine Abfrage durchführen und die Daten in einer anderen Sprache manipulieren kann, kann man die geordneten Daten nicht manipulieren, indem man select, from und where verwendet. Das ist gut für die Datenunabhängigkeit, aber es ist schlecht für Zeitreihen. Das verwirklichend, die Händler fluchen viel und sagen ihren Programmierern, etwas zusammen zu kopfeln. Die Programmierer tun dies und erstellen Sie ein Stück Software, die Teil Kalkulationstabelle, Teil spezielle Datenbank mit vielen C-Code ist. Beschäftigung steigt. Anmerkung 1: Joe Celko zeigt, wie man SQL, um die Aufgabe der Simulation von Ordnung in seinem populären und hervorragenden Buch The SQL Puzzle Buch biegen. Veröffentlicht von Morgan Kaufmann. Normalerweise führt die Biegung zu einem Verlust an Effizienz. Es funktioniert auch nur für spezielle Fälle. Anmerkung 2: Objektbezogene Systeme behandeln dieses Problem durch die Bereitstellung spezieller Datentypen und benutzerdefinierter Funktionen. Mein Ziel ist es, den Array-Datenbank-Ansatz zu zeigen. Die beiden konvergieren, aber die Array-Leute haben es länger und haben einige gute Ideen. Was sind Zeitreihenfolgen von Werten, die normalerweise in regelmäßigen, wachsenden Intervallen aufgezeichnet werden (jährlich, monatlich, wöchentlich, zweitens). Die Regelmäßigkeit ist kritisch: Ohne Regelmäßigkeit sind gleitende Mittelwerte, Autokorrelationen und Volatilität nicht sinnvoll (z. B. wenn ich eine Sequenz von täglichen Preisschließungen und dann 1000 Werte innerhalb eines Tages habe, macht der gleitende Durchschnitt für die gesamte Sequenz keinen Sinn). Nicht-regelmäßige Zeitreihen sind ebenfalls von Interesse (z. B. die Geschichte von Aktiensplits), aber wir können weniger über sie sagen. Zeitreihen zeigen auch Historizität. Die Vergangenheit ist ein Indikator für die Zukunft. Deshalb kann Autoregression verwendet werden, um die Zukunft des Umsatzes vorauszusagen und warum die vergangene Volatilität zukünftige Volatilität voraussagen kann. Beachten Sie, dass zeitliche Logiken zum Beispiel die Tatsache nutzen, dass der i1st-Wert in einer Sequenz zu einem späteren Zeitpunkt als der i-te Wert ist, aber weder Regelmäßigkeit noch Geschichtlichkeit annehmen. Temporale Abfragesprachen sind für diese Frage gleichermaßen agnostisch. Systemunterstützung für Zeitreihen Wir wollen in der Lage sein, Zeitreihen zu erstellen, sie zu manipulieren, sie dauerhaft zu speichern und in Berichten darzustellen. Zeitreihen haben Frequenzen, können aber keine Werte für jedes Mal bei der angegebenen Frequenz haben, z. B. Geschäftstag hat die Häufigkeit eines Tages, hat aber keine Werte an Feiertagen oder Wochenenden. Auf der anderen Seite können Zeitfrequenzen mit Lücken auf internationalen Märkten Probleme bereiten. Zum Beispiel sind einige asiatische Aktienmärkte am Samstag geöffnet. Verschiedene Märkte haben nicht die gleichen Ferien im Allgemeinen. Eine Lösung besteht darin, Werte ohne Lücken überall zu speichern (d. h. jeden Tag). Dann wird die Frage: Wie man die Lücken füllen Die Antwort hat mit der Art des gespeicherten Wertes zu tun. Die Werte, die jeder Zeit zugeordnet sind, sind von zwei allgemeinen Typen (wir nehmen diese Unterscheidung von dem FAME-System auf): die Pegelwerte bleiben von einer Periode zur nächsten in Abwesenheit von Aktivität gleich. Beispielsweise ist Inventar ein Levelwert, weil Inventar das gleiche bleibt, wenn Sie weder kaufen noch verkaufen. Strömungswerte in Abwesenheit von Aktivität null sind. Zum Beispiel gehen die Ausgaben auf Null, wenn Sie nichts kaufen. Diese Unterscheidung erweist sich bei der Interpolation von fehlenden Werten als auch bei der Zeitskalierung als wichtig. Operationen auf Zeitreihen-Daten Ein typisches Framework ist das des FAME-Systems, da es ein ausgezeichnetes Verständnis der besonderen Eigenschaften von Zeitreihen verkörpert. FAME steht für Prognose, Analyse und Modellierung Umwelt FAME Informationssysteme, Ann Arbor Michigan. Fame Datenvorbereitung (d. h. Interpolation und Zeitskalenumwandlung) - Kurvenanpassung Abfragen (z. B. gleitende Mittelwerte und Summen) - Aggregate über die Zeit. Prognose (z. B. statistische oder auf Data Mining basierende Extrapolation) - Regression, Korrelation, Fourieranalyse und Musterfindung. Datenvorbereitung Manchmal ist es notwendig, Zeitreihen in Beziehung zu setzen, die nicht die gleichen Zeitfrequenzen aufweisen, z. B. Meine ist Tage und dein ist Wochen. Eine Umwandlung in die andere hängt von der Art des Werts ab, den man hat. Zum Beispiel, wenn die tägliche Zeitreihe bedeutet Inventar-Ebene, dann Umwandlung von täglich auf wöchentlich bringt einfach die Bestandsaufnahme am Ende jeder Woche. Auf der anderen Seite, wenn die tägliche Zeitreihe bedeutet Einnahmen (eine Strömung Art von Wert), dann muss man sie zusammenfassen, um wöchentliche Einnahmen zu bekommen. Zeitkonvertierung kann auch Interpolation erzwingen, vor allem, wenn Werte grafisch dargestellt werden. Typischerweise verwenden Systeme verschiedene Spline-Techniken, wie ein kubisches Spline, um fehlende Werte zu interpolieren. Interpolation kann mehr als nur Kurvenanpassung, aber wie in der Black-Derman-Toy-Interpolation der Zinskurve. Benutzer sollten also in der Lage sein, ihre eigenen Interpolationsfunktionen hinzuzufügen. Abfragetypen - versuchen Sie diese auf Ihrer Datenbank kumulative Summe, z. Jahres-Umsatz. Gleitende Mittelwerte, z. B. 30 Tage Durchschnitt der Aktienkurse. Nth am besten, z. B. 5. beste Verkaufsregion. Median - einer im mittleren Rang - Ordinalzahl zu jedem Wert basierend auf seiner Sortierreihenfolge. Diskretisieren - z. B. Rangieren die Einnahmen, ob sie im oberen Drittel, im mittleren Drittel oder im unteren Drittel liegen. Das bedeutet, die Grenzen zu entdecken und diese dann in einer Aktualisierungsabfrage zu verwenden. Jahresvergleiche - z. B. Handelsbilanz dieses Jahres gegen letztes. Buchhaltungsfunktionen - z. B. Durchschnittliche Wachstumsrate, Amortisation, interne Rendite und so weiter. Statistische Funktionen - z. B. Autokorrelation und Korrelation zwischen zwei Serien. Vorhersage Vor den 1920er Jahren bedeutete die Vorhersage, Linien durch Wolken von Datenwerten zu zeichnen. Yule erfand die autoregressive Technik im Jahr 1927, so konnte er die jährliche Anzahl von Sonnenflecken vorhersagen. Dies war ein lineares Modell und der Grundansatz bestand darin, ein lineares, durch Rauschen modifiziertes Verfahren anzunehmen. Dieses Modell wird oft in Marketing (z. B., was wird meine Verkäufe von Weizen nächsten Monat) verwendet werden. Autoregression verwendet eine gewichtete Summe von vorherigen Werten, um zukünftige vorauszusagen. Es gibt auch saisonale autoregressive Modelle. Diese und andere Modelle sind in Zeitreihenprodukte wie FAME, SAS und SPLUS integriert. Bei den Optionenfinanzierungen geht man davon aus, dass der Preis eines Eigenkapitals auf einer zufälligen Wanderung (Brown'sche Bewegung) um eine Grundsteigung beruht. Die Größe der Zufälligkeit wird Volatilität genannt. In einem Ergebnis durch Norbert Wiener (er arbeitete daran, Bomber über London zu schießen), für dieses Modell, die Standardabweichung der Differenz zwischen dem Anfangspreis und dem Preis zu einer bestimmten Zeit t steigt als Quadratwurzel der Zeit t . Schritte in einer typischen FAME-Sitzung Geben Sie die Häufigkeit an. Sagen Sie monatlich, beginnend am 1. Januar 1996 und endend zum jetzigen Zeitpunkt. Erstellen Sie Verkäufe und Ausgaben Zeitreihen, indem Sie diese aus einer Datei importieren oder eintippen. Geben Sie an, dass es sich hierbei um eine Zeitreihe handelt. Erstellen Sie eine neue Zeitreihe: formula profit sales - expenses. Erstellen Sie eine vierte Zeitreihe mit wöchentlicher Frequenz auf Inventar. Geben Sie an, dass Inventar eine Zeitreihe ist. Wandeln Sie die ersten drei Zeitreihen in eine wöchentliche Frequenz um (indem Sie die monatlichen Werte um 4,2 oder indem Sie einen kubischen Spline aufbauen, um die Umsatz-, Aufwands - und Profitkurve gleichmäßig zu gestalten). Diese Interpolation hängt davon ab, dass Umsatz und Aufwendungen flow-type Werte sind. Verwenden Sie nun Autoregression, um zukünftige Zeitreihenwerte vorherzusagen. S-PLUS ist eine interpretierende Umgebung für die Datenanalyse, die nicht speziell auf Zeitreihen ausgerichtet ist, sondern auf Vektoren basiert. Mathsoftsplus math. umbc. edu S-Plus ist abgeleitet von der S-Sprache, die bei ATT Bell Laboratories von Becker, Chambers und Wilkens entwickelt wurde, aber die Entwicklung gehört jetzt zu MathSoft Inc. S-Plus hat standardmäßige statistische und mathematische Funktionen wie Anova, Wavelets, Bootstrapping, um auf Modellüberschneidung zu prüfen, und so weiter. Grafik-Fähigkeiten für die Visualisierung (User-Testimonials sagen, dies ist ein besonderer Punkt). Kombinatorischer Datenabbau (z. B. Schlußfolgerung von Klassifikationsbäumen und Regression). Eine objektorientierte Sprache, die Einkapselung und Überlastung erlaubt. Beispielsweise haben Objekte einer bestimmten Klasse eine spezielle Plotfunktion. Die Finanzierungsanträge umfassen statistische Modelle für den Futures-Handel, z. B. Korrelation von australischen und US-Bindungen und anderen Einzel - oder Mehrsequenz-Korrelationen. S-Plus, einige Details Ein schöner Hinweis auf die Sprache im Web wurde von Carlos Alzola und Frank Harrell geschrieben. Es ist berechtigt, eine Einführung in S-Plus und die Hmisc und Design-Bibliotheken) an der University of Virginia. (Hmisc ist ein Satz von Add-On-Funktionen, die wirklich verschieden sind.) Fharrell. biostat. virginia. edusindex. html Das S-Plus-Programmiermodell ist vektororientiert. Hier sind einige typische Aussagen: sum (Alter SAS (sas) ist ein führender Anbieter von statistischen Datenbanken (ursprünglich stand er für Statistical Analysis System, aber jetzt steht das Akronym für sich.) Ein SAS-Programmierer interagiert mit dem System durch Parametrisierung von varioius Funktionen wie das folgende Beispiel zeigt: proc Prognose dataleadprd ar1 Anzahl der autoregressiven Parameter zur Schätzung der Intervallhäufigkeit der Eingang Zeitreihe Trend1 passen eine konstante Trend-Modell methodstepar Verwendung schrittweise autoregressive Methode outleadout1 erstellen Ausgabedatensatz für Prognosen lead12 Anzahl der Prognoseperioden outlimit outstd var leadprod SAS verfügt über einen integrierten, recht kompletten SQL-Dialekt namens Proc SQL. SAS verfügt auch über Module für Data Mining und Data Warehousing. Um eine Unterstützung für das Zeitreihen-Datenmanagement in SAS zu erhalten, erwerben Sie eine Bibliothek namens ETS, die Ihnen erlaubt, Interpolation, ökonometrische Prognose (zB Maximum Likelihood Methode) Finanzanalyse (Analyse von Festzinshypotheken, variabel verzinsliche Hypotheken etc.), Zeitreihenvorhersage (exponentielle Glättung, ARIMA, dynamische Regression) durchzuführen. Durch Reputation, SAS ist härter zu verlängern als S-Plus, aber SAS-Programmierer haben sich clever mit der Sprache im Laufe der Jahre. Die Bibliotheken sind sehr reichhaltig. Fazit: S-Plus ist flexibler für Spezialprobleme und ist schnell für Probleme, die in den RAM passen. Es hat auch große Grafiken. Kombinieren Sie die beiden Werke gut, wenn die Anwendung wählt eine Teilmenge von Daten und arbeitet dann daran (wie ein lose-Kupplung Expertensystem). KDB ist ein Datenbanksystem, das auf der K-Sprachumgebung implementiert ist (erzeugt von Kx systems kx), einer Array-Sprache. Datenstrukturen (z. B. Tabellen) können zwischen den beiden vertauscht werden und Funktionen können in beide Richtungen aufgerufen werden. Eine kostenlose Testversion wird heruntergeladen. KDB unterstützt einen SQL-Dialekt namens KSQL. KSQL ist leicht zu erlernen (für alle fließend in SQL) und überträgt die Geschwindigkeit und Funktionalität von K auf große Datenmanipulation. KDB unterstützt auch die meisten Standard-SQL. Die grundlegende Datenstruktur in KSQL ist die arrable (array-table), die eine Tabelle ist, deren Reihenfolge ausgenutzt werden kann. Auf diese Weise ist es sehr ähnlich zu S-Plus. Arrables sind non-first-normale Formobjekte: ein Feld eines Datensatzes kann ein Array sein. Beispielsweise kann eine ganze Zeitreihe in einem Feld gespeichert werden. Wie die meisten modernen SQLs erlaubt KSQL die Integration von benutzerdefinierten Funktionen in Datenbankanweisungen. Im Gegensatz zu anderen SQLs erlaubt KSQL die Definition von Funktionen über Arrays sowie Skalare. Wie klassisches SQL hat KSQL Aggregate, Gruppierung, Selektionen und String-Matching, und so weiter. KSQL fügt viele nützliche Funktionen zu SQL hinzu und erlaubt ökonomischen Ausdruck und häufig bessere Leistung durch Ausnutzung der Ordnung. Beispielsweise ist das Finden des fünfthöchsten Wertes eine lineare Zeitoperation in KSQL, erfordert jedoch eine Selbstverknüpfung in SQL, die nur manchmal eine lineare Zeit ist. KDB kann als leistungsfähiger verteilter Server mit voller Wiederherstellung und verteilter Konsistenz fungieren. (KDB garantiert Konsistenz durch Verwendung eines geordneten atomaren Broadcast und eines replizierten Zustandsmaschinendesigns anstelle eines Two-Phase-Commits.) Einige Leistungsanmerkungen KDB kann 40.000 TPCB-Transaktionen pro Sekunde gegen eine 100-Megabyte-Datenbank auf einem Pentium 2 durchführen Lehman Brothers): Zeitreihe: sortiert nach Instrumentenkennung, Datum. Daten: 11 Millionen Zeilen, paarhundert Spalten, typische Abfrage gibt 7500 Zeilen mit 15 Spalten zurück. 10 Gigabyte. Abfrage: finden Sie alle Informationen, die mit einem bestimmten Satz von Instrumenten zu einem bestimmten Zeitpunkt zu tun haben. Das gibt 7500 Zeilen in weniger als einer Sekunde zurück. KSQL-Grundlagen - ein erweitertes Beispiel Erstellen Sie Tabellen (Arrables, wirklich, aber gut entsprechen Standard-Terminologie, obwohl seine etwas ungenau) entweder durch K oder innerhalb. t Skripte. Wir werden jetzt die. t-Skripte verwenden und eine einfache Handelsdatenbank aufbauen und dann Zeile für Zeile durchgehen (Sie können diese Datei kopieren und ausführen, vorausgesetzt, Sie kopieren auch newstat. k, die später erhalten wird). Hier ist die Datei newstat. k. Kommentar zu Teil der trade. t Die Zeile führt eine Gruppe nach Lager und Jahr-Monat in der Tabelle Handel. Mathematisch partitioniert die by-Klausel die Datensätze, die auf bestimmten Werten für das ganze Jahr und Monat basieren, wie eine Gruppe in SQL. Was anders ist, ist, dass jede Partition in der gleichen Weise wie in der Tabelle (arrable), in diesem Fall, durch aufsteigende Reihenfolge des Datums geordnet wird. Für jede Partition, die dem Bestand s und dem Jahresmonat x entspricht, gibt das Teil s, x und p zurück, wobei p der Preis des letzten Datensatzes in der Partition ist, die s und x entspricht. Da die Tabelle nach Datum geordnet ist, wird der letzte Datensatz derjenige mit dem letzten Datum sein. In der select - Anweisung (i) gibt der Ausdruck date. month in der by-Klausel jeden einzelnen Jahr-Monat-Wert in der Datumspalte an. Dies ist ein großer Vorteil in Zeitreihenanwendungen. Die by-Klauselgruppen nach diesen Jahresmonatwerten. Die Zeilen verwenden die avgs-Funktion, die bei gegebenem Vektor (Preis für jeden Bestand in diesem Fall) einen Vektor der gleichen Länge zurückgibt, der einen gleitenden Durchschnitt berechnet. 5 avgs berechnet den fünftägigen gleitenden Durchschnitt. Die Zeile lädt eine oder mehrere k-Funktionen aus der Datei newstat. k, in diesem Fall ein einzelnes bewegtes Maximum, das zwei Argumente, eine Zahl und einen Vektor nimmt. Die Zeile nutzt die movemax-Funktion, die in der K-Datei newstat. k definiert ist, um das 5-Tages-Bewegungsmaximum der Preise zu berechnen, die nach Bestand und Jahrmonat gruppiert sind. Die movingmax-Funktion nimmt einen Skalar und einen Vektor und das ist genau das, was die by-Klausel liefert. Zwei unserer Challenge-Abfragen mit Vektoren Dot Produkt der Preise um 10 Tage für jede Aktie versetzt Der 10. höchste Preis für jede Aktie Sie sollten in der Lage, den Rest zu tun, vorausgesetzt, dass Sie in beliebige Funktionen setzen können. Gibt es eine ideale Zeitreihen-Sprache Die Fähigkeit, Sequenzen als erstklassige Objekte zu behandeln, auf denen man nützliche Operationen im Datenbanksystem durchführen kann. FAME, S-Plus, SAS und KSQL. Die Fähigkeit, mehrere Sequenzen zusammen für Korrelationen und andere Zwecke zu behandeln. FAME, S-Plus, SAS und KSQL. Eine grundlegende Sammlung von Funktionen, z. B. Aggregate, bewegte Aggregate, Statistiken, Kreuzkorrelationen, Interpolation usw. FAME, S-Plus, SAS und KSQL. Die Möglichkeit, benutzerdefinierte Funktionen in die Abfrage-Engine zu integrieren. Mein Glaube: benutzerdefinierte Funktionen sind notwendig für Zeitreihen. Es gibt keine Analogie zur relationalen Vollständigkeit, die alle (oder sogar die meisten) Zeitreihenanwendungen erfüllen wird. Beweisen Sie mich falsch, wenn Sie können. KSQL und S-Plus FAME und SAS zu einem gewissen Grad. Die wichtigsten nützlichen Datenbank-Annehmlichkeiten umfassen eine reiche relationale Vokabular und die Fähigkeit, effizient arbeiten mit Festplatte sowie RAM-resident Daten. KSQL, FAME und SAS. Behandlungszeit speziell, z. B. In der Lage sein, nach date. month oder date. year von KSQL zu gruppieren. FAME, SAS, S-Plus mit Bibliotheken und KSQL. Werte entsprechend behandeln, z. B. Mit den Level - und Flow-Konzepten von FAME. FAME, nativ. Die anderen benötigen Bibliotheken. Geben Sie Unterstützung für Bitemporalität (als nächstes diskutiert) zumindest als Erweiterung. Kein System, nativ. Objekt-relationale Datenbank-Anbieter haben auf Feldprodukte mit Zeitreihen-Erweiterungen begonnen. Es wird interessant sein zu sehen, wie gut sie sich messen. Die Bitemporal Challenge Auch in der Finanzwelt gibt es mehr Leben als auf der Suche nach Strömen und Ebenen. Manchmal muss man historische Recherchen machen und den Zustand des Unternehmens in der Vergangenheit oder Zukunft verstehen. Bitemporal zweimal (Snodgrass, Ahn, Jensen, und andere) (Ein sehr nettes Rezensionspapier wurde veröffentlicht in Information Systems: Semantik der zeitvariablen Information Christian S. Jensen, Richard T. Snodgrass Information Systems, 21 (4): 311- 352 (1996)) Die beiden Zeiten sind gültige Zeit (wenn eine Tatsache hält) und Transaktionszeit (wenn die Tatsache behauptet wurde). Mit diesem Modell kann man fragen: Was war Ricks Gehalt am 1. April 1998 Angenommen, die Antwort war 1.500 pro Woche, da die Informationen, die wir jetzt kennen (d. H. Nach der letzten Transaktion). Aber irgendwie schickten wir Rick einen Scheck nach viel mehr. Daraus ergibt sich eine neue Frage: Was glaubten wir am 28. März 1998 (als Gehaltsabrechnung Ricks 100.000 Dollar wöchentliche Scheck ausgedruckt) über Ricks Gehalt gültig am 1. April 1998 So betrachten wir die Transaktionen bezüglich Ricks Gehalt, die März vorausgegangen sind 29, 1998 und sehen, was über Ricks Gehalt am 1. April 1998 behauptet wurde. Wenn der behauptete Wert 100.000 Dollar pro Woche war, dann wissen wir, dass die falsche Zahlung aufgrund eines Datenbankfehlers war, nicht ein Abrechnungsprozess Fehler. So sind Bitemporal-Datenbanken nützlich, um die Ursache von Fehlern in Operationen zu verfolgen. Dieses Beispiel zeigt auch ihre allgemeine Nützlichkeit für Human-Ressourcen-Anwendungen, Was ist die berufliche Geschichte dieses Kandidaten innerhalb der Organisation Oder die anspruchsvollere: Wie wurde die berufliche Geschichte dieses Kandidaten korrigiert Für Handelsanwendungen können wir Bitemporalität verwenden, um die Korrelationen zu verfolgen Zwischen Vorhersagen von Einkommen und Preis, was haben wir glauben, ab Januar dieses Jahres, dass das erste Quartal Gewinn wäre Unitemporal Beispiel für diejenigen mit SQL-Skill: Rick Snodgrass schlug das folgende Beispiel für Ihre Systeme zeitlichen Scharfblick zu testen. Das Gehalt der Mitarbeiter verändert sich im Laufe der Zeit, in der Regel in eine positive Richtung. Jedes Gehalt für einen Mitarbeiter hat daher eine Zeit, wenn es gültig ist, markiert durch Start-und Endzeit, die Vorstellung, dass das Gehalt wird zum Zeitpunkt gültig und endet gültig zum Ende. Ihre Aufgabe ist es, die durchschnittliche Gehalt über die Zeit als eine Reihe von Zeilen mit dem durchschnittlichen Gehalt sowie die Start-und Endzeiten zu berechnen. Zwei aufeinander folgende Intervalle mit demselben Durchschnittsgehalt sollten zusammengeführt werden. Senden Sie mir eine E-Mail, wenn Sie eine KSQL-Version sehen möchten. FinTime a Financial Time Series Datenbanken Das Design dieses Benchmarks ist die gemeinsame Arbeit mit Kaippallim Jacob von Morgan Stanley (kjacobms) und seine vollständige Beschreibung finden Sie unter cs. nyu. educsfacultyshashafintime. html. Hier stellen wir eine Zusammenfassung dieser Benchmark vor. Der FinTime-Benchmark versucht, die praktischen Anwendungen von Zeitreihen-Datenbanken in Finanzanwendungen zu modellieren. Die in FinTime vorgeschlagenen Modelle spiegeln zwei häufig vorkommende Fälle in der Finanzindustrie wider, nämlich ein historisches Marktdatensystem und eine Echtzeit-Preis-Tick-Datenbank. Diese Modelle ähneln zwei gut untersuchten Modellen in der relationalen Welt, nämlich Entscheidungsunterstützungssysteme und OLTP-Systeme. FinTime schlägt vor und definiert Metriken, die drei nützliche Dimensionen jedes Zeitreihensystems erfassen, nämlich die Leistung im Einzelbenutzermodus, die Leistung im Mehrbenutzermodus und das Preis-Leistungsverhältnis. Modelle für eine Zeitreihe Benchmark Bevor wir uns für ein Modell entscheiden, müssen wir die verschiedenen Parameter untersuchen, die ein Modell für das Zeitreihensystem bestimmen. Die wichtigsten Parameter, die ein Zeitreihen-Datenbanksystem beeinflussen, sind: Periodizität der Daten (Regularirregular) Dichte der Daten (DenseSparse) Zeitplan der Aktualisierungen (periodisch, kontinuierlich) Arten von Abfragen (SimpleComplex) Zeitintervall zwischen Abfragen (Ad hocBatch) Gleichzeitige Benutzer (FewMany) Kombinationen dieser Faktoren werden 64 mögliche Modelle ergeben, aber zur Vereinfachung können wir uns auf die folgenden häufig vorkommenden Fälle in der Finanzbranche konzentrieren. Modell 1: Historischer Markt Informationen Volumen der gehandelten Aktien Die Marktinformationen werden typischerweise als Satz bereitgestellt Der Eingabedateien eines Marktdatenanbieters am Ende eines jeden Handelstages. Diese Dateien entsprechen den oben definierten Tabellen. Während die Daten für die Basisinformationstabelle, die Split Adjustment Table und die Dividend Table irregulär sind (dh ein externes Ereignis triggert einen Eintrag in diese Tabellen), hat die Market Information Table für jeden Handelstag einen Eintrag. Für die Zwecke dieser Benchmark kann die Umsetzung eine Skalierungsfaktorkombination aus der Anzahl der betreffenden Wertpapiere und die Anzahl der Ereignisse für diese Wertpapiere auswählen. Wir schlagen 3 Skalenfaktoren vor, nämlich 50.000 Wertpapiere, 100.000 Wertpapiere und 1.000.000 Wertpapiere, alle für 4.000 Tage. Diese entsprechen in etwa allen Beteiligungspapieren in den USA, allen Beteiligungspapieren in den G7-Staaten und allen Beteiligungspapieren der Welt. Programme zur Generierung der Daten finden Sie auf den Benchmarkseiten. Abfrageeigenschaften. Das Abfrage-Modell: Join von relationalen Daten - und Zeitreihen-Informationen Zugriff auf lange Tiefen-Zeitreihen-Informationen für wenige Schlüssel (tiefe Historienabfrage) Zugriff auf eine kurze Zeitreihe für eine große Anzahl von Schlüsseln (Querschnittsabfragen) Sortierung Gruppierung und Aggregation Nachfolgend sind die Benchmark-Abfragen (wir benötigen keine spezielle Abfragesprache). Viele von ihnen umfassen eine Vorstellung von bestimmten Satz von Wertpapieren oder bestimmten Zeitraum. Diese Begriffe werden in Bezug auf ein einfaches Zufallsmodell definiert. Erhalten Sie den Schlusskurs eines Satzes von 10 Aktien für einen Zeitraum von 10 Jahren und Gruppe in wöchentliche, monatliche und jährliche Aggregate. Für jeden aggregierten Zeitraum bestimmen Sie den niedrigen, hohen und durchschnittlichen Schlusskurs. Die Ausgabe sollte nach ID und Handelsdatum sortiert werden. Anpassung aller Preise und Volumina (die Preise werden mit dem Splitfaktor multipliziert und die Volumina werden durch den Splitfaktor dividiert) für einen Satz von 1000 Aktien, um die Split - Ereignisse während eines festgelegten Zeitraums von 300 Tagen widerzuspiegeln, vorausgesetzt, dass Ereignisse vor dem ersten Handel stattfinden Aufgeteilt. Diese werden als split-adjustierte Preise und Mengen bezeichnet. Für jeden Bestand in einer bestimmten Liste von 1000 Aktien finden Sie die Unterschiede zwischen dem täglichen hohen und täglichen Tief am Tag jedes Split-Ereignisses während eines bestimmten Zeitraums. Berechnen Sie den Wert des SampP500- und Russell 2000-Index für einen bestimmten Tag mit unbereinigten Preisen und der Indexzusammensetzung der 2 Indizes, die an dem angegebenen Tag angenommen werden sollen. Finden Sie den 21-Tage - und den 5-Tage-Gleitender Durchschnittspreis für einen bestimmten Wert Liste von 1000 Aktien während eines Zeitraums von 6 Monaten. (Auf der Grundlage der vorherigen Abfrage). Finden Sie die Punkte (bestimmte Tage), wenn der 5-Monats-Gleitender Durchschnitt den 21-Tage-Gleitdurchschnitt für diese Bestände überschneidet. Die Ausgabe ist nach ID und Datum zu sortieren. Bestimmen Sie den Wert von 100.000 jetzt, wenn vor 1 Jahr wurde es gleichmäßig in 10 spezifizierten Aktien investiert (d. H. Zuteilung für jede Aktie ist 10.000). Die Handelsstrategie lautet: Wenn der 20-Tage-Gleitende Durchschnitt über dem 5-Monats-Gleitenden Durchschnitt überschreitet, wird die gesamte Zuteilung für diesen Bestand investiert, und wenn der 20-Tage-Gleitende Durchschnitt unter dem 5-Monats-Gleitenden Durchschnitt überschreitet, wird die gesamte Position verkauft. Die Geschäfte geschehen am Schlusskurs des Handelstages. Finden Sie die paarweisen Koeffizienten der Korrelation in einem Satz von 10 Wertpapiere für einen Zeitraum von 2 Jahren. Sortieren Sie die Wertpapiere mit dem Korrelationskoeffizienten und geben Sie das Paar dieser Wertpapiere an. Anmerkung: Korrelationskoeffizient im Anhang Festlegung der jährlichen Dividenden und der jährlichen Rendite (dividendsaverage closing price) für die letzten 3 Jahre für alle Aktien des Russell 2000 Index, die sich in diesem Zeitraum nicht aufgeteilt haben. Verwenden Sie unbereinigte Preise, da es keine Splits zur Anpassung gab. Da das Benchmark-Modell davon ausgeht, dass der Grad der Parallelität gering ist, sollte die Anzahl der Benutzer 5 sein. Die Benchmark-Methodik sollte sein, dass jeder der fünf Benutzer eine Abfrage zufällig aus dem obigen Satz ohne Ersetzen auswählen und an die Datenbank senden wird . Die fünf Benutzer sind zu jedem Zeitpunkt gleichzeitig aktiv. Jeder Benutzer sollte jede Abfrage ausführen und dann beenden. Modell 2: Tick-Datenbanken für Finanzinstrumente Dieser zweite Benchmark modelliert den Fall, dass die Datenbank (bestehend aus Ticks) mit einer sehr hohen Aktualisierungsrate zu rechnen ist, während sie auf mehrere Benutzer antwortet, die ziemlich einfache Abfragen ausgeben. Ticks sind Preisnotierungen oder Handels - (Transaktions-) Preise und zugehörige Attribute für einzelne Wertpapiere, die entweder am Boden einer Börse oder in einem elektronischen Handelssystem wie dem NASDAQ-Marktsystem auftreten. Zecken umfassen 2 grundlegende Arten von Daten (1) Geschäfte sind Transaktionen zwischen Käufern und einem Verkäufer zu einem festen Preis und Menge (2) Zitate sind Preisangebote von Käufern und Verkäufern angeboten. Quotes können die Ask-Quote, die Bid-Quote oder beide zusammen mit ihren Associate-Attribute wie Menge angeboten. Lassen Sie uns nun die verschiedenen Elemente dieser Benchmark definieren. Sie sind: Datenmodell. Das Datenmodell für diese Benchmark ist einfach. Es besteht aus den folgenden 2 Tabellen: Basis-Informationstabelle Eine Angabe, ob es sich um einen Handelsbeteiligten handelt, Aktualisierungshäufigkeit und - volumen. Tick-Datenbanken werden in der Regel von Adaptern aufgefüllt, die Daten aus Echtzeit-Feeds empfangen. Die Häufigkeit der Aktualisierungen steigt stetig, aber im Durchschnitt können wir davon ausgehen, dass jede Wertpapier-Tick (die jeweils einem Datensatz in der Datenbank entsprechen) etwa 100-mal während eines 8-Stunden-Handelstages. Darüber hinaus können wir davon ausgehen, dass die Wertpapiere, die verfolgt werden, auf der ganzen Welt gehandelt werden und daher gibt es keine Ruheperiode. Für die Zwecke dieser Benchmark gehen wir davon aus, dass das System Ticks auf 1.000, 10.000 oder 100.000 Wertpapiere überwacht, wobei jeweils ein anderer Skalierungsfaktor repräsentiert wird. Eine sehr wichtige Überlegung in Tick-Datenbanken ist die Fähigkeit, schnell anwenden quotcancelcorrectquot. Gelegentlich wird ein falsches Angebot oder Handelsurkunde veröffentlicht. Der Lieferant sendet dann einen Korrektursatz mit der Kennung des Wertpapiers und seiner laufenden Nummer. Der Datensatz wird entweder entsprechend der neu veröffentlichten oder einfach gelöschten korrigiert werden. Abfrageeigenschaften. Die Arten von Abfragen, die gegen eine Online-Tick-Datenbank ausgegeben werden, sind gewöhnlich einfach und vorbestimmt. Nachfolgend sind die im Benchmark verwendeten Abfragen aufgelistet. Erhalten Sie alle Ticks einen festgelegten Satz von 100 Wertpapieren für einen bestimmten Zeitraum von drei Stunden an einem bestimmten Handelstag. Bestimmen Sie den volumengewichteten Preis eines Wertpapiers unter Berücksichtigung der Ticks in einem festgelegten 3-Stunden-Intervall. Bestimmen Sie die höchsten 10 Prozent-Verlierer für das angegebene Datum an den angegebenen Börsen nach Prozentverlust sortiert. Der Verlust wird als Prozentsatz des letzten Handelskurses des Vortags berechnet. Bestimmen Sie die Top 10 der meisten aktiven Aktien für ein bestimmtes Datum sortiert nach kumulativem Handelsvolumen durch Berücksichtigung aller Trades Finden Sie die meisten aktiven Aktien in der quotCOMPUTERquot-Branche (SIC-Code verwenden) Finden Sie die 10 Aktien mit den höchsten prozentualen Spreads. Spread ist der Unterschied zwischen dem letzten Ask-Preis und dem letzten Bid-Preis. Prozentualer Spread wird als Prozentsatz des Mittelpunktpreises (Durchschnitt der Nachfrage und der Gebotspreis) berechnet. Betriebsparameter. Da normalerweise Tick-Systeme eine relativ große Anzahl von gleichzeitigen Benutzern haben, gehen wir davon aus, dass es 50 gleichzeitige Benutzer für die Benchmark gibt. Diese Benutzer wählen zufällig Abfragen aus der Liste oben und senden sie zur Ausführung. Jeder Benutzer wird jede Abfrage nur einmal einreichen und die vollständige Liste der Abfragen durchlaufen. Finden von Patterns in temporalen Daten Financial Trader haben Data Mining seit vielen Jahren durchgeführt. Ein Händler beschrieb seine Arbeit zu mir wie folgt: Ich denke über einen Arbitrage Trick (Paar Handel ist so ein Trick). Programm für ein paar Monate. Versuchen Sie den Trick und entweder es funktioniert oder es doesnt. Wenn es nicht tut, versuche ich etwas Neues. Wenn es funktioniert, genieße ich es bis die Arbitrage verschwindet. Was die Forschergemeinde für solche Händler anbieten müssen, präsentiere ich einige Untersuchungen, die meiner Meinung nach am relevantesten sind. Ich werde dies zu aktualisieren, wie die Zeit vergeht. ÄH. Fayyad, G. Piatetsky-Shapiro, P. Smyth, and R. Uthurusamy, editors Advances in Knowledge Discovery and Data mining AAAI Press The MIT Press, 1996. The article by Berndt and Clifford about finding patterns in time series is particularly relevant to finance. Temporal Databases -- Research and Practice Editors: Opher Etzion, Sushil Jajodia, Sury Sripada. (Springer-Verlag, 1998). There, you will find articles about finding unexpected patterns (e. g. fraud) and multi-granularity data mining. Christos Faloutsos Searching Multimedia Databases by Content Kluwer Academic Publishers. This book shows how to do signal processing analysis on time series to solve problems such as: Discovering whether two time series have similar shapes: the basic idea is to store the first few Fourier coefficients of a time sequence in a database and assert that two time sequences are similar if their Fourier coefficients are close. (Remarkably this works well because the energy spectrum for stock prices declines with the power 2 with increasing coefficients.) Joint work with Rakesh Agrawal and Arun Swami. The efficiency of this technique has been improved by Davood Rafiei and Alberto Mendelzon of the University of Toronto. Subsequence matching (is this sequence close to some subsequence of that sequence). Faloutsos uses a special data structure called Fastmap to make this performant. Other papers explore the question of similarity search when time scaling and inversion is possible: R. Agrawal, K-I Lin, H. S. Sawhney and K. Shim. Fast similarity search in the presence of noise, scaling and translation in time-series databases. Proc of the 21st VLDB Conference, 1995 D. Q. Goldin and P. C. Kanellakis. On similarity queries for time-series data: constraint specification and implementation. 1st International Conference on the Principles and Practice of Constraint Programming. pp. 137-153. Springer-Verlag, LNCS 976. September 1995. Davood Rafiei and Alberto Mendelzon. Similarity-based queries for time series data ACM Sigmod, pp. 13-24. May 1997 Yi, Efficient Retrieval of Similar Time Sequences Under Time Warping. Data Engineering, 1998. Excellent work has also been done on data structures by many researchers at Brown, Polytechnic, and the University of Maryland, but that falls outside the data mining purview. As an alternative to seeing whether two sequences or subsequences match, one might want to describe a desirable sequence (e. g. a head-and-shoulders movement of stock prices) and see whether it is present. Relevant papers about this include: H. V. Jagadish, A. O. Mendelzon and T. Milo. Similarity-based queries. PODS 1995. R. Agrawal, G. Psaila, E. L. Wimmers and M. Zait. Querying shapes of histories. Proceedings of the 21st VLDB Conference. pp. 502-514. 1995. P. Seshadri, M. Livny and R. Ramakrishnan. Sequence query processing. ACM SIGMOD, pp. 430-441, 1994 Data model and query language for sequences in general, with time series as a special case. Arie Shoshani, Kyoji Kawagoe: Temporal Data Management. VLDB 1986: 79-88 One of the first papers in the literature. Snodgrass, R. T. editor, The TSQL2 Temporal Query Language . Kluwer Academic Publishers, 1995, 674xxiv pages. The TSQL2 Language Design Committee consisted of Richard Snodgrass (chair), Ilsoo Ahn, Gad Ariav, Don Batory, James Clifford, Curtis E. Dyreson, Ramez Elmasri, Fabio Grandi, Christian S. Jensen, Wolfgang Kaefer, Nick Kline, Krishna Kulkarni, T. Y. Cliff Leung, Nikos Lorentzos, John F. Roddick, Arie Segev, Michael D. Soo and Suryanarayana M. Sripada. TSQL2 has time-varying aggregates, including moving window aggregates, aggregates over different time granularities, and weighted over time. Munir Cochinwala, John Bradley: A Multidatabase System for Tracking and Retrieval of Financial Data. VLDB 1994: 714-721 A paper discussing the implementation of a tick capture and query system --- for those brave enough to roll their own. Raghu Ramakrishnan, Donko Donjerkovic, Arvind Ranganathan, Keven S. Beyer, and Muralidhar Krishnaprasad: SRQL: sorted relational query language SSDBM 98 A paper discussing a model in which relations are tables that can be ordered. This allows one to do moving averages, find ten cheapest, preceding fifteen, etc. The strategy is to extend SQL with order and special operators. Leonid Libkin and colleagues: An optimizable array-oriented language based on comprehensions. The basic primitives are tabulation (analogous to selection), subscripting (remove elements from arrays), dimension reduction (like count of an array), and interaction between sets and arrays. Optimizations are analogous to pushing selects into expressions and techniques that reduce the complexity of expressions. Books on Time Series for Computer Scientists C. Chatfield, The Analysis of Time Series: Theory and Practice Chapman Hall fourth edition 1984. Good general introduction, especially for those completely new to time series. P. J. Brockwell and R. A. Davis, Time Series: Theory and Methods . Springer Series in Statistics (1986). B. D. Ripley and W. N. Venables, Modern Applied Statistics with S-Plus, Springer (1994) Chapter 14 has a good discussion of time series. stats. ox. ac. uk ripley has a lot of useful functions. FinTime, a time series benchmark for finance cs. nyu. educsfacultyshashafintime. html Appendix: Informal Review of Statistical Concepts Recall that the goal of probability theory is to determine the likelihood of a given event given a probability distribution (e. g. how likely is it to get 5,300 heads in 10,000 flips of a fair coin). The goal of statistics is to determine a probability distribution given a series of observations or at least to disprove a null hypothesis (e. g. is a fair coin a reasonable model if I get 8,000 heads in 10,000 flips). In parametric statistics, one knows the form of the target probability distribution but not the value of certain parameters, e. g. coin flips are binomial but the probability of a head may be unknown. In non-parametric statistics, one does not know the form of the target probability distribution. In finance, most models are parametric (autoregression, option pricing). When models arent, people use queries and eyeballs to figure out what to do. Stationary process . one whose statistics (mean and variance) do not vary with time. Stationarity is a fundamental assumption of pairs trading and options pricing. Correlation . a measure of the association between two series, e. g. the option open interest and the price of a security 5 days later. If cov(x, y) represents the covariance between x and y and sigma(x) is the standard deviation of x, then correlation(x, y) cov(x, y)(sigma(x)sigma(y)) so is entirely symmetric and lies always between -1 and 1. Partial correlation . suppose you are looking at the one day returns of Merck and Pfizer (two drug companies). You can look at them as raw data or you can subtract out the market influence via a least squares estimate and use the correlation of the residuals. Volatility . a measure of the standard deviation of the value of a variable over a specific time, e. g. the annualized standard deviation of the returns. The return at time t is ln(p(t)p(t-1)). This is a critical parameter in options pricing, because it determines the probability that a price will exceed a certain price range. Alpha, Beta, and Regression . suppose we estimate the relationship between the percentage change in price of some stock S vs. the percentage change in some market index M using a best fit (least squares) linear relationship: s a bm Then the parameter alpha (a) is the change in S independent of M and beta (b) is the slope of the best fit line. A riskless investment has a positive alpha and a zero beta, but most investments have a zero alpha and a positive beta. If beta is greater than 1, then for a given change in the market, you can expect a greater change in S. If beta is negative, then S moves in the opposite direction from the market. Note that beta is different from correlation (and can be arbitrarily large or small) because it is not symmetric: beta cov(S, M)(sigma(M)sigma(M)) ANOVA . analysis of variance in cases when there is no missing data. This is used to model situations in which several factors can play a role and one wants to tease out a probabilistic model that describes their interaction. For example, product, location and customer income may be factors that influence buying behavior. ANOVA helps to figure out how to weight each one. More significant variants of this include principal components analysis and factor analysis . In finance, one might use one of these to figure out what determines the price movement of a stock (perhaps half general market movement, one third interest rates, etc.). In psychology, one can ask a person 100 questions and then categorize the person according to a weighted sum of a few questions. Autoregression . a statistical model which predicts future values from one or more previous ones. This generalizes trend forecasting as used to predict sales. Financial traders use this sparingly since models that look at the recent past often just follow a short term trend. As one trader put it: they follow a trend and are always a day late and many dollars short. In general, regression of y on x is a determination of how y depends on x. Maximum likelihood method . suppose you are given a training set consisting of observations and the categories to which the observations belong. The maximum likelihood method selects the probability distribution that best explains the training set. For example, if you toss a coin 10,000 times and observe that heads comes up 8,000, you assign a probability to the heads that maximizes the probability of this event. This will make the probability of heads be greater than 12. In finance, the maximum likelihood method is often used for forecasting based on previously seen patterns. Regularization A technique for smoothing a function to make it have nice mathematical properties such as differentiability. Moving averages are an example of regularization. Bootstrapping (i) Divide the training set (set of (observation, category) pairs) into pieces. (ii) Infer the model from some pieces. (iii) Test it on the other pieces. Acknowledgments Lory Molesky, Judy Smith, David Rothman, and Rick Snodgrass made several suggestions that have contributed to this presentation. All errors are mine. This work was partly supported by grant 9531554 of the United States National Science Foundation. This support is greatly appreciated. Thank you for your attention.


No comments:

Post a Comment