Tuesday 27 March 2018

Estratégia de reversão média intradía


Estratégia de reversão média intraday
O seguinte artigo é patrocinado pela Carta de Opções Dr. Stoxx.
Nos meus dois artigos anteriores sobre este assunto, detalhei como os comerciantes e os investidores usam um dos componentes mais comuns da análise técnica, a média móvel simples. Uma média móvel é uma média corrente do preço de fechamento de uma ação em x número de períodos de tempo. As duas médias mais usadas são as médias móveis de 50 dias e 200 dias. As médias móveis não são apenas usadas por técnicos de mercado especialmente treinados. Mesmo os analistas financeiros com o Harvard MBA referem-se às médias móveis de 50 dias e 200 dias com a freqüência que fazem com os índices P / E e as taxas de crescimento dos lucros.
Nos artigos anteriores, falei sobre como as médias móveis nos ajudam a obter uma boa "leitura" da tabela de preços de ações. Nós vimos como usar as médias móveis para determinar a tendência dominante de um estoque ou índice, bem como os pontos ideais para entrar ou sair dessa tendência. Hoje eu quero trazer a minha discussão sobre as médias móveis ao fim, falando sobre uma maneira mais de usar as médias móveis. Essa é, de fato, a estratégia de negociação técnica mais lucrativa que uso. Nesta estratégia, destacamos a ideia de que determinadas médias móveis - particularmente as "grandes", as médias de 50 dias e 200 dias - atuam como "ímãs" pelo preço de uma ação ou índice sempre que se afasta muito das médias.
O fenômeno que eu estou fazendo referência aqui tem um rótulo elegante. É chamado de "reversão média", e recaia com tanta frequência nos mercados financeiros que estudá-lo e aprender a lucrar com isso tornou-se uma espécie de indústria artesanal. Algumas das maiores mentes financeiras do mundo, incluindo professores da Ivy League e economistas do Federal Reserve Bank, publicaram artigos revisados ​​por pares sobre o assunto.
A idéia por trás da reversão média, em poucas palavras, é esta: uma média móvel do preço da ação representa a acumulação de sabedoria sobre o valor justo de mercado das ações de uma determinada empresa (e, portanto, da própria empresa), enquanto a flutuação do dia a dia no preço das ações é mais um reflexo dos caprichos sempre em mudança do sentimento do mercado. Assim, sempre que esse sentimento impulsiona o preço da ação muito longe de sua média, a eficiência das forças de mercado sendo o que são, o preço da ação é obrigado a voltar a ser médio em curto prazo.
Determinando exatamente quando o preço foi esticado muito longe de sua média, e até que ponto de volta ao meio que ele viajará quando ele reverter, é mais arte do que ciência. Mas existe uma ferramenta que pode nos ajudar muito com essa determinação. Usando o desempenho do preço passado em X numero de intervalos de tempo, esta ferramenta mede o desvio padrão de uma média móvel e tira bandas no gráfico, ambos acima da média abaixo, que mostram os limites superior e inferior desse desvio. Espera-se que o preço permaneça contido dentro dessas bandas no futuro. Esta seria uma ação de preço "normal". Qualquer movimento acima ou abaixo das bandas, portanto, sinaliza um movimento "anormal" além do desvio padrão, daí uma sobreexpressão que provavelmente reverterá para a média.
A ferramenta que eu falo aqui, é claro, é Bollinger Bands, desenvolvido pelo técnico de mercado, John Bollinger, na década de 1980. Usei essas bandas há anos e posso dizer que, como a maioria dos indicadores técnicos, eles funcionam bem quando trabalham! Mas quando as Bandas Bollinger não estão funcionando bem, sua negociação com base nelas pode ficar horrivelmente errada. Ainda assim, quando acoplamos as Bandas com perdas para minimizar os danos, eles são a melhor ferramenta que temos para determinar regiões de extremos de preços onde um estoque ou índice provavelmente se estenderá e voltará para a média.
Deixe-me mostrar alguns exemplos. No gráfico abaixo, você verá as ações da EBAY, Inc. (Nasdaq: EBAY) com a média móvel de 200 dias sobreposta, juntamente com as Bandas Bollinger superiores e inferiores, definidas em 1,5 desvios padrão, longe da média. Você pode ver como nos últimos 9 meses, sempre que o preço viajou para fora de qualquer banda, era apenas uma questão de tempo antes de se recuperar da outra direção.
Eu usei um desvio padrão de apenas 1,5 na média móvel de 200 dias no gráfico acima, porque leva um movimento significativo para ficar longe dessa média móvel de longo prazo. Quando encurtamos nosso tempo até a média de 50 dias, no entanto, precisamos aumentar nosso desvio de 1,5 para 2,0 para reduzir o ruído dos sinais falsos.
Aqui está um gráfico da Amazon, Inc. (Nasdaq: AMZN) durante um tempo bastante ineficiente e tumultuado na história recente do estoque. Eu aqui superpôs a média móvel de 50 dias com bandas ajustadas em 2.0 desvios padrão longe da média. Você pode ver um maior número de sinais em comparação com o gráfico acima, e também que alguns sinais teriam sido mais lucrativos do que outros.
À medida que você trabalha com Bollinger Bands, você quer refinar seu sistema de negociação. Você não pode simplesmente comprar cada mergulho abaixo da faixa mais baixa e vender curto cada reunião acima da banda superior. À medida que você experimenta, sugiro integrar algumas das seguintes sugestões no seu sistema comercial:
Pegue apenas sinais de compra em áreas de suporte de preços e venda sinais em áreas de resistência de preços Não troque movimentos menores além das Bandas, mas apenas aqueles que excedem as Bandas por uma determinada porcentagem (você pode usar o Indicador de B Bollinger de% B para esta determinação ) Tente entrar somente quando o preço fecha fora das Bandas em um dia e fecha-se dentro das Bandas no próximo dia. Apenas faça negociações quando Bandas estiverem largas e evitem trocas quando as Bandas estiverem apertadas.
A teoria da reversão média é um fenômeno bem atestado que, quando bem aprendido e negociado corretamente, pode ser uma abordagem muito lucrativa para os mercados. Se você está procurando mais recursos neste sistema comercial, você pode querer experimentar o Manual de Negociação de Reversão Média que eu ofereço no meu site, DrStox. Você também pode olhar para o meu livro, Market Neutral Trading, onde eu explico inteiramente como uso este sistema comercial. Mas certamente a fonte original é sempre um bom lugar para começar também: Bollinger em Bollinger Bands, a "Bíblia" das Bandas!
Conteúdo gratuito recente do Dr. Thomas Carr.
$ MDCA - Comprar The Breakout? Sim! & mdash; 24/07/17 Comprar MOMO agora antes do Bounce & mdash; 7/05/17 A CONN pode seguir em frente? & mdash; 23/06/17 Pode o Rally em $ CVNA continuar? & mdash; 20/06/17 Spicy $ SAUC a Great Buy Here & mdash; 23/05/17.
Enviar mensagem para.
Nós adicionamos você à lista!
Você começará a receber gratuitamente o conteúdo da Carta de Opções do Dr. Stoxx!

QuantStart.
Junte-se ao portal de membros privados da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento. Você encontrará um grupo bem informado de mentalistas quant pronto para responder suas perguntas comerciais mais importantes.
Confira meu ebook sobre o comércio de quant, onde eu ensino você como criar estratégias de negociação sistemáticas lucrativas com ferramentas Python, desde o início.
Dê uma olhada no meu novo ebook sobre estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas bayesianas, com Python e R.
Por Michael Halls-Moore em 20 de fevereiro de 2014.
Neste artigo, vamos considerar nossa primeira estratégia de negociação intradiária. Será usando uma idéia comercial clássica, a de "pares comerciais". Neste caso, vamos fazer uso de dois Exchange Traded Funds (ETFs), SPY e IWM, que são negociados na Bolsa de Valores de Nova York (NYSE) e tentam representar os índices do mercado de ações dos EUA, os S & P500 e Russell 2000, respectivamente.
A estratégia cria, em termos gerais, uma "propagação" entre o par de ETFs saudade de um e curto um montante do outro. A proporção de longo a curto pode ser definida de muitas maneiras, como a utilização de técnicas de coesão estatística de séries temporais. Nesse cenário, vamos calcular uma relação de cobertura entre SPY e IWM através de uma regressão linear rotativa. Isso nos permitirá criar uma "propagação" entre o SPY eo IWM, que é normalizado para um escore z. Os sinais de negociação serão gerados quando o escore z exceder certos limiares sob a crença de que a propagação reverterá para a média.
O raciocínio para a estratégia é que a SPY e a IWM caracterizam aproximadamente a mesma situação, a da economia de um grupo de corporações de grandes capitais e de capitais pequenos. A premissa é que, se alguém adotar a propagação dos preços, isso deve ser reverso, já que os eventos "locais" (no tempo) podem afetar separadamente os índices S & P500 ou Russell 2000 (como small-cap / large - diferenças de limite, datas de reequilíbrio ou negociações de bloco), a série de preços de longo prazo dos dois provavelmente será cointegrada.
A estratégia.
A estratégia é realizada nas seguintes etapas:
Dados - barras de 1 minuto de SPY e IWM são obtidas de abril de 2007 até fevereiro de 2014. Processamento - Os dados estão corretamente alinhados e as barras ausentes são mutuamente descartadas. Spread - A relação de cobertura entre os dois ETFs é calculada tomando uma regressão linear rotativa. Isso é definido como o coeficiente de regressão $ \ beta $ usando uma janela de lookback que se desloca para a frente em 1 barra e recalcula os coeficientes de regressão. Assim, a taxa de cobertura $ \ beta_i $, para o bar $ b_i $ é calculada entre os pontos $ b_ $ a $ b_ $ para um lookback de $ k $ bars. Z-Score - O escore padrão do spread é calculado da maneira usual. Isso significa subtrair a média (amostra) da propagação e dividir pelo desvio padrão (amostra) da propagação. O raciocínio para isso é tornar os parâmetros de limiar mais simples para interpet, uma vez que o z-score é uma quantidade sem dimensão. Eu deliberadamente introduzi uma polarização de lookahead nos cálculos, a fim de mostrar quão sutil pode ser. Tente e cuide disso! Operações - Os sinais longos são gerados quando o escore z negativo cai abaixo de um limite pré-determinado (ou pós-otimizado), enquanto os sinais curtos são o inverso disso. Os sinais de saída são gerados quando o escore z absoluto cai abaixo de um limite adicional. Para essa estratégia, eu (um pouco arbitrariamente) escolhei um limite de entrada absoluto de $ | z | = 2 $ e um limite de saída de $ | z | = 1 $. Supondo um comportamento de reversão médio na propagação, espero que capture esse relacionamento e ofereça um desempenho positivo.
Talvez a melhor maneira de entender a estratégia em profundidade é implementá-la. A seção a seguir descreve um código Python completo (arquivo único) para implementar esta estratégia de reversão média. Eu comande o código de forma liberal para ajudar a entender.
Implementação do Python.
Tal como acontece com todos os tutoriais Python / pandas, é necessário configurar um ambiente de pesquisa Python como descrito neste tutorial. Uma vez configurada, a primeira tarefa é importar as bibliotecas Python necessárias. Para este backtest, matplotlib e pandas são obrigatórios.
As versões específicas da biblioteca que estou usando são as seguintes:
Vamos continuar e importar os bibliotecários:
A seguinte função create_pairs_dataframe importa dois arquivos CSV contendo as barras intradias de dois símbolos. No nosso caso, isso será SPY e IWM. Em seguida, ele cria um conjunto de quadros de dados separados, que usa os índices de ambos os arquivos originais. Como os seus timestamps são susceptíveis de serem diferentes devido a negociações e erros perdidos, isso garante que teremos dados correspondentes. Este é um dos principais benefícios de usar uma biblioteca de análise de dados como pandas. O código "boilerplate" é tratado de maneira muito eficiente.
O próximo passo é realizar a regressão linear de rolamento entre SPY e IWM. Nessa instância, IWM é o preditor ('x') e SPY é a resposta ('y'). Define uma janela de lookback padrão de 100 barras. Conforme discutido acima, este é um parâmetro da estratégia. Para que a estratégia seja considerada robusta, idealmente queremos ver um perfil de retorno (ou outra medida de desempenho) como uma função convexa do período de lookback. Assim, em uma fase posterior do código, realizaremos uma análise de sensibilidade ao variar o período de lookback em um intervalo.
Uma vez que o coeficiente de rolamento beta é calculado no modelo de regressão linear para SPY-IWM, nós o adicionamos aos pares DataFrame e soltamos as linhas vazias. Isso constitui o primeiro conjunto de barras igual ao tamanho do lookback como medida de corte. Em seguida, criamos o spread dos dois ETFs como uma unidade de SPY e $ - \ beta_i $ unidades de IWM. Claramente, esta não é uma situação realista, pois estamos tomando quantidades fracionárias de IWM, o que não é possível em uma implementação real.
Finalmente, criamos a pontuação z da propagação, que é calculada subtraindo a média da propagação e normalizando pelo desvio padrão da propagação. Note-se que há um viés bastante parecido com a aparência aqui. Eu deliberadamente deixei isso no código, pois queria enfatizar o quão fácil é cometer um erro na pesquisa. A média eo desvio padrão são calculados para toda a série de tempo de propagação. Se isso for para refletir a verdadeira precisão histórica, essa informação não estaria disponível, pois isso implicitamente faz uso de informações futuras. Assim, devemos usar um meio de rolamento e stdev para calcular o escore z.
Em create_long_short_market_signals, os sinais de negociação são criados. Estes são calculados ao longo do spread quando o escore z excede negativamente um escore z negativo e diminui o spread quando o escore z excede positivamente um escore z positivo. O sinal de saída é dado quando o valor absoluto do escore z é menor ou igual a outro (menor em magnitude).
Para alcançar essa situação, é necessário saber, para cada barra, se a estratégia está "dentro" ou "fora" do mercado. long_market e short_market são duas variáveis ​​definidas para acompanhar as posições de mercado longo e curto. Infelizmente, isso é muito mais simples de codificar de forma iterativa em oposição a uma abordagem vetorializada e, portanto, é lento para calcular. Apesar dos bares de 1 minuto que exigem.
700.000 pontos de dados por arquivo CSV ainda é relativamente rápido para calcular em minha máquina de desktop mais antiga!
Para iterar sobre um pandas DataFrame (que é verdade que NÃO é uma operação comum) é necessário usar o método iterrows, que fornece um gerador sobre o qual iterar:
Nesta fase, atualizamos pares para conter os sinais longos / curtos reais, o que nos permite determinar se precisamos estar no mercado. Agora, precisamos criar um portfólio para acompanhar o valor de mercado das posições. A primeira tarefa é criar uma coluna de posições que combine os sinais longos e curtos. Isso conterá uma lista de elementos de $ (1,0, -1) $, com $ 1 $ representando uma posição longa / de mercado, US $ 0 $ que não representa nenhuma posição (deve ser encerrado) e $ -1 $ representando uma posição de curto / mercado . As colunas sym1 e sym2 representam os valores de mercado das posições SPY e IWM no final de cada barra.
Uma vez que os valores de mercado da ETF foram criados, os somamos para produzir um valor de mercado total no final de cada barra. Isso é transformado em um fluxo de devoluções pelo método pct_change para esse objeto da série. Linhas subsequentes de código eliminam as entradas incorretas (elementos NaN e inf) e, finalmente, calculam a curva de capital integral.
A função __main__ junta tudo. Os arquivos CSV intradiários estão localizados no caminho do datadir. Certifique-se de modificar o código abaixo para apontar para o seu diretório particular.
Para determinar quão sensível é a estratégia para o período de lookback, é necessário calcular uma métrica de desempenho para uma variedade de lookbacks. Eu escolhi a porcentagem total final de retorno do portfólio como a medida de desempenho e a faixa de lookback em $ [50,200] $ com incrementos de 10. Você pode ver no código a seguir que as funções anteriores estão envolvidas em um loop para este intervalo , com outros limiares mantidos fixos. A tarefa final é usar matplotlib para criar um gráfico de linha de lookbacks vs returns:
O gráfico do período de lookback versus retornos agora pode ser visto. Observe que existe um máximo "global" em torno de um lookback igual a 110 barras. Se tivéssemos visto uma situação em que o lookback fosse independente dos retornos, isso teria sido motivo de preocupação:
Análise de sensibilidade do período de lookback de regressão linear SPY-IWM.
Nenhum artigo de backtesting seria completo sem uma curva de equidade inclinada para cima! Assim, se você deseja traçar uma curva dos retornos cumulados versus tempo, você pode usar o seguinte código. Ele irá traçar o portfólio final gerado a partir do estudo de parâmetros de lookback. Assim, será necessário escolher o lookback dependendo do gráfico que deseja visualizar. O gráfico também traça os retornos de SPY no mesmo período para facilitar a comparação:
O gráfico de curva de equidade a seguir é para um período de lookback de 100 dias:
Análise de sensibilidade do período de lookback de regressão linear SPY-IWM.
Note-se que a redução da SPY é significativa em 2009 durante o período da crise financeira. A estratégia também teve um período volátil nesta fase. Observe também que o desempenho deteriorou-se um pouco no último ano devido à natureza fortemente tendencial da SPY neste período, o que reflete o índice S & P500.
Note que ainda temos que levar em consideração o viés de lookahead ao calcular o escore z do spread. Além disso, todos esses cálculos foram realizados sem custos de transação. Esta estratégia certamente funcionaria muito mal quando esses fatores forem levados em consideração. As taxas, a propagação / desistência de lance / pedido são todas atualmente desaparecidas. Além disso, a estratégia é negociada em unidades fracionárias de ETFs, o que também é muito pouco realista.
Em artigos posteriores, criaremos um backtester muito mais sofisticado baseado em eventos que levará esses fatores em consideração e nos dará uma confiança significativa na nossa curva de equidade e métricas de desempenho.
Apenas iniciando o comércio quantitativo?
3 razões para se inscrever para a lista de e-mails QuantStart:
1. Quant Trading Lessons.
Você terá acesso instantâneo a um curso de e-mail gratuito de 10 partes, repleto de sugestões e dicas para ajudá-lo a começar a negociação quantitativa!
2. Todo o conteúdo mais recente.
Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.
Real, dicas de negociação viáveis, sem tonturas.

MatlabTrading.
Blog para MATLAB & # 174; usuários interessados ​​em estratégias de negociação algorítmica, backtesting, negociação de pares, arbitragem estatística, etc.
Terça-feira, 1 de janeiro de 2013.
Intraday significa reversão.
As regras são simples e semelhantes à estratégia que testei na última publicação:
Se o retorno de barra do par exceder 1 no z-score, troque a barra seguinte.
O resultado parece muito bonito:
Se você acha que este gráfico é muito bom para ser verdade, isso infelizmente é o caso. Não foram considerados custos de transação ou spread de oferta e solicitação. Na verdade, eu duvidava que houvesse algum lucro depois de subtrair todos os custos de negociação.
Ainda assim, este tipo de gráficos é a cenoura pendurada na minha frente, mantendo-me em pé.
6 comentários:
seria interessante ver o mesmo teste feito em dados horários - isso também poderia ser resistente aos custos de transação, Jozef.
30 segundos - esta resolução é pequena, à medida que você atrasa com o salto do Bid-ASk, dados não sincronizados e todos os outros ruídos do micromarket. Uma maneira mais razoável seria de diariamente a hora em um primeiro passo.
De acordo com o Epps Effect, é sabido que os pares têm baixa correlação se o prazo tornar-se curto (pequeno). Eu acho que seu resultado é baseado em algum tipo de ambiente caótico como o uso de um gráfico de curto prazo que tem tantas reversões. Na verdade, tenho o bom resultado quieto que faz lucro com a inclusão do custo de negociação no mercado cambial. O teste foi realizado com dados de 1 hora e a estratégia é baseada no spread neutro do mercado.
Olá Hyojun Moon,
É difícil explicar com texto. Talvez você possa procurar arbitragem estatística com base na dissertação média de reversão espalhada alternativamente.
Você pode tornar o mercado neutro, selecionando pares como o gbpusd e o eurusd. Eles são altamente correlacionados (ainda um pouco cointegrado) em ponto fundamental ou ponto estatístico. pode ser bom escolher não muito elevados pares correlacionados como index etf-index, mas altamente correlacionados ao comércio de forma segura e cointegrada, o que significa que os pares estão vibrando entre a linha de tendência linear. você pode precisar de negociação de margem de divisas, pois precisa de alavanca para obter lucro real.
WFAToolbox - Walk-Forward Analysis Toolbox.
Complemento MATLAB para desenvolver estratégias de negociação algorítmica em MATLAB da maneira fácil.

Negociação quantitativa.
Investimentos quantitativos e idéias comerciais, pesquisas e análises.
Quinta-feira, 07 de abril de 2016.
Estrutura média de reversão, momentum e volatilidade.
onde Var significa tomar a variância em muitos tempos de amostra. Se os preços realmente seguem uma caminhada aleatória geométrica, então Var (τ) & # 8801; Var ((z (t) - z (t-τ)) & # 8733; τ, e a volatilidade simplesmente se escala com a raiz quadrada de O intervalo de amostragem. É por isso que se medimos o retorno diário, precisamos multiplicar a volatilidade diária por & # 8730; 252 para obter a volatilidade anualizada.
Os comerciantes também sabem que os preços realmente não seguem uma caminhada aleatória geométrica. Se os preços forem significativos, veremos que eles não se afastarão do valor inicial tão rápido quanto uma caminhada aleatória. Se os preços estiverem tendendo, eles se afastarão mais rápido. Em geral, podemos escrever.
onde H é chamado de "Expositor Hurst", e é igual a 0,5 para uma caminhada aleatória geométrica verdadeira, mas será inferior a 0,5 para preços de reversão médios e maior que 0,5 para preços de tendências.
Se anualizamos a volatilidade de uma série de preços de reversão média, ela terá uma menor volatilidade anualizada do que a de uma caminhada aleatória geométrica, mesmo que ambas tenham exatamente a mesma volatilidade medida em, digamos, barras de 5 min. O contrário é verdadeiro para uma série de preços de tendências. Por exemplo, se tentarmos isso no AUDCAD, uma série de tempo obviamente significante, nós obteremos H = 0,43.
Todos os itens acima são bem conhecidos de muitos comerciantes e, de fato, são discutidos no meu livro. Mas o que é mais interessante é que o expoente de Hurst em si pode mudar em uma escala de tempo, e essa mudança às vezes sinaliza uma mudança de uma reversão média para um regime de impulso, ou vice-versa. Para ver isso, vamos traçar a volatilidade (ou mais convenientemente, variância) como uma função de τ. Isso geralmente é chamado de estrutura de prazo de volatilidade (realizada).
Comece com o familiar SPY. podemos calcular os retornos intraday usando midprices de 1 minutos a 2 ^ 10 minutos (
17 horas), e traçar o log (Var (τ)) contra log (τ). O ajuste, mostrado abaixo, é excelente. (Clique na figura para ampliar). A inclinação, dividida por 2, é o expoente de Hurst, que resulta ser 0.494 e # 177; 0.003, que é muito ligeiramente reverso.
Podemos fazer a mesma análise para o USO (o ETF de futuros do petróleo bruto WTI). O intradase H é 0,515 & # 177; 0,001, indicando comportamento de tendência significativo. O diário H é 0.56 & # 177; 0.02, ainda mais significativamente tendência. Portanto, as estratégias de impulso devem funcionar para futuros de petróleo bruto em qualquer escala de tempo razoável.
Nick em mintegration. eu discute os novos bancos de dados intraday em Quandl e Kerf. Factorwave (criação de Euan Sinclair) iniciou um novo fórum: slack. factorwave. Tem algumas discussões muito ativas e aprofundadas sobre muitos tópicos de negociação e investimento. O Prof. Matthew Lyle da Kellogg School of Management tem um novo documento que relaciona os fundamentos com os prêmios de risco de variância: papers. ssrn / sol3 / papers. cfm? Abstract_id = 2696183.
20-21 de abril: estratégias de reversão média.
93 comentários:
Como você calculou as 10 horas = 1 dia, simplesmente ajustando o ponto de 1 dia em seu ajuste linear, resolvendo para colocá-lo na linha? Não existe um risco de lavagem significativa tendência noturna / reversão média desse jeito? E, suponho, em geral, há algumas referências sobre como lidar com lacunas durante a noite ao tentar fazer negociação no prazo de 3-5 dias usando dados intradiários?
Você apenas indica "variância em muitos tempos de amostra". Ou você deseja manter o segredo? :)
Agradeço, agora faz sentido.
Na verdade, eu quis dizer t = 2 * 14/10/60 dias = 27 dias acima!
Agradável novamente, mas eu tenho uma observação. O expoente Hurst é diferente para movimentos brownianos com diferentes distribuições. Você pode simular isso com Monte Carlo e testar.
Você está se referindo ao movimento Browniano fracionário?
Eu me refiro ao artigo deste mecânico mechanicalforex / 2016/03 / the-hurst-exponent-and-forex-trading-instruments. html.
Oi, Dr. Chan,
Ou, você usa o expoente de Hurst em pares ou resíduos cointegrados, a fim de os filtrar adicionalmente como "mais" inversão média se mostrarem um H & lt; .5?
Não, a escala de tempo de transição não indica quanto tempo demoraria para uma série de preços significar-reverter. Para isso, você precisa usar a equação de Ornstein-Uhlenbeck.
Eu não recomendo parar a perda para a estratégia de reversão média em geral, a menos que nunca seja esperado que seja acionado. Veja o último capítulo do meu segundo livro Algorithmic Trading.
Obrigado pela resposta, Dr.!
Eu também uso a equação de OU para HL de negociação de pares.
Esse é um bom ponto. Sim, você pode usar o tempo de transição como um limite superior para o período de espera.
Oi, ótimo blog que você tem, realmente. Eu aprendi muito de suas postagens já, então, por favor, jude manter o bom trabalho! :)
Ótimo artigo! Informações muito úteis. Eu estava tentando reproduzir o enredo do interio SPY. Eu usei o preço diário de log da SPY. Mas parece que recebo um resultado diferente. Por exemplo, o primeiro ponto de dados, 1 dia de atraso, a variação de log que recebi é -9,61, mas sua trama mostra deve ser em torno de -8,9. Estou faltando com alguma coisa? Obrigado.
Também interessado em ouvir a opinião da Ernie sobre isso ..
Obrigado pelas suas amáveis ​​palavras.
Muitas técnicas de negociação podem ser consideradas processamento de sinal digital. Por exemplo. Filtro Kalman, wavelets, etc. Alguns deles são úteis, outros não. Portanto, é preciso ser específico sobre a técnica.
Não, eu não leio John Ehlers.
Esses indicadores funcionam para você?
Desculpe, estava me referindo especificamente aos filtros de bypass alto / baixo e à FFT muito bem documentada.
Obrigado pelo link.
Muito obrigado pela sua resposta ... Eu estava usando o mesmo período SPY dados. Desde que eu estava tentando fazer o enredo interdial, então usei os dados do preço diário da SPY. Como você sugeriu, eu mudei para o preço médio. (Eu usei 0,5 * (Alto + Baixo)). Mas o expoente de Hurst que recebi é apenas cerca de 0,387.
Midprice não significa meio de alto e baixo. Significa a metade da oferta e perguntar no mercado próximo.
Sinta-se à vontade para me enviar um e-mail para discutir isso.
Eu planejei a correção automática dos retornos diários da USO e encontrei um pico estatisticamente significativo em um intervalo de 1 dia. No entanto, o valor é negativo, indicando reversão média. Então testei duas estratégias simples para confirmar este comportamento diário de MR e a diferença nas curvas de equidade confirma esse pequeno comportamento diário de MR. Não sei como conectar autocorrelação de retornos com o parâmetro Hurst e seus resultados.
Seu resultado é realmente contrário ao expoente de Hurst.
No entanto, como um teste adicional, sugiro que você teste usando o preço médio do lance-pedido no mercado fechado, e não o fechamento consolidado.
Principalmente retornos atrasados.
Preferimos o comércio de curto prazo, portanto, fatores fundamentais não são de grande ajuda.
O curto prazo para nós é intradiário.
Sim, incluindo a intercepção geralmente é recomendada, a menos que você tenha uma razão fundamental para não.
Depende do par exato. Mas geralmente eu não ganhei.
Sim, o IB é tão bom quanto qualquer em termos de FX para contas & lt; = $ 100K.
Apenas curioso, quais opções você olharia para contas & gt; $ 100K?
Se você é um Participante de Contrato Elegível, conforme definido pela CFTC, você pode abrir qualquer conta de corretor principal e acessar qualquer ECN de FX diretamente, como HotspotFX, LMAX, EBS, etc.
Normalmente, assumimos o custo de transação de ida e volta de 5bps para os estoques SP500.
Eu concordo que é difícil fazer estratégias de estoque long-short funcionar este ano (veja relatórios de hedge funds também nesta categoria).
Não, nós não tentamos os pares de ações comerciais do dia como você sugeriu. Eu concordo que ainda pode haver oportunidades lá.
Normalmente, estratégias long-short dependem da volatilidade para ganhar retornos. A volatilidade no mercado de ações tem sido muito baixa nos últimos meses.
Veja a estratégia VX discutida em torno da Figura 5.12 no meu livro Algorithmic Trading.
Obrigado por compartilhar sua experiência!
Você tem explicações incríveis de ações de preços. Quem quer aprender forex trading deve olhar para o seu material que me ajudou tremendamente com a minha negociação.
A capacidade das estratégias intradiárias é limitada?
Nós negociamos principalmente estratégias intradias, devido à sua maior significância estatística e menor risco. Sim, eles têm menor capacidade, mas então não temos bilhões para gerenciar neste momento. No entanto, estamos trabalhando em estratégias com um período de espera mais longo e maior capacidade, e poderemos lançar-se em breve.
Não no momento.
Você está certo.
Se eu entendo corretamente do seu segundo livro p. 45, o Exponente Hurst pode estar entre + 1 / -1. Quando 0.50 é uma caminhada aleatória, ele parece ser ousado para alegar que H = 0.56 é FORTE tanto como você faz no artigo acima. Eu teria adivinhado que forte tendência seria H = 0,8 ou aproximadamente ??
Na verdade, H está entre 0 e 1. Não é realista ter H negativo, porque isso implicaria que os preços permanecem constantes a longo prazo.
Desculpe, entre 0 e 1, meu mau.
Sim, eu uso a palavra "quot; significativa" em um sentido específico. Isso significa que é mais de 2 desvios padrão longe da média.
O que significa exatamente o que?
O teste de significância neste contexto específico é ver se o expoente Hurst para dados aleatórios do mesmo tamanho terá o mesmo valor que o que obtivemos. A conclusão é que se assumirmos a distribuição Gaussiana de tais valores, a chance de isso ocorrer é inferior a 2,5%. Portanto, com uma probabilidade superior a 97,5%, esta é uma série de preços de tendências.
O log2 (t) no eixo dos x é apenas para fins de exibição. Na minha regressão linear real, tomei o log natural da variância e da escala de tempo.
Espero que isto ajude.
τ = intervalo de tempo?
t = o que se encaixa em t?
Tome variância em muitos tempos de amostragem, neste caso. preço médio de 1 minuto a 2 ^ 10 (1024 minutos ou 17 horas) para intraday.
2013-01-06 a 2016-01-15.
Ou eu simplesmente pego de vez em quando e traço o log (Var (τ)) contra log (τ)?
Não, você não anualiza a volatilidade neste estudo. Todo o ponto do exercício é que não devemos assumir um processo de difusão gaussiano para os preços do registro. Isto é, O expoente de Hurst não é necessariamente 0,5.
Ok, então, para cada dia, eu diria os preços médios de 1 minuto a 2 ^ 10 minutos (1024 minutos)
Digamos a data de início de: 2013-01-06.
2. Calcule a variância desses retornos.
3. Subtrair a variância desses retornos - o log retorna?
nós fazemos o retorno do log e a variância do log retorna.
Fazemos isso por cada bar. primeiro bar de 1 minuto até o último bar de 1024 minutos.

Estratégia de reversão média intraday
Esta é uma estratégia de negociação simples que fornece algumas propriedades principais de reversão de média. Envolve o seguinte:
Se o preço atual for maior do que a banda superior de bollinger, venda o estoque.
As bandas bollinger são calculadas usando um desvio padrão médio + multiplicador *. A média neste caso, é calculada por uma curva de regressão linear porque uma média móvel simples geralmente é um indicador de atraso e se torna um grande problema com longos períodos de retrocesso.
Jogar com o período de look-back pode fornecer alguns resultados interessantes, experimente-o!
Pensamentos e sugestões são sempre bem-vindos.
Mais informações sobre a estratégia podem ser encontradas aqui.
Código atualizado para corrigir bandas altas e baixas de bollinger.
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 de prestação de serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, 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 oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
Você pode reescrever isso para que possamos fazer o teste contra ações individuais, em vez de todo o mercado que seria apreciado!
Feito! Eu também reparei onde faltava a banda inferior de bollinger. Eu configurei apenas usando o S & amp; P500, mas você pode modificar o sid para você.
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 de prestação de serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, 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 oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
Seong, este é um fascinante algo.
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 de prestação de serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, 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 oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
Parece que na sua função handle_data você tem "context. days_traded + = 1". Esta função não é executada em todos os minuetos em um backtest completo? Não é possível que o cheque aconteça a cada 20 minutos em oposição a 20 dias?
Obrigado por mencionar isso, eu não pensei em como funcionaria em dados minuciosos, pois eu apenas o testei em dados diários, mas aqui também é uma maneira de testá-lo em dados minuciosos.
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 de prestação de serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, 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 oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
Eu não estou acostumado a ler o código de Python, então eu posso estar faltando alguma coisa, mas onde está a "posição de saída" comando no seu código? Eu vejo você comprando 5000 ações quando você está abaixo do limite mais baixo e está vendendo quando você está acima da parte superior, mas eu não vejo você sair de qualquer lugar no meio. Pergunto porque, no cabeçalho, você diz que as posições são encerradas quando o preço cruza a média móvel.
Além disso, você está usando alavancagem aqui?
Outra pergunta: você diz que está usando a intercepção da curva de regressão linear, mas não o valor retornado segundo do linregress (indexado pelo número 1) corresponde à inclinação da linha de regressão? Novamente, novo para Python, então eu poderia estar muito errado.
Ao contrário do mercado de futuros, o lado longo dos mercados de ações funciona de forma bastante diferente do lado curto, pelo menos é o que eu vi. Provavelmente, porque nós humanos reagem de maneira diferente à ganância e ao medo. Os lados curtos são gotas rápidas e íngremes duráveis ​​por períodos curtos, enquanto o lado longo é mais gradual e dura mais. Com base nisso, as reversões médias precisam de parâmetros diferentes para trabalhar em lados curtos e longos. Eu adoro ver o intercâmbio de idéias e a generosidade dos codificadores capazes aqui.
Obrigado a todos por compartilhar.
A meu conhecimento, o linregress 1 retorna a intercepção da linha de linha onde [0] retornaria a inclinação, mais aqui.
E você está certo sobre a posição de saída, não há por agora, vai chegar em breve. E sim, há um pouco de alavancagem usada aqui, embora quanto a quanto dependeria do valor do pedido.
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 de prestação de serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, 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 oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
Ah, sim, você está certo sobre o linregress. Do ponto de vista estatístico, essa é uma escolha muito estranha de sua parte.
Você é capaz de executar a estratégia sem alavancagem, para que possamos ter uma idéia do que os retornos seriam nessa situação. Eu pergunto porque eu joguei com estratégias semelhantes que não dão a nenhum lugar a mesma performance que a sua, mas eles não foram alavancados, então eu quero ter certeza de que eu faço uma comparação justa.
Ainda trabalhando na alavanca, mas eu incorporei as posições de saída para o algoritmo e os retornos são muito diferentes. Se você quiser saber mais sobre a alavancagem, também há um segmento de Quantopian aqui. A posição de saída atual é sempre que o preço cruza a média, e acho que seria uma posição de saída melhor do que isso especialmente com o período de 19 dias de referência. Se você tiver alguma sugestão sobre isso, não hesite em publicar.
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 de prestação de serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, 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 oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
O último backtest que eu carreguei não usa alavancagem para que você possa usar isso como uma boa maneira de comparar seus testes com os meus.
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 de prestação de serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, 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 oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
Aqui é uma maneira de adaptá-lo a dados minuciosos (o que funciona!), Usando um cheque para adicionar preços apenas uma vez por dia (no fechamento), você pode efetivamente armazenar preços próximos em uma matriz para executar a regressão linear método.
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 de prestação de serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, 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 oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
Isso funciona melhor.
Marco, desculpe o novato aqui. mas o algoritmo que você postou é muito diferente do método / código de regressão linear de Seong Lee. Parece mais próximo de quantopian / posts / simple-algo-that-tries-to-earn-money-on-spéulators. Você postou no tópico errado? Você pode descrever as novas mudanças que você fez? torna mais fácil ver as novas alterações de código.
Quando clonei e execute o seu algoritmo, recebi o seguinte aviso. então, há algum motivo pelo qual você usou o batch_transform aqui além do histórico? Você precisaria mais sobre como o batch_transform funciona aqui?
& quot; Aviso batch_transform está obsoleta, use o histórico em vez disso. & Quot;
Eu criei esse algoritmo antes do & # 39; history () & # 39; foi liberado. & Batch_transform & # 39; é muito desatualizado e não recomendamos que você use mais, por favor use o & # 39; history () & # 39; que permite que você consulte a quantidade X de dados históricos a partir da data de negociação atual do backtester.
Então, se você quisesse os últimos 20 dias de dados de negociação que você faria:
A última versão que eu tenho aqui usa o histórico para consultar dados anteriores, sinta-se livre para usar esse em vez disso.
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 de prestação de serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, 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 oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
Bem, eu sinto que se, ao invés de comprar quando o preço próximo atravessar Bollinger mais baixo pela primeira vez, você deve comprá-lo uma vez que o preço de fechamento refira e iguala o Bollinger mais baixo (e similarmente para curto-circuito também).
Você já ouviu falar de superação? O algoritmo não funciona bem em dados não treinados / invisíveis. Tente, por exemplo, para executar o algoritmo de 2013-2016. São necessários testes avançados, entre outras coisas! ;-)
A estratégia foi publicada em 2 de outubro de 2013!
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 de prestação de serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, 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 oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
Alguém pode me ajudar a mudar este algo para algo menor? Toda vez que eu tento ajustá-lo para dizer 3.000, me dá um retorno de 29.000%. O que acontece com isso? BTW I & # 39; m noob total.
O problema aqui provavelmente está relacionado ao seu pedido, sendo muito grande. O que está acontecendo é que você está comprando e vendendo muitas 3000 ações, o que torna sua estratégia não razoável. Para obter um bom recurso sobre os tipos de pedidos, tente:
Desculpe, algo deu errado. Tente novamente ou contate-nos enviando comentários.
Você enviou um ticket de suporte com sucesso.
Nossa equipe de suporte estará 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 de prestação de serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, 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 oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas 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 de prestação de serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, 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 oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.

Intraday Stock Mean Reversão Trading Backtest em Python.
Intraday Stock Mean Reversão Trading Backtest em Python.
Depois de completar a série na criação de uma estratégia de reversão média inter-dia, pensei que seria uma idéia visitar outra estratégia de reversão média, mas que funciona em uma escala intra-dia. Ou seja, estaremos à procura da reversão média em um dia de negociação.
Os preços das ações tendem a seguir passeios aleatórios geométricos, como muitas vezes somos lembrados por inúmeros estudiosos financeiros; mas isso é verdade apenas se testarmos suas séries de preços para a reversão média estritamente em intervalos regulares, como usar seu preço de fechamento diário. Nosso trabalho é encontrar condições especiais onde a reversão média ocorre com a regularidade. Como a estratégia a seguir mostrará, pode haver uma reversão sazonal média ocorrendo no prazo de tempo intra-dia para ações.
As regras da estratégia são as seguintes:
1) Selecione todos os estoques perto do mercado aberto, cujos retornos de seus mínimos anteriores a hoje são abertos são inferiores a um desvio padrão. O desvio padrão é calculado usando os retornos diários fechados para os últimos 90 dias. Estas são ações que # 8220; gapped down & # 8221 ;.
2) Limite esta lista de ações, exigindo que seus preços abertos sejam superiores à média móvel de 20 dias dos preços de fechamento.
3) Liquidar as posições no mercado próximo.
Então, primeiro começaremos com nossas importações de módulos necessários da seguinte forma:
importar pandas como pd importar numpy como np de pandas_datareader importar dados do sqrt de importação de matemática.
Eu estarei executando este backtest usando o universo de ações NYSE que contém 3159 estoque & # 8211; Você pode baixar a lista de ticker 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 ticker de ações da seguinte maneira:
# tenha certeza de que o arquivo NYSE. txt esteja na mesma pasta que o arquivo de script do python stocks = pd. read_csv ('NYSE. txt', delimiter = & quot; \ t & quot;) #configure nossa lista vazia para manter os estoques stocks_list = [] #aberta através do banco de dados de pandas de tickers e anexá-los à nossa lista vazia por símbolo em ações ['Símbolo']: stocks_list. append (símbolo)
Como uma verificação rápida para ver se eles foram alimentados corretamente:
Ok, então agora temos nossa lista de ações que queremos usar como nosso & # 8220; universo de investimento & # 8221; & # 8211; podemos começar a escrever o código para o backtest atual.
A lógica da nossa abordagem é a seguinte & # 8230; iteraremos através da lista de tickers de ações, cada vez que baixarmos os dados de preço relevantes em um DataFrame e, em seguida, adicione algumas colunas para nos ajudar a criar sinais de quando nossos dois Os critérios são cumpridos (desaceleração maior do que 1 90 dias de desvio padrão de rolamento 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 retorno para esse estoque e, em seguida, armazenamos essas informações anexando cada série de retorno de estoque a uma lista. Finalmente, vamos concatenar todas essas séries de retorno em um DataFrame mestre e calcular o nosso retorno diário geral.
#create a lista vazia para manter nossa série de retorno DataFrame para cada estoque frames = [] para estoque em stocks_list: try: #download stock data and place in DataFrame df = data. DataReader (estoque, 'yahoo', start = '1/1 / 2000 ') #create coluna para manter o nosso desvio padrão de 90 dias df [' Stdev '] = df [' Fechar ']. Rolling (window = 90).std () #crear uma coluna para manter nossa média móvel de 20 dias df ['Moving Average'] = df ['Close']. rolling (window = 20).mean () # crie uma coluna que contenha um valor TRUE se o intervalo baixo do dia anterior próximo ao próximo # dia aberto for maior que o desvio padrão de 90 dias df ['Criteria1'] = (df ['Open'] - df ['Low']. shift (1)) & lt; - df ['Stdev'] # crie uma coluna que contenha um valor TRUE se o preço de abertura do estoque estiver acima da média móvel de 20 dias df ['Criteria2'] = df ['Open'] & gt; df ['Average Moving'] # crie uma coluna que contenha um valor TRUE se ambos os critérios acima também forem TRUE df ['BUY'] = df ['Criteria1'] & amp; df ['Criteria2'] #calculate diariamente% return series para stock df ['Pct Change'] = (df ['Close'] - df ['Open']) / df ['Open'] # crie uma série de retorno de estratégia usando os retornos de estoque diários onde os critérios de comércio acima são atendidos df ['Rets'] = df ['Pct Change'] [df ['BUY'] == Verdadeiro] #aparte a série de retorno de estratégia para nossa lista frames. append (df ​​['Rets']) exceto: pass.
Agora, esta lista de estoque tem mais de 3000 ações nele, então espere que esse código demore um pouco de tempo para correr # 8230; acredito que o meu levou cerca de 15 a 20 minutos para correr quando eu tentei, então tente ser um pouco paciente.
Uma vez que o código foi executado e nós temos nossa lista preenchida com todas as séries individuais de retorno de estratégia para cada estoque, temos que concatê-los todos em um DataFrame mestre e, em seguida, calcular o retorno geral da estratégia diária. Isso pode ser feito da seguinte forma:
#concatear os DataFrames individuais mantidos em nossa lista e fazê-lo ao longo do eixo da coluna masterFrame = pd. concat (frames, axis = 1) #crear uma coluna para manter a soma de todas as devoluções de estratégia diária individuais masterFrame ['Total'] = masterFrame. sum (eixo = 1) # crie uma coluna que mantenha a contagem do número de ações que foram negociadas a cada dia # nossa menos uma delas, de modo que não contamos o & quot; Total & quot; coluna que adicionamos como um comércio. masterFrame ['Count'] = masterFrame. count (axis = 1) - 1 # crie uma coluna que divide o & quot; total & quot; A estratégia retorna cada dia pelo número de ações negociadas nesse dia para obter retorno igualmente ponderado. masterFrame ['Return'] = masterFrame ['Total'] / masterFrame ['Count']
Então, agora temos uma série de retorno que mantém os retornos da estratégia com base na negociação das ações qualificadas por dia, em igual peso. Se 2 ações fossem qualificadas, pesaria cada ação em 50% em nosso portfólio, por exemplo.
Então, tudo o que falta para fazer agora é traçar a curva de equidade e calcular uma Razão áspera de Sharpe e retorno anual.
A relação de Sharpe (excluindo o elemento livre de risco por simplicidade) pode ser calculada da seguinte forma:
(masterFrame ['Return']. mean () * 252) / (masterFrame ['Return']. std () * (sqrt (252)))
e o retorno anual pode ser calculado como:
Então, uma Razão Sharpe de mais de 2 e um retorno anual de cerca de 8,8% & # 8211; Isso não é muito mau !!
Claro, devemos lembrar que não estamos levando em conta os custos de transação, de modo que esses retornos possam ser bastante afetados em um ambiente real. Além disso, essa lógica de estratégia supõe que podemos comprar os estoques que derrubaram exatamente o preço de abertura e assume que sempre alcançamos o preço de fechamento (liquidação) na venda no final do dia, o que naturalmente não seria O caso.
Vou deixá-lo até vocês, meninas e meninas, para investigar mais profundamente os retornos da estratégia e # 8211; você pode usar minha postagem de blog anterior onde analisei os retornos de nossa estratégia de cruzamento em média móvel como inspiração. Essa publicação pode ser encontrada aqui.
10 Comentários.
Obrigado pela postagem. Estamos trabalhando em uma estrutura de análise de dados de alto desempenho em python e gostaria de usar seus códigos como exemplos. Podemos 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 diversão, então não é necessária nenhuma licença para reutilizar o código, sinta-se à vontade para fazê-lo. Tudo o que eu gostaria de fazer é que, se possível, você faz referência ao meu blog como fonte para que possamos atrair mais tráfego. Isso é para você, porém 😉
Eu ficaria muito interessado em ver o resultado de / ouvir mais sobre seu projeto, isso parece muito interessante!
Claro, eu irei adicionar uma referência a esta publicação. Aqui está o link para o exemplo no projeto: github / IntelLabs / hpat / blob / master / examples / intraday_mean. py.
O HPAT compilará este código (com mudanças mínimas) automaticamente para executar de forma eficiente em clusters.
Parece ótimo! Obrigado pela menção também, muito apreciado!
Oi S666 Eu estava usando seus códigos para testar.
Percebi algo porque isso está tomando a mudança Open to Close, a linha abaixo deve adicionar uma mudança (1)?
Porque, se você não estiver aceitando hoje fechar o preço (Mas estamos comprando no Open e não podemos saber hoje fechar os preços)
* Estou puxando dados do meu banco de dados, mas a fonte de dados pode ter explicado isso já, se assim for me ignorar, obrigado.
Oi Jerrickng & # 8211; Bom ponto, eu acredito que você está correto. Se estamos comprando ao preço aberto, com base no preço de abertura maior do que a média móvel, e estamos usando os preços de fechamento para calcular a média móvel, nós estamos realmente sofrendo de tendência positiva, pois em tempo real não saberemos o fechar o preço a utilizar no cálculo da média móvel.
Devo mudar o código assim que tiver um momento.
bom blog !! & # 8230; O melhor que eu encontrei sobre o Python sendo usado em Finanças.
O único modelo que se aproxima dos mercados financeiros é o movimento geométrico browniano (GBM). A distância percorrida sob GBM é proporcional à raiz quadrada do intervalo de tempo. Positivo & amp; os choques negativos se cancelam ao longo do tempo em um portfólio diversificado de ações. Em uma base líquida, raramente pode-se superar os mercados. De acordo com a fórmula de opção para A dado estoque S, se uma opção de um mês custa 1 dólar, então 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 período de tempo, as chances de que essa viagem percorra uma distância de 1d é 4 vezes em comparação com a distância de viagem de 2d. As fórmulas de aprovação podem não ser perfeitas 100%, 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 e amp; os fabricantes de mercado não vão à falência - se eles fazem mercado em puts ou calls & amp; Fique fora da especulação.
A minha pergunta é se a estratégia seguinte é possivelmente válida na negociação usando negociação computadorizada por A gestor de fundos e # 8211;
O computador coloca na ordem seguinte no estoque "S". No mesmo bilhete, obtenha lucro e amp; As ordens de stop loss estão sempre no mesmo lado do preço de mercado atual nesse dia e amp; não em lados opostos do preço atual das ações.
1) Abaixo do preço atual "P", peça um pedido para comprar esse estoque em "P menos 1d" com lucro obtido em "P menos 1/2 d" e amp; uma perda de parada em "P menos 2d".Este pedido é inserido todos os dias com base no preço atual nesse dia até que seja executado com lucro ou com uma perda & # 8211; & amp; O mesmo processo é repetido no portfólio diversificado de ações, tudo por computador sem intervenção humana. Pedidos semelhantes são colocados na parte de cima para vender curto todos os dias com base nos preços atuais nesse mesmo 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 por base intradiária. As chances de que a ordem de compra se cheguem na distância de "P menos 1D" é 4 vezes em comparação com a perda de parada de acerto em "P menos 2D" no mesmo período de tempo na mesma ordem de ingresso. Com o ruído intradía, a reversão para a média, tomar ordem de lucro seria atingido mais vezes do que parar a perda na mesma ordem do ingresso.
3) Sob GBM, de 4 episódios, 3 vezes haveria lucro obtido de "1 / 2d" cada & amp; uma vez que haveria perda de "1d" com lucro líquido de "½ d" nessas 4 execuções em cima de & amp; mais uma vez tanto na desvantagem quanto no lado positivo. As ordens não preenchidas são canceladas todos os dias quando a bolsa de valores fecha. Novas ordens são inseridas todas as manhãs com base no PREÇO CORRENTE do estoque nesse dia. A distância d é ajustada de acordo com a volatilidade histórica do estoque, de modo que um número decente de pedidos está sendo executado - se muitas ordens estiverem sendo executadas, o valor de "d" é aumentado para diminuir as execuções. Com um número decente de execuções, as leis das médias Aplique. O risco é controlado pelo controle de quantas ordens de estoque são colocadas tanto na vantagem quanto desvantagem. Nenhuma aposta direcional a qualquer momento - todas as ordens são não direcionais, automáticas e gerado por computador com base na volatilidade atual. O Risk também é controlado pela negociação de menor quantidade de ativos do fundo em relação aos ativos totais.
Com baixos custos de transação, o gerente do fundo ganharia dinheiro.
Agradeceria muito sua contribuição para essa estratégia.

No comments:

Post a Comment