Mars 29th, 2014 par Ryan Hamilton Let8217s regarder comment écrire en moyenne mobile analytics en q pour la base de données kdb. Comme exemple de données (mcd. csv), nous allons utiliser les données sur les cours des actions pour McDonalds MCD. Le code ci-dessous téléchargera les données de stock historiques pour le MCD et les placera dans le tableau t: Moyenne mobile simple La moyenne mobile simple peut être utilisée pour lisser les données fluctuantes afin d'identifier les tendances et les cycles globaux. La moyenne mobile simple est la moyenne des points de données et pondère également toutes les valeurs dans le calcul. Par exemple, pour trouver le cours moyen d'un stock pour les dix derniers jours, nous ajoutons simplement le prix quotidien pour ces dix jours et diviser par dix. Cette fenêtre de taille dix jours se déplace ensuite à travers les dates, en utilisant les valeurs dans la fenêtre pour trouver la moyenne. Here8217s le code en kdb pour la moyenne mobile de 1020 jours et le graphique résultant. La moyenne mobile exponentielle est et comment le calculer Un des problèmes avec la moyenne mobile simple est qu'il donne chaque jour une pondération égale. À de nombreuses fins, il est plus logique de donner aux jours plus récents une pondération plus élevée, une méthode de faire cela est en utilisant la moyenne mobile exponentielle. La forme la plus simple de lissage exponentiel est donnée par la formule: où est le facteur de lissage, et 0 Ce tableau montre comment les différents poids sont calculés à partir des valeurs 1,2,3 , 4,8,10,20 et un facteur de lissage de 0,7. (Feuille de calcul Excel) Pour effectuer ce calcul dans kdb, nous pouvons faire ce qui suit: (Ce code a été initialement affiché sur la liste de courrier de google par Attila, la discussion complète peut être trouvée ici) Cet adverbe backslash fonctionne comme La syntaxe alternative généralise aux fonctions de 3 arguments ou plus où le premier argument est utilisé comme valeur initiale et les arguments sont des éléments correspondants des listes: Graphique Moyenne Mouvement Exponentiel Finalement, nous prenons notre formule et l'appliquons à nos données sur les cours boursiers, ce qui nous permet de voir la moyenne mobile exponentielle Pour deux facteurs de lissage différents: Graphique de prix des actions moyennes mobiles exponentielles produites à l'aide de qStudio Comme vous pouvez le voir avec l'EMA, nous pouvons hiérarchiser les valeurs plus récentes en utilisant un facteur de lissage choisi pour décider de l'équilibre entre les données récentes et historiques. La rédaction d'analyses kdb telles que Moyenne mobile exponentielle est couverte dans notre cours de formation kdb. Nous organisons régulièrement des formations à Londres, New York. Asie ou notre cours en ligne kdb est disponible pour commencer dès maintenant. 1 Response to 8220Exponential Moving Average EMA en Kdb8221 Merci Ryan, c'est très utile. Mais je pense qu'il ya une faute de frappe dans la définition ema8217s, devrait être: ema: xyI implémenté le verbe msum dans kdb en utilisant le code de la fenêtre coulissante. La première étape consiste à trouver la fonction de fenêtre coulissante dans q en utilisant l'opérateur scan: Le premier argument de la fonction diadique interne est x 08217s et le second argument est la liste y. Au premier balayage, la fonction interne est appliquée sur x 08217s et y0. Sur le deuxième balayage, il est appliqué sur la sortie du premier balayage et y1 et donc, il continue. Maintenant, en utilisant ce pour calculer la fonction msum dans q. Q) y 1 6 21 56 q) 2 msum y 1 7 27 77 q) somme de chaque sw2y 1 7 27 77 msum est utilisé pour calculer la somme mobile de N-items sur la liste y où N est le premier argument. Dans ce cas, il est 2. Point à méditer sur. Mdev est une fonction qui calcule l'écart de déplacement. Cependant, il ne peut pas être implémenté directement à l'aide de ce code de fenêtre coulissante. Il a besoin de quelques ajustements. Suivez la série novieq13Time dans les finances: l'approche de la base de données arithmétique Prof. Dennis Shasha Courant Institut des sciences mathématiques Département de l'informatique Université de New York shashacs. nyu. edu cs. nyu. educsfacultyshashaindex. html Quelles sont les séries chronologiques utilisées dans les entreprises et les finances Que faire Les systèmes typiques (FAME, S-PLUS, SAS, KSQL) ne pour les soutenir je inclure des requêtes de défi pour vous d'essayer contre votre système de gestion de base de données SQL ou alternative. Quelles sont les forces pertinentes de chaque système Existe-t-il une langue de séries temporelles idéale Fintime, une référence de séries chronologiques cs. nyu. educsfacultyshashafintime. html Quelles recherches dans l'exploration de données temporelles peuvent aider à financer la bibliographie des séries chronologiques. Brève glossaire des concepts statistiques. Groupe découvre l'opportunité de la négociation de paires. L'objectif est d'identifier les paires (ou en groupes généraux) des actions dont les prix se suivent après avoir pris en compte les dividendes. Par exemple, si vous savez que les deux banques Chase et Citibank se suivent (leur différence est un processus stationnaire), Chase remonte, mais Citibank ne l'achète pas, puis achète Citibank Et vendre Chase. Sauf s'il ya une bonne raison extérieure pour la différence, c'est. (C'est simpliste: il faut une combinaison linéaire des deux séries de prix (une fois que le facteur de marché est comptabilisé (supprimé) et les dividendes inclus) pour être stationnaire. Mais c'est l'idée.) Requêtes de contestation typiques à partir d'une telle application: Les histoires de prix de deux actions ou en général parmi de nombreux stocks et options. (Pour la plupart des commerçants, les rendements sont plus intéressants que les prix, car ils ont de meilleures statistiques: un stock qui tend vers le haut au cours des années a une moyenne non stationnaire, mais peut-être un retour stationnaire. Est ln (prix (t) prix (t-1)).) Effectuer la corrélation sur certains intervalles de temps pour évaluer la stationnarité. La corrélation peut être pondérée: l'histoire récente compte plus que l'histoire lointaine Donc, quel est le problème de la base de données Les données brutes se présentent sous forme de tiques (stock, quantité, prix) et peuvent être stockées dans une base de données relationnelle sans problème. La difficulté fondamentale est que le modèle relationnel ne profite pas de l'ordre des rangées. Alors que l'on peut effectuer un ordre par requête et manipuler les données dans une autre langue, on ne peut pas manipuler nativement les données ordonnées en utilisant select, from et where. Peut-être, cela est bon pour l'indépendance des données, mais il est mauvais pour les séries chronologiques. Réalisant cela, les commerçants maudissent beaucoup et de dire à leurs programmeurs de gibier quelque chose ensemble. Les programmeurs le faire et de créer un morceau de logiciel qui fait partie de tableur, une partie de la base de données spécial, avec beaucoup de code C. L'emploi augmente. Note 1: Joe Celko montre comment plier SQL à la tâche de simuler l'ordre dans son livre populaire et excellent The SQL Puzzle Book. Publié par Morgan Kaufmann. Habituellement, la flexion entraîne une perte d'efficacité. Il ne fonctionne que pour les cas spéciaux. Note 2: Les systèmes objet-relationnels abordent ce problème en fournissant des types de données spéciaux et des fonctions définies par l'utilisateur. Mon but est de montrer l'approche de base de données de matrice. Les deux sont convergents, mais les gens du tableau ont été à elle plus longtemps et ont quelques bonnes idées. Quelles sont les séries chronologiques Les séries chronologiques de valeurs sont habituellement enregistrées à des intervalles réguliers croissants (annuels, mensuels, hebdomadaires, deuxièmement). La régularité est critique: sans régularité, les moyennes mobiles, les autocorrélations et la volatilité n'auraient pas de sens (par exemple, si j'ai une séquence de fermetures quotidiennes de prix et ensuite 1 000 valeurs en un jour, la moyenne mobile ne représente pas beaucoup de sens). Les séries chronologiques non régulières sont également intéressantes (par exemple, l'historique des divisions d'actions), mais nous pouvons en dire moins. Les séries chronologiques montrent également l'historicité. Le passé est un indicateur de l'avenir. C'est pourquoi l'auto-régression peut être utilisée pour prédire l'avenir des ventes et pourquoi la volatilité passée peut prédire la volatilité future. Notez que les logiques temporelles, par exemple, utilisent le fait que la première valeur d'une séquence est plus tardive que la ième valeur, mais ne supposent ni régularité ni historicité. Les langages de requêtes temporelles sont également agnostiques sur cette question. Prise en charge du système pour les séries chronologiques Nous voulons pouvoir créer des séries temporelles, les manipuler, les conserver en mémoire persistante et les afficher dans les rapports. Les séries temporelles ont des fréquences, mais peuvent ne pas avoir de valeurs pour chaque instance de temps à la fréquence indiquée, p. Ex. Le jour ouvrable a la fréquence d'une journée, mais n'a aucune valeur en vacances ou week-end. D'autre part, les fréquences de temps avec des lacunes peuvent poser des problèmes sur les marchés internationaux. Par exemple, certains marchés boursiers asiatiques sont ouverts le samedi. Différents marchés n'ont pas les mêmes vacances en général. Une solution consiste à stocker des valeurs sans lacunes partout (c'est-à-dire tous les jours). Puis la question devient: Comment combler les lacunes La réponse a à voir avec le type de valeur stockée. Les valeurs associées à chaque temps sont de deux types généraux (nous empruntons cette distinction au système FAME): les valeurs de niveau restent les mêmes d'une période à l'autre en l'absence d'activité. Par exemple, l'inventaire est une valeur de niveau, parce que l'inventaire reste le même si vous n'achetez ni ne vendez. Les valeurs de débit sont nulles en l'absence d'activité. Par exemple, les dépenses vont à zéro si vous achetez rien. Cette distinction s'avère importante lors de l'interpolation des valeurs manquantes et de la conversion de l'échelle de temps. Opérations sur les séries chronologiques Un cadre type est celui du système FAME, puisqu'il incarne une excellente compréhension des propriétés particulières des séries temporelles. FAME représente l'environnement de prévision, d'analyse et de modélisation des systèmes d'information FAME, Ann Arbor Michigan. Fame Préparation des données (interpolation et conversion de l'échelle de temps) - requêtes d'ajustement de courbe (par exemple, moyennes mobiles et sommes) - agrégats au fil du temps. Prévision (par ex. Extrapolation statistique ou extrapolation basée sur l'exploration de données) - régression, corrélation, analyse de Fourier et recherche de modèles. Préparation des données Parfois, il est nécessaire de relier les séries temporelles qui n'ont pas les mêmes fréquences horaires, p. Le mien est des jours et le vôtre est des semaines. Conversion de l'un à l'autre dépend du type de valeur que l'on a. Par exemple, si la série chronologique quotidienne désigne le niveau d'inventaire, la conversion quotidienne en hebdomadaire implique simplement de prendre le niveau d'inventaire à la fin de chaque semaine. D'autre part, si la série chronologique quotidienne désigne des revenus (un type de flux de la valeur), alors il faut les résumer pour obtenir des revenus hebdomadaires. La conversion de l'heure peut également forcer l'interpolation, en particulier lors de la représentation graphique des valeurs. Typiquement, les systèmes utilisent diverses techniques splines telles qu'une spline cubique pour interpoler les valeurs manquantes. L'interpolation peut être plus impliquée que le simple ajustement de la courbe, mais comme dans l'interpolation Black-Derman-Toy de la courbe de rendement. Ainsi, les utilisateurs devraient être en mesure d'ajouter dans leurs propres fonctions d'interpolation. Types de requête - essayez-les sur votre somme cumulée de base de données, p. Ex. Année à ce jour ventes. Des moyennes mobiles, p. Moyenne de 30 jours des cours boursiers. N-ième mieux, par ex. 5e meilleure région de vente. Médiane --- une dans le rang intermédiaire - ordinal associé à chaque valeur basée sur son ordre de tri. Discrétiser --- par ex. Classer les revenus selon qu'ils sont dans le tiers supérieur, le tiers du milieu ou le tiers inférieur. Cela implique de découvrir les limites et de les utiliser dans une requête de mise à jour. Comparaisons d'une année à l'autre --- par ex. Balance commerciale de cette année contre la dernière. Fonctions comptables --- p. ex. Le taux de croissance moyen, l'amortissement, le taux de rendement interne et ainsi de suite. Fonctions statistiques --- p. ex. L'autocorrélation et la corrélation entre deux séries. Prévision Avant les années 1920, la prévision signifiait tracer des lignes à travers des nuages de valeurs de données. Yule a inventé la technique autorégressive en 1927, afin qu'il puisse prédire le nombre annuel de taches solaires. Il s'agissait d'un modèle linéaire et l'approche de base était d'assumer un processus sous-jacent linéaire modifié par le bruit. Ce modèle est souvent utilisé dans le marketing (par exemple, quelles seront mes ventes de blé le mois prochain). Autoregression utilise une somme pondérée des valeurs précédentes pour prédire les futures. Il existe également des modèles saisonniers autorégressifs. Ces modèles et d'autres sont incorporés dans des produits de séries temporelles tels que FAME, SAS et SPLUS. Dans le financement des options, l'approche de base est de supposer que le prix d'une équité est basé sur une marche aléatoire (mouvement brownien) autour d'une pente de base. L'amplitude du hasard est appelée volatilité. Dans un résultat dû à Norbert Wiener (il l'a travaillé dehors pour abattre des bombardiers au-dessus de Londres), pour ce modèle, l'écart type de la différence entre le prix initial et le prix à un certain temps t s'élève comme la racine carrée du temps t . Étapes d'une session FAME typique Spécifiez la fréquence. Dites mensuellement, à partir du 1er janvier 1996 et se terminant à l'heure actuelle. Créez des séries chronologiques de ventes et de dépenses en les important à partir d'un fichier ou en les saisissant. Spécifiez qu'il s'agit de séries temporelles de type flux. Créez une nouvelle série chronologique: formule profits ventes - dépenses. Créer une quatrième série chronologique avec une fréquence hebdomadaire sur l'inventaire. Indiquez que l'inventaire est une série chronologique de type niveau. Convertissez les trois premières séries chronologiques en une fréquence hebdomadaire (en divisant les valeurs mensuelles par 4,2 ou en construisant une spline cubique pour que la courbe des ventes, des dépenses et des bénéfices soit lisse). Cette interpolation dépend de savoir que les ventes et les dépenses sont des valeurs de type flux. Maintenant, utilisez l'autorégression pour prédire les valeurs temporelles futures. S-PLUS est un environnement interprétatif pour l'analyse des données, non pas spécifiquement orienté vers des séries temporelles, mais basé sur des vecteurs. Mathématiques mathématiques mathématiques mathématiques S-Plus est dérivé de la langue S développée par ATT Bell Laboratories par Becker, Chambers et Wilkens, mais le développement appartient maintenant à MathSoft Inc S-Plus a des fonctions statistiques et mathématiques standard, y compris anova, wavelets, Bootstrapping pour vérifier le modèle overfitting, et ainsi de suite. Graphiques pour la visualisation (les témoignages d'utilisateurs disent que c'est un point fort particulier). Exploration combinatoire de données (par exemple, inférence d'arbres de classification et régression). Un langage orienté objet permettant l'encapsulation et la surcharge. Par exemple, les objets d'une certaine classe auront une fonction de tracé spécial. Les applications en finance comprennent des modèles statistiques pour le négoce à terme, p. Corrélation des obligations australiennes et américaines, et d'autres corrélations simples ou multi-séquences. S-Plus, quelques détails Une belle référence à la langue sur le web a été écrite par Carlos Alzola et Frank Harrell. Il est intitulé Une introduction à S-Plus et le Hmisc et Design Bibliothèques) à l'Université de Virginie. (Hmisc est un ensemble de fonctions add-on qui sont vraiment diverses.) Fharrell. biostat. virginia. edusindex. html Le modèle de programmation S-Plus est orienté vers les vecteurs. Voici quelques déclarations typiques: sum (age SAS (sas) est un important fournisseur de bases de données statistiques (à l'origine, c'était Statistical Analysis System, mais maintenant l'acronyme se traduit par lui-même.) Un programmeur SAS interagit avec le système en paramétrant varioius Fonctions comme l'exemple suivant montre: proc forecast dataleadprd ar1 nombre de paramètres autorégressifs pour estimer intervalmth fréquence de saisie des séries temporelles trend1 ajuster un modèle de tendance constant methodtepar utiliser stepwise méthode autorégressive outleadout1 créer ensemble de données de sortie pour les prévisions lead12 nombre de périodes de prévision outlimit outstd var leadprod Id date identification variable run En plus, SAS a un dial SQL intégré, assez complet, appelé Proc SQL. Le SAS a des modules pour l'exploration de données et l'entreposage de données aussi. Pour obtenir la prise en charge de la gestion des données de séries chronologiques dans SAS, vous achetez une bibliothèque appelée ETS qui vous permet de faire l'interpolation, la prévision économétrique (p. Ex. La méthode du maximum de vraisemblance) analyse financière (analyse des hypothèques à taux fixe, hypothèques à taux variable etc.), prévision des séries chronologiques (lissage exponentiel, ARIMA, régression dynamique). Par sa réputation, SAS est plus difficile à étendre que S-Plus, mais les programmeurs SAS sont devenus intelligents avec la langue au fil des ans. Les bibliothèques sont très riches. Conclusion: S-Plus est plus flexible pour les problèmes spécifiques et est rapide pour les problèmes qui entrent dans la RAM. Il a également de grands graphiques. La combinaison des deux fonctionne bien si l'application sélectionne un sous-ensemble de données et travaille ensuite sur elle (comme un système expert à couplage libre). KDB est un système de base de données mis en œuvre sur le dessus de l'environnement de langage K (produit par Kx systems kx), un langage de tableau. Les structures de données (par exemple les tables) peuvent être interchangées entre les deux et les fonctions peuvent être appelées dans les deux directions. Une version d'essai gratuite peut être téléchargée. KDB prend en charge un dialecte SQL appelé KSQL. KSQL est facile à apprendre (pour toute personne qui parle couramment SQL) et transmet la vitesse et la fonctionnalité de K à la manipulation de données de grande taille. KDB prend également en charge la plupart des standards SQL. La structure de base de données dans KSQL est l'arrable (table-tableau) qui est une table dont l'ordre peut être exploité. De cette façon, il est très semblable à S-Plus. Les objets sont des objets de forme non-premiers normaux: un champ d'un enregistrement peut être un tableau. Par exemple, toute une série temporelle peut être stockée dans un champ. Comme la plupart des SQL modernes, KSQL permet l'inclusion de fonctions définies par l'utilisateur dans les instructions de base de données. Contrairement aux autres SQL, KSQL permet de définir des fonctions sur des tableaux ainsi que des scalaires. Comme le SQL classique, KSQL a des agrégats, le regroupement, les sélections et la correspondance de chaînes, et ainsi de suite. KSQL ajoute de nombreuses fonctions utiles à SQL, permettant une expression économique et souvent de meilleures performances en exploitant l'ordre. Par exemple, trouver la cinquième valeur la plus élevée est une opération de temps linéaire dans KSQL mais nécessite une auto-jointure dans SQL, ce qui n'est que parfois temps linéaire. KDB peut fonctionner comme un serveur distribué haute performance avec une récupération complète et une cohérence distribuée. (KDB garantit la cohérence en utilisant la diffusion atomique ordonnée et une conception de machine d'état répliquée plutôt que la validation en deux phases.) Quelques notes de performance KDB peut effectuer 40 000 transactions TPCB par seconde contre une base de données 100 mégaoctets sur un Pentium 2. Lehman Brothers): séries chronologiques: saisies par identification de l'instrument, date. Données: 11 millions de lignes, quelques centaines de colonnes, la requête type renvoie 7500 lignes avec 15 colonnes. 10 gigaoctets. Requête: recherche toutes les informations relatives à un ensemble donné d'instruments à une date donnée. Cela renvoie 7500 lignes en moins d'une seconde. KSQL Basics - un exemple étendu Créer des tables (arrables, vraiment, mais bien conformes à la terminologie standard, même si son peu inexact) soit par K ou au sein de scripts. Nous allons utiliser des scripts. t pour l'instant et nous allons créer une base de données commerciale simple, puis passer par ligne ligne par ligne (vous pouvez copier ce fichier et l'exécuter, à condition de copier newstat. k qui sera donné plus tard). Voici le fichier newstat. k. Commentaire sur une partie du commerce. La ligne effectue un groupe par stock et année-mois dans la table commerciale. Mathématiquement, la clause par partitionne les enregistrements basés sur des valeurs stockyear-month distinctes, comme un groupe par dans SQL. Ce qui est différent, c'est que chaque partition est garantie d'être ordonnée de la même manière que dans la table (arrable), dans ce cas, par ordre croissant de date. Pour chaque partition correspondant au stock s et à l'année-mois x, la partie renverra s, x et p où p est le prix du dernier enregistrement de la partition correspondant à s et x. Puisque la table est ordonnée par date, le dernier enregistrement sera celui avec la date la plus récente. Dans l'instruction select (i), l'expression date. month dans la clause by donne chaque valeur distincte de chaque année dans la colonne date. C'est une grande commodité dans les applications de séries chronologiques. Les groupes par sous-groupes selon ces valeurs d'un mois. Les lignes utilisent la fonction avgs qui, étant donné un vecteur (prix pour chaque stock dans ce cas), renvoie un vecteur de même longueur, calculant une moyenne mobile. 5 avgs calcule la moyenne mobile de cinq jours. La ligne charge une ou plusieurs fonctions k du fichier newstat. k, dans ce cas un maximum mobile unique prenant deux arguments, un nombre et un vecteur. La ligne utilise la fonction movingmax définie dans le fichier K newstat. k pour calculer le maximum mobile de 5 jours des prix groupés par stock et année-mois. La fonction movingmax prend un scalaire et un vecteur et thats exactement ce que la clause by fournit. Deux de nos requêtes de défi à l'aide de vecteurs Dot produit des prix compensés par 10 jours pour chaque stock Le dixième prix le plus élevé pour chaque stock Vous devriez être en mesure de faire le reste en supposant que vous pouvez mettre dans des fonctions arbitraires. Existe-t-il une série horaire idéale Langue La capacité de traiter les séquences en tant qu'objets de première classe sur lesquels on peut faire des opérations utiles dans le système de base de données. FAME, S-Plus, SAS et KSQL. La capacité de traiter plusieurs séquences ensemble pour des corrélations et à d'autres fins. FAME, S-Plus, SAS et KSQL. Une collection de fonctions de base, p. Agrégats, agrégats mobiles, statistiques, corrélations croisées, interpolation, etc. FAME, S-Plus, SAS et KSQL. La possibilité d'intégrer des fonctions définies par l'utilisateur dans le moteur de requête. Ma conviction: les fonctions définies par l'utilisateur sont nécessaires pour les séries chronologiques. Il n'y a pas d'exhaustivité analogue à relationnelle qui satisfera toutes les applications (ou même la plupart) de séries chronologiques. Prouvez-moi mal si vous le pouvez. KSQL et S-Plus FAME et SAS dans une certaine mesure. Les principales bases de données utiles incluent un riche vocabulaire relationnel et la capacité de travailler efficacement avec des données sur disque et RAM. KSQL, FAME et SAS. Temps de traitement spécial, p. Être en mesure de regrouper par date. month ou date. year de KSQL. FAME, SAS, S-Plus avec les bibliothèques et KSQL. Traiter les valeurs de manière appropriée, p. Avec les concepts de niveau et de flux de FAME. FAME, nativement. Les autres nécessitent des bibliothèques. Appuyer la bitemporalité (discutée ci-dessous) au moins comme une extension. Pas de système, nativement. Les fournisseurs de bases de données objet-relationnelles ont commencé à commercialiser des produits avec des extensions de séries chronologiques. Il sera intéressant de voir à quel point ils sont à la hauteur. Le défi Bitemporal Même dans les finances, il ya plus à la vie que de regarder les flux et les niveaux. Parfois, il faut faire des recherches historiques et comprendre l'état de l'entreprise dans le passé ou l'avenir. Bitemporal deux fois (Snodgrass, Ahn, Jensen, et d'autres) (Un article très gentil de revue a été édité dans les systèmes d'information: Sémantique de Time-Varying Information) 352 (1996)) Les deux temps sont le temps valide (quand un fait tient) et le temps de transaction (quand le fait a été affirmé). En utilisant ce modèle, on peut se demander: Quel était le salaire de Ricks le 1er avril 1998 Supposons que la réponse était de 1 500 par semaine, étant donné les informations que nous connaissons maintenant (c'est-à-dire selon la dernière transaction). Mais d'une façon ou d'une autre nous avons envoyé à Rick un chèque pour bien plus. Ce qui donne lieu à une nouvelle question: Qu'est-ce que nous avons cru le 28 mars 1998 (lorsque la paie imprimé Ricks 100 000 dollars hebdomadaire) sur Ricks salaire valide le 1er avril 1998 Ainsi, nous regardons les transactions concernant Ricks salaire qui a précédé Mars 29, 1998 et voir ce qui a été affirmé au sujet du salaire de Ricks à partir du 1er avril 1998. Si la valeur affirmée était 100,000 dollars par semaine, alors nous savons que le paiement erroné était dû à une erreur de base de données, pas une erreur de traitement de paie. Ainsi, les bases de données bitemporal sont utiles pour suivre la cause des défaillances dans les opérations. Cet exemple montre également leur utilité générale pour les applications de ressources humaines, Quelle est l'historique de travail de ce candidat au sein de l'organisation ou le plus difficile: Comment l'histoire de travail de ce candidat a été corrigé Pour les applications commerciales, nous pouvons utiliser bitemporality pour suivre les corrélations Entre les prévisions de gains et de prix, ce que nous avons estimé à partir de Janvier de cette année que les gains du premier trimestre serait Unitemporal exemple pour ceux avec une compétence SQL: Rick Snodgrass a suggéré l'exemple suivant pour tester votre sagesse temporelle systèmes. Le salaire des employés change avec le temps, généralement dans une direction positive. Chaque salaire d'un employé a donc un moment où il est valide, marqué par le début et l'heure de fin, la notion étant que le salaire devient valide au début et cesse d'être valide à l'heure de fin. Votre tâche consiste à calculer le salaire moyen au fil du temps comme un ensemble de lignes ayant le salaire moyen ainsi que les heures de début et de fin. Deux intervalles consécutifs avec le même salaire moyen devraient être fusionnés. Envoyez-moi le courrier si vous voulez voir une version de KSQL. FinTime a Financial Time Series Bases de données La conception de ce benchmark est un travail en commun avec Kaippallim Jacob de Morgan Stanley (kjacobms) et sa description complète peut être trouvée à cs. nyu. educsfacultyshashafintime. html. Nous présentons ici un résumé de cet indice de référence. Le benchmark FinTime tente de modéliser les utilisations pratiques des bases de données chronologiques dans les applications financières. Les modèles proposés dans FinTime reflètent deux cas fréquents dans le secteur financier, à savoir un système historique de données de marché et une base de données en temps réel sur les prix. Ces modèles sont assez semblables à deux modèles bien étudiés dans le monde relationnel, à savoir, les systèmes de prise de décision et les systèmes OLTP. FinTime suggère et définit des métriques qui permettent de saisir trois dimensions utiles de tout système de séries chronologiques, à savoir les performances en mode mono-utilisateur, les performances en mode multi-utilisateurs et le rapport prix / performances. Modèles pour une référence de série chronologique Avant de décider d'un modèle, nous devons examiner les différents paramètres qui déterminent un modèle pour le système de séries temporelles. Les paramètres les plus importants qui influent sur un système de base de données de séries chronologiques sont: Périodicité des données (Regularirregular) Densité des données (DenseSparse) Calendrier des mises à jour (périodiques, continues) Types de requêtes (SimpleComplex) Les utilisateurs simultanés (FewMany) Combinaisons de ces facteurs donnera lieu à 64 modèles possibles, mais pour la simplicité, nous pouvons nous concentrer sur les cas suivants couramment en cours dans l'industrie financière Modèle 1: Informations sur le marché historique Volume des actions échangées Information sur le marché est généralement fourni comme un ensemble Des fichiers d'entrée par un fournisseur de données de marché à la fin de chaque journée de négociation. Ces fichiers correspondent aux tables définies ci-dessus. Alors que les données de la table d'information de base, de la table d'ajustement fractionné et de la table de dividendes sont irrégulières (c'est-à-dire qu'un événement externe déclenche une entrée dans ces tableaux), le tableau des informations sur le marché comporte une entrée pour chaque jour de négociation. Aux fins de cet indice de référence, la mise en œuvre peut sélectionner une combinaison de facteurs d'échelle du nombre de titres considérés et du nombre d'événements pour ces titres. Nous proposons 3 facteurs d'échelle, soit 50 000 titres, 100 000 titres et 1 000 000 titres, tous pour 4 000 jours. Ils correspondent à peu près à tous les titres de participation aux États-Unis, à tous les titres de participation dans les pays du G7 et à tous les titres de participation au monde. Des programmes pour générer les données peuvent être trouvés sur les pages de référence. Caractéristiques de la requête. Le modèle de requêtes: Regroupement des données relationnelles et des séries chronologiques Accès à des séries chronologiques de grande profondeur pour quelques clés (requête profonde d'histoire) Accès à une série temporelle de courte profondeur pour un grand nombre de clés (requêtes transversales) Tri groupage et agrégation Voici les requêtes de référence (nous ne nécessitons aucun langage de requête spéciale). Beaucoup d'entre eux incluent une notion d'ensemble spécifié de titres ou période spécifiée. Ces notions sont définies par rapport à un modèle aléatoire simple. Obtenez le cours de clôture d'un ensemble de 10 actions pour une période de 10 ans et regroupez-les en agrégats hebdomadaires, mensuels et annuels. Pour chaque période agrégée, déterminer la valeur de prix de clôture faible, élevée et moyenne. La sortie doit être triée par id et date de transaction. Ajuster tous les prix et les volumes (les prix sont multipliés par le facteur divisé et les volumes sont divisés par le facteur divisé) pour un ensemble de 1000 actions afin de refléter les événements divisés pendant une période de 300 jours spécifiée, en supposant que les événements se produisent avant le premier Date de division. Il s'agit des prix et des volumes ajustés par répartition. Pour chaque stock dans une liste spécifiée de 1000 actions, trouvez les différences entre le maximum journalier et le plus bas quotidien le jour de chaque événement partagé au cours d'une période spécifiée. Calculez la valeur de l'indice SampP500 et Russell 2000 pour une journée donnée à l'aide de prix non ajustés et de la composition de l'indice des 2 indices (supposons à être donnés) le jour spécifié. Trouvez le prix moyen mobile de 21 jours et de 5 jours pour un Liste de 1000 actions au cours d'une période de 6 mois. (Utiliser des prix ajustés divisés) (Basé sur la requête précédente) Trouvez les points (jours précis) lorsque la moyenne mobile sur 5 mois croise la moyenne mobile de 21 jours de ces stocks. La sortie doit être triée par id et date. Déterminer la valeur de 100 000 maintenant si il ya un an il a été investi également dans 10 stocks spécifiés (c'est-à-dire l'allocation pour chaque stock est de 10.000). La stratégie de négociation est la suivante: Lorsque la moyenne mobile de 20 jours traverse la moyenne mobile de 5 mois, l'allocation complète pour ce stock est investie et lorsque la moyenne mobile de 20 jours passe au-dessous de la moyenne mobile de 5 mois, la position totale est vendue. Les transactions se produisent sur le cours de clôture du jour de bourse. Trouver les coefficients de corrélation par paire dans un ensemble de 10 titres pour une période de 2 ans. Trier les titres par le coefficient de corrélation, en indiquant la paire de titres correspondant à cette rangée. Note: coefficient de corrélation défini à l'annexe Déterminer les dividendes annuels et le rendement annuel (cours de clôture des dividendes) pour les trois dernières années pour tous les titres de l'indice Russell 2000 qui n'ont pas été fractionnés au cours de cette période. Utilisez des prix non ajustés car il n'y avait pas de fractionnement à ajuster. Étant donné que le modèle de référence suppose que le niveau de simultanéité est faible, le nombre d'utilisateurs devrait être 5. La méthodologie de référence devrait être que chacun des cinq utilisateurs choisira une requête au hasard de l'ensemble ci-dessus sans remplacement et le soumettre à la base de données . Les cinq utilisateurs seront simultanément actifs à tout moment. Chaque utilisateur doit effectuer toutes les requêtes puis s'arrêter. Modèle 2: Cocher les bases de données pour les instruments financiers Ce deuxième benchmark modélise le cas où la base de données (composée de tiques) devrait suivre un taux très élevé de mises à jour tout en répondant à plusieurs utilisateurs en lançant des requêtes assez simples. Les ticks sont des prix de cotation ou de transaction (transaction) et des attributs associés pour des titres individuels qui se trouvent soit sur le plancher d'une bourse ou dans un système de négociation électronique, comme le système de marché NASDAQ. Les tiques incluent 2 types de données de base (1) Les transactions sont des transactions entre acheteurs et vendeurs à un prix fixe et la quantité (2) Les citations sont des offres de prix offertes par les acheteurs et les vendeurs. Les devis peuvent avoir la demande devis, la soumission devis ou les deux avec leurs attributs associés tels que la quantité offerte. Définissons maintenant les différents éléments de ce benchmark. Ils sont: Modèle de données. Le modèle de données pour ce benchmark est simple. Il se compose des 2 tableaux suivants: Tableau d'information de base Indique s'il s'agit d'un cire d'un commerce Population de données, fréquence de mise à jour et volume. Les bases de données Tick sont généralement remplies par des adaptateurs qui reçoivent des données provenant de flux en temps réel. La fréquence des mises à jour est en constante augmentation, mais en moyenne, nous pouvons supposer que chaque tic de sécurité (chaque correspondant à un enregistrement dans la base de données) environ 100 fois pendant un jour de bourse de 8 heures. En outre, nous pouvons supposer que l'ensemble des titres faisant l'objet d'un suivi est négocié dans le monde entier et qu'il n'y a donc pas de période de repos. Pour les besoins de ce benchmark, nous supposerons que le système surveille les ticks sur 1 000, 10 000 ou 100 000 titres, chacun représentant un facteur d'échelle différent. Une considération très importante dans les bases de données tick est la capacité à appliquer rapidement quotcancelcorrectquot. Parfois, une citation incorrecte ou un enregistrement commercial est publié. Le fournisseur enverra alors un enregistrement de correction avec l'identifiant de la sécurité et son numéro de séquence. Le dossier sera soit corrigé en fonction de la nouvelle publication ou simplement supprimé. Caractéristiques de la requête. Les types de requêtes émis contre une base de données en ligne tick sont généralement simples et prédéterminés. Vous trouverez ci-dessous l'ensemble des requêtes à utiliser dans l'indice de référence. Obtenir toutes les tiques un ensemble spécifié de 100 titres pour une période de trois heures spécifiée à une date de négociation spécifiée. Déterminer le prix pondéré en volume d'un titre en considérant seulement les tiques dans un intervalle de trois heures spécifié Déterminer les 10 perdants en pourcentage du top 10 pour la date spécifiée sur les bourses spécifiées triées en pourcentage de perte. La perte est calculée en pourcentage du dernier cours du jour précédent. Déterminer le top 10 des stocks les plus actifs pour une date spécifiée triés par le volume de commerce cumulatif en considérant tous les métiers Trouver les stocks les plus actifs dans l'industrie quotCOMPUTERquot (utilisez le code SIC) Trouver les 10 stocks avec les plus fortes pourcentages de spreads. Spread est la différence entre le dernier ask-price et le dernier bid-price. La marge de pourcentage est calculée en pourcentage du prix moyen (moyenne des prix à la demande et des offres). Paramètres opérationnels. Étant donné que les systèmes de ticks ont généralement un nombre relativement élevé d'utilisateurs simultanés, nous supposerons qu'il ya 50 utilisateurs simultanés pour le benchmark. Ces utilisateurs sélectionnent au hasard les requêtes de la liste ci-dessus et les soumettent à l'exécution. Chaque utilisateur soumettra chaque requête une seule fois et exécutera la liste complète des requêtes. Trouver des modèles dans les données temporelles Traders financiers ont fait l'exploration de données depuis de nombreuses années. Un commerçant m'a décrit son travail comme suit: Je pense à un tour d'arbitrage (paires de négociation est un tel tour). Programme pour quelques mois. Essayez l'astuce et soit il fonctionne ou il doesnt. Si ce n'est pas le cas, j'essaie quelque chose de nouveau. Si cela fonctionne, je l'apprécie jusqu'à ce que l'arbitrage disparaisse. Qu'est-ce que la communauté de recherche doit offrir à ces commerçants? Je présente quelques recherches qui me semblent les plus pertinentes. Je vais mettre à jour ce que le temps passe. U. M. 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