Tuesday 3 April 2018

Estratégias de negociação backtesting matlab


A ideia geral


Para títulos de capital, um simples backtest normalmente consistirá em duas etapas:


Cálculo do retorno do portfólio resultante de sua regra de formação de portfólio (ou estratégia de negociação) Ajuste de risco dos retornos do portfólio usando um modelo de precificação de ativos.


O passo 2 é simplesmente uma regressão e computacionalmente muito simples no Matlab. O que é mais complicado é a implementação da etapa 1, que exigirá que você se sinta muito à vontade no Matlab, e existem diferentes maneiras de fazer isso.


Se você sabe como fazer uma regressão OLS no Matlab, o que você deve focar é todo tipo de manipulação de matriz.


Implementação no Matlab.


Formação de portfólio e cálculo de retornos.


Para dar um exemplo de como uma estratégia de negociação primitiva poderia ser implementada no Matlab, vamos supor dados de retorno mensais e um período de manutenção uniforme de um mês em ativos de $ n $ sobre períodos de $ k $, em que $ i \ in \ $ e $ k \ in \ $.


Supondo que não haja mudanças na composição do seu universo de estoque, sua matriz de devoluções $ X $ é de dimensões $ k \ times n $.


Onde retornos são computados como $ x_ = \ frac>> -1 $.


Supondo que seu critério de seleção seja algum tipo de característica de estoque disponível na frequência mensal, você também terá uma matriz de características $ C $.


Você pode então escrever um algoritmo que identifique as entradas em $ C $ que preenchem seu critério de seleção (por exemplo, exceder um certo limite) e substitua as entradas correspondentes (onde $ i $ e $ t $ são os mesmos) de uma matriz indicadora $ I $ (que foi inicializado como uma matriz zero usando a função zeros) com uns.


Você pode então multiplicar as entradas de $ 1 por aquelas da matriz de devoluções $ X $ para obter uma matriz $ R $ que indica os retornos resultantes de suas participações. Você pode calcular a média das entradas diferentes de zero para cada linha de $ R $ para obter seu vetor de retornos de portfólio.


Ajuste de risco e identificação de retornos anormais.


Na etapa 2, você compara esse vetor com os retornos normais obtidos a partir da estimativa de regressão de um modelo de precificação de ativos, como o modelo Fama-French. Ao subtrair o vetor de retorno normal do vetor de retornos da sua carteira, você determina se a sua estratégia de negociação resultou em um retorno anormal positivo, que é o que você está procurando.


Recomendações


Se você é novo no Matlab, eu pessoalmente sugiro que você se familiarize com ele o suficiente para implementar essa estratégia simplista antes de relaxar algumas das suposições simplificadoras (como período de holding uniforme e periodicidade) e prosseguir para implementações mais sofisticadas.


Mais uma vez, o que eu gostaria de enfatizar é que isso requer que você se sinta muito à vontade com o Matlab e especialmente as diferentes formas de manipular matrizes, o que pode levar algum tempo. Se você não é obrigado a usar o Matlab para o seu estágio e gostaria de obter resultados rápidos, você poderia fazer o passo 1 no Excel, o que é entediante, mas não requer o investimento inicial (que vale a pena) que você precisa fazer para o Matlab.


Para se familiarizar com o Matlab, tenho certeza que você já descobriu a documentação extremamente boa que vem com ele. Esse, para mim, é o recurso mais valioso e provavelmente mais útil do que qualquer outro recurso específico de financiamento (com o qual esperaria até que você esteja familiarizado com o próprio Matlab). Tudo o que é necessário para determinar o retorno normal é uma regressão OLS e uma compreensão rudimentar dos modelos de precificação de ativos.


MatlabTrading.


Blog para MATLAB & # 174; usuários interessados ​​em estratégias de negociação algorítmica, backtesting, pares de negociação, arbitragem estatística etc.


Quarta-feira, 7 de dezembro de 2016.


Teste e Análise de Estratégias de Negociação Algorítmica no MATLAB (Parte 4) & # 8211; Algorítmos genéticos.


Otimização de Algoritmos Genéticos.


Apesar do fato de que o princípio do algoritmo genético (evolucionário) é muito bem explicado nos webinars do MathWorks, nos exemplos, no entanto, ele é usado apenas para otimização da escolha de um grupo de estratégia de um conjunto. Este é um bom exemplo do uso desses algoritmos, no entanto, acontece que há uma necessidade de definir muitas variáveis ​​com intervalos significativos para uma estratégia, você não consegue com uma iteração e a paralelização de processos & # 8211; cálculos podem levar vários dias. Certamente, existem estratégias no estágio final de otimização, quando quase certamente sabemos que a estratégia de negociação é bem-sucedida, podemos esperar vários dias ou alugar todo o cluster - o resultado pode valer a pena. No entanto, se precisamos "estimar" os resultados de uma estratégia "volumosa" e decidir se vale a pena gastar o tempo, então os algoritmos genéticos podem ser perfeitamente adequados.


Método linear & # 8211; é um modo usual de ordenação no qual você verá todos os resultados intermediários (sub-ótimos). Dá máxima precisão. Método paralelo & # 8211; todos os kernels da sua CPU serão usados. Não permite ver resultados intermediários, mas acelera significativamente a operação. Dá máxima precisão durante o aumento da velocidade de cálculo. Método genético & # 8211; ele usa o algoritmo de otimização evolutiva. Permite ver valores sub-ótimos, mas dá o resultado próximo ao melhor. Não é um método muito preciso, mas é preciso o suficiente para a "execução" inicial da estratégia. Muito rápido.


Segunda-feira, 5 de dezembro de 2016.


Teste e Análise de Estratégias de Negociação Algorítmica no MATLAB (Parte 3) & # 8211; Visualização do Processo.


Visualização do processo de teste.


Em minha experiência de trabalho, muitas vezes analisei outras plataformas populares para testes de estratégia de negociação, como TradeStation, MetaStock, Multicharts etc. e sempre fiquei surpreso com a pouca atenção dada à visualização do processo de teste. O problema é que, quando não vemos os resultados dos valores intermediários e sub-ótimos dos parâmetros otimizados, muitas vezes jogamos fora o ouro junto com a sujeira. A questão é por causa de uma amostragem excessivamente ampla, a estratégia ajusta os parâmetros da maneira como vemos uma "estratégia perfeita" que falha na vida real ou vê uma ou duas transações, que são supostamente as melhores porque foram selecionadas essas informações de intervalo de tempo onde a melhor estratégia de negociação seria comprar e manter, mas por que outras estratégias são necessárias?


E se houver mais de 4 dimensões? Quando você vê quais sinais e em que frequência eles aparecem na faixa de preço, você tem quase toda a representação visual necessária da sua estratégia: a frequência das transações, sua lucratividade (curva de renda), a precisão da abertura, a semelhança com outras valores sub-ótimos, etc .; isso não pode ser dito sobre o desempenho no espaço N-dimensional, onde todas as informações úteis são, de fato, que o valor ótimo não é apenas um, mas há toda uma gama de valores sub-ótimos em uma ou mais áreas.


Enquanto otimiza uma estratégia no WFAToolbox & # 8211; Walk-Forward Analysis Toolbox para MATLAB & # 174 ;, como um novo valor ótimo é encontrado, os sinais da estratégia de negociação no período in-sample e out-of-sample aparecem imediatamente no gráfico, para que você possa sempre controlar qual faixa de opções você deve atribuir, e também pode pausar a otimização sem esperar pelo fim do teste, pois fica claro que algo deu errado ou está tudo bem.


Quarta-feira, 30 de novembro de 2016.


Teste e Análise de Estratégias de Negociação Algorítmica no MATLAB (Parte 2) & # 8211; GUI fácil de usar.


GUI fácil de usar.


Vamos começar com o fato de que não há interface gráfica porque se presumimos que quase todo o processo de teste e análise de estratégias de negociação é padronizado (é 99%), você gostaria de ter a interface que ajuda a chamar os dados necessários. e inicie o processo de teste com um clique.


Para usuários novos (e não apenas) do MATLAB, é muito mais conveniente usar uma GUI com botões e campos de entrada do que pesquisar no código; Portanto, há uma GUI, mesmo nas caixas de ferramentas MathWorks, na maioria dos casos, porque é mais conveniente. Ele permite focar apenas no código da sua estratégia, porque o uso de uma GUI não implica, de forma alguma, que ela limita de alguma forma sua capacidade de escrever uma estratégia.


Assim, no WFAToolbox, criamos a possibilidade de escrever qualquer código para sua estratégia, usando qualquer uma das caixas de ferramentas do MATLAB e trabalhando com múltiplos ativos para as estratégias como negociação de pares, negociação de cestas ou arbitragem tripla, etc .; mas, ao mesmo tempo, esse código é facilmente integrado à GUI por meio de padrões, que são simples o suficiente para serem aplicados no código e não limitam as oportunidades.


Terça-feira, 29 de novembro de 2016.


Teste e Análise de Estratégias de Negociação Algorítmica no MATLAB (Parte 1) - Introdução.


Como tudo começou.


Foi em 2008 (se não me engano) quando o primeiro webinar sobre negociação algorítmica no MATLAB com Ali Kazaam foi lançado, abordando o tópico de otimização de estratégias simples baseadas em indicadores técnicos, etc. apesar de um caótico & # 8220; 8221; código, ferramentas eram interessantes o suficiente para usar. Eles serviram como ponto de partida para pesquisa e aprimoramento de um modelo de teste e análise que permitiria usar todo o poder das caixas de ferramentas e a liberdade das ações do MATLAB durante a criação das próprias estratégias comerciais, ao mesmo tempo em que permitiria controlar o processo. de teste e os dados obtidos e sua análise posterior escolheria carteira eficaz de sistemas de negociação robustos.


Por que todo Algotrader deveria reinventar a roda?


No entanto, o Mathworks não ofereceu uma solução completa para testes e análises das estratégias & # 8211; Esses códigos que você poderia obter dos webinars eram os únicos "elementos" de um teste completo do sistema, e era necessário modificá-los, personalizá-los e adicioná-los à GUI para facilitar o uso. Foi muito demorado, colocando-se uma questão: seja qual for a estratégia, ela deve passar pelo mesmo processo de teste e análise, o que permitiria classificá-la como estável e utilizável & # 8211; então, por que todo algotrader deveria reinventar a roda e escrever seu próprio código para estratégias de teste adequadas no MATLAB?


Backtesting Bem-sucedido de Estratégias de Negociação Algorítmica - Parte I.


Backtesting Bem-sucedido de Estratégias de Negociação Algorítmica - Parte I.


Este artigo continua a série sobre negociação quantitativa, que começou com o Beginner's Guide and Strategy Identification. Ambos os artigos, mais longos e mais envolvidos, têm sido muito populares, por isso vou continuar nesse sentido e fornecer detalhes sobre o tema do backtesting de estratégia.


O backtesting algorítmico requer conhecimento de muitas áreas, incluindo psicologia, matemática, estatística, desenvolvimento de software e microestrutura de mercado / troca. Eu não poderia esperar cobrir todos esses tópicos em um artigo, então vou dividi-los em duas ou três partes menores. O que vamos discutir nesta seção? Começarei definindo o backtesting e depois descreverei o básico de como ele é realizado. Então eu vou elucidar sobre os preconceitos que tocamos no Beginner's Guide to Quantitative Trading. A seguir, apresentarei uma comparação das várias opções de software de backtesting disponíveis.


Nos artigos subseqüentes, veremos os detalhes das implementações de estratégia que são mal mencionadas ou ignoradas. Também vamos considerar como tornar o processo de backtesting mais realista, incluindo as idiossincrasias de uma bolsa de valores. Em seguida, discutiremos os custos de transação e como modelá-los corretamente em uma configuração de backtest. Terminaremos com uma discussão sobre o desempenho de nossos backtests e, finalmente, forneceremos um exemplo de uma estratégia comum de quant, conhecida como um comércio de pares que reverte a média.


Vamos começar discutindo o que é o backtesting e por que devemos realizá-lo em nossa negociação algorítmica.


O que é o backtesting?


A negociação algorítmica se diferencia de outros tipos de classes de investimento, porque podemos fornecer expectativas mais confiáveis ​​sobre o desempenho futuro do desempenho passado, como consequência da disponibilidade abundante de dados. O processo pelo qual isso é realizado é conhecido como backtesting.


Em termos simples, o backtesting é realizado expondo seu algoritmo de estratégia particular a um fluxo de dados financeiros históricos, o que leva a um conjunto de sinais de negociação. Cada negociação (que vamos querer dizer aqui como uma ida e volta de dois sinais) terá um lucro ou prejuízo associado. A acumulação deste lucro / perda ao longo da duração do seu backtest de estratégia levará ao lucro e perda total (também conhecido como 'P & L' ou 'PnL'). Essa é a essência da ideia, embora, é claro, o "diabo esteja sempre nos detalhes"!


Quais são as principais razões para fazer backtesting de uma estratégia algorítmica?


Filtragem - Se você se lembra do artigo sobre identificação de estratégia, nosso objetivo na fase inicial de pesquisa era configurar um pipeline de estratégia e filtrar qualquer estratégia que não atendesse a determinados critérios. O backtesting nos fornece outro mecanismo de filtragem, pois podemos eliminar estratégias que não atendem às nossas necessidades de desempenho. Modelagem - O backtesting nos permite testar (com segurança!) Novos modelos de certos fenômenos de mercado, como custos de transação, roteamento de ordens, latência, liquidez ou outras questões de microestrutura do mercado. Otimização - Embora a otimização da estratégia seja repleta de vieses, o backtesting nos permite aumentar o desempenho de uma estratégia, modificando a quantidade ou os valores dos parâmetros associados a essa estratégia e recalculando seu desempenho. Verificação - Nossas estratégias são muitas vezes adquiridas externamente, através do nosso pipeline de estratégia. O backtesting de uma estratégia garante que ela não tenha sido implementada incorretamente. Embora raramente tenhamos acesso aos sinais gerados por estratégias externas, muitas vezes teremos acesso às métricas de desempenho, como as características de Sharpe Ratio e Drawdown. Assim, podemos compará-los com nossa própria implementação.


Backtesting fornece uma série de vantagens para negociação algorítmica. No entanto, nem sempre é possível fazer backtest diretamente de uma estratégia. Em geral, à medida que a frequência da estratégia aumenta, torna-se mais difícil modelar corretamente os efeitos de microestrutura do mercado e das trocas. Isso leva a backtests menos confiáveis ​​e, portanto, uma avaliação mais complicada de uma estratégia escolhida. Este é um problema particular em que o sistema de execução é a chave para o desempenho da estratégia, como acontece com os algoritmos de freqüência ultra-alta.


Infelizmente, o backtesting é repleto de preconceitos de todos os tipos. Nós abordamos algumas dessas questões em artigos anteriores, mas vamos agora discuti-las em profundidade.


Vieses que afetam os backtests de estratégia.


Existem muitos vieses que podem afetar o desempenho de uma estratégia de backtested. Infelizmente, esses vieses tendem a inflar o desempenho em vez de prejudicá-lo. Assim, você deve sempre considerar um backtest como um limite superior idealizado no desempenho real da estratégia. É quase impossível eliminar os vieses do comércio algorítmico, por isso é nosso trabalho minimizá-los da melhor maneira possível, a fim de tomar decisões informadas sobre nossas estratégias algorítmicas.


Existem quatro principais vieses que desejo discutir: Viés de Otimização, Viés de Look-Ahead, Viés de Sobrevivência e Viés de Tolerância Psicológica.


Viés de otimização.


Este é provavelmente o mais insidioso de todos os preconceitos de backtest. Isso envolve o ajuste ou a introdução de parâmetros de negociação adicionais até que o desempenho da estratégia no conjunto de dados de backtest seja muito atraente. No entanto, uma vez que viver, o desempenho da estratégia pode ser muito diferente. Outro nome para esse viés é "ajuste de curva" ou "viés de snooping de dados".


O viés de otimização é difícil de eliminar, pois as estratégias algorítmicas geralmente envolvem muitos parâmetros. "Parâmetros" neste exemplo podem ser os critérios de entrada / saída, períodos de retorno, períodos médios (isto é, o parâmetro de suavização da média móvel) ou frequência de medição de volatilidade. O viés de otimização pode ser minimizado mantendo o número de parâmetros no mínimo e aumentando a quantidade de pontos de dados no conjunto de treinamento. De fato, também é preciso ter cuidado com este último, pois os pontos de treinamento mais antigos podem estar sujeitos a um regime anterior (como um ambiente regulatório) e, portanto, podem não ser relevantes para sua estratégia atual.


Um método para ajudar a atenuar esse viés é realizar uma análise de sensibilidade. Isso significa variar os parâmetros de forma incremental e traçar uma "superfície" de desempenho. O raciocínio sólido e fundamental para as escolhas de parâmetros deve, com todos os outros fatores considerados, levar a uma superfície de parâmetro mais suave. Se você tem uma superfície de desempenho muito agitada, isso geralmente significa que um parâmetro não está refletindo um fenômeno e é um artefato dos dados de teste. Existe uma vasta literatura sobre algoritmos de otimização multidimensional e é uma área altamente ativa de pesquisa. Eu não vou me debruçar sobre isso aqui, mas mantenha isso no fundo de sua mente quando você encontrar uma estratégia com um backtest fantástico!


Tendência de Look-Ahead.


O viés de antecipação é introduzido em um sistema de backtesting quando dados futuros são acidentalmente incluídos em um ponto da simulação onde esses dados não estariam disponíveis. Se estivermos realizando o backtest cronologicamente e chegarmos ao ponto de tempo $ N $, então o bias de look-ahead ocorre se os dados forem incluídos para qualquer ponto $ N + k $, onde $ k> 0 $. Erros de polarização antecipada podem ser incrivelmente sutis. Aqui estão três exemplos de como o viés de look-ahead pode ser introduzido:


Bugs técnicos - Matrizes / vetores no código geralmente possuem iteradores ou variáveis ​​de índice. Deslocamentos incorretos desses índices podem levar a um viés de antecipação ao incorporar dados em $ N + k $ para não-zero $ k $. Cálculo de Parâmetros - Outro exemplo comum de viés de look-ahead ocorre ao calcular parâmetros estratégicos ótimos, como com regressões lineares entre duas séries temporais. Se todo o conjunto de dados (incluindo dados futuros) for usado para calcular os coeficientes de regressão e, portanto, aplicado retroativamente a uma estratégia de negociação para fins de otimização, os dados futuros serão incorporados e haverá um viés de antecipação. Maxima / Minima - Determinadas estratégias de negociação utilizam valores extremos em qualquer período de tempo, como incorporar os preços altos ou baixos nos dados do OHLC. No entanto, como esses valores máximos / mínimos só podem ser calculados no final de um período de tempo, um viés de antecipação é introduzido se esses valores forem usados ​​durante o período atual. É sempre necessário atrasar valores altos / baixos em pelo menos um período em qualquer estratégia de negociação fazendo uso deles.


Tal como acontece com o viés de otimização, é preciso ter muito cuidado para evitar sua introdução. Muitas vezes, é a principal razão pela qual as estratégias de negociação têm um desempenho inferior aos backtests significativamente em "negociação ao vivo".


Viés de sobrevivência.


O viés de sobrevivência é um fenômeno particularmente perigoso e pode levar a um desempenho significativamente inflacionado para certos tipos de estratégia. Ocorre quando as estratégias são testadas em conjuntos de dados que não incluem o universo completo de ativos anteriores que podem ter sido escolhidos em um determinado momento, mas consideram apenas aqueles que "sobreviveram" à hora atual.


Como exemplo, considere testar uma estratégia em uma seleção aleatória de ações antes e depois do crash do mercado de 2001. Algumas ações da tecnologia faliram, enquanto outras conseguiram se manter à tona e até prosperaram. Se tivéssemos restringido essa estratégia apenas às ações que passaram pelo período de rebaixamento do mercado, estaríamos introduzindo um viés de sobrevivência, porque eles já demonstraram seu sucesso para nós. Na verdade, este é apenas mais um caso específico de viés de antecipação, já que informações futuras estão sendo incorporadas à análise passada.


Existem duas maneiras principais de atenuar o viés de sobrevivência em seus backtests de estratégia:


Conjuntos de dados livres de viés de sobrevivência - No caso de dados de patrimônio, é possível adquirir conjuntos de dados que incluem entidades com registro de saída, embora não sejam baratas e só tendam a ser utilizadas por empresas institucionais. Em particular, os dados do Yahoo Finance NÃO são livres de viés de sobrevivência, e isso é comumente usado por muitos traders de algoritmos de varejo. Também é possível negociar em classes de ativos que não são propensas ao viés de sobrevivência, como certas commodities (e seus futuros derivativos). Usar dados mais recentes - No caso de ações, a utilização de um conjunto de dados mais recente atenua a possibilidade de que a seleção de ações escolhida seja ponderada para "sobreviventes", simplesmente porque há menos probabilidade de fechamento de estoque geral em períodos de tempo mais curtos. Também é possível começar a criar um conjunto de dados pessoal livre de viés de sobrevivência, coletando dados do ponto atual em diante. Depois de 3 a 4 anos, você terá um sólido conjunto de dados de equidade livres de viés de sobrevivência, com o qual será feito backtest de estratégias adicionais.


Consideraremos agora certos fenômenos psicológicos que podem influenciar seu desempenho comercial.


Tendência da Tolerância Psicológica.


Este fenómeno em particular não é frequentemente discutido no contexto do comércio quantitativo. No entanto, é discutido extensivamente em relação a métodos de negociação mais discricionários. Ele tem vários nomes, mas eu decidi chamar de "viés de tolerância psicológica" porque capta a essência do problema. Ao criar backtests durante um período de 5 anos ou mais, é fácil olhar para uma curva de capital de tendência ascendente, calcular o retorno anual composto, o índice de Sharpe e até as características de rebaixamento e ficar satisfeito com os resultados. Como exemplo, a estratégia pode possuir um rebaixamento relativo máximo de 25% e uma duração máxima de rebaixamento de 4 meses. Isso não seria atípico para uma estratégia momentânea. É fácil convencer-se de que é fácil tolerar esses períodos de perdas porque o quadro geral é otimista. No entanto, na prática, é muito mais difícil!


Se rebotes históricos de 25% ou mais ocorrerem nos backtests, então, com toda a probabilidade, você verá períodos de rebaixamento similar em negociações ao vivo. Estes períodos de abandono são psicologicamente difíceis de suportar. Observei em primeira mão como pode ser uma redução prolongada, em um ambiente institucional, e isso não é agradável - mesmo que os backtests sugiram que tais períodos ocorrerão. A razão pela qual eu o denominei de "viés" é que muitas vezes uma estratégia que de outra forma seria bem-sucedida é impedida de negociar durante períodos de rebaixamento estendido e, portanto, levará a um desempenho significativamente inferior comparado a um backtest. Assim, embora a estratégia seja de natureza algorítmica, os fatores psicológicos ainda podem ter uma forte influência na lucratividade. O objetivo é assegurar que, se você vir perdas de uma certa porcentagem e duração nos backtests, então você deve esperar que elas ocorram em ambientes de negociação ao vivo e que precisem perseverar para alcançar a lucratividade mais uma vez.


Pacotes de software para backtesting.


O cenário de software para backtesting de estratégia é vasto. As soluções vão desde software sofisticado de nível institucional totalmente integrado até linguagens de programação como C ++, Python e R, onde quase tudo deve ser escrito do zero (ou 'plugins' obtidos). Como traders quant estamos interessados ​​no equilíbrio de poder "possuir" nossa pilha de tecnologia de negociação versus a velocidade e confiabilidade de nossa metodologia de desenvolvimento. Aqui estão as principais considerações para a escolha de software:


Habilidade de Programação - A escolha do ambiente dependerá em grande parte de sua capacidade de programar software. Eu diria que estar no controle da pilha total terá um efeito maior no seu P & L de longo prazo do que a terceirização, tanto quanto possível, do software do fornecedor. Isso se deve ao risco negativo de ter bugs externos ou idiossincrasias que você não consiga consertar no software do fornecedor, que, de outra forma, seriam facilmente solucionados se você tivesse mais controle sobre sua "pilha de tecnologia". Você também quer um ambiente que encontre o equilíbrio certo entre produtividade, disponibilidade de biblioteca e velocidade de execução. Eu faço minha própria recomendação pessoal abaixo. Interação de capacidade de execução / corretor - Certos softwares de backtesting, como o Tradestation, são vinculados diretamente a uma corretora. Eu não sou fã dessa abordagem, já que reduzir os custos de transação é muitas vezes um grande componente para obter um índice maior de Sharpe. Se você está preso a um corretor específico (e o Tradestation o "força" a fazer isso), você terá mais dificuldade em fazer a transição para um novo software (ou um novo corretor) se for necessário. Os Interactive Brokers fornecem uma API robusta, embora com uma interface ligeiramente obtusa. Personalização - Um ambiente como o MATLAB ou o Python oferece uma grande flexibilidade na criação de estratégias de algoritmos, uma vez que fornecem bibliotecas fantásticas para quase todas as operações matemáticas imagináveis, mas também permitem uma ampla personalização quando necessário. Complexidade de estratégia - Certos softwares simplesmente não são feitos para processamento pesado de números ou complexidade matemática. O Excel é um desses softwares. Embora seja bom para estratégias mais simples, ele não pode realmente lidar com numerosos ativos ou algoritmos mais complicados, em velocidade. Minimização de viés - Uma determinada peça de software ou dados se presta mais a vieses de negociação? Você precisa ter certeza de que, se quiser criar todas as funcionalidades sozinho, não apresentará bugs que possam levar a vieses. Velocidade de desenvolvimento - Não se deve ter que passar meses e meses implementando um mecanismo de backtest. A prototipagem deve levar apenas algumas semanas. Certifique-se de que seu software não está atrapalhando o seu progresso em grande medida, apenas para pegar alguns pontos percentuais extras de velocidade de execução. C ++ é o "elefante na sala" aqui! Velocidade de Execução - Se a sua estratégia é completamente dependente da pontualidade da execução (como no HFT / UHFT), então uma linguagem como C ou C ++ será necessária. No entanto, você estará se aproximando da otimização do kernel do Linux e do uso do FPGA para esses domínios, o que está fora do escopo deste artigo! Custo - Muitos dos ambientes de software com os quais você pode programar estratégias de negociação algorítmica são completamente livres e de código aberto. Na verdade, muitos fundos de hedge fazem uso de software de código aberto para todas as suas pilhas de negociação de algoritmos. Além disso, o Excel e o MATLAB são relativamente baratos e existem alternativas gratuitas para cada um deles.


Agora que listamos os critérios com os quais precisamos escolher nossa infraestrutura de software, eu quero executar alguns dos pacotes mais populares e como eles se comparam:


Nota: Eu só vou incluir o software que está disponível para a maioria dos profissionais de varejo e desenvolvedores de software, pois este é o público do site. Enquanto outros softwares estão disponíveis, tais como as ferramentas mais institucionais, eu sinto que são muito caras para serem efetivamente usadas em um ambiente de varejo e eu pessoalmente não tenho nenhuma experiência com elas.


Backtesting


Valide seus modelos financeiros com dados históricos.


Backtesting é um framework que usa dados históricos para validar modelos financeiros, incluindo estratégias de negociação e modelos de gerenciamento de risco. Dependendo dos objetivos da validação, o profissional financeiro usa mais de um indicador ou metodologia para medir a eficácia dos modelos financeiros.


O backtesting é rotineiramente realizado em negociação e gerenciamento de risco. Como resultado, existem várias técnicas dedicadas de backtesting específicas para essas duas áreas.


Na negociação, as técnicas comuns de backtesting incluem:


Testes in-sample vs. out-of-sample Análise de walk-forward ou otimização de walk-forward Análise em nível de instrumento vs. avaliação em nível de portfólio.


Na gestão de risco, o backtesting é geralmente aplicado ao valor em risco (VaR) e também é conhecido como backtesting do VaR. Existem várias técnicas de backtest de VaR, como:


Teste de semáforo de Basileia Teste binomial Teste de proporção de falhas de Kupiec até o primeiro teste de falha Teste misto de cobertura condicional de Christoffersen Teste de independência de cobertura condicional de Christoffersen Teste de independência de Haas entre falhas ou teste misto de Kupiec.


Backtesting Trading Strategies em apenas 8 linhas de código.


Kawee Numpacharoen, MathWorks.


Usando as funcionalidades do MATLAB ® e do Financial Toolbox ™, você pode realizar um backtesting de estratégia em apenas oito linhas de código.


• Geração de sinal de negociação.


• Cálculo dos retornos da carteira, índice de precisão e redução máxima.


• Gráficos de curva de capital.


• Use o Datafeed Toolbox ™ para baixar dados de mercado diretamente de vários provedores de dados.


• Gerar sinal de negociação usando o Econometrics Toolbox ™ ou o Statistics and Machine Learning Toolbox ™


• Execute automaticamente suas estratégias usando o Trading Toolbox ™

No comments:

Post a Comment