Pregunta

Lo que quiero hacer es tomar un cierto patrón stock (que se define como una serie de coordenadas X e Y) y compararla con los precios de valores históricos. Si encuentro algo en los precios históricos similares a ese patrón he definido, me gustaría volver como un fósforo.

No estoy seguro de cómo determinar la similitud de dos líneas curvas son. Hice algunas investigaciones, y se puede encontrar la similitud de dos líneas rectas (con regresión lineal), pero todavía no he encontrado una buena manera de comparar dos líneas curvas.

Mi mejor enfoque en este momento es conseguir varios puntos altos y bajos de la gama de datos históricos que estoy viendo, encontrar las pendientes de las líneas, y comparar los de las pistas del patrón que estoy tratando de igualar para ver si son más o menos lo mismo.

Cualquier mejores ideas? Me encantaría escucharlos!

Editar: Gracias por la entrada! Mientras yo contemplaba los mínimos cuadrados se aproximan antes, pero no estaba seguro de dónde ir con ella. Después de la entrada I recibió sin embargo, creo que el cálculo de los mínimos cuadrados de cada línea primero para suavizar los datos un poco, a continuación, la escala y el patrón se extiende como James sugirió debería conseguirme lo que estoy buscando.

Me va a utilizar esto para identificar ciertos indicadores técnicos en la bolsa para determinar compra y venta de señales. Ya hay sitios por ahí que hacer esto hasta cierto punto (como StockFetcher) , pero por supuesto que había gustaría probar en mi misma y ver si puedo hacer algo mejor.

¿Fue útil?

Solución

Uno de los problemas es que el ajuste de curva usando funciones no lineales no siempre va a funcionar para algunos de sus modelos en función de la complejidad que son. Se podría utilizar cuadrática o cúbica o alguna otra orden de los polinomios para obtener un resultado más preciso pero no va a funcionar en todas las situaciones, sobre todo con los cambios bruscos en los datos a través del tiempo.

Sinceramente creo que una solución razonable y relativamente sencillo es 'escala' y 'estiramiento' su patrón de modo que se produce en el mismo rango que los datos históricos. Puede utilizar la interpolación para el eje X y la multiplicación además un desplazamiento para el eje y. Después de eso, mira a la media de las diferencias al cuadrado en cada punto y si es inferior a un valor umbral, entonces se puede considerar que un partido. Se requerirá un poco de ajuste para lograr resultados predecibles pero yo creo que es un buen enfoque que debe permitir definir cualquier tipo de patrón sin depender de regresión producir una curva muy bien equipado. Esencialmente es sólo una aplicación de estadísticas. También podría mirar a las desviaciones estándar o varianza de un enfoque más integral.

Otros consejos

Calcular los mínimos cuadrados totales de los residuos (Y diferencias) en cada punto. Esto debería dar una medida del ajuste geométrico (lo similares que se ven). A continuación, debería ser capaz de establecer una cierta tolerancia para 'similar suficiente'.

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

Las matemáticas no son mi punto fuerte, sin embargo es posible que pueda usar Correlación .

Se calcula el valor de correlación entre los dos conjuntos de datos y y si la correlación es mayor que un cierto valor (0,8?), Y luego considerar los conjuntos similares lo suficientemente .

o tal vez mirar los derivados?

movimiento de precios de acciones en teoría por lo general se modela como movimiento browniano con un factor de deriva. (Sé muy poco, pero echar un vistazo aquí )

si no me importa que pregunte, ¿para qué podría ser eso?

Una idea podría ser la de tomar promedios de diferentes rangos de tiempo en movimiento (al día durante semanas, meses, años; semanalmente durante meses, años, etc.). Y compararlas con las medias móviles ahora

Los promedios individuales serían también le dan una comparación más fácil .. si los artículos consecutivos en los promedios son de alguna forma normalizada (digamos de 0..1 dar cuenta de fracturas, etc.), se puede comparar elementos consecutivos en el vector de entre sí dentro de un rango epsilon, y conseguir un potencial de un partido.

Es sólo una idea.

Mathworld ( http://mathworld.wolfram.com/ ) también debe tener algunos toman en la curva comparaciones.

Los mínimos cuadrados no sería lo mejor que podría hacer en ella. Utilizar el algoritmo RANSAC. Que se encargará de este tipo de datos, ya que este tipo de datos es muy impredecible y es a menudo ruidosa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top