Question

Ce que je veux faire est de prendre un certain modèle de stock (défini comme une série de coordonnées x et y) et le comparer aux cours des actions historiques. Si je trouve quelque chose dans les prix historiques similaires à ce modèle je définissais, je voudrais le retourner comme un match.

Je ne suis pas sûr de savoir comment déterminer la similitude de deux lignes courbes sont. Je l'ai fait quelques recherches, et vous pouvez trouver la similitude des deux lignes droites (avec régression linéaire), mais je ne l'ai pas encore rencontré une bonne façon de comparer deux lignes courbes.

Ma meilleure approche est en ce moment obtenir plusieurs points haut et bas de la gamme de données historiques que je regarde, trouver les pentes des lignes et comparer celles des pentes du modèle que je suis en train de correspondre à voir si elles sont à peu près les mêmes.

Les meilleures idées? J'aimerais les entendre!

Modifier Merci pour l'entrée! Je considérais l'approche des moindres carrés, mais je ne savais pas où aller avec elle. Après l'entrée, j'ai reçu bien, je pense que le calcul des moindres carrés de chaque ligne d'abord pour lisser les données un peu, puis mise à l'échelle et en étirant le motif comme James suggéré devrait me faire ce que je cherche.

Je prévois d'utiliser cela pour identifier certains indicateurs techniques dans le stock afin de déterminer acheter et vendre des signaux. Il existe déjà des sites là-bas qui font dans une certaine mesure (comme stockfetcher) , mais bien sûr, je serais comme essayer moi-même et voir si je peux faire mieux.

Était-ce utile?

La solution

L'un des problèmes est que la courbe ajustement en utilisant des fonctions non-linéaires va pas toujours de travailler pour certains de vos modèles selon la façon dont ils sont complexes. Vous pouvez utiliser quadratique ou cubique ou d'un autre ordre de polynômes pour obtenir un résultat plus précis, mais il ne va pas travailler dans toutes les situations, en particulier avec des changements brusques dans les données au fil du temps.

Honnêtement, je pense une solution raisonnable et relativement simple à « échelle » et «étirer votre modèle de sorte qu'il se produit sur la même plage que les données historiques. Vous pouvez utiliser l'interpolation pour l'axe x et la multiplication plus un décalage pour l'axe des y. Après cela, il suffit de regarder la moyenne des différences au carré à chaque point et si tel est inférieure à une valeur de seuil, alors vous pouvez considérer ce match. Il faudra un peu de peaufinage pour obtenir des résultats prévisibles mais je pense que c'est une approche agréable qui devrait vous permettre de définir une sorte de modèle sans compter sur la régression produisant une courbe bien équipée. Essentiellement, il est juste une application de la statistique. Vous pouvez aussi regarder les écarts-types ou la variance pour une approche plus globale.

Autres conseils

Calculer les totaux moindres carrés des résidus (différences y) sur chaque point. Cela devrait vous donner une mesure de l'ajustement géométrique (la façon dont ils se ressemblent). Vous devriez alors être en mesure de mettre une certaine tolérance pour 'assez similaire.

Voir http://en.wikipedia.org/wiki/Curve_fitting

Math est pas mon point fort, mais vous pourriez être en mesure d'utiliser Corrélation .

Calculer la valeur de corrélation entre les deux ensembles de données et et si la corrélation est supérieure à une certaine valeur (0,8?), Puis considérer les ensembles similaires assez .

ou peut-être regarder les dérivés?

mouvement du cours des actions en théorie est généralement modélisé comme mouvement brownien avec un facteur de dérive. (Je sais que très peu, mais regardez )

si vous ne me dérange pas demander à quelle fin pourrait-il être?

Une pensée est peut-être prendre des moyennes mobiles de différentes plages de temps (par jour pendant des semaines, des mois, des années, toutes les semaines pendant des mois, des années, etc.). Et les comparer à des moyennes mobiles maintenant

Les moyennes individuelles seraient également vous donner une comparaison plus facile .. si des éléments consécutifs dans les moyennes sont sous une forme normalisée (disons de 0..1 pour tenir compte des divisions, etc.), vous pouvez comparer des éléments consécutifs dans le vecteur l'autre à l'intérieur une gamme epsilon, et d'obtenir un potentiel d'un match.

Juste une pensée.

Mathworld ( http://mathworld.wolfram.com/ ) devrait également avoir certains prennent la courbe des comparaisons.

Les moindres carrés ne serait pas le meilleur que vous pourriez faire à ce sujet. Utilisez l'algorithme RANSAC. Il se chargera de ce type de données, parce que ce type de données est très imprévisible et il est souvent bruyant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top