понедельник, 4 июня 2018 г.

Estratégias de negociação quantitativa excel


Finanças Assistidas por Computador & # 8211; Excel, Matlab, Theta Suite etc.


Ferramentas, Algoritmos, Simulação, Gestão de Riscos: Eficiência para Finanças Matemáticas.


Como posso backtest minha estratégia de negociação quantitativa, por exemplo Sinal MACD?


Muitas estratégias populares de negociação quantitativa são públicas por um bom tempo. Agora, se você gosta de utilizar essa estratégia com dinheiro real, você deve se certificar de que sua estratégia tenha um bom desempenho. Para estratégias simples, o MS Excel é perfeito para essa tarefa. Mas, como gostaríamos de usar uma otimização e uma visualização específica posteriormente, usamos o Theta Suite e o Matlab. Isso também permite a análise de estratégias mais complexas, se quiser.


Configurando uma estratégia de negociação quantitativa: MACD & # 8211; sinal.


Um dos indicadores técnicos mais populares é a Média Móvel de Convergência / Divergência (MACD), que essencialmente é a diferença entre duas médias móveis. A literatura diz que o cruzamento zero de uma linha MACD daria uma boa indicação para a compra de ações de venda. Às vezes, eles adicionam algum sinal de gatilho e afirmam, isso seria ainda melhor. Vamos ver se isso é verdade.


Mais precisamente, a negociação de MACD é geralmente definida como.


resp. em um loop ao longo do tempo isso parece.


O sistema de negociação apropriado com um período de sinal de & # 8220; const_l = 9 & # 8221; parece.


Testando a estratégia com dados históricos reais.


Essa parte é muito importante. Eu não posso enfatizar muito esse fato: em um post posterior, vamos falar sobre o backtesting muito mais.


Atribuindo esses dados a um processo ThetaML via.


permite a estimativa do desempenho da estratégia de negociação baseada em MACD. Aqui está um gráfico dos preços das ações da IBM de 2000-01-01 até 2011-12-31:


Gráfico de Matlab do preço das ações da IBM.


Backtesting a estratégia de negociação MACD.


Podemos executar os modelos ThetaML acima usando o Theta Suite Orchestrator e conectá-los aos dados históricos da IBM no Matlab no Configurator. Em seguida, no Result Explorer, obtemos o desempenho da estratégia de negociação de sinal MACD correspondente sem venda a descoberto.


Gráfico de desempenho da estratégia de negociação MACD.


e com venda a descoberto, parece.


Desempenho da estratégia de negociação MACD com venda a descoberto.


Note que durante a maioria dos anos, a estratégia de sinal MACD não tem um desempenho melhor do que o próprio subjacente. Levando em conta os custos de transação, isso parece ainda pior. Curiosamente, o ano 2000 proporcionou um excelente desempenho da estratégia MACD, mas todos os anos posteriores não tiveram um desempenho tão bom.


Conclusão.


É fácil verificar se uma estratégia teria um bom desempenho usando dados históricos. ThetaML e Matlab são excelentes ferramentas para esta tarefa. A estratégia de negociação baseada em MACD que analisamos não é significativamente melhor do que manter o subjacente em si. Outros parâmetros da estratégia de negociação podem levar a melhores resultados, para que possamos realizar uma otimização. Vamos ver isso na próxima semana.


Quantas estratégias - são para você?


As estratégias de investimento quantitativo evoluíram para ferramentas muito complexas com o advento dos computadores modernos, mas as raízes das estratégias remontam a mais de 70 anos. Eles normalmente são administrados por equipes altamente instruídas e usam modelos proprietários para aumentar sua capacidade de vencer o mercado. Existem até programas prontos para uso que são plug-and-play para aqueles que buscam simplicidade. Os modelos Quant sempre funcionam bem quando testados novamente, mas suas aplicações reais e sua taxa de sucesso são discutíveis. Embora pareçam funcionar bem em mercados altistas, quando os mercados se descontrolam, as estratégias quantitativas estão sujeitas aos mesmos riscos que qualquer outra estratégia.


Estratégias de investimento quantitativo tornaram-se extremamente populares entre os comerciantes de dia, mas eles não são as únicas estratégias que os comerciantes usam para consistentemente lucrar. O curso Torne-se um Day Trader da Investopedia descreve uma estratégia comprovada que inclui seis tipos de negociações, além de estratégias para gerenciar riscos. Com mais de cinco horas de vídeo sob demanda, exercícios e conteúdo interativo, você obterá as habilidades necessárias para negociar qualquer segurança em qualquer mercado.]


Um dos pais fundadores do estudo da teoria quantitativa aplicado ao financiamento foi Robert Merton. Você pode imaginar o quão difícil e demorado foi o processo antes do uso de computadores. Outras teorias em finanças também evoluíram a partir de alguns dos primeiros estudos quantitativos, incluindo a base da diversificação de portfólio baseada na moderna teoria do portfólio. O uso tanto do cálculo quantitativo quanto do cálculo levou a muitas outras ferramentas comuns, incluindo uma das mais famosas, a fórmula de precificação de opções Black-Scholes, que não apenas ajuda as opções de preço dos investidores e desenvolve estratégias, mas ajuda a manter os mercados sob controle.


Quando aplicado diretamente ao gerenciamento de portfólio, o objetivo é como qualquer outra estratégia de investimento: agregar valor, retorno alfa ou excesso. Quants, como os desenvolvedores são chamados, compõem modelos matemáticos complexos para detectar oportunidades de investimento. Existem tantos modelos por aí quanto quantos os desenvolvem e todos afirmam ser os melhores. Um dos pontos mais vendidos de uma estratégia de investimento quant é que o modelo e, em última análise, o computador, toma a decisão de compra / venda real, não um ser humano. Isso tende a eliminar qualquer resposta emocional que uma pessoa possa ter ao comprar ou vender investimentos.


Quantas estratégias são agora aceitas na comunidade de investimentos e administradas por fundos mútuos, fundos de hedge e investidores institucionais. Eles normalmente usam o nome de geradores alfa ou alfa gens.


Assim como em "O Mágico de Oz", alguém está por trás da cortina que conduz o processo. Como em qualquer modelo, é tão bom quanto o humano que desenvolve o programa. Embora não haja um requisito específico para se tornar um quant, a maioria das empresas que executam modelos quantificados combinam as habilidades de analistas de investimento, estatísticos e programadores que codificam o processo nos computadores. Devido à natureza complexa dos modelos matemáticos e estatísticos, é comum ver credenciais como pós-graduação e doutorado em finanças, economia, matemática e engenharia.


Historicamente, esses membros da equipe trabalhavam nos back-offices, mas à medida que os modelos quânticos se tornaram mais comuns, o back office está se mudando para o front office.


Benefícios das Estratégias Quant.


Embora a taxa de sucesso global seja discutível, a razão pela qual algumas estratégias de quant funcionam é que elas são baseadas na disciplina. Se o modelo estiver certo, a disciplina mantém a estratégia trabalhando com computadores de velocidade relâmpago para explorar ineficiências nos mercados com base em dados quantitativos. Os modelos em si podem se basear em apenas alguns índices, como P / L, dívida em relação ao capital e crescimento de lucros, ou usar milhares de insumos trabalhando juntos ao mesmo tempo.


Estratégias bem-sucedidas podem captar as tendências em seus estágios iniciais, à medida que os computadores executam constantemente cenários para localizar ineficiências antes que outras o façam. Os modelos são capazes de analisar um grupo muito grande de investimentos simultaneamente, onde o analista tradicional pode estar olhando apenas alguns de cada vez. O processo de triagem pode classificar o universo por níveis de notas como 1-5 ou A-F, dependendo do modelo. Isso torna o processo de negociação real muito simples, investindo em investimentos altamente cotados e vendendo os de baixa classificação.


Os modelos Quant também abrem variações de estratégias como long, short e long / short. Os fundos quant bem-sucedidos estão atentos ao controle de risco devido à natureza de seus modelos. A maioria das estratégias começa com um universo ou benchmark e usa pesos setoriais e setoriais em seus modelos. Isso permite que os fundos controlem a diversificação até certo ponto sem comprometer o modelo em si. Os fundos Quant geralmente são executados com base em custos menores porque não precisam de tantos analistas tradicionais e gerentes de portfólio para executá-los.


Desvantagens das estratégias Quant.


Existem razões pelas quais tantos investidores não abraçam totalmente o conceito de deixar uma caixa preta executar seus investimentos. Para todos os fundos quant bem sucedidos lá fora, assim como muitos parecem ser mal sucedidos. Infelizmente para a reputação dos quants, quando eles falham, eles falham em grande momento.


O Long-Term Capital Management foi um dos fundos de hedge mais famosos, já que foi administrado por alguns dos mais respeitados líderes acadêmicos e dois economistas ganhadores do Prêmio Nobel, Myron S. Scholes e Robert C. Merton. Durante a década de 1990, sua equipe gerou retornos acima da média e atraiu capital de todos os tipos de investidores. Eles eram famosos por não apenas explorar ineficiências, mas também por usar o acesso fácil ao capital para criar enormes apostas alavancadas nas direções do mercado.


A natureza disciplinada de sua estratégia criou a fraqueza que levou ao seu colapso. A Long-Term Capital Management foi extinta e dissolvida no início de 2000. Seus modelos não incluíam a possibilidade de que o governo russo pudesse inadimplir parte de sua própria dívida. Esse evento único desencadeou eventos e uma reação em cadeia aumentada pela destruição gerada pela alavancagem. A LTCM estava tão fortemente envolvida com outras operações de investimento que seu colapso afetou os mercados mundiais, provocando eventos dramáticos. No longo prazo, o Federal Reserve entrou em cena para ajudar, e outros bancos e fundos de investimento apoiaram o LTCM para evitar mais danos. Essa é uma das razões pelas quais os fundos de quantia podem falhar, pois são baseados em eventos históricos que podem não incluir eventos futuros.


Embora uma equipe de quanteamento forte esteja constantemente adicionando novos aspectos aos modelos para prever eventos futuros, é impossível prever o futuro a cada vez. Os fundos Quant podem também ficar sobrecarregados quando a economia e os mercados estão experimentando uma volatilidade acima da média. Os sinais de compra e venda podem vir tão rapidamente que a alta rotatividade pode criar comissões elevadas e eventos tributáveis. Os fundos Quant podem também representar um perigo quando são comercializados como prova de impacto ou se baseiam em estratégias curtas. A previsão de desacelerações, o uso de derivativos e a combinação de alavancagem podem ser perigosos. Um turno errado pode levar a implosões, que muitas vezes são notícia.


Estratégias de investimento quantitativo evoluíram de caixas pretas de back office para ferramentas de investimento tradicionais. Eles são projetados para utilizar as melhores mentes dos negócios e os computadores mais rápidos para explorar ineficiências e usar alavancagem para fazer apostas no mercado. Eles podem ter muito sucesso se os modelos incluírem todas as entradas corretas e forem ágeis o suficiente para prever eventos anormais de mercado. Por outro lado, enquanto fundos quantificados são rigorosamente testados até que funcionem, sua fraqueza é que eles confiam em dados históricos para seu sucesso. Embora o investimento no estilo quant tenha seu lugar no mercado, é importante estar ciente de suas deficiências e riscos. Para ser consistente com as estratégias de diversificação, é uma boa ideia tratar as estratégias quantitativas como um estilo de investimento e combiná-las com as estratégias tradicionais para alcançar a diversificação adequada.


Negociação Quantitativa.


Investimento quantitativo e idéias de negociação, pesquisa e análise.


Sexta-feira, 27 de março de 2009.


Um leitor comenta sobre negociação usando o Excel VBA e o Modelo de Fator.


9 comentários:


Eu acho que as principais razões por trás de uma popularidade do Excel / VBA em um mundo de comércio quant e quant são:


Eu definitivamente acho que o fator bandwagon está em jogo, muitas vezes somos como ovelhas, e não vejo razão para que a estratégia ou os sistemas de investimento sejam diferentes.


Um pouco de sorte não irá interferir no forex.


"No entanto, um problema que encontrei é o meu desejo contínuo de modificar e melhorar regularmente o sistema, o que eu descobri que pode se tornar contraproducente, pois há um perigo real de que o desenvolvimento do sistema se torne um fim em si mesmo!"


"No entanto, um problema que encontrei é o meu desejo contínuo de modificar e melhorar regularmente o sistema, o que eu descobri que pode se tornar contraproducente, pois há um perigo real de que o desenvolvimento do sistema se torne um fim em si mesmo!"


* gestão deficiente da memória (isso pode piorar ainda mais o desempenho),


* você não pode usar o sistema de controle de versão que permitiria rastrear mudanças (quem-o-por-quando-quando) e facilitaria a colaboração (veja, por exemplo, svnbook. red-bean / nightly / en / svn. intro. whatis. html # svn. intro. righttool e tortoisesvn. tigris /; deve haver algumas ferramentas de controle de versão da Microsoft). Com base na minha experiência, a partir de algum código VBA de volume se torna incontrolável, uma das razões para isso é que você não pode usar o controle de versão.


* Pouca flexibilidade (em comparação com as alternativas que vou ser.


** ausência de classes (class = estrutura + métodos que podem acessar e modificar o conteúdo da estrutura)


** ausência virtual de mecanismos de abstração (Variant é muito propensa a erros). Você pode precisar deles se quiser usar o mesmo algoritmo para um estoque e para uma curva de juros (mesma ação, objetos diferentes).


Oi Dr. Ernie Chan.


Eu usei o matlab2ibapi por vários meses e descobri que ele é bastante útil e confiável para automatizar minhas estratégias. Na verdade, vou publicar um artigo ilustrando como usá-lo.


Sobre planilha e finanças quantitativas:


Gostaria de saber se existe uma ferramenta melhor do que o Excel / VBA.


Pode ser mais rápido a curto prazo, mas não consegue lidar com uma enorme quantidade de dados.


Eu desisti completamente de usar planilhas para quase qualquer coisa.


Guia para iniciantes em negociação quantitativa.


Guia para iniciantes em negociação quantitativa.


Neste artigo, vou apresentar alguns dos conceitos básicos que acompanham um sistema de negociação quantitativo de ponta a ponta. Espera-se que este post atenda a dois públicos-alvo. O primeiro será indivíduos tentando obter um emprego em um fundo como um comerciante quantitativo. A segunda será pessoas que desejam tentar montar seu próprio negócio de comércio algorítmico "de varejo".


A negociação quantitativa é uma área extremamente sofisticada de finanças quânticas. 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 requer extensa experiência em programação, pelo menos em uma linguagem como MATLAB, R ou Python. No entanto, à medida que a frequência de negociação da estratégia aumenta, os aspectos tecnológicos tornam-se muito mais relevantes. Assim, estar familiarizado com o C / C ++ será de suma importância.


Um sistema de negociação quantitativo consiste em quatro componentes principais:


Identificação Estratégica - Encontrando uma estratégia, explorando uma vantagem e decidindo sobre a frequência de negociação Backtesting da estratégia - Obtendo dados, analisando o desempenho da estratégia e removendo vieses Sistema de Execução - Vinculando a uma corretora, automatizando a negociação e minimizando custos de transação tamanho da aposta "/ critério de Kelly e psicologia de negociação.


Começaremos dando 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 engloba encontrar uma estratégia, verificando se a estratégia se encaixa em um portfólio de outras estratégias que você pode estar executando, obtendo quaisquer dados necessários para testar a estratégia e tentando otimizar a estratégia para retornos mais altos e / ou menor risco. Você precisará levar em conta suas próprias necessidades de capital se administrar a estratégia como um operador de "varejo" e como os custos de transação afetarão a estratégia.


Ao contrário da crença popular, é bastante simples encontrar estratégias lucrativas por meio de várias fontes públicas. Os acadêmicos publicam regularmente resultados teóricos de negociação (embora, em sua maioria, sejam brutos dos custos de transação). Os blogs de finanças quantitativas discutirão as estratégias em detalhes. Os jornais de comércio delinearã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 lucrativas, especialmente quando sabem que outras pessoas "que estão ocupando o mercado" podem impedir que a estratégia funcione a longo prazo. A razão está no fato de que eles não costumam discutir 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 lucrativa. Na verdade, uma das melhores maneiras de criar suas próprias estratégias é 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 ideias estratégicas:


Muitas das estratégias que você irá analisar se encaixarão nas categorias de reversão à média e tendência / momento. 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 o spread entre dois ativos correlatos) e que desvios de curto prazo dessa média acabarão sendo revertidos. Uma estratégia de momentum tenta explorar tanto a psicologia do investidor quanto a grande estrutura de fundos, "pegando carona" em uma tendência de mercado, que pode ganhar impulso em uma direção e seguir a tendência até que ela se reverta.


Outro aspecto extremamente importante da negociação quantitativa é a frequência da estratégia de negociação. A negociação de baixa frequência (LFT) geralmente se refere a qualquer estratégia que detenha ativos por mais de um dia de negociação. Correspondentemente, a negociação de alta frequência (HFT) geralmente se refere a uma estratégia que mantém ativos intraday. Negociação de frequência ultra-alta (UHFT) refere-se a estratégias que mantêm ativos na ordem de segundos e milissegundos. Como profissionais de varejo, HFT e UHFT certamente são possíveis, mas apenas com conhecimento detalhado da "pilha de tecnologia" e da dinâmica do livro de pedidos. Não vamos discutir esses aspectos em grande medida neste artigo introdutório.


Uma vez que uma estratégia, ou conjunto de estratégias, tenha sido identificada, ela agora precisa ser testada quanto à lucratividade nos dados históricos. Esse é o domínio do backtesting.


Backtesting de estratégia.


O objetivo do backtesting é fornecer evidências de que a estratégia identificada por meio do processo acima é lucrativa quando aplicada a dados históricos e fora da amostra. Isso define a expectativa de como a estratégia funcionará no "mundo real". No entanto, backtesting não é garantia de sucesso, por várias razões. É talvez a área mais sutil do comércio quantitativo, uma vez que implica inúmeros vieses, que devem ser cuidadosamente considerados e eliminados, tanto quanto possível. Discutiremos os tipos comuns de polarização, incluindo viés de antecipação, viés de sobrevivência e viés de otimização (também conhecido como viés de "espionagem de dados"). Outras áreas de importância dentro do backtesting incluem a disponibilidade e a limpeza de dados históricos, levando em consideração custos de transação realistas e decidindo sobre uma plataforma robusta de backtesting. Discutiremos os custos de transação na seção Sistemas de Execução abaixo.


Uma vez que uma estratégia tenha sido 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. Seus custos geralmente variam de acordo com a qualidade, profundidade e pontualidade dos dados. O ponto de partida tradicional para os comerciantes de quantia iniciais (pelo menos no nível de varejo) é usar o conjunto de dados gratuito do Yahoo Finance. Eu não vou me debruçar muito sobre provedores aqui, ao invés disso 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 exatidão / limpeza, viés de sobrevivência e ajuste para ações corporativas, como dividendos e desdobramentos:


Precisão pertence à qualidade geral dos dados - se contém algum erro. Às vezes, os erros podem ser fáceis de identificar, como com um filtro de pico, que selecionará "picos" incorretos nos dados de séries temporais e os corrigirá. Em outras ocasiões, 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 sendo negociados. No caso de ações, isso significa ações excluídas / falidas. Esse viés significa que qualquer estratégia de negociação de ações testada em tal conjunto de dados provavelmente terá um desempenho 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 na função de etapa do preço bruto, que não deve ser incluída no cálculo dos retornos do preço. Ajustes para dividendos e desdobramentos são os culpados comuns. Um processo conhecido como ajuste de costas é 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 traders foram pegos por uma ação corporativa!


Para realizar um procedimento de backtest, é necessário usar uma plataforma de software. Você tem a escolha entre softwares de backtest dedicados, 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 ++. Eu não vou me demorar muito em Tradestation (ou similar), Excel ou MATLAB, como eu acredito em criar uma pilha de tecnologia interna completa (por razões descritas abaixo). Um dos benefícios disso é que o software de backtest e o sistema de execução podem ser totalmente integrados, mesmo com estratégias estatísticas extremamente avançadas. Para as estratégias de HFT, em particular, é essencial usar uma implementação personalizada.


Ao fazer o backtest de um sistema, é preciso ser capaz de quantificar o desempenho do mesmo. As métricas "padrão da indústria" para estratégias quantitativas são o rebaixamento máximo e o Índice de Sharpe. O rebaixamento máximo caracteriza a maior queda de ponta a ponta na curva de patrimônio da conta em um determinado período de tempo (geralmente anual). Isso é mais frequentemente citado como uma porcentagem. As estratégias de LFT tenderão a ter rebaixamentos maiores do que as estratégias de HFT, devido a vários fatores estatísticos. Um backtest histórico mostrará o último drawdown máximo, que é um bom guia para o futuro desempenho de drawdown da estratégia. A segunda medida é o Índice de Sharpe, que é definido heuristicamente como a média dos retornos excedentes dividida pelo desvio padrão desses retornos excedentes. 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. Note que o retorno anualizado não é uma medida normalmente utilizada, pois não leva em conta a volatilidade da estratégia (diferentemente do Índice de Sharpe).


Uma vez que a estratégia tenha sido backtested e seja considerada livre de preconceitos (na medida em que isso é possível!), Com um bom Sharpe e rebaixamentos minimizados, é hora de construir um sistema de execução.


Sistemas de Execução.


Um sistema de execução é o meio pelo qual a lista de negociações geradas pela estratégia é enviada e executada pelo corretor. Apesar do fato de que a geração de comércio pode ser semi ou totalmente automatizada, o mecanismo de execução pode ser manual, semi-manual (ou seja, "um clique") ou totalmente automatizado. Para estratégias de LFT, 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 estará intimamente ligado ao gerador de comércio (devido à interdependência entre estratégia e tecnologia).


As principais considerações ao criar um sistema de execução são a interface com a corretora, a minimização dos custos de transação (incluindo comissão, derrapagem e spread) e a divergência de desempenho do sistema ao vivo do desempenho do backtested.


Há muitas maneiras de interagir com uma corretora. Eles variam de chamar seu corretor pelo telefone até uma Application Programming Interface (API) de alto desempenho totalmente automatizada. O ideal é que você queira automatizar a execução de seus negócios o máximo possível. Isso libera você para se concentrar em mais pesquisas, bem como permitir que você execute várias estratégias ou mesmo estratégias de maior frequência (na verdade, HFT é essencialmente impossível sem execução automatizada). O software comum de backtesting descrito acima, como MATLAB, Excel e Tradestation, é bom para estratégias mais simples e de menor frequência. 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 eu costumava trabalhar, tínhamos um "loop de negociação" de 10 minutos, onde baixávamos novos dados de mercado a cada 10 minutos e depois executávamos negociações com base nessas informações no mesmo período de tempo. Isso estava usando um script Python otimizado. Para qualquer coisa que se aproxime de dados de frequência de minutos ou segundos, acredito que C / C ++ seria mais ideal.


Em um fundo maior, muitas vezes não é o domínio do comerciante de quantificação para otimizar a execução. No entanto, em pequenas lojas ou empresas de HFT, os comerciantes são os executores e, portanto, um conjunto de habilidades muito mais amplo é geralmente desejável. Tenha isso 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 econométricos!


Outra questão importante que cai sob a bandeira da execução é a minimização dos custos de transação. Geralmente, há três componentes nos custos de transação: Comissões (ou impostos), que são as taxas cobradas pela corretora, pela bolsa de valores e pela SEC (ou órgão regulador governamental similar); escorregamento, que é a diferença entre o que você pretendia que seu pedido fosse preenchido versus o que foi realmente preenchido; spread, que é a diferença entre o preço de compra / venda do título negociado. Observe que o spread NÃO é constante e depende da liquidez atual (ou seja, disponibilidade de ordens de compra / venda) no mercado.


Os custos de transação podem fazer a diferença entre uma estratégia extremamente lucrativa com um bom índice de Sharpe e uma estratégia extremamente não lucrativa com um índice de 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á acessar os dados históricos do câmbio, que incluirão dados de ticks para preços de compra / venda. Equipes inteiras de quantos são dedicadas à otimização da execução nos fundos maiores, por esses motivos. Considere o cenário em que um fundo precisa descarregar uma quantidade substancial de negociações (das quais as razões para isso são muitas e variadas!). Ao "despejar" tantas ações no mercado, elas rapidamente deprimirão o preço e podem não obter uma execução ideal. Daí algoritmos que "gotejam feed" ordens para o mercado existem, embora o fundo corre o risco de derrapagem. Além disso, outras estratégias "atacam" essas necessidades e podem explorar as ineficiências. Este é o domínio da arbitragem da estrutura do fundo.


A última grande questão para os sistemas de execução diz respeito à divergência de desempenho da estratégia do desempenho do backtested. Isso pode acontecer por vários motivos. Já analisamos o viés de look-ahead e o viés de otimização em profundidade, ao considerar os backtests. No entanto, algumas estratégias não facilitam o teste desses vieses antes da implantação. Isso ocorre em HFT mais predominantemente. Pode haver bugs no sistema de execução, bem como a própria estratégia de negociação que não aparece em um backtest, mas aparece no live trading. O mercado pode ter sido sujeito a uma mudança de regime após a implementação da sua estratégia. Novos ambientes regulatórios, mudanças no sentimento do investidor e fenômenos macroeconômicos podem levar a divergências na forma como o mercado se comporta e, portanto, na rentabilidade de sua estratégia.


Gerenciamento de riscos.


A peça final do quebra-cabeça de negociação quantitativa é o processo de gerenciamento de risco. "Risco" inclui todos os vieses anteriores que discutimos. Isso inclui risco de tecnologia, como servidores co-localizados na central de repente desenvolvendo um mau funcionamento do disco rígido. Isso inclui risco de corretagem, como o corretor estar falido (não tão louco quanto parece, dado o recente susto com a MF Global!). Em suma, abrange quase tudo o que poderia interferir com a implementação comercial, dos quais existem muitas fontes. Livros inteiros são dedicados ao gerenciamento de risco para estratégias quantitativas, então eu não tentarei elucidar todas as possíveis fontes de risco aqui.


A gestão de risco também abrange o que é conhecido como alocação de capital ideal, que é um ramo da teoria de portfólio. Esse é o meio pelo qual o capital é alocado a um conjunto de estratégias diferentes e aos 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 de Kelly. Como este é um artigo introdutório, não vou me alongar em seu cálculo. O critério de Kelly faz algumas suposições sobre a natureza estatística dos retornos, que muitas vezes não são verdadeiros nos mercados financeiros, de modo que os operadores geralmente são conservadores quando se trata da implementação.


Outro componente fundamental do gerenciamento de riscos é lidar com o próprio perfil psicológico. Existem muitos vieses cognitivos que podem surgir na negociação. Embora isso seja reconhecidamente menos problemático com negociação algorítmica se a estratégia for deixada em paz! 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á ganho pode ser muito grande. Outro viés comum é conhecido como viés de recência. Isso se manifesta quando os operadores enfatizam demais os eventos recentes e não a longo prazo. Então, é claro, há o par clássico de preconceitos emocionais - medo e ganância. Estes podem muitas vezes levar a sub ou sobre-alavancagem, o que pode causar blow-up (ou seja, o título da conta indo para 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 para as quais eu só dei uma ou duas sentenças. Por essa razão, antes de se candidatar a cargos quantitativos de negociação de fundos, é necessário realizar uma quantidade significativa de estudo de base. No mínimo, você precisará de um extenso conhecimento em estatística e econometria, com muita experiência em implementação, por meio de uma linguagem de programação como MATLAB, Python ou R. Para estratégias mais sofisticadas no final de frequência mais alta, seu conjunto de habilidades é provável para incluir a modificação do kernel do Linux, C / C ++, programação de montagem e otimização de latência de rede.


Se você estiver interessado em tentar criar suas próprias estratégias de negociação algorítmica, minha primeira sugestão seria se programar bem. Minha preferência é construir o máximo possível de dados capturados, backtester de estratégia e sistema de execução. Se o seu próprio capital está em jogo, não dormiria melhor à noite sabendo que você testou completamente o seu sistema e está ciente de suas armadilhas e problemas específicos? Terceirizar isso para um fornecedor, enquanto potencialmente economiza tempo a curto prazo, pode ser extremamente caro a longo prazo.


A Quantcademy.


Participe do portal de associação da Quantcademy que atende à crescente comunidade de traders de quantificação de varejo e aprenda como aumentar a lucratividade de sua estratégia.


O R Trader.


Usando R e ferramentas relacionadas em Finanças Quantitativas.


Arquivo para as Estratégias de Negociação & # 8216; & # 8217; Categoria.


Vinculando R ao IQFeed com o pacote QuantTools.


O IQFeed fornece serviços de dados de fluxo contínuo e soluções de negociação que cobrem o mercado agrícola, de energia e financeiro. É um provedor de feed de dados bem conhecido e reconhecido, voltado para usuários de varejo e pequenas instituições. O preço da assinatura começa em cerca de US $ 80 / mês.


Stanislav Kovalevsky desenvolveu um pacote chamado QuantTools. É um pacote tudo em um projetado para melhorar a modelagem de negociação quantitativa. Ele permite baixar e organizar dados históricos de mercado de várias fontes, como Yahoo, Google, Finam, MOEX e IQFeed. O recurso que mais me interessa é a capacidade de vincular o IQFeed à R. Eu uso o IQFeed há alguns anos e estou feliz com ele (não estou afiliado à empresa em nenhum caminho). Mais informações podem ser encontradas aqui. Eu tenho procurado uma integração dentro de R por um tempo e aqui está. Como resultado, depois que fiz alguns testes, mudei meu código que ainda estava em Python para R. Apenas para completar, aqui está um link que explica como baixar dados históricos do IQFeed usando Python.


A QuantTools oferece quatro funcionalidades principais: Obter dados de mercado, Armazenar / Recuperar dados de mercado, Dados de séries temporais de plotagem e Testes reversos.


Primeiro, verifique se o IQfeed está aberto. Você pode baixar dados diários ou intradiários. O código abaixo faz o download dos preços diários (Aberto, Alto, Baixo, Fechado) para o SPY de 1º de janeiro de 2017 a 1º de junho de 2017.


O código abaixo faz o download dos dados intraday de 1º de maio de 2017 a 3 de maio de 2017.


Observe o parâmetro do período. Pode usar qualquer um dos seguintes valores: tick, 1min, 5min, 10min, 15min, 30min, hora, dia, semana, mês, dependendo da freqüência que você precisa.


O QuantTools facilita o processo de gerenciar e armazenar dados do mercado de ticks. Você acabou de configurar os parâmetros de armazenamento e está pronto para começar. Os parâmetros são onde, desde que data e quais símbolos você gostaria de armazenar. Sempre que você puder adicionar mais símbolos e se eles não estiverem presentes em um armazenamento, o QuantTools tentará obter os dados da data de início especificada. O código abaixo salvará os dados no seguinte diretório: & # 8220; C: / Users / Arnaud / Documents / Market Data / feed & # 8221 ;. Há uma subpasta por instrumento e os dados são exibidos em arquivos. rds.


Você também pode armazenar dados entre datas específicas. Substitua a última linha de código acima por uma das abaixo.


Agora, se você quiser recuperar alguns dos dados armazenados, basta executar algo como:


Observe que apenas os ticks são suportados no armazenamento local, portanto, o período deve ser & # 8216; tick & # 8217;


O QuantTools fornece a função plot_ts para plotar dados de séries temporais sem fins de semana, feriados e lacunas durante a noite. No exemplo abaixo, primeiro recupero os dados armazenados acima, depois seleciono as primeiras 100 observações de preço e, finalmente, desenho o gráfico.


Duas coisas para notar: primeiro espião é um objeto data. table, portanto, a sintaxe acima. Para obter uma visão geral rápida dos recursos do data. table, confira esta excelente folha de dicas do DataCamp. Segundo, o parâmetro local é TRUE, pois os dados são recuperados do armazenamento interno.


O QuantTools permite escrever sua própria estratégia de negociação usando sua API C ++. Eu não vou elaborar sobre isso, pois isso é basicamente código C ++. Você pode consultar a seção Exemplos no site da QuantTools.


No geral, acho o pacote extremamente útil e bem documentado. O único bit faltante é o feed ao vivo entre R e IQFeed, que fará do pacote uma solução real de ponta a ponta.


Como de costume, qualquer comentário é bem-vindo.


BERT: um recém-chegado na conexão R Excel.


Há alguns meses, um leitor me mostrou essa nova maneira de conectar R e Excel. Eu não sei há quanto tempo isso acontece, mas nunca me deparei com isso e nunca vi nenhum post ou artigo de blog sobre isso. Então eu decidi escrever um post enquanto a ferramenta realmente vale a pena e antes que alguém pergunte, eu não estou relacionado à empresa de forma alguma.


BERT significa Basic Excel R Toolkit. É gratuito (licenciado sob a GPL v2) e foi desenvolvido pela Structured Data LLC. No momento em que escrevo, a versão atual do BERT é 1.07. Mais informações podem ser encontradas aqui. De uma perspectiva mais técnica, o BERT é projetado para suportar a execução de funções R a partir de células da planilha do Excel. Em termos do Excel, é para escrever Funções definidas pelo usuário (UDFs) em R.


Neste post eu não vou mostrar como R e Excel interagem via BERT. Há muito bons tutoriais aqui, aqui e aqui. Em vez disso, quero mostrar como usei BERT para construir uma torre de controle & # 8220; & # 8221; para minha negociação.


Meus sinais de negociação são gerados usando uma longa lista de arquivos R, mas eu preciso da flexibilidade do Excel para exibir os resultados de forma rápida e eficiente. Como mostrado acima, o BERT pode fazer isso para mim, mas também quero adaptar o aplicativo às minhas necessidades. Combinando o poder do XML, VBA, R e BERT, posso criar um aplicativo bonito, mas poderoso, na forma de um arquivo do Excel com código VBA mínimo. Por fim, tenho um único arquivo do Excel reunindo todas as tarefas necessárias para gerenciar meu portfólio: atualização de banco de dados, geração de sinal, submissão de pedidos, etc. & # 8230; Minha abordagem pode ser dividida nos três passos abaixo:


Use XML para criar menus e botões definidos pelo usuário em um arquivo do Excel. Os menus e botões acima são essencialmente chamadas para funções do VBA. Essas funções do VBA são encapsuladas em torno de funções R definidas usando BERT.


Com essa abordagem, posso manter uma clara distinção entre o núcleo do meu código mantido em R, SQL e Python e tudo o que é usado para exibir e formatar os resultados mantidos no Excel, VBA & amp; XML Nas próximas seções apresento o pré-requisito para desenvolver tal abordagem e um guia passo a passo que explica como o BERT poderia ser usado para simplesmente passar dados de R para o Excel com o mínimo de código VBA.


1 & # 8211; Baixe e instale o BERT neste link. Quando a instalação estiver concluída, você deve ter um novo menu Add-Ins no Excel com os botões, conforme mostrado abaixo. É assim que o BERT se materializa no Excel.


2 & # 8211; Faça o download e instale o editor de interface do usuário personalizada: O Editor de interface do usuário personalizado permite criar menus e botões definidos pelo usuário na faixa de opções do Excel. Um procedimento passo a passo está disponível aqui.


1 & # 8211; Código R: A função R abaixo é um código muito simples apenas para fins ilustrativos. Calcula e retorna os resíduos de uma regressão linear. É isso que queremos recuperar no Excel. Salve isso em um arquivo chamado myRCode. R (qualquer outro nome é bom) em um diretório de sua escolha.


2 & # 8211; functions. R em BERT: No Excel selecione Add-Ins - & gt; Diretório base e abra o arquivo chamado functions. R. Neste arquivo, cole o seguinte código. Certifique-se de inserir o caminho correto.


Isso é apenas o fornecimento de BERT no arquivo R que você criou acima. Em seguida, salve e feche as funções do arquivo. Se você quiser fazer qualquer alteração no arquivo R criado na etapa 1, terá que recarregá-lo usando o botão BERT & # 8220; Recarregar o arquivo de inicialização & # 8221; do menu Add-Ins no Excel.


3 & # 8211; No Excel: Crie e salve um arquivo chamado myFile. xslm (qualquer outro nome é bom). Este é um arquivo habilitado para macro que você salva no diretório de sua escolha. Depois que o arquivo for salvo, feche-o.


4 & # 8211; Abra o arquivo criado acima no editor da interface do usuário personalizada: Depois que o arquivo estiver aberto, cole o código abaixo.


Você deve ter algo parecido com isto no editor de XML:


Essencialmente, este pedaço de código XML cria um menu adicional (RTrader), um novo grupo (My Group) e um botão definido pelo usuário (New Button) na faixa de opções do Excel. Quando terminar, abra myFile. xslm no Excel e feche o Editor de UI personalizado. Você deveria ver algo assim.


5 & ​​# 8211; Abra o editor VBA: Em myFile. xlsm, insira um novo módulo. Cole o código abaixo no módulo recém-criado.


Isso apaga os resultados anteriores na planilha antes de lidar com os novos.


6 & # 8211; Clique no botão New: Agora volte para a planilha e no menu RTrader, clique no botão & # 8220; New Button & # 8221; botão. Você deve ver algo como o abaixo aparece.


O guia acima é uma versão muito básica do que pode ser obtido usando o BERT, mas mostra como combinar o poder de várias ferramentas específicas para criar seu próprio aplicativo personalizado. Da minha perspectiva, o interesse de tal abordagem é a capacidade de colar R e Excel, obviamente, mas também incluir pedaços de código XML (e em lote) do Python, SQL e muito mais. Isso é exatamente o que eu precisava. Por fim, gostaria de saber se alguém tem alguma experiência com o BERT?


Estratégia de negociação: aproveitando ao máximo os dados da amostra.


Ao testar estratégias de negociação, uma abordagem comum é dividir o conjunto de dados inicial em dados de amostra: a parte dos dados projetados para calibrar o modelo e os dados de amostra: a parte dos dados usada para validar a calibração e garantir que o desempenho criado na amostra será refletido no mundo real. Como regra geral, cerca de 70% dos dados iniciais podem ser usados ​​para calibração (ou seja, na amostra) e 30% para validação (ou seja, fora da amostra). Em seguida, uma comparação entre os dados de entrada e de saída ajuda a decidir se o modelo é suficientemente robusto. Este post visa dar um passo adiante e fornece um método estatístico para decidir se os dados fora da amostra estão alinhados com o que foi criado na amostra.


No gráfico abaixo, a área azul representa o desempenho fora da amostra de uma das minhas estratégias.


Uma inspeção visual simples revela um bom ajuste entre o desempenho de entrada e saída da amostra, mas que grau de confiança eu tenho nisso? Nesta fase não muito e esta é a questão. O que é realmente necessário é uma medida de similaridade entre os conjuntos de dados de entrada e de saída. Em termos estatísticos, isso pode ser traduzido como a probabilidade de que os números de desempenho dentro e fora da amostra sejam provenientes da mesma distribuição. Existe um teste estatístico não paramétrico que faz exatamente isso: o teste de Kruskall-Wallis. Uma boa definição deste teste pode ser encontrada no R-Tutor Uma coleção de amostras de dados é independente se eles vêm de populações não relacionadas e as amostras não afetam umas às outras. Usando o Teste de Kruskal-Wallis, podemos decidir se as distribuições populacionais são idênticas sem assumi-las para seguir a distribuição normal. & # 8221; O benefício adicional desse teste não está assumindo uma distribuição normal.


Existem outros testes da mesma natureza que poderiam se encaixar nessa estrutura. O teste de Mann-Whitney-Wilcoxon ou os testes de Kolmogorov-Smirnov se encaixam perfeitamente na estrutura descrita aqui, porém isso está além do escopo deste artigo para discutir os prós e contras de cada um desses testes. Uma boa descrição junto com exemplos de R pode ser encontrada aqui.


Aqui está o código usado para gerar o gráfico acima e a análise:


No exemplo acima, o período de amostragem é maior do que o período de amostragem, portanto, criei aleatoriamente 1.000 subconjuntos dos dados da amostra, cada um deles tendo o mesmo comprimento que os dados fora da amostra. Então, testei cada um em um subconjunto de amostras em relação aos dados fora da amostra e gravei os valores p. Esse processo não cria um único valor p para o teste Kruskall-Wallis, mas uma distribuição que torna a análise mais robusta. Neste exemplo, a média dos valores de p é bem acima de zero (0,478), indicando que a hipótese nula deve ser aceita: há fortes evidências de que os dados de entrada e saída da amostra são provenientes da mesma distribuição.


Como de costume, o que é apresentado neste post é um exemplo de brinquedo que apenas arranha a superfície do problema e deve ser adaptado às necessidades individuais. No entanto, penso que propõe um quadro estatístico interessante e racional para avaliar os resultados fora da amostra.


Este post é inspirado nos dois artigos seguintes:


Vigier Alexandre, Chmil Swann (2007), "Efeitos de várias funções de otimização no desempenho fora da amostra de estratégias de negociação geneticamente evoluídas", prevendo a conferência sobre mercados financeiros.


Vigier Alexandre, Chmil Swann (2010), «Um processo de otimização para melhorar a consistência da amostra, um caso da Bolsa de Valores», JP Morgan Cazenove Equity Quantitative Conference, Londres, outubro de 2010.


Apresentando o fidlr: LoanceR de Dados Financeiros.


O fidlr é um suplemento do RStudio projetado para simplificar o processo de download de dados financeiros de vários provedores. Esta versão inicial é um wrapper em torno da função getSymbols no pacote quantmod e somente o Yahoo, Google, FRED e Oanda são suportados. Eu provavelmente adicionarei funcionalidades ao longo do tempo. Como de costume com essas coisas, apenas um lembrete: "O SOFTWARE É FORNECIDO" COMO ESTÁ, SEM GARANTIA DE NENHUM TIPO "# 8230; & # 8221;


Como instalar e usar o fidlr?


Você pode obter o addin / package do seu repositório Github aqui (eu vou registrá-lo no CRAN mais tarde) Instale o addin. Existe um excelente tutorial para instalar o RStudio Addins aqui. Depois que o addin é instalado, ele deve aparecer no menu Addin. Basta escolher fidlr no menu e uma janela como abaixo deve aparecer. Escolha um provedor de dados no menu suspenso Origem. Selecione um intervalo de datas no menu Data Insira o símbolo que você deseja baixar na caixa de texto do instrumento. Para baixar vários símbolos basta digitar os símbolos separados por vírgulas. Use os botões de opção para escolher se deseja baixar o instrumento em um arquivo csv ou no ambiente global. O arquivo csv será salvo no diretório de trabalho e haverá um arquivo csv por instrumento. Pressione Executar para obter os dados ou Fechar para fechar o suplemento.


Mensagens de erro e avisos são manipulados pelos pacotes subjacentes (quantmod e Shiny) e podem ser lidos no console.


Esta é uma primeira versão do projeto, então não espere a perfeição, mas esperamos que melhore com o tempo. Por favor, informe qualquer comentário, sugestão, erro etc & # 8230; para: thertrader @ gmail.


Manter um banco de dados de arquivos de preços em R.


Fazer pesquisa quantitativa implica muita análise de dados e é preciso dados limpos e confiáveis ​​para conseguir isso. O que é realmente necessário são dados limpos que sejam facilmente acessíveis (mesmo sem uma conexão com a Internet). A maneira mais eficiente de fazer isso para mim foi manter um conjunto de arquivos csv. Obviamente, este processo pode ser tratado de várias maneiras, mas eu achei um tempo extra muito eficiente e simples para manter um diretório onde eu armazeno e atualizo arquivos csv. Eu tenho um arquivo csv por instrumento e cada arquivo é nomeado após o instrumento que ele contém. A razão pela qual eu faço isso é dupla: Primeiro, eu não quero baixar dados (de preço) do Yahoo, Google, etc & # 8230; toda vez que eu quiser testar uma nova ideia, mas mais importante, uma vez que eu identifiquei e consertei um problema, eu não quero ter que fazer isso novamente na próxima vez que eu precisar do mesmo instrumento. Simples, mas muito eficiente até agora. O processo é resumido no gráfico abaixo.


Em tudo o que se segue, presumo que os dados estão vindo do Yahoo. O código terá que ser alterado para os dados do Google, Quandl, etc & # 8230; Além disso, apresento o processo de atualização dos dados diários de preços. A configuração será diferente para dados de frequência mais alta e outro tipo de conjunto de dados (ou seja, diferente dos preços).


1 & # 8211; Download de dados inicial (listOfInstruments. R & amp; historicalData. R)


O arquivo listOfInstruments. R é um arquivo contendo apenas a lista de todos os instrumentos.


Se um instrumento não é parte da minha lista (ou seja, nenhum arquivo csv na minha pasta de dados) ou se você fizer isso pela primeira vez, você terá que baixar o conjunto de dados históricos inicial. O exemplo abaixo faz o download de um conjunto de cotações diárias dos ETFs do Yahoo Finance até janeiro de 2000 e armazena os dados em um arquivo csv.


2 & # 8211; Atualizar dados existentes (updateData. R)


O código abaixo começa a partir de arquivos existentes na pasta dedicada e atualiza todos eles um após o outro. Eu costumo executar este processo todos os dias, exceto quando eu estou de férias. Para adicionar um novo instrumento, basta executar o passo 1 acima apenas para este instrumento.


3 & # 8211; Crie um arquivo de lote (updateDailyPrices. bat)


Outra parte importante do trabalho é criar um arquivo em lotes que automatize o processo de atualização acima (eu sou um usuário do Windows). Isso evita abrir o R ​​/ RStudio e executar o código a partir dele. O código abaixo é colocado em um arquivo. bat (o caminho deve ser alterado com a configuração do leitor). Note que eu adicionei um arquivo de saída (updateLog. txt) para rastrear a execução.


O processo acima é extremamente simples, pois descreve apenas como atualizar dados de preços diários. Eu tenho usado isso por um tempo e tem funcionado muito bem para mim até agora. Para dados mais avançados e / ou freqüências mais altas, as coisas podem ficar muito mais complicadas.


Como de costume, qualquer comentário é bem-vindo.


Avaliação fatorial na gestão quantitativa de portfólios.


Quando se trata de gerenciar uma carteira de ações versus um benchmark, o problema é muito diferente de definir uma estratégia de retorno absoluto. No primeiro, é preciso manter mais estoques do que no segundo, onde nenhuma ação pode ser mantida se não houver oportunidade suficiente. A razão para isso é o erro de rastreamento. Isso é definido como o desvio padrão do retorno da carteira menos o retorno de referência. Quanto menos ações forem mantidas em relação a um benchmark, maior será o erro de rastreamento (por exemplo, maior risco).


A análise a seguir é amplamente inspirada no livro "Active Portfolio Management" # 8221; por Grinold & amp; Kahn Esta é a bíblia para qualquer pessoa interessada em administrar um portfólio em relação a um benchmark. Eu encorajo fortemente qualquer pessoa com interesse no tópico a ler o livro do começo ao fim. É muito bem escrito e estabelece as bases da gestão sistemática de carteiras ativas (não tenho nenhuma afiliação ao editor ou aos autores).


Aqui, estamos tentando classificar com a maior precisão possível as ações no universo de investimento em uma base de retorno a termo. Muitas pessoas criaram muitas ferramentas e inúmeras variantes dessas ferramentas foram desenvolvidas para conseguir isso. Neste post concentro-me em duas métricas simples e amplamente utilizadas: Coeficiente de Informação (IC) e Quantiles Return (QR).


O CI fornece uma visão geral da capacidade de previsão do fator. Mais precisamente, isso é uma medida de quão bem o fator classifica os estoques em uma base de retorno a termo. O IC é definido como a correlação de classificação (ρ) entre a métrica (por exemplo, fator) e o retorno para a frente. Em termos estatísticos, a correlação de postos é uma medida não paramétrica da dependência entre duas variáveis. Para uma amostra de tamanho n, as n pontuações brutas são convertidas em classificações e ρ é calculado a partir de:


O horizonte para o retorno para frente tem que ser definido pelo analista e é uma função do turnover da estratégia e da decadência alfa (isso tem sido objeto de extensa pesquisa). Obviamente, os CIs devem ser o mais alto possível em termos absolutos.


Para o leitor atento, no livro de Grinold & amp; Kahn é uma fórmula que liga a Relação de Informação (IR) e IC: com amplitude sendo o número de apostas independentes (trades). Essa fórmula é conhecida como a lei fundamental do gerenciamento ativo. O problema é que, muitas vezes, definir com precisão a amplitude não é tão fácil quanto parece.


Para obter uma estimativa mais precisa do fator poder preditivo, é necessário dar um passo além e agrupar os estoques por quantis de valores de fatores e, em seguida, analisar o retorno médio a termo (ou qualquer outra métrica de tendência central) de cada um deles. quantis. A utilidade desta ferramenta é simples. Um fator pode ter um bom IC, mas seu poder preditivo pode ser limitado a um pequeno número de ações. Isso não é bom, pois um gerente de portfólio terá que escolher ações dentro de todo o universo para cumprir sua restrição de erro de rastreamento. Os bons quantis-retorno são caracterizados por uma relação monótona entre os quantis individuais e os retornos futuros.


Todas as ações no índice S & amp; P500 (no momento da redação). Obviamente, há um viés de sobrevivência: a lista de ações no índice mudou significativamente entre o início e o final do período de amostragem, no entanto, é bom o suficiente apenas para fins ilustrativos.


O código abaixo faz o download dos preços das ações individuais no S & amp; P500 entre janeiro de 2005 e hoje (leva um tempo) e transforma os preços brutos em retorno nos últimos 12 meses e no último mês. O primeiro é o nosso fator, o último será usado como medida de retorno para frente.


Abaixo está o código para calcular o Coeficiente de Informação e o Retorno de Quantiles. Observe que eu usei quintis neste exemplo, mas qualquer outro método de agrupamento (terciles, deciles, etc.) pode ser usado. isso realmente depende do tamanho da amostra, do que você quer capturar e do tempo em que deseja ter uma visão geral ampla ou se concentrar nas caudas de distribuição. Para estimar os retornos dentro de cada quintil, a mediana tem sido usada como o estimador de tendência central. Essa medida é muito menos sensível a outliers do que a média aritmética.


E finalmente o código para produzir o gráfico de retorno Quantiles.


3 & # 8211; Como explorar as informações acima?


No gráfico acima, o Q1 é mais baixo nos últimos 12 meses e o Q5, o mais alto. Há um aumento quase monótono no retorno dos quantis entre Q1 e Q5, o que indica claramente que os estoques que caem em Q5 superam aqueles que caem em Q1 em cerca de 1% ao mês. Isso é muito significativo e poderoso para um fator tão simples (não é realmente uma surpresa, ainda que & # 8230;). Portanto, há maiores chances de vencer o índice superpondo as ações no Q5 e subestimando as que caem no primeiro trimestre em relação ao benchmark.


Um IC de 0,0206 pode não significar muito em si, mas é significativamente diferente de 0 e indica um bom poder de previsão dos últimos 12 meses de retorno geral. Testes de significância formal podem ser avaliados, mas isso está além do escopo deste artigo.


A estrutura acima é excelente para avaliar a qualidade dos fatores de investimento, mas há uma série de limitações práticas que devem ser abordadas para a implementação na vida real:


Reequilíbrio: Na descrição acima, é assumido que no final de cada mês a carteira é totalmente reequilibrada. Isso significa que todas as ações que caíram no 1T estão abaixo do peso e todas as ações que caíram no 5ºT estão com sobrepeso em relação ao benchmark. Isso nem sempre é possível por razões práticas: algumas ações podem ser excluídas do universo de investimentos, existem restrições sobre o peso da indústria ou do setor, há restrições no volume de negócios etc. & # 8230; Custos de Transação: Isso não foi levado em consideração na análise acima e isso é um sério freio para a implementação da vida real. Considerações de rotatividade são geralmente implementadas na vida real em uma forma de penalidade na qualidade do fator. Coeficiente de transferência: Esta é uma extensão da lei fundamental da gestão ativa e relaxa a suposição do modelo de Grinold de que os gerentes não enfrentam restrições que os impeçam de traduzir suas percepções de investimentos diretamente em apostas de portfólio.


E, finalmente, estou espantado com o que pode ser alcançado em menos de 80 linhas de código com o R & # 8230;


Como de costume, qualquer comentário é bem-vindo.


Risco como uma Variável de Sobrevivência & # 8221;


Me deparo com muitas estratégias na blogosfera, algumas são interessantes, algumas são uma completa perda de tempo, mas a maioria compartilha uma característica comum: pessoas desenvolvendo essas estratégias fazem sua lição de casa para analisar o retorno, mas muito menos atenção é dada ao lado do risco sua natureza aleatória. Eu vi comentários como "um rebaixamento de 25% em 2011, mas um excelente retorno geral". Bem, a minha aposta é que ninguém na terra permitirá que você experimente uma perda de 25% com seu dinheiro (a menos que acordos especiais estejam em vigor). No mundo dos fundos de hedge, as pessoas têm muito pouca tolerância ao saque. Geralmente, como um novo operador em um fundo de hedge, supondo que você não tenha reputação, você tem muito pouco tempo para se provar. Você deve ganhar dinheiro a partir do primeiro dia e continuar fazendo isso por alguns meses antes de ganhar um pouco de credibilidade.


Primeiro, digamos que você começou mal e perdeu dinheiro no começo. Com um rebaixamento de 10%, você certamente está fora, mas mesmo com um rebaixamento de 5%, as chances de ver sua alocação reduzida são muito altas. Isso tem implicações significativas em suas estratégias. Suponhamos que, se você perder 5%, sua alocação será dividida por 2 e você voltará a sua alocação inicial somente quando ultrapassar a marca d'água alta novamente (por exemplo, o levantamento voltará a 0). No gráfico abaixo, simulei o experimento com uma das minhas estratégias.


Você começa a operar em 1º de junho de 2003 e tudo vai bem até 23 de julho de 2003, onde sua curva de rebaixamento atinge o limite de -5% (** 1 **). Sua alocação é reduzida em 50% e você não cruza o limite máximo até 05 de dezembro de 2003 (** 3 **). Se você mantiver a alocação inalterada, o nível da marca d'água alta teria sido ultrapassado em 28 de outubro de 2003 (** 2 **) e até o final do ano você teria ganho mais dinheiro.


Mas vamos empurrar o raciocínio um pouco mais. Ainda no gráfico acima, suponha que você tenha muito azar e comece a negociar em meados de junho de 2003. Você atingiu o limite de rebaixamento de 10% no início de agosto e está provavelmente fora do jogo. Você teria começado no início de agosto a sua alocação não teria sido cortada e você acaba fazendo um bom ano em apenas 4 meses completos de negociação. Nesses dois exemplos, nada mudou, mas sua data de início & # 8230 ;.


O sucesso comercial de qualquer indivíduo tem alguma forma de dependência de caminho e não há muito o que fazer sobre isso. No entanto, você pode controlar o tamanho do drawdown de uma estratégia e isso deve ser tratado com muito cuidado. Um portfólio deve ser diversificado em todas as dimensões possíveis: classes de ativos, estratégias de investimento, frequências de negociação, etc & # 8230 ;. Dessa perspectiva, o risco é a sua "variável de sobrevivência". Se gerenciado corretamente, você tem a chance de permanecer no jogo por tempo suficiente para perceber o potencial de sua estratégia. Caso contrário, você não estará lá no próximo mês para ver o que acontece.


Como de costume, qualquer comentário é bem-vindo.


Um aplicativo simples e brilhante para monitorar as estratégias de negociação & # 8211; Parte II.


Esta é uma continuação do meu post anterior & # 8220; Um aplicativo simples e simples para monitorar as estratégias de negociação & # 8220 ;. Eu adicionei algumas melhorias que tornam o aplicativo um pouco melhor (pelo menos para mim!). Abaixo está a lista de novos recursos:


Um arquivo. csv de amostra (aquele que contém os dados brutos) A & # 8220; EndDate & # 8221; caixa suspensa que permite especificar o final do período. A & # 8220; Risco & # 8221; página contendo uma análise de VaR e um gráfico de pior desempenho ao longo de vários horizontes A & # 8220; How To & # 8221; página explicando como usar e adaptar o aplicativo às necessidades individuais.


Eu também fiz o aplicativo totalmente auto-contido. Agora ele está disponível como um produto autônomo e não é necessário ter o R ​​/ RStudio instalado em seu computador para executá-lo. Ele pode ser baixado da conta do Google R Trader Google. Esta versão do aplicativo é executada usando o R portátil e o Chrome portátil. Para o leitor atento, este link explica detalhadamente como empacotar um aplicativo Shiny em um aplicativo de desktop (somente Windows por enquanto).


1 & # 8211; Como instalar o & amp; execute o aplicativo no seu computador.


Criar uma pasta específica Descompacte o conteúdo do arquivo. zip nessa nova pasta. Altere os caminhos no arquivo runShinyApp para corresponder às suas configurações Para executar o aplicativo, basta ativar o arquivo run. vbs. Eu também incluí um ícone (RTraderTradingApp. ico) se você quiser criar um atalho na sua área de trabalho.


ui. R: controla o layout e a aparência do servidor de aplicativos. R: contém as instruções necessárias para criar o aplicativo. Você pode carregar quantas estratégias quiser, contanto que o arquivo csv correspondente tenha o formato correto (veja abaixo). shinyStrategyGeneral. R: carrega os pacotes necessários e inicia o aplicativo.


3 & # 8211; Como adicionar uma estratégia de negociação?


Crie o arquivo. csv correspondente no diretório direito Crie uma nova entrada na função reativa de dados (dentro do arquivo server. R) Adicione um elemento extra ao parâmetro choice na primeira selectInput no sidebarPanel (dentro do arquivo ui. R) . O nome do elemento deve corresponder ao nome da nova entrada acima.


Remova a entrada na função reativa de dados correspondente à estratégia que você deseja remover (dentro do arquivo server. R). Remova o elemento no parâmetro choice na primeira selectInput no sidebarPanel correspondente à estratégia que você deseja remover (dentro da interface do usuário). Arquivo. R).


Por favor, sinta-se à vontade para entrar em contato caso tenha alguma sugestão.


Um aplicativo simples e brilhante para monitorar as estratégias de negociação.


Em um post anterior, mostrei como usar R, Knitr e LaTeX para criar um relatório de estratégia de modelo. Este post vai um passo além, tornando a análise interativa. Além da interatividade, o Aplicativo Brilhante também resolve dois problemas:


Agora posso acessar todas as minhas estratégias de negociação a partir de um único ponto, independentemente do instrumento negociado. Juntamente com a interatividade brilhante, permite uma comparação mais fácil. Eu posso me concentrar em um período de tempo específico.


O código usado neste post está disponível em um repositório Gist / Github. Existem essencialmente 3 arquivos.


ui. R: controla o layout e a aparência do aplicativo. server. R: contém as instruções necessárias para criar o aplicativo. Ele carrega os dados e os formata. Há um arquivo csv por estratégia, cada um contendo pelo menos duas colunas: date e retorna com o seguinte formato: (& # 8220; 2010-12-22 & # 8243;, & # 8221; 0.04% & # 8221;). Você pode carregar quantas estratégias quiser, desde que elas tenham o formato correto. shinyStrategyG eneral. R: carrega os pacotes necessários e inicia o aplicativo.


Este aplicativo está provavelmente longe de ser perfeito e certamente o aprimorarei no futuro. Sinta-se à vontade para entrar em contato caso tenha alguma sugestão.


Um grande obrigado à equipe do RStudio / Shiny por uma ótima ferramenta.


Usando Algoritmos Genéticos no Comércio Quantitativo.


A pergunta que se deve sempre fazer quando se utiliza indicadores técnicos é o que seria um critério objetivo para selecionar os parâmetros dos indicadores (por exemplo, por que usar uma RSI de 14 dias em vez de 15 ou 20 dias?). Algoritmos genéticos (GA) são ferramentas adequadas para responder a essa pergunta. Neste post eu vou mostrar como configurar o problema em R. Antes de prosseguir, o lembrete usual: O que eu apresento neste post é apenas um exemplo de brinquedo e não um convite para investir. Também não é uma estratégia acabada, mas uma ideia de pesquisa que precisa ser mais pesquisada, desenvolvida e adaptada às necessidades individuais.


O que são algoritmos genéticos?


A melhor descrição do GA que eu descobri vem da Cybernatic Trading, um livro de Murray A. Ruggiero. Os algoritmos genéticos foram inventados por John Holland em meados de 1970 para resolver problemas difíceis de otimização. Este método usa a seleção natural, sobrevivência do mais apto & # 8221;. O processo geral segue as etapas abaixo:


Codifique o problema em cromossomos Usando a codificação, desenvolva uma função de adequação para avaliar o valor de cada cromossomo na solução de um determinado problema Inicialize uma população de cromossomos Avalie cada cromossomo na população Crie novos cromossomos acasalando dois cromossomos. Isso é feito mutando e recombinando dois pais para formar dois filhos (os pais são selecionados aleatoriamente, mas influenciados por sua aptidão) Avaliar o novo cromossomo Excluir um membro da população que está menos apto do que o novo cromossomo e inserir o novo cromossomo na população . Se o critério de parada for atingido (número máximo de gerações, os critérios de aptidão são bons o suficiente & # 8230;) então retorne o melhor cromossomo ou vá para o passo 4.


De uma perspectiva de negociação, GA é muito útil porque é bom em lidar com problemas altamente não-lineares. No entanto, eles exibem algumas características desagradáveis ​​que valem a pena mencionar:


Over fitting: Este é o principal problema e cabe ao analista configurar o problema de forma a minimizar esse risco. Tempo de computação: Se o problema não for definido corretamente, pode ser extremamente longo para chegar a uma solução decente e a complexidade aumenta exponencialmente com o número de variáveis. Daí a necessidade de selecionar cuidadosamente os parâmetros.


Existem vários pacotes R lidando com GA, eu escolhi usar o mais comum: rgenoud.


Os preços de fechamento diários para a maioria dos ETFs líquidos do Yahoo financiam desde janeiro de 2000. O período de amostragem vai de janeiro de 2000 a dezembro de 2010. O período fora da amostra começa em janeiro de 2011.


A lógica é a seguinte: a função de adequação é otimizada durante o período de amostragem para obter um conjunto de parâmetros ótimos para os indicadores técnicos selecionados. O desempenho desses indicadores é então avaliado no período fora da amostra. Mas antes disso, os indicadores técnicos devem ser selecionados.


O mercado de ações apresenta duas características principais que são familiares para qualquer pessoa com alguma experiência de negociação. Momento de longo prazo e reversão de curto prazo. Essas características podem ser traduzidas em termos de indicadores técnicos por: médias móveis cross over e RSI. Isto representa um conjunto de 4 parâmetros: Períodos de look-back para médias móveis de longo e curto prazo, período de retorno para o RSI e limiar RSI. Os conjuntos de parâmetros são os cromossomos. O outro elemento-chave é a função de fitness. Podemos querer usar algo como: máximo retorno ou taxa de Sharpe ou rebaixamento médio mínimo. A seguir, optei por maximizar o índice de Sharpe.


A implementação de R é um conjunto de 3 funções:


FunçãoFuncional: define a função de adequação (por exemplo, índice máximo de Sharpe) a ser usado no mecanismo de negociação do Google Analytics: resumo das estatísticas de negociação para dentro e fora dos períodos de amostra para fins de comparação genoud: o mecanismo GA do pacote rgenoud.


A função genoud é bastante complexa, mas eu não vou explicar o que cada parâmetro significa, pois quero manter este post curto (e a documentação é realmente boa).


Na tabela abaixo, apresento para cada instrumento os parâmetros ótimos (período de retorno do RSI, limiar do RSI, média móvel de curto prazo e média móvel de longo prazo) juntamente com as estatísticas de entrada e saída da amostra.


Abordagem Quant para Construir Estratégias de Negociação: Parte Um.


Recentemente, Quandl entrevistou um gerente sênior de carteira quantitativa em um grande fundo de hedge. Nós falamos sobre como ela constrói estratégias de negociação - como ela transita de uma representação abstrata do mercado para algo concreto com poderes preditivos genuínos.


Você pode nos dizer como você cria 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 descobri que impulsiona o comportamento de precificação de micro. Então eu escrevo uma equação - um modelo, se você quiser - que visa capturar esse relacionamento. Normalmente, haverá algum tipo de equação de processo que mostra como as variáveis ​​evoluem com o tempo, com um componente aleatório (estocástico).


O próximo passo é encontrar uma solução de formato fechado para este modelo. Às vezes isso é fácil; às vezes isso leva dias e semanas de álgebra; às vezes não há solução de forma fechada e tenho que me contentar com uma aproximação. Acho muito útil o kit de ferramentas de manipulação simbólica do Mathematica nesta etapa do processo.


Ok, agora eu tenho um modelo do mercado. Eu preciso testar se é realista. Nesta fase, geralmente me volto para o Matlab. Assumo alguns valores plausíveis para vários parâmetros e executo algumas simulações. As saídas simuladas parecem razoáveis? Eles refletem, pelo menos conceitualmente, a dinâmica real do mercado?


Assumindo que o modelo passe por essa verificação de integridade, é hora de ir além da exploração ou ideação do céu azul e da pesquisa formal.


O que você quer dizer com “pesquisa formal”? E por que isso é necessário?


Refiro-me à transição de uma representação abstrata e estilizada do mercado para algo concreto e não ambíguo, com poderes preditivos genuínos.


É difícil criar modelos realmente preditivos. Mas é muito fácil se enganar pensando que você criou um modelo preditivo, quando, na realidade, você simplesmente se ajustou ou usou testes na amostra ou impôs um conhecimento exógeno em suas regras, ou o que você tem. A maioria dos "sistemas" desmorona no mundo real por esse motivo preciso.


Eu não quero que isso aconteça ao meu modelo; Eu vou estar arriscando dinheiro real com isso. Assim, ao longo dos anos, construí e aprimorei uma abordagem sistemática, lenta e constante que minimiza o risco de me enganar. Isso é o que eu chamo de "pesquisa formal".


Quais etapas você inclui no seu processo formal de pesquisa?


Logo no início, meu maior medo é a contaminação de dados. A história é um recurso limitado; Depois de esgotar os dados históricos para testar, você não poderá gerar mais nenhum. Estou paranóico por não ter esgotado meu suprimento de dados fora de amostra não contaminados.


Então começo dividindo meus dados históricos em partes não sobrepostas. Eu então escolho aleatoriamente para que nem eu saiba qual pedaço é qual. (Isso protege contra preconceitos subconscientes: por exemplo, ter aversão ao risco quando eu sei que meu conjunto de dados de teste é 2008, ou que estou buscando risco em 2009).


Eu designo um pedaço como meu conjunto de calibração. Eu costumo usar o Python para calibração: eu uso suas bibliotecas de otimização internas e escrevi algumas das minhas. Neste exemplo em particular, meus parâmetros são restritos e correlacionados. Então eu uso um processo de otimização de 2 etapas chamado algoritmo EM. Os otimizadores podem ser sensíveis às condições iniciais, então eu uso o Monte Carlo para escolher um número de pontos de partida no espaço da solução. Tudo isso é muito 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 reais do mercado para prever outros preços de mercado.


Depois de calibrar o modelo, testei a amostra. As previsões são estáveis ​​e os resíduos significam uma reversão? Se não, o modelo não funciona; tão simples como isso. Eu tento vários "truques" para quebrar o modelo. Por exemplo, calibre dados mensais, mas teste em dados diários. Ou eu testo parâmetros dos EUA nos dados do mercado canadense. Se o modelo reflete verdadeiramente a realidade econômica subjacente, deve ser bastante robusto para esses tipos de ataques. (Economia não muda quando você cruza fronteiras).


Então, você separa estritamente na amostra e fora da amostra; você se cega para intervalos de datas; você usa Monte Carlo para evitar vieses de ponto inicial; e você tenta vários truques de robustez. O que mais você faz para garantir que não se engane?


Eu coloco um prêmio muito alto em parcimônia. Se meu modelo requer muitos parâmetros ou tem muitos graus de liberdade, é apenas ajuste de curva; não é um modelo de todo. Então, estou constantemente tentando remover fatores. Se o modelo continuar funcionando (e permanecer "rico") com vários fatores removidos, provavelmente será um bom.


Uma segunda prova de robustez é se o modelo funciona bem, não importa qual estratégia de negociação você construa em cima dele. Se você só pode ganhar dinheiro usando uma regra de escala não linear complexa com todos os tipos de condições de borda, isso sugere uma falta de robustez.


Por fim, não há substituto para os dados. Penso em todos os conjuntos de dados possíveis fora da amostra em que posso testar o modelo de forma plausível: diferentes países, diferentes instrumentos, diferentes intervalos de tempo, diferentes frequências de datas. O modelo tem que trabalhar em todos eles; senão você tem viés 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 de PL. Resíduos de reversão média podem não ser suficientes se o conjunto de oportunidades for muito pequeno para compensar o bid-ask, ou se as explosões ocasionais matarem todos os meus lucros. Então eu preciso testar uma estratégia de negociação real usando o meu modelo. Aqui é onde eu tenho que exercitar o máximo cuidado: é muito fácil adaptar-se à curva adicionando novas variáveis ​​livres, ou distorcer os resultados com conhecimento subconsciente, ou eliminar os valores discrepantes. 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 existe um limite superior em quão complexo eu posso fazer minhas regras de negociação. Isso é uma coisa boa: uma estratégia que requer complexidade para ser lucrativa provavelmente não é uma boa estratégia em primeiro lugar.


O Excel também permite que eu veja minhas suposições explicitadas; É fácil perder o controle de tais coisas quando você está trabalhando no código. Ele me permite visualizar as estatísticas de desempenho (risco, retorno, rebaixamentos, eficiência de capital, taxa 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 será economicamente viável, portanto, essas estatísticas são importantes.


Muito poucos modelos de negociação superam todas as etapas acima: formulação de blue-sky e testes de sanidade; calibração histórica e desempenho fora da amostra; back-test e rentabilidade da estratégia de negociação. Mas, para os poucos que fazem isso, agora é hora de entrar em produção. Este é um jogo totalmente diferente.


Você pode ler a segunda parte da entrevista aqui. Nele, discutimos como a produção é um jogo totalmente novo e onde obter ideias para novas estratégias. Também respondemos às perguntas do leitor na terceira parte da entrevista.


Alguma pergunta para o nosso quant? Comentários? Deixe-os abaixo e ela responderá a você. Gostaríamos de saber sobre seu processo de criação de estratégias de negociação.


A abordagem de Quant para construir estratégias de negociação: parte dois.


Esta é a segunda parte de nossa entrevista com um gerente de carteira quantitativa sênior em um grande fundo de hedge. Na primeira parte, cobrimos a fase teórica da criação de uma estratégia de negociação quantitativa. Nesta parte, cobrimos a transição para a produção do & # 8220 ;. & # 8221; Também publicamos uma terceira parte com respostas para os leitores & # 8217; questões.


Você pode ler a terceira parte da entrevista aqui.


O que a mudança para a produção implica?


Para começar, eu agora tenho que me preocupar com o “mundo real” - nuances como convenções de contagem de dias, datas de liquidação e feriados. Ao calibrar dados históricos, você pode obter aproximações para estes. Mas quando se trata de negociações ao vivo individuais, você não pode ser desleixado; você tem que ser exato.


Outro aspecto da produção é que a velocidade é crítica. Não consigo encaixar meu modelo nos dados de mercado em tempo real (a descida de gradiente é lenta!). Em vez disso, preciso reduzir tudo a aproximações lineares de alterações. Isso implica muita manipulação de matriz.


Eu costumo construir um protótipo de execução que faz tudo "corretamente", mas ineficiente. Em seguida, entrego isso aos meus colegas de engenharia que criam uma versão de desempenho em Python ou até em C, usando as bibliotecas de mercado que eles construíram ao longo dos anos. E essa versão canaliza sua saída para a minha estação de negociação, para eu realmente começar a executar essa estratégia.


E então, com sorte, eu começo a ganhar dinheiro.


Quanto tempo esse processo inteiro leva?


Em geral, leva meses de trabalho para trazer uma nova estratégia de desenho à produção - e isso é para as estratégias que realmente funcionam. A maioria não E mesmo as estratégias bem-sucedidas têm um prazo de validade de dois anos antes de serem arbitradas, de modo que o processo acima se repete o tempo todo. Eu tenho que reinventar minha abordagem de negociação a cada poucos anos.


Você já se preocupou que as oportunidades baseadas em modelos que você se esforça para capturar desaparecerão para sempre?


Claro. Na minha experiência, todas as oportunidades acabam por desaparecer. E, de fato, um dos maiores desafios no tipo de modelagem que faço é saber quando um modelo ativo é obsoleto. Todos os modelos perdem dinheiro em alguns dias e semanas. E é muito difícil reconhecer quando as perdas fazem parte de um modelo que ainda está funcionando e quando essas perdas estão sinalizando a morte do modelo.


De onde você tira idéias para novos modelos ou estratégias de negociação?


Em qualquer lugar eu posso! Mas tenho alguns caminhos para os quais recorro bastante consistentemente.


Primeiro, dados. Se você tem uma fonte nova ou obscura de dados que antecipa o mercado de alguma forma, essa é a maneira mais fácil de gerar alfa. Nos dias de hoje, especialmente, há muitas novas fontes de dados interessantes: startups coletando novos conjuntos de dados; empresas de análise com indicadores preditivos; grandes corporações com “escape de dados” que podemos extrair; e agregadores como Quandl para reuni-los. Estou sempre à procura de conjuntos de dados interessantes, incomuns e preditivos.


Em segundo lugar, os próprios mercados. Os banqueiros estão sempre inventando novos instrumentos, e eles tipicamente promovem novas ineficiências. Se você mantiver o dedo no pulso do mercado, é muito fácil encontrar oportunidades baseadas em modelos que participantes menos sofisticados podem perder.


Em terceiro lugar, padrões globais. A história pode não se repetir, mas certamente rima. Por exemplo, se você quiser negociar a curva de juros dos EUA, o mercado japonês é uma rica fonte de idéias; O Japão passou por taxas de juros zero anos antes dos EUA. Na verdade, construí alguns modelos bem-sucedidos do mercado de títulos do Tesouro dos EUA baseados apenas no comportamento dos JGBs uma década antes.


Quarta analogias. Alguns dos melhores negócios ocorrem porque eu aplico o pensamento do regime A dentro do regime B. Diferentes classes de ativos têm diferentes graus de sofisticação; você pode arbitrar essa diferença.


Quinto, apenas mantenho meus olhos e ouvidos abertos. O mundo é um lugar bastante ineficiente; se você é curioso e continue perguntando "por quê? / porque não? ”, você sempre encontrará oportunidades.


Parece que você usa muitas ferramentas - Mathematica, Matlab, Python, Excel, C. Isso é deliberado?


Absolutamente. Diferentes etapas no pipeline exigem ferramentas diferentes. Eu seria um idiota em construir sistemas de desempenho em tempo real no Excel ou fazer manipulação simbólica no Python. Não que isso não possa ser feito, mas há outras ferramentas que são melhores para essas tarefas.


Como você gerencia o fluxo de dados para todos esses estágios e ferramentas?


Nos primeiros dias, ainda estou trabalhando na prova de conceito, por isso os dados estilizados estão bem. Mas à medida que o modelo se aproxima e se aproxima da produção, mais granular e “real” os dados se tornam. Há toda uma infraestrutura separada para obter dados de alta qualidade e mantê-los - o Quandl ajuda aqui - sobre o qual eu não falei, mas a verdade é que isso é crítico. O melhor modelo do mundo falhará se as entradas de dados estiverem incorretas. Nenhuma quantidade de habilidade pode compensar dados ruins.


(Recebemos tantas perguntas excelentes dos leitores que publicamos uma terceira parte desta série.)


Enquanto isso, damos boas-vindas a mais de suas perguntas! Se você tiver dúvidas ou comentários, deixe-os abaixo e nosso quant responderá a você.


Estratégia de negociação em pares [EXCEL MODEL]


Introdução.


Pair trading é uma estratégia de negociação que corresponde a uma posição longa em uma ação / ativo com uma posição de compensação em outra ação / ativo que é estatisticamente relacionada. Pair trading é uma estratégia de reversão à média, em que apostamos que os preços reverterão para suas tendências históricas.


Quem pode usar este modelo do Excel?


Pessoas interessadas em negociação algorítmica e Quant, aquelas que querem aprender sobre arbitragem estatística.


Como isso ajuda?


Este modelo de excel irá ajudá-lo a:


Aprender a aplicação de reversão à média Compreender de par de negociação Otimizar os parâmetros de negociação Compreender retornos significativos de arbitragem estatística.


Por que você deve baixar o modelo de negociação?


Como a lógica de negociação é codificada nas células da planilha, você pode entender melhor baixando e analisando os arquivos conforme sua conveniência. Não apenas isso, você pode brincar com os números para obter melhores resultados. Você pode encontrar parâmetros adequados que proporcionem lucros maiores do que o especificado no artigo.


Explicação do modelo.


Neste exemplo, consideramos o par MSCI e Nifty como ambos são índices do mercado de ações. Nós implementamos a estratégia de reversão da média neste par. A reversão à média é uma propriedade de séries temporais estacionárias. Como afirmamos que o par que escolhemos é a reversão, devemos testar se ele segue a estacionariedade.


O diagrama a seguir mostra a plotagem da proporção logarítmica de Nifty para MSCI. No início, isso parece ser revertendo com um valor médio de 2.088, mas usamos o Teste Dicky Fuller para testar se ele é estacionário com significância estatística. Os resultados da tabela de saída de Cointegração mostram que a série de preços é estacionária e, portanto, significa reversão. A estatística de Teste de Dicky Fuller e um valor de p significativamente baixo (& lt; 0,05) confirma nossa suposição. Tendo determinado que a reversão da média é verdadeira para o par escolhido, procedemos com a especificação de suposições e parâmetros de entrada.


Premissas.


Para fins de simplificação, ignoramos os spreads bid-ask. Os preços estão disponíveis em intervalos de 5 minutos e nós negociamos apenas com o preço de fechamento de 5 minutos. Uma vez que isto é um dado discreto, a quadratura da posição acontece no final da vela, isto é, ao preço disponível no final de 5 minutos. Apenas a sessão regular (T) é negociada. Os custos de transação são de US $ 0,375 para Nifty e US $ 1,10 para MSCI. A margem para cada negociação é de $ 990 (aproximada de $ 1000).


Parâmetros de entrada.


Por favor, note que todos os valores para os parâmetros de entrada mencionados abaixo são configuráveis.


Média de 10 velas (uma vela = a cada 5 minutos) é considerada Uma pontuação “z” de +2 é considerada para compra e -2 para venda Um stop loss de $ 100 e limite de lucro de $ 200 é definido O tamanho do pedido para negociação MSCI é 50 (1 lote) e para Nifty é 6 (3 lotes)


Os dados de mercado e parâmetros de negociação são incluídos na planilha a partir da 12ª linha. Portanto, quando a referência é feita à coluna D, deve ficar óbvio que a referência começa de D12 em diante.


Explicação das colunas no Modelo do Excel.


A coluna C representa o preço do MSCI.


A coluna D representa o preço Nifty.


A coluna E é a razão logarítmica de Nifty para MSCI.


A coluna F calcula a média de 10 velas. Como 10 valores são necessários para cálculos médios, não há valores de F12 a F22. A fórmula = SE (A23 & gt; $ C $ 3, MÉDIA (ÍNDICE ($ E $ 13: $ E $ 1358, A23- $ C $ 3): E22), & # 8220; & # 8221;) significa que a média deve ser calculada apenas se a amostra de dados disponível for maior que 10 (ou seja, o valor especificado na célula C3), caso contrário, a célula deve ficar em branco. Considere a célula F22. Sua célula correspondente A22 tem um valor de 10. Como A22 & gt; $ C $ 3 falha, a entrada nessa célula está em branco. A próxima célula F23 tem um valor desde A23 & gt; $ C $ 3 é verdadeira. O próximo pedaço da fórmula.


MÉDIA (ÍNDICE ($ E $ 13: $ E $ 1358, A23 - $ C $ 3): E22) calcula o valor médio das últimas 10 (como mencionado na célula C3) das velas dos dados da coluna E. Lógica semelhante é válida para a coluna G, onde o desvio padrão é calculado. A pontuação “z” é calculada na coluna H. A fórmula para calcular a pontuação “z” é z = (x -) / (σ). Aqui x é a amostra (coluna E), é o valor médio (coluna F) e σ é o desvio padrão (coluna G).


Coluna I representa o sinal de negociação. Como mencionado nos parâmetros de entrada, se a pontuação "z" for inferior a -2, compramos e se ultrapassar +2, vendemos. Quando dizemos comprar, temos uma posição longa em 3 lotes de Nifty e temos uma posição curta em 1 lote de MSCI. Da mesma forma, quando dizemos vender, temos uma posição comprada em 1 lote de MSCI e temos uma posição vendida em 3 lotes de Nifty, assim alinhando a posição. Nós temos uma posição aberta o tempo todo.


Para entender o que isso significa, considere dois sinais de negociação "comprar" e "vender". Para o sinal de “compra”, como explicado anteriormente, compramos 3 lotes de futuro Nifty e um lote de 1 MSCI futuro. Uma vez que a posição é tomada, rastreamos a posição usando a coluna Status, ou seja, a coluna M. Em cada nova linha enquanto a posição continua, verificamos se o stop loss (como mencionado na célula C6) ou take profit (como mencionado na célula) C7) é atingido. O stop loss é dado o valor de USD -100, ou seja, a perda de USD 100 e o lucro é dado o valor de USD 200 nas células C6 e C7, respectivamente. Embora a posição não atinja qualquer stop loss ou take profit, continuamos com essa negociação e ignoramos todos os sinais que aparecem na coluna I. Quando a negociação atinge o stop loss ou o take profit, voltamos a analisar os sinais na coluna Eu e abrir uma nova posição de negociação assim que tivermos um sinal Comprar ou Vender na coluna I.


A coluna M representa os sinais de negociação com base nos parâmetros de entrada especificados. A coluna I já tem sinais de negociação e M informa-nos sobre o estado da nossa posição de negociação, ou seja, somos comprados ou baixos ou contabilizamos os lucros ou saímos com o stop loss. Se a negociação não for concluída, transportamos a posição para a próxima vela repetindo o valor da coluna de status na vela anterior. Se o movimento do preço ocorrer de tal forma que ele viole o TP ou SL dado, então nós ajustamos a nossa posição, denotando-a por “TP” e “SL”, respectivamente.


Coluna L representa Mark to Market. Especifica a posição da carteira no final do período de tempo. Conforme especificado nos parâmetros de entrada, trocamos 1 lote de MSCI e 3 lotes de Nifty. Portanto, quando negociamos nossa posição, é a diferença de preço apropriada (dependendo se somos comprados ou vendidos) multiplicada pelo número de lotes.


A coluna N representa o status de lucro / perda do negócio. P / L é calculado apenas quando tivermos quadrados nossa posição. A coluna O calcula o lucro acumulado.


A tabela de saída tem algumas métricas de desempenho tabuladas. A perda de todos os negócios deficitários é de $ 3699 e o lucro de negócios que atingem o TP é $ 9280. Assim, o total de P / L é $ 9280- $ 3699 = $ 5581. Negociações com prejuízo são as negociações que resultaram na perda de dinheiro nas posições de negociação. Comércios rentáveis ​​são os comércios de sucesso que terminam em ganhar causa. O lucro médio é a razão entre o lucro total e o número total de negócios. O lucro médio líquido é calculado após a subtração dos custos de transação, que equivalem a US $ 91,77.

Комментариев нет:

Отправить комментарий