no artigo de hoje, vamos dar uma olhada em janelas rolando e expandindo.
no final do post, você será capaz de responder a estas perguntas:
- O que é uma janela rolante?o que é uma janela em expansão?porque são úteis?
O que é uma janela de rolamento ou expansão?
Aqui está uma janela normal.
usamos janelas normais porque queremos ter um vislumbre do lado de fora, quanto maior a janela, mais do lado de fora podemos ver.
também como regra geral, quanto maiores as janelas na casa de alguém, melhor sua carteira de ações fez …
assim como as janelas reais, as janelas de dados também nos oferecem um pequeno vislumbre de algo maior.
uma janela em movimento permite-nos investigar um subconjunto dos nossos dados.
Rolling Windows
muitas vezes, queremos saber uma propriedade estatística dos nossos dados da série cronológica, mas como todas as máquinas do tempo estão trancadas em Roswell, não podemos calcular uma estatística sobre a amostra completa e usá-la para obter informações.
isso introduziria viés para o futuro em nossa pesquisa.
Aqui está um exemplo extremo disso. Aqui nós plotamos o preço da TSLA e sua média sobre a amostra completa.
import pandas as pdimport matplotlib.pyplot as plt #Load TSLA OHLC df = pd.read_csv('TSLA.csv')#Calculate full sample meanfull_sample_mean = df.mean()#Plotplt.plot(df,label='TSLA')plt.axhline(full_sample_mean,linestyle='--',color='red',label='Full Sample Mean')plt.legend()plt.show()
neste caso, se nós só comprei TSLA quando o preço estava sob a médio e Vendeu acima da média, que teria feito uma matança, bem, pelo menos até 2019…
Mas o problema é que nós não teríamos conhecido o valor médio em que ponto no tempo.então é bastante óbvio porque não podemos usar toda a amostra, mas o que podemos fazer então? Uma maneira de abordarmos este problema é usando janelas rolantes ou expandindo.se alguma vez usou uma média móvel simples, então parabéns-você usou uma janela rolante.como funcionam as janelas de rolamento?
digamos que você tem 20 dias de dados de estoque e você quer saber o preço médio do estoque para os últimos 5 dias. Qual é o seu trabalho?
você toma os últimos 5 dias, soma-os e divide por 5.
mas e se você quiser saber a média dos 5 dias anteriores para cada dia em seu conjunto de dados?
é aqui que as janelas de rolamento podem ajudar.
neste caso, nossa janela teria um tamanho de 5, significando para cada ponto no tempo que contém a média dos últimos 5 pontos de dados.
vamos visualizar um exemplo com uma janela em movimento de tamanho 5 passo a passo.
#Random stock pricesdata = #Create pandas DataFrame from listdf = pd.DataFrame(data,columns=)#Calculate a 5 period simple moving averagesma5 = df.rolling(window=5).mean()#Plotplt.plot(df,label='Stock Data')plt.plot(sma5,label='SMA',color='red')plt.legend()plt.show()
Então, vamos desagregação este gráfico.
- temos 20 dias de preços de ações neste gráfico, dados de ações rotulados.
- Para cada ponto no tempo (o ponto azul) queremos saber qual é o preço médio de 5 dias.
- os dados de estoque usados para o cálculo são as coisas entre as 2 linhas verticais azuis.
- Depois de calcular a média a partir de 0-5 a nossa média para o dia 5 torna-se disponível.
- para obter a média para o dia 6 precisamos mudar a janela por 1 de modo que a janela de dados se torna 1-6.
E isto é o que é conhecido como uma janela rolante, o tamanho da janela é fixo. Tudo o que estamos a fazer é rodá-lo para a frente.como já deve ter notado, não temos valores de SMA para os pontos 0-4. Isto porque o tamanho da nossa janela (também conhecido como um período de olhar para trás) requer pelo menos 5 pontos de dados para fazer o cálculo.
expandindo janelas
onde as janelas rolantes são um tamanho fixo, as janelas expandidas têm um ponto de partida fixo, e incorporam novos dados à medida que se tornam disponíveis.
Aqui está a maneira como eu gosto de pensar sobre isto:
“Qual é a média dos valores n passados neste momento?- Use janelas rolantes aqui.
“What’s the mean of all the data available to this point in time?”- Use janelas expandidas aqui.as janelas em expansão têm um limite inferior fixo. Apenas o limite superior da janela é rolado para a frente (a janela fica maior).vamos visualizar uma janela em expansão com os mesmos dados do gráfico anterior.
#Random stock prices data = #Create pandas DataFrame from list df = pd.DataFrame(data,columns=) #Calculate expanding window meanexpanding_mean = df.expanding(min_periods=1).mean()#Calculate full sample mean for referencefull_sample_mean = df.mean()#Plot plt.plot(df,label='Stock Data') plt.plot(expanding_mean,label='Expanding Mean',color='red')plt.axhline(full_sample_mean,label='Full Sample Mean',linestyle='--',color='red')plt.legend()plt.show()
Você pode ver que, no início, o SMA é um pouco nervoso. Isso é porque temos um número menor de pontos de dados no início do enredo, e à medida que obtemos mais dados, a janela expande-se até que, eventualmente, a média da janela em expansão converge para a média da amostra completa, porque a janela atingiu o tamanho de todo o conjunto de dados.
resumo
é importante não usar dados do futuro para analisar o passado. As janelas de rolamento e expansão são ferramentas essenciais para ajudar a “avançar os seus dados” para evitar estes problemas.
Se você gostou desse, provavelmente vai gostar desses também…
Financeiro de Manipulação de Dados em dplyr para Quant Comerciantes
Usando Processamento Digital de Sinais em Quantitativos de Estratégias de Negociação
Backtesting Viés: se Sente bem, Até Você Explodir