Nos últimos anos, as redes neurais profundas se tornaram extremamente populares. Esse campo emergente da ciência da computação foi criado em torno do conceito de redes neurais biológicas, e o aprendizado profundo se tornou uma palavra da moda hoje.
Cientistas e engenheiros de aprendizagem profunda tentam descrever matematicamente vários padrões no sistema nervoso biológico. Os sistemas de aprendizagem profunda têm sido aplicados a vários problemas: visão computacional, reconhecimento de fala, processamento de linguagem natural, tradução automática e muito mais. É interessante e empolgante que o aprendizado profundo superou os especialistas humanos em algumas tarefas. Hoje vamos dar uma olhada no aprendizado profundo no setor financeiro.
Uma das aplicações mais atraentes do aprendizado profundo são os fundos de hedge. Os fundos de hedge são fundos de investimento de organizações financeiras que captam recursos de investidores e os administram. Eles geralmente trabalham com dados de séries temporais e tentam fazer algumas previsões. Existe um tipo especial de arquitetura de aprendizado profundo que é adequado para análise de série temporal: Redes Neurais Recorrentes (RNR) , ou ainda mais especificamente, um tipo especial de rede neural recorrente: redes de memória longa de curto prazo ( LSTM ) . As LSTM eles são capazes de capturar as características mais importantes dos dados da série temporal e modelar suas dependências. Um modelo de previsão do preço das ações é apresentado como um estudo de caso ilustrativo sobre como os fundos de hedge podem usar esses sistemas. o estrutura PyTorch, escrito em Python, é usado para treinar o modelo, projetar experimentos e desenhar os resultados.
Começaremos com alguns fundamentos de aprendizado profundo antes de passar para exemplos do mundo real:
Uma das tarefas mais desafiadoras e emocionantes do setor financeiro é prever se os preços das ações vão subir ou cair no futuro. Hoje, estamos cientes de que algoritmos de aprendizado profundo são muito bons na resolução de tarefas complexas, então vale a pena tentar experimentar sistemas de aprendizado profundo para ver se eles podem resolver com sucesso o problema de prever preços futuros.
Como conceito, a rede neural artificial já existe há muito tempo, mas o hardware não era bom o suficiente para permitir experimentos rápidos de aprendizado profundo. A Nvidia ajudou a revolucionar as redes de aprendizagem profunda há uma década, ao começar a oferecer unidades de processamento gráfico (UPGs) muito rápidas para computação de uso geral em Produtos da série Tesla . Em vez de sombrear polígonos em jogos e aplicativos projetados profissionalmente, os UPGs altamente paralelizados também podem computar outros dados e, em muitos casos, muito superiores às CPUs.
Há muito poucos artigos científicos sobre o uso de aprendizado profundo em finanças, mas a demanda por especialistas em aprendizado profundo de empresas de fintech é forte, pois eles obviamente reconhecem seu potencial. Este artigo ajudará a explicar por que o aprendizado profundo em finanças está se tornando cada vez mais popular, descrevendo como os dados financeiros são usados na construção de sistemas de aprendizado profundo. Um tipo especial de rede neural recorrente - o internet LSTM —Será apresentado também. Vamos delinear como uma tarefa relacionada a finanças pode ser resolvida usando redes neurais recorrentes.
Este artigo também apresenta um estudo de caso ilustrativo sobre como os fundos de hedge podem usar tais sistemas, apresentado por meio de experimentos. Também consideraremos como os sistemas de aprendizagem profunda podem ser melhorados e como os fundos de hedge podem contratar talentos para construir esses sistemas - ou seja, que tipo de experiência o talento de aprendizagem profunda precisa ter.
Antes de chegarmos ao lado técnico do problema, precisamos explicar o que torna os fundos de hedge únicos. Então, o que é um fundo de hedge?
Um fundo de hedge é um fundo de investimento - uma organização financeira que levanta fundos de investidores e os coloca em investimentos de curto e longo prazo ou em produtos financeiros diferentes. Geralmente é formada como uma sociedade limitada ou uma sociedade de responsabilidade limitada. O objetivo de um fundo de hedge é maximizar os retornos. Um rendimento é um ganho ou perda sobre o patrimônio líquido dos fundos de hedge durante um determinado período de tempo. É geralmente aceito que quando mais riscos são assumidos, há um maior potencial para maiores retornos e perdas.
Para obter bons retornos, os fundos de hedge contam com vários tipos de estratégias de investimento, tentando ganhar dinheiro explorando as ineficiências do mercado. Devido a vários tipos de estratégias de investimento que não são permitidas em fundos mútuos comuns, os fundos de hedge não são registrados como fundos, ou seja, geralmente não são supervisionados pelo Estado como outros fundos. Eles não precisam publicar suas estratégias de investimento e resultados comerciais, o que pode torná-los bastante arriscados. Alguns fundos de hedge ganham mais dinheiro do que a média do mercado, mas alguns perdem dinheiro. Alguns deles fornecem resultados permanentes, enquanto alguns dos resultados dos fundos de hedge são variáveis.
Ao investir em fundos de hedge, os investidores aumentam o patrimônio líquido do fundo. No entanto, nem todos podem investir em fundos de hedge. Os fundos de hedge destinam-se a um pequeno número de investidores ricos. Em geral, quem deseja participar de fundos de hedge deve ser credenciado. Isso significa que eles devem ter um status especial em relação às leis de regulamentação financeira. Há uma distinção de país para país quanto a quem pode ter esse status especial. Em geral, o patrimônio líquido de um investidor deve ser muito alto, não apenas pessoas físicas, mas bancos e grandes corporações também podem operar em fundos de hedge. Este credenciamento foi projetado para permitir que apenas pessoas com conhecimento significativo em investimentos participem, protegendo do risco os investidores pequenos e inexperientes.
Este artigo considera o arcabouço regulatório dos Estados Unidos, uma vez que os Estados Unidos possuem o mercado financeiro mais desenvolvido do mundo. Portanto, nos Estados Unidos, o termo 'investidor credenciado' é definido no Regra 501 do Regulamento D da Comissão de Valores Mobiliários dos Estados Unidos ( SEC ) .
De acordo com este regulamento, os investidores credenciados podem ser:
Os administradores de fundos de hedge administram esse fundo. Um administrador de fundos de hedge deve encontrar uma maneira de criar uma vantagem competitiva para ter sucesso, ou seja, criar uma vantagem sobre os rivais e a capacidade de gerar maior valor. Pode ser uma opção de carreira muito atraente, pois pode ser muito lucrativa se um indivíduo se destacar na gestão do fundo.
Por outro lado, se muitas das decisões dos administradores de fundos de hedge forem ruins, eles não serão pagos e terão má reputação. Os melhores gestores de fundos de hedge são uma das profissões mais bem pagas em todos os setores. Os administradores de fundos de hedge ganham uma porcentagem dos retornos que obtêm para os investidores, além da taxa de administração. Essa forma de compensação faz com que os gestores de fundos de hedge invistam mais agressivamente para obter retornos mais elevados, mas, por outro lado, isso também leva a um maior risco para os investidores.
O primeiro fundo de hedge surgiu em 1949, estabelecido pelo ex-escritor e sociólogo Alfred Winslow Jones. Foi enquanto escrevia um artigo sobre as tendências atuais de investimento para a Fortune, por volta de 1948.
Ele tentou administrar o dinheiro e teve muito sucesso. Ele levantou dinheiro usando sua inovação de investimento, que agora é amplamente conhecida como long / short cap. A estratégia ainda é muito popular entre os fundos de hedge. As ações podem ser compradas (comprar: longas) ou vendidas (vender: curtas).
Quando o preço de uma ação está baixo e espera-se que o preço de uma ação esteja alto, faz sentido comprar uma ação (longa) e vendê-la (vendida) assim que atingir seu ponto mais alto, e isso é exatamente o ponto. da inovação de Alfred Winslow Jones: assumir posições compradas em ações que deverão se valorizar e posições vendidas em ações que deverão cair.
Os dados financeiros pertencem aos dados da série temporal. Uma série temporal é uma série de pontos de dados indexados no tempo. Geralmente, uma série temporal é uma sequência tomada em pontos sucessivos e igualmente espaçados no tempo - uma sequência de dados em tempo discreto. Exemplos de séries temporais são a altura das marés oceânicas, a contagem de manchas solares e o valor de fechamento diário da Dow Jones Industrial Average. Os dados históricos neste contexto são dados de séries temporais do passado. É uma das partes mais importantes e valiosas para especular sobre os preços futuros. Existem alguns conjuntos de dados disponíveis publicamente online, mas geralmente - esses dados não contêm muitas características, eles geralmente são dados de intervalo de 1 dia, dados de intervalo de 1 hora ou dados de intervalo de 1 minuto.
Conjuntos de dados com características mais ricas e em intervalos de tempo menores geralmente não estão disponíveis publicamente e podem ser muito caros para obter. Intervalos menores significam mais dados de série temporal em um período fixo - há 365 (ou 366) dias em um ano, portanto, há um máximo de 365 (ou 366) pontos de dados disponíveis. Cada dia tem 24 horas, portanto, em um ano há 8.760 (ou 8.784) pontos de dados por hora disponíveis e cada dia tem 86.400 minutos, portanto, em um ano há 525.600 (ou 527.040) pontos de dados por minuto disponíveis.
Com mais dados, mais informações estão disponíveis e, com mais informações, é possível tirar melhores conclusões sobre o que vai acontecer no próximo período de tempo, supondo, é claro, que os dados consistam em uma característica boa o suficiente para generalizar bem. Os dados de preços de ações para 2007-2008, no auge da crise financeira global, são tendenciosos e provavelmente não relevantes para fazer previsões de preços hoje em dia. Com um intervalo de tempo menor, é mais fácil prever o que acontecerá a seguir devido a um grande número de pontos de dados em um intervalo fixo. É mais fácil prever o que acontecerá no próximo nanossegundo se tivermos todos os pontos de dados para cada nanossegundo em um intervalo fixo de n
anos do que o que acontecerá no mercado de ações no próximo ano se tivermos todos os pontos de dados n
para cada ano em um intervalo fixo de n
-anos.
No entanto, isso não significa que, supondo que uma série rápida de previsões de curto prazo esteja correta, a previsão de longo prazo também deva ser correta. Cada previsão introduz um erro e, ao encadear várias previsões, a previsão de longo prazo conterá uma quantidade significativa de erros no final e será inútil. Abaixo está um exemplo de dados de intervalo de 1 dia para Ações do Google Clipped Online do Yahoo Finance.
Existem apenas algumas colunas no conjunto de dados: Data, Abertura, Máxima, Baixa e Fechamento - respectivamente, o preço pelo qual um título é negociado pela primeira vez na abertura de uma bolsa, o preço mais alto do que o título obtido em uma determinada negociação dia, o preço mais baixo alcançado em um determinado dia de negociação e o preço final pelo qual um título é negociado naquele dia.
Normalmente existem mais duas colunas em tais conjuntos de dados - Tight Close e Volume, mas eles não são relevantes aqui. O Fechamento Ajustado é o preço de fechamento após os ajustes para as divisões aplicáveis e distribuições de dividendos, enquanto o Volume é o número de ações negociadas no mercado durante um período de tempo especificado.
Você pode ver que algumas das datas estão faltando. Esses são os dias em que o mercado de ações está em baixa, geralmente nos finais de semana e feriados. Para fins de nossa demonstração do algoritmo de aprendizado profundo, os dias restantes são complementados pelo preço previamente disponível. Por exemplo, os preços de fechamento para 2010-01-16, 2010-01-17, 2010-01-18 serão 288.126007 porque era assim em 15-01-2010. É importante para nosso algoritmo que os dados não tenham lacunas para que não os confundamos. O algoritmo de aprendizado profundo pode aprender aqui quando são finais de semana e feriados - por exemplo, ele aprenderá que depois de cinco dias úteis, deve haver dois dias com preços fixos a partir do último dia útil.
Este é um gráfico dos movimentos dos preços das ações do Google desde 04/01/2010. Observe que apenas os dias de negociação são usados para o gráfico.
O aprendizado profundo faz parte do aprendizado de máquina e é baseado em representações de aprendizado de dados. O aprendizado de máquina examina algoritmos cuja funcionalidade não é programada, mas é aprendida a partir de dados. É essencialmente uma abordagem à inteligência artificial.
O aprendizado profundo foi aplicado a vários campos - visão computacional, reconhecimento de voz, processamento de linguagem natural, tradução automática - e em algumas dessas tarefas, superou os humanos.
Uma rede neural profunda está no centro do aprendizado profundo. O exemplo mais simples e básico de uma rede neural profunda é uma rede neural preditiva. Abaixo está a imagem de uma rede neural feedforward simples. Consiste nas camadas de entrada e saída e nas camadas ocultas.
como encontrar o número do cartão de crédito online
As camadas ocultas são todas as camadas entre as camadas de entrada e saída. Dizemos que uma rede neural é profunda se tiver mais de uma camada oculta. Cada camada é composta por vários números de neurônios. As camadas nesta rede neural direta básica são chamadas de camadas lineares - os neurônios na camada linear apenas multiplicam os valores 1-D (ou 2-D se os dados são enviados pela rede em lotes) com o peso apropriado, adicionando produtos juntos e dá o resultado final como saída 1-D ou 2-D.
A função de ativação é geralmente aplicada nas redes de feedforward para introduzir não linearidades, para que a rede possa modelar problemas não lineares mais complexos. Nas redes de feedforward , os dados fluem da camada de entrada para a camada de saída sem loop. As conexões entre os neurônios são ponderadas. Os pesos devem ser ajustados para que a rede neural retorne as saídas corretas para as entradas fornecidas. A rede de feedforward mapeia dados do espaço de entrada para o espaço de saída. As camadas ocultas extraem recursos importantes e mais abstratos dos recursos da camada anterior.
O pipeline geral de aprendizado profundo é igual ao pipeline de aprendizado de máquina e consiste nas seguintes etapas:
O treinamento da rede neural, na verdade, significa ajustar os pesos entre pares de neurônios, minimizando a função de perda usando um algoritmo de retropropagação em combinação com a descida gradiente estocástica. Exceto pelos pesos que são determinados através do processo de aprendizagem, os algoritmos de aprendizagem profunda geralmente exigem o estabelecimento de hiperparâmetros, parâmetros que não são aprendidos, mas são reparados antes da aprendizagem. Os hiperparâmetros são o número de camadas, o número de neurônios em camadas, tipos de camadas, tipos de neurônios e inicialização de peso.
Existem restrições de hardware nas configurações de hiperparâmetros; Atualmente, não é fisicamente possível estabelecer um trilhão de neurônios em uma única GPU. O segundo problema para a busca exaustiva de hiperparâmetros é a explosão combinatória; não é possível pesquisar todas as combinações de hiperparâmetros possíveis porque levaria tempo infinito. É por isso que os hiperparâmetros são configurados aleatoriamente ou usam algumas heurísticas e exemplos bem conhecidos descritos em artigos científicos - um dos hiperparâmetros usados para análise de dados financeiros mostrado mais adiante neste blog é o uso de neurônios recorrentes, como cientistas e engenheiros mostraram que funcionam bem com dados de séries temporais. Normalmente, a melhor maneira de ver se os hiperparâmetros para um determinado problema são bons ou não é por meio de experimentos. O objetivo do treinamento é fazer com que as redes neurais estejam em conformidade com os dados de treinamento. Tanto a validação do modelo que é realizada após cada etapa de treinamento, quanto o teste do modelo que é executado após o procedimento de treinamento completo, são realizados para ver se o modelo pode ser bem generalizado. Generalização significa que a rede neural pode fazer boas previsões sobre dados novos e invisíveis.
Existem dois termos importantes relacionados à seleção do modelo: sobreajuste Y desajustamento . Se uma rede neural for muito complexa com relação aos dados em que é treinada, se tiver muitos parâmetros (muitas camadas e / ou muitos neurônios em camadas), a rede neural pode ajustar os dados em excesso. Ele pode se ajustar bem aos dados de treinamento porque tem capacidade mais do que suficiente para ajustar todos os dados, mas o desempenho nos conjuntos de teste e validação é ruim.
Se a rede neural for muito simples em relação aos dados nos quais foi treinada, a rede neural pode desalinhar os dados. Nesse caso, a rede neural tem um desempenho insatisfatório no treinamento, na validação e nos conjuntos de teste porque sua capacidade não é boa o suficiente para se adaptar aos dados de treinamento e generalizar. Na imagem abaixo, esses termos são explicados graficamente. A linha azul representa o que é modelado pela rede neural. A primeira imagem mostra a situação quando há poucos parâmetros de rede neural, insuficientes para ajustar os dados de treinamento e generalizar. A segunda imagem mostra a situação quando o número ideal de parâmetros existe e a rede neural pode ser bem generalizada em dados invisíveis, e a terceira imagem mostra a situação quando o número de parâmetros de uma rede neural é muito grande e a rede neural pode perfeitamente cabem todos os dados no conjunto de treinamento, mas apresentam desempenho insatisfatório nos conjuntos de teste e validação.
Uma versão mais complicada de uma rede neural é uma rede neural recorrente. Em redes neurais recorrentes, os dados podem fluir em qualquer direção, ao contrário das redes neurais preditivas. Eles podem aprender bem as dependências de séries temporais. A arquitetura de uma rede neural recorrente geral é mostrada na imagem abaixo.
Na imagem abaixo, um neurônio recorrente é mostrado. Você precisa de X_{t}
, ponto no tempo t
, como entrada e retorna h_{t}
, estado oculto no tempo t
, como saída. A saída oculta se propaga de volta para o neurônio. O neurônio recorrente pode ser desenrolado, como é mostrado na mesma imagem do lado direito. X_{t_0}
é um ponto no período de tempo t_{0}
, X_{t_1}
no período de tempo t_{1}
e X_{t}
no período de tempo t
. Produtos obtidos usando entradas X_{t_0}
, X_{t_1}
,…, X_{t_n}
em períodos de tempo t_{0}
, t_{1}
,…, t_{n}
Eles também são chamados de saídas ocultas: h_{t_0}
, h_{t_1}
,…, h_{t_n}
, respectivamente.
Uma das melhores arquiteturas de rede neural recorrente é a arquitetura LSTM. LSTM é mostrado abaixo:
LSTMs têm a mesma estrutura geral que as redes neurais recorrentes gerais, mas o neurônio recorrente é um pouco diferente, com uma estrutura mais complexa. Você pode ver na imagem acima que muitos cálculos são feitos em uma célula LSTM. As células LSTM podem ser vistas como uma caixa preta no contexto deste post, mas para leitores mais curiosos, este postagem do blog explica os cálculos no LSTM e muito mais.
Vamos chamar a entrada da rede neural de 'vetor de recursos'. É um vetor dimensional n
- cujos elementos são características: f_{0}
, f_{1}
, f_{2}
…, f_{n}
. ~~~ vv {X} = [f_ {0}, f_ {1}, f_ {2},…, f_ {n}] ~~~ Agora, vamos explicar como as redes neurais recorrentes podem ser aplicadas a uma tarefa relacionada com finanças. A entrada para a rede neural recorrente é [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}]
. Digamos n = 5
. Pegamos cinco preços de ações do Google Close de cinco dias consecutivos (consulte a tabela com dados de Abertura / Máxima / Baixa / Fechada / Subida) entre, digamos, 04-01-2010 e 08-01-2010, por exemplo, [[311.35], [309.98], [302.16], [295.13], [299.06]]
. O vetor de recursos neste exemplo é unidimensional. A sequência de tempo consiste em cinco desses vetores de recursos. As saídas da rede neural recorrente são funções ocultas [h_{t_0}, h_{t_1}, h_{t_2}, …, h_{t_n}]
. Esses recursos estão em um nível mais abstrato do que os recursos de entrada [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}]
—LSTM deve aprender as partes importantes dos recursos de entrada e projetá-los no espaço de recurso oculto. Esses recursos ocultos e abstratos podem ser propagados para a próxima célula LSTM, que fornecerá o próximo conjunto de funções ocultas e mais abstratas que podem ser propagadas de volta para o próximo LSTM e assim por diante. Após a sequência de LSTMs encadeados, o componente final da rede neural é a camada linear (a parte de construção da rede direta simples explicada na seção anterior) que mapeia os recursos ocultos do último LSTM até o ponto em um espaço dimensional, e esse ponto é o resultado final da rede - o preço de fechamento esperado no período X_{t+1}
. A verdade básica neste exemplo para X_{t+1}
é 298.61
.
Nota: Também pode haver apenas um LSTM - definir o número de LSTMs é um hiperparâmetro, geralmente encontrado empiricamente, embora possamos usar algumas heurísticas. Se os dados não forem tão complexos, usamos uma arquitetura menos complexa para que o modelo não se sobreponha aos dados. Se os dados forem complexos, usamos um modelo complexo para que o modelo não se ajuste mal aos dados.
framework de servidor web node js
Na fase de treinamento, os preços de fechamento previstos são comparados aos preços reais dos terrenos e a diferença entre os preços de fechamento previstos e os preços reais dos terrenos é minimizada usando um algoritmo de retropropagação e um algoritmo de otimização de descida. Do gradiente (ou uma de suas formas - especificamente, neste blog, a chamada versão “Adam” de um algoritmo de otimização de gradiente descendente é usada) ao alterar os pesos da rede neural.
Após o treinamento e o teste, no futuro o usuário só precisa inserir dados na rede neural e ela retornará o preço esperado (e esperançosamente um preço muito próximo do preço real do futuro). Mais uma coisa a mencionar aqui é que normalmente lotes de dados são enviados pela rede, treinamento em fases de teste para que a rede calcule várias saídas em uma única passagem. Abaixo está a imagem de uma arquitetura usada neste blog para experimentos. Ele consiste em dois LSTMs empilhados e uma camada linear.
Tente usar estratégias de negociação algorítmicas simples como segue: se o algoritmo prevê que o preço aumentará no dia seguinte, compre n
(n = 1
neste exemplo) ações de uma empresa (longo), caso contrário, venda todas as ações de uma empresa (curto). O valor inicial do portfólio (o valor combinado em dinheiro e ações) é definido em $ 100.000. Cada ação longa ou curta comprará ações n
de uma empresa (Google, neste exemplo) ou vender todas as ações de uma empresa, respectivamente. Inicialmente, o sistema possui 0 ações de uma determinada empresa. Lembre-se sempre de que este é um exemplo muito básico e simples, não destinado ao uso no mundo real, pois seria necessário muito mais trabalho de P&D para modificar o modelo e fazê-lo funcionar bem na prática. Aqui estão algumas coisas negligenciadas que devem ser consideradas em um cenário do mundo real; por exemplo, as taxas de transação não estão incluídas no modelo. O sistema deve ser capaz de operar exatamente no mesmo horário todos os dias, e todos os dias, mesmo em um fim de semana ou feriado, deve ser um dia de negociação.
Para teste, um método de backtesting é usado. O método de backtesting usa dados históricos para reconstruir operações que teriam ocorrido no passado usando as regras definidas com a estratégia desenvolvida. O conjunto de dados é dividido em duas partes - a primeira parte é o conjunto de treinamento (passado) e a segunda parte é o conjunto de teste (futuro). O modelo é treinado em um conjunto de treinamento e, após o treinamento, simulamos o futuro na segunda parte do conjunto de dados para ver como o modelo treinado teria se comportado no futuro sem ser treinado nele.
A métrica para avaliar a estratégia de negociação é o índice Sharpe (sua versão anualizada, assumindo que todos os dias de um ano são dias de negociação e o ano tem 365 dias).: sqrt(365)*mean(returns)/std(returns))
, Onde o retorno é definido como p_{t}/p_{t-1} - 1
e p_{t}
é o preço no período de tempo t
. O índice de Sharpe mostra a relação entre os retornos e o risco adicional incorrido, então ter um índice de Sharpe maior é bom. Geralmente, um índice maior que 1 é aceitável para os investidores, 2 é muito bom e 3 é excelente.
Apenas o preço de fechamento diário dos preços históricos do Google do conjunto de dados do Yahoo Finance é usado como uma característica. Mais recursos ajudarão, mas está além do escopo deste blog testar quais outros recursos do conjunto de dados (aberto, alto, baixo) são importantes. Algumas outras características não incluídas na tabela também podem ser úteis, por exemplo, o sentimento da notícia em um determinado minuto ou eventos importantes em um determinado dia. No entanto, às vezes é muito difícil fazer representações de dados que sejam úteis para a entrada da rede neural e combiná-las com recursos existentes. Por exemplo, é fácil estender o vetor de recursos e colocar um número que representa o sentimento de notícias de Trump ou sentimento de tweet (-1
muito negativo, 0
neutro, +1
muito positivo, etc.) para cada período de tempo determinado, mas não é tão fácil colocar certos tempos definidos por eventos (piratas no Canal de Suez, bomba em uma refinaria do Texas) no vetor de característica porque, para cada tempo específico, precisaremos ter um elemento adicional em o vetor de recurso para colocar 1
se o evento aconteceu ou 0
caso contrário, o que levará a um número infinito de itens em todos os momentos possíveis.
Para os dados mais difíceis, poderíamos definir algumas categorias e, para cada momento, determinar a que categoria pertence. Poderíamos também adicionar características das ações de outras empresas para que um sistema conheça a correlação entre os preços das ações de diferentes empresas. Além disso, existe um tipo de rede neural especializada em visão de máquina, redes neurais convolucionais, que seria interessante combinar com camadas recorrentes e ver como as características visuais se correlacionam com os preços de algumas empresas. Talvez pudéssemos usar o feed da câmera de uma estação de trem lotada como uma função e conectar esse feed a uma rede neural e ver se o que a rede neural vê está correlacionado com os preços das ações de algumas empresas - pode haver algum conhecimento oculto até mesmo nisso exemplo banal e absurdo.
Abaixo está um gráfico que mostra como a perda média de treinamento está diminuindo ao longo do tempo, o que significa que a rede neural tem capacidade suficiente para se adaptar aos dados de treinamento. É importante dizer que os dados devem ser normalizados para que o algoritmo de aprendizado profundo possa convergir.
Abaixo está um gráfico que mostra como a perda média do teste está diminuindo ao longo do tempo, o que significa que a rede neural tem a capacidade de generalizar em dados invisíveis.
O algoritmo é ganancioso; se você previu que o preço subirá no dia seguinte, o algoritmo imediatamente comprará a ação n=1
de uma empresa (se houver caixa suficiente na carteira), e se não, vender todas as ações da empresa (se houver). O período de investimento é fixo e leva 300 dias. Após 300 dias, todas as ações são vendidas. A simulação de dados invisíveis, após algum treinamento, pode ser vista abaixo. Mostra como o valor do portfólio aumenta ao longo do tempo por ações longas / curtas (ou não fazer nada) a cada dia.
A proporção de Sharpe para a simulação acima é 1,48. O valor final da carteira após 300 dias é de $ 100.263,79. Se comprássemos as ações apenas no primeiro dia e as vendêssemos após 300 dias, o portfólio valeria $ 99.988,41. Abaixo está uma situação em que a rede neural não está bem treinada e perde dinheiro após um período fixo de 300 dias.
A proporção de Sharpe é -0,94. O valor final da carteira após 300 dias é de $ 99.868,36.
Aqui está um exemplo interessante: o algoritmo acima é ganancioso e só prevê o preço para o dia seguinte, fazendo medições com base apenas nessa previsão. É possível encadear várias previsões e prever o preço nas próximas etapas no futuro. Por exemplo, com uma primeira entrada de [X_ground_truth_{t0}, X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}]
e a primeira saída que seria [X_predicted_{t5}]
, podemos alimentar a rede neural com essa previsão de forma que a próxima entrada seja [X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}]
e a saída é [X_predicted_{t6}]
. A próxima entrada é [X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}, X_predicted_{t6}]
resultando em [X_predicted_{t7}]
e assim por diante. O problema aqui é que estamos introduzindo um erro de previsão que aumenta a cada nova etapa e, por fim, termina com um resultado de longo prazo muito ruim, conforme mostrado na imagem abaixo. A previsão inicialmente segue a tendência de queda da verdade fundamental e, em seguida, estagna e piora com o tempo.
Uma análise de aprendizado profundo muito simples foi feita sobre os preços das ações do Google, mas ela pode incorporar quase qualquer conjunto de dados financeiros, desde que a quantidade de dados seja grande o suficiente e de boa qualidade. Os dados devem ser discriminatórios e devem descrever e representar bem o problema.
Se funcionasse e se generalizasse bem em testes extensivos, esse sistema poderia permitir que os administradores de fundos de hedge especulassem sobre os preços futuros das ações de uma empresa por meio do aprendizado profundo e da confiança em estratégias de negociação algorítmica.
Os administradores de fundos de hedge podem dar ao sistema uma quantia de dinheiro para ser negociada automaticamente a cada dia. No entanto, seria muito ruim permitir que algoritmos de negociação automatizados negociassem sem qualquer supervisão. O administrador do fundo de hedge deve ter algumas habilidades de aprendizado profundo ou empregar alguém com as habilidades necessárias para monitorar o sistema e determinar quando o sistema perdeu a capacidade de generalizar e negociar bem. Se o sistema perdesse a capacidade de generalizar, ele precisaria ser retreinado do zero e retestado (talvez introduzindo mais recursos discriminatórios ou novos insights - usando novos dados do passado que não existiam quando o modelo foi treinado pela primeira vez).
Às vezes, os dados não são bons o suficiente para o sistema de aprendizado profundo treinar e generalizar bem e, nesse caso, um engenheiro experiente em aprendizagem profunda deve ser capaz de detectar e retificar tal situação. Para construir um sistema de negociação de aprendizado profundo, você precisa de cientistas de dados de fundos de hedge, especialistas em aprendizado de máquina (cientistas e engenheiros), engenheiros de P&D familiarizados com aprendizado de máquina / aprendizado profundo etc. Não importa com que parte de um aplicativo de aprendizado de máquina estejam familiarizados, seja visão de máquina ou reconhecimento de fala, profissionais experientes poderão usar sua experiência no setor financeiro. Em sua raiz, o aprendizado profundo tem os mesmos fundamentos, independentemente do aplicativo ou do setor, e deve ser fácil para alguém com experiência mudar de um tópico para outro.
O sistema que apresentamos é muito básico e para ser aplicado no mundo real, mais pesquisa e desenvolvimento devem ser feitos para aumentar o retorno. Possíveis melhorias no sistema podem ser no desenvolvimento de melhores estratégias de negociação. Coletar mais dados para treinamento, que geralmente é muito caro, ajudará. Um intervalo de tempo menor entre os pontos é melhor. Também pode haver melhorias no uso de mais recursos (por exemplo, sentimentos de notícias ou eventos importantes correspondentes a cada ponto no conjunto de dados, apesar de ser difícil de codificar para uma rede neural) e uma extensa pesquisa de hiperparâmetros e grade de descoberta. Arquitetura RNR.
Além disso, é preciso mais poder de computação (GPUs poderosas) para executar muitos experimentos grandes em paralelo e processar uma grande quantidade de dados, sempre que uma grande quantidade de dados é coletada.
Referências:
Nota do autor: Gostaria de agradecer a Ivan Čapalija e Matej Paradžik por conversas construtivas e conselhos sobre aprendizagem profunda em finanças, que me ajudaram a escrever este blog.