Monday 23 April 2018

Quantum financier


Navegação posterior


Isnt R lento gawdawful para negociação em tempo real?


Jeff em 7 de fevereiro de 2017 às 23:25


R, como a maioria das linguagens de programação pode ser tão rápido ou lento como você fazê-lo. Como o autor de IBrokers (e outros pacotes) posso dizer-lhe que R é mais rápido do que o fluxo vindo de IB, ou seja, o gargalo não é R.


IB e R são realmente uma combinação estelar desde que você tem acesso a toda a bondade de R ea capacidade de passar de testes para a produção com pouco mais do que usar uma conta diferente. Além disso, o acesso interativo à API IB é bastante poderoso e exclusivo entre as interfaces do IB.


Sistema de Comutação de Regime Usando a Previsão de Volatilidade


Na mesma linha de pensamento que o último post, hoje vamos olhar para uma maneira de incorporar o modelo de volatilidade GARCH que introduzimos ontem para criar uma estratégia de comutação de regime.


Muitas vezes é discutido na blogosfera que a alta volatilidade é bom para MR diário, veja edições anteriores do estado de curto prazo relatório de média reversão por Michael sobre MarketSci aqui eo moderador de acompanhamento diário SR série por David em CSS Analytics aqui e aqui. Simultaneamente, um ambiente de baixa volatilidade é geralmente um bom ambiente para as estratégias de tendência seguinte; Veja Jez Liberty estado de tendência seguinte relatório aqui.


Com isso em mente, como queremos maximizar nosso retorno, queremos negociar a estratégia apropriada com base no ambiente de volatilidade. Usando a volatilidade, podemos alternar entre as estratégias MR e TF dinamicamente para melhor se adaptar ao paradigma atual do mercado. Para fazer isso podemos classificar a volatilidade atual por percentil usando um período de lookback de 252 dias. A série resultante oscila entre 0 e 1, e é alisada usando um percentrankSMA de 21 dias (desenvolvido por David Varadi) usando um período de observação de 252 dias. Agora temos uma volta do envelope oscilador de regime de volatilidade suavizado onde leitura maior que .5 indica alta volatilidade e menor que .5 baixa volatilidade no lugar.


Para o exemplo a seguir, a estratégia de comutação de regime (RS) será a seguinte: se o oscilador for maior que 0,5, trocamos a estratégia MR e trocamos a estratégia TF quando o oscilador estiver abaixo do limite de 0,5. O proxy de estratégia MR é o RSI2 eo proxy de estratégia TF é o crossover MA 50-200 para este teste simples. Os resultados no SPY são apresentados abaixo com curvas de equidade para MR somente (vermelho), TF somente (azul), buy and hold (verde) e RS (amarelo). Observe que para este teste, a entrada para a volatilidade é o desvio padrão de 21 dias dos retornos (ie, volatilidade histórica).


A estratégia de RS supera as estratégias de MR e TF ao longo de 10 anos. Mas espere um minuto, o post foi sobre a mudança de regime usando a previsão de volatilidade, e não a volatilidade histórica. Simples, para fazer isso, calculamos o oscilador usando os resultados do modelo de garch introduzido no último post. Agora temos a estratégia RS usando a previsão de volatilidade, a boa notícia é: ele funciona melhor! Resultados abaixo usando a previsão GARCH (ouro) vs utilizando a volatilidade histórica (cinza).


Como mencionado anteriormente em muitos outros blogs, a incorporação de previsão de volatilidade em uma estratégia parece melhorar os resultados nesta estratégia de mudança de regime.


Sistema de Comutação de Regime Usando a Previsão de Volatilidade


Na mesma linha de pensamento que o último post, hoje vamos olhar para uma maneira de incorporar o modelo de volatilidade GARCH que introduzimos ontem para criar uma estratégia de comutação de regime.


Muitas vezes é discutido na blogosfera que a alta volatilidade é bom para MR diário, veja edições anteriores do estado de curto prazo relatório de média reversão por Michael sobre MarketSci aqui eo moderador de acompanhamento diário SR série por David em CSS Analytics aqui e aqui. Simultaneamente, um ambiente de baixa volatilidade é geralmente um bom ambiente para as estratégias de tendência seguinte; Veja Jez Liberty estado de tendência seguinte relatório aqui.


Com isso em mente, como queremos maximizar nosso retorno, queremos negociar a estratégia apropriada com base no ambiente de volatilidade. Usando a volatilidade, podemos alternar entre as estratégias MR e TF dinamicamente para melhor se adaptar ao paradigma do mercado atual. Para fazer isso podemos classificar a volatilidade atual por percentil usando um período de lookback de 252 dias. A série resultante oscila entre 0 e 1, e é alisada usando um percentrankSMA de 21 dias (desenvolvido por David Varadi) usando um período de observação de 252 dias. Agora temos uma volta do envelope oscilador de regime de volatilidade suavizado onde leitura maior que .5 indica alta volatilidade e menor que .5 baixa volatilidade no lugar.


Para o exemplo a seguir, a estratégia de comutação de regime (RS) será a seguinte: se o oscilador for maior que 0,5, trocamos a estratégia MR e trocamos a estratégia TF quando o oscilador estiver abaixo do limite de 0,5. O proxy de estratégia MR é o RSI2 eo proxy de estratégia TF é o crossover MA 50-200 para este teste simples. Os resultados no SPY são apresentados abaixo com curvas de equidade para MR somente (vermelho), TF somente (azul), buy and hold (verde) e RS (amarelo). Observe que para este teste, a entrada para a volatilidade é o desvio padrão de 21 dias dos retornos (ie, volatilidade histórica).


A estratégia de RS supera as estratégias de MR e TF ao longo de 10 anos. Mas espere um minuto, o post foi sobre a mudança de regime usando a previsão de volatilidade, e não a volatilidade histórica. Simples, para fazer isso, calculamos o oscilador usando os resultados do modelo de garch introduzido no último post. Agora temos a estratégia RS usando a previsão de volatilidade, a boa notícia é: ele funciona melhor! Resultados abaixo usando a previsão GARCH (ouro) vs utilizando a volatilidade histórica (cinza).


Como mencionado anteriormente em muitos outros blogs, a incorporação de previsão de volatilidade em uma estratégia parece melhorar os resultados nesta estratégia de mudança de regime.


Previsão de Volatilidade Usando GARCH (1,1)


Continuando na série atual de postos, eu estava no ponto de prever a volatilidade. Há várias maneiras de apenas isso; Este tema é o tema de muita pesquisa em finanças. Modelos diferentes para modelar a volatilidade estão disponíveis e variam de ambas as extremidades do espectro da complexidade. Eu vou usar o que eu acho que é um dos mais populares: o GARCH (1,1). Apenas como uma nota lateral no entanto, eu não acho que é o melhor modelo para usar, mas eu acho que a simplicidade torna muito atraente. Para a multidão quant mais sofisticada, na família GARCH, o EGARCH parece melhor prever a volatilidade do mercado do que seus homólogos. Eu não vou entrar em muitos detalhes sobre o processo GARCH (ou seja, este não é destinado a ser um post de introdução), se você gostaria de ouvir mais sobre ele, por favor me avise na seção de comentários.


Em termos de significância, o modelo filtrou significativamente o efeito ARCH ea suposição de normalidade condicional não parece ser violada (usando os testes de Jarque Bera e Box-Ljung). Independentemente do ensaio de livros didáticos, observando o gráfico, vemos que o modelo é bastante bom em prever SPYs volatilidade. Agora que temos o modelo em vigor, o próximo post deve ser sobre como usar um modelo semelhante sobre a volatilidade da volatilidade, uma vez que foi despojado de sua correlação com a volatilidade real para ver se podemos melhorar os nossos resultados comerciais e, especialmente, o nosso regime Estratégias de comutação.


99 problemas, mas um Backtest não é um


Backtesting é um passo muito importante no desenvolvimento da estratégia. Mas se você já passou por todo o ciclo de desenvolvimento da estratégia, você pode ter percebido como é difícil backtest uma estratégia corretamente.


As pessoas usam diferentes ferramentas para implementar um backtest, dependendo de sua experiência e objetivos. Para aqueles com um fundo de programação, Quantstrat (R), Zipline. PyAlgoTrade (Python) ou TradingLogic (Julia) com certeza serão as opções favoritas. Para aqueles que preferem um produto de varejo que envolve programação menos convencional, Tradestation ou TradingBlox são opções comuns.


Um dos problemas com o uso de uma solução de terceiros é muitas vezes a falta de flexibilidade. Isso não se torna aparente até que se tente backtest uma estratégia que requer mais detalhes esotéricos. Obviamente este não será um problema backtesting os clássicos como médias móveis ou donchian canal tipo estratégias, mas estou certo de alguns de vocês bater sua cabeça no teto de complexidade backtest mais de uma vez. Há também a questão da suposição de preenchimento. A maioria dos backtests que vejo publicado na blogosfera (incluindo os presentes neste site humilde) assumem o comércio no preço próximo como uma suposição simplificadora. Enquanto isso funciona bem com a finalidade de entreter uma conversa na internet, não é robusto o suficiente para ser usado como base para a tomada de decisão para implantar capital significativo.


A primeira vez que se pode realmente perceber o quão bom (ruim) sua solução de backtesting escolhido é quando a estratégia é negociada ao vivo. No entanto, eu estou sempre espantado como pouco alguns comerciantes prestar atenção a quão de perto o seu jogo backtest seus resultados ao vivo. Para alguns, é como se a estratégia fosse o passo seguinte ao backtest. Acho que isso está faltando em alguma parte crucial do processo de negociação, ou seja, o loop de feedback. Há muito a ser aprendido em descobrir onde está a diferença entre a simulação ea implementação ao vivo. Além dos erros óbvios que podem ter passado através de testes, ele rapidamente se tornará aparente se suas suposições backtest são boas e se devem ou não ser revisitado. Resultados idealmente backtested e resultados ao vivo para o período que a sobreposição deve ser estreitamente similar. Se não forem, um deve fazer perguntas sérias e tentar figurar para fora de onde as discrepâncias vêm. Em uma simulação corretamente projetada em dados de freqüência lenta (pense diariamente ou mais) você deve ser capaz de reconciliar tanto para o tostão. Se o backtester é bem concebido, a diferença é provavelmente vai para o centro do preço de enchimento no leilão de fechamento diferente do último preço negociado que é normalmente o que é relatado como o preço próximo. Eu sempre gostaria de prestar especial atenção aos dados que eu uso para gerar sinais ao vivo e compará-lo com os dados alimentados para o motor de simulação para encontrar possíveis diferenças de sinal como eu muitas vezes acho que a execução ao vivo comércios off dados que doesnt sempre correspondem com a simulação Conjunto de dados. Obviamente, à medida que o tempo diminui, os problemas são ampliados. Backtesting estratégias de negociação intraday é notoriamente difícil e além do escopo deste blog. Vamos apenas dizer que um backtester intraday bom é uma grande vantagem competitiva para os comerciantes / empresas dispostas a colocar no tempo de desenvolvimento e dinheiro.


Seria negligente de mim queixar-se backtesting problema sem oferecer alguns dos processos que eu uso para melhorar a sua qualidade e, finalmente, usabilidade. Primeiro eu escolhi pessoalmente não usar uma solução de backtesting de terceiros. Eu uso o software que eu escrevo, não porque é melhor do que outras soluções lá fora, mas porque ele me permite personalizar completamente todos os aspectos da simulação de uma forma que é intuitivo para mim. Dessa forma, eu posso sintonizar qualquer backtest como parte do loop de feedback que eu estava referindo anteriormente para mais precisamente modelo de negociação ao vivo. Além disso, como eu refinado o backtester ao longo do tempo, lentamente se transformou em um motor de execução que poderia ser usado com adaptadores adequados para o comércio de mercados ao vivo. Efetivamente eu tenho um backtest personalizado para cada estratégia, mas todos eles compartilham um núcleo comum de código que forma a base do mecanismo de negociação ao vivo. Eu também passar algum tempo olhando preenchimento ao vivo vs simulado preenche e tentar reconciliar os dois.


Por favor, não pense que eu estou tentando dizer-lhe que a solução do-it-yourself é o melhor. Estou simplesmente dizendo que é o que me encaixa melhor. O ponto que eu estou tentando fazer aqui é que não importa qual solução você decidir usar, é valioso para considerar a diferença entre os resultados simulados e ao vivo, quem sabe talvez vai fazer você apreciar o processo ainda more. I seria tremendamente interessado Para ouvir o que os leitores pensam sobre o assunto, por favor, compartilhe algumas dicas na seção de comentários abaixo para que todos possam se beneficiar.


Olá, velho amigo


Relatos de minha morte foram muito exagerados


Mark Twain


Wow, tem sido um tempo. Cerca de quatro anos se passaram desde o meu último post. Pode parecer muito tempo para alguns, mas sair da faculdade e bater no chão correndo como um comerciante em tempo integral fez parecer um piscar de olhos para mim. Dito isto, eu recentemente vim a sentir falta dele e ter a intenção de começar a blogar novamente, embora em um cronograma irregular que irá evoluir com base no meu tempo livre.


O que esperar


Obviamente, desde que eu tenho negociado em tempo integral meu conjunto de habilidades evoluiu para que eu só posso imaginar que a nova perspectiva que espero trazer para a análise contida em frente será mais perspicaz.


Você notará algumas mudanças, sendo a maior delas que eu não uso R como idioma principal. Eu tenho tudo mas movido completamente minha pilha da pesquisa a Python, assim que você pode esperar ver muito mais dele que move-se para a frente. Quanto ao conteúdo, acho que o foco permanecerá o mesmo em sua maior parte; Negociação algorítmica para os mercados de ações.


Obrigado especial


Finalmente eu quero tomar o tempo para agradecer aos leitores que mantidos e-mail e mantidos em contato durante a minha ausência da blogosfera. Eu só posso esperar que o número de pessoas que de alguma forma encontrar valor nestes artigos curtos vai crescer ao longo do tempo e que vou conhecer outras pessoas interessantes. Você está após toda a razão que eu escrevo estas notas. Então, um grande obrigado a todos vocês.


2017 desejos


Ensemble Building 101


Em continuação com o último borne, eu estarei olhando construir um conjunto robusto para o ETF 500 do SP e futuro mini-feito sob medida. O objetivo aqui será a criação de uma estrutura agradável que será (espero) de bom uso para os leitores interessados ​​em combinar sistemas na criação de estratégias. A fim de torná-lo mais tangível, eu quero criar um exemplo simplificado que será usado à medida que avançamos no desenvolvimento. Gostaria de incentivar os leitores a comentar ativamente e contribuir para todo o processo.


Antes de fazer qualquer coisa, como em qualquer projeto, eu quero ter uma idéia do escopo para que eu não fique enredado em um loop infinito de desenvolvimento onde eu nunca estou satisfeito e continuamente tentando substituir indicador após indicador por um aumento marginal em CAGR no backtest. Para este exemplo, eu quero usar 4 indicadores (dois com um sabor momentum e dois com um sabor de reversão média), um filtro de volatilidade e um filtro ambiental. A estratégia também terá uma camada adaptativa para ele.


Agora que a idéia da fundação foi colocada, vamos examinar a mecânica em um nível elevado, tenha em mente que esta é apenas uma maneira que você poderia sobre ele. Basicamente, avaliarei cada estratégia individualmente, analisando o desempenho sob diferentes condições de volatilidade e também com o filtro de ambiente global. Com base no desempenho histórico e no ambiente atual, a exposição será determinada.


Esta série terá o código R para o backtest (ainda debatendo usando quanstrat / blotter) eo exemplo simples estará disponível para download. Meu ponto é fornecer ao leitor uma maneira de replicar resultados e estender o quadro significativamente. Mais a seguir!


Um tamanho não cabe tudo


Em nossa eterna busca pelo Santo Graal, muitas vezes é tentador tentar encontrar o sinal "último" (indicador) e aplicá-lo a quantos instrumentos pudermos. Esta abordagem de solução única na maior parte falha miseravelmente, pense de um carpinteiro com apenas um martelo em seu (ou ela, QF é um defensor da igualdade de oportunidades) caixa de ferramentas. Embora fazer sinais adaptativos é definitivamente uma melhoria no entanto, eu acho que às vezes perdemos o ponto.


Em vez de assediar e otimizar um sinal ad absurdum para melhorar o backtest, seria melhor servido por olhar para o quadro geral. Um sinal em si só contém tanta informação. Embora existam muitos bons indicadores que funcionam muito bem por si mesmos disponíveis (a blogosfera é um ecossistema realmente rico a esse respeito); Sua potência só é ampliada quando combinada com outros sinais contendo informações diferentes. O segredo está na agregação do sinal. Em outras palavras, na forma como formamos e usamos um conjunto de sinais isolando diferentes partes da informação para construir uma estratégia rentável (observe o uso da palavra estratégia em oposição ao sistema, com palavras cuidadas de lado, a diferença é fundamental). Este é um tópico que eu tenho feito exame de um olhar próximo recentemente e eu penso que o blogosphere é um tribune perfeito para compartilhar de algumas de minhas descobertas. Como iniciante, aqui estão alguns pontos que eu estarei tocando na próxima série de post.


1. Quais são as intuições básicas por trás de ensembles e por que eles podem ajudar na construção de estratégias de negociação?


2. Como isolamos e quantificamos informações específicas e depois observamos seu efeito sobre os instrumentos que comercializamos.


3. Como avaliar a pertinência atual dos sinais.


4. Finalmente, como podemos agregar todas as informações úteis e construir uma estratégia a partir do zero.


A mecânica vai ser explicada usando um exemplo simplificado para os leitores a seguir, mas a intuição será o mesmo que o atrás da primeira estratégia QF a ser monitorado em tempo real no blog. Eu ainda não tenho um nome extravagante para ele, mas ele vai ter um para o seu lançamento oficial.

No comments:

Post a Comment