Building & Deploying a Neural Network for Trading - Blankly Webinar
Criação de Arrays e Inicialização da Rede Neural
Visão Geral da Seção: Nesta seção, o palestrante explica como criar arrays usando a biblioteca numpy e por que é conveniente usá-los para manipulação de dados. Ele também discute a importância da inicialização da rede neural.
Criação de Arrays
- O uso de arrays numpy é conveniente para manipulação e processamento de dados.
- As técnicas de álgebra linear podem ser aplicadas aos arrays numpy, tornando as operações mais rápidas do que com listas padrão.
Inicialização da Rede Neural
- A estratégia Blankly funciona criando uma estratégia e adicionando eventos de preço a ela com certas inicializações.
- Para que o evento de preço funcione corretamente, é necessário criar e treinar uma rede neural para fornecer informações sobre o que fazer em cada ponto dos dados.
- Os pacotes utilizados na criação da rede neural são PyTorch e NumPy.
Executando o código
Visão geral da seção: Nesta seção, o palestrante explica como executar o código e instalar as bibliotecas necessárias.
Instalando bibliotecas
- Para obter os dados, é necessário baixar um arquivo JSON em branco e um arquivo de requisitos de símbolo.
- É preciso instalar algumas bibliotecas usando pip install, incluindo numpy e pytorch.
- As bibliotecas necessárias podem ser instaladas automaticamente a partir do requirements.txt.
Importando indicadores
- Os indicadores são importados para o código. O RSI é usado como exemplo.
- PyTorch é a biblioteca usada para construir o modelo.
Construindo o modelo
- O modelo é construído usando os dados de preços e os indicadores importados anteriormente.
- Depois que todos esses passos são concluídos, todos os pontos de preço no intervalo serão obtidos e será possível entrar na fase real de construção do modelo.
Construindo um modelo
Visão geral da seção: Nesta seção, o palestrante fala sobre a construção de um modelo e a importância do processamento de dados antes de começar.
Definindo variáveis
- O objetivo é definir as variáveis para processar os dados antes de começar.
- A ideia por trás da rede neural é combinar informações em uma tomada de decisão lógica.
- Os parâmetros devem ser atualizados toda vez que ocorrer uma mudança.
- A partir daqui, eles começam a trabalhar na engenharia de recursos real.
Engenharia de recursos
- O objetivo é fornecer ao modelo indicadores diferentes para ajudá-lo a tomar decisões melhores.
- Eles usarão RSI, MACD, volume e preço como indicadores.
- É importante ter variáveis escalonadas para que o modelo possa combiná-las adequadamente.
- Você precisa treinar redes neurais em um conjunto anterior de dados discretos.
Técnica "Sliding Windows"
- Eles usam uma técnica chamada "sliding windows" para gerar mais pontos de dados e evitar overfitting.
- O objetivo é prever o próximo nível fino e os resultados dos próximos dias.
- Eles terão uma janela total de oito dias e a dividirão em etapas para obter cinco dias.
Transformando dados
- Eles farão uma transformação nos dados de preços para gerar mais pontos de dados.
- O objetivo é mudar os preços brutos para aumentos percentuais.
- Isso evita overfitting aos dados específicos do dia.
Título Descritivo
Visão geral da seção: ...
Bibliotecas de Aprendizado de Máquina
Visão geral da seção: Nesta seção, o palestrante discute as bibliotecas que serão usadas no projeto.
PyTorch e NumPy
- PyTorch é uma biblioteca de aprendizado de máquina.
- NumPy é usado para processamento de dados.
- PyTorch tem várias saídas diferentes para construir o modelo.
MACD
- MACD é um indicador interessante que será usado no projeto.
- É calculado subtraindo a média móvel exponencial (MME) de 26 dias da MME de 12 dias.
- O sinal é a MME de 9 dias do MACD.
- Blankly será usado para calcular os valores do MACD.
Instalação das Bibliotecas
- No Google Colab, PyTorch e NumPy já estão instalados.
- Para instalar Blankly, use "pip install blankly".
- Se outras bibliotecas forem necessárias, elas podem ser adicionadas ao arquivo requirements.txt e instaladas com "pip install -r requirements.txt".
Volume e Preço
Visão geral da seção: Nesta seção, o palestrante discute como obter dados sobre volume e preço.
Obtendo Dados
- Os dados são obtidos usando a API Alpha Vantage.
- Os dados são armazenados em um DataFrame do Pandas.
Manipulação dos Dados
- O DataFrame é convertido em uma lista Python para facilitar a manipulação dos dados.
- O preço pode ser facilmente acessado usando o índice 1 da lista.
- O volume pode ser acessado usando o índice 5 da lista.
Cálculo do Volume
- O volume é calculado usando a fórmula "volume = preço x quantidade".
- A quantidade é obtida dividindo o volume pelo preço.
Problemas com Blankly
Visão geral da seção: Nesta seção, o palestrante discute problemas que surgiram ao tentar instalar a biblioteca Blankly.
Instalação de Blankly
- A instalação de Blankly pode ser problemática.
- Às vezes, a biblioteca não pode ser encontrada na versão especificada.
- Verifique se a versão correta está sendo instalada e tente novamente.
Erros Comuns
- Um erro comum é digitar "blen kalai" em vez de "blankly".
- Outro erro comum é esquecer de adicionar um ponto de exclamação antes do comando pip install.
Normalização de Dados
Visão geral da seção: Nesta seção, o palestrante discute a importância da normalização de dados em redes neurais e como isso ajuda no treinamento.
Normalização de Dados
- A normalização é importante para ajudar na precisão do treinamento em redes neurais.
- O último valor deve ser um valor lógico entre zero e um.
- Para normalizar os dados, é necessário transformá-los em tensores do PyTorch.
Variáveis Escalonadas
Visão geral da seção: Nesta seção, o palestrante discute a importância de ter variáveis escalonadas ao trabalhar com redes neurais.
Variáveis Escalonadas
- É importante ter variáveis escalonadas ao trabalhar com redes neurais.
- As variáveis devem estar dentro de uma faixa razoável para evitar problemas durante o treinamento.
Treinando Redes Neurais
Visão geral da seção: Nesta seção, o palestrante discute como treinar redes neurais e as etapas envolvidas nesse processo.
Treinando Redes Neurais
- O objetivo é mudar os preços brutos para aumentos percentuais.
- É necessário definir um número adequado de épocas e taxas de aprendizado para obter resultados precisos.
- É importante verificar a estabilização da função de perda para evitar o overfitting.
Otimização de Rede Neural
Visão geral da seção: Nesta seção, o palestrante discute a otimização de redes neurais e como ela é usada para prever preços.
Redes Neurais
- Duas matrizes são quadradas e serão úteis posteriormente na função de perda.
- Otimizador faz com que as dimensões das matrizes se alinhem.
- Uma maneira de pensar em uma rede neural é como um conjunto de neurônios conectados.
- RSI é calculado em 14 períodos, mas cada entrada é ponderada por um valor diferente antes de ser passada para o próximo neurônio.
Propagação traseira
- A propagação traseira ajuda a calcular a derivada com relação a cada peso da saída real.
- Os pesos são alterados ligeiramente e o processo é repetido até que a perda seja minimizada.
MACD
- MACD tem dois valores importantes - os próprios valores do MACD e os sinais do MACD.
- Se aumentarmos um peso, o valor do MACD pode aumentar ou diminuir dependendo da direção lógica.
Redução de Max e Parâmetros
Visão geral da seção: Nesta seção, o palestrante discute a redução do valor máximo e a definição dos parâmetros que precisam ser minimizados. Ele também menciona a geração típica de episódios.
Redução de Max
- O valor máximo é reduzido para diminuir o volume.
- Os parâmetros que precisam ser minimizados são definidos como o volume visto nos dados de treinamento.
Geração de Episódios
- A geração típica de episódios envolve a geração de parâmetros.
- Os parâmetros incluem comprimento da sequência LSTM e tamanho da saída.
Treinamento Linear
- Depois que todos os dados são processados, os pesos são alterados para o treinamento linear.
- O treinamento começa com a entrada dos dados no modelo.
Especificação do Volume Mínimo e Taxa de Aprendizado
Visão geral da seção: Nesta seção, o palestrante discute a especificação do volume mínimo e taxa de aprendizado necessários para melhorar a normalização.
Volume Mínimo e Taxa de Aprendizado
- É necessário especificar um volume mínimo para melhorar a normalização.
- A taxa de aprendizado é definida como lr.
Loop de Treinamento
Visão geral da seção: Nesta seção, o palestrante discute o loop de treinamento e a execução do modelo LSTM nos dados.
Modelo LSTM
- O modelo LSTM é executado nos dados.
- Os resultados são alimentados em um loop para multiplicação por pesos.
Linear Layer
- Uma camada linear é executada no estado oculto.
- O resultado final é obtido concatenando todos os estados ocultos.
Música entre zero e um
Visão geral da seção: Nesta seção, é mencionado que a música será tocada entre zero e um.
Monitorando o modelo
- A cada 500 épocas, o modelo imprimirá a perda para ajudar na monitoração do aprendizado.
- O objetivo é verificar se o modelo está aprendendo de forma precisa.
- Serão definidas 15.000 épocas para treinar o modelo.
Salvando os pesos do modelo
- Os números usados para salvar os pesos são arbitrários e podem ser ajustados dependendo do desempenho do modelo.
- É importante salvar os pesos quando o modelo apresenta bom desempenho antes que comece a perder precisão.
Treinamento do LSTM
- O LSTM será treinado com cinco características.
- Antes de implantar o LSTM, ele será pré-treinado e ajustado com uma taxa de aprendizado menor.
Estado oculto do LSTM
- O estado oculto do LSTM mudará ao longo do tempo e será usado como saída.
Esta seção aborda a monitoração do aprendizado, salvando os pesos do modelo, treinamento do LSTM e estado oculto.
Processo de backpropagation
Visão geral da seção: Nesta seção, o palestrante explica o processo de backpropagation em uma rede neural.
Conversão de entrada para um array numpy
- Os dados de entrada são convertidos em um array numpy antes de serem passados para o próximo neurônio.
Relacionando pesos com saídas
- O objetivo é relacionar os pesos com as saídas.
- O processo de backpropagation calcula sinais e propaga esses sinais através dos pesos até a saída.
- Em seguida, é necessário alimentar esses valores em relação a cada peso da rede neural.
Minimização da função de perda
- O objetivo final do processo é minimizar a função de perda.
- Para isso, é executado um ciclo que altera os pesos e recalcula a função de perda até que ela seja suficientemente baixa.
Função Sigmoid e Back Propagation
Visão geral da seção: Nesta seção, o palestrante discute a função sigmoid e back propagation.
Função Sigmoid
- A função sigmoid é usada para obter probabilidades centradas em torno de 0,5.
- A função sigmoid é útil para construir modelos complexos e testá-los.
- É possível adicionar 0,5 à função sigmoid para centralizar os valores em torno de 0,5.
Back Propagation
- O back propagation envolve a mudança dos pesos na rede neural.
- O comando "optimizer.step" muda todos os pesos na rede neural.
- A plataforma Blankly pode ser usada para executar back tests.
Construindo uma Rede Neural LSTM com PyTorch e Backtesting com Blankly
Visão geral da seção: Nesta seção, o palestrante apresenta a estrutura do tutorial e explica que construirá uma rede neural LSTM usando o pacote PyTorch e backtesting com Blankly.
Introdução
- O tutorial é sobre como construir uma rede neural LSTM usando o pacote PyTorch e backtesting com Blankly.
- A rede neural LSTM é útil para dados financeiros ou qualquer outro tipo de dados sequenciais, pois pode armazenar informações sobre entradas anteriores.
- O palestrante irá mostrar como construir um modelo básico de LSTM e otimizá-lo para melhor desempenho.
Configurando o ambiente
- O código será escrito no Google Colab porque permite executar código em trechos e exibir saída facilmente.
- Para usar o pacote Blankly Slate, é necessário baixá-lo offline após a criação do modelo no Google Colab.
- As bibliotecas necessárias já estão instaladas no Google Colab, mas se estivessem sendo executadas em outro lugar, seria necessário instalar as bibliotecas manualmente.
Construindo o modelo
- Serão importados os pacotes necessários: Blankly, NumPy, Pandas e PyTorch.
- A rede neural pode levar vários indicadores diferentes (RSI, MACD etc.) para tomar decisões de negociação mais informadas.
- O palestrante usará RSI, MACD, volume e preço para este modelo específico.
Conclusão
O tutorial mostra como construir uma rede neural LSTM usando PyTorch e backtesting com Blankly. O palestrante explica como configurar o ambiente e construir o modelo.
Janelas Deslizantes
Visão geral da seção: Nesta seção, o palestrante fala sobre janelas deslizantes.
Janelas Deslizantes
- As janelas deslizantes são mencionadas como uma técnica para análise de dados.
- Para obter os dados de preço e volume, é utilizado o comando "interface.history".
- Os preços são armazenados em uma variável chamada "base.history".
- É definido um tamanho de sequência de 8 e um tamanho de saída de 3 para a geração dos episódios.
- O preço é transformado em porcentagem diária usando list comprehension no Python.
Instalação do Blankly
Visão geral da seção: Nesta seção, o palestrante fala sobre a instalação do Blankly.
Instalação do Blankly
- O palestrante menciona que houve problemas na instalação do Blankly no Google Colab.
- É perguntado qual versão do Python está sendo usada.
- O problema é resolvido ao corrigir um erro na digitação do nome "Blankly".
- São criadas variáveis para armazenar os dados de preço e volume.
Inicialização
Visão geral da seção: Nesta seção, o palestrante fala sobre a inicialização do modelo.
Inicialização
- O palestrante começa a falar sobre a inicialização do modelo.
- É mencionado que o estado da estratégia é central para o modelo.
- É explicado como obter os dados de preço e volume usando "interface.history".
- Os preços são armazenados em uma variável chamada "bars".
- São adicionados indicadores RSI e MACD ao modelo.
- São definidos os parâmetros de geração dos episódios.
Engenharia de Recursos
Visão geral da seção: Nesta seção, o palestrante fala sobre engenharia de recursos.
Engenharia de Recursos
- É explicado por que é importante escalar as variáveis em um modelo neural.
- O preço é transformado em porcentagem diária usando list comprehension no Python.
Desculpe, mas não recebi o arquivo de transcrição para criar as notas. Por favor, envie o arquivo de transcrição para que eu possa começar a trabalhar nas notas.
Sinais e Previsões
Visão Geral da Seção: Nesta seção, o palestrante explica como obter sinais de previsão para negociação.
Obtendo Volume
- Para obter volume, é necessário chamar as variáveis de estado do modelo.
- Os dados são coletados nos últimos cinco dias.
- Os dados são alimentados em um sensor Pythor para executar o modelo.
Lógica de Compra e Venda
- A lógica de compra e venda é baseada na previsão média dos próximos três dias.
- Se a previsão média for superior a 1, a compra é recomendada. O valor da compra é proporcional à diferença entre a previsão média e 1.
- Se a previsão média for inferior a 1, uma venda é recomendada. O valor da venda é proporcional à diferença entre 1 e a previsão média.
Backtesting
- É possível adicionar eventos usando FTX para backtesting.
- O backtesting mostra que os valores obtidos foram bons o suficiente para serem lucrativos.
- É possível replicar os resultados carregando os pesos em outro modelo com arquitetura idêntica.
Upload para Blankly Slate
- O processo de upload pode ser feito usando a interface de linha de comando.
Introdução
Visão geral da seção: Nesta seção, o palestrante introduz o que será abordado no vídeo.
- O palestrante explica que o vídeo é sobre como criar um site usando HTML e CSS.
Configurando o ambiente de desenvolvimento
- O palestrante recomenda usar Visual Studio Code como editor de código.
- Ele também sugere instalar a extensão Live Server para visualizar as alterações em tempo real.
Criando a estrutura básica do site
- O palestrante começa criando um arquivo HTML vazio e adiciona as tags básicas, como <!DOCTYPE html> e <html>.
- Em seguida, ele adiciona as tags <head> e <body>, explicando suas funções.
- Ele também adiciona uma tag <title> para definir o título da página na guia do navegador.
Adicionando conteúdo ao site
- O palestrante começa adicionando um cabeçalho à página usando a tag <h1>.
- Em seguida, ele adiciona um parágrafo usando a tag <p>.
- Ele também mostra como adicionar imagens usando a tag <img>.
Estilizando o site com CSS
- O palestrante explica como vincular um arquivo CSS externo ao arquivo HTML usando a tag <link>.
- Ele mostra como usar a propriedade CSS "background-color" para alterar a cor de fundo da página.
- O palestrante também explica como usar a propriedade "color" para alterar a cor do texto.
Adicionando estilos ao cabeçalho
- O palestrante adiciona uma classe ao cabeçalho usando o atributo "class".
- Em seguida, ele cria um seletor de classe no arquivo CSS e adiciona estilos personalizados ao cabeçalho.
Adicionando estilos ao parágrafo
- O palestrante adiciona uma classe ao parágrafo e cria um seletor de classe no arquivo CSS.
- Ele mostra como usar as propriedades "font-size" e "line-height" para alterar o tamanho da fonte e o espaçamento entre linhas do parágrafo.
Conclusão
- O palestrante conclui mostrando como adicionar mais conteúdo à página, incluindo links e listas.