Monday 25 September 2017

Construindo modelos para estratégias de negociação algorítmicas de alta freqüência usando matlab


Negociação algorítmica A negociação algorítmica é uma estratégia de negociação que usa algoritmos computacionais para gerar decisões comerciais, geralmente nos mercados financeiros eletrônicos. Aplicado em instituições de compra e venda, a negociação algorítmica é a base da negociação de alta freqüência. Negociação de FOREX e análise de risco e execução associada. Construtores e usuários de aplicativos de negociação algorítmica precisam desenvolver, backtest. E implanta modelos matemáticos que detectam e exploram os movimentos do mercado. Um fluxo de trabalho efetivo envolve: Desenvolvimento de estratégias de negociação, usando séries temporais técnicas. Aprendizado automático. E métodos não-lineares de séries temporais Aplicando computação paralela e GPU para backtesting e identificação de parâmetros com economia de tempo Cálculo de lucro e perda e realização de análise de risco Execução de análise de execução, como modelagem de impacto de mercado. Análise de custos de transações. E detecção de icebergs Incorporando estratégias e análises em ambientes de negociação de produção Selecione o Guia de negociação quantitativa do seu paísBeginner39 Neste artigo, vou apresentar alguns dos conceitos básicos que acompanham um sistema de negociação quantitativa de ponta a ponta. Esta postagem esperará servir duas pessoas. O primeiro será indivíduos tentando obter um emprego em um fundo como um comerciante quantitativo. O segundo será indivíduos que desejam tentar e configurar seu próprio negócio de negociação algorítmica de varejo. Negociação quantitativa é uma área extremamente sofisticada de financiamento quantitativo. Pode levar uma quantidade significativa de tempo para obter o conhecimento necessário para passar uma entrevista ou construir suas próprias estratégias de negociação. Não só isso, mas exige uma ampla experiência em programação, pelo menos em uma linguagem como MATLAB, R ou Python. No entanto, à medida que a frequência comercial da estratégia aumenta, os aspectos tecnológicos tornam-se muito mais relevantes. Assim, estar familiarizado com CC será de suma importância. Um sistema de negociação quantitativo consiste em quatro componentes principais: Identificação de Estratégia - Encontrar uma estratégia, explorar uma vantagem e decidir sobre a freqüência comercial Estratégia Backtesting - Obter dados, analisar o desempenho da estratégia e remover os viés Sistema de Execução - Vinculação a uma corretora, automatizando a negociação e minimizando Custos de transação Gerenciamento de riscos - Alocação de capital ótima, critério de aposta e critério Kelly Bem, comece por analisar como identificar uma estratégia de negociação. Identificação de Estratégia Todos os processos de negociação quantitativos começam com um período inicial de pesquisa. Este processo de pesquisa abrange a busca de uma estratégia, considerando se a estratégia se enquadra em um portfólio de outras estratégias que você pode estar executando, obtendo todos os dados necessários para testar a estratégia e tentar otimizar a estratégia para maiores retornos e / ou menor risco. Você precisará avaliar seus próprios requisitos de capital se estiver executando a estratégia como um comerciante de varejo e como qualquer custo de transação afetará a estratégia. Contrariamente à crença popular, é realmente bastante direto encontrar estratégias rentáveis ​​através de várias fontes públicas. Os acadêmicos publicam periódicamente resultados teóricos de negociação (embora na maioria dos custos de transação). Os blogs quantitativos de finanças discutirão estratégias em detalhes. As revistas comerciais descreverão algumas das estratégias empregadas pelos fundos. Você pode questionar por que os indivíduos e as empresas estão interessados ​​em discutir suas estratégias rentáveis, especialmente quando sabem que outras pessoas que se aglomeram podem impedir que a estratégia funcione no longo prazo. A razão reside no fato de que eles geralmente não discutem os parâmetros exatos e os métodos de afinação que realizaram. Essas otimizações são a chave para transformar uma estratégia relativamente medíocre em uma altamente rentável. Na verdade, uma das melhores maneiras de criar suas próprias estratégias únicas é encontrar métodos semelhantes e, em seguida, realizar seu próprio procedimento de otimização. Aqui está uma pequena lista de lugares para começar a procurar idéias de estratégia: muitas das estratégias que você olhará cairão nas categorias de reversão média e tendência-seguimento. Uma estratégia de reversão média é aquela que tenta explorar o fato de que existe uma média de longo prazo em uma série de preços (como a propagação entre dois ativos correlacionados) e que desvios de curto prazo dessa média eventualmente reverterão. Uma estratégia de impulso tenta explorar a psicologia dos investidores e a grande estrutura do fundo, engajando uma tendência de mercado, que pode aumentar o impulso em uma direção e seguir a tendência até reverter. Outro aspecto extremamente importante da negociação quantitativa é a freqüência da estratégia de negociação. A negociação de baixa freqüência (LFT) geralmente se refere a qualquer estratégia que detenha ativos por mais tempo do que um dia de negociação. Correspondentemente, a negociação de alta freqüência (HFT) geralmente se refere a uma estratégia que mantém ativos intraday. Ultra-high frequency trading (UHFT) refere-se a estratégias que possuem ativos na ordem de segundos e milissegundos. Como um profissional de varejo HFT e UHFT são certamente possíveis, mas apenas com conhecimento detalhado da pilha de tecnologia comercial e da dinâmica do livro de pedidos. Não discutiremos esses aspectos em grande medida neste artigo introdutório. Uma vez que uma estratégia, ou conjunto de estratégias, foi identificado, agora precisa ser testado quanto à lucratividade em dados históricos. Esse é o domínio do backtesting. Estratégia Backtesting O objetivo do backtesting é fornecer provas de que a estratégia identificada através do processo acima é rentável quando aplicado a dados históricos e fora da amostra. Isso define a expectativa de como a estratégia irá atuar no mundo real. No entanto, backtesting NÃO é uma garantia de sucesso, por vários motivos. É talvez a área mais sutil de negociação quantitativa, uma vez que implica numerosos preconceitos, que devem ser cuidadosamente considerados e eliminados o máximo possível. Discutiremos os tipos comuns de viés, incluindo viés avançado. Viés de sobrevivência e viés de otimização (também conhecido como viés de divulgação de dados). Outras áreas de importância no backtesting incluem disponibilidade e limpeza de dados históricos, com base em custos de transação realistas e na decisão de uma plataforma robusta de backtesting. Bem, discuta os custos de transação ainda mais na seção Sistemas de Execução abaixo. Uma vez que uma estratégia foi identificada, é necessário obter os dados históricos através dos quais realizar testes e, talvez, refinamento. Há um número significativo de fornecedores de dados em todas as classes de ativos. Os seus custos geralmente variam com a qualidade, a profundidade e a pontualidade dos dados. O ponto de partida tradicional para os comerciantes quantos iniciais (pelo menos no nível de varejo) é usar o conjunto de dados gratuitos da Yahoo Finance. Não me preocuparia muito com os prestadores, e gostaria de me concentrar nas questões gerais quando lido com conjuntos de dados históricos. As principais preocupações com os dados históricos incluem limpeza de precisão, viés de sobrevivência e ajuste para ações corporativas, como dividendos e divisões de estoque: a precisão pertence à qualidade geral dos dados - quer contenha algum erro. Os erros podem às vezes ser fáceis de identificar, como, por exemplo, com um filtro de espiga. Que irá escolher picos incorretos em dados da série temporal e correto para eles. Em outras ocasiões, eles podem ser muito difíceis de detectar. Muitas vezes é necessário ter dois ou mais provedores e, em seguida, verificar todos os seus dados uns contra os outros. O viés de sobrevivência é muitas vezes uma característica de conjuntos de dados gratuitos ou baratos. Um conjunto de dados com viés de sobrevivência significa que ele não contém ativos que não estão mais negociados. No caso das ações, isso significa que os estoques são cancelados. Este viés significa que qualquer estratégia de negociação de estoque testada em tal conjunto de dados provavelmente funcionará melhor do que no mundo real, já que os vencedores históricos já foram pré-selecionados. As ações corporativas incluem atividades logísticas realizadas pela empresa que geralmente causam uma mudança de função gradual no preço bruto, que não deve ser incluído no cálculo dos retornos do preço. Ajustes para dividendos e divisões de estoque são os culpados comuns. Um processo conhecido como ajuste de volta é necessário para ser realizado em cada uma dessas ações. É preciso ter muito cuidado para não confundir uma divisão de ações com um verdadeiro ajuste de retorno. Muitos comerciantes foram capturados por uma ação corporativa. Para realizar um procedimento de backtest, é necessário usar uma plataforma de software. Você tem a opção entre o software de back-back dedicado, como o Tradestation, uma plataforma numérica como o Excel ou o MATLAB ou uma implementação personalizada completa em uma linguagem de programação, como Python ou C. Não demorarei muito em Tradestation (ou similar), Excel ou MATLAB, como acredito na criação de uma pilha de tecnologia interna completa (por razões descritas abaixo). Um dos benefícios de fazer isso é que o software de backtest e o sistema de execução podem ser integrados, mesmo com estratégias estatísticas extremamente avançadas. Para as estratégias de HFT em particular, é essencial usar uma implementação personalizada. Quando testar um sistema, é preciso quantificar o desempenho. As métricas padrão da indústria para estratégias quantitativas são a redução máxima e a Razão Sharpe. O drawdown máximo caracteriza a maior queda de pico para a parcela na curva de equidade da conta em um determinado período de tempo (geralmente anual). Isso geralmente é citado como uma porcentagem. As estratégias de LFT tendem a ter maiores disparidades do que as estratégias de HFT, devido a uma série de fatores estatísticos. Um backtest histórico mostrará a retirada máxima do passado, que é um bom guia para o futuro desempenho de redução da estratégia. A segunda medida é a Ratia de Sharpe, que é heuristicamente definida como a média dos retornos em excesso divididos pelo desvio padrão desses retornos em excesso. Aqui, os retornos em excesso referem-se ao retorno da estratégia acima de um benchmark pré-determinado. Como o SP500 ou um projeto de lei do Tesouro de 3 meses. Observe que o retorno anualizado não é uma medida usualmente utilizada, pois não leva em consideração a volatilidade da estratégia (ao contrário do Ratio de Sharpe). Uma vez que uma estratégia foi testada novamente e é considerada livre de preconceitos (na medida em que é possível), com um bom Sharpe e reduções minimizadas, é hora de criar um sistema de execução. Sistemas de Execução Um sistema de execução é o meio pelo qual a lista de negócios gerados pela estratégia é enviada e executada pelo corretor. Apesar do fato de que a geração de comércio pode ser semi - ou mesmo totalmente automatizada, o mecanismo de execução pode ser manual, semi-manual (ou seja, um clique) ou totalmente automatizado. Para estratégias LFT, as técnicas manuais e semi-manuais são comuns. Para as estratégias de HFT, é necessário criar um mecanismo de execução totalmente automatizado, que muitas vezes será fortemente acoplado ao gerador comercial (devido à interdependência da estratégia e da tecnologia). As principais considerações ao criar um sistema de execução são a interface para a corretora. Minimização dos custos de transação (incluindo comissão, deslizamento e propagação) e divergência de desempenho do sistema ao vivo com o desempenho testado. Há muitas maneiras de se conectar a uma corretora. Eles variam de chamar seu corretor no telefone diretamente para uma interface de programação de aplicativos (API) de alto desempenho totalmente automatizada. O ideal é que você automatize a execução de seus negócios o máximo possível. Isso liberta você para se concentrar em novas pesquisas, além de permitir que você execute várias estratégias ou mesmo estratégias de maior freqüência (na verdade, o HFT é essencialmente impossível sem execução automática). O software comum de backtesting descrito acima, como MATLAB, Excel e Tradestation são bons para estratégias mais baixas e mais simples. No entanto, será necessário construir um sistema de execução interno escrito em uma linguagem de alto desempenho, como C, para fazer qualquer HFT real. Como uma anedota, no fundo com o qual eu costumava trabalhar, tivemos um loop de negociação de 10 minutos, onde iremos baixar novos dados de mercado a cada 10 minutos e, em seguida, executar negócios com base nessas informações no mesmo período. Isso estava usando um script Python otimizado. Para qualquer coisa que se aproxime de dados de minuto ou de segunda frequência, acredito que CC seria mais ideal. Em um fundo maior, muitas vezes não é o domínio do comerciante quant para otimizar a execução. No entanto, em lojas menores ou empresas HFT, os comerciantes são os executores e, portanto, um conjunto de habilidades muito mais amplo é muitas vezes desejável. Tenha em mente se você deseja ser empregado por um fundo. Suas habilidades de programação serão tão importantes, se não mais, do que suas estatísticas e talentos de econometria. Outra questão importante que se enquadra no banner de execução é a redução de custos de transação. Em geral, existem três componentes para os custos de transação: as comissões (ou taxas), que são as taxas cobradas pela corretora, a troca e o derrapagem SEC (ou órgão regulador governamental similar), que é a diferença entre o que você pretende que seu pedido seja Preenchido em relação ao que foi preenchido na propagação, que é a diferença entre o preço bidask da segurança negociada. Observe que o spread NÃO é constante e depende da liquidez atual (ou seja, disponibilidade de ordens Buysell) no mercado. Os custos de transação podem fazer a diferença entre uma estratégia extremamente rentável com uma boa relação Sharpe e uma estratégia extremamente rentável com uma relação Sharpe terrível. Pode ser um desafio prever corretamente os custos de transação de um backtest. Dependendo da frequência da estratégia, você precisará de acesso a dados de troca histórica, que incluirão dados de marca para os preços da bidask. Equipes completas de quants dedicam-se a otimização de execução nos fundos maiores, por estas razões. Considere o cenário em que um fundo precisa descarregar uma quantidade substancial de negócios (dos quais os motivos para isso são muitos e variados). Ao despejar tantas ações no mercado, elas comprimem rapidamente o preço e não podem obter uma execução ótima. Daí existem algoritmos que gotejam pedidos de alimentação no mercado, embora o fundo corra o risco de derrapagem. Além disso, outras estratégias adotam essas necessidades e podem explorar as ineficiências. Este é o domínio da arbitragem da estrutura do fundo. A principal questão principal para os sistemas de execução diz respeito à divergência do desempenho da estratégia com o desempenho testado. Isso pode acontecer por vários motivos. Já discutimos o viés avançado e o viés de otimização em profundidade, quando se considera backtests. No entanto, algumas estratégias não facilitam a verificação desses preconceitos antes da implantação. Isso ocorre em HFT mais predominantemente. Pode haver erros no sistema de execução, bem como a própria estratégia de negociação que não aparecem em um backtest, mas DO show up em negociação ao vivo. O mercado pode estar sujeito a uma mudança de regime posterior à implantação de sua estratégia. Novos ambientes regulatórios, mudança do sentimento dos investidores e fenômenos macroeconômicos podem levar a divergências em como o mercado se comporta e, assim, a rentabilidade da sua estratégia. Gerenciamento de riscos A peça final para o enigma comercial quantitativo é o processo de gerenciamento de riscos. O risco inclui todos os preconceitos anteriores que discutimos. Inclui o risco de tecnologia, como servidores co-localizados no intercâmbio de repente, desenvolvendo um mau funcionamento do disco rígido. Inclui o risco de corretagem, como o corretor se quebrando (não tão louco quanto parece, dado o susto recente com o MF Global). Em suma, abrange quase tudo o que poderia interferir na implementação da negociação, de que existem muitas fontes. Livros inteiros são dedicados ao gerenciamento de risco para estratégias quantitativas, por isso não tento elucidar sobre todas as possíveis fontes de risco aqui. O gerenciamento de riscos também abrange o que é conhecido como alocação ótima de capital. Que é um ramo da teoria do portfólio. Este é o meio pelo qual o capital é alocado para um conjunto de estratégias diferentes e para os negócios dentro dessas estratégias. É uma área complexa e depende de algumas matemáticas não triviais. O padrão da indústria pelo qual a alocação ótima de capital e a alavancagem das estratégias estão relacionadas é chamado de critério Kelly. Uma vez que este é um artigo introdutório, eu não penso em seu cálculo. O critério Kelly faz alguns pressupostos sobre a natureza estatística dos retornos, que geralmente não são válidos nos mercados financeiros, de modo que os comerciantes geralmente são conservadores quando se trata da implementação. Outro componente fundamental da gestão de riscos é o de lidar com o próprio perfil psicológico. Existem muitos viés cognitivos que podem entrar na negociação. Embora isso seja certamente menos problemático com o comércio algorítmico se a estratégia for deixada sozinha. Um viés comum é o da aversão à perda em que uma posição perdedora não será fechada devido à dor de ter que perceber uma perda. Da mesma forma, os lucros podem ser tomados muito cedo porque o medo de perder um lucro já obtido pode ser muito grande. Outro viés comum é conhecido como viés de recência. Isso se manifesta quando os comerciantes colocam muita ênfase nos eventos recentes e não no longo prazo. Então, é claro, há o par clássico de viés emocional - medo e ganância. Estes podem, muitas vezes, levar a alavancagem insuficiente ou excessiva, o que pode causar explosão (ou seja, o patrimônio da conta em zero ou pior) ou lucros reduzidos. Como pode ser visto, o comércio quantitativo é uma área extremamente complexa, embora muito interessante, de financiamento quantitativo. Eu literalmente arranhei a superfície do tópico neste artigo e já está ficando bastante longo. Livros e documentos inteiros foram escritos sobre questões que eu apenas dediquei uma ou duas sentenças. Por esse motivo, antes de se candidatar a empregos quantitativos em bolsa de fundos, é necessário realizar uma quantidade significativa de estudo de base. No mínimo, você precisará de uma ampla experiência em estatística e econometria, com muita experiência na implementação, através de uma linguagem de programação como MATLAB, Python ou R. Para estratégias mais sofisticadas no final da freqüência mais alta, seu conjunto de habilidades é provável Para incluir modificação do kernel do Linux, CC, programação de montagem e otimização de latência da rede. Se você está interessado em tentar criar suas próprias estratégias de negociação algorítmicas, minha primeira sugestão seria melhorar a programação. A minha preferência é criar tanto quanto possível o captador de dados, o backtester de estratégia e o sistema de execução. Se o seu próprio capital estiver na linha, você não dormiria melhor à noite sabendo que você testou completamente seu sistema e está ciente de suas armadilhas e questões específicas. Terceirizando isso para um fornecedor, embora potencialmente economizando tempo no curto prazo, poderia ser extremamente Caro a longo prazo. Estratégias de negociação alergétricas com exemplos de MATLAB O paradigma tradicional da aplicação de técnicas de aprendizagem de máquinas não-lineares para estratégias de negociação algorítmica normalmente sofre um viés de bisbilhocho de dados maciço. Por outro lado, as técnicas lineares, inspiradas e limitadas pelo conhecimento aprofundado do domínio, provaram ser valiosas. Esta apresentação descreve a aplicação do filtro de Kalman, uma técnica quintessencialmente linear, de duas formas diferentes de negociação algorítmica. Foco do produto Selecione seu país

No comments:

Post a Comment