Python para negociação algorítmica - página 23

 

Balanceamento de dados de sequência RNN - Deep Learning com Python, TensorFlow e Keras p.10



Balanceamento de dados de sequência RNN - Deep Learning com Python, TensorFlow e Keras p.10

Olá a todos, e bem-vindos a outro vídeo tutorial de aprendizado profundo com Python, TensorFlow e Keras. Neste vídeo, continuaremos a desenvolver nosso futuro preditor de movimento de preço de criptomoeda usando uma rede neural recorrente (RNN)."

O vídeo tutorial é focado na construção de um preditor para movimento de preço de criptomoeda usando técnicas de aprendizado profundo.

O apresentador menciona que já realizaram etapas de pré-processamento, incluindo a construção de dados sequenciais e a separação dos dados de validação. Eles também normalizaram os dados.

A próxima etapa do processo é balancear os dados. É importante ter um número igual de instâncias de compra e venda no conjunto de dados. Se houver um desequilíbrio, isso pode afetar o desempenho do modelo. O apresentador sugere que, mesmo que haja um leve desequilíbrio, é melhor balancear os dados para evitar que o modelo favoreça uma classe em detrimento da outra.

Para equilibrar os dados, o apresentador cria duas listas: compra e venda. Eles iteram sobre os dados sequenciais e verificam se o alvo é 0 (vender) ou 1 (comprar). Se for uma venda, eles anexam a sequência à lista de vendas. Se for uma compra, eles a anexam à lista de compras. Depois, eles embaralham as duas listas.

Em seguida, eles encontram o comprimento mínimo entre as duas listas (compras e vendas). Eles atualizam as listas de compras e vendas para conter apenas os elementos até o comprimento da lista mais curta. Isso garante que ambas as listas tenham um número igual de instâncias.

Em seguida, o apresentador combina as listas de compras e vendas na lista sequence_data. Eles embaralham a lista sequencial_data novamente para randomizar ainda mais a ordem dos dados.

A próxima etapa é dividir o sequence_data em features (X) e labels (Y). Eles criam listas vazias x e y para armazenar os recursos e rótulos, respectivamente. Eles iteram sobre o sequence_data e acrescentam a sequência à lista x e o destino à lista y.

Por fim, eles retornam as matrizes de x e y como dados pré-processados.

O apresentador então imprime algumas estatísticas sobre os dados, como os tamanhos dos conjuntos de dados de treinamento e validação e o equilíbrio entre as instâncias de compra e venda.

No próximo vídeo, eles planejam construir e treinar o modelo usando os dados pré-processados.
Balancing RNN sequence data - Deep Learning w/ Python, TensorFlow and Keras p.10
Balancing RNN sequence data - Deep Learning w/ Python, TensorFlow and Keras p.10
  • 2018.09.17
  • www.youtube.com
Welcome to the next part of our Deep Learning with Python, TensorFlow, and Keras tutorial series. In this tutorial, we're going to continue building our cryp...
 

Modelo RNN de previsão de criptomoedas - Deep Learning com Python, TensorFlow e Keras p.11



Modelo RNN de previsão de criptomoedas - Deep Learning com Python, TensorFlow e Keras p.11

Olá a todos e bem-vindos a mais um tutorial de aprendizado profundo com Python, TensorFlow e Keras. Neste tutorial, continuaremos de onde paramos no tutorial anterior. Nosso objetivo é prever os movimentos futuros de preços de uma criptomoeda específica com base em seus preços históricos, volume e outras criptomoedas importantes. Faremos isso usando uma rede neural recorrente (RNN).

Para começar, precisamos importar as bibliotecas necessárias. Importaremos a biblioteca de tempo para uso posterior. Em seguida, definimos algumas constantes. A primeira constante é o número de épocas para as quais queremos treinar o modelo. Definimos o tamanho do lote para 64 inicialmente, mas podemos ajustá-lo posteriormente, se necessário. Finalmente, definimos um nome para o modelo usando um F-string. É importante ter um nome exclusivo para o modelo e os logs do TensorBoard para fácil comparação e identificação.

Agora, importamos os módulos TensorFlow necessários. Importamos o TensorFlow como tf e os submódulos necessários: tf.keras.models, tf.keras.layers, tf.keras.optimizers, tf.keras.callbacks e tf.keras.backend. Também importamos numpy e matplotlib para processamento e visualização de dados.

Em seguida, começamos a construir nosso modelo. Criamos um modelo sequencial usando model = tf.keras.models.Sequential(). Dentro do modelo, adicionamos camadas usando a função model.add(). Nossa primeira camada é uma camada LSTM com 128 nós. Definimos return_sequences=True, pois queremos passar a saída para a próxima camada. Especificamos a forma de entrada como train_X.shape[1:], onde train_X são os dados de entrada. Também adicionamos uma camada de dropout com uma taxa de 0,2 e uma camada de normalização em lote.

Repetimos esse processo mais duas vezes, adicionando mais duas camadas LSTM com 128 nós cada. Removemos return_sequences=True para a última camada LSTM, pois ela será seguida por uma camada densa. Também adicionamos camadas de abandono e normalização de lote a cada camada LSTM.

Após as camadas LSTM, adicionamos uma camada densa com 32 nós e uma função de ativação linear retificada. Adicionamos uma camada dropout com uma taxa de 0,2 e, finalmente, a camada de saída com dois nós e uma função de ativação softmax.

Agora, especificamos o otimizador para nosso modelo. Usamos o otimizador Adam com uma taxa de aprendizado de 0,001 e uma taxa de decaimento de 1e-6. Compilamos o modelo usando model.compile() e especificamos a função de perda como entropia cruzada categórica esparsa e as métricas como precisão.

Em seguida, definimos os callbacks para o nosso modelo. Criamos um retorno de chamada do TensorBoard com o diretório de log definido como 'logs'. Também criamos um retorno de chamada ModelCheckpoint para salvar o melhor modelo durante o treinamento. Especificamos o caminho do arquivo para salvar os pontos de verificação usando a formatação de string.

Por fim, treinamos o modelo usando model.fit(). Passamos os dados de treinamento (train_X e train_Y), o tamanho do lote, o número de épocas e os dados de validação (validação_X e validação_Y). Também passamos os callbacks que definimos anteriormente.

Após o treinamento, podemos salvar o modelo usando model.save() para uso futuro.

É isso! Construímos e treinamos com sucesso um modelo de rede neural recorrente para prever os movimentos futuros de preço de uma criptomoeda. Também visualizamos o progresso do treinamento usando o TensorBoard.

Cryptocurrency-predicting RNN Model - Deep Learning w/ Python, TensorFlow and Keras p.11
Cryptocurrency-predicting RNN Model - Deep Learning w/ Python, TensorFlow and Keras p.11
  • 2018.09.18
  • www.youtube.com
Welcome to the next tutorial covering deep learning with Python, Tensorflow, and Keras. We've been working on a cryptocurrency price movement prediction recu...
 

Estratégia de negociação algorítmica em Python


Estratégia de negociação algorítmica em Python

No tutorial de hoje, iremos implementar uma estratégia algorítmica de negociação de ações usando Python. Vamos mergulhar direto nisso.

Antes de começar, quero enfatizar que este vídeo não pretende ser um investimento ou aconselhamento financeiro. Não sou um profissional de ações, especialista em investimentos ou profissional financeiro. O objetivo deste vídeo é demonstrar como implementar uma estratégia de negociação algorítmica usando Python. Se você optar por usá-lo para seus investimentos, é uma decisão e responsabilidade inteiramente sua. Vou me concentrar apenas no aspecto da programação.

Para começar, precisamos instalar duas bibliotecas: "pandas-datareader" para buscar dados de estoque e "matplotlib" para visualização de dados. Abra o prompt de comando (CMD) e instale essas bibliotecas. Uma vez instalado, podemos prosseguir com a codificação.

Primeiro, importamos os módulos necessários: "datetime" para lidar com data e hora, "matplotlib.pyplot" para traçar gráficos e "pandas_datareader" como "web" para recuperar dados de ações.

Em seguida, definimos as médias móveis (MA) que usaremos. As médias móveis representam o preço médio das ações durante um período de tempo especificado, como 30 ou 100 dias. Criamos duas variáveis, "ma1" e "ma2", que serão definidas como 30 e 100, respectivamente. Esses valores determinam o comprimento das médias móveis que analisaremos.

Agora, vamos definir o período de tempo para nossa análise. Definimos as datas inicial e final usando a data atual e um delta de tempo de 3 anos. Este período de tempo será usado para buscar dados de estoque.

Usando a biblioteca "datareader", recuperamos os dados de ações de uma empresa específica (neste caso, o Facebook) da API do Yahoo Finance. Passamos as datas de início e término para buscar os dados relevantes.

Para calcular as médias móveis, adicionamos duas novas colunas ao DataFrame de dados. Usamos a função "rolling" para calcular a média móvel para os períodos "ma1" e "ma2". A coluna "fechamento ajustado" representa o preço de fechamento ajustado para desdobramentos de ações. Armazenamos as médias móveis nas respectivas colunas.

Antes de prosseguir, vamos visualizar os dados e as médias móveis. Traçamos os valores de fechamento ajustados como o preço da ação e as médias móveis são plotadas no mesmo gráfico. Definimos o estilo do gráfico para usar um fundo escuro e fornecemos rótulos e cores apropriados para diferenciar as linhas. Finalmente, adicionamos uma legenda para identificar as linhas plotadas e exibir o gráfico.

Agora, vamos implementar a estratégia de negociação algorítmica. Criamos duas listas vazias, "buy_signals" e "sell_signals", que armazenarão os sinais de compra e venda, respectivamente. Além disso, introduzimos uma variável de "gatilho" que nos ajudará a acompanhar as mudanças na estratégia.

Usando um loop for, iteramos sobre os dados DataFrame. Dentro do loop, verificamos duas condições: se a primeira média móvel ("ma1") for maior que a segunda média móvel ("ma2") e se o gatilho não for igual a 1. Se ambas as condições forem atendidas, adicionamos um sinal de compra à lista "buy_signals" e acrescente "NaN" (não um número) à lista "sell_signals". Também atualizamos o gatilho para 1.

No caso oposto, onde "ma1" é menor que "ma2" e o gatilho não é igual a -1, adicionamos um sinal de venda à lista "sell_signals" e acrescentamos o preço real da ação à lista "buy_signals". Atualizamos o gatilho para -1.

Se nenhuma das condições for atendida, acrescentamos valores "NaN" a ambas as listas para manter comprimentos consistentes.

Por fim, adicionamos mais duas colunas ao DataFrame de dados para armazenar os sinais de compra e venda.

Também vamos espalhar os sinais de venda, então adicionaremos outro gráfico de dispersão usando plt.scatter. Desta vez, vamos espalhar os sinais de venda em data.index como os valores x, e os preços dos sinais de venda correspondentes como os valores y. Vamos rotular esse gráfico de dispersão como "sinal de venda" para diferenciá-lo dos sinais de compra.

Por fim, adicionaremos uma legenda ao gráfico usando plt.legend para exibir os rótulos dos diferentes elementos. Em seguida, chamaremos plt.show() para exibir o gráfico.

O código:

plt.plot(data.index, data[ 'Adj Close' ], label= 'Share Price' , color= 'lightgray' )
plt.plot(data.index, data[ 'sma_{}' .format(ma1)], label= 'SMA {}' .format(ma1), linestyle= '--' )
plt.plot(data.index, data[ 'sma_{}' .format(ma2)], label= 'SMA {}' .format(ma2), linestyle= '--' )
plt.scatter(data.index, data[ 'Buy Signal' ], label= 'Buy Signal' )
plt.scatter(data.index, data[ 'Sell Signal' ], label= 'Sell Signal' )
plt.legend(loc= 'upper left' )
plt.show()
Agora, ao executar o código, você verá um gráfico mostrando o preço das ações, as médias móveis e os sinais de compra e venda.

Lembre-se, esta é apenas uma estratégia de negociação algorítmica simples implementada em Python e não deve ser considerada como um conselho financeiro ou de investimento. É importante fazer uma pesquisa completa e consultar profissionais antes de tomar qualquer decisão de investimento.

 

Introdução à negociação algorítmica usando Python - Como criar e testar algoritmos de negociação


Introdução à negociação algorítmica usando Python - Como criar e testar algoritmos de negociação

Neste vídeo, vamos nos aprofundar no desenvolvimento de uma estratégia de negociação algorítmica. É importante observar que este vídeo destina-se apenas a fins educacionais e não deve ser considerado um conselho de investimento. A estratégia que iremos explorar é comumente conhecida como estratégia de momentum, embora o próprio termo possa ser ambíguo e aberto a interpretações.

Essencialmente, uma estratégia de momentum envolve a identificação de títulos que exibem um movimento direcional claro. Em nosso caso, começaremos conduzindo um processo de triagem para identificar títulos que estão sendo negociados acima de sua média móvel de 50 dias ou qualquer outra métrica predeterminada que tenhamos pesquisado.

Essa estratégia é frequentemente chamada de estratégia de acompanhamento de tendências, pois visa capitalizar títulos que estão se movendo em uma direção específica, seja para cima ou para baixo. É importante observar que essa abordagem requer uma pesquisa completa para identificar possíveis sinais de negociação lucrativos que podem ser aplicados em vários títulos.

Para os fins deste vídeo, vamos nos concentrar na análise de um único título para determinar seu potencial. Para começar, vamos importar as bibliotecas necessárias e configurar nosso ambiente. O notebook contendo o código será disponibilizado em um link do GitHub, que pode ser encontrado na descrição do vídeo.

Em seguida, faremos o download dos dados necessários para análise. Nesse caso, usaremos a API do Yahoo Finance para recuperar os dados do Gold ETF (Exchange Traded Fund) com o símbolo "GLD". Utilizaremos o leitor de dados Pandas para buscar os dados, especificando o símbolo e deixando as datas de início e término como padrão, o que deve nos fornecer aproximadamente cinco anos de dados. Após o download, examinaremos as primeiras linhas dos dados para garantir sua precisão.

Para facilitar nossa análise, adicionaremos colunas adicionais ao quadro de dados. Primeiro, incluiremos uma coluna de contador de dias para acompanhar o dia na série temporal. Isso será feito usando a biblioteca NumPy para criar uma matriz de intervalo correspondente ao número de observações no quadro de dados de ouro. A coluna do contador de dias será adicionada ao quadro de dados e ajustaremos a ordem das colunas para garantir que o dia siga a coluna de data.

Além disso, descartaremos colunas desnecessárias, como fechamento e volume ajustados, para nossa análise específica. Vale ressaltar que para determinados títulos, o fechamento ajustado pode ser útil, principalmente nos casos em que houve desdobramento de ações. No entanto, para nossos propósitos, excluiremos essas colunas.

Após concluir as etapas preliminares, podemos examinar a estrutura dos dados executando o comando info no quadro de dados. Isso fornecerá informações sobre o número de observações e tipos de dados presentes no quadro de dados, confirmando que todas as colunas são numéricas.

Em seguida, apresentaremos a estratégia de momentum adicionando colunas de média móvel ao quadro de dados. Utilizaremos duas médias móveis, uma rápida (9 dias) e uma lenta (21 dias), para acionar negociações. Especificamente, entraremos em uma negociação quando a média móvel rápida cruzar acima da média móvel lenta, e sairemos ou venderemos quando a média móvel rápida cruzar abaixo da média móvel lenta. É essencial notar que esta estratégia pressupõe que estamos sempre em um comércio, seja longo ou curto.

Para calcular as médias móveis com base no preço de fechamento, usaremos o método de rolagem fornecido pelo Pandas. Este método nos permite especificar o número de dias para a média móvel. Além disso, podemos aplicar diferentes agregadores, se desejado, como desvio padrão ou mediana. Neste caso, vamos nos concentrar apenas na média móvel. Iremos duplicar este processo para as médias móveis rápidas e lentas, resultando em duas colunas adicionais no quadro de dados.

Como as médias móveis estão atrasadas em 9 e 21 dias, respectivamente, precisamos ajustá-las deslocando os dados para frente em um dia usando o método de deslocamento no Pandas.

Depois de calcular as médias móveis, vamos ajustá-las deslocando os dados para frente em um dia usando o método shift no Pandas. Isso garante que as médias móveis do dia atual estejam alinhadas com a ação do preço do dia seguinte.

Agora que ajustamos as colunas de média móvel, podemos gerar sinais de negociação com base no cruzamento das médias móveis rápidas e lentas. Para fazer isso, criaremos uma nova coluna chamada "Sinal" e atribuiremos a ela o valor 1 quando a média móvel rápida estiver acima da média móvel lenta, indicando um sinal de alta, e -1 quando a média móvel rápida estiver abaixo da lenta. média móvel, indicando um sinal de baixa.

Para determinar os pontos de entrada e saída de nossas negociações, adicionaremos outra coluna chamada "Posição". Inicialmente, atribuiremos a ela o valor 0, indicando que não estamos em uma negociação. Quando ocorre um sinal de alta (a média móvel rápida cruza acima da média móvel lenta) e não estamos em uma negociação (Posição = 0), atribuiremos o valor 1 à coluna Posição, indicando uma posição longa. Por outro lado, quando ocorre um sinal de baixa (a média móvel rápida cruza abaixo da média móvel lenta) e não estamos em uma negociação, atribuiremos um valor de -1 à coluna Posição, indicando uma posição curta. Isso garante que entraremos em uma negociação somente quando houver um novo sinal e ainda não estivermos em uma negociação.

Para acompanhar os retornos diários de nossa estratégia de negociação, criaremos outra coluna chamada "Retornos da estratégia". Calcularemos os retornos diários multiplicando a coluna Posição pela variação percentual diária no preço de fechamento. Isso nos dará o retorno que teríamos alcançado se tivéssemos seguido os sinais de negociação.

Por fim, calcularemos os retornos cumulativos de nossa estratégia aplicando o método cumprod à coluna Strategy Returns. Isso nos fornecerá o desempenho geral de nossa estratégia durante o período de tempo especificado.

Neste ponto, podemos visualizar o desempenho de nossa estratégia plotando os retornos acumulados. Usaremos a biblioteca matplotlib para criar um gráfico de linhas que mostre o crescimento dos retornos de nossa estratégia ao longo do tempo.

No gráfico, podemos observar a curva de retornos cumulativos, o que deve nos dar uma ideia da eficácia de nossa estratégia de momentum. Retornos cumulativos positivos indicam lucratividade, enquanto retornos cumulativos negativos indicam perdas.

Lembre-se de que este é um exemplo simplificado de uma estratégia de negociação dinâmica e há muitos fatores a serem considerados ao desenvolver uma estratégia comercial do mundo real, como custos de transação, derrapagem e gerenciamento de risco. É importante testar e validar completamente qualquer estratégia de negociação antes de aplicá-la à negociação no mundo real.

<
Introduction to Algorithmic Trading Using Python - How to Create & Test Trading Algorithm
Introduction to Algorithmic Trading Using Python - How to Create & Test Trading Algorithm
  • 2021.04.12
  • www.youtube.com
#python #algorithmic #trading How to create a Trading Algorithm - Algorithmic Trading Using Pythonhttps://alphabench.com/data/python-algorithm-trading...
 

Como usar o Alpha Vantage Free Real Time Stock API e Python para extrair o tempo de altos e baixos diários


Como usar o Alpha Vantage Free Real Time Stock API e Python para extrair o tempo de altos e baixos diários

Neste vídeo, vamos usar um Jupyter Notebook para explorar a API Alpha Vantage e extrair os preços de negociação altos e baixos de uma ação usando dados de negociação de um minuto. Alpha Vantage é uma das várias APIs disponíveis para obter dados de negociação em tempo real e opera em um modelo freemium. Para começar, precisamos nos inscrever em uma conta gratuita e obter uma chave de API no site do Alpha Vantage.

Usaremos a biblioteca auxiliar do Alpha Vantage chamada "alpha_vantage", que simplifica o processo de fazer chamadas de API. Se você não tiver a biblioteca instalada, poderá fazê-lo executando o comando "pip install alpha_vantage" em sua linha de comando.

Para começar, configuramos nosso ambiente importando as bibliotecas de terceiros necessárias. Feito isso, armazenamos nossa chave de API em uma variável. Se preferir manter sua chave de API privada, você pode armazená-la em um arquivo de texto separado e lê-la em seu notebook. Em seguida, criamos um objeto de série temporal especificando a chave de API e o formato de saída desejado. Nesse caso, optamos por usar a biblioteca pandas, pois ela fornece uma maneira mais fácil de trabalhar com os dados de saída, que estão no formato JSON por padrão.

Para recuperar os dados de negociação, fazemos uma chamada para a API Alpha Vantage usando a função "get_intraday". Esta função permite especificar o símbolo da ação e o intervalo desejado, como um minuto, cinco minutos ou uma hora. Também podemos definir o tamanho da saída, que determina a quantidade de dados históricos que queremos recuperar. Para este vídeo, definimos como "completo", o que nos dá aproximadamente dez dias de dados.

Depois de buscar os dados, podemos examinar os metadados associados a eles acessando o atributo "meta". O objeto meta fornece informações sobre os dados baixados, como o intervalo, a data dos dados e as colunas que eles contêm. Podemos então inspecionar os próprios dados chamando o método "info", que exibe os nomes das colunas e o índice de data e hora.

Para obter uma representação visual dos dados, podemos plotar uma das colunas, como os preços de fechamento. No entanto, os nomes das colunas retornados pelo Alpha Vantage podem não ser convenientes para trabalhar, portanto, podemos renomeá-los para nomes mais significativos.

Em seguida, extraímos os dados correspondentes ao horário regular de negociação, excluindo as negociações após o expediente, que podem introduzir distorções. Criamos uma nova variável chamada "mercado" aplicando um filtro baseado em tempo aos dados. O Pandas fornece uma função conveniente, "between_time", que nos permite especificar os horários de início e término do mercado.

Neste ponto, estamos prontos para extrair as datas e horas dos máximos e mínimos. Nós fazemos isso de duas maneiras. Primeiro, agrupamos os dados por data de negociação e usamos o método "ag" para calcular os valores mínimo e máximo para as colunas baixa e alta, respectivamente. Essa abordagem nos dá os valores mínimos e máximos reais para cada dia de negociação.

Em segundo lugar, adotamos uma abordagem diferente e nos concentramos no minuto em que a baixa e a alta ocorreram. Usamos a função "loc" para localizar as linhas específicas onde ocorrem as mínimas e máximas em cada dia de negociação. Em seguida, extraímos o índice (data e hora) para os valores mínimo e máximo, respectivamente. Isso nos permite identificar o minuto exato em que os preços mínimo e máximo foram atingidos.

Ao examinar os resultados, podemos observar padrões interessantes, como o tempo de mínimos e máximos ao longo dos dias de negociação.

Este vídeo fornece uma visão geral básica do uso da API Alpha Vantage para recuperar dados de negociação minuto a minuto e extrair os altos e baixos para análise. Ele serve como ponto de partida para explorar e utilizar a API Alpha Vantage em seus próprios projetos.

Em conclusão, este tutorial em vídeo demonstra como usar a API Alpha Vantage e a biblioteca auxiliar Alpha Vantage em um Jupyter Notebook para extrair preços de negociação altos e baixos para uma ação usando dados de negociação de um minuto. Seguindo as etapas descritas no vídeo, você pode recuperar dados de negociação em tempo real, analisá-los usando pandas e obter informações sobre o tempo de máximas e mínimas em um determinado dia de negociação.

É importante observar que a API do Alpha Vantage oferece várias funcionalidades e opções de dados além do que foi abordado neste vídeo. Você pode explorar diferentes intervalos, como dados de cinco minutos ou uma hora, bem como diferentes tipos de dados, incluindo dados diários ou históricos. A API também fornece recursos adicionais, como indicadores técnicos e dados fundamentais.

Para aprimorar ainda mais sua análise, você pode incorporar técnicas adicionais de manipulação e visualização de dados. Por exemplo, você pode calcular métricas adicionais com base nos preços máximos e mínimos extraídos, realizar análises estatísticas ou criar visualizações interativas para apresentar os dados de maneira mais intuitiva.

Lembre-se de consultar a documentação do Alpha Vantage para obter informações detalhadas sobre chamadas, parâmetros e opções de API disponíveis. Além disso, certifique-se de cumprir os termos e condições da API Alpha Vantage, incluindo quaisquer limitações ou restrições de uso associadas à sua conta gratuita.

Ao aproveitar a API Alpha Vantage e combiná-la com os recursos do Jupyter Notebook e da biblioteca pandas, você pode desbloquear uma riqueza de dados comerciais e explorar várias estratégias e insights para apoiar suas decisões de investimento e análises quantitativas.

How to Use Alpha Vantage Free Real Time Stock API & Python to Extract Time of Daily Highs and Lows
How to Use Alpha Vantage Free Real Time Stock API & Python to Extract Time of Daily Highs and Lows
  • 2021.01.11
  • www.youtube.com
#alphavantage #pythonUsing the free API to download minute by minute trading data and extract daily highs and lowsTutorial demonstrates using downloaded d...
 

Introdução aos gráficos de dispersão com matplotlib Python para ciência de dados


Introdução aos gráficos de dispersão com matplotlib Python para ciência de dados

Este é o segundo vídeo da minha série introdutória ao Matplotlib. Neste vídeo, vamos nos concentrar em gráficos de dispersão. Os gráficos de dispersão são uma ajuda visual que nos ajuda a determinar a força e a natureza de uma relação entre duas variáveis. Abordaremos os fundamentos da criação de gráficos de dispersão, incluindo a definição de temas, a adição de um mapa de cores, a criação de um gráfico de bolhas e a adição de dimensionalidade.

Para começar, vamos configurar nosso ambiente importando as bibliotecas necessárias. Importaremos NumPy, Matplotlib e o leitor de dados Pandas. O leitor de dados Pandas nos permitirá baixar dados reais para trabalhar. Nesse caso, faremos o download de três a quatro meses de dados para Google, Amazon e ETF de ouro.

Assim que tivermos os dados, podemos dar uma olhada nas primeiras linhas para nos familiarizarmos com o conjunto de dados. Podemos ver que os dados começam em 1º de agosto e incluem os preços de fechamento.

Agora, vamos criar um gráfico de dispersão básico usando o método de dispersão do Matplotlib. Podemos escolher duas colunas do conjunto de dados e plotá-las. No entanto, esse gráfico de dispersão básico não fornece muitas informações sobre a relação entre as variáveis.

Para investigar mais, podemos calcular a taxa instantânea de retorno para cada título. Isso nos dará uma melhor compreensão de como as mudanças no preço se relacionam entre si. Removemos o preço absoluto e o reduzimos a uma variação percentual. Olhando para as primeiras observações, podemos ver que todos os títulos caíram, com Amazon e Google experimentando uma queda de mais de 1%, enquanto o ouro permaneceu relativamente inalterado.

Em seguida, removemos a primeira observação, que não é um número, e traçamos um gráfico de dispersão para ver se a alteração no Google é relevante para a alteração na Amazon. Este gráfico de dispersão conta uma história diferente da anterior. Podemos observar uma tendência geral de que, à medida que o Google sobe, a Amazon também sobe, indicando uma forte relação positiva entre as duas variáveis.

Agora que temos o gráfico de dispersão da linha de base, podemos adicionar alguns recursos para aprimorá-lo. Primeiro, vamos alterar o tamanho do gráfico para torná-lo mais visível. Podemos fazer isso importando o módulo de parâmetros do Matplotlib.

Também podemos adicionar apelo visual ao gráfico de dispersão adicionando linhas-guia para mostrar o movimento de pontos em diferentes direções. Ao traçar linhas através do zero nos eixos X e Y, podemos identificar rapidamente quando os pontos estão se movendo juntos, se afastando ou em direções opostas.

Para melhorar a visibilidade das linhas-guia, podemos definir sua cor para um tom de cinza usando a notação RGB. Além disso, podemos definir o estilo de linha como tracejado para obter um efeito visual diferente.

Para aprimorar ainda mais o gráfico de dispersão, podemos adicionar um esquema de cores. Embora não tenhamos uma terceira variável para representar, ainda podemos adicionar um mapa de cores ao gráfico de dispersão. Modificamos o código do gráfico de dispersão para incluir a cor dos retornos da Amazon e escolhemos o mapa de cores espectrais. Este mapa de cores atribui cores diferentes aos pontos com base nos valores dos retornos, com o vermelho representando os valores mais negativos e o violeta representando os valores mais positivos.

No entanto, alguns pontos na faixa intermediária podem ser difíceis de ver devido ao gradiente de cores. Para resolver isso, podemos alterar a cor da borda dos pontos para preto, tornando-os mais distintos.

Para fornecer informações adicionais sobre as gradações de cores, podemos adicionar uma barra de cores. A barra de cores plota uma legenda que indica o mapeamento de cores com base nos retornos.

Além disso, podemos melhorar a aparência geral do enredo aplicando um tema. Podemos usar Seaborn como um tema, que é um wrapper em torno do Matplotlib que fornece um estilo visualmente atraente. Este tema altera o plano de fundo e adiciona linhas de grade sem prejudicar os dados plotados.

Por fim, podemos ajustar os limites do gráfico para centralizar as linhas guia.

Por fim, podemos ajustar os limites do gráfico para centralizar as linhas-guia e tornar o gráfico de dispersão mais equilibrado visualmente. Podemos definir os limites do eixo x e do eixo y para os valores mínimo e máximo dos retornos para garantir que as linhas guia se cruzem no centro do gráfico. Esse ajuste nos ajuda a visualizar melhor o movimento dos pontos em relação às linhas guias.

Agora que fizemos esses aprimoramentos, nosso gráfico de dispersão é mais informativo e visualmente atraente. Podemos ver claramente a relação entre os retornos do Google e da Amazon, bem como a distribuição dos retornos com base no mapa de cores. As linhas-guia fornecem uma referência visual para interpretar o movimento de pontos em diferentes direções.

Além dos gráficos de dispersão básicos, também podemos criar um gráfico de bolhas usando o Matplotlib. Um gráfico de bolhas adiciona uma terceira dimensão ao gráfico variando o tamanho dos marcadores com base em uma terceira variável. No nosso caso, podemos usar o volume de cada título como terceira variável.

Para criar um gráfico de bolhas, modificamos nosso código de gráfico de dispersão especificando o parâmetro de tamanho e passando o volume de cada título como o tamanho do marcador. Isso cria círculos com tamanhos proporcionais ao volume de cada título, permitindo visualizar a relação entre retornos, volume e movimentação dos pontos.

Ao adicionar essa terceira dimensão ao gráfico de dispersão, obtemos uma compreensão mais profunda da relação entre as variáveis. Podemos ver que os círculos maiores representam volumes de negociação mais altos, e o movimento dos pontos pode ser correlacionado com retornos e volume.

Em conclusão, gráficos de dispersão e gráficos de bolhas são ferramentas de visualização poderosas que nos ajudam a entender a relação entre as variáveis. Podemos usá-los para analisar e interpretar dados, identificar padrões e tendências e tomar decisões informadas. Com o Matplotlib, podemos criar gráficos de dispersão personalizados e visualmente atraentes e aprimorá-los com vários recursos, como mapas de cores, linhas-guia e temas.

Introduction to Scatter Plots with matplotlib Python for Data Science
Introduction to Scatter Plots with matplotlib Python for Data Science
  • 2019.11.18
  • www.youtube.com
#scatterplot #matplotlib #python‡‡‡Learn how to use matplotlib with examples of scatter plots Please SUBSCRIBE:https://www.youtube.com/subscription_cente...
 

Introdução à negociação algorítmica com Python: crie um algoritmo de negociação de reversão à média


Introdução à negociação algorítmica com Python: crie um algoritmo de negociação de reversão à média

Neste vídeo, exploraremos um algoritmo de negociação de reversão à média apenas para fins educacionais. É importante observar que este vídeo não fornece conselhos de investimento. O algoritmo será implementado usando um Jupyter Notebook, e um link para download do notebook será fornecido na descrição do vídeo. Este vídeo serve como um companheiro para a estratégia de negociação de impulso discutida anteriormente, e um link para esse vídeo também será fornecido.

A estratégia de negociação de reversão à média pressupõe que um título voltará a um valor médio sempre que se desviar muito dele. Existem várias maneiras de abordar essa estratégia, como usar regressão linear ou uma média móvel. A determinação de "muito longe" e a medida usada podem variar. Algumas pessoas usam um valor absoluto em dólares, enquanto neste vídeo usaremos percentis. Além disso, uma média móvel será usada para determinar o valor médio.

Para começar, importamos as bibliotecas necessárias, incluindo Pandas para manipulação de dados, o Pandas DataReader para baixar dados ao vivo (outros serviços também podem ser usados), NumPy para operações numéricas, Matplotlib para gráficos e Seaborn para estilizar os gráficos. As bibliotecas necessárias são importadas executando a respectiva célula de código.

Em seguida, obtemos os dados para análise. Embora um bom algoritmo de negociação deva ser generalizável para vários títulos, este vídeo se concentra em um único título: o ouro ETF. O Pandas DataReader é usado para baixar aproximadamente cinco anos de dados para o ouro ETF. Como apenas o preço de fechamento interessa, limitamos o download a essa coluna. Depois que os dados são obtidos, examinamos as primeiras linhas para garantir sua recuperação adequada.

Depois de obter os dados, adicionamos algumas colunas ao quadro de dados. A primeira coluna adicionada é para a média móvel. Definimos uma variável para definir o período da média móvel, que pode ser facilmente manipulada. A taxa instantânea de retorno do fechamento do dia anterior é calculada e armazenada em uma nova coluna. Outra coluna, denominada "média móvel", é criada para rastrear o valor médio com base no preço de fechamento usando uma média de 21 dias (ou um mês de negociação). Além disso, uma coluna "ratio" é adicionada, representando a divisão do preço de fechamento pela média móvel. Esta coluna ajuda a determinar quando o preço está muito longe da média.

As estatísticas descritivas são calculadas para a coluna "proporção" para obter informações sobre a distribuição de dados. Como esperado, os preços geralmente permanecem próximos ao valor médio. Os percentis 25 e 75 definem os limites inferior e superior dos dados, enquanto os valores mínimo e máximo indicam desvios extremos da média. Pontos de preço adicionais são selecionados para análise, como 5º, 10º, 90º e 95º percentis, para determinar desvios significativos da média. A função numpy percentil é usada para calcular os respectivos valores com base na coluna "gold ratio". Antes de executar o cálculo, os valores ausentes são descartados.

Para visualizar o movimento da coluna de razão em torno da média, um gráfico é gerado. Os valores irrelevantes são descartados e a coluna de proporção é plotada com uma legenda. Linhas horizontais são adicionadas para representar as quebras de preço nos percentis selecionados (5º, 50º e 95º). Essa representação visual ajuda a observar o movimento cíclico da coluna de razão em torno da média, indicando uma tendência de correção de desvios.

Em seguida, limites específicos são definidos para determinar quando ir curto ou longo. A posição curta é definida como o 95º percentil, enquanto a posição longa é definida como o 5º percentil. Uma nova coluna é adicionada ao quadro de dados, indicando se a posição é longa ou curta. A função "where" do Numpy é usada para atribuir valores com base na coluna de proporção de ouro. Um valor de -1 é atribuído quando a relação é menor que o limite curto, indicando uma posição curta, e um valor de 1 é atribuído quando a relação é maior que o limite longo, indicando uma posição longa. Finalmente, um gráfico é gerado para visualizar as posições. O gráfico mostra a coluna de proporção e destaca as posições longas e curtas com cores diferentes.

Depois de identificar as posições, o próximo passo é calcular os retornos diários. Isso é feito multiplicando a coluna da posição pela coluna da taxa diária de retorno, que dá o retorno para cada dia com base na posição mantida. Uma nova coluna denominada "estratégia" é adicionada ao quadro de dados para armazenar os retornos diários.

Para avaliar o desempenho da estratégia, são calculados os retornos cumulativos. Os retornos cumulativos são obtidos tomando o produto cumulativo dos retornos da estratégia, adicionando 1 ao resultado e multiplicando por 100 para representação percentual. Um gráfico é gerado para visualizar os retornos acumulados ao longo do tempo.

Em seguida, métricas de desempenho adicionais são calculadas para avaliar o desempenho da estratégia. O retorno total, o retorno médio diário, o desvio padrão dos retornos diários, o índice de Sharpe e o rebaixamento máximo são calculados. Essas métricas fornecem informações sobre a lucratividade, o risco e o retorno ajustado ao risco da estratégia. Os valores são impressos para fácil referência.

Finalmente, um gráfico é gerado para comparar os retornos cumulativos da estratégia de reversão à média com a estratégia de comprar e manter. A estratégia buy-and-hold pressupõe manter o ativo por todo o período sem nenhuma decisão de negociação. Este gráfico permite uma comparação visual das duas estratégias.

Em resumo, este vídeo demonstra a implementação de uma estratégia de negociação de reversão à média usando Python e Jupyter Notebook. Abrange a recuperação de dados, cálculo de médias móveis, determinação de limites, visualização de posições, cálculo de retornos diários, avaliação de métricas de desempenho e comparação com uma estratégia de comprar e manter. O Jupyter Notebook que acompanha fornece um guia passo a passo para recriar a estratégia e explorar ainda mais sua implementação. Lembre-se de que este vídeo é apenas para fins educacionais e não fornece conselhos de investimento.

Introduction to Algorithmic Trading with Python: Create a Mean Reverting Trading Algorithm
Introduction to Algorithmic Trading with Python: Create a Mean Reverting Trading Algorithm
  • 2021.05.14
  • www.youtube.com
#python #stocktrading #algorithmHow to create a Trading Algorithm - Algorithmic Trading Using Pythonhttps://alphabench.com/data/python-algorithm-trading...
 

Pandas Python || Médias móveis e estatísticas de janela contínua para preços de ações


Pandas Python || Médias móveis e estatísticas de janela contínua para preços de ações

Neste tutorial em vídeo, demonstrarei como usar o método de rolagem do pandas, que automatiza cálculos para médias móveis e desvios padrão rolantes. O método de rolagem é uma ferramenta poderosa para executar agregações de janela de rolagem e pode ser facilmente implementado usando pandas versão 0.21. Fornecerei um link para o Jupyter Notebook usado neste tutorial para referência.

Para começar, precisamos configurar o ambiente. Importamos a biblioteca numpy, pois os pandas dependem dela. Embora não usemos diretamente o numpy extensivamente, é necessário que os pandas funcionem corretamente. Além disso, importamos o leitor de dados pandas para buscar dados e matplotlib para fins de plotagem. Ao usar a função mágica, garantimos que os gráficos sejam exibidos no Jupyter Notebook.

Em seguida, adquirimos os dados para análise. Vou baixar os dados para o ouro ETF (Exchange-Traded Fund) do Yahoo Finance. Para especificar o prazo desejado, defino a data de início para o dia da eleição presidencial, aproximadamente um ano atrás. Para confirmar que os dados foram buscados corretamente, exibi as primeiras linhas do conjunto de dados. Como estamos interessados principalmente nos preços de fechamento desta demonstração, removo as outras colunas. Além disso, como o quadro de dados que é baixado é uma série de séries e carece de certas propriedades de que preciso, eu o lanço como um quadro de dados.

Agora estamos prontos para demonstrar o método de rolagem. Adicionarei uma nova coluna ao quadro de dados chamada "MA9" para representar a média móvel de nove dias. Usando o método de rolagem, calculo a média para o número especificado de períodos ou linhas. Repito esse processo por uma janela mais longa de 21 dias. Essas duas novas colunas representam as médias móveis que calculamos. Para visualizar os dados, ploto os preços de fechamento, a média móvel de nove dias e a média móvel de 21 dias.

Às vezes é útil atrasar as médias móveis. Ao adicionar o parâmetro "center=True" ao usar o método de rolagem, podemos deslocar a linha média móvel para trás em dez dias para a janela de 21 dias. Isso cria uma linha defasada que se alinha com os dados correspondentes. Podemos observar essa mudança no gráfico plotado.

Devo observar que, ao calcular médias móveis, a observação atual é incluída na média. Se você quiser usá-lo como uma ferramenta de previsão tradicional, pode querer mudar a média móvel para frente. Usando o método shift e especificando um número inteiro positivo, podemos deslocar a média móvel para frente pelo número desejado de períodos. Isso garante que a observação atual não seja incluída na média.

Além disso, o método de rolagem oferece outros parâmetros, como a capacidade de definir qualquer valor de atraso ou até mesmo deslocar a média móvel para o primeiro dia usando um número inteiro negativo.

Além disso, demonstro como calcular a volatilidade histórica, frequentemente usada na precificação de opções. Para fazer isso, precisamos adicionar outra coluna ao quadro de dados. Usando numpy, calculo os retornos logarítmicos dividindo os preços de fechamento pelo fechamento do dia anterior. A plotagem desses retornos exibe um gráfico com ruído centrado em zero.

Para obter a volatilidade histórica, empregamos um desvio padrão móvel com uma janela de 21 dias, pois normalmente há 21 dias de negociação em um mês. Esse cálculo inclui a vigésima primeira observação, portanto, para refletir com precisão a volatilidade, avançamos o resultado em um dia. Isso evita insinuar que temos conhecimento futuro. O gráfico da volatilidade fornece uma representação mais clara dos dados e revela períodos de alta e baixa volatilidade nos preços do ouro.

Em um vídeo futuro, abordarei técnicas adicionais de análise de preços usando pandas. Espero que este tutorial tenha fornecido uma introdução útil ao uso do método de rolagem em pandas para médias móveis e desvios padrão de rolagem.

Python Pandas || Moving Averages and Rolling Window Statistics for Stock Prices
Python Pandas || Moving Averages and Rolling Window Statistics for Stock Prices
  • 2017.12.21
  • www.youtube.com
#pandas #python #rollingPlease SUBSCRIBE:https://www.youtube.com/subscription_center?add_user=mjmacartyTry my Hands-on Python for Finance course on Udemy...
 

Análise quantitativa de preços de ações com Python, pandas, NumPy matplotlib e SciPy


Análise quantitativa de preços de ações com Python, pandas, NumPy matplotlib e SciPy

Neste vídeo, o palestrante apresenta métodos analíticos quantitativos para analisar as mudanças nos preços das ações. O objetivo principal é determinar se a variação do preço das ações segue uma distribuição normal, identificar qualquer viés direcional na variação diária e avaliar se o movimento do preço pode ser descrito como um passeio aleatório. O palestrante menciona o uso de um notebook Jupyter e fornece um link para baixar o notebook.

O palestrante começa configurando o ambiente e importando bibliotecas de análise de dados, como NumPy, Pandas e Matplotlib. Eles também mencionam o uso da biblioteca Pandas Data Reader para baixar dados ao vivo da API do Yahoo. O orador então recupera os dados de estoque da Amazon, especificando as datas de início e término, cujo padrão é os últimos cinco anos de dados de preços.

Após obter os dados, o locutor examina as primeiras linhas para verificar as informações disponíveis. Eles apontam as colunas que representam os preços de alta, baixa, abertura, fechamento, volume e fechamento ajustado. Como estão interessados principalmente no preço de fechamento, eles discutem a opção de usar a coluna "fechamento" ou "fechamento ajustado", sendo esta última útil para ações que sofreram desdobramentos. Nesse caso, como a última divisão da Amazon foi em 1999, a escolha entre as duas colunas não importa significativamente.

Em seguida, o palestrante extrai a coluna do preço de fechamento em uma variável separada e calcula a taxa de retorno instantânea usando o logaritmo da diferença entre preços de fechamento consecutivos. Eles exibem os valores resultantes, observando que a primeira linha contém um valor NaN (não um número) porque o retorno não pode ser calculado para o primeiro dia.

O palestrante então visualiza a mudança de preço diária plotando os dados como um gráfico de linha usando o Matplotlib. Eles observam que a mudança de preço flutua consideravelmente e se concentra em torno de zero, com grandes eventos ocasionais ocorrendo de forma imprevisível ao longo do período de cinco anos. Para analisar um período de tempo específico, eles plotam os dados do ano anterior, que mostram menos densidade, mas mantêm o mesmo padrão geral.

Estatísticas descritivas para o movimento de preços são obtidas usando a função "descrever" do Pandas. O palestrante menciona a possibilidade de obter as estatísticas individualmente ou usando outras ferramentas, mas considera o método Pandas suficiente para seus propósitos. Eles também apresentam a biblioteca SciPy e demonstram outra maneira de calcular estatísticas descritivas usando a função "descrever" das estatísticas SciPy. Eles mencionam que alguns valores aparecem como "NaN" devido ao tratamento de valores ausentes em NumPy e SciPy.

Para tornar os números mais interpretáveis, o locutor multiplica os valores por 100 para convertê-los em porcentagens. Essa alteração melhora a legibilidade da saída sem alterar os dados.

Seguindo em frente, o palestrante compara a distribuição da variação diária do preço com uma amostra extraída de uma distribuição normal. Eles plotam um histograma dos dados de retorno da Amazônia e observam que ele mostra uma atividade significativa em torno do centro, com retornos se espalhando para a esquerda e para a direita, indicando caudas mais grossas em comparação com uma distribuição normal. Em seguida, eles geram uma amostra do mesmo tamanho a partir de uma distribuição normal usando o módulo de estatísticas SciPy e a plotam como um histograma ao lado dos dados de retorno da Amazon. A amostra de distribuição normal parece mais atarracada e mais uniformemente distribuída do que os dados da Amazon.

Em seguida, o palestrante realiza um teste estatístico, especificamente um teste de curtose, tanto na variável normal quanto nos retornos da Amazon. O teste de curtose examina se a distribuição pode ser considerada normal, com a hipótese nula assumindo uma distribuição normal. A estatística do teste e o valor-p são obtidos, com o palestrante explicando a interpretação dos resultados. Para a variável normal, a estatística de teste é ligeiramente negativa, indicando nenhuma evidência forte contra a hipótese nula. Em contraste, para os retornos da Amazon, a estatística de teste é muito maior, sugerindo uma rejeição da hipótese nula e concluindo que a mudança de preço da Amazon não pode ser descrita como normalmente distribuída.

Para visualizar ainda mais a diferença, o falante modifica o histograma exibindo proporções em vez de frequências e como ele se ajusta à distribuição. Para fazer isso, farei algumas alterações no histograma inicial. Em vez de exibir frequências, exibirei proporções. Dessa forma, posso sobrepor uma curva normal teórica sobre o histograma e ver como ela se ajusta.

Vamos traçar o histograma com a curva normal. Vou usar o módulo norma de scipy.stats para gerar a curva normal e, em seguida, vou plotá-la no mesmo gráfico do histograma.

import matplotlib.pyplot as plt

# Plot histogram
plt.hist(amazon_return, bins= 50 , density=True, alpha= 0.5 , label= 'Amazon Returns' )

# Generate normal curve
x = np.linspace(amazon_return.min(), amazon_return.max(), 100 )
normal_curve = norm.pdf(x, mu, sigma)

# Plot normal curve
plt.plot(x, normal_curve, 'r-' , label= 'Normal Distribution' )

# Add labels and legend
plt.xlabel( 'Daily Price Change' )
plt.ylabel( 'Proportion' )
plt.title( 'Histogram of Amazon Returns with Normal Distribution' )
plt.legend()

# Show the plot
plt.show()
Agora, vamos dar uma olhada no enredo. Temos o histograma dos retornos da Amazônia, bem como a sobreposição da curva de distribuição normal teórica. Essa comparação visual nos permite avaliar o quão bem as mudanças diárias de preços se alinham com uma distribuição normal.

Ao observar o gráfico, podemos ver que o histograma dos retornos da Amazon se desvia significativamente da forma de uma distribuição normal. A distribuição tem caudas mais grossas, indicando uma maior ocorrência de movimentos extremos de preços em comparação com o que esperaríamos de uma distribuição normal. Isso se alinha com nossa análise anterior de curtose, que indicava excesso de curtose nos dados de retorno da Amazônia.

Em conclusão, com base nos métodos analíticos quantitativos que empregamos, podemos determinar que a variação do preço das ações da Amazon não pode ser descrita como um fenômeno normalmente distribuído. Os dados exibem características como assimetria e excesso de curtose, indicando desvios de uma distribuição normal. As variações diárias de preços são mais agrupadas em torno de zero, com ocorrência frequente de movimentos maiores e imprevisíveis. Essas informações são valiosas para entender a natureza do comportamento do preço das ações da Amazon e podem ser úteis no desenvolvimento de estratégias de investimento ou abordagens de gerenciamento de risco.

Quantitative Stock Price Analysis with Python, pandas, NumPy matplotlib & SciPy
Quantitative Stock Price Analysis with Python, pandas, NumPy matplotlib & SciPy
  • 2021.06.07
  • www.youtube.com
#pythonprogramming #Stock #DataAnalysishttps://alphabench.com/data/pandas-quantitative-analysis-tutorial.html✅ Please SUBSCRIBE:https://www.youtube...
 

Técnicas de modelo de regressão linear com Python, NumPy, pandas e Seaborn


Técnicas de modelo de regressão linear com Python, NumPy, pandas e Seaborn

Neste vídeo, exploraremos algumas técnicas simples de regressão em Python. Existem várias ferramentas disponíveis para implementar a regressão em Python, mas vamos nos concentrar em algumas delas, especificamente usando NumPy. Observe que este tutorial não pretende ser exaustivo e não executaremos nenhum teste estatístico. Simplesmente ajustaremos uma linha e visualizaremos a saída.

Você pode baixar o notebook no link fornecido na descrição do vídeo no GitHub para acompanhar. Vamos começar configurando nosso ambiente e importando as bibliotecas necessárias. Estaremos usando NumPy, pandas, Yahoo Finance API para buscar dados ao vivo, matplotlib para visualização e seaborn para aplicar um tema aos nossos gráficos.

Em seguida, precisamos recuperar os dados. Obteremos dados do Google e do S&P 500 ETF, voltando cerca de um ano. Usaremos o leitor de dados pandas e a API do Yahoo Finance para essa finalidade. Assim que tivermos os dados, podemos dar uma olhada rápida neles. Como estamos interessados apenas nos preços de "fechamento" para nossa análise, ajustaremos os dados de acordo.

Para realizar a regressão, calcularemos a taxa instantânea de retornos do Google e do S&P 500 ETF. Depois de descartar quaisquer valores inválidos, estamos prontos para calcular a correlação entre as duas variáveis. Descobrimos que eles estão fortemente correlacionados, mas não tentaremos determinar a causalidade nesta análise. Em vez disso, consideraremos o S&P 500 como a variável independente.

Para facilitar a visualização, amostraremos um subconjunto menor de pontos de dados. Nesse caso, amostramos aleatoriamente 60 retornos e observamos a correlação, que permanece semelhante ao conjunto de dados geral. Em seguida, visualizamos os dados traçando um gráfico de dispersão com o S&P 500 no eixo x e o Google no eixo y.

Passando para a regressão, ajustaremos um modelo linear usando a função polyfit do NumPy. Passamos os dados da amostra, com o S&P 500 como variável independente e o Google como variável dependente, junto com o grau de nosso polinômio (1 para regressão linear simples). Isso nos dá a inclinação e a interceptação y da linha de melhor ajuste, que pode ser interpretada como o valor beta.

Para traçar a linha de tendência, usamos a função polyval do NumPy, passando a regressão e a variável independente. Podemos sobrepor essa linha de tendência no gráfico de dispersão. Além disso, a regressão pode ser usada como um indicador técnico para prever preços futuros. Neste exemplo, regredimos os preços de fechamento do S&P 500 em relação ao tempo.

Depois de obter os coeficientes de regressão, podemos calcular os valores previstos para pontos de tempo futuros. Traçamos os dados reais em relação ao tempo, adicionamos a linha de tendência e criamos um canal adicionando e subtraindo um desvio padrão do modelo linear. Este canal fornece uma representação visual do intervalo de confiança da previsão.

Por fim, demonstramos como fazer previsões para pontos de tempo específicos usando o modelo de regressão. Ao criar um objeto poly1d com os coeficientes de regressão, podemos inserir um valor (representando um ponto no tempo futuro) e obter o valor previsto. Também mencionamos brevemente o regplot de Seaborn, que fornece uma maneira alternativa de visualizar o gráfico de dispersão com uma linha de tendência e um intervalo de confiança.

Seguindo este tutorial, você pode começar a usar a regressão linear em Python e explorar várias técnicas de análise e previsão.

Agora que abordamos os fundamentos da regressão linear em Python, vamos explorar algumas técnicas e conceitos adicionais.

Um aspecto importante da análise de regressão é avaliar a qualidade do ajuste do modelo. Em outras palavras, quão bem a linha de regressão linear representa a relação entre as variáveis? Existem várias medidas estatísticas que podem ser usadas para avaliar o ajuste, como o valor de R-quadrado, que indica a proporção da variância na variável dependente que pode ser explicada pela(s) variável(is) independente(s).

Para calcular o valor de R ao quadrado, podemos usar a biblioteca statsmodels em Python. Importaremos o módulo necessário e ajustaremos o modelo de regressão linear aos nossos dados. Então, podemos extrair o valor R-quadrado usando o atributo rsquared do modelo.

Vamos demonstrar isso com um exemplo. Suponha que temos um conjunto de dados com duas variáveis, X e Y, e queremos ajustar um modelo de regressão linear para prever Y com base em X. Usaremos a função sm.OLS (Ordinary Least Squares) da biblioteca statsmodels para realizar a regressão análise.

Primeiro, importamos os módulos necessários:

import statsmodels.api as sm
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
Em seguida, carregamos os dados em um DataFrame pandas e extraímos as variáveis X e Y:

data = pd.read_csv( 'data.csv' )
X = data[ 'X' ]
Y = data[ 'Y' ]
Em seguida, adicionamos um termo constante à variável independente X. Isso é necessário para que a biblioteca statsmodels inclua o termo de interceptação no modelo de regressão:

X = sm.add_constant(X)
Agora, podemos ajustar o modelo de regressão linear e calcular o valor de R ao quadrado:

model = sm.OLS(Y, X).fit()
r_squared = model.rsquared
Finalmente, podemos imprimir o valor R-quadrado para avaliar a qualidade do ajuste:

print( "R-squared:" , r_squared)
O valor R-quadrado varia de 0 a 1, com 1 indicando um ajuste perfeito. Geralmente, um valor R-quadrado mais alto sugere um melhor ajuste do modelo aos dados.

Além do valor de R ao quadrado, também é importante examinar os gráficos residuais para verificar quaisquer padrões ou tendências que possam indicar violações das suposições da regressão linear. Resíduos são as diferenças entre os valores observados e previstos da variável dependente. Um bom modelo de regressão linear deve ter resíduos aleatórios e uniformemente distribuídos em torno de zero.

Para visualizar os resíduos, podemos traçar um gráfico de dispersão dos valores previstos em relação aos resíduos. Se o gráfico mostrar um padrão ou qualquer desvio sistemático da aleatoriedade, isso sugere que o modelo de regressão linear pode não ser apropriado para os dados.

Para criar o gráfico residual, podemos usar a biblioteca matplotlib em Python:

predicted_values = model.predict(X)
residuals = Y - predicted_values

plt.scatter(predicted_values, residuals)
plt.axhline(y= 0 , color= 'r' , linestyle= '-' )
plt.xlabel( 'Predicted Values' )
plt.ylabel( 'Residuals' )
plt.title( 'Residual Plot' )
plt.show()
O gráfico de dispersão dos valores previstos em relação aos resíduos deve mostrar um padrão semelhante a uma nuvem sem estrutura ou tendência clara. Se observarmos quaisquer padrões distintos, como uma forma curva ou aumento/diminuição do spread, isso sugere que os pressupostos da regressão linear podem não ser válidos.

Em conclusão, a regressão linear é uma técnica poderosa e amplamente utilizada para modelar a relação entre variáveis. Ao ajustar uma linha de regressão aos dados, podemos fazer previsões e obter informações sobre a variável dependente com base nas variáveis independentes. É importante avaliar a qualidade do ajuste usando medidas como o valor de R-quadrado e verificar os gráficos residuais para avaliar a validade do modelo de regressão.

Linear Regression Model Techniques with Python, NumPy, pandas and Seaborn
Linear Regression Model Techniques with Python, NumPy, pandas and Seaborn
  • 2021.07.05
  • www.youtube.com
#Python #Regression #NumPyhttps://alphabench.com/data/python-linear-regression.html✅ Please SUBSCRIBE:https://www.youtube.com/subscription_center?add...