11 votos

Determinar las tendencias de los datos (detección de dirección o punto de inflexión de detección)

Estoy trabajando en un modelo para determinar las tendencias (detección de dirección o punto de inflexión de la detección). Supongamos que tenemos un stock de tendencia que se ilustra a continuación. La línea azul es la tendencia real de los precios de cierre de acciones y la línea roja es imaginario aproximación de la línea de tendencia.

enter image description here

He implementado diferentes modelos, tales como Piecewise Linear Representation (PLR) o Wavelet encontrar la línea roja, pero no tengo resultados precisos hasta la fecha. ¿Cuál es su recomendación para este problema?

5voto

Azzy Puntos 11

El gráfico que se adjunta, se sugiere que estaban tratando de encontrar entre los cambios principales máximos y mínimos. Esto puede hacerse simplemente mediante la búsqueda de extremos locales en la serie de precios. El concepto es:

  1. encontrar los extremos locales: los mínimos en los precios Bajos, los máximos en los precios Altos;
  2. encontrar los extremos locales en los resultados, si los cambios son demasiado corto;
  3. repita los pasos 2 hasta que esté satisfecho con los resultados.

Este es el código en Python para hacer que el uso de los Pandas marco de datos y Numpy del argrel* funciones para localizar relativa de los extremos de la serie:

import pandas as pd
import numpy as np
from scipy.signal import argrelmin, argrelmax

N = 3 # number of iterations
df = pd.read_csv('prices.csv') # load your stock prices in OHLC format
h = df['High'].dropna().copy() # make a series of Highs
l = df['Low'].dropna().copy()  # make a series of Lows
for i in range(N):
        h = h.iloc[argrelmax(h.values)[0]] # locate maxima in Highs
        l = l.iloc[argrelmin(l.values)[0]] # locate minima in Lows
        h = h[~h.index.isin(l.index)] # drop index that appear in both
        l = l[~l.index.isin(h.index)] # drop index that appear in both

Entonces es hasta qué hacer con el resultado de la serie, es decir,. puede utilizar los índices para interpretar los datos de precios en el swing de los segmentos o hacer una nueva serie de h y l valores y interpolar entre si necesita sólo números.

He aquí el ejemplo de cómo este código trabajó en el precio de la fecha de algunos no divulgada de stock. El OHLC candelabros fueron representadas en azul y el swing de la serie en verde. El swing de la serie en la parte superior subtrama resultado después de 1 iteración y la otra en la parte inferior subtrama resultado después de 5 iteraciones:

enter image description here

La primera iteración resultados se adhieren muy de cerca a las bujías, pero la quinta iteración parecen capturar el más grande de los columpios. La exactitud es, por supuesto, discutible, pero, en mi opinión, este método puede ser un buen punto de partida para el análisis de la tendencia. Hay un montón de maneras de mejorar, es decir.:

  • agregar el suavizado a la entrada de Alta/Baja de los precios de la serie;
  • asegúrese de que los resultados de la alternativa de min a max a min, por lo que no hay grupos de mínimos o máximos en la serie como la que ocurrió dos veces en la parte inferior del gráfico del ejemplo anterior;
  • encontrar maneras para adaptar automáticamente el número de iteraciones para lograr los resultados necesarios, etc...

2voto

akalenuk Puntos 1738

No decir lo que iban a hacer con el resultado y por lo tanto hay dos respuestas.

En primer lugar, si usted no se preocupa por el futuro y la única preocupación es precisamente coinciden con los datos que sucedió, entonces usted siempre puede adaptarse a cualquier curva mediante la construcción de un polinomio cuyo grado es igual al número de puntos de datos. Va a encajar perfectamente. Será inútil como otra cosa que un descriptor de los anteriores puntos, pero va a mirar a la derecha. Será un caso de sobreajuste. No es un buen ejemplo de sobreajuste las elecciones presidenciales en https://stats.stackexchange.com/questions/128616/whats-a-real-world-example-of-overfitting .

Su modelo es claramente el sobreajuste de los datos para cualquier propósito predictivo, pero muy cerca de la solución exacta si usted está buscando históricamente. La razón se puede decir que es el sobreajuste es que es que es la captura de las wavelets. Las wavelets son conocidos por ser puramente al azar y sin señal. El artículo original sobre esto se puede encontrar en:

Slutzky, Eugen. La Suma de Causas Aleatorias como el Origen de los Procesos Cíclicos. Econometrica. 5(2). Abr. 1937. pp 105-146

Si usted está tratando de predecir un resultado y la intención de uso, entonces usted necesita para adoptar Bruno de Finetti la Coherencia de Principio a llegar en su matemática subyacente. Este se limita a la Estadística Bayesiana. No Bayesiano métodos son nunca coherente.

Para entender por qué hay una forma simple de 250-año-viejo ejemplo de la Reverand Thomas Bayes a sí mismo. En este ejemplo, el Reverendo Bayes imagina una mesa de billar en el que un balón se recuperó alrededor de llegar a un punto al azar. La pelota se divide la tabla en la región y la región B de forma aleatoria. La probabilidad de que una bola rodará en un área es igual a la proporción de área de la región se ha dividido por el área total.

El balón se retira después de que su ubicación se registra. A continuación, dos jugadores de billar disparar a las bolas. Si las tierras de pelota en su región que ganar y si no se pierden. El problema es que nadie les dijo donde su región o si tienes a un punto o no hasta después de que ha terminado. Ellos no saben por dónde tirar. El primero de los seis puntos gana.

La cuestión que se debe resolver es la probabilidad de que el jugador B le gana, dado que ocho disparos se han hecho y el resultado es 5-3 a favor de A. a las necesidades de un punto a ganar y B necesita tres.

La respuesta Frecuencial es de $(3/8)^3.$ Esto corresponde a las probabilidades de juego de unos 18:1. Así que si usted fuera a utilizar un método Frecuencial, que si fuera un corredor de apuestas debe ofrecer a las 18:1 probabilidades de que B va a ganar.

El Bayesiano respuesta es muy diferente. La solución Bayesiana pide a dos preguntas diferentes. La primera pregunta es ¿qué sabemos acerca de las probabilidades de ganar hemos visto antes, las bolas de tiro. Segundo, ¿cuál es el conjunto de probabilidades de que podría haber provocado los resultados exactos que se ve y lo que son las probabilidades de que cada una de estas probabilidades es la verdadera probabilidad?

En primer lugar, el usuario de un método Bayesiano crearía un parámetro $\theta$ y asignar la probabilidad $\theta=k,\forall{k}\in[0,1]$. Dado que todos los valores posibles son igualmente probables, el estado de la distribución de las creencias sobre $\theta$ debe ser que $\Pr(\theta=k)\propto{1},\forall\theta\in{[0,1]}$. Hay una probabilidad binomial, por lo que su probabilidad es de $\theta^3(1-\theta)^5$.

La parte posterior de la función de densidad es de $504\theta^3(1-\theta)^5$. Este es el resumen de todos los parámetros posibles que podrían desencadenar un 5-3 posición y la probabilidad de que este es el verdadero parámetro. Necesitamos una predicción, sin embargo. Para ello vamos a hacer una predicción sobre la totalidad de la densidad, que es predecir la probabilidad de ganar tres de tres. La solución a esto es a resolver $$504\int_0^1\theta^3\theta^3(1-\theta)^5\mathrm{d}\theta.$$

La respuesta a esto es $\frac{1}{11}$. El Bayesiano solución sería la creación de 10:1 probabilidades. El Bayesiano sería correcto y siempre iba a crear la solución correcta. La solución Bayesiana es $E(p^3)$, mientras que el Frecuentista es de $[E(p)]^3$. Esto es cierto para cualquier Bayesiano frente a Frecuentista proceso incluyendo la regresión.

Usted podría utilizar Bayesiano de selección de modelo. Habría que crear un modelo que dijo que había sólo un conjunto de parámetros tales como $$\frac{x_{t+1}-\beta{x_t}-\alpha\varepsilon_{t+1}}{\sigma}.$$ A continuación, habría que suponer que había un descanso y que sería el modelo de dos series de forma conjunta, una después de la otra. Puede hacer esto de nuevo para tres, cuatro y cinco, y así sucesivamente hasta que sentí que no quería continuar.

A medida que aumente el número de los posibles saltos, el teorema de Bayes, comenzará a penalizar a usted para el agregado de la estructura. Al mismo tiempo, dado que se ajusta mejor, en el teorema de Bayes, se le recompensa para la mejora de la bondad de ajuste. El modelo en el que las sanciones son pequeñas y las recompensas son de alta terminará con ser el mejor modelo de ajuste. Si usted desea hacer una predicción, entonces usted va a utilizar el Bayesiano posterior distribución predictiva como hicimos para calcular las probabilidades.

Porque no hay prediseñadas herramienta para esto, usted tendrá que construir su propio. Si usted no ha utilizado un método Bayesiano, comenzar con William Bolstad de Introducción a la Estadística Bayesiana, 3ª edición. Definitivamente la tercera edición, ya que es una gran mejora.

1voto

shyam Puntos 4133

Tu pregunta es muy general, y estoy seguro de que puede ser abordado desde diferentes ángulos. La segmentación de una serie de tiempo como por los diferentes componentes que pueden ayudar a la previsión cada ate parte también la segmentación en tiempo spads como por la volatilidad así, la comparación de estos también. En este sentido, considerar, (hice algunos pequeños pensando en esto hace un tiempo). Estoy seguro de que otras personas pueden tener mejores ideas o puede ser abordado a partir de una técnica de análisis de punto de vista que donde hay un número de tools puede utilizar de). Esto es lo que yo aunque hace un tiempo.

Hace que la serie sea estacionaria tomando las diferencias de las

  1. Detrending la serie. (Tendencias a largo plazo). Una vez hecho esto. que puede utilizar esto para la previsión de la misma).
  2. La aplicación de una regresión loess para extraer los ciclos de la serie sin tendencia (más tendencias) - una cuidadosa consideración a la varianza y el grado del polinomio para aplicar. No recuerdo bien pero el tiempo spand, creo que debe ser optized como por la varianza. (también puede utilizar esto como para pronosticar el ciclo)
  3. si lo desea, puede segmento de los obtenidos de la serie como por el cambio de régimen métodos (normalmente la media y la varianza debe ser usado).
  4. La aplicación de wavelets para los segmentos tal vez útil si hay una significativa señal en algún lugar, sin embargo, en general, de la señal en los índices bursátiles es menor de edad (probablemente la más grande en acciones individuales, pero no sé cómo significativo). Usted puede aplicar wavelets (sin embargo, ellos tienen problemas de límites y niveles que forbit previsión) entonces puede utilizar de muy corta longitud de los filtros y extracto de la mayor frecuencia ( donde la mayoría de la señal y el ruido reside ). Con el fin de obtener una señal de ruido que tiene el modelo de los tipos de los ruidos que usted sabe o cree que sabe que existe en la señal y se extrae a partir de la señal (esta es la parte más difícil).
  5. Aplicar algunas robusta de regresion modelos para pronosticar la señal y el uso la volatilidad de los modelos a aplicar a ruido (si, de mayoría blanca, ruido sólo use vol modelos). (sin embargo, la regresión es difícil de leer algunos econometría papeles y hablar con algunas personas en el campo para obtener un sentido de los números y cómo usarlo correctamente en la regresión). Algunas veces me han dicho, utilizando correctamente una regresión puede ser mucho mejor que el uso de un montón de procesos como se ha explicado).

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X