понедельник, 28 мая 2018 г.

Estratégias de negociação algorítmica em r


algotrading.


173 & # 32; пользователя находятся здесь.


МОДЕРАТОРЫ.


Bem-vindo ao Reddit,


a primeira página da internet.


e inscreva-se em uma das milhares de comunidades.


отправлено & # 32; 9 месяцев назад & # 32; автор & # 32; ModwithABod [M] & # 32; - & # 32; anúncio.


отправлено & # 32; 1 день назад & # 32; автор & # 32; jvrssc.


отправлено & # 32; 1 день назад & # 32; автор & # 32; jvrssc.


отправлено & # 32; 1 день назад & # 32; автор & # 32; jvrssc.


отправлено & # 32; 5 дней назад & # 32; автор & # 32; hotkek.


отправлено & # 32; 7 дней назад & # 32; автор & # 32; qgof.


помощь правила сайта центр поддержки вики реддикет mod guidelines связаться с нами.


приложенияи инструменты Reddit para iPhone Reddit para o site móvel Android кнопки.


Использование данного сайта означает, что вы принимаете & # 32; пользовательского соглашения & # 32; и & # 32; Политика конфиденциальности. &cópia de; 2018 reddit инкорпорейтед. Все права защищены.


REDDIT e o logotipo ALIEN são marcas registradas da reddit inc.


& pi; Renderizado pelo PID 123487 em & # 32; app-333 & # 32; em 2018-02-02 06: 09: 59.903459 + 00: 00 executando 1cce75d código do país: UA.


Tarefa Algorítmica de Negociação em R.


Nesta publicação, vou mostrar como usar R para coletar os estoques listados em leais3, obter dados históricos do Yahoo e depois executar uma estratégia de negociação algorítmica simples. Ao longo do caminho, você aprenderá alguma raspagem na web, uma função atingindo uma API de finanças e um htmlwidget para fazer um gráfico de séries de tempo interativo.


Para esta publicação, um algoritmo de negociação é definido como um conjunto de regras que desencadeiam um evento de compra ou venda, em vez de um modelo preditivo ou uma previsão de séries temporais. Este é o tipo mais simples de troca de algo, mas se você estiver interessado em investigar mais profundamente em finanças com R, eu encorajaria você a tomar o curso da DataCamp na modelagem de uma estratégia de negociação quantitativa em R.


Fundo.


Em 2015, comecei a investir um pouco em loyal3. O seu serviço é incomum e um ótimo lugar para iniciar sua jornada de investimento. Em vez de cobrar ao investidor por negociações, leal3 cobra as empresas para listar em sua plataforma. A premissa é que as pessoas que gostam do serviço de uma empresa também comprarão o estoque e, assim, se tornarão defensoras fortes da marca. Fazer a plataforma mais atraente é que você pode comprar partes fracionárias. Então, você pode entrar nesse estoque de $ 800 amazon por apenas US $ 10 e comprar outra fração de US $ 10 cada vez que você tiver um pouco de dinheiro extra no final do mês. Claro que há custos de fricção, uma vez que você precisa negociar no Windows e seu portfólio inteiro está limitado.


70 ações, mas leais3 representa uma maneira divertida e de baixo custo para explorar o treinamento de capital. Você pode colocar a pele real no jogo por apenas US $ 10!


Para ser claro, tenho as contas típicas de aposentadoria e investimento, mas eu gosto da interface limpa do leal no aplicativo e da falta de taxas. Eu acabo checando minha carteira de lealdade e diversão mais frequentemente do que meus fundos mútuos, simplesmente porque é fácil e divertida ver o desempenho dos estoques que escolhi diretamente.


Os estoques disponíveis em loyal3.


Configurando seu espaço de trabalho.


Para começar, carregue as bibliotecas no seu ambiente. Eu quase sempre uso rvest for web scraping estes dias. Existem outros pacotes que funcionam, incluindo o RSelenium, mas eu gosto do quão fácil pode ser executado.


O segundo pacote, pbapply, é opcional porque simplesmente adiciona uma barra de progresso às funções de aplicação. Como você poderia estar raspando centenas de páginas da web, uma barra de progresso pode ser útil para estimar o tempo.


Em seguida, a TTR é um pacote que acabei de começar a explorar. A biblioteca é usada para construir "Regras de Negociação Técnicas". Embora você aprenda um algoritmo de negociação simples nesta publicação, o pacote TTR pode realizar cálculos mais sofisticados e vale a pena aprender.


A biblioteca dygraphs é um invólucro para uma biblioteca de gráficos de JavaScript rápida e aberta. É um dos htmlwidgets que torna o R mais dinâmico e faz parte de um arquivo html em vez de uma imagem estática. Por fim, o pacote lubridate é usado para facilitar a manipulação da data.


Coleção de dados.


Todos os estoques loyal3 estão todos listados em uma única página. Antes de pesquisar os preços diários individuais das ações para construir seu algoritmo de negociação, você precisa coletar todos os tickers disponíveis. A primeira coisa a fazer é declarar stock. list como uma string de URL. O próximo uso read_html () para que sua sessão R crie uma sessão na Internet e colete todas as informações html na página como um conjunto de nós XML. A página CSS tem uma ID chamada "nome da empresa". Use isso como um parâmetro ao chamar html_nodes () para selecionar apenas os dados XML associados a este nó. Por fim, use html_text () para que os valores de texto reais para os nomes das empresas sejam coletados.


Para examinar os estoques disponíveis em loyal3, você pode imprimir o objeto stocks. names no seu console. Isso retorna o nome da empresa como um vetor de texto.


Para pesquisar os preços das ações, você precisa primeiro obter o símbolo do ticker. Quando você está no site leal3, você pode clicar no tile da empresa para carregar uma página com um símbolo de ticker e outras informações da empresa.


Usando html_nodes () em ações, você puxa todos os nós marcados com um "Em HTML" & lt; a & gt; tag define um hiperlink que é usado para vincular a página de um formulário a outro. Dentro da tag de hiperlink, o "href" refere-se ao endereço de URL exato. Então, html_attr () irá extrair o URL de TODOS os links na página, se você passar em "href ...".


Depois de fazer uma inspeção manual, achei que os links 54 a 123 na página representam as páginas da empresa que eu preciso para raspar as informações do ticker. A última linha usa paste0 () para concatenar a seqüência de URL base "loyal3" para as páginas específicas da empresa, como "/ WALMART". Por exemplo, loyal3 / WALMART:


Em cada uma das páginas da empresa, há uma descrição, um preço de fechamento recente e o ticker. Todas as páginas da empresa são organizadas o mesmo, de modo que a função personalizada get. ticker () pode ser usada para extrair o símbolo do ticker.


Dentro de uma página da empresa, há uma tabela chamada "preço-marcador". A função irá navegar para uma página da empresa, identificar a tabela apropriada, extrair o texto com html_text (). Por fim, usando sub () juntamente com a expressão regular ^ ([[: alpha:]] *). * E \\ 1 manterão todos os caracteres alfabéticos. O resultado é que todos os caracteres especiais, como $, e quaisquer caracteres numéricos, como o preço de fechamento, são removidos. Como a função lê cada uma das 70 páginas, ela somente coletará o ticker de estoque.


A página de estoque leal3 para Alibaba, onde você vê a tabela que contém o ticker do estoque, BABA, está abaixo do texto em negrito.


Armado com sua função personalizada, use pblapply () para aplicá-lo a cada um dos stock. links que contêm a página de cada empresa. O objeto resultante, stock. tickers, é uma lista de tickers de ações individuais com cada elemento correspondente a uma empresa individual.


Uma maneira de alterar uma lista de elementos em um objeto plano é com do. call (). Aqui, você está aplicando rbind para row bind cada elemento de lista em um único vetor. Por fim, você cria um quadro de dados com o símbolo e a informação do nome da empresa.


Para ser consistente em sua análise, você pode querer limitar a quantidade de informações históricas que você coleciona em cada estoque. A função Sys. Data () armazenará um objeto de data como ano, mês e dia. Usar anos com um número inteiro é uma maneira de subtrair uma quantidade de tempo específica do objeto start. date.


Para obter os dados de finanças do Yahoo, o objeto da data deve ser alterado para objetos de personagem simples sem um traço. Usando a função de substituição global gsub () em start. date e end. date mudará a classe e simultaneamente removerá traços. Dentro de gsub (), passe o padrão de personagem para procurar, então os caracteres de substituição. Neste caso, o padrão de substituição é um caractere vazio entre citações. O último parâmetro é o objeto ao qual gsub () será aplicado.


A função TTR () getYahooData () aceita um símbolo de estoque e uma data inicial e final. A função retorna um quadro de dados que possui informações de séries temporais. Cada linha é uma data e as colunas contêm informações como o "Por favor", "Alto", "Por favor" e "encerrando" o preço por uma equidade. Como você está pesquisando várias empresas, você pode usar o lapply () ou o pblapply (). Passe no vetor dos símbolos da empresa, então a função, getYahooData (), e depois a data da informação. Os objetos de data são parâmetros reciclado sempre que getYahooData () é aplicado a um símbolo de estoque.


Para fazer a seleção da lista retornada, stocks. ts, mais fácil de navegar, você pode adicionar nomes aos elementos da lista. O uso de nomes com o objeto stocks. ts declara os nomes como o vetor de símbolo $ original.


Ao trabalhar com grandes listas, eu gosto de examinar o objeto resultante para garantir que o resultado seja o que eu esperava. Agora que os elementos têm nomes, você pode fazer referência diretamente a eles. Neste exemplo, você está examinando as 6 primeiras linhas para AMC Entertainment Holdings (AMC). Usar head () na lista ao fazer referência a $ AMC retornará uma parte da série temporal para este estoque:


Examinando os dados de estoque.


Quando eu ouço as notícias financeiras, os comentadores geralmente se referem a gráficos. Apesar da negociação de alta freqüência e da gestão ativa realizada por outros, muitos pequenos investidores ainda se referem a gráficos para obter informações. O objeto da série temporal pode ser exibido rapidamente com o enredo. Passe na lista referente ao elemento nomeado, como $ AMC e depois a coluna que deseja exibir, aqui $ Close.


O enredo anterior é estático e não muito interessante.


Vamos usar uma biblioteca de JavaScript para criar um gráfico que você possa explorar. Neste trecho de código, você pode observar o "% & gt;%" ou operador de tubulação. O operador de tubulação é uma boa maneira de escrever um código conciso. Ele encaminha um objeto para a próxima função sem forçar você a reescrever um nome de objeto como você fez anteriormente nesta publicação.


Neste exemplo, você cria um dygraph referente ao estoque do Twitter, $ TWTR e, em seguida, a coluna que deseja traçar, $ Close. Dentro do dygraph, main adiciona um título especificado entre as cotações. Usando o "% & gt;%" este objeto inteiro é encaminhado para a próxima função dyRangeSelector (). Você pode especificar um intervalo de datas padrão usando c () com uma string de data de início e fim. O objeto HTML resultante é uma série de tempo dinâmico para o estoque do Twitter com um controle deslizante de data na parte inferior.


Lembre-se, para alterar o patrimônio exibido, altere o símbolo do ticker na lista stocks. ts e, em seguida, o título do gráfico.


Este é um dígrafo básico para o estoque do Twitter.


Uma Estratégia de Negociação Simples: Trend Following.


Os comerciantes de alta freqüência e os hedge funds usam modelos sofisticados e abordagens baseadas em regras para executar negócios. Se você quiser saber mais, sugiro visitar a parapian para abordagens avançadas. Para abordagens mais simples, comece com esta página na Investopedia.


No código abaixo, você irá visualizar uma estratégia de negociação de impulso simples. Basicamente, você gostaria de calcular as médias móveis de 200 dias e 50 dias para um preço de ações. Em qualquer dia em que a média móvel de 50 dias esteja acima da média móvel de 200 dias, você compraria ou manteria sua posição. Nos dias em que a média de 200 dias é superior à média móvel de 50 dias, você venderia suas ações. Esta estratégia é chamada de estratégia seguindo estratégia. A natureza positiva ou negativa entre as duas médias médias temporais representa o impulso do estoque.


O pacote TTR fornece SMA () para calcular a média móvel simples. Neste trecho de código, você está examinando os primeiros 6 valores para as médias móveis de Twitter e 200 dias. SMA () funciona passando os dados da série temporal para um estoque e uma coluna específica como Close. Este é um único vetor de preços de fechamento do estoque TWTR. O segundo parâmetro é um número inteiro que representa o número de observações para a média móvel. Sem usar head (), a função SMA () retornará todos os valores.


Agora que você examinou detalhadamente a função da média móvel, você precisa se inscrever para cada uma das 70 ações. stocks. ts é uma lista de 70 quadros de dados contendo dados de estoque individuais. A quarta coluna de cada quadro de dados contém o preço de fechamento que queremos usar para as médias móveis.


A função personalizada mov. avgs () aceita um único quadro de dados de estoque para calcular as médias móveis. A primeira linha seleciona os preços de fechamento porque indexa [, 4] para criar stock. close. Em seguida, a função usa ifelse para verificar o número de linhas no quadro de dados. Especificamente se o nrow no quadro de dados for inferior a (2 * 260), então a função criará uma moldura de dados de médias móveis com “NA”.


Eu escolhi esse número porque há cerca de 250 dias de negociação por ano, então isso irá verificar se a série temporal tem cerca de 2 anos ou mais de duração. Loyal3 às vezes pode ter acesso a IPOs e, se o estoque for recém-público, não haverá dados suficientes para uma média móvel de 200 dias. No entanto, se o valor nrow for superior a 2 * 260, a função criará um quadro de dados com os dados originais juntamente com médias móveis de 200 e 50 dias como novas colunas. Usando colnames, eu declaro os nomes das colunas. A última parte da função usa full. cases para verificar os valores na coluna média móvel de 200 dias. Quaisquer linhas que não tenham um valor são descartadas no resultado final.


Armado com esta função mov. avgs (), você pode usar o pblapply () para adicionar os cálculos da média móvel a cada um dos 70 quadros de dados.


Use o código abaixo para visualizar as médias móveis de um estoque usando um dígrafo. Mais uma vez, esse código está usando o operador "% & gt;%" para encaminhar objetos. A função dygraph () aceita a estrutura de dados stocks. ts $ FOX. Especificamente, o quadro de dados é indexado pelo nome da coluna com c ('sma_200', 'sma_50'). Este objeto é passado para dySeries () nas próximas 2 linhas. Você pode se referir a uma coluna por nome para que dySeries () traçam uma linha para os valores "40 e 40" nas linhas 2 e 3. Este objeto é reenviado novamente para o dyRangeSelector () para ajustar a altura do seletor. Por fim, adicionei algum sombreamento para definir períodos em que você quisesse comprar ou manter o patrimônio líquido e um período em que você deveria ter vendido suas ações ou ficado afastado, dependendo da sua posição.


Aqui está o resultado final em uma série de tempo interativa.


As médias móveis FOX com regiões sombreadas para comprar / segurar versus vender.


Conclusão.


Como comerciante algorítmico de brotação, você não precisa traçar todos os 70 compartilhamentos. Em vez disso, você gostaria de executar o código todos os dias e adicionar uma maneira programática para identificar estoques que se encaixam no método baseado em regras, "compre se a média móvel de 50 dias está acima da média móvel de 200 dias". À medida que você revisa o gráfico anterior, a seção verde é uma hora em que você compraria o capital da FOX. A seção vermelha representa o tempo para vender suas ações e não voltar a entrar.


Como o gráfico é interativo, você pode usar o controle deslizante para redimensionar o visual. Com base nesta abordagem simples de troca de algo, agora pode ser um bom momento para comprar FOX! 30 de dezembro de 2016 foi um dia de negociação em que a média móvel de 50 dias mudou US $ 0,01 acima da média móvel de 200 dias!


A seção ampliada da equidade FOX.


Claro, lembre-se de todos os investimentos podem perder valor. Para saber mais sobre finanças e trocas comerciais, cheque os cursos da DataCamp aqui.


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 19 de abril de 2013.


Neste artigo, quero apresentar-lhe os métodos pelos quais eu próprio identifico estratégias de negociação algorítmicas rentáveis. Nosso objetivo hoje é entender em detalhes como encontrar, avaliar e selecionar esses sistemas. Vou explicar como as estratégias de identificação são tanto sobre preferências pessoais quanto sobre o desempenho da estratégia, como determinar o tipo e a quantidade de dados históricos para o teste, como avaliar de forma imparcial uma estratégia de negociação e, finalmente, como avançar para a fase de backtesting e implementação estratégica.


Identificando suas próprias preferências pessoais para negociação.


Para ser um comerciante bem sucedido - de forma discricionária ou algorítmica - é necessário fazer-se algumas perguntas honestas. O Trading oferece a você a capacidade de perder dinheiro em uma taxa alarmante, por isso é necessário "conhecer você mesmo" tanto quanto é necessário entender a estratégia escolhida.


Eu diria que a consideração mais importante na negociação é estar ciente de sua própria personalidade. O comércio e o comércio algorítmico em particular, requer um grau significativo de disciplina, paciência e desapego emocional. Como você está deixando um algoritmo executar sua negociação para você, é necessário ser resolvido para não interferir com a estratégia quando está sendo executado. Isso pode ser extremamente difícil, especialmente em períodos de redução prolongada. No entanto, muitas estratégias que mostraram ser altamente rentáveis ​​em um backtest podem ser arruinadas por uma simples interferência. Compreenda que se você deseja entrar no mundo da negociação algorítmica, você será testado emocionalmente e, para ser bem-sucedido, é necessário trabalhar com essas dificuldades!


A próxima consideração é uma das vezes. Você tem um emprego a tempo inteiro? Você trabalha a tempo parcial? Você trabalha em casa ou tem uma longa viagem diária? Essas perguntas ajudarão a determinar a freqüência da estratégia que você deve procurar. Para aqueles de você no emprego a tempo inteiro, uma estratégia de futuros intradiária pode não ser apropriada (pelo menos até que seja totalmente automatizada!). Suas restrições de tempo também ditarão a metodologia da estratégia. Se sua estratégia é freqüentemente negociada e dependente de feeds de notícias caras (como um terminal da Bloomberg), você terá claramente que ser realista sobre sua capacidade de executar com sucesso durante o escritório! Para aqueles de vocês com muito tempo, ou as habilidades para automatizar sua estratégia, você pode querer examinar uma estratégia mais técnica de negociação de alta freqüência (HFT).


Minha opinião é que é necessário realizar pesquisas contínuas sobre suas estratégias de negociação para manter um portfólio consistentemente lucrativo. Poucas estratégias permanecem "sob o radar" para sempre. Assim, uma parte importante do tempo atribuído à negociação será na realização de pesquisas em andamento. Pergunte a si mesmo se você está preparado para fazer isso, pois pode ser a diferença entre uma forte rentabilidade ou um declínio lento em relação a perdas.


Você também precisa considerar seu capital de negociação. O valor mínimo ideal geralmente aceito para uma estratégia quantitativa é de 50,000 USD (aproximadamente £ 35,000 para nós no Reino Unido). Se eu estivesse começando de novo, eu começaria com uma quantidade maior, provavelmente mais perto de 100,000 USD (aproximadamente £ 70,000). Isso ocorre porque os custos de transação podem ser extremamente caros para estratégias de média a alta freqüência e é necessário ter capital suficiente para absorvê-los em tempos de redução. Se você está considerando começar com menos de 10.000 USD, então você precisará se restringir a estratégias de baixa freqüência, negociando em um ou dois ativos, já que os custos de transação irão comer rapidamente em seus retornos. Interactive Brokers, que é um dos corretores mais amigáveis ​​para aqueles com habilidades de programação, devido à sua API, tem uma conta de varejo mínima de 10.000 USD.


A habilidade de programação é um fator importante na criação de uma estratégia de negociação algorítmica automatizada. Estar bem informado em uma linguagem de programação como C ++, Java, C #, Python ou R permitirá que você crie o sistema de armazenamento de dados, o sistema de backtest e o sistema de execução de ponta a ponta. Isso tem uma série de vantagens, cujo chefe é a capacidade de estar completamente atento a todos os aspectos da infra-estrutura comercial. Também permite que você explore as estratégias de freqüência mais alta, pois você terá o controle total da sua "pilha de tecnologia". Embora isso signifique que você possa testar seu próprio software e eliminar erros, também significa mais tempo gasto na codificação de infra-estrutura e menos na implementação de estratégias, pelo menos na parte anterior da sua carreira de trading. Você pode achar que você está confortável negociando no Excel ou MATLAB e pode terceirizar o desenvolvimento de outros componentes. Eu não recomendaria isso no entanto, especialmente para aqueles que negociavam em alta freqüência.


Você precisa se perguntar o que você espera alcançar por meio de negociação algorítmica. Você está interessado em um rendimento regular, pelo qual você espera obter lucros de sua conta de negociação? Ou, você está interessado em um ganho de capital a longo prazo e pode se negociar sem a necessidade de retirar fundos? A dependência de renda determinará a freqüência de sua estratégia. As retiradas de renda mais regulares exigirão uma estratégia de negociação de maior freqüência com menor volatilidade (ou seja, uma proporção Sharpe mais alta). Os comerciantes de longo prazo podem pagar uma frequência comercial mais tranquila.


Finalmente, não se ilude com a noção de tornar-se extremamente rico num curto espaço de tempo! O comércio de Algo não é um esquema rápido e rápido - se alguma coisa pode ser um esquema rápido e rápido. É preciso disciplina, pesquisa, diligência e paciência importantes para serem bem-sucedidos no comércio algorítmico. Pode levar meses, senão anos, gerar rentabilidade consistente.


Sourcing Algorithmic Trading Ideas.


Apesar das percepções comuns em contrário, é realmente bastante direto localizar estratégias de negociação rentáveis ​​no domínio público. Nunca as idéias comerciais estão mais disponíveis do que hoje. Revistas de finanças acadêmicas, servidores de pré-impressão, blogs comerciais, fóruns de negociação, revistas comerciais semanais e textos especializados fornecem milhares de estratégias de negociação com as quais basear suas idéias.


Nosso objetivo como pesquisadores quantitativos de negócios é estabelecer um pipeline estratégico que nos forneça um fluxo de idéias comerciais em andamento. Idealmente, queremos criar uma abordagem metódica para sourcing, avaliação e implementação de estratégias que encontramos. Os objetivos do pipeline são gerar uma quantidade consistente de novas idéias e fornecer-nos uma estrutura para rejeitar a maioria dessas idéias com o mínimo de consideração emocional.


Devemos ser extremamente cuidadosos para não permitir influências cognitivas na nossa metodologia de tomada de decisão. Isso pode ser tão simples como ter uma preferência por uma classe de ativos sobre outra (o ouro e outros metais preciosos vêm à mente) porque são percebidos como mais exóticos. Nosso objetivo sempre deve ser encontrar estratégias consistentemente lucrativas, com expectativas positivas. A escolha da classe de ativos deve basear-se em outras considerações, como restrições de capital de negociação, taxas de corretagem e capacidades de alavancagem.


Se você não está completamente familiarizado com o conceito de estratégia comercial, então o primeiro lugar a procurar é com os livros didáticos estabelecidos. Os textos clássicos fornecem uma ampla gama de idéias mais simples e diretas, para se familiarizarem com a negociação quantitativa. Aqui está uma seleção que eu recomendo para aqueles que são novos para negociação quantitativa, que gradualmente se tornam mais sofisticados enquanto você trabalha através da lista:


Para uma lista mais longa de livros de negociação quantitativos, visite a lista de leitura QuantStart.


O próximo lugar para encontrar estratégias mais sofisticadas é com fóruns de negociação e blogs comerciais. No entanto, uma nota de cautela: muitos blogs comerciais dependem do conceito de análise técnica. A análise técnica envolve a utilização de indicadores básicos e psicologia comportamental para determinar tendências ou padrões de reversão nos preços dos ativos.


Apesar de ser extremamente popular no espaço comercial geral, a análise técnica é considerada um pouco ineficaz na comunidade de finanças quantitativas. Alguns sugeriram que não é melhor que ler um horóscopo ou estudar folhas de chá em termos de seu poder preditivo! Na realidade, existem indivíduos bem-sucedidos que utilizam análises técnicas. No entanto, como quants com uma caixa de ferramentas matemática e estatística mais sofisticada à nossa disposição, podemos facilmente avaliar a eficácia de tais estratégias "baseadas em TA" e tomar decisões baseadas em dados, em vez de basear nossas em considerações ou preconceitos emocionais.


Aqui está uma lista de bem-respeitados blogs e fóruns de negociação algorítmica:


Depois de ter tido alguma experiência na avaliação de estratégias mais simples, é hora de olhar para as ofertas acadêmicas mais sofisticadas. Algumas revistas acadêmicas serão de difícil acesso, sem inscrições elevadas ou custos pontuais. Se você é um membro ou ex-aluno de uma universidade, você poderá obter acesso a algumas dessas revistas financeiras. Caso contrário, você pode olhar para os servidores de pré-impressão, que são repositórios de internet de rascunhos finais de documentos acadêmicos que estão sendo submetidos a revisão pelos pares. Uma vez que estamos apenas interessados ​​em estratégias que possamos replicar com sucesso, fazer backtest e obter rentabilidade, uma revisão por pares é de menor importância para nós.


A principal desvantagem das estratégias acadêmicas é que muitas vezes podem estar desatualizadas, exigir dados históricos obscuros e dispendiosos, negociar classes de ativos ilíquidas ou não influenciar taxas, derrapagens ou propagação. Também não está claro se a estratégia de negociação deve ser realizada com ordens de mercado, ordens limitadas ou se contém perdas de parada, etc. Portanto, é absolutamente essencial replicar a estratégia o melhor que puder, fazer o backtest e adicionar uma transação realista custos que incluem tantos aspectos das classes de ativos que você deseja negociar.


Aqui está uma lista dos servidores de pré-impressão mais populares e revistas financeiras das quais você pode criar ideias:


E sobre como formar suas próprias estratégias quantitativas? Isso geralmente requer (mas não está limitado a) conhecimento em uma ou mais das seguintes categorias:


Microestrutura de mercado - Para estratégias de freqüência mais altas em particular, pode-se usar a microestrutura do mercado, ou seja, a compreensão da dinâmica do livro de pedidos, a fim de gerar rentabilidade. Diferentes mercados terão várias limitações tecnológicas, regulamentos, participantes do mercado e restrições que estão abertas à exploração através de estratégias específicas. Esta é uma área muito sofisticada e os profissionais de varejo terão dificuldade em ser competitivos neste espaço, particularmente porque a competição inclui fundos de hedge quantitativos grandes e bem capitalizados com fortes capacidades tecnológicas. Estrutura do fundo - Os fundos de investimento em conjunto, como fundos de pensão, parcerias de investimento privado (hedge funds), consultores de negociação de commodities e fundos de investimento, são limitados por uma forte regulamentação e suas grandes reservas de capital. Assim, certos comportamentos consistentes podem ser explorados com aqueles que são mais ágeis. Por exemplo, grandes fundos estão sujeitos a restrições de capacidade devido ao seu tamanho. Assim, se eles precisam rapidamente descarregar (vender) uma quantidade de valores mobiliários, eles terão que diminuí-lo para evitar "mover o mercado". Algoritmos sofisticados podem tirar proveito disso, e outras idiossincrasias, em um processo geral conhecido como arbitragem de estrutura de fundos. Aprendizado de máquinas / inteligência artificial - Os algoritmos de aprendizagem de máquinas tornaram-se mais prevalentes nos últimos anos nos mercados financeiros. Os classificadores (como Naive-Bayes, et al.) Correspondentes de função não-linear (redes neurais) e rotinas de otimização (algoritmos genéticos) foram todos usados ​​para prever caminhos de ativos ou otimizar estratégias de negociação. Se você tem um histórico nesta área, você pode ter alguma visão sobre como determinados algoritmos podem ser aplicados a certos mercados.


Há, é claro, muitas outras áreas para investigar quants. Vamos discutir como apresentar estratégias personalizadas em detalhes em um artigo posterior.


Ao continuar monitorando essas fontes em uma base semanal, ou mesmo diária, você está se preparando para receber uma lista consistente de estratégias de uma variedade diversificada de fontes. O próximo passo é determinar como rejeitar um grande subconjunto dessas estratégias, a fim de minimizar o desperdício de seu tempo e os recursos de backtesting em estratégias que provavelmente não serão lucrativas.


Avaliando Estratégias de Negociação.


A primeira consideração, e indiscutivelmente mais óbvia, é se você realmente entende a estratégia. Você poderia explicar a estratégia de forma concisa ou exigir uma série de advertências e listas de parâmetros infinitas? Além disso, a estratégia tem uma base boa e sólida na realidade? Por exemplo, você poderia apontar alguma lógica comportamental ou restrição da estrutura do fundo que possa estar causando o (s) padrão (s) que você está tentando explorar? Esta restrição suportaria uma mudança de regime, como uma dramática perturbação do ambiente regulatório? A estratégia depende de regras estatísticas ou matemáticas complexas? Aplica-se a qualquer série de tempo financeiro ou é específico para a classe de ativos em que se afirma ser lucrativo? Você deve constantemente pensar nesses fatores ao avaliar novos métodos de negociação, caso contrário você pode desperdiçar uma quantidade significativa de tempo tentando fazer backtest e otimizar estratégias não lucrativas.


Uma vez que você tenha determinado que você entende os princípios básicos da estratégia, você precisa decidir se ele se encaixa com o seu perfil de personalidade acima mencionado. Esta não é uma consideração tão vaga quanto parece! As estratégias diferirão substancialmente em suas características de desempenho. Existem certos tipos de personalidade que podem lidar com períodos mais significativos de redução ou estão dispostos a aceitar um maior risco de retorno maior. Apesar do fato de que nós, como quants, tentamos eliminar todo o viés cognitivo quanto possível e devemos avaliar uma estratégia de forma imparcial, os preconceitos sempre se infiltrarão. Assim, precisamos de um meio consistente e sem emoção através do qual avaliar o desempenho das estratégias . Aqui está a lista de critérios que eu julgo uma nova estratégia potencial por:


Metodologia - O impulso da estratégia está baseado, o retorno médio, o mercado neutro, direcional? A estratégia baseia-se em técnicas de aprendizado estatístico ou de máquinas complexas (ou complexas) que são difíceis de entender e exigem um doutorado em estatísticas para entender? Essas técnicas introduzem uma quantidade significativa de parâmetros, o que pode levar a um viés de otimização? A estratégia é susceptível de suportar uma mudança de regime (ou seja, uma nova regulamentação potencial dos mercados financeiros)? Sharpe Ratio - O índice de Sharpe caracteriza heuristicamente o índice de recompensa / risco da estratégia. Quantifica quanto retorno você consegue para o nível de volatilidade sofrido pela curva patrimonial. Naturalmente, precisamos determinar o período e a frequência em que esses retornos e volatilidade (ou seja, o desvio padrão) são medidos. Uma estratégia de freqüência mais alta exigirá maior taxa de amostragem do desvio padrão, mas um período de tempo geral mais curto, por exemplo. Alavancagem - A estratégia exige alavancagem significativa para ser lucrativa? A estratégia exige o uso de contratos de derivativos alavancados (futuros, opções, swaps) para fazer um retorno? Estes contratos alavancados podem ter uma forte volatilidade e, portanto, podem facilmente levar a chamadas de margem. Você tem o capital comercial e o temperamento para essa volatilidade? Frequência - A frequência da estratégia está intimamente ligada à sua pilha de tecnologia (e, portanto, à experiência tecnológica), ao índice Sharpe e ao nível geral dos custos de transação. Todas as outras questões consideradas, as estratégias de maior freqüência requerem mais capital, são mais sofisticadas e difíceis de implementar. No entanto, assumindo que seu mecanismo de teste de backtest é sofisticado e livre de erros, eles geralmente terão taxas Sharpe muito maiores. Volatilidade - A volatilidade está fortemente relacionada ao "risco" da estratégia. A relação Sharpe caracteriza isso. A maior volatilidade das classes de ativos subjacentes, se não coberta, muitas vezes leva a uma maior volatilidade na curva patrimonial e, portanto, menores índices de Sharpe. Naturalmente, suponho que a volatilidade positiva seja aproximadamente igual à volatilidade negativa. Algumas estratégias podem ter maior volatilidade negativa. Você precisa estar ciente desses atributos. Ganhe / Perda, Lucro / Perda Médio - As estratégias serão diferentes nas suas ganhos / perdas e características médias de lucro / perda. Pode-se ter uma estratégia muito lucrativa, mesmo que o número de negócios perdidos exceda o número de negociações vencedoras. As estratégias de impulso tendem a ter esse padrão, pois dependem de um pequeno número de "grandes sucessos" para serem lucrativos. As estratégias de reversão média tendem a ter perfis opostos onde mais dos negócios são "vencedores", mas os negócios perdidos podem ser bastante graves. Drawdown máximo - A redução máxima é a maior queda percentual global na curva de equidade da estratégia. As estratégias de Momentum são bem conhecidas por sofrerem períodos de redução prolongada (devido a uma série de muitos negócios perdidos incrementais). Muitos comerciantes vão desistir em períodos de redução prolongada, mesmo que os testes históricos sugeriram que este é "business as usual" para a estratégia. Você precisará determinar qual porcentagem de redução (e em que período de tempo) você pode aceitar antes de deixar de negociar sua estratégia. Esta é uma decisão altamente pessoal e, portanto, deve ser considerada com cuidado. Capacidade / liquidez - No nível de varejo, a menos que você esteja negociando em um instrumento altamente ilíquido (como um estoque de pequena capital), você não terá que se preocupar muito com a capacidade da estratégia. A capacidade determina a escalabilidade da estratégia para aumentar o capital. Muitos dos maiores hedge funds sofrem de importantes problemas de capacidade à medida que suas estratégias aumentam em alocação de capital. Parâmetros - Certas estratégias (especialmente aquelas encontradas na comunidade de aprendizagem de máquinas) requerem uma grande quantidade de parâmetros. Todo parâmetro adicional que uma estratégia exige deixa-o mais vulnerável ao viés de otimização (também conhecido como "ajuste de curva"). Você deve tentar segmentar estratégias com o menor número possível de parâmetros ou garantir que você tenha quantidades suficientes de dados para testar suas estratégias. Benchmark - Quase todas as estratégias (a menos que sejam caracterizadas como "retorno absoluto") são medidas em relação a um benchmark de desempenho. O benchmark geralmente é um índice que caracteriza uma grande amostra da classe de ativos subjacentes em que a estratégia negocia. Se a estratégia negociar ações americanas de grande capitalização, o S & P500 seria uma referência natural para medir sua estratégia. Você ouvirá os termos "alfa" e "beta", aplicado a estratégias deste tipo. Vamos discutir esses coeficientes em profundidade em artigos posteriores.


Observe que não discutimos os retornos reais da estratégia. Por que é isso? De forma isolada, os retornos realmente nos fornecem informações limitadas sobre a eficácia da estratégia. Eles não lhe dão uma visão de alavancagem, volatilidade, benchmarks ou requisitos de capital. Assim, as estratégias raramente são avaliadas apenas em seus retornos. Considere sempre os atributos de risco de uma estratégia antes de analisar os retornos.


Nesta fase, muitas das estratégias encontradas em seu pipeline serão rejeitadas, uma vez que não atenderão aos requisitos de capital, alavancar restrições, tolerar a tolerância máxima ou preferências de volatilidade. As estratégias que permanecem podem agora ser consideradas para testes anteriores. No entanto, antes disso é possível, é necessário considerar um critério de rejeição final - o dos dados históricos disponíveis para testar essas estratégias.


Obtenção de dados históricos.


Hoje em dia, a amplitude dos requisitos técnicos em todas as classes de ativos para o armazenamento histórico de dados é substancial. Para se manter competitivo, tanto o lado da compra (fundos) como os de venda (bancos de investimento) investem fortemente em sua infraestrutura técnica. É imperativo considerar sua importância. Em particular, estamos interessados ​​em requisitos de tempo, precisão e armazenamento. Agora vou descrever os conceitos básicos de obtenção de dados históricos e como armazená-lo. Infelizmente, este é um tópico muito profundo e técnico, então não poderei dizer tudo neste artigo. No entanto, vou escrever muito mais sobre isso no futuro, já que minha experiência na indústria anterior no setor financeiro estava principalmente preocupada com aquisição, armazenamento e acesso de dados financeiros.


Na seção anterior, estabelecemos um pipeline de estratégia que nos permitiu rejeitar certas estratégias com base em nossos próprios critérios de rejeição pessoal. Nesta seção, vamos filtrar mais estratégias com base em nossas próprias preferências para obter dados históricos. As principais considerações (especialmente no nível do profissional varejista) são os custos dos dados, dos requisitos de armazenamento e do seu nível de experiência técnica. Também precisamos discutir os diferentes tipos de dados disponíveis e as diferentes considerações que cada tipo de dados nos impõe.


Vamos começar discutindo os tipos de dados disponíveis e os principais problemas sobre os quais devemos pensar:


Dados fundamentais - Isso inclui dados sobre tendências macroeconômicas, como taxas de juros, índices de inflação, ações corporativas (dividendos, estoque-divisões), registros da SEC, contas corporativas, números de ganhos, relatórios de culturas, dados meteorológicos etc. Esses dados são freqüentemente usados ​​para valorizar as empresas ou outros ativos em uma base fundamental, ou seja, por meio de alguns fluxos de caixa futuros esperados. Não inclui séries de preços de ações. Alguns dados fundamentais estão disponíveis gratuitamente nos sites do governo. Outros dados fundamentais históricos de longo prazo podem ser extremamente caros. Os requisitos de armazenamento geralmente não são particularmente grandes, a menos que milhares de empresas estejam sendo estudadas de uma só vez. Dados de notícias - Os dados de notícias são geralmente de natureza qualitativa. Consiste em artigos, postagens de blog, postagens de microblog ("tweets") e editoriais. As técnicas de aprendizagem de máquinas, como os classificadores, costumam ser usadas para interpretar o sentimento. Esses dados também são freqüentemente disponíveis gratuitamente ou baratos, por meio da assinatura de meios de comunicação. Os bancos de dados de armazenamento de documentos "NoSQL" mais novos foram projetados para armazenar esse tipo de dados qualitativos não estruturados. Dados do preço do recurso - Este é o domínio de dados tradicional do quant. Consiste em séries temporais de preços dos ativos. As ações (ações), produtos de renda fixa (títulos), commodities e preços de câmbio se enquadram nesta classe. Os dados históricos diários são geralmente simples de obter para as classes de ativos mais simples, como ações. No entanto, uma vez que a precisão e a limpeza estão incluídas e os preconceitos estatísticos removidos, os dados podem se tornar caros. Além disso, os dados das séries temporais geralmente possuem requisitos de armazenamento significativos, especialmente quando os dados intradiários são considerados. Instrumentos Financeiros - Ações, títulos, futuros e opções derivadas mais exóticas possuem características e parâmetros muito diferentes. Assim, não existe uma estrutura de banco de dados "tamanho único" que possa acomodá-los. Deve ser dado um cuidado significativo à concepção e implementação de estruturas de banco de dados para vários instrumentos financeiros. Vamos discutir a situação ao longo de quando chegamos a construir um banco de dados mestre de valores mobiliários em futuros artigos. Frequência - Quanto maior a frequência dos dados, maiores são os custos e os requisitos de armazenamento. Para estratégias de baixa frequência, os dados diários são frequentemente suficientes. Para estratégias de alta freqüência, pode ser necessário obter dados de nível de tiquetaque e até mesmo cópias históricas de determinados dados de cadastro de trocas comerciais. A implementação de um mecanismo de armazenamento para esse tipo de dados é muito tecnicamente intensiva e só é adequada para aqueles que possuem uma sólida base de programação / técnica. Pontos de referência - As estratégias descritas acima serão muitas vezes comparadas a uma referência. Isso geralmente se manifesta como uma série de tempo financeiro adicional. Para as ações, isso geralmente é um benchmark de estoque nacional, como o índice S & P500 (US) ou FTSE100 (Reino Unido). Para um fundo de renda fixa, é útil comparar-se com uma cesta de títulos ou produtos de renda fixa. A "taxa livre de risco" (ou seja, a taxa de juros apropriada) também é outra referência amplamente aceita. Todas as categorias de classe de ativos possuem um benchmark favorecido, por isso será necessário pesquisar isso com base em sua estratégia específica, se desejar ganhar interesse em sua estratégia externamente. Tecnologia - As pilhas de tecnologia por trás de um centro de armazenamento de dados financeiros são complexas. Este artigo apenas pode arranhar a superfície sobre o que está envolvido na construção de um. No entanto, ele se centra em torno de um mecanismo de banco de dados, como um Sistema de Gerenciamento de Banco de Dados Relacional (RDBMS), como MySQL, SQL Server, Oracle ou um Document Storage Engine (ou seja, "NoSQL"). Isso é acessado através do código de aplicativo "lógica comercial" que consulta o banco de dados e fornece acesso a ferramentas externas, como MATLAB, R ou Excel. Muitas vezes, esta lógica de negócios está escrita em C ++, C #, Java ou Python. Você também precisará hospedar esses dados em algum lugar, seja em seu próprio computador pessoal, seja remotamente através de servidores de internet. Produtos como o Amazon Web Services tornaram isso mais simples e barato nos últimos anos, mas ainda exigirá conhecimentos técnicos significativos para alcançar de forma robusta.


Como pode ser visto, uma vez que uma estratégia tenha sido identificada através do pipeline, será necessário avaliar a disponibilidade, os custos, a complexidade e os detalhes de implementação de um determinado conjunto de dados históricos. Você pode achar que é necessário rejeitar uma estratégia baseada unicamente em considerações de dados históricos. Esta é uma grande área e equipes de doutorados trabalham em grandes fundos garantindo que os preços sejam precisos e oportunos. Não subestime as dificuldades de criar um centro de dados robusto para os seus efeitos de backtesting!


Eu quero dizer, no entanto, que muitas plataformas de backtesting podem fornecer esses dados para você automaticamente - a um custo. Assim, demorará muito da dor de implementação para você, e você pode se concentrar exclusivamente na implementação e otimização da estratégia. Ferramentas como a TradeStation possuem essa capacidade. No entanto, minha visão pessoal é implementar o máximo possível internamente e evitar a terceirização de partes da pilha para fornecedores de software. Eu prefiro estratégias de freqüência mais altas devido aos seus índices de Sharpe mais atraentes, mas muitas vezes estão fortemente acoplados à pilha de tecnologia, onde a otimização avançada é crítica.


Agora que discutimos os problemas relacionados aos dados históricos, é hora de começar a implementar nossas estratégias em um mecanismo de teste. Este será o assunto de outros artigos, pois é uma área de discussão igualmente grande!


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.


Shorting at High: Algo Trading Strategy em R.


Milind iniciou sua carreira na Gridstone Research, construiu modelos de ganhos e escreveu notas de resultados para companhias listadas na NYSE, abrangendo os setores de Tecnologia e REITs. Milind também trabalhou no CRISIL e no Deutsche Bank, onde esteve envolvido na modelagem de negócios de Finanças Estruturadas cobrindo os Valores Mobiliários de Ativos (ABS) e Obrigações de Dívida Colateralizada (CDOs) para a região dos EUA e da EMEA.


Milind possui MBA em Finanças pela Universidade de Mumbai e um Bacharel em Física pelo St. Xavier's College, em Mumbai.


O Programa Executivo em Negociação Algorítica (EPAT) me expôs a todos os assuntos necessários para aprender comércio algorítmico. Como parte do trabalho do projeto EPAT, tentei codificar muitas estratégias. Uma vez que eu sou novato na negociação algorítmica, queria codificar as estratégias mais simples e as mais básicas. Embora simples e básico, não se deve subestimar o poder de tais estratégias, pois podem gerar bons retornos.


"Shorting at High" foi uma das estratégias que eu formulei para o meu trabalho de projeto. Esta publicação explica a estratégia em breve e a parte de codificação. Congratulo-me com os leitores para dar sugestões, improvisar ou usar a estratégia.


Estratégia em breve.


A estratégia é reduzir as melhores ações que atravessam o limite de porcentagem estabelecida no lado positivo (digamos 8% -9%) durante a negociação intradiária. A expectativa para os estoques em curto é cair por um montante conforme previsto na tabela de métricas que é gerada na execução do código.


O código funciona em duas partes:


Primeiro, estabelecemos um limite de porcentagem de porcentagem elevada no código. Ao executar o código, ele verifica todos os estoques na lista de ações e determina quais dos estoques cruzaram o limite de limite estabelecido.


Em segundo lugar, para cada um desses estoques, ele calcula certas métricas, como o número de vezes que o estoque atravessou o limite estabelecido no último ano, aumento médio da porcentagem durante esses tempos, queda absoluta média no preço nos próximos três dias, RSI, correlação etc. Essas métricas podem então ser usadas para determinar qual estoque é o melhor candidato para uma posição curta. A posição é ajustada ao fechar ou com base no alvo de lucro.


Código de estratégia em R.


Passo 1: carregue os pacotes, leia os símbolos de estoque e inicialize um quadro de dados.


Primeiro, carregue os pacotes R necessários. Defina o nível de limiar alto em termos percentuais. A próxima linha no código lê o arquivo csv contendo a lista de ações. Usando este arquivo, criamos um vetor que contém os símbolos, e outro vetor que contém a alavancagem para cada estoque conforme fornecido pelo corretor.


Também inicializamos um quadro de dados que conterá informações básicas de estoque para cada estoque depois de executar a primeira parte do código. Somente os estoques que atravessam o limite especificado serão incluídos neste quadro de dados.


Etapa 2: gerando o quadro de dados.


No próximo passo, extraímos os dados de preços intradiários de 1 minuto para o dia atual e no dia anterior do google finance para cada estoque. Tenho scripts personalizados para o mesmo. Você pode usar seu próprio script para baixar dados do Google Finance ou de qualquer outra fonte. O arquivo baixado é então lido e calculamos a variação absoluta do preço e a variação percentual do preço de fechamento do dia anterior. O preço atual utilizado é o preço mais recente correspondente ao momento em que o código é executado durante o horário de negociação intradiário.


Se a variação do preço percentual calculado for superior ao limite definido, adicionamos esse estoque ao quadro de dados. Para essas ações, o quadro de dados adiciona informações como: alavancagem, preço de fechamento do dia anterior, preço atual, variação absoluta no preço e variação percentual no preço.


O quadro de dados resultante após a execução do código para todos os estoques é escrito em um arquivo do Excel, que é chamado de "Shorting at High. xlsx". Todos os arquivos armazenados baixados do google finance no diretório R são excluídos usando o comando unlink.


Vamos definir o limiar em 4%. Nós temos 146 símbolos de estoque em nossa lista de estoque. Quando executamos o código, dos 146 símbolos de estoque, o código selecionou 6 estoques que ultrapassaram o limite de 4% durante as horas do mercado intradiário. A tabela abaixo ilustra a saída inicial que é salva na pasta de trabalho "Shorting at High. xlsx" após a execução do código.


Passo 3: computa métricas para determinar o melhor estoque para curto-circuito.


Esta parte do código usa os símbolos de estoque presentes na folha "Shorting at High. xlsx". Com base em um período de lookback de 1 ano, os códigos nesta seção calculam as seguintes métricas:


RSI - Contagem de Índice de Força Relativa - O número de vezes que o estoque atravessou o limiar no período de lookback dado. Médio Alto% - A porcentagem média alta quando o estoque foi acima do limiar. Abs declínio médio - O declínio médio absoluto em Rúpias da Média Alta % Próximo movimento de preço de 3-d - Isso dá a mudança de preço absoluto nos próximos três dias Negativos nos últimos 15 dias - Número de vezes que o estoque foi negativo nos últimos 15 dias de 1 ano de alta & amp; 1 ano de baixa para o stock Correlação do estoque com NIFTY.


Etapa 4: Adicionando as métricas à folha do Excel.


As métricas calculadas na seção anterior são adicionadas à pasta de trabalho "Shorting at High. xlsx". Os códigos mostrados na seção anterior também geram um resumo de comércio para cada símbolo de estoque. O resumo do comércio fornece detalhes de todos os negócios históricos realizados no período de lookback sempre que o estoque atravessou a porcentagem de limiar. Os resumos comerciais são salvos automaticamente no diretório de trabalho R sob o nome, "símbolo passado performance. xlsx" (por exemplo, BEL passado performance. xlsx).


Etapa 5: Analisando a folha de resumo.


A tabela abaixo mostra as diversas métricas que são adicionadas à saída inicial. Nós estabelecemos um limite de 4%. Da tabela podemos ver que a BEL cruzou 4% apenas 16 vezes durante os últimos 1 ano e, em média, declinou por Rs. 25,48 de uma média de alta de 5,66%. Além disso, o próximo movimento de preços de 3 dias para BEL é negativo durante esses horários. BEL parece ser um bom candidato para curto-circuito.


Pode-se definir outras regras usando essas métricas para determinar o melhor estoque para curto-circuito. Ao determinar o melhor estoque, pode-se automatizar a colocação e execução de pedidos através de qualquer um dos corretores que oferecem plataforma de negociação algorítmica. Parar metas de perda e lucro podem ser adicionadas conforme os objetivos de retorno de risco de um.


Conclusão.


A estratégia tenta lucrar com o declínio no preço ao cruzar o limite alto. O código pode ser otimizado para melhorar a velocidade de execução. Pode-se também codificar uma estratégia similar que durará muito quando os estoques ultrapassem um certo limiar. Posicionei o código de estratégia no GitHub (Shorting at High. R) e agradeço os leitores por suas sugestões e comentários.


Próximos passos.


Se você é um codificador ou um profissional de tecnologia que procura iniciar sua própria mesa de negociação automatizada, aprenda a negociação automatizada de palestras interativas ao vivo por praticantes diários. Programa Executivo em Negociação Algorítmica abrange módulos de treinamento como Statistics & amp; Econometria, Computação Financeira e Tecnologia e Algorítmica e Negociação quantitativa. Inscreva-se agora!


O R Trader.


Usando R e ferramentas relacionadas em Finanças Quantitativas.


Visualizando dados da série temporal em R.


Estou muito satisfeito em anunciar o meu curso DataCamp sobre Visualização de Dados da Série Temporal em R. Este curso também faz parte da série Time com R habilidades. Sinta-se livre para dar uma olhada, o primeiro capítulo é gratuito!


Descrição do Curso.


Como diz o ditado, "Um gráfico vale mais que mil palavras". É por isso que a visualização é a maneira mais utilizada e poderosa de obter uma melhor compreensão dos seus dados. Após este curso, você terá uma ótima visão geral das capacidades de visualização da série R e você poderá decidir melhor o modelo a ser escolhido para análise subseqüente. Você também poderá transmitir a mensagem que deseja entregar de forma eficiente e linda.


Esboço de Curso.


Capítulo 1: R Time Series Visualization Tools.


Este capítulo irá apresentá-lo às ferramentas básicas de visualização da série R.


Capítulo 2: séries temporais univariadas.


Os gráficos univariados são projetados para aprender o máximo possível sobre a distribuição, a tendência central e a disseminação dos dados em questão. Neste capítulo, você receberá algumas ferramentas visuais usadas para diagnosticar séries de tempos univariados.


Capítulo 3: séries temporais multivariadas.


O que fazer se você tiver que lidar com séries temporais multivariadas? Neste capítulo, você aprenderá como identificar padrões na distribuição, tendência central e propagação em pares ou grupos de dados.


Capítulo 4: Estudo de caso: selecionando visualmente um estoque que melhora sua carteira existente.


Deixe colocar tudo o que aprendeu até agora na prática! Imagine que você já possui um portfólio de ações e você tem algum dinheiro extra para investir, como você pode escolher com sabedoria um novo estoque para investir seu dinheiro adicional? Analisar as propriedades estatísticas das ações individuais versus um portfólio existente é uma boa maneira de abordar o problema.


Vinculando R para IQFeed com o pacote QuantTools.


O IQFeed fornece serviços de transmissão de dados e soluções de negociação que cobrem o mercado agrícola, energético e financeiro. É um fornecedor bem conhecido e reconhecido de feed de dados voltado para usuários de varejo e pequenas instituições. O preço da assinatura começa em torno 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. I & # 8217; tenho usado o IQFeed há alguns anos e estou feliz com ele (eu não sou afiliado à empresa em nenhum caminho). Mais informações podem ser encontradas aqui. Eu procurei uma integração dentro de R por um tempo e aqui está. Como resultado, depois de executar alguns testes, mudei meu código que ainda estava em Python em R. Apenas por completude, aqui é um link que explica como baixar dados históricos do IQFeed usando o Python.


O QuantTools oferece quatro funcionalidades principais: Obter dados de mercado, armazenar / recuperar dados do mercado, traçar dados da série temporal e testar as costas.


Primeiro, certifique-se de que o IQfeed esteja aberto. Você pode baixar dados diários ou intraday. O código abaixo baixa os preços diários (Open, High, Low, Close) para a SPY de 1 de janeiro de 2017 a 1 de junho de 2017.


O código abaixo baixa dados intraday de 1 de maio de 2017 a 3 de maio de 2017.


Observe o parâmetro do período. Pode levar qualquer um dos seguintes valores: tick, 1min, 5min, 10min, 15min, 30min, hora, dia, semana, mês, dependendo da frequência que você precisa.


O QuantTools torna o processo de gerenciamento e armazenamento de dados do mercado de tiques fácil. Você apenas configura parâmetros de armazenamento e está pronto para ir. Os parâmetros são onde, desde que data e quais símbolos você gostaria de ser armazenado. Sempre que você pode adicionar mais símbolos e se eles não estiverem presentes em um armazenamento, o QuantTools tenta obter os dados da data de início especificada. O código abaixo salvará os dados no seguinte diretório: & # 8220; C: / Usuários / Arnaud / Documents / Market Data / iqfeed & # 8221 ;. Existe uma sub-pasta por instrumento e os dados são aved em arquivos. rds.


Você também pode armazenar dados entre datas específicas. Substitua a última linha de código acima com uma das seguintes.


Agora, você deseja recuperar alguns dos dados armazenados, basta executar algo como:


Observe que apenas os tiques são suportados no armazenamento local, pelo que o período deve ser & # 8216; assinalar & # 8217;


O QuantTools fornece a função plot_ts para traçar dados da série temporal sem fins de semana, feriados e intervalos overnight. No exemplo abaixo, primeiro recupero os dados armazenados acima, selecione as primeiras 100 observações de preços e, finalmente, desenhe o gráfico.


Duas coisas a notar: primeiro espião é um objeto data. table daí a sintaxe acima. Para obter uma visão geral rápida das capacidades de data. table, veja esta excelente folha de truques da DataCamp. Segundo, o parâmetro local é VERDADEIRO à medida que os dados são recuperados do armazenamento interno.


O QuantTools permite escrever sua própria estratégia comercial usando sua API C ++. Eu não vou elaborar sobre isso, pois este é basicamente o código C ++. Você pode consultar a seção Exemplos no site QuantTools.


No geral, considero o pacote extremamente útil e bem documentado. O único bit faltante é o feed ao vivo entre R e IQFeed, o que tornará o pacote uma solução de fim a fim real.


Como de costume, todos os comentários são bem-vindos.


BERT: um recém-chegado na conexão do R Excel.


Alguns meses atrás, um leitor me apontou essa nova maneira de conectar R e Excel. Eu não sei por quanto tempo isso aconteceu, mas nunca encontrei isso e eu nunca vi nenhuma postagem no blog ou artigo sobre isso. Então eu decidi escrever uma publicação, pois a ferramenta realmente vale a pena e, antes que alguém pergunte, eu não estou relacionado à empresa de nenhuma maneira.


BERT significa Basic Excel R Toolkit. É grátis (licenciado sob a GPL v2) e foi desenvolvido pela Structured Data LLC. No momento da redação, a versão atual do BERT é 1.07. Mais informações podem ser encontradas aqui. De uma perspectiva mais técnica, o BERT foi projetado para suportar a execução de funções R a partir de células da planilha do Excel. Em termos de Excel, ele é para escrever funções definidas pelo usuário (UDFs) em R.


Nesta publicação, não vou mostrar-lhe como o R e o Excel interagem através do BERT. Há muito bons tutoriais aqui, aqui e aqui. Em vez disso, quero mostrar-lhe como usei o BERT para criar uma torre de controle # 8222; para minha negociação.


Meus sinais comerciais são gerados usando uma longa lista de arquivos R, mas eu preciso da flexibilidade do Excel para exibir resultados de forma rápida e eficiente. Como mostrado acima, o BERT pode fazer isso por mim, mas eu também quero adaptar o aplicativo às minhas necessidades. Ao combinar o poder de XML, VBA, R e BERT, posso criar uma aplicação bem parecida e poderosa na forma de um arquivo Excel com código VBA mínimo. Em última análise, tenho um único arquivo do Excel reunindo todas as tarefas necessárias para gerenciar meu portfólio: atualização do banco de dados, geração de sinal, envio de ordens etc e # 8230; Minha abordagem poderia ser dividida nas 3 etapas 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 VBA. Essas funções VBA estão envolvidas em torno de funções R definidas usando o BERT.


Com esta abordagem, posso manter uma distinção clara entre o núcleo do meu código mantido em R, SQL e Python e tudo usado para exibir e formatar resultados mantidos no Excel, VBA e amp; XML. Nas próximas seções, apresento o pré-requisito para desenvolver essa abordagem e um guia passo a passo que explica como o BERT poderia ser usado para simplesmente passar dados de R para Excel com um código mínimo de VBA.


1 & # 8211; Baixe e instale o BERT a partir deste link. Uma vez que a instalação foi concluída, você deve ter um novo menu de suplementos no Excel com os botões como mostrado abaixo. É assim que o BERT se materializou no Excel.


2 & # 8211; Baixe e instale o editor de UI personalizado: O Editor de UI personalizado permite criar menus e botões definidos pelo usuário na faixa de 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. Ele calcula e retorna os resíduos de uma regressão linear. Isto é o que queremos recuperar no Excel. Salve isso em um arquivo chamado myRCode. R (qualquer outro nome está bem) em um diretório de sua escolha.


2 & # 8211; functions. R em BERT: do Excel, selecione Add-Ins - & gt; Diretório inicial e abra o arquivo chamado functions. R. Neste arquivo cole o seguinte código. Certifique-se de inserir o caminho correto.


Isso está apenas fornecendo o arquivo RERT que você criou acima. Em seguida, salve e feche as funções do arquivo. R. Se você quiser fazer alguma alteração no arquivo R criado na etapa 1, você terá que recarregá-lo usando o botão BERT & # 8220; Recarregar arquivo de inicialização e # 8221; no menu Complementos no Excel.


3 & # 8211; No Excel: Crie e salve um arquivo chamado myFile. xslm (qualquer outro nome está bem). Este é um arquivo ativado por macro que você salva no diretório de sua escolha. Uma vez que o arquivo é salvo, feche-o.


4 & # 8211; Abra o arquivo criado acima no editor UI personalizado: depois que o arquivo estiver aberto, cole o código abaixo.


Você deve ter algo assim no editor XML:


Essencialmente, essa parte do código XML cria um menu adicional (RTrader), um novo grupo (Meu Grupo) e um botão definido pelo usuário (Novo botão) na faixa do Excel. Depois de concluir, abra myFile. xslm no Excel e feche o Editor de UI personalizado. Você deve ver algo assim.


5 & ​​# 8211; Abra o editor VBA: no 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 novos.


6 & # 8211; Clique no botão Novo: Agora volte para a planilha e no menu do RTrader clique no & # 8220; Novo botão & # 8221; botão. Você deve ver algo como o que aparece abaixo.


O guia acima é uma versão muito básica do que pode ser alcançado usando o BERT, mas mostra como combinar o poder de várias ferramentas específicas para criar sua própria aplicação personalizada. Do meu ponto de vista, o interesse de tal abordagem é a capacidade de colar R e Excel, obviamente, mas também para incluir via XML (e lote) partes de código de Python, SQL e muito mais. Isso é exatamente o que eu precisava. Finalmente, ficaria curioso para 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 as 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 fora dos dados de amostra: a parte dos dados utilizados 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 utilizados para calibração (isto é, na amostra) e 30% para validação (isto é, fora da amostra). Em seguida, uma comparação dos dados de entrada e saída da amostra ajuda a decidir se o modelo é robusto o suficiente. Esta publicação pretende 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 para uma das minhas estratégias.


Uma simples inspeção visual revela um bom ajuste entre o desempenho dentro e fora da amostra, mas o grau de confiança que 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 dentro e fora da amostra. Em termos estatísticos, isso pode ser traduzido como a probabilidade de os números de desempenho dentro e fora da amostra serem provenientes da mesma distribuição. Existe um teste estatístico não paramétrico que faz exatamente isso: o teste Kruskall-Wallis. Uma boa definição deste teste pode ser encontrada no R-Tutor & # 8220; Uma coleção de amostras de dados são independentes se elas vierem de populações não relacionadas e as amostras não se afetam. Usando o teste de Kruskal-Wallis, podemos decidir se as distribuições de população são idênticas sem assumir que elas sigam a distribuição normal. & # 8221; O benefício adicional deste teste não está assumindo uma distribuição normal.


Existe outros testes da mesma natureza que podem enquadrar-se nesse quadro. O teste de Mann-Whitney-Wilcoxon ou os testes de Kolmogorov-Smirnov adequam-se perfeitamente à estrutura descreve aqui no entanto, 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 R podem ser encontradas aqui.


Aqui, o código usado para gerar o gráfico acima e a análise:


No exemplo acima, o período de amostra é mais longo do que o período fora da amostra, portanto, criei aleatoriamente 1000 subconjuntos dos dados de amostra, cada um deles com o mesmo comprimento que os dados fora da amostra. Então eu testei cada um em subconjunto de amostra contra os dados fora da amostra e gravei os valores p. Este processo não cria um único valor de p para o teste de 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: existem fortes evidências de que os dados dentro e fora da amostra são provenientes da mesma distribuição.


Como de costume, o que é apresentado nesta publicação é um exemplo de brinquedo que apenas arranha a superfície do problema e deve ser adaptado às necessidades individuais. No entanto, acho que propõe um quadro estatístico interessante e racional para avaliar os resultados da amostra.


Esta publicação é inspirada nos dois artigos seguintes:


Vigier Alexandre, Chmil Swann (2007), "Efeitos de várias funções de otimização sobre o desempenho da amostra de estratégias de negociação desenvolvidas genéticamente", Conferência de mercados financeiros de previsão.


Vigier Alexandre, Chmil Swann (2010), "Um processo de otimização para melhorar dentro / fora da consistência da amostra, um caso do mercado de ações", JP Morgan Cazenove Equity Quantitative Conference, Londres, outubro de 2010.


Apresentando fidlr: FInancial Data LoadeR.


fidlr é um complemento do RStudio projetado para simplificar o processo de download de dados financeiros de vários provedores. Esta versão inicial é um invólucro em torno da função getSymbols no pacote quantmod e apenas o Yahoo, Google, FRED e Oanda são suportados. Provavelmente vou adicionar funcionalidades ao longo do tempo. Como de costume com essas coisas apenas um lembrete amável: & # 8220; O SOFTWARE É FORNECIDO & # 8220; COMO ESTÁ & # 8221 ;, SEM GARANTIA DE QUALQUER TIPO & # 8230; & # 8221;


Como instalar e usar o fidlr?


Você pode obter o addin / pacote de seu repositório Github aqui (Eu vou registrá-lo em CRAN mais tarde) Instale o addin. Existe um excelente tutorial para instalar o RStudio Addins aqui. Uma vez que o addin está instalado, ele deve aparecer no menu Addin. Basta escolher fidlr no menu e uma janela como ilustrada abaixo deve aparecer. Escolha um fornecedor de dados no menu suspenso Origem. Selecione um intervalo de datas no menu Data Digite o símbolo que deseja baixar na caixa de texto do instrumento. Para baixar vários símbolos, basta inserir os símbolos separados por vírgulas. Use os botões de rádio 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 addin.


Mensagens de erro e avisos são tratados pelos pacotes subjacentes (quantmod e Shiny) e podem ser lidos a partir do console.


Esta é uma primeira versão do projeto, então não espere perfeição, mas espero que melhore com o tempo. Informe qualquer comentário, sugestão, erro, etc. & # 8230; para: thertradergmail.


Mantendo um banco de dados de arquivos de preços em R.


Fazer pesquisas quantitativas implica uma grande quantidade de dados crunching e um precisa de dados limpos e confiáveis ​​para conseguir isso. O que é realmente necessário é a limpeza de dados facilmente acessíveis (mesmo sem conexão à internet). A maneira mais eficiente de fazer isso por mim tem sido manter um conjunto de arquivos csv. Obviamente, esse processo pode ser tratado de várias maneiras, mas eu encontrei horas extras muito eficientes e simples para manter um diretório onde eu armazeno e atualize 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 (preço) do Yahoo, Google etc e # 8230; Toda vez que eu quero testar uma nova ideia, mas mais importante, uma vez que eu identifiquei e corrigi um problema, 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 está resumido no quadro abaixo.


Em tudo o que se segue, suponho que os dados sejam provenientes do Yahoo. O código terá que ser alterado para dados do Google, Quandl etc e # 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 freqüência mais alta e outro tipo de conjunto de dados (ou seja, diferente dos preços).


1 & # 8211; Transferência inicial de dados (listOfInstruments. R & amp; historicalData. R)


O arquivo fileOfInstruments. 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 que você precisa baixar o conjunto de dados históricos inicial. O exemplo abaixo baixa um conjunto de preços diários dos ETFs do Yahoo Finance de volta para 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. Costumo executar esse processo todos os dias, exceto quando eu estiver no feriado. Para adicionar um novo instrumento, basta executar o passo 1 acima para este instrumento sozinho.


3 & # 8211; Crie um arquivo em lote (updateDailyPrices. bat)


Outra parte importante do trabalho é criar um arquivo em lote que automatiza o processo de atualização acima (I & # 8217; m um usuário do Windows). Isso evita abrir o R ​​/ RStudio e executar o código a partir daí. O código abaixo é colocado em um arquivo. bat (o caminho deve ser alterado com a configuração do leitor). Observe que eu adicionei um arquivo de saída (updateLog. txt) para rastrear a execução.


O processo acima é extremamente simples porque ele apenas descreve como atualizar os dados de preços diários. Eu já usei isso por um tempo e tem funcionado muito bem para mim até agora. Para dados mais avançados e / ou frequências mais elevadas, as coisas podem ficar muito mais complicadas.


Como de costume, todos os comentários são bem-vindos.


The Rise of the Robots (Advisors & # 8230;)


A indústria de gerenciamento de ativos está à beira de uma grande mudança. Ao longo dos últimos anos, os Robots Advisors (RA) emergiram como novos jogadores. O termo em si é difícil de definir, pois engloba uma grande variedade de serviços. Alguns são projetados para ajudar conselheiros tradicionais a alocar melhor o dinheiro de seus clientes e alguns são reais & # 8220; caixa preta & # 8221 ;. O usuário insere alguns critérios (idade, renda, filhos, etc. & # 8230;) e o robô propõe uma alocação personalizada. Entre esses dois extremos, está disponível uma gama completa de ofertas. Encontrei a definição da Wikipedia muito boa. & # 8220; Eles são uma classe de consultor financeiro que fornece gerenciamento de portfólio on-line com uma intervenção humana mínima & # 8221 ;. Mais precisamente, eles usam gerenciamento de portfólio baseado em algoritmos para oferecer todo o espectro de serviços que um conselheiro tradicional ofereceria: reinvestimento de dividendos, relatórios de conformidade, reequilíbrio de portfólio, colheita de perda de impostos, etc. & # 8230; (Bem, isso é o que a comunidade de investimentos quantitativos está fazendo há décadas!). A indústria ainda está em sua infância, com a maioria dos jogadores ainda gerenciando uma pequena quantidade de dinheiro, mas eu só percebi o quão profunda era a mudança quando eu estava em Nova York há alguns dias. Quando a RA recebe seus nomes na TV adiciona ou no telhado do taxi de Nova York você sabe que algo grande está acontecendo e # 8230;


Está ficando cada vez mais atenção da mídia e, acima de tudo, faz muito sentido da perspectiva do investidor. Na verdade, existem duas vantagens principais na utilização da RA:


Taxas significativamente mais baixas sobre os conselheiros tradicionais O investimento é mais transparente e mais simples, o que é mais atraente para pessoas com conhecimentos financeiros limitados.


Nesta publicação, R é apenas uma desculpa para apresentar bem o que é uma grande tendência no setor de gerenciamento de ativos. O gráfico abaixo mostra as partes de mercado da RA mais popular do final de 2014. O código usado para gerar o gráfico abaixo pode ser encontrado no final desta publicação e os dados estão aqui.


Esses números são um pouco datados, desde a rapidez com que essa indústria evolui, mas ainda é muito informativa. Não é de surpreender que o mercado seja dominado por provedores dos EUA, como Wealthfront e Betterment, mas a RA surge em todo o mundo: Ásia (8Now!), Suíça (InvestGlass), França (Marie Quantier) e # 8230; .. Ele está começando a afetar significativamente da forma como os gestores de ativos tradicionais estão fazendo negócios. Um exemplo proeminente é a parceria entre Fidelity e Betterment. Desde dezembro de 2014, além da marca AUM de US $ 2 bilhões.


Apesar de tudo acima, acho que a verdadeira mudança está à nossa frente. Como eles usam menos intermediários e produtos de baixa comissão (como ETFs) eles cobram taxas muito mais baixas do que os conselheiros tradicionais. A RA certamente ganhará quotas de mercado significativas, mas também reduzirá as taxas cobradas pela indústria como um todo. Em última análise, isso afetará a forma como as empresas de investimento tradicionais fazem negócios. O gerenciamento de portfólio ativo que está tendo um tempo difícil por alguns anos agora sofrerá ainda mais. As taxas elevadas que cobra serão ainda mais difíceis de justificar a menos que se reinvente. Outro impacto potencial é o aumento de ETFs e produtos financeiros de baixa comissão em geral. Obviamente, isso começou há um tempo atrás, mas acho que o efeito será ainda mais pronunciado nos próximos anos. Novas gerações de ETF acompanham índices mais complexos e estratégias customizadas. Essa tendência ficará mais forte inevitavelmente.


Como de costume, todos os comentários são bem-vindos.


R séries de séries de tempo financeiras que todos devem conhecer.


Há muitos tutoriais da série R que flutuam na web, este post não foi projetado para ser um deles. Em vez disso, eu quero apresentar uma lista dos truques mais úteis que encontrei ao lidar com séries temporais financeiras em R. Algumas das funções apresentadas aqui são incrivelmente poderosas, mas infelizmente enterradas na documentação, portanto, meu desejo de criar uma publicação dedicada. Eu só dirijo séries de tempos de frequência diária ou baixa. Lidar com dados de freqüência mais alta requer ferramentas específicas: pacotes de dados ou de alta freqüência são alguns deles.


xts: O pacote xts é o que deve ter quando se trata de séries de tempos em R. O exemplo abaixo carrega o pacote e cria uma série de tempo diária de 400 dias, normalmente retornados distribuídos.


merge. xts (pacote xts): Isso é incrivelmente poderoso quando se trata de vincular duas ou mais vezes as séries, se elas têm o mesmo comprimento ou não. O argumento de junção faz a magia! Ele determina como a ligação é feita.


apply. yearly / apply. monthly (pacote xts): aplique uma função específica para cada período distinto em um determinado objeto de séries temporais. O exemplo abaixo calcula os retornos mensais e anuais da segunda série no objeto tsInter. Observe que eu uso a soma dos retornos (sem composição)


pontos de extremidade (pacote xts): extrair valores de índice de um determinado objeto xts correspondente às últimas observações, dado um período especificado por on. O exemplo dá o último dia do mês retorna para cada série no objeto tsInter usando o ponto final para selecionar a data.


na. locf (pacote zoológico): função genérica para substituir cada NA com o mais recente não-NA antes dele. Extremamente útil ao lidar com uma série de tempo com alguns furos # 8221; e quando esta série de tempo é posteriormente utilizada como entrada para funções R que não aceita argumentos com NAs. No exemplo, crio uma série temporal de preços aleatórios, em seguida, inclui artificialmente alguns NAs e substitui-los pelo valor mais recente.


charts. PerformanceSummary (pacote PerformanceAnalytics): para um conjunto de retornos, crie um gráfico de índice de riqueza, barras para desempenho por período e gráfico subaquático para redução. Isso é incrivelmente útil, pois exibe em uma única janela todas as informações relevantes para uma rápida inspeção visual de uma estratégia de negociação. O exemplo abaixo transforma a série de preços em um objeto xts e, em seguida, exibe uma janela com os 3 gráficos descritos acima.


A lista acima não é de forma alguma exaustiva, mas uma vez que você domina as funções descritas nesta publicação torna a manipulação das séries temporais financeiras muito mais fácil, o código mais curto e a legibilidade do código melhor.


Como de costume, todos os comentários são bem-vindos.


Avaliação do fator na gestão quantitativa da carteira.


Quando se trata de gerenciar um portfólio de ações versus um benchmark, o problema é muito diferente de definir uma estratégia de retorno absoluto. No primeiro, é necessário manter mais ações do que no final, onde nenhum estoque pode ser realizado se não houver uma 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 do benchmark. Menos estoques são mantidos em comparação com um benchmark quanto maior o erro de rastreamento (por exemplo, maior risco).


A análise que se segue é amplamente inspirada no livro # 8220; Gerenciamento de portfólio ativo # 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 interessada no tópico a ler o livro desde o início até o fim. É muito bem escrito e estabelece as bases do gerenciamento sistemático de portfólio ativo (não tenho 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 para a frente. Muitas pessoas criaram muitas ferramentas e inúmeras variantes dessas ferramentas foram desenvolvidas para conseguir isso. Nesta publicação, foco em duas métricas simples e amplamente utilizadas: Coeficiente de Informações (IC) e Quantiles Return (QR).


O IC fornece uma visão geral da capacidade de previsão de fator. Mais precisamente, esta é uma medida de quão bem o fator classifica os estoques em uma base de retorno para a frente. O IC é definido como a correlação de classificação (ρ) entre a métrica (por exemplo, fator) e o retorno direto. Em termos estatísticos, a correlação de classificação é uma medida não paramétrica de 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 a frente deve ser definido pelo analista e é uma função da rotação da estratégia e da decaimento alfa (este tem sido objeto de pesquisa extensiva). Obviamente, os ICs devem ser o mais alto possível em termos absolutos.


Para o leitor afiado, no livro de Grinold & amp; Kahn é dada uma fórmula que liga Relação de informação (IR) e IC: com a amplitude sendo o número de apostas independentes (trades). Esta fórmula é conhecida como a lei fundamental do gerenciamento ativo. O problema é que muitas vezes, definir a amplitude com precisão não é tão fácil quanto parece.


Para ter uma estimativa mais precisa do poder preditivo do fator, é necessário avançar um pouco e agrupar os estoques por quantile de fatores de fator, em seguida, analise o retorno direto médio (ou qualquer outra métrica de tendência central) de cada um desses quantiles. A utilidade desta ferramenta é direta. 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 do universo inteiro para atender a sua restrição de erro de rastreamento. O bom retorno dos quantiles é caracterizado por uma relação monótona entre os quantiles individuais e os retornos diretos.


Todas as ações no índice S & P500 (no momento da redação). Obviamente, há um viés de navio de sobrevivência: a lista de ações no índice mudou significativamente entre o início e o final do período de amostragem, porém é bom o suficiente para fins de ilustração apenas.


O código abaixo baixa os preços das ações individuais no S & 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 a medida de retorno direto.


Abaixo está o código para calcular Coeficiente de Informações e Quantiles Return. Note-se que usei quintios neste exemplo, mas qualquer outro método de agrupamento (terciles, deciles, etc. & # 8230;) pode ser usado. Depende realmente do tamanho da amostra, do que você deseja capturar e da sua vontade de ter uma visão ampla ou foco nas caudas de distribuição. Para estimar os retornos dentro de cada quintil, a mediana foi utilizada como estimador de tendência central. Esta medida é muito menos sensível a valores aberrantes 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 Q1 é mais baixo após 12 meses de retorno e Q5 mais alto. Existe um aumento quase monotônico no retorno de quantiles entre Q1 e Q5, o que indica claramente que os estoques que caíram em Q5 superam aqueles que caíram em Q1 em cerca de 1% por mês. Isso é muito significativo e poderoso para um fator tão simples (não é realmente uma surpresa e # 8230;). Portanto, há maiores chances de vencer o índice por sobreponderar os estoques caindo no Q5 e subponderar aqueles que caem no Q1 em relação ao benchmark.


Um IC de 0,0206 pode não significar um ótimo negócio em si, mas é significativamente diferente de 0 e indica um bom poder preditivo dos últimos 12 meses em geral. Os 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 do fator de investimento, porém existem várias limitações práticas que devem ser abordadas para a implementação da vida real:


Reequilíbrio: na descrição acima, considerou que, no final de cada mês, o portfólio é totalmente reequilibrado. Isso significa que todas as ações que caem no primeiro trimestre estão abaixo do peso e todas as ações que caem no Q5 estão com sobrepeso em relação ao benchmark. Isso nem sempre é possível por razões práticas: alguns estoques podem ser excluídos do universo de investimento, existem restrições ao peso da indústria ou do setor, existem restrições sobre o roteamento etc & # 8230; Custos de transação: isso não foi levado em consideração na análise acima e isso é um travão grave para a implementação da vida real. As considerações sobre o volume de negócios geralmente são implementadas na vida real sob uma forma de penalidade na qualidade dos fatores. Coeficiente de transferência: esta é uma extensão da lei fundamental da gestão ativa e relaxa a suposição do modelo de Grinold & # 8217; que os gerentes não enfrentam restrições que impedem que eles traduzam seus insights de investimentos diretamente em apostas de portfólio.


E, finalmente, estou impressionado com o que pode ser alcançado em menos de 80 linhas de código com R & # 8230;


Como de costume, todos os comentários são bem-vindos.


Risco como uma Variação de Sobrevivência & # 8220; # 8221;


Eu me deparo com muitas estratégias na blogosfera, algumas são interessantes, algumas são um completo desperdício de tempo, mas a maioria compartilha uma característica comum: as pessoas que desenvolvem essas estratégias fazem seu dever de casa em termos de análise do retorno, mas muito menos atenção é paga ao lado do risco é natureza aleatória. Eu observei um comentário como # 8220; uma redução de 25% em 2011, mas excelente retorno geral & # 8221 ;. Bem, minha aposta é que ninguém na terra vai deixar você experimentar uma perda de 25% com seu dinheiro (a menos que acordos especiais estejam em vigor). No fundo hedge, as pessoas do mundo têm uma tolerância muito baixa para redução. Geralmente, como um novo comerciante em um hedge fund, assumindo que você não possui reputação, você tem muito pouco tempo para provar a si mesmo. Você deve ganhar dinheiro a partir do dia 1 e continuar fazendo isso por alguns meses antes de ganhar um pouco de credibilidade.


Diga primeiro que você tenha um mau começo e você perca dinheiro no início. Com uma redução de 10%, você certamente estará fora, mas mesmo com uma redução de 5%, as chances de ver sua alocação reduzida são muito altas. Isso tem implicações significativas em suas estratégias. Deixe assumir que, se você perder 5%, sua alocação é dividida por 2 e você retorna à sua alocação inicial somente quando você passou a marca de água alta novamente (por exemplo, a retirada volta para 0). No gráfico abaixo, simulei a experiência com uma das minhas estratégias.


Você começa a operar em 1º de junho de 2003 e tudo corre bem até 23 de julho de 2003, onde sua curva de retirada atinge o limite de -5% (** 1 **). Sua alocação é reduzida em 50% e você não recupera o nível da marca de água até o 05 de dezembro de 2003 (** 3 **). Se você manteve a alocação inalterada, o nível da marca de água alta teria sido cruzado em 28 de outubro de 2003 (** 2 **) e, no final do ano, você teria feito mais dinheiro.


Mas vamos empurrar o raciocínio um pouco mais. Ainda no gráfico acima, suponha que você tenha realmente uma azarada e você começa a operar até meados de junho de 2003. Você atingiu o limite de retirada de 10% no início de agosto e você provavelmente estará fora do jogo. Você teria começado no início de agosto sua alocação não teria sido cortada e você acabou fazendo um bom ano em apenas 4 meses completos de negociação. Nesses dois exemplos, nada mudou, mas sua data de início e # 8230 ;.


O sucesso comercial de qualquer indivíduo tem alguma forma de dependência do caminho e não há muito que você possa fazer sobre isso. No entanto, você pode controlar o tamanho da retirada de uma estratégia e isso deve ser abordado com muito cuidado. Um portfólio deve ser diversificado em todas as dimensões possíveis: classes de ativos, estratégias de investimento, freqüências de negociação, etc. & # 8230 ;. A partir dessa perspectiva, o risco é a sua variável de sobrevivência # 8221 ;. Se for gerenciado adequadamente, você tem a chance de permanecer no jogo o suficiente para perceber o potencial de sua estratégia. Caso contrário, você ganhou o mês que vem para ver o que acontece.


Estratégias de negociação algorítmica, paradigmas e idéias de modelagem.


"Os olhares podem enganar", disse uma pessoa sábia. A frase é válida para estratégias de negociação algorítmica. O termo estratégias de negociação algorítmica pode parecer muito sofisticado ou muito complicado. No entanto, o conceito é muito simples de entender, uma vez que o básico é claro. Neste artigo, vou contar-lhe sobre estratégias de negociação algorítmica com alguns exemplos interessantes.


Se você olhar para o exterior, um algoritmo é apenas um conjunto de instruções ou regras. Esses conjuntos de regras são então utilizados em uma bolsa de valores para automatizar a execução de pedidos sem intervenção humana. Esse conceito é chamado de Algorithmic Trading.


Deixe-me começar com uma estratégia de negociação muito simples. Aqueles que já estão em negociação saberiam sobre S. M.A e para aqueles que não; S. M.A é uma média móvel simples. S. M.A pode ser calculado usando qualquer número de dias predefinido e fixo. Uma estratégia de negociação algorítmica baseada em S. M.A pode ser simplificada nestas quatro etapas simples:


Calcular 5 dias SMA Calcular 20 dias SMA Tome uma posição longa quando o SMA de 5 dias é maior ou igual a SMA de 20 dias. Tome uma posição curta quando o SMA de 5 dias é menor do que SMA de 20 dias.


Referimo-nos a esta estratégia de negociação algorítmica como Estratégia de Crossover de Mudança Média. Este foi apenas um exemplo simples. Agora, não consiga pensar que tudo vai ser uma cama de rosas. Mesmo que fosse, então esteja preparado para os espinhos. No comércio diário, algoritmos de negociação muito mais complexos são usados ​​para gerar estratégias de negociação algorítmicas.


Todas as estratégias de negociação algorítmicas que estão sendo usadas hoje podem ser classificadas de forma ampla nas seguintes categorias:


Momentum / Tendência Seguindo Arbitragem Arbitragem Estatística Market Making.


Deixe-me entrar em algum detalhe.


Estratégias baseadas em Momentum.


Supondo que haja uma tendência particular no mercado. Como um comerciante algo, você está seguindo essa tendência. Além de nossa suposição, os mercados estão dentro da semana. Agora, você pode usar estatísticas para determinar se essa tendência vai continuar. Ou se vai mudar nas próximas semanas. Conseqüentemente, você fará seu próximo passo. Você baseou sua estratégia de negociação algorítmica nas tendências de mercado que você determinou usando estatísticas.


Esse método de seguir as tendências é chamado de estratégia baseada em Momentum.


Existem inúmeras maneiras de implementar esta estratégia de negociação algorítmica e discuti isso detalhadamente em um dos nossos artigos anteriores, intitulado "Metodologia de Quantificação de Notícias para Negociação Automatizada"


Se assumirmos que uma farmácia deve ser comprada por outra empresa, então o preço das ações da nossa empresa poderia subir. Isso é desencadeado pela aquisição, que é um evento corporativo. Se você planeja investir com base nas ineficiências de preços que podem acontecer durante um evento corporativo (antes ou depois), você está usando uma estratégia baseada em eventos. Falência, aquisição, fusão, spin-off etc. pode ser o evento que impulsiona esse tipo de estratégia de investimento.


Essas estratégias podem ser neutras no mercado e usadas amplamente pelos hedge funds e proprietários.


Arbitragem estatística.


Quando uma oportunidade de arbitragem surgir por causa do misquoting nos preços, pode ser muito vantajosa para a estratégia de negociação algo. Embora tais oportunidades existam por um período muito curto, pois os preços no mercado são ajustados rapidamente. E é por isso que este é o melhor uso de estratégias de negociação algorítmicas, uma vez que uma máquina automatizada pode acompanhar essas mudanças instantaneamente.


Por exemplo, se o preço da Apple cai abaixo de US $ 1, a Microsoft cairá em US $ 0,5, mas a Microsoft não caiu, então você irá vender a Microsoft para obter lucro. Você pode ler sobre os equívocos comuns que as pessoas têm sobre Arbitragem Estatística aqui.


Making Market.


Para entender o mercado, deixe-me falar sobre os Market Makers.


De acordo com a Wikipedia:


Um fabricante de mercado ou um provedor de liquidez é uma empresa ou um indivíduo que cita tanto um preço de compra quanto um preço de venda em um instrumento financeiro ou mercadoria mantido em inventário, na esperança de obter lucros no spread de oferta, ou virar.


A criação de mercado proporciona liquidez a valores mobiliários que não são comercializados com freqüência na bolsa de valores. O fabricante de mercado pode aumentar a equação da oferta e oferta de valores mobiliários. Deixe-me lhe dar um exemplo:


Vamos assumir que você tem Martin, um fabricante de mercado, que compra para Rs. 500 do mercado e vendê-lo em 505. Ele lhe dará uma cotação de ofertas de Rs. 505-500. O lucro de Rs. 5 não podem ser vendidos ou trocados por dinheiro sem perda substancial de valor. Quando Martin assume um risco maior, então o lucro também é maior.


Eu encontrei o livro de Michael Lewis 'Flash Boys' no Indian Bull Market bastante interessante e fala sobre liquidez, mercado e HFT em grande detalhe. Verifique isso depois de terminar de ler este artigo.


Uma vez que você precisará ser analítico e quantitativo ao entrar ou atualizar para negociação algorítmica é imprescindível aprender programação (alguns, se não todos) e criar sistemas infalíveis e executar a estratégia de negociação algorítmica correta. Ler este artigo sobre Automated Trading with Interactive Brokers usando Python será muito benéfico para você. Você pode ler o artigo aqui.


Paradigmas & amp; Idéias de modelagem.


Agora que eu o introduzi em estratégias de negociação algorítmicas, vou lançar luz sobre os paradigmas de estratégia e as idéias de modelagem pertencentes a cada estratégia.


Market Making Arbitrage Estatístico Momentum Machine Learning Based.


Making Market.


Como eu mencionei anteriormente, o principal objetivo do mercado é infundir liquidez em valores mobiliários que não são negociados em bolsas de valores. Para medir a liquidez, levamos em consideração o spread e os volumes de negociação entre licitações.


Os algoritmos de negociação tendem a lucrar com o spread bid-ask. Eu vou me referir ao nosso amigo, Martin, novamente nesta seção. Martin é um fabricante de mercado é um provedor de liquidez que pode citar tanto em comprar e vender lado em um instrumento financeiro com a esperança de lucrar com o spread oferta-oferta. Martin aceita o risco de segurar os valores mobiliários para os quais ele citou o preço e, uma vez que o pedido é recebido, ele normalmente venderá imediatamente de seu próprio inventário. Ele pode procurar uma oferta de compensação em segundos e vice-versa.


Quando se trata de títulos ilíquidos, os spreads são geralmente mais altos e também os lucros. Martin assumirá um risco maior neste caso. Vários segmentos no mercado carecem de interesse do investidor por falta de liquidez, pois não conseguem obter saída de vários estoques de pequena e média capital em qualquer momento.


Fabricantes de mercado como Martin são úteis porque estão sempre prontos para comprar e vender ao preço indicado. Na verdade, grande parte do comércio de alta freqüência (HFT) é a comercialização passiva de mercado. As estratégias estão presentes em ambos os lados do mercado (muitas vezes simultaneamente) competindo entre si para fornecer liquidez para aqueles que precisam.


Então, quando esta estratégia é mais lucrativa?


Esta estratégia é rentável desde que o modelo preveja com precisão as futuras variações de preços.


Modelando idéias com base neste Paradigma.


O spread e o volume comercial de oferta e solicitação podem ser modelados juntos para obter a curva de custo de liquidez que é a taxa paga pelo comprador de liquidez. Se o comprador de liquidez apenas executa ordens na melhor oferta e peça, a taxa será igual à oferta solicita espalhar o volume. Quando os comerciantes vão além da melhor oferta e pedem mais volume, a taxa também se torna uma função do volume.


O volume comercial é difícil de modelar, pois depende da estratégia de execução dos compradores de liquidez. O objetivo deve ser encontrar um modelo para volumes comerciais consistente com a dinâmica dos preços. Os modelos de fabricação de mercado geralmente são baseados em um dos dois:


O primeiro centra-se no risco de inventário. O modelo baseia-se na posição de estoque preferencial e nos preços com base no apetite de risco. O segundo é baseado em seleção adversa que distingue entre comércio informado e ruído. Os negócios de ruído não possuem qualquer visão no mercado, enquanto os negócios informados fazem. Quando a visão do comprador de liquidez é de curto prazo, seu objetivo é fazer lucro a curto prazo utilizando a vantagem estatística. No caso da visão de longo prazo, o objetivo é minimizar o custo da transação. As estratégias de longo prazo e as restrições de liquidez podem ser modeladas como ruído em torno das estratégias de execução de curto prazo.


Para saber mais sobre Market Makers, você pode conferir este interessante artigo sobre o blog da QuantInsti.


Arbitragem estatística.


Se Market Making é a estratégia que faz uso do spread bid-ask, a Statistical Arbitrage procura lucrar com o mispricing estatístico de um ou mais ativos com base no valor esperado desses ativos.


Uma maneira mais acadêmica de explicar a arbitragem estatística é espalhar o risco entre mil e milhões de negócios em um tempo de espera muito curto, esperando obter lucro com a lei de grandes números. Algoritmos de Arbitragem Estatística são baseados na hipótese de reversão média, principalmente como um par.


Pairs trading é uma das várias estratégias coletivamente referidas como Estatística Arbitrage Strategies. A estratégia de comércio em pares, os estoques que exibem co-movimentação histórica nos preços são emparelhados usando semelhanças fundamentais ou baseadas no mercado. A estratégia baseia-se na noção de que os preços relativos de um mercado estão em equilíbrio e que os desvios desse equilíbrio eventualmente serão corrigidos.


Quando um estoque supera o outro, o outperformer é vendido em curto e o outro estoque é comprado com a expectativa de que o desvio de curto prazo acabará em convergência. Isso muitas vezes protege o risco de mercado de movimentos de mercado adversos, ou seja, torna a estratégia beta neutra. No entanto, o risco total de mercado de uma posição depende do valor do capital investido em cada ação e da sensibilidade das ações a esse risco.


As Estratégias Momentum procuram lucrar com a continuação da tendência existente, aproveitando as mudanças no mercado.


"Em palavras simples, compre alto e venda mais alto e vice-versa".


E como conseguimos isso?


Nesta estratégia particular de negociação, tomaremos posições de curto prazo em ações que estão indo para cima ou para baixo até que eles apresentem sinais de reversão. É contra-intuitivo para quase todas as outras estratégias bem conhecidas. O investimento em valor geralmente é baseado em reversão de longo prazo, enquanto o investimento em impulso é baseado na diferença no tempo antes da reversão média ocorrer.


Momentum está perseguindo o desempenho, mas de forma sistemática aproveitando outros caçadores de desempenho que estão tomando decisões emocionais. Geralmente, há duas explicações dadas para qualquer estratégia que tenha provado funcionar historicamente, ou a estratégia é compensada pelo risco extra que leva ou há fatores comportamentais devido ao qual existe.


Há uma longa lista de preconceitos comportamentais e erros emocionais que os investidores exibem devido a qual impulso funciona. No entanto, isso é mais fácil de dizer do que feito, pois as tendências não duram para sempre e podem exibir reversões rápidas quando atingem o pico e chegam ao fim. O Momentum Trading tem maior grau de volatilidade do que a maioria das outras estratégias e tenta capitalizar a volatilidade do mercado. É importante o tempo de compra e venda corretamente para evitar perdas usando técnicas adequadas de gerenciamento de risco e perdas. O investimento de impulso requer um monitoramento adequado e uma diversificação apropriada para proteger contra choque grave.


Em primeiro lugar, você deve saber como detectar o impulso do preço ou as tendências. Como você já está em negociação, você sabe que as tendências podem ser detectadas por ações e ETFs constantes que continuaram por dias, semanas ou até vários meses seguidos. Por exemplo, identifique a negociação de ações dentro de 10% de suas 52 semanas de alta ou veja a variação de preço percentual nas últimas 12 ou 24 semanas. Da mesma forma que detectar uma tendência mais curta, inclua uma mudança de preço de curto prazo.


Se você se lembrar, em 2008, o setor de petróleo e energia foi continuamente classificado como um dos principais setores, mesmo quando estava em colapso. Podemos também procurar ganhos para entender os movimentos nos preços das ações. As estratégias baseadas em retornos passados ​​("estratégias de impulso de preços") ou na surpresa de lucros (conhecidas como "estratégias de impulso de ganhos") exploram a sub-reação do mercado a diferentes itens de informação. Uma estratégia de impulso de lucros pode lucrar com a sub-reação à informação relacionada aos ganhos de curto prazo. Da mesma forma, uma estratégia de impulso de preços pode se beneficiar da resposta lenta do mercado a um conjunto mais amplo de informações, incluindo rentabilidade a longo prazo.


Aprendizado de máquinas baseado.


Na negociação baseada em Aprendizado de Máquinas, os algoritmos são usados ​​para prever o alcance de movimentos de preços de curto prazo em um determinado intervalo de confiança. A vantagem do uso da Inteligência Artificial (IA) é que os humanos desenvolvem o software inicial e o próprio AI desenvolve o modelo e o melhora ao longo do tempo. Um grande número de fundos conta com modelos de computador construídos por cientistas de dados e quads, mas geralmente são estáticos, ou seja, não mudam com o mercado. Os modelos baseados em ML, por outro lado, podem analisar grandes quantidades de dados em alta velocidade e melhorar-se através dessa análise.


Uma forma de inclinação de máquina chamada "redes bayesianas" pode ser usada para prever as tendências do mercado ao utilizar algumas máquinas. Uma AI que inclui técnicas como a computação evolutiva (que é inspirada pela genética) e a aprendizagem profunda podem ser executadas em centenas ou mesmo em milhares de máquinas. Pode criar uma coleção grande e aleatória de comerciantes de ações digitais e testar seu desempenho em dados históricos. Em seguida, escolhe os melhores artistas e usa seu estilo / padrões para criar um novo comerciante evoluído. Este processo se repete várias vezes e um comerciante digital que pode operar completamente por conta própria é criado.


Este processo se repete várias vezes e um comerciante digital que pode operar completamente por conta própria é criado.


Estes foram alguns paradigmas de estratégia importantes e idéias de modelagem. Em seguida, passaremos pelo procedimento passo a passo para construir uma estratégia de negociação.


Você pode aprender esses Paradigmas com grande detalhe no Programa Executivo da QuantInsti em Negociação Algorítica (EPAT), um dos mais extensos cursos de negociação algorítmica disponíveis on-line com gravações de conferências e acesso e suporte de vida.


Construindo uma estratégia de negociação algorítmica.


Das estratégias de troca de ideias para paradigmas e idéias de modelagem, eu venho a essa seção do artigo onde eu direi como construir uma estratégia básica de negociação algorítmica.


Como você começa com a implementação de estratégias de troca de algo?


Essa é a primeira questão que deve ter vindo à sua mente, eu presumo. O objetivo é que você já começou conhecendo os conceitos básicos e paradigmas das estratégias de negociação algorítmica ao ler este artigo. Agora, que o nosso motor de trator tenha o motor ligado, é hora de pressionar o acelerador.


E como exatamente isso é feito?


Vou explicar como uma estratégia de negociação algorítmica é construída, passo a passo. A descrição concisa lhe dará uma idéia sobre todo o processo.


O primeiro passo é decidir o paradigma da estratégia. Pode ser uma estratégia baseada no Arq. Baseada em Arbitragem, Alfa, Hedge ou Execução. Para esta instância particular, vou escolher o comércio de pares, que é uma estratégia de arbitragem estatística que é neutra no mercado (Beta neutro) e gera alfa, ou seja, faz dinheiro independentemente do movimento do mercado.


Você pode decidir sobre os valores reais que deseja negociar com base na visão do mercado ou através de correlação visual (no caso de estratégia de negociação de par). Estabeleça se a estratégia é estatisticamente significativa para os títulos selecionados. Por exemplo, no caso de troca de pares, verifique se há co-integração dos pares selecionados.


Agora, codifique a lógica com base na qual você deseja gerar sinais de compra / venda em sua estratégia. Para verificação de troca de pares para "reversão média"; calcule o z-score para a propagação do par e gere sinais de compra / venda quando você espera que ele retorne a significar. Decida sobre as condições de "Stop Loss" e "Taking Prat".


Stop Loss & # 8211; Um pedido de stop-loss limita a perda de um investidor em uma posição em uma garantia. Ele dispara uma ordem para diminuir a posição longa ou curta existente para evitar novas perdas e ajuda a tirar a emoção das decisões comerciais. Take Profit & # 8211; As ordens de lucro obtidas são usadas para fechar automaticamente as posições existentes, a fim de bloquear os lucros quando há um movimento em uma direção favorável. Estratégia de cotação ou batendo.


É muito importante decidir se a estratégia será "citando" ou "bater". A estratégia de execução em grande medida determina o quão agressiva ou passiva sua estratégia será.


Citando & # 8211; Na negociação em partes, você cita para uma segurança e, dependendo se essa posição for preenchida ou não, você envia o pedido para a outra. Nesse caso, a probabilidade de obter um preenchimento é menor, mas você salva o pedido de oferta de um lado. Hitting - Neste caso, você envia ordens de mercado simultâneas para ambos os títulos. A probabilidade de obter um preenchimento é maior, mas ao mesmo tempo a derrapagem é mais e você paga lance-perguntar em ambos os lados.


A escolha entre a probabilidade de preenchimento e a execução otimizada em termos de deslizamento e executivo temporizado é o que isto é se eu tiver que colocar assim. Se você optar por citar, então você precisa decidir o que está citando, é assim que funciona a negociação par. Se você decidir cotizar para a segurança menos líquida, o deslizamento será menor, mas os volumes de negociação diminuirão os títulos líquidos, por outro lado, aumentará o risco de queda, mas os volumes de negociação serão elevados.


O uso de estatísticas para verificar a causalidade é outra maneira de chegar a uma decisão, ou seja, mudança em que a segurança causa mudanças no outro e qual conduz. O teste de causalidade determinará o par de "lead-lag"; citar para liderar e cobrir a segurança atrasada.


Como você decide se a estratégia que você escolheu foi boa ou ruim?


Como você julga sua hipótese?


É aqui que o teste de volta da estratégia vem como uma ferramenta essencial para estimar o desempenho da hipótese projetada com base em dados históricos. Uma estratégia pode ser considerada boa se os resultados do backtest e as estatísticas de desempenho respaldarem a hipótese.


Portanto, é importante escolher dados históricos com um número suficiente de pontos de dados. Isto é para criar um número suficiente de trades de amostra (pelo menos mais de 100 trades) cobrindo vários cenários de mercado (bullish, bearish etc). Certifique-se de que você também preveja custos de corretagem e deslizamento. Isso irá obter resultados mais realistas, mas você ainda pode ter que fazer algumas aproximações durante o teste. Por exemplo, enquanto as estratégias de cotação são difíceis de descobrir quando você recebe um preenchimento. Assim, a prática comum é assumir que as posições são preenchidas com o último preço negociado.


Para que tipo de ferramentas você deveria procurar, enquanto faz um teste?


Uma vez que o backtesting para estratégias de negociação algorítmica envolve uma enorme quantidade de dados, especialmente se você estiver usando os dados tick by tick. Então, você deve procurar ferramentas que possam lidar com essa enorme carga de dados.


R ou MATLAB?


R é excelente para lidar com enormes quantidades de dados e também possui um alto poder de computação. Assim, tornando-se uma das melhores ferramentas para backtesting. Além disso, R é de código aberto e livre de custos. Podemos usar o MATLAB também, mas vem com um custo de licenciamento.


Tudo bem, acabei de tirar a famosa citação de Ben Parker do filme Spiderman (não o Amazing). Mas confie em mim, é 100% verdadeiro. Não importa o quão confiante que você pareça com a sua estratégia ou com o sucesso que pode acontecer anteriormente, você deve ir para baixo e avaliar cada detalhe em detalhes. Existem vários parâmetros que você precisaria monitorar ao analisar o desempenho e o risco de uma estratégia. Algumas métricas / relações importantes são mencionadas abaixo:


Retorno total (CAGR) - Taxa de crescimento anual composta (CAGR). É a taxa de crescimento anual média de um investimento durante um período de tempo específico superior a um ano. Relação Ratio - Ordem para o comércio. Lucro médio por comércio - Lucro total dividido pelo número total de negócios Perda média por troca - Perda total dividida pelo número total de negociações Drawdown máximo & # 8211; Perda máxima em qualquer comércio Volatilidade dos Retornos - Desvio padrão dos "retornos" Sharpe Ratio - Retornos ajustados ao risco, ou seja, rendimentos em excesso (taxa de risco livre) por unidade de volatilidade ou risco total.


Todo o processo de estratégias de negociação algorítmica não termina aqui. O que forneci neste artigo é apenas o pé de um Everest infinito. Para conquistar isso, você deve estar equipado com o conhecimento certo e orientado pelo guia certo. É lá que entra a QuantInsti, para guiá-lo através desta jornada. QuantInsti irá ajudá-lo a conquistar o Everest no final. Se você quiser saber mais sobre estratégias de negociação algorítmica, então você pode clicar aqui.

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

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