Estratégias quantitativas de negociação em r parte 1 de 3
QuantStart.
Junte-se ao portal de membros privados da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento. Você encontrará um grupo bem informado de mentalistas quant pronto para responder suas perguntas comerciais mais importantes.
Confira meu ebook sobre o comércio de quant, onde eu ensino você como criar estratégias de negociação sistemáticas lucrativas com ferramentas Python, desde o início.
Dê uma olhada no meu novo ebook sobre estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas bayesianas, com Python e R.
Por Michael Halls-Moore em 26 de março de 2018.
Neste artigo, vou apresentá-lo a alguns dos conceitos básicos que acompanham um sistema de negociação quantitativa de ponta a ponta. Esta postagem esperará servir dois públicos. O primeiro será indivíduos tentando obter um emprego em um fundo como um comerciante quantitativo. O segundo será indivíduos que desejam tentar 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, ser familiar com C / C ++ será de suma importância.
Um sistema de comércio quantitativo consiste em quatro componentes principais:
Estratégia Identificação - 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 os custos de transação Gerenciamento de Riscos - Alocação de capital ideal " tamanho da aposta "/ critério Kelly e psicologia comercial.
Começaremos por dar uma olhada em 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 encaixa 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 "varejista" e como qualquer custo de transação afetará a estratégia.
Contrariamente à crença popular, é realmente bastante direto encontrar estratégias lucrativas através de várias fontes públicas. Os acadêmicos publicam periodicamente resultados teóricos de negociação (embora na maioria dos custos brutos de transação). Os blogs de finanças quantitativas discutirão estratégias em detalhes. As revistas comerciais descreverão algumas das estratégias empregadas pelos fundos.
Você pode questionar por que indivíduos e empresas estão interessados em discutir suas estratégias rentáveis, especialmente quando sabem que outros "aglomerando o comércio" podem impedir a estratégia de trabalhar no longo prazo. A razão está no fato de que eles geralmente não discutem os parâmetros exatos e os métodos de ajuste que eles 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 / impulso. Uma estratégia de reversão média é aquela que tenta explorar o fato de que existe um termo de longo prazo em uma "série de preços" (como a disseminação entre dois ativos correlacionados) e que os desvios de curto prazo desse significado eventualmente reverterão. Uma estratégia de impulso tenta explorar a psicologia dos investidores e a grande estrutura do fundo ao "engatar" uma tendência de mercado, que pode reunir 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" de negociação 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.
Teste de estratégia.
O objetivo do backtesting é fornecer evidências 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 será realizada no "mundo real". No entanto, o 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 dados). Outras áreas de importância no backtesting incluem disponibilidade e limpeza de dados históricos, contribuindo com custos de transação realistas e decidindo uma plataforma robusta de backtesting. Discutiremos 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. Eu não vou me aprofundar em prestadores muito aqui, e eu gostaria de me concentrar nas questões gerais ao lidar com conjuntos de dados históricos.
As principais preocupações com dados históricos incluem precisão / limpeza, viés de sobrevivência e ajuste para ações corporativas, como dividendos e divisões de ações:
A precisão pertence à qualidade geral dos dados - quer contenha quaisquer erros. Os erros às vezes podem 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 corrigi-los. 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 geralmente é 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 de ações, isso significa ações de saída / falência. Este viés significa que qualquer estratégia de negociação de ações 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 um estoque de divisão com um verdadeiro ajuste de retorno. Muitos comerciantes foram pegos 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-test dedicado, como o Tradestation, uma plataforma numérica como Excel ou MATLAB ou uma implementação personalizada completa em uma linguagem de programação, como Python ou C ++. Não vou demorar muito na Tradestation (ou similar), no Excel ou no MATLAB, pois acredito na criação de uma pilha de tecnologia interna completa (por razões descritas abaixo). Um dos benefícios de o fazer é que o software de backtest e o sistema de execução podem ser bem integrados, mesmo com estratégias estatísticas extremamente avançadas. Para as estratégias 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 Ratia Sharpe. A retirada máxima caracteriza a maior queda de pico a calha 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 é definida heuristicamente como a média dos retornos em excesso divididos pelo desvio padrão desses retornos em excesso. Aqui, os retornos excedentes referem-se ao retorno da estratégia acima de um benchmark pré-determinado, como o S & P500 ou um 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 Sharpe).
Uma vez que uma estratégia foi testada de novo e é considerado 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 HFT, é necessário criar um mecanismo de execução totalmente automatizado, que muitas vezes será estreitamente 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, a minimização dos custos de transação (incluindo a comissão, o deslizamento e a propagação) e a divergência de desempenho do sistema ao vivo com o desempenho testado.
Existem 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 pesquisas futuras, 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 em que costumava trabalhar, tivemos um "loop de negociação" de 10 minutos, onde iremos baixar novos dados de mercado a cada 10 minutos e depois executar trades 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 o C / C ++ 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 na bandeira de execução é a redução de custos de transações. Geralmente, existem três componentes para os custos de transação: Comissões (ou impostos), que são as taxas cobradas pela corretora, a troca e a SEC (ou órgão regulador governamental similar); deslizamento, qual é a diferença entre o que você pretendia que seu pedido fosse preenchido em relação ao que estava preenchido; spread, que é a diferença entre o preço de oferta / oferta da garantia negociada. Observe que o spread NÃO é constante e depende da liquidez atual (isto é, disponibilidade de ordens de compra / venda) 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 preços de lances / pedidos. Equipes completas de quants dedicam-se a otimizar a 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 comprimirão rapidamente o preço e não poderão obter uma execução ótima. Daí, os algoritmos que os pedidos de "gotejamento de alimentação" no mercado existem, embora o fundo corra o risco de derrapagem. Além disso, outras estratégias "presas" sobre essas necessidades e podem explorar as ineficiências. Este é o domínio da arbitragem da estrutura do fundo.
A questão principal final para os sistemas de execução diz respeito à divergência de desempenho da estratégia com o desempenho testado. Isso pode acontecer por vários motivos. Nós já discutimos o viés avançado e o viés de otimização em profundidade, ao considerar 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 live trading. O mercado pode estar sujeito a uma mudança de regime posterior à implantação de sua estratégia. Novos ambientes regulatórios, mudanças no sentimento dos investidores e fenômenos macroeconômicos podem levar a divergências quanto ao comportamento do mercado e, assim, a rentabilidade da sua estratégia.
Gerenciamento de riscos.
A peça final para o enigma de negociação quantitativa é o processo de gerenciamento de riscos. "Risco" inclui todos os vies anteriores que discutimos. Inclui o risco de tecnologia, como servidores co-localizados na troca de repente, desenvolvendo um mau funcionamento do disco rígido. Isso 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 com a implementação da negociação, das quais existem muitas fontes. Livros inteiros são dedicados ao gerenciamento de riscos para estratégias quantitativas, então não tento elucidar 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. Como este é um artigo introdutório, não vou me deter no seu cálculo. O critério de Kelly faz alguns pressupostos sobre a natureza estatística dos retornos, que geralmente não são válidos nos mercados financeiros, então os comerciantes são geralmente conservadores quando se trata da implementação.
Outro componente chave do gerenciamento de riscos é lidar com o próprio perfil psicológico. Existem muitos viés cognitivos que podem se aproximar da 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á encerrada 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 papéis inteiros foram escritos sobre questões que eu apenas dediquei uma ou duas sentenças. Por essa razão, 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 em implementação, através de uma linguagem de programação como MATLAB, Python ou R. Para estratégias mais sofisticadas no final de freqüência mais alta, seu conjunto de habilidades é provável para incluir modificação do kernel do Linux, C / C ++, 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ítmica, minha primeira sugestão seria melhorar a programação. A minha preferência é criar o máximo de captura de dados, backtester de estratégia e sistema de execução por si mesmo possível. 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 problemas específicos? Terceirizar isso para um fornecedor, enquanto potencialmente economizando tempo no curto prazo, poderia ser extremamente caro a longo prazo.
Apenas iniciando o comércio quantitativo?
3 razões para se inscrever para a lista de e-mails QuantStart:
1. Quant Trading Lessons.
Você terá acesso instantâneo a um curso de e-mail gratuito de 10 partes, repleto de sugestões e dicas para ajudá-lo a começar a negociação quantitativa!
2. Todo o conteúdo mais recente.
Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.
Real, dicas de negociação viáveis, sem tonturas.
Estratégia de Negociação Quantitativa Usando R: Um Guia Passo a Passo.
Nesta publicação, discutiremos sobre a construção de uma estratégia de negociação usando R. Antes de morar nos jargões comerciais usando R, vamos passar algum tempo entendendo o que R é. R é uma fonte aberta. Existem mais de 4000 extras em pacotes, mais 18000 membros do grupo do LinkedIn e perto de 80 R grupos Meetup atualmente existentes. É uma ferramenta perfeita para análise estatística, especialmente para análise de dados. A configuração concisa da Rede de Arquivo Abrangente R sabe que o CRAN fornece a lista de pacotes junto com a instalação básica necessária. Há muitos pacotes disponíveis dependendo da análise precisa ser feita. Para implementar a estratégia de negociação, usaremos o pacote chamado quantstrat.
Processo em Quatro Passos de qualquer Estratégia de Negociação Básica.
Formação de hipóteses Testando a produção de refinação.
Nossa hipótese é formulada como "o mercado é reversão". A reversão média é uma teoria que sugere que os preços eventualmente retornem ao seu valor médio. O segundo passo consiste em testar a hipótese para a qual formulamos uma estratégia em nossa hipótese e computamos indicadores, sinais e métricas de desempenho. A fase de teste pode ser dividida em três etapas, obter os dados, escrever a estratégia e analisar a saída. Neste exemplo, consideramos NIFTY-Bees. É um fundo negociado em bolsa administrado pela Goldman Sachs. A NSE tem um enorme volume para o instrumento, portanto, consideramos isso. A imagem abaixo mostra o preço Open-High-Low-Close do mesmo.
Nós estabelecemos um nível limiar para comparar as flutuações no preço. Se o preço aumentar / diminuir, atualizamos a coluna do limite. O preço de fechamento é comparado com a banda superior e com a banda inferior. Quando a banda superior é cruzada, é um sinal para venda. Da mesma forma, quando a banda inferior é cruzada, é um sinal de venda.
A seção de codificação pode ser resumida da seguinte forma,
Uma visão de helicóptero para a saída da estratégia é dada no diagrama abaixo.
Assim, nossa hipótese de que o mercado é um retorno significativo é suportada. Uma vez que este é o teste de volta, temos espaço para refinar os parâmetros de negociação que melhorariam nossos retornos médios e os lucros realizados. Isso pode ser feito configurando níveis de limiar diferentes, regras de entrada mais rígidas, perda de parada, etc. Pode-se escolher mais dados para back-testing, usar a abordagem bayseiana para configuração de limite, ter em conta a volatilidade.
Uma vez que você está confiante sobre a estratégia de negociação apoiada pelos resultados dos back-testing, você pode entrar em negociação ao vivo. O ambiente de produção é um grande tópico em si e está fora do escopo no contexto do artigo. Para explicar em breve, isso envolveria escrever a estratégia em uma plataforma de negociação.
Como mencionado anteriormente, estaríamos construindo o modelo usando o pacote quantstrat. O Quantstrat fornece uma infra-estrutura genérica para modelo e estratégias quantitativas baseadas em sinal de backtest. É uma camada de abstração de alto nível (construída em xts, FinancialInstrument, blotter, etc.) que permite que você crie e teste estratégias em poucas linhas de código.
As principais características do quantstrat são,
Suporta estratégias que incluem indicadores, sinais e regras Permite que estratégias sejam aplicadas a carteiras de ativos múltiplos Suporta tipos de ordem de mercado, limite, stoplimit e stoptrailing Suporta dimensionamento de ordem e otimização de parâmetros.
Nesta publicação, construímos uma estratégia que inclui indicadores, sinais e regras.
Para um modelo baseado em sinal genérico, os seguintes objetos devem ser considerados,
Instrumentos - Contém dados de mercado Indicadores - Valores quantitativos derivados de dados de mercado Sinais - Resultado da interação entre dados de mercado e indicadores Regras - Gerar ordens usando dados de mercado, indicadores e sinais.
Sem muito tempo, vamos discutir a parte de codificação. Preferimos o estúdio R para codificação e insistimos em usar o mesmo. Você precisa ter determinados pacotes instalados antes de programar a estratégia.
O seguinte conjunto de comandos instala os pacotes necessários.
Depois de instalar os pacotes, você os importa para uso posterior.
Leia os dados do arquivo csv e converta-o em objeto xts.
Inicializamos o portfólio com o estoque, moeda, capital inicial e o tipo de estratégia.
Adicione o limite de posição se desejar negociar mais de uma vez no mesmo lado.
Crie o objeto de estratégia.
Construímos uma função que calcula os limiares que queremos negociar. Se o preço se move por thresh1, atualizamos o limite para o novo preço. Novas bandas para negociação são Threshold +/- Thresh2. A saída é um objeto xts, embora usemos a função reclass para garantir.
Adicione o indicador, o sinal e a regra de negociação.
Execute a estratégia e veja o caderno de pedidos.
Atualize o portfólio e veja as estatísticas comerciais.
Aqui está o código completo.
Uma vez que você esteja familiarizado com esses conceitos básicos, você poderia dar uma olhada em como começar a usar o pacote quantimod em R. Ou no caso de você ser bom no C ++, veja uma estratégia de exemplo codificada em C ++.
Se você é um comerciante de varejo ou um profissional de tecnologia que procura iniciar sua própria mesa de negociação automatizada, comece a aprender algo trading hoje! Comece com conceitos básicos como arquitetura de negociação automatizada, microestrutura de mercado, sistema de backtesting de estratégia e sistema de gerenciamento de pedidos.
Comentários estão fechados.
Posts populares recentes.
Artigos mais visitados da semana.
Empregos para usuários R.
É alimentado pelo WordPress usando um design bavotasan.
Direitos autorais e cópia; 2017 R-bloggers. Todos os direitos reservados. Termos e Condições para este site.
QuantStart.
O portal QuantCademy QuantStademy da QuantStart fornece recursos educacionais detalhados para aprender comércio sistemático e uma forte comunidade de comerciantes algorítmicos de sucesso para ajudá-lo.
Artigos Mais Recentes.
Apenas iniciando o comércio quantitativo?
3 razões para se inscrever para a lista de e-mails QuantStart:
1. Quant Trading Lessons.
Você terá acesso instantâneo a um curso de e-mail gratuito de 10 partes, repleto de sugestões e dicas para ajudá-lo a começar a negociação quantitativa!
2. Todo o conteúdo mais recente.
Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.
Real, dicas de negociação viáveis, sem tonturas.
LearnDataSci.
Início »Python for Finance, Parte 2: Introdução às Estratégias de Negociação Quantitativas.
Python for Finance, Parte 2: Introdução às Estratégias de Negociação Quantitativas.
Python for Finance, Parte 2: Introdução às Estratégias de Negociação Quantitativas.
Idioma: Python 3.5 Bibliotecas: pandas, numpy e matplotlib iPython notebook: disponível no GitHub.
Em Python for Finance, Parte I, nos concentramos no uso de Python e Pandas para.
Recupere as séries temporais financeiras das fontes on-line gratuitas (Yahoo), formateie os dados preenchendo observações faltantes e alinhando-as, calcule alguns indicadores simples, como médias móveis rolantes e visualize as séries temporais finais.
Como lembrete, o quadro de dados contendo os três & # 8220; cleaned & # 8221; timeseries de preços tem o seguinte formato:
Também calculamos as médias móveis de rolamento destas três vezes, da seguinte forma. Observe que ao calcular a média móvel de $ M $ dias, os primeiros $ M-1 $ não são válidos, pois os preços de $ M $ são necessários para o primeiro ponto de dados de média móvel.
Com base nesses resultados, nosso objetivo final será projetar uma estratégia de negociação simples e realista. No entanto, primeiro precisamos passar por alguns dos conceitos básicos relacionados às estratégias de negociação quantitativas, bem como as ferramentas e técnicas no processo.
Considerações gerais sobre estratégias de negociação.
Existem várias maneiras de se lidar com uma estratégia de negociação. Uma abordagem seria usar as séries temporais de preços diretamente e trabalhar com números que correspondem a algum valor monetário. Por exemplo, um pesquisador poderia estar trabalhando com séries temporais que expressam o preço de uma determinada ação, como as séries temporais usadas no artigo anterior. Da mesma forma, se estiver trabalhando com instrumentos de renda fixa, por exemplo, títulos, pode-se usar uma série de tempo que expressa o preço do vínculo como uma porcentagem de um determinado valor de referência, neste caso, o valor nominal da obrigação. Trabalhar com este tipo de séries de tempo pode ser mais intuitivo, pois as pessoas costumam pensar em termos de preços. Contudo, as séries temporais dos preços apresentam algumas desvantagens. Os preços geralmente são apenas positivos, o que dificulta a utilização de modelos e abordagens que exigem ou produzam números negativos. Além disso, as séries temporais de preços geralmente não são estacionárias, ou seja, suas propriedades estatísticas são menos estáveis ao longo do tempo.
Uma abordagem alternativa é usar séries temporais que correspondem não a valores reais, mas mudanças no valor monetário do recurso. Essas séries de tempo podem assumir valores negativos e também, suas propriedades estatísticas são geralmente mais estáveis do que as séries temporais de preços. Os formulários mais utilizados são os retornos relativos definidos como.
e log-returns definido como.
onde $ p \ left (t \ right) $ é o preço do ativo no tempo $ t $. Por exemplo, se $ p \ left (t \ right) = 101 $ e $ p \ left (t-1 \ right) = 100 $ e $ r_> \ left (t \ right) = \ frac = 1 \% $ .
Há várias razões pelas quais os log-returns estão sendo usados no setor e alguns deles estão relacionados a premissas de longa data sobre o comportamento dos retornos de ativos e estão fora do nosso alcance. No entanto, o que precisamos apontar são duas propriedades bastante interessantes. Log-returns são aditivos e isso facilita o tratamento de nossas séries temporais, os retornos relativos não são. Podemos ver a aditividade de log-returns na seguinte equação.
que é simplesmente o log-return de $ t_0 $ para $ t_2 $. Em segundo lugar, os retornos de log são aproximadamente iguais aos retornos relativos dos valores de $ \ frac $ suficientemente perto de $ 1 $. Ao tomar a expansão Taylor de 1ª ordem de $ \ log \ left (\ frac \ right) $ em torno de US $ 1 $, obtemos.
Ambos são calculados trivialmente usando Pandas como:
Uma vez que os retornos de log são aditivos, podemos criar as séries temporais dos retornos de registro cumulativos definidos como.
c \ left (t \ right) = \ sum_ ^ t r \ left (t \ right)
Os retornos de log cumulativos e os retornos relativos totais de 2000/01/01 para as três séries de tempo podem ser vistos abaixo. Observe que, embora os log-returns sejam fáceis de manipular, os investidores estão acostumados a usar retornos relativos. Por exemplo, um retorno de log de $ 1 $ não significa que um investidor tenha duplicado o valor de seu portfólio. Um retorno relativo de $ 1 = 100 \% $ faz! A conversão entre o retorno de log cumulativo $ c \ left (t \ right) $ eo retorno relativo total $ c_> \ left (t \ right) = \ frac $ é simples.
Para aqueles que estão se perguntando se isso está correto, sim é. Se alguém tivesse comprado $ \ $ 1000 $ de ações da AAPL em janeiro de 2000, seu portfólio agora valeria mais de $ \ $ 30,000 $. Se ao menos tivéssemos uma máquina do tempo & # 8230;
O que é uma estratégia de negociação quantitativa?
Nosso objetivo é desenvolver uma estratégia de negociação de brinquedos, mas o que significa a estratégia de negociação quantitativa & # 8220; # 8221; realmente significa? Nesta seção, daremos uma definição que nos guiará em nosso objetivo de longo prazo.
Suponha que temos à nossa disposição uma certa quantia de dólares, $ N $, que estamos interessados em investir. Temos à nossa disposição um conjunto de ativos de US $ K $ dos quais podemos comprar e vender livremente qualquer valor arbitrário. Nosso objetivo é derivar pesos $ w_i \ left (t \ right), i = 1, \ ldots, K $ desse tipo.
$$ w_i \ left (t \ right) \ in \ mathbb \ \ text \ \ sum_ ^ K w_i \ left (t \ right) \ leq 1 $$
de modo que uma quantia de dólares igual a $ w_i \ left (t \ right) N $ é investida no time $ t $ no asset $ i $.
A condição de desigualdade significa $ \ sum_ ^ K w_i \ left (t \ right) \ leq 1 $ que o valor máximo que podemos investir é igual ao valor de dólares que temos, que é $ N $.
Por exemplo, suponha que possamos investir apenas US $ 2 $ e que $ N = \ $ 1000 $. O objetivo é derivar dois pesos $ w_1 \ left (t \ right) $ e $ w_2 \ left (t \ right) $.
Se em algum ponto $ w_1 \ left (t \ right) = 0.4 $ e $ w_2 \ left (t \ right) = 0.6 $, isso significa que investimos $ w_1 \ left (t \ right) N = \ $ 400 $ no activo $ 1 $ e $ w_2 \ left (t \ right) N = \ $ 600 $ no ativo $ 2 $. Uma vez que só temos $ \ $ 1000 $, só podemos investir tanto quanto isso significa isso.
$$ w_1 \ left (t \ right) N + w_2 \ left (t \ right) N \ leq N \ Rightarrow w_1 \ left (t \ right) + w_2 \ left (t \ right)
Georgios Efstathopoulos.
A Georgios tem mais de 7 anos de experiência como analista quantitativo no setor financeiro e tem trabalhado extensivamente em modelos estatísticos e de aprendizagem por máquina para negociação quantitativa, gerenciamento de risco de mercado e de crédito e modelagem comportamental. Georgios possui doutorado em Matemática Aplicada e Estatística no Imperial College de Londres, e é fundador e CEO da QuAnalytics Limited, uma consultoria focada em soluções quantitativas e de análise de dados para indivíduos e organizações que desejam colher o potencial de seus próprios dados para aumentar seus negócios .
Recomendado.
Python for Finance, Parte I: Yahoo Finance API, pandas e matplotlib.
Em detalhes, no primeiro de nossos tutoriais, vamos mostrar como se pode usar facilmente o Python para baixar dados financeiros de bancos de dados on-line gratuitos, manipular os dados baixados e, em seguida, criar alguns indicadores técnicos básicos que serão usados como base de nossa estratégia quantitativa.
Python for Finance, Parte 3: uma estratégia de negociação média móvel.
Neste artigo, começaremos a conceber uma estratégia de negociação mais complexa, que terá pesos não constantes wi (t) wi (t), e assim se adaptará de algum modo ao comportamento recente do preço de nossos ativos.
Melhores Cursos Online de Ciência de Dados em 2017.
O seguinte é uma extensa lista de cursos e recursos de Ciências da Informação, de plataformas como Coursera, edX e Udacity, que lhe dão as habilidades necessárias para se tornar um cientista de dados.
Mais de 100 livros gratuitos de ciência de dados para 2017.
Tirado da web, aqui está a nossa coleção dos melhores livros gratuitos em Data Science, Big Data, Data Mining, Machine Learning, Python, R, SQL, NoSQL e muito mais.
Obrigado por compartilhar Georgios. Utilizar uma simulação de Monte Carlo para derivar os pesos ótimos divididos para maximizar o retorno seja uma melhoria dessa estratégia em vez de dividir uniformemente 1/3 de cada uma? : weights_vector = pd. DataFrame (1/3, index = r_t. index, columns = r_t. columns)
Você está certo, a MC seria uma das formas possíveis de otimizar os pesos para essa estratégia. Note, no entanto, que existem várias questões abertas sobre esta otimização. Em primeiro lugar, o que estamos otimizando? Retorno total, volatilidade da carteira, retração? Em segundo lugar, a otimização corre o risco de sobrepor os pesos ao intervalo histórico que estamos usando para a otimização. Essas e outras questões serão abordadas nos seguintes artigos nesta série.
Quando podemos esperar a próxima publicação?
Obrigado pelo artigo. Há várias instâncias acima, onde você divide 1/3 e 1/7. Python assume que o resultado seja um número inteiro, então a resposta é 0 em ambos os casos. Você deve usar 1.0 / 3 e 1.0 / 7 para evitar esse problema.
Obrigado pelo aviso. Esta série de artigos pressupõe que o Python 3 é usado. No Python 3, 1/3 produzirá 1.3333, em vez da divisão inteira, que foi o caso no Python 2.
No entanto, para tornar isso compatível com os usuários do Python 2, no que se segue, eu me certificarei de que, nesses casos, seja tomado um cuidado especial para garantir que as divisões sejam tratadas de forma adequada.
Copyright © 2017 LearnDataSci. Todos os direitos reservados.
A abordagem da Quant para construir estratégias de negociação: primeira parte.
Recentemente, Quandl entrevistou um gerente de carteira quantitativo sênior em um grande hedge fund. Nós falamos sobre como ela constrói estratégias de negociação e # 8211, como ela transita de uma representação abstrata do mercado para algo concreto com poderes de predição genuínos.
Você pode nos dizer como você define novas estratégias de negociação?
Tudo começa com uma hipótese. Eu conjecturo que deve haver uma relação entre dois instrumentos, ou talvez haja um novo instrumento no mercado que esteja ganhando popularidade, ou talvez haja um fator macroeconômico incomum que eu descobri que impulsiona o comportamento de preços micro. Então escrevo uma equação - um modelo, se você quiser - que visa capturar esse relacionamento. Normalmente, será uma espécie de equação de processo que mostra como as variáveis evoluem ao longo do tempo, com um componente aleatório (estocástico).
O próximo passo é encontrar uma solução fechada para este modelo. Às vezes, isso é fácil; às vezes isso leva dias e semanas de álgebra; às vezes não há uma solução fechada e eu tenho que me conformar com uma aproximação. Eu acho o kit de ferramentas de manipulação simbólica da Mathematica muito útil nesta etapa do processo.
Ok, então agora eu tenho um modelo do mercado. Eu preciso testar se é realista. Nesta fase, costumo me voltar para Matlab. Eu assumo alguns valores plausíveis para vários parâmetros e executo algumas simulações. Os resultados simulados parecem razoáveis? Eles refletem, pelo menos conceitualmente, a dinâmica real do mercado?
Assumindo que o modelo passa esse cheque de sanidade, é hora de se deslocar além da exploração ou ideação do céu azul e na pesquisa formal.
O que você quer dizer com "pesquisa formal"? E por que é necessário?
Quero dizer, a transição de uma representação abstrata, estilizada do mercado, para algo concreto e sem ambigüidade, com potenciais preditivos genuínos.
É difícil construir modelos verdadeiramente preditivos. Mas é muito fácil enganar-se em pensar que você construiu um modelo preditivo, quando, na realidade, você simplesmente superou, ou usou testes na amostra, ou impôs um conhecimento exógeno em suas regras, ou o que você tem. A maioria dos "sistemas" se desmorona no mundo real por essa razão precisa.
Não quero que isso aconteça com o meu modelo; Vou arriscar dinheiro real com isso. Então, ao longo dos anos, construí e aperfeiçoei uma abordagem lenta, estável e sistemática que minimiza o risco de enganar-me. É o que eu chamo de "pesquisa formal".
Quais as etapas que você inclui no seu processo formal de pesquisa?
No começo, meu maior medo é a contaminação de dados. A história é um recurso limitado; Uma vez que você estivesse sem dados históricos para testar contra, você não pode gerar mais. Eu sou paranóico sobre não esgotar o meu fornecimento de dados não-contaminados fora da amostra.
Então, eu começar dividindo meus dados históricos em partes não sobrepostas. Eu então randomizei para que eu mesmo não saiba qual pedaço é qual. (Isso protege contra os preconceitos subconscientes: por exemplo, ser averso ao risco quando sei que meu conjunto de dados de teste é 2008 ou está buscando o risco em 2009).
Eu designo um pedaço como meu conjunto de calibração. Costumo usar o Python para calibração: uso suas bibliotecas de otimização embutidas e escrevi alguns dos meus. Neste exemplo particular, meus parâmetros são restritos e correlacionados. Então eu uso um processo de otimização de 2 passos chamado algoritmo EM. Os otimizadores podem ser sensíveis às condições iniciais, então eu uso Monte Carlo para escolher uma série de pontos de partida no espaço da solução. Tudo isso é bastante fácil de fazer em Python.
O resultado dessa calibração deve ser um conjunto de "parâmetros do modelo" - valores numéricos - que podem ser combinados com observações de mercado reais para prever outros preços de mercado.
Uma vez que calibrei o modelo, testei-o fora da amostra. As previsões são estáveis e os resíduos estão a reverter? Caso contrário, o modelo não funciona; tão simples como isso. Eu tento vários "truques" para quebrar o modelo. Por exemplo, eu calibro em dados mensais, mas teste em dados diários. Ou eu teste os parâmetros dos EUA nos dados do mercado canadense. Se o modelo realmente reflete a realidade econômica subjacente, ele deve ser bastante robusto para esses tipos de ataques. (A economia não muda quando você atravessa fronteiras).
Então, você se separa estritamente na amostra e fora da amostra; você se cega a intervalos de dias; você usa Monte Carlo para evitar os distúrbios do ponto inicial; e você tenta vários truques de robustez. O que mais você faz para garantir que você não está se enganando?
Eu coloco um prêmio muito alto em parcimônia. Se o meu modelo requer muitos parâmetros ou tem muitos graus de liberdade, é apenas um ajuste de curva; não é um modelo. Então, estou constantemente tentando remover fatores. Se o modelo continuar trabalhando (e permanecer "rico") com vários fatores removidos, provavelmente é um bom.
Uma segunda prova de robustez é se o modelo funciona bem, independentemente da estratégia comercial que você desenvolve em cima disso. Se você só pode ganhar dinheiro usando uma regra de escala não-linear complexa com todos os tipos de condições de borda, então isso sugere uma falta de robustez.
Finalmente, não há substituto para os dados. Penso em todos os conjuntos de dados possíveis fora da amostra que eu possivelmente teste o modelo em: países diferentes, instrumentos diferentes, intervalos de tempo diferentes, diferentes freqüências de datas. O modelo tem que trabalhar em todos eles; Caso contrário, você tem uma tendência de seleção nos resultados.
Isso parece abrangente. O que acontece depois?
Armado com um modelo calibrado, o próximo passo é construir uma simulação PL. Os resíduos de reversão média podem não ser suficientes se o conjunto de oportunidades for pequeno demais para compensar o pedido de oferta, ou se as explosões ocasionais matarem todos os meus lucros. Então eu preciso testar uma estratégia de negociação real usando meu modelo. Aqui é onde eu tenho que exercer o máximo cuidado: é muito fácil ajustar a curva adicionando novas variáveis gratuitas, ou polarizar os resultados com conhecimento subconsciente, ou desejar distorções aberrantes. Simplicidade, separação rigorosa de amostras e honestidade intelectual são importantes aqui.
Eu uso o Excel para back-testing. Esta é uma escolha deliberada: o Excel não é tão poderoso quanto o Python, e isso significa que há um limite superior sobre o quão complexo eu posso fazer minhas regras de negociação. Isso é uma coisa boa: uma estratégia que exige complexidade para ser rentável provavelmente não é uma boa estratégia, em primeiro lugar.
Excel também me permite ver meus pressupostos explicitados; é fácil perder o controle de tais coisas quando você está trabalhando no código. Isso me permite visualizar as estatísticas de desempenho (risco, retorno, redução de capital, eficiência de Sharpe e assim por diante) de forma rápida e clara. Mesmo que meu modelo "funcione", não há garantia de que uma estratégia de negociação construída em torno do modelo seja economicamente viável, então essas estatísticas são importantes.
Muito poucos modelos comerciais tornam-no passado todas as etapas acima: formulação de blue-sky e verificações de sanidade; calibração histórica e desempenho fora da amostra; estratégia de negociação back-test e rentabilidade. Mas, para os poucos que o fazem, agora é hora de entrar em produção. Este é um jogo de bola diferente.
Você pode ler a segunda parte da entrevista aqui. Nele, discutimos como a produção é um novo jogo de bola e onde obter idéias para novas estratégias. Também respondemos às questões do leitor na terceira parte da entrevista.
Alguma pergunta para o nosso quant? Comentários? Deixe-os abaixo e ela responderá a você. Nós adoramos saber sobre o seu processo de construção de estratégias de negociação.
Deixe uma resposta Cancelar resposta.
[& # 8230;] Abordagem de uma Quant para Construir Estratégias de Negociação: Parte 1 Abordagem de uma Quant para Construir Estratégias de Negociação: Parte Dois Abordagem de uma Quant para Construir Estratégias de Negociação: Parte Três [& # 8230;]
[& # 8230;] A abordagem da Quant "para Construir Estratégias de Negociação: Primeira Parte [Quandl] [& # 8230;]
[& # 8230;] parte da nossa entrevista com um gerente de portfólio quantitativo sênior em um grande hedge fund. Na primeira parte, ela discutiu a fase teórica da criação de uma estratégia de negociação quantitativa. No segundo [& # 8230;]
[& # 8230;] Статья с аггрегатора Quandl Resource Hub. [& # 8230;]
[& # 8230;] A abordagem da Quant's para Construir Estratégias de Negociação: Primeira Parte [Quandl] Recentemente, Quandl entrevistou um gerente de portfólio quantitativo sênior em um grande hedge fund. Nós falamos sobre como ela constrói estratégias de negociação, quando ela transita de uma representação abstrata do mercado para algo concreto com poderes de predição genuínos. Você pode nos dizer como você define novas estratégias de negociação? Tudo começa com uma hipótese. Conjeco que deveria haver um [& # 8230;]
[& # 8230;] 1. Abordagem de uma Quant para Construir Estratégias de Negociação: Parte Um [& # 8230;]
Eu achei a entrevista bastante útil. No entanto, observo que você já usou Matlab, Python e Excel (e presumivelmente usam C # / C ++ / Java) para produção. Esse processo de mudança entre 4 línguas é pesado? Além disso, o que é em Matlab que você não pode fazer em Python ou vice-versa? Além disso, no que diz respeito ao Excel, não ache que, mesmo que a visualização seja útil, ele carrega muito risco operacional (as fórmulas não são arrastadas corretamente, a folha não foi atualizada corretamente, etc.)? Gostaria de ouvir sobre isso.
& gt; Esse processo de mudança entre 4 idiomas não é complicado?
Não é tão pesado. Eu geralmente acho que a parte mais tediosa é garantir que os dados fluam consistentemente e sem problemas entre diferentes aplicativos ou idiomas. A tradução de sintaxe é fácil; tradução de dados, não tanto.
& gt; O que é em Matlab que você não pode fazer em Python ou vice-versa?
Estes dias, você está certo, não há muito que você não pode fazer em Python. E, de fato, me encontro usando Python cada vez mais. Mas nem sempre foi esse o caso; a infinidade de bibliotecas financeiras de código aberto em Python é um fenômeno relativamente recente.
& gt; No que diz respeito ao Excel, você não acha que, embora a visualização seja útil, ela carrega muito risco operacional (as fórmulas não são arrastadas corretamente, a folha não foi atualizada corretamente, etc.)?
Eu concordo totalmente. O Excel é frágil de várias maneiras: é fácil fazer erros operacionais, é impossível auditar; não é muito performante; Ele é o horário mais inconveniente. Então você tem que ter muito cuidado em como e onde você usa o Excel. Dito isto, acho que os benefícios superam os muitos custos.
Eu achei a entrevista útil. No entanto, vejo que você já usou Matlab, Python e excel (e seria possivelmente usar C ++ / C # / Java / python para produção). Esse processo não é complicado? Além disso, o que é em Matlab que você não pode fazer em Python ou vice-versa? E você não consegue encontrar o Excel como um risco operacional (você geralmente arrasta e solta fórmulas que podem introduzir erros manuais, dependem de folhas atualizando corretamente, etc.)?
[& # 8230;] Uma aproximação de um quantum na construção de estratégias de negociação (quandl) [& # 8230;]
Abordagem muito sensata. Eu particularmente gosto da importância dada à manutenção de seus dados OOS sacrosanct. O único aspecto com o qual eu tenho algumas dúvidas é a remoção de fatores para testar a estabilidade. Talvez seja apenas o formato da entrevista tornando as coisas um pouco menos claras. Mas eu construo modelos de uma forma ascendente, não de cima para baixo. Um novo fator adiciona informações ou não é # 8217; t. Se o meu modelo de dois fatores tem IC maior que o meu modelo de três fatores, o terceiro fator é supérfluo e não deve ser adicionado em primeiro lugar. Então, por definição, a remoção de um fator de um modelo bem especificado sempre resultará em desempenho de previsão degradado.
Minhas desculpas, lvcm, eu não era claro o suficiente. (Veja também a minha resposta a David, up-thread).
Eu não descarto fatores na minha fase de teste; Eu tento removê-los na minha fase de especificação. Se novos graus de liberdade não estão aumentando o poder explicativo, eu despejo-os. Mas uma vez que eu mudei para testes e verificações de robustez, não faz sentido remover fatores. (Na verdade, eu nem sei o que isso significaria, não é como se você pudesse ignorar e # 8221; kappa ou o que for).
Manter o sacrossanto de dados OOS e # 8212; totalmente com você nisso. Se houver uma coisa, eu gostaria de poder martelar nas cabeças das pessoas, é a importância desse passo.
Eu faço Modelagem Quantitativa e análise para viver. Eu fiz alguns modelos interessantes em R até agora. O problema é que eu não sou nem bom em Python nem tenho horas para colocar em aprendê-lo e # 8211; para poder fazer tarefas comfortablly. Existe uma maneira de colaborar com alguém que tenha experiência e conhecimento para fazer teste de volta, teste PL, etc.
Claro que posso desenhar estimativas de modelo contra os preços históricos # 8211; no entanto, isso não é suficiente. É necessário simular como o modelo teria realizado se ele realmente fosse negociado.
Você tentou usar o Quantopian para fazer back-testing? Seu IDE (ambiente de desenvolvedor integrado) torna bastante fácil, embora exija conhecimento Python.
Eu também criei um ambiente de teste de volta no Ruby (uma linguagem de programação semelhante ao Python).
De qualquer forma, ficaria feliz em ajudá-lo a traduzir seu modelo em algo programático.
Este é um informativo para entrevista como quant. Você poderia dar mais detalhes sobre o uso de Monte Carlo nos parâmetros & # 8217; inicialização? Mais uma vez obrigado.
Estou um pouco surpreso com este artigo. Por que fazer um modelo estocástico fora do caminho que você gastou & # 8216; semanas & # 8217; resolvendo com álgebra auxiliada por computador, mas depois descarta a maioria dos parâmetros? Como o produto final pode ser diferente de outras coisas.
Você me entende mal & # 8212; Minhas desculpas por não serem mais claras!
Tento descartar os parâmetros no início, quando eu especificando o meu modelo. Eu vi veados com modelos com 20 parâmetros de longo prazo e 12 graus diários de liberdade. Para mim, esses modelos não são, eles são articuladores universais: eles podem caber em qualquer coisa. Eu nunca arrisquei dinheiro em nada que seja complexo.
Então eu tento ser tão parcimonioso quanto possível ao criar meu modelo.
Uma vez que eu defino um modelo que eu acho econômico e razoável, só então eu tento minhas verificações de robustez. E nesta fase eu não descarto os parâmetros. Mas presto atenção às sensibilidades. Se a minha rentabilidade é incrivelmente sensível a um parâmetro específico atingindo um valor específico, e desmorona em perturbações menores, então eu suspeito que meu modelo é apenas # 8220; lucky & # 8221 ;, não inteligente. Mas concordo com você que a remoção de parâmetros inteiramente nesta fase seria boba.
Estou impressionado, o que você acha sobre regras de gerenciamento de dinheiro, como o tamanho ótimo de apostas?
Esta é uma excelente entrevista e agradeço que tenha aproveitado o tempo para fornecer informações sobre o seu projeto de estratégia. Isso seria muito demorado, mas seria possível fornecer um exemplo real usando um sistema real (independentemente de o sistema ser lucrativo ou não). Conceitualmente, eu entendo o que você está dizendo, mas seria informativo colocar exemplos reais sobre as etapas. Mais uma vez, obrigado pelo seu tempo.
Gostaria de fazer uma pergunta básica. Estou começando no campo de análise quantitativa. No entanto, você parece ser bastante experiente e neste campo há muito tempo. Gostaria de perguntar se as estratégias quantitativas ou técnicas estão lhe dando consistente & # 8216; confortável & # 8217; retorna. Você confia em um sistema ou continua mudando-o arbitrariamente e se você usa alguma análise fundamental também para auxiliar a análise técnica.
Você deve continuar evoluindo com os mercados. Nenhum sistema ou estratégia única funciona para sempre.
Eu gostaria de perguntar o que verificações e procedimentos adicionais são usados quando um modelo é levado ao vivo, em particular como você monitora e gerencia de forma contínua o modelo uma vez que viveu? Você configura regras de monitoramento predefinidas ou disjuntores que retiram o modelo de ação automaticamente? Em caso afirmativo, como você constrói isso, quais tipos de medidas você usa neles? Também relacionado como você identifica e lida com períodos de baixo desempenho razoável? Esse desempenho inferior pode fazer uns modelos de dúvida e fazer parecer que um modelo parou de funcionar quando isso não é o caso.
I & # 8217; m tipo de antiquado & # 8212; Eu não acredito que os disjuntores realmente funcionem. Ou para ser mais preciso, as carteiras com disjuntores programáticos são de baixo desempenho das carteiras sem, a longo prazo. O raciocínio é que os disjuntores impedem você de boas negociações de forma muito freqüente, de modo que essas perdas superam as raras ocasiões em que eles mantêm você fora de um grande problema.
Nota: Eu falo sobre as carteiras de bancos quantis clássicas aqui; não execução eletrônica ou HFT. Nos últimos casos, eu posso ver totalmente por que você quer múltiplas falhas e disjuntores; esses livros podem se afastar de você muito rápido. Mas essa não é minha área de especialização.
Dentro da minha área, observei alguns padrões em modelos que quebram. Para iniciantes, eles raramente explodem instantaneamente; Em vez disso, a oportunidade simplesmente desaparece (arbitragada por cópias) ou a propagação lentamente e imperceptivelmente se afasta cada vez mais do valor justo e nunca retorna (mudança de regime).
Por outro lado, se um comércio diverge e então a divergência acelera, isso me cheira muito mais de uma capitulação. Nesses casos, quero manter minha posição e, de fato, adicionar se puder.
Portanto, a conclusão paradoxal é que quanto mais rápido um modelo perde dinheiro, mais provável é que ainda seja válido.
Boa sorte programando um disjuntor coerente para lidar com essa lógica!
Este é realmente um microcosmo do problema maior. Uma situação em que um disjuntor realmente ajudaria, quase definitivamente será um perverso o suficiente para evitar a maioria das tentativas de definição a priori. São as incógnitas desconhecidas que o trazem, sempre.
Nota importante: o acima mencionado é informado pela minha própria posição e preferência de risco. Eu sou suficientemente alto e bem sucedido o suficiente para que a maximização do portfólio seja o meu incentivo central. Se eu fosse mais jovem, manter meu emprego (ficar no jogo) seria o meu incentivo central. E, nesse caso, os disjuntores ajudam porque eles evitam rebaixamentos catastróficos, perdendo trabalho, enquanto as perdas perdidas não são exibidas em nenhum relatório PL.
& gt; Como você identifica e lida com períodos de baixo desempenho razoável?
Esta é a pergunta de cem milhões de dólares! Gostaria de ter uma resposta definitiva e inequívoca para lhe dar & # 8212; isso também me ajudaria 🙂
Obrigado pelo feedback. Eu tire um pouco de conforto do fato de que os quants profissionais também lutam com esse tipo de perguntas.
Mais uma pergunta se eu puder # 8212; Eu tentei com as idéias de (mas ainda não realmente testadas / simuladas / implementadas) mais & # 8220; gradual & # 8221; tipo de gerenciamento / monitoramento, e. onde você controla, diga a quantidade de capital comprometida com um modelo particular (ou cesta de modelos) e reduza ou desce o tempo gradualmente ao longo do tempo, dependendo do desempenho agregado do modelo.
A idéia básica seria que o processo de gerenciamento teria uma visão de longo prazo para não levar o modelo # 8220; fora & # 8221; dos mercados para obtenções razoáveis / esperadas (devido à análise de uma amostra de desempenho suficientemente grande), enquanto ainda assegura que o modelo acabe por deixar de ser negociado se os retornos forem planos ou negativos para um tamanho de amostra representativo.
Claro que essa idéia não seria garantia contra perdas como tal, mas a esperança seria que poderia ser suficiente, pelo menos, impedir um estilo de explosão LTCM.
(Para adicionar: acho que parece-me que um dos erros com a explosão LTCM foi assumir que seus modelos sempre funcionariam e, portanto, eles não tinham nenhum plano, nenhum nível de monitoramento, nada para dizer-lhes o sistema fora do conhecido / parâmetros esperados, escala para preservar a capital & # 8221 ;. E eu gostaria de aprender e evitar esse tipo de erro, se possível # 8230;)
Você mencionou & # 8220; mudança de regime & # 8221 ;. Então, como você decide que seu comércio perdeu o suficiente para você considerar seu modelo não funcionar mais? Eu acho um & # 8220; Post # 3: monitoramento e manutenção / # 8221; seria legal 😀 Obrigado por compartilhar!
Tudo muito sensível. Eu achei esse comentário interessante:
& # 8221; Por exemplo, eu calibro em dados mensais, mas teste em dados diários. & # 8221;
Eu acho que depende do que você quer dizer com & # 8216; calibração & # 8217; Mas isso me pareceu um pouco incomum.
Deixe-o simples e suponha que eu tentei capturar tendências (lentas) usando um crossover médio móvel. Eu jogo com dados mensais até conseguir algo que eu acho que funciona. Para mudar para dados diários, eu * deveria * multiplicar alguns parâmetros por.
20 (como os comprimentos médios móveis) porque há cerca de 20 dias úteis em um mês de calendário e outros por.
sqrt (20) [vários parâmetros de escala demasiado aborrecidos para discutir aqui]. Mas o modelo ainda deve se comportar da mesma maneira. O volume de negócios, por exemplo, não deve aumentar quando eu passar para o dia a dia.
Por outro lado, se eu manter os parâmetros o mesmo, em vez de recomeçar, digamos uma tendência de 6 meses, eu estou escolhendo uma tendência de 6 dias úteis. Mas o sweet spot para a tendência que segue a maioria dos ativos tende a ser um pouco mais lento do que isso, portanto, é improvável que pareça tão bom. Também o meu volume de negócios será muito maior, mas então você espera isso. Por outras palavras, não tenho certeza de que todos os aspectos do comportamento do mercado são & # 8216; fractal & # 8217; de modo que eu possa aplicar exatamente o mesmo modelo a diferentes escalas de tempo.
Oi Rob. Poster original aqui. Obrigado por um comentário mais perspicaz!
Os mercados são fracturados? Grande pergunta e uma que passei muitas noites debatendo sobre escocês.
Pessoalmente, acho que não são, porque certos eventos exógenos atuam como uma função de forçamento: chamadas diárias de margem de câmbio, MTM mensais para hedge funds, demonstrações financeiras trimestrais para bancos abertos. Esses eventos causam que * algo * aconteça (não importa o quê) nessas freqüências. Portanto, nem todas as escalas de tempo são criadas iguais, e simplesmente acelerar / abrandar o relógio é * não * uma abordagem "neutra".
Então, na verdade, estou muito cauteloso sobre * quais * estratégias que eu faria com esse tipo de mudança de tempo.
Aqui está uma estratégia de brinquedos onde o deslocamento do tempo pode funcionar. Pegue 2 tiras de futuros no mesmo "espaço" - talvez o inverno e o trigo da primavera. Procure casos em que 1 seja retro-ajustado e o outro esteja em contango. Compre a frente baixa, venda de volta alta, venda frente alta, compre de volta baixa. Uma estratégia totalmente simples, quase "burra", mas para muitos pares de futuros costumava funcionar bem.
Este é um ótimo exemplo para mudar as escalas de tempo. Esta estratégia deve funcionar se você amostra / reequilibrar semanalmente, mensalmente ou trimestralmente - porque as variáveis de decisão são de estado puro, sem caminho. Não estamos olhando histórias de preços; nem estamos olhando instrumentos com um componente de tempo (títulos que se acumulam, ou opções que se deterioram, ou caminhadas aleatórias com uma deriva). Então, dado que a estratégia está realmente limpa, podemos sair com esse tipo de teste de robustez.
(Caveat: bid-ask é o fator de complicação aqui - sua escala de tempo escolhida precisa ser grande o suficiente para permitir uma ação de preço que supera a fricção. Bid-ask é a perdição de quants em todos os lugares.)
Mas nunca aplicaria esse mesmo teste para dizer uma estratégia de tendência. Isso suscitaria todo tipo de questões filosóficas. O que significa para uma estratégia ter uma "mancha" em dizer 9 dias, ou 200 dias, ou sempre? Ao otimizar esse ponto doce, você está ajustando? Ou o fato de que quase todos usam 9d e 200d criam uma profeção auto-realizável, e esses números representam algo estrutural sobre o mercado? Ouvi argumentos convincentes em ambos os sentidos. E se você testou seus dados no intervalo X e, em seguida, fez as médias móveis de 9X e 200X e # 8212; Isso funcionaria? Perguntas filosóficas divertidas; Eu não tenho certeza das respostas eu mesmo.
Outras notas: Eu concordo que a "calibração" foi uma escolha desleixada de palavra por mim naquela frase particular. "Ideação" teria sido melhor. Se você estiver calibrando, você já está apresentando mais estrutura do que a mudança de horário pode manipular com segurança.
Você está absolutamente correto re (t) e sqrt (t) - e eu concordo com você, muito aborrecido para discutir aqui.
Mais uma vez obrigado pelo comentário!
Eu acho que & # 8220; calibre em dados mensais, mas teste em dados diários & # 8221; significa recalibrar um modelo contínuo (como, por exemplo, uma regressão contínua) todos os meses, mas usando dados diários. Em seguida, teste com esse modelo recalibrado no mês seguinte, novamente usando dados diários.
Um pouco como um método avançado de teste?
Desculpe por não ser claro. O que eu quis dizer estava mais perto da interpretação original de Rob: Eu construo uma idéia com dados amostrados na freqüência X, mas depois testei com dados amostrados na freqüência Y. A repetição ou a recalibração mensal é um exercício separado, que eu gostaria empreendedor após o modelo ter sido & # 8220; na produção & # 8221; por algum tempo.
Late Birds Obtém o Worm: dados de pagamento e força da empresa.
Em um recente artigo do Huffington Post, o chefe de Educação Global da Visa, Nathaniel Sillin, escreveu: "Compreender o quanto custa gerenciar uma casa e a importância de pagar as suas contas no tempo pode ajudá-lo a evitar erros onerosos". Enquanto muitos leitores provavelmente assentirão de acordo, o sábio conselho de Sillin não é tão universal quanto você pensa. Pelo menos não no mundo dos negócios. Bloomberg citou um relatório do parceiro de Quandl Dun & amp; Bradstreet (essencialmente o Experian e Equifax do mundo dos negócios), afirmando que "para grandes empresas,. . . As coisas são diferentes. Por um lado, eles.
A Paisagem dos Dados da Indústria Automóvel.
Uma vez que o homem primeiro inventou a roda, nossa necessidade de otimizar a forma como nos deparamos foi uma obsessão quase primitiva. Desde o advento do primeiro veículo motorizado até automóveis auto-dirigidos, a indústria automotiva evoluiu rapidamente em seu abraço de tecnologia. Agora estamos experimentando o que provavelmente é o maior avanço no setor automotivo desde que Henry Ford projetou pela primeira vez sua linha de montagem em movimento: o aumento do carro conectado. Por estimativas de inteligência de BI da Scotiabank, em 2020, mais de 75% dos novos carros enviados serão conectados à Internet. De ler as notificações do Facebook para medir a segurança e a saúde do motor.
Icebergs, camaleões e víboras: uma pesquisa de execução FX.
The foreign exchange market has long been the most decentralized and opaque of all markets. As a result, FX traders labor under major informational disadvantages compared to their peers in other asset classes. Unlike equity markets, where SEC regulations mandate that public exchanges report transaction prices and daily trading volumes, FX boasts no such unified data sources. There are no central exchanges, pits or bulletin boards. Instead, FX transactions take place via a million phone calls, client visits, email threads and trading platforms. The entire market is over-the-counter, party to party, and nobody knows what anybody else is doing beyond.
Comments
Post a Comment