Wednesday 23 May 2018

Estratégia de estoque de reversão média


Reversão Média.
Qual é a "reversão média"?
A reversão à média é a teoria que sugere que os preços e os retornos acabam voltando para a média ou a média. Essa média ou média pode ser a média histórica do preço ou retorno, ou outra média relevante, como o crescimento da economia ou o retorno médio de uma indústria.
QUEBRANDO PARA BAIXO 'Reversão Média'
Os retornos e os preços percentuais não são as únicas medidas consideradas como reversão da média; as taxas de juros ou mesmo a relação preço / lucro de uma empresa podem estar sujeitas a esse fenômeno.
Uma reversão envolve o retorno de qualquer condição de volta a um estado anterior. Nos casos de reversão à média, o pensamento é que qualquer preço que se afaste da norma de longo prazo retornará novamente, revertendo ao seu estado compreendido. A teoria está focada na reversão de apenas mudanças relativamente extremas, já que o crescimento normal ou outras flutuações são uma parte esperada do paradigma.
A teoria da reversão à média é usada como parte de uma análise estatística das condições de mercado e pode fazer parte de uma estratégia geral de negociação. Aplica-se bem às idéias de compra baixa e venda alta, na esperança de identificar atividade anormal que, teoricamente, voltará a um padrão normal.
O retorno a um padrão normal não é garantido, pois uma alta ou baixa inesperada pode ser uma indicação de uma mudança na norma. Tais eventos podem incluir, mas não estão limitados a lançamentos de novos produtos ou desenvolvimentos no lado positivo, ou recalls e ações judiciais no lado negativo.
Mesmo com eventos extremos, é possível que uma segurança tenha uma reversão à média. Como ocorre com a maioria das atividades de mercado, há poucas garantias de como determinados eventos afetarão ou não o apelo geral de determinados títulos.
Negociação de Reversão Média.
A negociação de reversão à média parece aproveitar as mudanças extremas dentro do preço de um determinado título, com base na suposição de que ele retornará ao seu estado anterior. Essa teoria pode ser aplicada tanto a compra quanto a venda, pois permite que um comerciante lucre com upswings inesperados e economize na ocorrência de uma baixa anormal.

Reversão média nos preços das ações: Evidências e Implicações ☆
Este artigo investiga componentes transitórios nos preços das ações. Após mostrar que os testes estatísticos têm pouco poder para detectar desvios persistentes entre os preços de mercado e os valores fundamentais, consideramos se os preços estão revertendo, usando dados dos Estados Unidos e outros 17 países. Nossas estimativas pontuais implicam autocorrelação positiva nos retornos sobre horizontes curtos e autocorrelação negativa em horizontes mais longos, embora o comportamento do preço de passeio aleatório não possa ser rejeitado nos níveis estatísticos convencionais. Movimentos substanciais nos retornos exigidos são necessários para considerar esses padrões de correlação. Disparidades persistentes, mas transitórias, entre preços e valores fundamentais também poderiam explicar nossas descobertas.
Escolha uma opção para localizar / acessar este artigo:
Verifique se você tem acesso através de suas credenciais de login ou de sua instituição.
Verifique este artigo em outro lugar.
Somos gratos a Changyong Rhee, Jeff Zweibel e, especialmente, a David Cutler pela excelente assistência de pesquisa, a Ben Bernanke, Fischer Black, Olivier Blanchard, John Campbell, Robert Engle, Eugene Fama, Terence Gorman, Pete Kyle, André Lo, Greg Mankiw Robert Merton, Julio Rotemberg, Kenneth Singleton, Mark Watson, um árbitro anônimo, e o editor, William Schwert, por comentários úteis, e a James Darcel e Matthew Shapiro, pela assistência em dados. Esta pesquisa foi apoiada pela National Science Foundation e pela Batterymarch Financial Fellowship para o primeiro autor, e faz parte dos Programas NBER em Flutuações Econômicas e Mercados Financeiros. Um apêndice de dados está no arquivo com o ICPSR em Ann Arbor, Michigan.

Momento e reversão à média nos mercados spot e de futuros de commodities
Estudamos as estratégias de momentum e de reversão à média nos preços futuros de commodities e sua relação com o momento e a reversão à média dos preços spot das commodities. Descobrimos que o momento funciona bem nos mercados futuros, mas não nos mercados à vista, e que a reversão à média funciona bem nos mercados à vista, mas não nos mercados futuros. Uma decomposição da base (a inclinação da estrutura a termo dos preços futuros) em prêmios de risco esperados e mudanças esperadas nos preços spot nos ajuda a lançar alguma luz sobre os diferentes resultados nos mercados futuros e spot. O mais interessante é que descobrimos que o momento nos preços futuros não pode ser explicado por uma tendência sustentada nos preços spot.
Classificação JEL.
Escolha uma opção para localizar / acessar este artigo:
Verifique se você tem acesso através de suas credenciais de login ou de sua instituição.
Verifique este artigo em outro lugar.
Agradecemos a um editor associado e dois árbitros anônimos pelos comentários úteis. As opiniões expressas são as dos autores e não necessariamente as de qualquer instituição afiliada.

Intraday Stock Mean Reversão Negociação Backtest em Python.
Intraday Stock Mean Reversão Negociação Backtest em Python.
Depois de concluir a série sobre a criação de uma estratégia de reversão à média entre dias, achei que seria uma boa ideia visitar outra estratégia de reversão à média, mas uma que funcione em uma escala intra-dia. Ou seja, estaremos procurando a reversão à média para ocorrer dentro de um dia de negociação.
Os preços das ações tendem a seguir caminhadas aleatórias geométricas, como somos frequentemente lembrados por inúmeros estudiosos financeiros; mas isso só é verdade se testarmos a série de preços para a reversão à média estritamente em intervalos regulares, como o uso do preço de fechamento diário. Nosso trabalho é encontrar condições especiais onde a reversão média ocorre com regularidade. Como a estratégia a seguir irá mostrar, pode haver, de fato, uma reversão média sazonal ocorrendo no período de tempo intra-diário para as ações.
As regras da estratégia são as seguintes:
1) Selecione todas as ações perto do mercado aberto, cujos retornos das baixas do dia anterior às aberturas de hoje são menores do que um desvio padrão. O desvio padrão é calculado usando os retornos close-to-close diários dos últimos 90 dias. Estas são as ações que "desabaram" e "8221".
2) Diminua a lista de ações exigindo que seus preços abertos sejam mais altos do que a média móvel de 20 dias dos preços de fechamento.
3) Liquidar as posições no fechamento do mercado.
Então, começaremos com nossas importações de módulo necessárias da seguinte maneira:
Eu vou estar executando este backtest usando o universo de ações da NYSE, que contém 3159 ações & # 8211; você pode fazer o download da lista clicando no botão de download abaixo.
Depois de ter esse arquivo armazenado em algum lugar, podemos alimentá-lo usando pandas e configurar nossa lista de ações como segue:
Como uma verificação rápida para ver se eles foram alimentados corretamente:
Ok, ótimo, agora temos nossa lista de ações que queremos usar como nosso universo de investimento & # 8221; & # 8211; podemos começar a escrever o código para o backtest real.
A lógica da nossa abordagem é a seguinte: "Vamos percorrer a lista de cotações de ações, cada vez que baixaremos os dados de preços relevantes em um DataFrame e então adicionaremos algumas colunas para nos ajudar a criar sinais de quando nossos dois Os critérios são atendidos (gap down maior que 1 90 dias de desvio padrão e um preço de abertura acima da média móvel de 20 dias).
Em seguida, usaremos esses sinais para criar nossa série de devoluções para esse estoque e, em seguida, armazenar essas informações anexando cada série de devoluções de ações a uma lista. Por fim, vamos concatenar todas as séries de retorno em um DataFrame mestre e calcular nosso retorno diário total.
Agora, esta lista de ações tem mais de 3000 ações, então espere que este código leve um pouco de tempo para rodar - Acredito que o meu levou cerca de 15-20 minutos para rodar quando eu tentei, então tente ser um pouco paciente.
Depois que o código é executado e nossa lista é preenchida com todas as séries de devolução de estratégias individuais para cada ação, temos que concatená-las em um DataFrame mestre e, em seguida, calcular o retorno geral diário da estratégia. Isso pode ser feito da seguinte forma:
Portanto, agora temos uma série de retornos que mantém os retornos da estratégia com base na negociação das ações qualificadas a cada dia, em igual peso. Se 2 ações fossem qualificadas, ponderaríamos cada ação em 50% em nosso portfólio, por exemplo.
Então, tudo o que resta fazer agora é traçar a curva de capital e calcular um Índice de Sharpe e um retorno anual.
O índice de Sharpe (excluindo o elemento livre de risco por simplicidade) pode ser calculado da seguinte forma:
e o retorno anual pode ser calculado como:
Assim, um índice de Sharpe superior a 2 e um retorno anual de cerca de 8,8% & # 8211; que não é muito pobre!
É claro, temos que lembrar que não estamos levando em conta quaisquer custos de transação, de modo que esses retornos possam ser bastante afetados em um cenário do mundo real. Além disso, essa lógica de estratégia pressupõe que podemos comprar as ações que abriram exatamente o preço de abertura, e presumimos que sempre alcançamos o preço de fechamento (liquidação) na venda no final do dia, o que obviamente não seria O caso.
Eu deixo para vocês e garotas para aprofundar mais a estratégia retorna & # 8211; você pode usar meu post anterior, onde analisei os retornos de nossa estratégia de crossover de média móvel como inspiração. Esse post pode ser encontrado aqui.
10 comentários.
Obrigado pelo post. Estamos trabalhando em uma estrutura de análise de dados de alto desempenho em python e gostaríamos de usar seus códigos como exemplos. Somos autorizados a usar o material? Existe uma licença para este material?
Oi Ehsan & # 8211; Obrigado pelas palavras amáveis. Eu escrevo este blog apenas para minha própria diversão, então nenhuma licença é necessária para reutilizar o código, sinta-se à vontade para fazê-lo. Tudo o que peço é que, se possível, você faça referência ao meu blog como fonte para que eu possa atrair mais tráfego. Isso é até você embora 😉
Eu ficaria muito interessado em ver o resultado de / ouvir mais sobre o seu projeto, soa muito interessante!
Claro, vou adicionar uma referência a este post. Aqui está o link para o exemplo no projeto: github / IntelLabs / hpat / blob / master / examples / intraday_mean. py.
O HPAT irá compilar este código (com mudanças mínimas) automaticamente para executar eficientemente em clusters.
Parece ótimo! Obrigado pela menção também "muito apreciado!
Oi S666 Eu estava usando seus códigos para testar.
Eu notei algo porque isso está tomando Open para fechar a mudança, a linha abaixo deve adicionar um turno (1)?
Porque se você não vai estar recebendo hoje preço próximo (Mas estamos comprando na Open e não podemos saber hoje os preços próximos)
* Eu estou puxando dados do meu banco de dados, mas você fonte de dados pode ter contabilizado isso já se assim pls me ignorar obrigado.
Oi Jerrickng & # 8211; bom ponto, eu acredito que você está correto. Se estivermos comprando pelo preço de abertura com base no preço de abertura maior do que a média móvel, e estivermos usando preços de fechamento para calcular a média móvel, estamos, na verdade, sofrendo de viés de antecipação, pois em tempo real não saberíamos preço próximo a ser usado no cálculo da média móvel.
Vou mudar o código assim que tiver um momento.
bom blog !! & # 8230; O melhor que encontrei sobre o uso do Python no Financeiro.
O único modelo que se aproxima dos mercados financeiros é o Movimento Browniano Geométrico (GBM). A distância percorrida sob GBM é proporcional à raiz quadrada do intervalo de tempo. Positivo & amp; choques negativos se cancelam ao longo do tempo em uma carteira diversificada de ações. Em uma base líquida, raramente se pode vencer os mercados. De acordo com a fórmula da opção para um dado estoque S, se a opção de um mês custa 1 dólar, a opção de 4 meses no mesmo estoque custa apenas 2 dólares, porque a raiz quadrada de 4 é dois. A maneira indireta de afirmar isso é que, para um determinado período de tempo, as chances de que esta ação percorresse a distância de 1d são 4 vezes comparadas à distância de viagem de 2d. Fórmulas de correção podem não ser 100% perfeitas, mas são muito boas porque trilhões de dólares de derivativos são negociados todos os dias com base em fórmulas de opção & amp; os criadores de mercado não vão à falência - quer façam mercado em puts ou calls & amp; fique fora da especulação.
A minha pergunta é se a estratégia a seguir é possivelmente sólida na negociação usando negociação informatizada por um gestor de fundos & # 8211;
Computador coloca na seguinte ordem em estoque "S".No mesmo bilhete ter lucro & amp; as ordens de stop loss estão sempre do mesmo lado do preço de mercado atual naquele dia & amp; não em lados opostos do preço atual da ação.
1) Abaixo do preço atual “P”, faça um pedido para comprar aquela ação em “P menos 1d” com take profit em “P menos 1/2 d” & amp; um stop loss em "P menos 2d".Esta ordem é inserida todos os dias com base no preço atual naquele dia até que seja executada, seja no lucro ou com uma perda & # 8211; & amp; mesmo processo é repetido em carteira diversificada de estoques todos por computador sem intervenção humana. Ordens semelhantes são colocadas no lado positivo para vender a descoberto todos os dias com base nos preços atuais naquele dia, usando os mesmos princípios pelo computador. Nenhuma aposta direcional é feita.
2) Os preços das ações passam pelo ruído todos os dias na base intradiária. As chances de que o pedido de compra seja preenchido à distância de “P menos 1D” é 4 vezes comparado a bater o stop loss em “P menos 2D” dentro do mesmo período de tempo na mesma ordem de entrada. Com o ruído intradiário, a reversão para a média, a ordem de lucro, será atingida mais vezes do que a perda de parada na mesma ordem de entrada.
3) Em GBM, de 4 episódios, 3 vezes haveria lucro ganho de “1 / 2d” cada & amp; uma vez haveria perda de "1d" com lucro líquido de "½ d" nessas 4 execuções sobre & amp; mais uma vez tanto no lado negativo, bem como no lado positivo. Os pedidos não preenchidos são cancelados todos os dias quando a bolsa de valores é fechada. Novos pedidos são inseridos todas as manhãs com base no PREÇO CORRENTE do estoque naquele dia. A distância d é ajustada dependendo da volatilidade histórica do estoque, de modo que números decentes de ordens sejam executados - se muitas ordens forem executadas, o valor de "d" é aumentado para retardar execuções. Com um número decente de leis de execução de médias Aplique. O risco é controlado controlando quantas ordens de estoque são colocadas no lado ascendente & amp; desvantagem. Nenhuma aposta direcional a qualquer momento - todos os pedidos são não direcionais, automáticos & amp; gerado por computador com base na volatilidade atual. O risco também é controlado pela negociação de menor quantidade de ativos do fundo em relação ao total de ativos.
Com baixos custos transacionais, o gestor do fundo ganharia dinheiro.
Eu agradeceria muito sua contribuição para essa estratégia.

Meia vida de reversão média & # 8211; Fórmula de Ornstein-Uhlenbeck para o processo de reversão da média.
Ernie chan propõe um método para calcular a velocidade de reversão à média. Ele propõe ajustar a fórmula do ADF (aumento do dickey mais completo, mais rigorosa) do tempo discreto para a forma diferencial. Isto toma forma da Fórmula Ornstein-Uhlenbeck para o processo de reversão da média. Processo Ornstein Uhlenbeck & # 8211; Wikipédia.
Onde dε é algum ruído gaussiano. Chan passa a mencionar que usando a fórmula do ADF discreta abaixo:
e realizar uma regressão linear de Δy (t) contra y (t - 1) fornece λ que é então usado na primeira equação. No entanto, a vantagem de escrever a fórmula na forma diferencial é permitir uma solução analítica para o valor esperado de y (t).
Séries de reversão médias exibem λ negativo. Por outro lado, λ positivo significa que a série não volta à média.
Quando λ é negativo, o valor do preço decai exponencialmente para o valor −μ / λ com a meia-vida do decaimento igual a −log (2) / λ. Veja referências.
Podemos realizar a regressão de yt-1 e (yt-1-yt) com o código R abaixo na série de preços SPY. Para este teste, usaremos um período retrospectivo de 100 dias versus toda a série de preços (início de 1993 até o presente). Se usássemos todos os dados, estaríamos incluindo o tempo necessário para se recuperar dos mercados em baixa. Para fins de negociação, desejamos usar uma amostra menor de dados para produzir um teste estatístico mais significativo.
1. Lag SPY próximo por -1 dia.
2. Subtrair hoje perto & # 8211; Ontem feche.
3. Subtrair (hoje feche & # 8211; ontem feche) & # 8211; significa (hoje feche & # 8211; ontem perto)
4. Realize a regressão linear de (hoje perto de # 8211; ontem)
(hoje fecham & # 8211; ontem fecham) & # 8211; significa (hoje feche & # 8211; ontem perto)
5. Na saída de regressão execute - log (2) / λ.
Observando a saída da regressão acima, vemos que a inclinação é negativa e é um processo de reverberação da média. Vemos do resumo (resultados) λ é -0,06165 e quando executamos - log (2) / λ obtemos uma meia-vida de reversão média de 11,24267 dias.
11,24267 dias é a meia-vida da reversão à média, o que significa que antecipamos a série para voltar totalmente à média por 2 * a meia-vida ou 22,48534 dias. No entanto, para negociar a reversão da média de forma lucrativa, não precisamos sair diretamente na média de cada vez. Essencialmente, se um negócio se estender por 22 dias, podemos esperar uma mudança de regime de curto prazo ou permanente. Pode-se isolar contra tais derrotas, definindo uma "parada de tempo".
A meia-vida de 11,24267 dias obtida é curta o suficiente para um horizonte de negociação inter-diário. Se obtivermos uma meia-vida mais longa, poderemos esperar muito tempo para que a série retorne à média. Uma vez que determinamos que a série é a reversão da média, podemos negociar lucrativamente esta série com um modelo linear simples, usando um período retrospectivo igual à meia-vida. Em um post anterior, exploramos um modelo linear simples do zscore: flare9xblog. wordpress / 2017/09/24 / simple-linear-strategy-for-sp500 /
O período de lookback de 11 dias foi obtido usando uma abordagem de força bruta & # 8216; & # 8217; (talvez sorte). Um período ideal de 11 dias produziu o melhor resultado para o SPY.
Post for brute forçado, notou-se durante a otimização da estratégia acima que ajustando a meia-vida de 11 dias para qualquer número acima ou abaixo, nós experimentamos uma diminuição no desempenho.
Ilustramos o efeito de mover o período de retrospectiva mais curto e mais longo que a meia-vida obtida. Por simplicidade, usaremos o total de retornos cumulativos para comparação:
Vemos que uma retrospectiva de 11 dias produziu os maiores retornos cumulativos acumulados.
Ernie Chan continua mencionando que "porque se preocupar com testes estatísticos". A resposta está no fato de que regras comerciais específicas só acionam quando suas condições são atendidas e, portanto, tendem a pular os dados. O teste estatístico inclui dados que um modelo pode pular e, assim, produzir resultados com maior significância estatística.
Além disso, uma vez que confirmamos que uma série é a reversão, podemos ter a certeza de encontrar uma estratégia comercial lucrativa e não a estratégia que acabamos de testar.
Negociação Algorítmica: Estratégias Vencedoras e Sua Justificativa - 28 de maio de 2013, por Ernie Chan.
Compartilhar isso:
Relacionado
Autor: Andrew Bannerman.
Inspetor de integridade. A análise quantitativa é um tempo passado favorito. Ver todas as mensagens de Andrew Bannerman.
6 pensamentos sobre & ldquo; Meia vida de reversão média & # 8211; Fórmula de Ornstein-Uhlenbeck para o processo de reversão da média
Eu acho que seus passos não são consistentes com o código. Me corrija se eu não sou.
# A seguinte linha de código está fazendo:
# ontem e # 8217; close & # 8211; média de (YESTERDAYS & # 8217; CLOSE)
# MAS NÃO, Subtrair a média das diferenças defasadas?
prev. y.mean & lt; - y. lag & # 8211; mean (y. lag) # Subtraia ontens perto da média das diferenças defasadas.
Sua correta, minha descrição não corresponde a esta versão de calcular a meia-vida de reversão à média. Esta versão regride y (t) - y (t - 1)
vs y (t - 1) & # 8211; mean (y - t - 1). Vou atualizar para adicionar o método de Ernie Chans quando tiver uma chance de seu livro, negociação algorítmica, estratégias vencedoras e suas razões. Em suma, Ernies se parece com isso:
Simplesmente registe y (t) - y (t - 1) vs y (t - 1) ou em inglês hoje perto & # 8211; ontem fechar vs ontimos fechar.
ylag = lag (y, 1) == y (t - 1)
deltaY = y-ylag == y (t) - y (t - 1)
regressão = y (t) - y (t - 1) (y, variável dependente) ey (t - 1) (x, variável independente)
Vou começar a atualizar este post quando tiver uma chance. Obrigado pela leitura!
Pode ser óbvio, mas gostaria de confirmar:
& # 8220; Esta versão regride y (t) - y (t - 1) vs y (t - 1) - média (y (t - 1) & # 8221;
y é y (t - 1) - média (y (t - 1)
Isso está correto? Felicidades.
Ótima leitura. Muito útil!
Feliz Ano Novo! A função R lm () é y, x. y sendo variável dependente e x independente. lm. fit () é x, y!
x é y (t - 1) - média (y (t - 1)
Eu tive que checar! Ernie Matlab, a função ols é y, x. Eu pensei que era como Pythons, x, y. O acima está correto e meu código R também está correto para este método.

Estratégia de estoque de reversão à média
Em anexo está um algoritmo de negociação em par que permite ao usuário ativar / desativar testes diferentes para cointegração / reversão à média do spread do par antes de realizar qualquer negociação. Se você optar por ativar um dos testes, o valor do teste será registrado como uma série de tempo visível na página de resultados do backtest.
O par que está sendo negociado neste algoritmo é o petróleo e ouro ETFs (USO e GLD), mas você pode modificá-los como quiser.
Os 3 testes diferentes são:
- Efetivamente, este é um teste de raiz unitária para determinar se o spread é cointegrado.
- Além disso, uma função é incluída mostrando como usar os valores críticos do teste ADF em vez do valor p.
- Este é o tempo teoricamente computado, baseado em uma janela histórica de dados, que levará para que o spread reverta metade da sua distância após ter divergido da média do spread.
- Efetivamente, isso retorna um valor entre 0 e 1 que informa se uma série temporal é uma tendência ou uma reversão à média. Quanto mais próximo o valor estiver de 0,5, maior será o número "aleatório". a série temporal se comportou historicamente. Valores abaixo de 0,5 indicam que a série temporal é a reversão da média e, acima de 0,5, a tendência. Quanto mais próximo o valor estiver de 0, maior o nível de reversão à média.
- A literatura de negociação está em conflito quanto à utilidade do expoente de Hurst, mas incluí-lo, no entanto, e defini a opção padrão para False no algoritmo.
Os resultados do backtest abaixo incorporam dois destes testes:
Valor de p do teste ADF, calculado ao longo de uma janela de lookback de 63 dias (por exemplo, 3 meses), com um p-valor mimo requerido de 0,20.
Para modificar os valores dos parâmetros dos testes, basta olhar na função de inicialização, para blocos de código que se parecem com isso. Veja como os parâmetros do valor p do teste do ADF são definidos:
Aqui você vê como há um dicionário definido chamado & # 39; stat_filter & # 39; que você pode usar para armazenar os parâmetros de cada teste. Primeiro eu crio outro dicionário dentro de & # 39; stat_filter & # 39; chamado & # 39; adf_p_value & # 39; e, em seguida, eu carrego em todos os valores de parâmetros relevantes para o teste do ADF que eu quero definir quando é aceitável entrar em uma negociação. Esses cinco parâmetros exatos (por exemplo, as chaves do dicionário) serão definidos para todos os testes, conforme você verá o código do algoritmo e perceberá que as expressões adf_critical_value, half_life, hurst_exponent são definidas após ele. Os 5 parâmetros são:
& # 39 ;: & # 39 ;: Boolean, True, se você quiser que o algoritmo use este teste.
Suporte para Frequência Intradiária.
(Deixe-me saber se você se deparar com problemas com isso, como eu não fiz tanto testes com ele como eu tenho com apenas diariamente freq)
Você pode configurar este algoritmo para ser executado em dados intraday minuciosamente também. Por exemplo. construa um spread par usando preços de fechamento de 15 minutos.
Primeiro, mude a variável "context. trade_freq & # 39; de & # 39; diariamente & # 39; para "intraday":
context. trade_freq = & # 39; diariamente & # 39; # & # 39; diariamente & # 39; ou & # 39; intraday & # 39;
Então, procure por este bloco de código abaixo na função initialize (), e especifique o & # 39; intraday_freq & # 39; valor para a frequência de preços de fechamento a serem usados ​​(por exemplo, barras de 15 minutos). Em seguida, defina & # 39; run_trading_logic & # 39; para ser com que frequência você deseja que a lógica seja aplicada aos dados de mercado. Eu escolhi 60, o que significa, execute essa lógica a cada 60 minutos, mas se desejar, mude para 1, e a lógica será executada a cada minuto (cuidado, pois isso resultará em tempos de backtest realmente longos).
A variável & # 39; check_exit_every_minute & # 39; pode ser definido como Verdadeiro se você quiser que a lógica seja executada a cada minuto se-e-somente-se você estiver atualmente em uma negociação. Por exemplo. ele verifica se você precisa sair da negociação a cada minuto, em vez de esperar pelos próximos N períodos (por exemplo, 60 minutos, conforme especificado na variável "run_trading_logic_freq" #)
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
O mesmo algoritmo acabou de começar 9 meses antes.
Obrigado pela parte. Percebi que há uma função de coint em statsmodels. tsa. stattools. Existe uma diferença significativa entre a função coint e o teste ADF? Algum sentido em usar os dois?
Anexei um backtest abaixo das tentativas de encontrar o valor p de ambos os testes para cada par, todos os dias. Disclaimer: o que muitas vezes acho que está acontecendo em python na verdade não é.
Eu ainda não tentei a função coint no stattools, embora eu imagine que seja muito semelhante. Eu apenas dei uma rápida olhada no código, e está efetivamente executando uma regressão da versão defasada das timeseries de entrada versus a versão não corrigida que é bastante semelhante ao ADF. A diferença pode estar em como os valores críticos são computados.
O teste Engle-Granger também é usado algumas vezes para testar a cointegração, mas ainda não examinei essa implementação.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
Grande Algo. É incrível. Muito útil.
Olá Justin / Tudo.
Você poderia sugerir como posso executar esse algoritmo em vários pares, em vez de apenas um par?
Tente fazer uma classe de negociação de pares que acompanhe toda a contabilidade de cada par. Veja o algoritmo de negociação de par de filtros Kalman generalizado de David para um ótimo exemplo de negociação de pares baseada em classes.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
Obrigado por compartilhar informações.
Eu clonei o algoritmo de Justin, no entanto, quando executo o backtest, o desempenho permanece em 0% para a totalidade da janela do backtest.
Eu não fiz alterações no código-fonte original.
Alguma idéia de por que isso estaria ocorrendo?
Você provavelmente executa algo no modo diário e só funciona no modo minuto.
Aqui está o meu mais recente backtest do original Lent de Justin que começou apenas 9 meses antes.
Vale a pena notar que, quando eu passo backtests, códigos e cadernos de pesquisa, a intenção é ilustrar uma metodologia e fornecer alguns modelos de código para estimular o processo de pensamento criativo da comunidade e salvar as pessoas a algum tempo fornecendo e cole fragmentos de código que podem ser integrados em seu próprio código. De maneira alguma estou postando algo que tenha sido totalmente aprovado, e imediatamente investível em sua forma exata, por qualquer extensão da imaginação. Costumo inclinar-me a exemplos mais simples, em vez de excessivamente complexos, para beneficiar um espectro mais amplo de leitores.
Vejo que você reconheceu que o backtest que eu postei acima parece falhar muito mal em um período de tempo diferente. Vemos isso muito com as estratégias que analisamos, muitas das quais são super adequadas apenas ao período de dois anos nos concursos que realizamos. Tentamos trabalhar com o proprietário do algoritmo e fornecer conselhos sobre o motivo pelo qual ele pode ter sido quebrado nos diferentes períodos de tempo. Talvez você possa estender sua análise para me fornecer alguns conselhos para melhorar essa estratégia? Talvez você tenha algumas recomendações sobre como incorporar um modelo de troca de regime que provavelmente ajudará uma estratégia como essa, dado o prazo que parece falhar (as crises de futuros financeiros / de commodities que ocorreram no final de 2008). Talvez um modelo de troca de regime de volatilidade estocástica possa ajudar significativamente. Se você tiver experiência nessa área, tenho certeza de que a comunidade consideraria um acréscimo sólido a incorporar em estratégias como essas para torná-las mais robustas. Eu sei que eu faria.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
Por que você escolheu o par USO e GLD? Eu acho que uma pergunta mais ampla é: você pode sugerir um processo para examinar uma cesta de ações e determinar se existem pares negociáveis? Eu estou supondo testes para cointegração seria um método como o ADF como você usou. Seria bom se houvesse um algoritmo para percorrer uma cesta de ações e determinar automaticamente qual seria a classificação "boa". pares.
Acabei de escolher USO / GLD para replicar este exemplo que usa esses mesmos tickers, deste livro: amazon / Quantitative-Trading-Build-Algorithmic-Business / dp / 0470284889 /
Esse livro é realmente uma boa introdução à negociação de pares de arbitrários (assim como seus outros livros). Todo o código do livro está no Matlab, então meu algoritmo foi uma tentativa de implementá-lo em Python, em nosso backtester, e incorporar algumas das outras técnicas estatísticas descritas ao longo do livro.
Você está correto, que a seleção de um monte de pares em potencial é uma idéia razoável de pesquisa, mas você deve estar ciente de simplesmente datamining. Primeiro, você deseja determinar uma base econômica sensata para a qual os pares de ações devem ser vinculados (por exemplo, pares de ações no mesmo setor seriam pares de ações razoáveis ​​para pesquisar). Escrever um algo em nosso backtester para conseguir isso seria bastante direto: primeiro você pode usar nosso banco de dados de fundamentos da Morningstar para pegar todos os estoques no setor de energia, talvez até filtrar para ações de empresas de certa faixa de mercado (por exemplo, apenas limite de estoque de energia), em before_trading_starts (), você faz um loop sobre cada par de ações computando o valor p do ADF (ou outro status de cointegração), mantém todos os pares de ações que atendem aos seus critérios e, em handle_data (), aqueles que atendem aos critérios através de um algoritmo semelhante ao que eu compartilhei para entrar / sair das negociações.
Eu ou alguém da nossa equipe aqui na Q podemos tentar desenvolver um modelo para isso e compartilhá-lo.
Você também pode ver este post do fórum que mostra como desenvolver um único algoritmo que troca um portfólio de múltiplos pares:
É o mesmo backtest no primeiro comentário de David Edwards, aqui:
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
Eu notei na seção do blog que você tem um notebook usando um otimizador bayesiano. Você sabe como eu posso puxar para Q? está atualmente no github..thanks!
@Adam, No momento, não é possível usar o otimizador bayesiano na postagem do blog no ambiente Q. Foi mais uma prova de ideia de implementação de conceito. Como você mencionou, o código que usei para o post do blog está no github e você pode se inscrever para uma avaliação com o SigOpt para obter um nome de usuário / chave de API para trabalhar com ele em seu próprio ambiente de python / zipline localmente. Oferecer alguns desses métodos alternativos de otimização como um serviço é um conceito interessante no qual teremos que pensar à medida que desenvolvemos nossa plataforma Q no futuro. Obrigado pelo feedback!
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
Obrigado Justin! Seria legal poder fazer esse tipo de otimização e / ou uma técnica de enxame de partículas em Q. :)
Eu acredito que encontrei uma lacuna na lógica de negociação. Na seção de filtragem de estatísticas (linhas.
155-176) o algoritmo sai imediatamente se um teste falhar. Isso impede que novos negócios sejam abertos, mas não faz nada para lidar com negociações existentes. Negociações abertas permanecem abertas até que todos os testes estatísticos passem novamente e o algoritmo atinja sua lógica de saída padrão.
Por projeto, também devemos ter uma alta probabilidade de estar em uma negociação quando isso acontece, então o impacto pode ser bastante alto. O problema em detectar isso é que, se o relacionamento se restabelecer rapidamente, o desempenho não será prejudicado. Mas se incluirmos um período de tempo em que o relacionamento não retorna rapidamente, como Vladimir fez, os resultados são perceptíveis.
Eu adicionei algumas linhas para fechar todas as posições que estão abertas quando os testes estatísticos estão quebrados. Provavelmente existem maneiras melhores de lidar com a lógica de saída, mas essa simples mudança mostra o benefício de tê-la ali. O algoritmo não funciona tão bem durante o período de teste original, mas o desempenho melhora durante o período prolongado.
(Eu também fiz pequenas alterações nas linhas 20 e 21 para usar a função sid () para definir os ativos xey em vez de símbolo (). O restante do algoritmo não foi modificado.)
Par comercializar usando métodos Copula em vez de cointegração é a nova moda. Alguém tentou isso?
Par trading usando métodos Copula em vez de cointegração é o novo.
raiva. Alguém tentou isso?
Este artigo oferece uma comparação sistemática de métodos de cópula e métodos de cointegração quando aplicados a estoques de mina de ouro dos EUA. Além disso, o papel contrasta os critérios de seleção de pares com base na estatística ADF, na tau de Kendall, na medida de rho e distância de Spearman. Uma nota: não sou o autor.
Obrigado Julian. Eu tive uma chance e os resultados estão parecendo muito bons.
Qualquer coisa que você pode compartilhar Aqua, para brincar?
Coloquei muitos recursos (tempo e dinheiro) para fazer as cópulas funcionarem no Q. Mas você pode usar isso para começar:
Obrigado, eu estava mais procurando código Q para brincar. o espírito de compartilhar;)
Eu coloquei muito tempo (e dinheiro) em tirolesa ao vivo e os algos que eu desenvolvi e ainda compartilho. Um dia o karma virá e pagará graciosamente.
Peter, vou tentar colocar algo e publicá-lo sem revelar meu molho secreto :)
Aqui está a aula de Cópula Gaussiana. Você pode usá-lo para trocar um par ou uma cesta. Deixe-me saber se você tem alguma dúvida:
Notebook anexado em uso.
Existem várias maneiras de implementar um algoritmo.
Par de negociação. Calcule uma soma progressiva de 0,5 - CDF condicional. Isso deve ser revertido. Veja aqui.
São ideias suficientes para tentar por um tempo. @ Peter, onde estão minhas bênçãos?
Obrigado Aqua Rooster, informação realmente interessante, cheguei a ele durante a leitura & quot; Algoritmic Trading & quot; por Ernie Chan. Quanta melhora você vê na cópula em comparação com a Cointegração CADF e Johansen referido pelo Sr. Chan?
Desculpe, algo deu errado. Tente novamente ou entre em contato enviando feedback.
Você enviou com sucesso um ticket de suporte.
Nossa equipe de suporte entrará em contato em breve.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta para fornecer serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta para fornecer serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.

No comments:

Post a Comment