суббота, 26 мая 2018 г.

Estratégia de negociação quantmod


Estratégia de negociação quantmod
Sou muito novo em R e estou tentando fazer backtest de uma estratégia que já programei no WealthLab.
Várias coisas que eu não entendo (e isso não funciona, obviamente :)
Eu não obtenho os Preços Fechar bem em um vetor. ou algum tipo de vetor, mas começa com estrutura e eu realmente não entendo o que essa função faz. É por isso que a minha série [1] provavelmente não funciona.
n & lt; - nrow (série) também não funciona, mas eu preciso disso para o Loop.
Então eu acho que se eu obtiver essas 2 perguntas respondidas, minha estratégia deve funcionar. Eu sou muito grato por qualquer ajuda .. R parece bastante complicado, mesmo com a experiência de programação em outras línguas.
Começando com a segunda questão.
Então, se você quer trabalhar no objeto xts real, você precisa usar get.
Sobre sua primeira pergunta - eu não acho que você realmente precise puxar os dados como um vetor - o objeto xts é uma matriz indexada por data e é fácil trabalhar com ela. Se você ainda deseja obter os dados que você pode usar.
Agora, para começar com simples back testing de estratégias, sugiro trabalhar nas etapas a seguir.
defina sua estratégia. 2. crie uma matriz ou adicione uma coluna ao seu objeto xts que representará sua posição para cada dia. 1 para long, 0 para no position e -1 para short (mais tarde você pode jogar com o número de alavancagem). 3. multiplique cada dia de retorno com a posição e você obterá o seu vetor de retorno da estratégia. 4. examinar os resultados - minha recomendação é PerformanceAnalytics.
estratégia simples - compre quando estiver perto da SMA20, venda abaixo.

Estratégia de negociação quantmod
Vamos explorar as capacidades de backtesting de R.
Em um post anterior, desenvolvemos algumas oportunidades de entrada simples para o USD / CAD usando um algoritmo de aprendizado de máquina e técnicas de um subconjunto de mineração de dados chamado aprendizado de regra de associação. Neste post, vamos explorar como fazer um backtest completo em R; usando nossas regras do post anterior e implementando os lucros e as perdas.
Vamos mergulhar em: Observação: o backtest é construído a partir das barras de 4 horas em nosso conjunto de dados e não tem uma visualização mais granular.
O CAGR (compounded annual growth rate) é o ganho / perda percentual anualizado, o que significa que suaviza o crescimento em parcelas iguais a cada ano. Desde que o nosso teste acabou, vamos ver se podemos melhorar o desempenho adicionando um stop loss e tendo lucro.
Com apenas um stop loss, o desempenho caiu. Parece que estamos sendo retirados de nossos negócios antes que eles possam se recuperar. A fim de garantir nossos lucros, vamos em frente e implementar um take profit.
Bloquear nossos ganhos com um take profit melhorou um pouco o desempenho, mas não drasticamente. Vamos incorporar um stop loss e um take profit.
Agora vamos comparar a linha de base da estratégia Long Short, com apenas um stop loss, apenas um take profit, e tanto um take stop loss quanto um take profit.
Agora você sabe como adicionar um take profit e stop loss, eu recomendo que você brinque com os dados e teste valores diferentes com base em seus próprios parâmetros de risco pessoal e usando suas próprias regras.
Mesmo com algoritmos poderosos e ferramentas sofisticadas, é difícil construir uma estratégia bem-sucedida. Para cada boa ideia, tendemos a ter muitos mais ruins. Armado com as ferramentas e os conhecimentos certos, você pode testar suas ideias com eficiência até chegar às boas. Nós simplificamos esse processo no TRAIDE. Desenvolvemos uma infraestrutura de testes que permite ver onde os padrões estão em seus dados e, em tempo real, ver como eles teriam se comportado com seus dados históricos.
Nós estaremos liberando o TRAIDE para 7 pares principais no mercado de FX com indicadores técnicos em duas semanas. Se você estiver interessado em testar o software e fornecer feedback, envie um email para info @ inovancetech. Temos 50 vagas disponíveis.

Estratégia de Negociação ARIMA + GARCH no Índice S & amp; P500 Stock Market Usando R.
Estratégia de Negociação ARIMA + GARCH no Índice S & amp; P500 Stock Market Usando R.
Neste artigo, quero mostrar a você como aplicar todo o conhecimento obtido nos posts de análise de séries temporais anteriores a uma estratégia de negociação no índice S & amp; P500 do mercado de ações dos EUA.
Veremos que, combinando os modelos ARIMA e GARCH, podemos superar significativamente a abordagem "Buy-and-Hold" em longo prazo.
Visão Geral da Estratégia.
A ideia da estratégia é relativamente simples, mas se você quiser experimentar, sugiro ler os posts anteriores sobre análise de séries temporais para entender o que você estaria modificando!
A estratégia é executada de forma "rotativa":
Para cada dia, $ n $, os $ k $ dias anteriores dos retornos logarítmicos diferenciados de um índice do mercado de ações são usados ​​como uma janela para ajustar um modelo ARIMA e GARCH ideal. O modelo combinado é usado para fazer uma previsão para os retornos do dia seguinte. Se a previsão for negativa, o estoque está em curto no fechamento anterior, enquanto, se for positivo, ele é esperado. Se a previsão for a mesma direção do dia anterior, nada será alterado.
Para essa estratégia, usei o máximo de dados disponíveis do Yahoo Finance para o S & amp; P500. Tomei $ k = 500 $, mas este é um parâmetro que pode ser otimizado para melhorar o desempenho ou reduzir o rebaixamento.
O backtest é realizado de maneira direta e vetorializada usando R. Ele ainda não foi implementado no backtester orientado a eventos do Python. Portanto, o desempenho alcançado em um sistema de negociação real provavelmente seria um pouco menor do que o que você poderia alcançar aqui, devido a comissões e derrapagens.
Implementação estratégica.
Para implementar a estratégia, vamos usar alguns dos códigos que criamos anteriormente na série de artigos de análise de séries temporais, bem como algumas novas bibliotecas, incluindo rugarch, que me foram sugeridas por Ilya Kipnis no QuantStrat Trader.
Vou percorrer a sintaxe passo-a-passo e, em seguida, apresentar a implementação completa no final, bem como um link para o meu conjunto de dados para o indicador ARIMA + GARCH. Eu incluí o último porque demorei alguns dias no meu PC dekstop para gerar os sinais!
Você deve ser capaz de replicar meus resultados na íntegra, já que o código em si não é muito complexo, embora demore algum tempo para simulá-lo, se você o executar na íntegra.
A primeira tarefa é instalar e importar as bibliotecas necessárias em R:
Se você já tem as bibliotecas instaladas, pode simplesmente importá-las:
Com isso feito, aplicaremos a estratégia ao S & amp; P500. Podemos usar quantmod para obter dados desde 1950 para o índice. O Yahoo Finance usa o símbolo "^ GPSC".
Podemos, então, criar os retornos logarítmicos diferenciados do "Preço de fechamento" do S & amp; P500 e retirar o valor inicial de NA:
Precisamos criar um vetor, previsões para armazenar nossos valores de previsão em datas específicas. Nós definimos o comprimento foreLength para ser igual ao comprimento dos dados de negociação que temos menos $ k $, o tamanho da janela:
Neste estágio, precisamos percorrer todos os dias nos dados de negociação e ajustar um modelo ARIMA e GARCH apropriado à janela de rolagem de comprimento $ k $. Dado que nós tentamos 24 ajustes ARIMA separados e ajustamos um modelo GARCH, para cada dia, o indicador pode levar muito tempo para ser gerado.
Usamos o índice d como uma variável de loop e o loop de $ k $ para o tamanho dos dados de negociação:
Em seguida, criamos a janela contínua pegando os retornos do S & P500 e selecionando os valores entre $ 1 + d $ e $ k + d $, onde $ k = 500 $ para essa estratégia:
Usamos o mesmo procedimento do artigo ARIMA para pesquisar em todos os modelos ARMA com $ p \ in \ $ e $ q \ in \ $, com exceção de $ p, q = 0 $.
Envolvemos a chamada arimaFit em um bloco de tratamento de exceção R tryCatch para garantir que, se não obtivermos um ajuste para um valor específico de $ p $ e $ q $, a ignoramos e passamos para a próxima combinação de $ p $ e $ q $.
Note que nós definimos o valor "integrado" de $ d = 0 $ (este é um $ d $ diferente para nosso parâmetro de indexação!) E, como tal, estamos realmente ajustando um modelo ARMA, ao invés de um ARIMA.
O procedimento de looping nos fornecerá o "melhor" modelo de ARMA adequado, em termos do Critério de Informações de Akaike, que podemos usar para alimentar nosso modelo GARCH:
No próximo bloco de código, vamos usar a biblioteca rugarch, com o modelo GARCH (1,1). A sintaxe para isso requer que configuremos um objeto de especificação ugarchspec que usa um modelo para a variância e a média. A variação recebe o modelo GARCH (1,1), enquanto a média aceita um modelo ARMA (p, q), onde $ p $ e $ q $ são escolhidos acima. Também escolhemos a distribuição sged pelos erros.
Uma vez escolhida a especificação, realizamos o ajuste real do ARMA + GARCH usando o comando ugarchfit, que recebe o objeto de especificação, os retornos $ k $ do S & amp; P500 e um solucionador de otimização numérica. Escolhemos usar o híbrido, que tenta resolvedores diferentes para aumentar a probabilidade de convergência:
Se o modelo GARCH não convergir, basta definir o dia para produzir uma previsão "longa", que é claramente um palpite. No entanto, se o modelo convergir, então nós damos a saída e a direção de previsão de amanhã (+1 ou -1) como uma string, ponto no qual o loop é fechado.
Para preparar a saída para o arquivo CSV, criei uma string que contém os dados separados por uma vírgula com a direção da previsão para o dia subseqüente:
A penúltima etapa é a saída do arquivo CSV para o disco. Isso nos permite pegar o indicador e usá-lo em um software de backtesting alternativo para análise posterior, se assim for desejado:
No entanto, há um pequeno problema com o arquivo CSV como está agora. O arquivo contém uma lista de datas e uma previsão para a direção de amanhã. Se fôssemos carregar isso no código de backtest abaixo como está, estaríamos introduzindo um viés de look-ahead, porque o valor de predição representaria dados não conhecidos no momento da previsão.
Para explicar isso, precisamos simplesmente mover o valor previsto um dia à frente. Eu descobri que isso é mais simples usando o Python. Como não quero supor que você instalou nenhuma biblioteca especial (como pandas), mantive-a em Python puro.
Aqui está o pequeno script que leva esse procedimento para fora. Certifique-se de executá-lo no mesmo diretório que o arquivo forecasts. csv:
Neste ponto, agora temos o arquivo do indicador corrigido armazenado em forecast_new. csv. Como isso leva um tempo considerável para calcular, forneci o arquivo completo para você fazer o download:
Resultados da Estratégia.
Agora que geramos nosso arquivo CSV de indicador, precisamos comparar seu desempenho com "Comprar e reter".
Primeiro, lemos no indicador do arquivo CSV e o armazenamos como spArimaGarch:
Em seguida, criamos uma interseção das datas para as previsões ARIMA + GARCH e o conjunto original de retornos do S & amp; P500. Podemos então calcular os retornos para a estratégia ARIMA + GARCH multiplicando o sinal de previsão (+ ou -) pelo próprio retorno:
Quando tivermos os retornos da estratégia ARIMA + GARCH, podemos criar curvas de patrimônio para o modelo ARIMA + GARCH e para "Comprar e manter". Finalmente, nós os combinamos em uma única estrutura de dados:
Finalmente, podemos usar o comando xyplot para plotar ambas as curvas de equidade no mesmo enredo:
A curva de capital próprio até 6 de outubro de 2015 é a seguinte:
Curva de capital da estratégia ARIMA + GARCH vs "Buy & amp; Hold" para o S & amp; P500 de 1952.
Como você pode ver, ao longo de um período de 65 anos, a estratégia ARIMA + GARCH superou significativamente o "Buy & amp; Hold". No entanto, você também pode ver que a maior parte do ganho ocorreu entre 1970 e 1980. Observe que a volatilidade da curva é bastante mínima até o início dos anos 80, quando a volatilidade aumenta significativamente e os retornos médios são menos impressionantes.
Claramente, a curva de patrimônio promete um ótimo desempenho durante todo o período. No entanto, esta estratégia teria realmente sido negociável?
Primeiro de tudo, vamos considerar o fato de que o modelo ARMA só foi publicado em 1951. Não foi realmente amplamente utilizado até os anos 1970, quando Box & amp; Jenkins discutiu isso em seu livro.
Em segundo lugar, o modelo ARCH não foi descoberto (publicamente!) Até o início dos anos 80, por Engle, e o próprio GARCH foi publicado pela Bollerslev em 1986.
Em terceiro lugar, este "backtest" foi realmente realizado em um índice do mercado de ações e não um instrumento comercializável fisicamente. Para obter acesso a um índice como este, teria sido necessário negociar futuros S & P500 ou uma réplica do Exchange Traded Fund (ETF), como o SPDR.
Por isso, é realmente apropriado aplicar tais modelos a uma série histórica anterior à sua invenção? Uma alternativa é começar a aplicar os modelos a dados mais recentes. De fato, podemos considerar o desempenho nos últimos dez anos, de 1º de janeiro de 2005 até hoje:
Curva de capital da estratégia ARIMA + GARCH vs "Buy & amp; Hold" para o S & amp; P500 de 2005 até hoje.
Como você pode ver, a curva de patrimônio permanece abaixo de um Buy & amp; Segure a estratégia por quase 3 anos, mas durante a quebra do mercado de ações de 2008/2009 ela se sai muito bem. Isto faz sentido porque provavelmente haverá uma correlação serial significativa neste período e será bem capturado pelos modelos ARIMA e GARCH. Uma vez que o mercado se recuperou após 2009 e entrou no que parece ser uma tendência mais estocástica, o desempenho do modelo começa a sofrer mais uma vez.
Observe que essa estratégia pode ser facilmente aplicada a diferentes índices do mercado de ações, ações ou outras classes de ativos. Eu recomendo fortemente que você tente pesquisar outros instrumentos, pois você pode obter melhorias substanciais nos resultados aqui apresentados.
Próximos passos.
Agora que terminamos de discutir a família de modelos ARIMA e GARCH, desejo continuar a discussão da análise de séries temporais considerando processos de memória longa, modelos de espaço de estados e séries temporais cointegradas.
Essas áreas subseqüentes de séries temporais nos apresentarão modelos que podem melhorar nossas previsões além das que apresentamos aqui, o que aumentará significativamente nossa rentabilidade comercial e / ou reduzirá o risco.
Aqui está a lista completa para a geração de indicadores, backtesting e plotagem:
E o código Python para aplicar a forecasts. csv antes de reimportar:
A Quantcademy.
Participe do portal de associação da Quantcademy que atende à crescente comunidade de traders de quantificação de varejo e aprenda como aumentar a lucratividade de sua estratégia.
Negociação Algorítmica Bem Sucedida.
Como encontrar novas ideias de estratégia de negociação e avaliá-las objetivamente para o seu portfólio usando um mecanismo de backtesting personalizado no Python.
Comércio Algorítmico Avançado.
Como implementar estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas Bayesianas com R e Python.

Estratégia de negociação quantmod
Negociação simulada de objetos quantmod ajustados. Dado um modelo ajustado, o tradeModel calcula o sinal gerado em um determinado período histórico e, em seguida, aplica trade. rule especificado para calcular e retornar um objeto tradeLog. Métodos adicionais podem ser chamados para avaliar o desempenho da estratégia do modelo.
Ainda altamente experimental e mudando. O objetivo é aplicar um modelo recém-construído de buildModel a um novo conjunto de dados para investigar o potencial de negociação do modelo.
Atualmente, todos os parâmetros são muito básicos. As mudanças a curto prazo incluem a permissão de um argumento trade. rule para permitir uma regra comercial dinâmica, dado um conjunto de sinais. Adicional a aplicação de alavancagem variável e custos fará parte da estrutura final.
Quaisquer sugestões quanto a inclusões ou alterações são apreciadas e devem ser encaminhadas ao mantenedor do pacote.

Um exemplo de uma estratégia de negociação codificada em R.
O back-testing de uma estratégia de negociação pode ser implementado em quatro etapas.
Obtendo os dados históricos Formule a estratégia de negociação e especifique as regras Execute a estratégia nos dados históricos Avalie as métricas de desempenho.
Neste post, vamos voltar a testar a nossa estratégia de negociação em R. O pacote quantmod tornou muito fácil extrair dados históricos do Yahoo Finance. O código de uma linha abaixo busca dados NSE (Nifty).
O Quantmod fornece vários recursos para visualizar dados. O comando abaixo cria um gráfico para os dados do NSE.
TA = "Nulo" indica não usar nenhum indicador técnico. Veremos em breve a aplicação de um indicador técnico em um gráfico. O próximo passo é escolher uma estratégia de negociação. Vamos escolher o MACD (Moving Average Convergence Divergence) para este exemplo. Em uma estratégia de cruzamentos médios móveis, duas médias são computadas, uma média móvel lenta e uma média móvel rápida. A diferença entre a média móvel rápida e a média móvel lenta é chamada de linha MACD. Uma terceira média chamada linha de sinal; uma média móvel exponencial de 9 dias do sinal MACD, também é calculada. Se a linha MACD cruza acima da linha de sinal, então é um sinal de alta e nós vamos longo. Se a linha MACD cruzar abaixo da linha de sinal, então é um sinal de baixa e nós ficamos em falta. Nós escolhemos o preço de fechamento dos dados da NSE para calcular as médias. O comando a seguir cumpre essa tarefa.
O comando abaixo calcula o MACD para o preço de fechamento.
Pode-se escolher parâmetros variáveis ​​para médias rápidas, lentas e de sinal, dependendo dos requisitos de negociação. Aqui nós nos mantemos com os parâmetros padrão. MACD é a função em quantmod que calcula a divergência de convergência da média móvel, dados são o preço de fechamento para NSE, nFast é a média móvel rápida, nSlow é a média móvel lenta, maType = SMA indica que escolhemos média móvel simples, percentual = FALSE Isso implica que estamos calculando a diferença entre a média móvel rápida e a média móvel lenta. Definir como TRUE retornaria a diferença percentual entre a média móvel rápida e a média móvel lenta.
O comando a seguir plota o gráfico para o preço de fechamento do NSE juntamente com os parâmetros MACD.
Como discutido antes, definimos nosso sinal de negociação da seguinte forma:
Se o sinal MACD cruzou acima da linha de sinal, ficamos longos no NSE. Se o sinal MACD cruzou abaixo da linha de sinal, ficamos sem NSE.
O comando a seguir gera o sinal de negociação de acordo. Usamos o operador lag para eliminar o viés antecipado.
Aplicaremos essa estratégia nos dados históricos da NSE de 2007-09-17 a 2015-09-22. O sinal de negociação é aplicado ao preço de fechamento para obter os retornos de nossa estratégia.
A função ROC fornece a diferença percentual entre os dois preços de fechamento. Podemos escolher a duração para a qual queremos ver os retornos. O seguinte comando escolhe os retornos entre 2008-06-02 e 2015-09-22.
Devoluções cumulativas podem ser calculadas e plotadas usando os seguintes comandos:
A quarta etapa do teste de retorno está avaliando as métricas de desempenho. O pacote de análise de desempenho em R fornece uma plataforma consolidada para observar os parâmetros relacionados ao desempenho. Várias métricas como draw-downs, downside risk, podem ser observadas em R.
O seguinte comando fornece um resumo dos parâmetros acima mencionados e muito mais!
Aqui está a versão sucinta do código.
Depois de seguir esse exemplo, você aprendeu noções básicas de como projetar uma estratégia de negociação de quant usando R. Agora você pode começar a aprender sobre como começar a usar o pacote quantmod em R. Depois de aprender com sucesso essas noções básicas, você pode testar habilidades em nosso curso de datacamp interativo de 10 horas de duração individualizada 'Modele uma Estratégia de Negociação Quantitativa em R'

US Search Desktop.
Agradecemos seus comentários sobre como melhorar a Pesquisa do Yahoo. Este fórum é para você fazer sugestões de produtos e fornecer feedback atencioso. Estamos sempre tentando melhorar nossos produtos e podemos usar o feedback mais popular para fazer uma mudança positiva!
Se você precisar de assistência de qualquer tipo, visite nosso fórum de suporte à comunidade ou encontre ajuda individualizada em nosso site de ajuda. Este fórum não é monitorado por nenhum problema relacionado a suporte.
O fórum de comentários do produto do Yahoo agora exige um ID e uma senha válidos do Yahoo para participar.
Agora você precisa fazer login usando sua conta de e-mail do Yahoo para nos fornecer feedback e enviar votos e comentários para as ideias existentes. Se você não tiver um ID do Yahoo ou a senha do seu ID do Yahoo, inscreva-se para obter uma nova conta.
Se você tiver um ID e uma senha válidos do Yahoo, siga estas etapas se quiser remover suas postagens, comentários, votos e / ou perfil do fórum de comentários do produto do Yahoo.
Vote em uma ideia existente () ou publique uma nova ideia…
Idéias quentes Idéias superiores Novas ideias Categoria Status Meu feedback.
Xnxx vedios.
Trazer de volta o layout antigo com pesquisa de imagens.
sim: a única possibilidade (eu acho) enviar todas as informações para (alienvault.
Desinformação na ordem DVD.
Eu pedi DVD / Blueray "AL. A confidencial" tudo que eu consegui foi Blue ray & amp; um contato # para obter o DVD que não funcionou. Eu encomendo minha semana com Marilyn ____DVD / blue ray & amp; Eu peguei os dois - tolamente, assumi que o mesmo se aplicaria a L. A.___ETC não. Eu não tenho uma máquina de raio azul ----- Eu não quero uma máquina de raio azul Eu não quero filmes blueray. Como obtenho minha cópia de DVD de L. A. Confidential?
yahoo, pare de bloquear email.
Passados ​​vários meses agora, o Yahoo tem bloqueado um servidor que pára nosso e-mail.
O Yahoo foi contatado pelo dono do servidor e o Yahoo alegou que ele não bloquearia o servidor, mas ainda está sendo bloqueado. CEASE & amp; DESISTIR.
Não consigo usar os idiomas ingleses no e-mail do Yahoo.
Por favor, me dê a sugestão sobre isso.
Motor de busca no Yahoo Finance.
Um conteúdo que está no Yahoo Finance não aparece nos resultados de pesquisa do Yahoo ao pesquisar por título / título da matéria.
Existe uma razão para isso, ou uma maneira de reindexar?
Procure por "turkey ******" imagens sem ser avisado de conteúdo adulto ou que o mostre.
O Yahoo está tão empenhado em atender os gostos lascivos das pessoas que nem posso procurar imagens de uma marca de "peitos de peru" sem ser avisado sobre conteúdo adulto? Apenas usar a palavra "******" em QUALQUER contexto significa que provavelmente vou pegar seios humanos em toda a página e ter que ser avisado - e passar por etapas para evitá-lo?
Aqui está minha sugestão Yahoo:
Invente um programa de computador que reconheça palavras como 'câncer' ou 'peru' ou 'galinha' em uma frase que inclua a palavra '******' e não assuma automaticamente que a digitação "***** * "significa que estou procurando por ***********.
Descobrir uma maneira de fazer com que as pessoas que ESTÃO procurando *********** busquem ativamente por si mesmas, sem assumir que o resto de nós deve querer ************************************************ uma palavra comum - ****** - que qualquer um pode ver qualquer dia em qualquer seção de carne em qualquer supermercado em todo o país. :(
O Yahoo está tão empenhado em atender os gostos lascivos das pessoas que nem posso procurar imagens de uma marca de "peitos de peru" sem ser avisado sobre conteúdo adulto? Apenas usar a palavra "******" em QUALQUER contexto significa que provavelmente vou pegar seios humanos em toda a página e ter que ser avisado - e passar por etapas para evitá-lo?
Aqui está minha sugestão Yahoo:
Invente um programa de computador que reconheça palavras como 'câncer' ou 'peru' ou 'galinha' em uma frase que inclua a palavra '******' e não assuma automaticamente que a digitação "***** * "significa que estou procurando por mais ...
Por que, quando eu faço login no YahooGroups, todos os grupos aparecem em francês ?!
Quando entro no YahooGroups e ligo para um grupo, de repente tudo começa a aparecer em francês? O que diabos está acontecendo lá ?! Por alguma razão, o sistema está automaticamente me transferindo para o fr. groups. yahoo. Alguma ideia?
consertar o que está quebrado.
Eu não deveria ter que concordar com coisas que eu não concordo com a fim de dizer o que eu acho - eu não tive nenhum problema resolvido desde que comecei a usar o Yahoo - fui forçado a jogar meu antigo mensageiro, trocar senhas, obter novas messenger, disse para usar o meu número de telefone para alertar as pessoas que era o meu código de segurança, receber mensagens diárias sobre o bloqueio de yahoo tentativas de uso (por mim) para quem sabe por que como ele não faz e agora eu obter a nova política aparecer em cada turno - as empresas costumam pagar muito caro pela demografia que os usuários fornecem para você, sem custo, pois não sabem o que você está fazendo - está lá, mas não está bem escrito - e ninguém pode responder a menos que concordem com a política. Já é ruim o suficiente você empilhar o baralho, mas depois não fornece nenhuma opção de lidar com ele - o velho era bom o suficiente - todas essas mudanças para o pod de maré comendo mofos não corta - vou relutantemente estar ativamente olhando - estou cansado do mudanças em cada turno e mesmo aqueles que não funcionam direito, eu posso apreciar o seu negócio, mas o Ameri O homem de negócios pode vender-nos ao licitante mais alto por muito tempo - desejo-lhe boa sorte com sua nova safra de guppies - tente fazer algo realmente construtivo para aqueles a quem você serve - a cauda está abanando o cachorro novamente - isso é como um replay de Washington d c
Eu não deveria ter que concordar com coisas que eu não concordo com a fim de dizer o que eu acho - eu não tive nenhum problema resolvido desde que comecei a usar o Yahoo - fui forçado a jogar meu antigo mensageiro, trocar senhas, obter novas messenger, disse para usar o meu número de telefone para alertar as pessoas que era o meu código de segurança, receber mensagens diárias sobre o bloqueio de yahoo tentativas de uso (por mim) para quem sabe por que isso acontece e agora eu recebo a nova política em cada turno - as empresas costumam pagar muito pela demografia que os usuários fornecem para você ... mais.

O R Trader.
Usando R e ferramentas relacionadas em Finanças Quantitativas.
Arquivo para as Estratégias de Negociação & # 8216; & # 8217; Categoria.
Vinculando R ao IQFeed com o pacote QuantTools.
O IQFeed fornece serviços de dados de fluxo contínuo e soluções de negociação que cobrem o mercado agrícola, de energia e financeiro. É um provedor de feed de dados bem conhecido e reconhecido, voltado para usuários de varejo e pequenas instituições. O preço da assinatura começa em cerca de US $ 80 / mês.
Stanislav Kovalevsky desenvolveu um pacote chamado QuantTools. É um pacote tudo em um projetado para melhorar a modelagem de negociação quantitativa. Ele permite baixar e organizar dados históricos de mercado de várias fontes, como Yahoo, Google, Finam, MOEX e IQFeed. O recurso que mais me interessa é a capacidade de vincular o IQFeed à R. Eu uso o IQFeed há alguns anos e estou feliz com ele (não estou afiliado à empresa em nenhum caminho). Mais informações podem ser encontradas aqui. Eu tenho procurado uma integração dentro de R por um tempo e aqui está. Como resultado, depois que fiz alguns testes, mudei meu código que ainda estava em Python para R. Apenas para completar, aqui está um link que explica como baixar dados históricos do IQFeed usando Python.
A QuantTools oferece quatro funcionalidades principais: Obter dados de mercado, Armazenar / Recuperar dados de mercado, Dados de séries temporais de plotagem e Testes reversos.
Primeiro, verifique se o IQfeed está aberto. Você pode baixar dados diários ou intradiários. O código abaixo faz o download dos preços diários (Aberto, Alto, Baixo, Fechado) para o SPY de 1º de janeiro de 2017 a 1º de junho de 2017.
O código abaixo faz o download dos dados intraday de 1º de maio de 2017 a 3 de maio de 2017.
Observe o parâmetro do período. Pode usar qualquer um dos seguintes valores: tick, 1min, 5min, 10min, 15min, 30min, hora, dia, semana, mês, dependendo da freqüência que você precisa.
O QuantTools facilita o processo de gerenciar e armazenar dados do mercado de ticks. Você acabou de configurar os parâmetros de armazenamento e está pronto para começar. Os parâmetros são onde, desde que data e quais símbolos você gostaria de armazenar. Sempre que você puder adicionar mais símbolos e se eles não estiverem presentes em um armazenamento, o QuantTools tentará obter os dados da data de início especificada. O código abaixo salvará os dados no seguinte diretório: & # 8220; C: / Users / Arnaud / Documents / Market Data / feed & # 8221 ;. Há uma subpasta por instrumento e os dados são exibidos em arquivos. rds.
Você também pode armazenar dados entre datas específicas. Substitua a última linha de código acima por uma das abaixo.
Agora, se você quiser recuperar alguns dos dados armazenados, basta executar algo como:
Observe que apenas os ticks são suportados no armazenamento local, portanto, o período deve ser & # 8216; tick & # 8217;
O QuantTools fornece a função plot_ts para plotar dados de séries temporais sem fins de semana, feriados e lacunas durante a noite. No exemplo abaixo, primeiro recupero os dados armazenados acima, depois seleciono as primeiras 100 observações de preço e, finalmente, desenho o gráfico.
Duas coisas para notar: primeiro espião é um objeto data. table, portanto, a sintaxe acima. Para obter uma visão geral rápida dos recursos do data. table, confira esta excelente folha de dicas do DataCamp. Segundo, o parâmetro local é TRUE, pois os dados são recuperados do armazenamento interno.
O QuantTools permite escrever sua própria estratégia de negociação usando sua API C ++. Eu não vou elaborar sobre isso, pois isso é basicamente código C ++. Você pode consultar a seção Exemplos no site da QuantTools.
No geral, acho o pacote extremamente útil e bem documentado. O único bit faltante é o feed ao vivo entre R e IQFeed, que fará do pacote uma solução real de ponta a ponta.
Como de costume, qualquer comentário é bem-vindo.
BERT: um recém-chegado na conexão R Excel.
Há alguns meses, um leitor me mostrou essa nova maneira de conectar R e Excel. Eu não sei há quanto tempo isso acontece, mas nunca me deparei com isso e nunca vi nenhum post ou artigo de blog sobre isso. Então eu decidi escrever um post enquanto a ferramenta realmente vale a pena e antes que alguém pergunte, eu não estou relacionado à empresa de forma alguma.
BERT significa Basic Excel R Toolkit. É gratuito (licenciado sob a GPL v2) e foi desenvolvido pela Structured Data LLC. No momento em que escrevo, a versão atual do BERT é 1.07. Mais informações podem ser encontradas aqui. De uma perspectiva mais técnica, o BERT é projetado para suportar a execução de funções R a partir de células da planilha do Excel. Em termos do Excel, é para escrever Funções definidas pelo usuário (UDFs) em R.
Neste post eu não vou mostrar como R e Excel interagem via BERT. Há muito bons tutoriais aqui, aqui e aqui. Em vez disso, quero mostrar como usei BERT para construir uma torre de controle & # 8220; & # 8221; para minha negociação.
Meus sinais de negociação são gerados usando uma longa lista de arquivos R, mas eu preciso da flexibilidade do Excel para exibir os resultados de forma rápida e eficiente. Como mostrado acima, o BERT pode fazer isso para mim, mas também quero adaptar o aplicativo às minhas necessidades. Combinando o poder do XML, VBA, R e BERT, posso criar um aplicativo bonito, mas poderoso, na forma de um arquivo do Excel com código VBA mínimo. Por fim, tenho um único arquivo do Excel reunindo todas as tarefas necessárias para gerenciar meu portfólio: atualização de banco de dados, geração de sinal, submissão de pedidos, etc. & # 8230; Minha abordagem pode ser dividida nos três passos abaixo:
Use XML para criar menus e botões definidos pelo usuário em um arquivo do Excel. Os menus e botões acima são essencialmente chamadas para funções do VBA. Essas funções do VBA são encapsuladas em torno de funções R definidas usando BERT.
Com essa abordagem, posso manter uma clara distinção entre o núcleo do meu código mantido em R, SQL e Python e tudo o que é usado para exibir e formatar os resultados mantidos no Excel, VBA & amp; XML Nas próximas seções apresento o pré-requisito para desenvolver tal abordagem e um guia passo a passo que explica como o BERT poderia ser usado para simplesmente passar dados de R para o Excel com o mínimo de código VBA.
1 & # 8211; Baixe e instale o BERT neste link. Quando a instalação estiver concluída, você deve ter um novo menu Add-Ins no Excel com os botões, conforme mostrado abaixo. É assim que o BERT se materializa no Excel.
2 & # 8211; Faça o download e instale o editor de interface do usuário personalizada: O Editor de interface do usuário personalizado permite criar menus e botões definidos pelo usuário na faixa de opções do Excel. Um procedimento passo a passo está disponível aqui.
1 & # 8211; Código R: A função R abaixo é um código muito simples apenas para fins ilustrativos. Calcula e retorna os resíduos de uma regressão linear. É isso que queremos recuperar no Excel. Salve isso em um arquivo chamado myRCode. R (qualquer outro nome é bom) em um diretório de sua escolha.
2 & # 8211; functions. R em BERT: No Excel selecione Add-Ins - & gt; Diretório base e abra o arquivo chamado functions. R. Neste arquivo, cole o seguinte código. Certifique-se de inserir o caminho correto.
Isso é apenas o fornecimento de BERT no arquivo R que você criou acima. Em seguida, salve e feche as funções do arquivo. Se você quiser fazer qualquer alteração no arquivo R criado na etapa 1, terá que recarregá-lo usando o botão BERT & # 8220; Recarregar o arquivo de inicialização & # 8221; do menu Add-Ins no Excel.
3 & # 8211; No Excel: Crie e salve um arquivo chamado myFile. xslm (qualquer outro nome é bom). Este é um arquivo habilitado para macro que você salva no diretório de sua escolha. Depois que o arquivo for salvo, feche-o.
4 & # 8211; Abra o arquivo criado acima no editor da interface do usuário personalizada: Depois que o arquivo estiver aberto, cole o código abaixo.
Você deve ter algo parecido com isto no editor de XML:
Essencialmente, este pedaço de código XML cria um menu adicional (RTrader), um novo grupo (My Group) e um botão definido pelo usuário (New Button) na faixa de opções do Excel. Quando terminar, abra myFile. xslm no Excel e feche o Editor de UI personalizado. Você deveria ver algo assim.
5 & ​​# 8211; Abra o editor VBA: Em myFile. xlsm, insira um novo módulo. Cole o código abaixo no módulo recém-criado.
Isso apaga os resultados anteriores na planilha antes de lidar com os novos.
6 & # 8211; Clique no botão New: Agora volte para a planilha e no menu RTrader, clique no botão & # 8220; New Button & # 8221; botão. Você deve ver algo como o abaixo aparece.
O guia acima é uma versão muito básica do que pode ser obtido usando o BERT, mas mostra como combinar o poder de várias ferramentas específicas para criar seu próprio aplicativo personalizado. Da minha perspectiva, o interesse de tal abordagem é a capacidade de colar R e Excel, obviamente, mas também incluir pedaços de código XML (e em lote) do Python, SQL e muito mais. Isso é exatamente o que eu precisava. Por fim, gostaria de saber se alguém tem alguma experiência com o BERT?
Estratégia de negociação: aproveitando ao máximo os dados da amostra.
Ao testar estratégias de negociação, uma abordagem comum é dividir o conjunto de dados inicial em dados de amostra: a parte dos dados projetados para calibrar o modelo e os dados de amostra: a parte dos dados usada para validar a calibração e garantir que o desempenho criado na amostra será refletido no mundo real. Como regra geral, cerca de 70% dos dados iniciais podem ser usados ​​para calibração (ou seja, na amostra) e 30% para validação (ou seja, fora da amostra). Em seguida, uma comparação entre os dados de entrada e de saída ajuda a decidir se o modelo é suficientemente robusto. Este post visa dar um passo adiante e fornece um método estatístico para decidir se os dados fora da amostra estão alinhados com o que foi criado na amostra.
No gráfico abaixo, a área azul representa o desempenho fora da amostra de uma das minhas estratégias.
Uma inspeção visual simples revela um bom ajuste entre o desempenho de entrada e saída da amostra, mas que grau de confiança eu tenho nisso? Nesta fase não muito e esta é a questão. O que é realmente necessário é uma medida de similaridade entre os conjuntos de dados de entrada e de saída. Em termos estatísticos, isso pode ser traduzido como a probabilidade de que os números de desempenho dentro e fora da amostra sejam provenientes da mesma distribuição. Existe um teste estatístico não paramétrico que faz exatamente isso: o teste de Kruskall-Wallis. Uma boa definição deste teste pode ser encontrada no R-Tutor Uma coleção de amostras de dados é independente se eles vêm de populações não relacionadas e as amostras não afetam umas às outras. Usando o Teste de Kruskal-Wallis, podemos decidir se as distribuições populacionais são idênticas sem assumi-las para seguir a distribuição normal. & # 8221; O benefício adicional desse teste não está assumindo uma distribuição normal.
Existem outros testes da mesma natureza que poderiam se encaixar nessa estrutura. O teste de Mann-Whitney-Wilcoxon ou os testes de Kolmogorov-Smirnov se encaixam perfeitamente na estrutura descrita aqui, porém isso está além do escopo deste artigo para discutir os prós e contras de cada um desses testes. Uma boa descrição junto com exemplos de R pode ser encontrada aqui.
Aqui está o código usado para gerar o gráfico acima e a análise:
No exemplo acima, o período de amostragem é maior do que o período de amostragem, portanto, criei aleatoriamente 1.000 subconjuntos dos dados da amostra, cada um deles tendo o mesmo comprimento que os dados fora da amostra. Então, testei cada um em um subconjunto de amostras em relação aos dados fora da amostra e gravei os valores p. Esse processo não cria um único valor p para o teste Kruskall-Wallis, mas uma distribuição que torna a análise mais robusta. Neste exemplo, a média dos valores de p é bem acima de zero (0,478), indicando que a hipótese nula deve ser aceita: há fortes evidências de que os dados de entrada e saída da amostra são provenientes da mesma distribuição.
Como de costume, o que é apresentado neste post é um exemplo de brinquedo que apenas arranha a superfície do problema e deve ser adaptado às necessidades individuais. No entanto, penso que propõe um quadro estatístico interessante e racional para avaliar os resultados fora da amostra.
Este post é inspirado nos dois artigos seguintes:
Vigier Alexandre, Chmil Swann (2007), "Efeitos de várias funções de otimização no desempenho fora da amostra de estratégias de negociação geneticamente evoluídas", prevendo a conferência sobre mercados financeiros.
Vigier Alexandre, Chmil Swann (2010), «Um processo de otimização para melhorar a consistência da amostra, um caso da Bolsa de Valores», JP Morgan Cazenove Equity Quantitative Conference, Londres, outubro de 2010.
Apresentando o fidlr: LoanceR de Dados Financeiros.
O fidlr é um suplemento do RStudio projetado para simplificar o processo de download de dados financeiros de vários provedores. Esta versão inicial é um wrapper em torno da função getSymbols no pacote quantmod e somente o Yahoo, Google, FRED e Oanda são suportados. Eu provavelmente adicionarei funcionalidades ao longo do tempo. Como de costume com essas coisas, apenas um lembrete: "O SOFTWARE É FORNECIDO" COMO ESTÁ, SEM GARANTIA DE NENHUM TIPO "# 8230; & # 8221;
Como instalar e usar o fidlr?
Você pode obter o addin / package do seu repositório Github aqui (eu vou registrá-lo no CRAN mais tarde) Instale o addin. Existe um excelente tutorial para instalar o RStudio Addins aqui. Depois que o addin é instalado, ele deve aparecer no menu Addin. Basta escolher fidlr no menu e uma janela como abaixo deve aparecer. Escolha um provedor de dados no menu suspenso Origem. Selecione um intervalo de datas no menu Data Insira o símbolo que você deseja baixar na caixa de texto do instrumento. Para baixar vários símbolos basta digitar os símbolos separados por vírgulas. Use os botões de opção para escolher se deseja baixar o instrumento em um arquivo csv ou no ambiente global. O arquivo csv será salvo no diretório de trabalho e haverá um arquivo csv por instrumento. Pressione Executar para obter os dados ou Fechar para fechar o suplemento.
Mensagens de erro e avisos são manipulados pelos pacotes subjacentes (quantmod e Shiny) e podem ser lidos no console.
Esta é uma primeira versão do projeto, então não espere a perfeição, mas esperamos que melhore com o tempo. Por favor, informe qualquer comentário, sugestão, erro etc & # 8230; para: thertrader @ gmail.
Manter um banco de dados de arquivos de preços em R.
Fazer pesquisa quantitativa implica muita análise de dados e é preciso dados limpos e confiáveis ​​para conseguir isso. O que é realmente necessário são dados limpos que sejam facilmente acessíveis (mesmo sem uma conexão com a Internet). A maneira mais eficiente de fazer isso para mim foi manter um conjunto de arquivos csv. Obviamente, este processo pode ser tratado de várias maneiras, mas eu achei um tempo extra muito eficiente e simples para manter um diretório onde eu armazeno e atualizo arquivos csv. Eu tenho um arquivo csv por instrumento e cada arquivo é nomeado após o instrumento que ele contém. A razão pela qual eu faço isso é dupla: Primeiro, eu não quero baixar dados (de preço) do Yahoo, Google, etc & # 8230; toda vez que eu quiser testar uma nova ideia, mas mais importante, uma vez que eu identifiquei e consertei um problema, eu não quero ter que fazer isso novamente na próxima vez que eu precisar do mesmo instrumento. Simples, mas muito eficiente até agora. O processo é resumido no gráfico abaixo.
Em tudo o que se segue, presumo que os dados estão vindo do Yahoo. O código terá que ser alterado para os dados do Google, Quandl, etc & # 8230; Além disso, apresento o processo de atualização dos dados diários de preços. A configuração será diferente para dados de frequência mais alta e outro tipo de conjunto de dados (ou seja, diferente dos preços).
1 & # 8211; Download de dados inicial (listOfInstruments. R & amp; historicalData. R)
O arquivo listOfInstruments. R é um arquivo contendo apenas a lista de todos os instrumentos.
Se um instrumento não é parte da minha lista (ou seja, nenhum arquivo csv na minha pasta de dados) ou se você fizer isso pela primeira vez, você terá que baixar o conjunto de dados históricos inicial. O exemplo abaixo faz o download de um conjunto de cotações diárias dos ETFs do Yahoo Finance até janeiro de 2000 e armazena os dados em um arquivo csv.
2 & # 8211; Atualizar dados existentes (updateData. R)
O código abaixo começa a partir de arquivos existentes na pasta dedicada e atualiza todos eles um após o outro. Eu costumo executar este processo todos os dias, exceto quando eu estou de férias. Para adicionar um novo instrumento, basta executar o passo 1 acima apenas para este instrumento.
3 & # 8211; Crie um arquivo de lote (updateDailyPrices. bat)
Outra parte importante do trabalho é criar um arquivo em lotes que automatize o processo de atualização acima (eu sou um usuário do Windows). Isso evita abrir o R ​​/ RStudio e executar o código a partir dele. O código abaixo é colocado em um arquivo. bat (o caminho deve ser alterado com a configuração do leitor). Note que eu adicionei um arquivo de saída (updateLog. txt) para rastrear a execução.
O processo acima é extremamente simples, pois descreve apenas como atualizar dados de preços diários. Eu tenho usado isso por um tempo e tem funcionado muito bem para mim até agora. Para dados mais avançados e / ou freqüências mais altas, as coisas podem ficar muito mais complicadas.
Como de costume, qualquer comentário é bem-vindo.
Avaliação fatorial na gestão quantitativa de portfólios.
Quando se trata de gerenciar uma carteira de ações versus um benchmark, o problema é muito diferente de definir uma estratégia de retorno absoluto. No primeiro, é preciso manter mais estoques do que no segundo, onde nenhuma ação pode ser mantida se não houver oportunidade suficiente. A razão para isso é o erro de rastreamento. Isso é definido como o desvio padrão do retorno da carteira menos o retorno de referência. Quanto menos ações forem mantidas em relação a um benchmark, maior será o erro de rastreamento (por exemplo, maior risco).
A análise a seguir é amplamente inspirada no livro "Active Portfolio Management" # 8221; por Grinold & amp; Kahn Esta é a bíblia para qualquer pessoa interessada em administrar um portfólio em relação a um benchmark. Eu encorajo fortemente qualquer pessoa com interesse no tópico a ler o livro do começo ao fim. É muito bem escrito e estabelece as bases da gestão sistemática de carteiras ativas (não tenho nenhuma afiliação ao editor ou aos autores).
Aqui, estamos tentando classificar com a maior precisão possível as ações no universo de investimento em uma base de retorno a termo. Muitas pessoas criaram muitas ferramentas e inúmeras variantes dessas ferramentas foram desenvolvidas para conseguir isso. Neste post concentro-me em duas métricas simples e amplamente utilizadas: Coeficiente de Informação (IC) e Quantiles Return (QR).
O CI fornece uma visão geral da capacidade de previsão do fator. Mais precisamente, isso é uma medida de quão bem o fator classifica os estoques em uma base de retorno a termo. O IC é definido como a correlação de classificação (ρ) entre a métrica (por exemplo, fator) e o retorno para a frente. Em termos estatísticos, a correlação de postos é uma medida não paramétrica da dependência entre duas variáveis. Para uma amostra de tamanho n, as n pontuações brutas são convertidas em classificações e ρ é calculado a partir de:
O horizonte para o retorno para frente tem que ser definido pelo analista e é uma função do turnover da estratégia e da decadência alfa (isso tem sido objeto de extensa pesquisa). Obviamente, os CIs devem ser o mais alto possível em termos absolutos.
Para o leitor atento, no livro de Grinold & amp; Kahn é uma fórmula que liga a Relação de Informação (IR) e IC: com amplitude sendo o número de apostas independentes (trades). Essa fórmula é conhecida como a lei fundamental do gerenciamento ativo. O problema é que, muitas vezes, definir com precisão a amplitude não é tão fácil quanto parece.
Para obter uma estimativa mais precisa do fator poder preditivo, é necessário dar um passo além e agrupar os estoques por quantis de valores de fatores e, em seguida, analisar o retorno médio a termo (ou qualquer outra métrica de tendência central) de cada um deles. quantis. A utilidade desta ferramenta é simples. Um fator pode ter um bom IC, mas seu poder preditivo pode ser limitado a um pequeno número de ações. Isso não é bom, pois um gerente de portfólio terá que escolher ações dentro de todo o universo para cumprir sua restrição de erro de rastreamento. Os bons quantis-retorno são caracterizados por uma relação monótona entre os quantis individuais e os retornos futuros.
Todas as ações no índice S & amp; P500 (no momento da redação). Obviamente, há um viés de sobrevivência: a lista de ações no índice mudou significativamente entre o início e o final do período de amostragem, no entanto, é bom o suficiente apenas para fins ilustrativos.
O código abaixo faz o download dos preços das ações individuais no S & amp; P500 entre janeiro de 2005 e hoje (leva um tempo) e transforma os preços brutos em retorno nos últimos 12 meses e no último mês. O primeiro é o nosso fator, o último será usado como medida de retorno para frente.
Abaixo está o código para calcular o Coeficiente de Informação e o Retorno de Quantiles. Observe que eu usei quintis neste exemplo, mas qualquer outro método de agrupamento (terciles, deciles, etc.) pode ser usado. isso realmente depende do tamanho da amostra, do que você quer capturar e do tempo em que deseja ter uma visão geral ampla ou se concentrar nas caudas de distribuição. Para estimar os retornos dentro de cada quintil, a mediana tem sido usada como o estimador de tendência central. Essa medida é muito menos sensível a outliers do que a média aritmética.
E finalmente o código para produzir o gráfico de retorno Quantiles.
3 & # 8211; Como explorar as informações acima?
No gráfico acima, o Q1 é mais baixo nos últimos 12 meses e o Q5, o mais alto. Há um aumento quase monótono no retorno dos quantis entre Q1 e Q5, o que indica claramente que os estoques que caem em Q5 superam aqueles que caem em Q1 em cerca de 1% ao mês. Isso é muito significativo e poderoso para um fator tão simples (não é realmente uma surpresa, ainda que & # 8230;). Portanto, há maiores chances de vencer o índice superpondo as ações no Q5 e subestimando as que caem no primeiro trimestre em relação ao benchmark.
Um IC de 0,0206 pode não significar muito em si, mas é significativamente diferente de 0 e indica um bom poder de previsão dos últimos 12 meses de retorno geral. Testes de significância formal podem ser avaliados, mas isso está além do escopo deste artigo.
A estrutura acima é excelente para avaliar a qualidade dos fatores de investimento, mas há uma série de limitações práticas que devem ser abordadas para a implementação na vida real:
Reequilíbrio: Na descrição acima, é assumido que no final de cada mês a carteira é totalmente reequilibrada. Isso significa que todas as ações que caíram no 1T estão abaixo do peso e todas as ações que caíram no 5ºT estão com sobrepeso em relação ao benchmark. Isso nem sempre é possível por razões práticas: algumas ações podem ser excluídas do universo de investimentos, existem restrições sobre o peso da indústria ou do setor, há restrições no volume de negócios etc. & # 8230; Custos de Transação: Isso não foi levado em consideração na análise acima e isso é um sério freio para a implementação da vida real. Considerações de rotatividade são geralmente implementadas na vida real em uma forma de penalidade na qualidade do fator. Coeficiente de transferência: Esta é uma extensão da lei fundamental da gestão ativa e relaxa a suposição do modelo de Grinold de que os gerentes não enfrentam restrições que os impeçam de traduzir suas percepções de investimentos diretamente em apostas de portfólio.
E, finalmente, estou espantado com o que pode ser alcançado em menos de 80 linhas de código com o R & # 8230;
Como de costume, qualquer comentário é bem-vindo.
Risco como uma Variável de Sobrevivência & # 8221;
Me deparo com muitas estratégias na blogosfera, algumas são interessantes, algumas são uma completa perda de tempo, mas a maioria compartilha uma característica comum: pessoas desenvolvendo essas estratégias fazem sua lição de casa para analisar o retorno, mas muito menos atenção é dada ao lado do risco sua natureza aleatória. Eu vi comentários como "um rebaixamento de 25% em 2011, mas um excelente retorno geral". Bem, a minha aposta é que ninguém na terra permitirá que você experimente uma perda de 25% com seu dinheiro (a menos que acordos especiais estejam em vigor). No mundo dos fundos de hedge, as pessoas têm muito pouca tolerância ao saque. Geralmente, como um novo operador em um fundo de hedge, supondo que você não tenha reputação, você tem muito pouco tempo para se provar. Você deve ganhar dinheiro a partir do primeiro dia e continuar fazendo isso por alguns meses antes de ganhar um pouco de credibilidade.
Primeiro, digamos que você começou mal e perdeu dinheiro no começo. Com um rebaixamento de 10%, você certamente está fora, mas mesmo com um rebaixamento de 5%, as chances de ver sua alocação reduzida são muito altas. Isso tem implicações significativas em suas estratégias. Suponhamos que, se você perder 5%, sua alocação será dividida por 2 e você voltará a sua alocação inicial somente quando ultrapassar a marca d'água alta novamente (por exemplo, o levantamento voltará a 0). No gráfico abaixo, simulei o experimento com uma das minhas estratégias.
Você começa a operar em 1º de junho de 2003 e tudo vai bem até 23 de julho de 2003, onde sua curva de rebaixamento atinge o limite de -5% (** 1 **). Sua alocação é reduzida em 50% e você não cruza o limite máximo até 05 de dezembro de 2003 (** 3 **). Se você mantiver a alocação inalterada, o nível da marca d'água alta teria sido ultrapassado em 28 de outubro de 2003 (** 2 **) e até o final do ano você teria ganho mais dinheiro.
Mas vamos empurrar o raciocínio um pouco mais. Ainda no gráfico acima, suponha que você tenha muito azar e comece a negociar em meados de junho de 2003. Você atingiu o limite de rebaixamento de 10% no início de agosto e está provavelmente fora do jogo. Você teria começado no início de agosto a sua alocação não teria sido cortada e você acaba fazendo um bom ano em apenas 4 meses completos de negociação. Nesses dois exemplos, nada mudou, mas sua data de início & # 8230 ;.
O sucesso comercial de qualquer indivíduo tem alguma forma de dependência de caminho e não há muito o que fazer sobre isso. No entanto, você pode controlar o tamanho do drawdown de uma estratégia e isso deve ser tratado com muito cuidado. Um portfólio deve ser diversificado em todas as dimensões possíveis: classes de ativos, estratégias de investimento, frequências de negociação, etc & # 8230 ;. Dessa perspectiva, o risco é a sua "variável de sobrevivência". Se gerenciado corretamente, você tem a chance de permanecer no jogo por tempo suficiente para perceber o potencial de sua estratégia. Caso contrário, você não estará lá no próximo mês para ver o que acontece.
Como de costume, qualquer comentário é bem-vindo.
Um aplicativo simples e brilhante para monitorar as estratégias de negociação & # 8211; Parte II.
Esta é uma continuação do meu post anterior & # 8220; Um aplicativo simples e simples para monitorar as estratégias de negociação & # 8220 ;. Eu adicionei algumas melhorias que tornam o aplicativo um pouco melhor (pelo menos para mim!). Abaixo está a lista de novos recursos:
Um arquivo. csv de amostra (aquele que contém os dados brutos) A & # 8220; EndDate & # 8221; caixa suspensa que permite especificar o final do período. A & # 8220; Risco & # 8221; página contendo uma análise de VaR e um gráfico de pior desempenho ao longo de vários horizontes A & # 8220; How To & # 8221; página explicando como usar e adaptar o aplicativo às necessidades individuais.
Eu também fiz o aplicativo totalmente auto-contido. Agora ele está disponível como um produto autônomo e não é necessário ter o R ​​/ RStudio instalado em seu computador para executá-lo. Ele pode ser baixado da conta do Google R Trader Google. Esta versão do aplicativo é executada usando o R portátil e o Chrome portátil. Para o leitor atento, este link explica detalhadamente como empacotar um aplicativo Shiny em um aplicativo de desktop (somente Windows por enquanto).
1 & # 8211; Como instalar o & amp; execute o aplicativo no seu computador.
Criar uma pasta específica Descompacte o conteúdo do arquivo. zip nessa nova pasta. Altere os caminhos no arquivo runShinyApp para corresponder às suas configurações Para executar o aplicativo, basta ativar o arquivo run. vbs. Eu também incluí um ícone (RTraderTradingApp. ico) se você quiser criar um atalho na sua área de trabalho.
ui. R: controla o layout e a aparência do servidor de aplicativos. R: contém as instruções necessárias para criar o aplicativo. Você pode carregar quantas estratégias quiser, contanto que o arquivo csv correspondente tenha o formato correto (veja abaixo). shinyStrategyGeneral. R: carrega os pacotes necessários e inicia o aplicativo.
3 & # 8211; Como adicionar uma estratégia de negociação?
Crie o arquivo. csv correspondente no diretório direito Crie uma nova entrada na função reativa de dados (dentro do arquivo server. R) Adicione um elemento extra ao parâmetro choice na primeira selectInput no sidebarPanel (dentro do arquivo ui. R) . O nome do elemento deve corresponder ao nome da nova entrada acima.
Remova a entrada na função reativa de dados correspondente à estratégia que você deseja remover (dentro do arquivo server. R). Remova o elemento no parâmetro choice na primeira selectInput no sidebarPanel correspondente à estratégia que você deseja remover (dentro da interface do usuário). Arquivo. R).
Por favor, sinta-se à vontade para entrar em contato caso tenha alguma sugestão.
Um aplicativo simples e brilhante para monitorar as estratégias de negociação.
Em um post anterior, mostrei como usar R, Knitr e LaTeX para criar um relatório de estratégia de modelo. Este post vai um passo além, tornando a análise interativa. Além da interatividade, o Aplicativo Brilhante também resolve dois problemas:
Agora posso acessar todas as minhas estratégias de negociação a partir de um único ponto, independentemente do instrumento negociado. Juntamente com a interatividade brilhante, permite uma comparação mais fácil. Eu posso me concentrar em um período de tempo específico.
O código usado neste post está disponível em um repositório Gist / Github. Existem essencialmente 3 arquivos.
ui. R: controla o layout e a aparência do aplicativo. server. R: contém as instruções necessárias para criar o aplicativo. Ele carrega os dados e os formata. Há um arquivo csv por estratégia, cada um contendo pelo menos duas colunas: date e retorna com o seguinte formato: (& # 8220; 2010-12-22 & # 8243;, & # 8221; 0.04% & # 8221;). Você pode carregar quantas estratégias quiser, desde que elas tenham o formato correto. shinyStrategyG eneral. R: carrega os pacotes necessários e inicia o aplicativo.
Este aplicativo está provavelmente longe de ser perfeito e certamente o aprimorarei no futuro. Sinta-se à vontade para entrar em contato caso tenha alguma sugestão.
Um grande obrigado à equipe do RStudio / Shiny por uma ótima ferramenta.
Usando Algoritmos Genéticos no Comércio Quantitativo.
A pergunta que se deve sempre fazer quando se utiliza indicadores técnicos é o que seria um critério objetivo para selecionar os parâmetros dos indicadores (por exemplo, por que usar uma RSI de 14 dias em vez de 15 ou 20 dias?). Algoritmos genéticos (GA) são ferramentas adequadas para responder a essa pergunta. Neste post eu vou mostrar como configurar o problema em R. Antes de prosseguir, o lembrete usual: O que eu apresento neste post é apenas um exemplo de brinquedo e não um convite para investir. Também não é uma estratégia acabada, mas uma ideia de pesquisa que precisa ser mais pesquisada, desenvolvida e adaptada às necessidades individuais.
O que são algoritmos genéticos?
A melhor descrição do GA que eu descobri vem da Cybernatic Trading, um livro de Murray A. Ruggiero. Os algoritmos genéticos foram inventados por John Holland em meados de 1970 para resolver problemas difíceis de otimização. Este método usa a seleção natural, sobrevivência do mais apto & # 8221;. O processo geral segue as etapas abaixo:
Codifique o problema em cromossomos Usando a codificação, desenvolva uma função de adequação para avaliar o valor de cada cromossomo na solução de um determinado problema Inicialize uma população de cromossomos Avalie cada cromossomo na população Crie novos cromossomos acasalando dois cromossomos. Isso é feito mutando e recombinando dois pais para formar dois filhos (os pais são selecionados aleatoriamente, mas influenciados por sua aptidão) Avaliar o novo cromossomo Excluir um membro da população que está menos apto do que o novo cromossomo e inserir o novo cromossomo na população . Se o critério de parada for atingido (número máximo de gerações, os critérios de aptidão são bons o suficiente & # 8230;) então retorne o melhor cromossomo ou vá para o passo 4.
De uma perspectiva de negociação, GA é muito útil porque é bom em lidar com problemas altamente não-lineares. No entanto, eles exibem algumas características desagradáveis ​​que valem a pena mencionar:
Over fitting: Este é o principal problema e cabe ao analista configurar o problema de forma a minimizar esse risco. Tempo de computação: Se o problema não for definido corretamente, pode ser extremamente longo para chegar a uma solução decente e a complexidade aumenta exponencialmente com o número de variáveis. Daí a necessidade de selecionar cuidadosamente os parâmetros.
Existem vários pacotes R lidando com GA, eu escolhi usar o mais comum: rgenoud.
Os preços de fechamento diários para a maioria dos ETFs líquidos do Yahoo financiam desde janeiro de 2000. O período de amostragem vai de janeiro de 2000 a dezembro de 2010. O período fora da amostra começa em janeiro de 2011.
A lógica é a seguinte: a função de adequação é otimizada durante o período de amostragem para obter um conjunto de parâmetros ótimos para os indicadores técnicos selecionados. O desempenho desses indicadores é então avaliado no período fora da amostra. Mas antes disso, os indicadores técnicos devem ser selecionados.
O mercado de ações apresenta duas características principais que são familiares para qualquer pessoa com alguma experiência de negociação. Momento de longo prazo e reversão de curto prazo. Essas características podem ser traduzidas em termos de indicadores técnicos por: médias móveis cross over e RSI. Isto representa um conjunto de 4 parâmetros: Períodos de look-back para médias móveis de longo e curto prazo, período de retorno para o RSI e limiar RSI. Os conjuntos de parâmetros são os cromossomos. O outro elemento-chave é a função de fitness. Podemos querer usar algo como: máximo retorno ou taxa de Sharpe ou rebaixamento médio mínimo. A seguir, optei por maximizar o índice de Sharpe.
A implementação de R é um conjunto de 3 funções:
FunçãoFuncional: define a função de adequação (por exemplo, índice máximo de Sharpe) a ser usado no mecanismo de negociação do Google Analytics: resumo das estatísticas de negociação para dentro e fora dos períodos de amostra para fins de comparação genoud: o mecanismo GA do pacote rgenoud.
A função genoud é bastante complexa, mas eu não vou explicar o que cada parâmetro significa, pois quero manter este post curto (e a documentação é realmente boa).
Na tabela abaixo, apresento para cada instrumento os parâmetros ótimos (período de retorno do RSI, limiar do RSI, média móvel de curto prazo e média móvel de longo prazo) juntamente com as estatísticas de entrada e saída da amostra.

Um exemplo de uma estratégia de negociação codificada usando o pacote Quantmod em R.
Neste post, vamos voltar a testar a nossa estratégia de negociação em R. Back-teste de uma estratégia de negociação pode ser implementado em quatro etapas.
Obtendo os dados históricos.
O pacote quantmod tornou realmente fácil extrair dados históricos do Yahoo Finance. O código de uma linha abaixo busca dados NSE (Nifty).
O Quantmod fornece vários recursos para visualizar dados. O comando abaixo cria um gráfico para os dados do NSE.
TA = "Nulo" indica não usar nenhum indicador técnico. Veremos em breve a aplicação de um indicador técnico em um gráfico.
Formule a estratégia de negociação e especifique as regras.
O próximo passo é escolher uma estratégia de negociação. Vamos escolher o MACD (Moving Average Convergence Divergence) para este exemplo. Em uma estratégia de cruzamentos médios móveis, duas médias são computadas, uma média móvel lenta e uma média móvel rápida. A diferença entre a média móvel rápida e a média móvel lenta é chamada de linha MACD. Uma terceira média chamada linha de sinal; uma média móvel exponencial de 9 dias do sinal MACD, também é calculada. Se a linha MACD cruza acima da linha de sinal, então é um sinal de alta e nós vamos longo. Se a linha MACD cruzar abaixo da linha de sinal, então é um sinal de baixa e nós ficamos em falta. Nós escolhemos o preço de fechamento dos dados da NSE para calcular as médias. O comando a seguir cumpre essa tarefa.
O comando abaixo calcula o MACD para o preço de fechamento.
Pode-se escolher parâmetros variáveis ​​para médias rápidas, lentas e de sinal, dependendo dos requisitos de negociação. Aqui nós nos mantemos com os parâmetros padrão. MACD é a função em quantmod que calcula a divergência de convergência da média móvel, dados são o preço de fechamento para NSE, nFast é a média móvel rápida, nSlow é a média móvel lenta, maType = SMA indica que escolhemos média móvel simples, percentual = FALSE Isso implica que estamos calculando a diferença entre a média móvel rápida e a média móvel lenta. Definir como TRUE retornaria a diferença percentual entre a média móvel rápida e a média móvel lenta.
O comando a seguir plota o gráfico para o preço de fechamento do NSE juntamente com os parâmetros MACD.
Como discutido antes, definimos nosso sinal de negociação da seguinte forma:
Se o sinal MACD cruzou acima da linha de sinal, ficamos longos no NSE. Se o sinal MACD cruzou abaixo da linha de sinal, ficamos sem NSE.
O comando a seguir gera o sinal de negociação de acordo. Usamos o operador lag para eliminar o viés antecipado.
sinal = Atraso (ifelse (macd $ macd & lt; macd $ signal, -1, 1))
Execute a estratégia nos dados históricos.
Aplicaremos essa estratégia nos dados históricos da NSE de 2007-09-17 a 2015-09-22. O sinal de negociação é aplicado ao preço de fechamento para obter os retornos de nossa estratégia.
A função ROC fornece a diferença percentual entre os dois preços de fechamento. Podemos escolher a duração para a qual queremos ver os retornos. O seguinte comando escolhe os retornos entre 2008-06-02 e 2015-09-22.
Devoluções cumulativas podem ser calculadas e plotadas usando os seguintes comandos:
Avalie as métricas de desempenho.
A quarta etapa do teste de retorno está avaliando as métricas de desempenho. O pacote de análise de desempenho em R fornece uma plataforma consolidada para observar os parâmetros relacionados ao desempenho. Várias métricas como draw-downs, downside risk, podem ser observadas em R.
O seguinte comando fornece um resumo dos parâmetros acima mencionados e muito mais!
Aqui está a versão sucinta do código.
Depois de seguir este exemplo, você aprendeu noções básicas de como projetar uma estratégia de negociação de quant usando R. Agora você pode aprender sobre como começar com o pacote quantmod em R. Uma vez que você aprendeu com sucesso estas noções básicas você pode testar suas habilidades em nosso curso de datacamp interativo de 10 horas de duração individualizada 'Modelar uma estratégia de negociação quantitativa em R'.
Percebemos que alguns usuários estão enfrentando desafios ao baixar os dados de mercado das plataformas Yahoo e Google Finance. Caso você esteja procurando uma fonte alternativa para dados de mercado, você pode usar o Quandl para o mesmo.

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

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