Análisis de big data de competencia informática: predicción y análisis de acciones basado en series de tiempo

1. Introducción

Hola a todos, soy Senior Dancheng. Hoy les presentaré un proyecto de big data.

Análisis de big data: predicción y análisis de acciones basado en series temporales

2 Origen de las series temporales

Cuando se trata de tecnología de análisis de series temporales, debemos mencionar el modelo de análisis AR/MA/ARMA/ARIMA. La característica común de estos cuatro métodos de análisis es salir de la perspectiva del análisis de componentes cambiantes, comenzar desde la propia serie temporal y esforzarse por obtener la relación cuantitativa entre los datos iniciales y los posteriores, estableciendo así un modelo en el que los Los datos iniciales son la variable independiente y los datos posteriores son la variable dependiente, para lograr el propósito de la predicción. Para usar una metáfora popular, quién eras anteayer, quién eras anteayer y quién eras ayer te hizo ser quien eres hoy.

2.1 Nombres de los cuatro modelos:

  • Modelo AR: modelo autoregresivo;
  • Modelo MA: modelo de media móvil;
  • ARMA: Modelo Auto Regresivo y de Media Móvil;
  • Modelo ARIMA: Modelo diferencial de media móvil autorregresiva.
  • Modelo AR:

Si cualquier valor de una determinada serie de tiempo puede expresarse como la siguiente ecuación de regresión, entonces la serie de tiempo obedece a un proceso autorregresivo de orden p, que puede expresarse como AR§:

Insertar descripción de la imagen aquí
El modelo AR utiliza la correlación (autocorrelación) entre los valores iniciales y los valores posteriores para establecer una ecuación de regresión que contiene los valores iniciales y los valores posteriores para lograr el propósito de predicción, por lo que se convierte en un proceso autorregresivo. Es necesario explicar aquí el ruido blanco. El ruido blanco puede entenderse como fluctuaciones aleatorias en los valores de series de tiempo. La suma de estas fluctuaciones aleatorias será igual a 0. Por ejemplo, una determinada línea de producción automatizada de galletas requiere que cada paquete de galletas tenga 500 gramos, pero los productos de galletas producidos son aleatorios debido a La influencia de los factores no puede ser exactamente igual a 500 gramos, sino que fluctuará alrededor de 500 gramos. La suma de estas fluctuaciones se cancelará entre sí y será igual a 0.

3 Vista previa de datos

import pandas as pd 
import matplotlib.pyplot as plt 
%matplotlib inline

#准备两个数组
list1 = [6,4,8]
list2 = [8,6,10]

#分别将list1,list2转为Series数组
list1_series = pd.Series(list1) 
print(list1_series)
list2_series = pd.Series(list2) 
print(list2_series)

#将两个Series转为DataFrame,对应列名分别为A和B
frame = {
    
     'Col A': list1_series, 'Col B': list2_series } 
result = pd.DataFrame(frame)

result.plot()
plt.show()

Insertar descripción de la imagen aquí

4 fórmulas teóricas

4.1 Covarianza

Primero, veamos la fórmula de la covarianza:

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

4.2 Coeficiente de correlación

Después de calcular Cov, puede calcular el coeficiente de correlación. El valor está entre -1 y 1. Cuanto más cerca esté de 1, mayor será la correlación positiva; cuanto más cerca esté de -1, mayor será la correlación negativa. 0 significa que no fórmula de correlación
... como sigue:

Insertar descripción de la imagen aquí

4.3 scikit-learn calcula la correlación

Insertar descripción de la imagen aquí


​#Diagrama matricial
sns.pairplot(iris, hue='species', size=3, aspecto=1)

Insertar descripción de la imagen aquí

Las curvas de Andrews son un método para visualizar datos multidimensionales asignando cada observación a una función.
Utilice las curvas de Andrews para convertir cada observación multivariante en una curva y representar los coeficientes de una serie de Fourier, lo cual es útil para detectar valores atípicos en datos de series temporales.

​plt.subplots
(figsize = (10,8))
pd.plotting.andrews_curves(iris, 'especie', colormap='cool')

Insertar descripción de la imagen aquí
Aquí tomamos el conjunto de datos de iris clásico como ejemplo.

Setosa, versicolor y virginica representan tres variedades de iris. Se puede ver que existen intersecciones entre varias características y también existen ciertas reglas de separación.

#Finalmente
, encuentre la correlación entre diferentes características en el conjunto de datos a través del mapa de calor. Los valores altos positivos o negativos indican que las características están altamente correlacionadas:

fig=plt.gcf()
fig.set_size_inches(10,6)
fig=sns.heatmap(iris.corr(), annot=True, cmap='GnBu', linewidths=1, linecolor='k', \
square=True, mask=False, vmin=-1, vmax=1, \
cbar_kws={"orientation": "vertical"}, cbar=True)

Insertar descripción de la imagen aquí

5 Análisis de series temporales de datos financieros

Introducción principal: cálculo de cambio de series temporales, remuestreo de series temporales y función de ventana

5.1 Resumen de datos

​importar
pandas como pd

tm = pd.read_csv('/home/kesci/input/gupiao_us9955/Close.csv')
tm.head()

Insertar descripción de la imagen aquí

El significado de cada indicador en los datos:

  • AAPL.O | caldo de manzana
  • MSFT.O | Acciones de Microsoft
  • INTC.O | Acciones de Intel
  • AMZN.O | Acciones de Amazon
  • GS.N | Acciones de Goldman Sachs
  • ESPÍA | SPDR S&P; Fideicomiso 500 ETF
  • .SPX | S&P; Índice 500
  • .VIX | Índice de volatilidad VIX
  • EUR= | Tipo de cambio EUR/USD
  • XAU= | Precio de oro
  • GDX | ETF de VanEck Vectors Gold Miners
  • GLD | Fideicomiso de oro SPDR

Resumen de las tendencias de precios (o indicadores) durante el período de 8 años

Insertar descripción de la imagen aquí

5.2 Cálculo de cambios de secuencia.

  • Calcular el valor de diferencia de cada indicador para cada día (resta el resultado del día anterior del día siguiente)
  • Calcule pct_change: la tasa de crecimiento es (último valor - valor anterior)/valor anterior)
  • Calcular el cálculo promedio del indicador pct_change
  • Gráfico para observar qué indicador tiene la tasa de crecimiento promedio más alta
  • Calcule la tasa de crecimiento en tiempo continuo (donde necesita calcular la diferencia entre el precio de hoy y el precio de ayer)

Calcular el valor de diferencia de cada indicador para cada día (resta el resultado del día anterior del día siguiente)

Insertar descripción de la imagen aquí

Calcule pct_change: la tasa de crecimiento es (último valor - valor anterior)/valor anterior)

Insertar descripción de la imagen aquí

Calcule el promedio, calcule el indicador pct_change
y dibújelo para observar qué indicador tiene la tasa de crecimiento promedio más alta.

Insertar descripción de la imagen aquí
Además de la tasa de crecimiento más alta del índice de volatilidad (indicador .VIX), ¡es el precio de las acciones de Amazon! Bezos es simplemente el calvo más poderoso del universo

Calcule la tasa de crecimiento en tiempo continuo (donde necesita calcular la diferencia entre el precio de hoy y el precio de ayer)

#第二天数据
tm.shift(1).head()

#计算增长率
rets = np.log(tm/tm.shift(1))
print(rets.tail().round(3))

#cumsum的小栗子:
print('小栗子的结果:',np.cumsum([1,2,3,4]))

#增长率做cumsum需要对log进行还原,用e^x
rets.cumsum().apply(np.exp).plot(figsize=(10,6))

Insertar descripción de la imagen aquí
Lo anterior es la tasa de crecimiento en tiempo continuo, es decir, 1 yuan en 2010 se ha convertido en más de 10 yuanes en 2018 (tome Amazon como ejemplo).

por fin

Supongo que te gusta

Origin blog.csdn.net/m0_43533/article/details/132831146
Recomendado
Clasificación