Thursday 22 February 2018

Sistema de comércio github


Sistema de comércio github
Pegue os pedidos 1.
Participe do GitHub hoje.
O GitHub é o lar de mais de 20 milhões de desenvolvedores que trabalham juntos para hospedar e rever o código, gerenciar projetos e criar software juntos.
Clone com HTTPS.
Use o Git ou o check-out com o SVN usando o URL da web.
&cópia de; 2017 GitHub, Inc. Termos Privacidade Segurança Status Ajuda.
Você não pode executar essa ação neste momento.
Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.

Sistema de comércio github
Solicitações de envio 11.
Participe do GitHub hoje.
O GitHub é o lar de mais de 20 milhões de desenvolvedores que trabalham juntos para hospedar e rever o código, gerenciar projetos e criar software juntos.
Clone com HTTPS.
Use o Git ou o check-out com o SVN usando o URL da web.
Temos o prazer de anunciar que a equipe de desenvolvimento de software QuantStart está atualmente no processo de uma redefinição completa do QSTrader.
A nova versão será uma simulação de negociação quantitativa de ponta a ponta e mecanismo de negociação ao vivo, em vez da versão atual, que se limita ao backtesting dirigido a eventos.
Registaram-se progressos significativos ao longo dos últimos meses. Algum deste desenvolvimento foi disponibilizado no ramo de desenvolvimento, que pode ser encontrado aqui.
O código permanecerá licenciado pelo MIT e todas as versões públicas exigirão cobertura de código de 100%.
Se você deseja ler mais sobre os desenvolvimentos propostos, consulte o artigo recente publicado no QuantStart.
QSTrader é uma plataforma de backtesting dirigida a eventos de código aberto para uso nos mercados de ações, atualmente em um estado alfa.
Foi criado como parte da série de artigos da Infraestrutura de Negociação Avançada no QuantStart para fornecer à comunidade comercial sistemática um motor de negociação robusto que permite a implementação e teste de estratégia de ações diretas.
O software é fornecido sob uma licença permissiva "MIT" (veja abaixo).
Open-Source - O QSTrader foi lançado sob uma Licença MIT de código aberto extremamente permissiva, que permite o uso total em aplicações comerciais e comerciais, sem restrições, mas sem qualquer garantia de qualquer tipo. Assim, você pode usá-lo em casa para realizar negociação no varejo ou dentro de um fundo quant como base para seu sistema de gerenciamento de pesquisa e / ou pedido.
Grátis - QSTrader é completamente gratuito e não custa nada para baixar ou usar.
Colaboração - Como o QSTrader é de código aberto, muitos desenvolvedores colaboram para melhorar o software. Novos recursos são adicionados com freqüência. Todos os erros são rapidamente determinados e corrigidos.
Desenvolvimento de Software - O QSTrader está escrito na linguagem de programação Python para suporte direto à plataforma cruzada. QSTrader contém um conjunto de testes de unidade para a maioria do seu código de cálculo e os testes são constantemente adicionados para novos recursos.
Arquitetura orientada a eventos - O QSTrader é completamente conduzido por eventos, o que leva a uma transição direta de estratégias de uma fase de pesquisa para uma implementação de negociação ao vivo.
Backtesting - QSTrader suporta os conjuntos de dados intraday tick-resolution (top of order book bid / ask), bem como dados de resolução "barra" OHLCV em várias escalas de tempo.
Componentes Privados - QSTrader permite que você inclua um repositório de suas próprias estratégias ou componentes particulares. Basta fazer o check-out do seu próprio repositório dentro da raiz do QSTrader e renomear o diretório para private_files. Isso garantirá que o repositório QSTrader possa ser facilmente atualizado sem interferir com seu repositório privado.
Métricas de desempenho - O QSTrader suporta medições de nível de nível de portfólio e de nível de comércio. Ele fornece uma "folha de lágrima" abrangente (veja abaixo) com estatísticas de estratégia associadas.
Custos de transação - As comissões atualmente são suportadas usando taxas padrão da Interactive Brokers para ações norte-americanas. O impacto do impacto e do mercado está planejado, mas atualmente não é suportado.
Trading - O QSTrader suportará a negociação intradiária em tempo real usando o Python API Interactive Brokers, inicialmente para ações norte-americanas.
O QSTrader está em um estado alfa inicial no momento. Ele só deve ser usado para pesquisas exploratórias de backtesting. O procedimento de instalação é um pouco mais envolvido do que um pacote Python padrão, pois ainda não foi adicionado ao repositório de pacotes Python.
O Ubuntu Linux é a plataforma recomendada para instalar o QSTrader, mas também funcionará no Windows ou Mac OSX sob a distribuição Anaconda (continuum. io/downloads).
Para aqueles que desejam criar seu próprio ambiente virtual Python, as seguintes etapas são necessárias para executar uma estratégia básica de compra e retenção, bem como uma estratégia de tendência de tendência de mudança média média um pouco mais complexa.
Um exemplo de diretório de ambiente virtual.
/ venv / qstraderp3 foi usado aqui. Se você deseja alterar esse diretório, renomeie-o nas seguintes etapas.
As etapas a seguir criarão um diretório de ambiente virtual com o Python 3 e depois ativarão o ambiente:
Neste ponto, é necessário usar pip para instalar QSTrader como uma biblioteca e, em seguida, instalar manualmente os requisitos. As seguintes etapas levam algum tempo (5-10 minutos), pois o QSTrader depende de NumPy, SciPy, Pandas, Matplotlib e muitas outras bibliotecas e, portanto, todos precisarão compilar:
Agora que a própria biblioteca e os requisitos foram instalados, é necessário criar os diretórios padrão para os dados e a saída. Além disso, é possível baixar os dados necessários e o código de exemplo para executar um backtest simples de uma estratégia de compra e retenção no índice de retorno total S & P500:
Finalmente, podemos executar o backtest em si:
Uma vez concluído, você verá uma "folha de lágrimas" completa, incluindo:
Curva de capital Curva de retirada Mapas de retorno mensais Distribuição de retorno anual Estatísticas de nível de carteira Estatísticas de nível de comércio.
A lágrima parecerá semelhante a:
Você pode explorar o arquivo buy_and_hold_backtest. py para examinar a API do QSTrader. Você verá que é relativamente fácil configurar uma estratégia simples e executá-la.
Para regras de compra e venda um pouco mais complexas, é possível considerar uma estratégia de Crossover de média móvel.
A estratégia a seguir cria duas médias simples com respectivos períodos de lookback de 100 e 300 dias. Quando o SMA de 100 períodos excede os compartilhamentos SMA 100 de 300 períodos da AAPL são desejados. Quando o SMA de 300 períodos excede o SMA de 100 períodos, a posição é fechada. Para obter os dados dessa estratégia e executá-la, execute o seguinte código:
O backtest pode ser executado com o seguinte comando:
Uma vez concluída uma folha de lágrima completa será apresentada, desta vez com uma referência:
Outras estratégias de exemplo podem ser encontradas no diretório de exemplos. Cada exemplo é autônomo em um arquivo **** _ backtest. py, que pode ser usado como modelos para suas próprias estratégias.
O projeto está constantemente sendo desenvolvido, portanto, infelizmente, é provável que a API atual tenha incompatibilidade inversa até que uma versão beta madura tenha sido produzida.
Se você tiver alguma dúvida sobre a instalação, por favor, sinta-se à vontade para suportar o quarto.
Se você notar quaisquer erros ou outros problemas que você acha que podem ser devido especificamente à base de código, sinta-se à vontade para abrir um problema Github aqui: github / mhallsmoore / qstrader / issues.
Copyright (c) 2015-2017 QuantStart, QuarkGluon Ltd.
A permissão é concedida, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para lidar com o Software sem restrições, incluindo, sem limitação, os direitos de uso, cópia, modificação, mesclagem , publicar, distribuir, sublicenciar e / ou vender cópias do Software e permitir que pessoas a quem o Software seja fornecido, sujeito às seguintes condições:
O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou porções substanciais do Software.
O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRAM", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, APTIDÃO PARA UM PROPÓSITO ESPECÍFICO E NÃO INFRACÇÃO. EM NENHUMA CIRCUNSTÂNCIA, OS AUTORES OU TITULARES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM AÇÃO DE CONTRATO, DELITO OU DE OUTRA FORMA, DECORRENDO, DESTE OU RELACIONADO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NA PROGRAMAS.
As ações de negociação em margem representam um alto nível de risco e podem não ser adequadas para todos os investidores. O desempenho passado não é indicativo de resultados futuros. O alto grau de alavancagem pode funcionar contra você, bem como para você. Antes de decidir investir em ações, você deve considerar cuidadosamente seus objetivos de investimento, nível de experiência e apetite de risco. Existe a possibilidade de que você possa sustentar uma perda de algum ou todo seu investimento inicial e, portanto, você não deve investir dinheiro que não pode perder. Você deve estar ciente de todos os riscos associados à negociação de ações e procurar o aconselhamento de um consultor financeiro independente se tiver dúvidas.
&cópia de; 2017 GitHub, Inc. Termos Privacidade Segurança Status Ajuda.
Você não pode executar essa ação neste momento.
Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.

Sistema de comércio github
Puxe pedidos 0.
Participe do GitHub hoje.
O GitHub é o lar de mais de 20 milhões de desenvolvedores que trabalham juntos para hospedar e rever o código, gerenciar projetos e criar software juntos.
Clone com HTTPS.
Use o Git ou o check-out com o SVN usando o URL da web.
&cópia de; 2017 GitHub, Inc. Termos Privacidade Segurança Status Ajuda.
Você não pode executar essa ação neste momento.
Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.

Sistema de comércio github
Recomendamos atualizar para o mais recente Safari, Google Chrome ou Firefox.
Puxe pedidos 0.
Participe do GitHub hoje.
O GitHub é o lar de mais de 20 milhões de desenvolvedores que trabalham juntos para hospedar e rever o código, gerenciar projetos e criar software juntos.
Clone com HTTPS.
Use o Git ou o check-out com o SVN usando o URL da web.
O Bateman é um sistema de negociação muito simples para exibir um subconjunto dos mercados de ações dos EUA e testar o quão bem uma estratégia de negociação simples e única descrita abaixo funcionará.
Baseia-se na observação de que muitos símbolos exibem volatilidade diária suficiente que o seu alto geralmente será significativamente acima do seu aberto, independentemente do seu preço no fechamento da negociação.
A estratégia tem seus parâmetros refinados pela otimização de enxames de partículas, um algoritmo de otimização contínua simples, de modo que você não precisa descobrir os parâmetros para cada estoque que você está interessado manualmente.
Eu nunca comecei a fazer isso robusto, mas gostaria de voltar algum dia em breve. Veja abaixo uma amostra executada.
Obviamente, não use isso para negociar dinheiro real.
Meu nome é Warren Henning. Eu sou um desenvolvedor de software de 29 anos que vive em Berkeley, Califórnia.
Não tenho nenhuma experiência profissional nas indústrias de finanças ou bancos de investimento. Nunca trabalhei para um banco. Este é apenas um projeto de hobby que eu queria fazer por um longo período de tempo.
Não arrisquei dinheiro com isso. Ele produz resultados simulados rentáveis ​​em dados históricos que eu tentei contra recentemente (veja um exemplo de resultado abaixo), mas isso definitivamente não é uma garantia de desempenho comercial real.
Este é um software de código aberto, o que basicamente significa que não lhe devo nada e que este software não funciona necessariamente. Leia o arquivo LICENÇA com cuidado. Não é minha culpa se a chance de usar isso e perder dinheiro! Você não tem nenhum recurso contra mim. Mais uma vez, consulte a licença.
Estou fazendo isso por diversão, nada mais. Não estou vendendo nada ou espero ganhar dinheiro com isso. Estou dando isso porque acho que a ideia é mais interessante do que a realidade prática como ferramenta de criação de dinheiro. Eu não tenho capital para trocá-lo, e é comum mesmo para sistemas de negociação aparentemente infalíveis para não fazer bem em circunstâncias reais em comparação com o desempenho simulado.
Gostaria de discutir a idéia de confiar em um computador para fazer negócios agora. Um programa como o Bateman se enquadra na categoria de "negociação algorítmica", que tem sido praticada por hedge funds e firmas de Wall Street por um bom tempo agora. Veja a página da Wikipedia sobre comércio algorítmico para obter mais informações.
Note-se que a "negociação algorítmica" deve ser distinguida da "negociação de alta freqüência", que é o que se tornou o foco real dos cientistas dos quentes e dos fundos de hedge fundadores hoje em dia. Bateman não é um aplicativo comercial de alta freqüência; na verdade, ele simula colocar negociações apenas uma vez por dia. Comparado com a merda louca que Wall Street está fazendo agora, Bateman é, eu acho, chapéu velho. Pelo que eu sei, Wall Street mudou seu foco de negociação proprietária discricionária para a criação de mercado, arbitragem estatística e operações de negociação de alta freqüência. Vivemos em um mundo louco e, dependendo de quem você pergunta, a negociação de alta freqüência definitivamente tem seu lado escuro. Eu não tenho nada a ver com isso.
Também enfatizarei novamente que não sou comerciante e, enquanto sou programador profissional, nunca trabalhei em nenhum código de infra-estrutura comercial.
Além disso, Bateman não é realmente um aplicativo comercial totalmente algorítmico, uma vez que na verdade não coloca os negócios em si; Ele só tenta encontrar números que permitissem a um comerciante humano trocar com sucesso. Assim, ele permite o "comércio sistemático", onde um programa emite resultados que sugerem um curso de ação rígido e objetivo que o comerciante humano deve seguir. Muitas pessoas não conseguem acompanhar isso e geralmente perdem dinheiro como resultado. Então, Bateman não tem nada para conversar com intermediários ou fazer negócios mesmo. Se você quisesse usar os resultados de um programa como este, você teria que fazer isso à mão.
Antes do surgimento de computadores onipresentes de alto desempenho, o comércio foi feito no que agora é frequentemente chamado, ao contrário, de uma maneira discricionária, com os comerciantes geralmente tentando combinar informações financeiras macroeconômicas e fundamentais ("análise fundamental", pense Warren Buffett) com análise / gráficos técnicos para descobrir o que trocar ou investir. Geralmente, é acordado que, devido aos fatores psicológicos envolvidos na negociação, os humanos são menos qualificados na execução de negócios do que sistemas de negociação pré-configurados. Isso é devido a fatores como adivinhar, pensar em excesso, ser indeciso ou mudar a mente, etc., quase sempre para o próprio detrimento. Isso elogia estudos psicológicos recentes sobre a natureza imperfeita da memória e da mente humana.
Se você nunca tentou trocar e não experimentou esse aspecto psicológico, sugiro que obtenha uma conta gratuita de comércio de papel que lhe permita fazer negociações simuladas sem realmente fornecer a ninguém informações financeiras ou dinheiro e, na verdade, tentar por você mesmo. Se você é como a maioria das pessoas, você terá dificuldade em aguardar os resultados de um comércio para se jogar e querer basicamente dar uma volta. A negociação de papel tem um certo estresse, mesmo quando nenhum dinheiro real está mudando de mãos - agora imagine se fosse dinheiro que você cortou sua bunda para salvar e você tentaria viver o sonho e "negociar para viver". A maioria das pessoas falha, mal. Há quase certo nenhum motivo para acreditar em você ou eu sou melhor ou diferente. A maioria dos "comerciantes bem sucedidos" que parecem estar batendo no mercado são apenas sortudos.
Por isso, para aliviar um pouco a falta de confiabilidade e a ansiedade associadas à negociação discricionária, os comerciantes procuram "sistemas de negociação" rigorosos e quantitativos que permitem a "negociação sistemática" se usado e seguido corretamente. Se o programa faz negociações automaticamente sem intervenção humana, isso elimina a obrigação de seguir as decisões tomadas pelo sistema a cada momento, e os aspectos psicológicos do sistema são amplamente removidos; Tudo o que resta para esse sistema de comércio algorítmico é monitorá-lo para garantir que ele está funcionando como pretendido.
Houve alguns casos de sistemas de negociação de alta freqüência desacreditados para resultados desastrosos; um desses sistemas da Knight Capital acumulou mais de US $ 400 milhões em perdas em 30 minutos. Imagine ser a primeira pessoa da empresa a aprender o que aconteceu e ter que ser o mensageiro de notícias tão horríveis. Yikes.
Para concluir esses pensamentos sobre o comércio algorítmico e de alta freqüência, é claro que o exame minucioso e os testes rigorosos são cruciais para o sucesso, como Knight Capital aprendeu.
Sempre que você cria um sistema com parâmetros que são "aprendidos" ou "otimizados" com algum tipo de pressuposição subjacente por trás disso, basicamente você está construindo um modelo estatístico. Outros modelos financeiros muitas vezes têm pressupostos muito mais fortes do que Bateman, como uma distribuição normal de retornos ou reversão média.
Bateman pretende ter boa "generalização" e desempenho futuro, sendo limitado em seus pressupostos. O pressuposto de Bateman é que alguns estoques sobe um pouco às vezes. Uma trama de um "modelo Bateman" consiste em algumas linhas horizontais, nada mais.
Comparado com as médias móveis e outros indicadores que muitos comerciantes usam, isso é muito simples: aguarde até que o estoque suba um pouco (para obter alguma evidência de que não vai simplesmente seguir esse dia), compre, espere por isso para subir um pouco mais, vender, depois fazê-lo novamente no dia seguinte. Isso pode ser realizado através de uma ordem de limite com metas de lucro pré-determinadas e parar de perdas, e um modelo como esse é perfeito para alguém que não é um comerciante profissional. Se já não sobe durante o dia do jeito que costumava, pare de negociar esse estoque e procure outro. Se nenhum estoque exibir regularmente essa propriedade de volatilidade, não use o sistema. Simples assim.
Mas, você pode estar se perguntando a si mesmo, não é um tipo de IA de computador em tarefas complexas como esta? Bem, tão imperfeitos como os computadores estão em tarefas complexas de tomada de decisão, sua natureza sistemática dá-lhes uma certa vantagem em relação aos humanos nos mercados financeiros. Tão simples como um pequeno conjunto de parâmetros numéricos para orientar os negócios é, existe a sua força: os pressupostos por trás de Bateman são mínimos e não devem ser universalmente aplicáveis; Em vez disso, destina-se a ser usado em ações que, no passado, exibiram uma propriedade específica com freqüência. É bem conhecido no aprendizado de máquina que modelos com muitos parâmetros ou de grande complexidade que são testados em dados históricos acabam sendo superados a esses dados e, efetivamente, apenas o memorizam, com a conseqüência de que eles fazem mal em dados futuros e imprevistos . Isso, infelizmente, é por isso que geralmente não é prático ou eficaz construir modelos enormes que manipulem todos os cenários imagináveis ​​e façam muitas coisas.
Existem muitas maneiras diferentes de escrever um sistema de negociação. Muitos sistemas comerciais consistem em um horrível mundo do inferno de planilhas do Excel e macros VBA. Muitos outros existem como scripts para ferramentas como o MetaTrader, que criaram linguagens de programação destinadas a ser amigáveis ​​com programadores não profissionais.
Eles também incluem instalações de otimização para encontrar parâmetros numéricos para sistemas de negociação, como algoritmos genéticos.
Provavelmente, a maneira mais fácil de seguir em geral seria usar o Quantopian, que permite que você crie e teste sistemas de negociação diretamente em seu navegador.
A maioria dessas ferramentas são inadequadas porque não lhe dão o controle de baixo nível que você precisa. Quantopian dá-lhe acesso a bibliotecas como numpy, de modo que pode muito bem ser sua melhor opção se você não roote o seu próprio do zero.
Eu preciso chamar um sistema de backtrading em um loop e executá-lo o mais rápido possível. Em outras palavras, não consigo ver como implementar o Bateman em termos de álgebra linear de baixo nível que pode ser chamada de Numpy.
Então, estamos presos com uma linguagem de propósito geral como o Java.
Finalmente, gostaria de comentar a escolha do algoritmo de otimização. Eu decidi usar a otimização de enxame de partículas ao invés de algoritmos genéticos, porque o PSO geralmente pode ser melhor para tarefas de otimização contínua, enquanto os algoritmos genéticos parecem mais adequados para tarefas discretas / combinatoriais, como agendamento e roteamento.
Como mencionado acima, Bateman tenta comprar um estoque ligeiramente acima do seu aberto e abaixo ou perto de sua alta diária. Ao invés de tentar construir um modelo de previsão, o Bateman destina-se a ser usado com ações que tenham uma freqüente alta diferença positiva entre o preço diário alto e aberto da ação, de modo que, independentemente do que aconteça no final do dia, em algum momento provavelmente exibem comportamentos que podem ser aproveitados lucrativamente.
Existem três parâmetros numéricos fixos que o Bateman tenta otimizar quando é executado: o "gatilho de compra", o "gatilho de venda" e a perda de parada.
O gatilho de compra é o valor acima do preço aberto para o dia em que ele irá comprar. Então, se o estoque for aberto em 100 e o gatilho de compra será de 0,5, qualquer preço acima de 100,5 será atualizado. O gatilho de venda é o valor acima do preço que as ações foram compradas para vender. Se o gatilho de venda não for cumprido até o final do dia, as ações são vendidas para que nenhuma posição seja realizada durante a noite. O stop loss é usado no sentido normal como um procedimento de gerenciamento de risco para reduzir perdas.
Para descobrir quais os valores dessas constantes devem ser para um determinado estoque, ele baixa dados recentes para esse estoque e tenta encontrar os números específicos que seriam mais lucrativos para esses dados. Para calcular isso, é necessário um determinado conjunto de constantes possíveis e os recorre, simulando negociação usando os dados históricos que adquire. Como é um algoritmo de otimização, ele gravita em relação a constantes mais lucrativas.
Esses três componentes - comprar gatilho, gatilho de venda, parar de perder - são os números que o Bateman otimiza, usando dados obtidos do Google para criar uma simulação de negociação desses dados como se estivesse ao vivo. Os resultados da simulação comercial são a função objetivo do algoritmo de enxame de partículas; toda vez que quer descobrir o quão bom é um conjunto de parâmetros candidatos, ele executa uma simulação completa com aqueles e recupera um número que permite comparar quantitativamente diferentes soluções para que ele possa encontrar melhores soluções. A simulação de negociação é o que é usado para impulsionar o processo de otimização.
Depois de fazer o download de dados da Internet e executar o processo de otimização, alguns valores de amostra que acabará por cuspir serão algo como "buy trigger = 0.1, trigger de venda = 0.5, stop loss = 0.07". Isso seria interpretado como o seguinte:
"Se o preço das ações estiver atualmente acima de US $ 0,10 ou mais desde o início da negociação e não fizemos nenhuma outra negociação hoje, então COMPRA, se, após a compra, o estoque subiu US $ 0,50, VENDA. Além disso, se, Depois de comprar, o preço das ações baixou US $ 0,07 ou mais, VENDA. Se ainda não vendemos ações e o fim do dia de negociação é iminente, VENDE, independentemente do preço atual da ação. Se negociamos uma vez hoje , não troque novamente até o próximo dia de negociação ".
Observe como isso é sistemático, quantitativo e pode ser executado automaticamente por um computador sem intervenção humana. É por isso que a Bateman é um "sistema comercial" ou permite o "comércio sistemático": sugere um curso de ação que elimina completamente o julgamento qualitativo ou a tomada de decisão humana inconstante.
Realmente vale a pena usar um algoritmo para encontrar os gatilhos de compra e venda? Bem, quando eu tentei descobrir bons gatilhos de compra e venda à mão olhando gráficos de dados intraday, meus resultados foram significativamente pior do que os números que Bateman vem com seu algoritmo de enxame de partículas, então eu acho que esse programa adiciona valor real. Além disso, fazer isso à mão quando você tem um computador quad-core na sua frente parece bobo.
Quantas ações comprimos? O modelo que uso é apenas tomar uma porcentagem fixa de nosso capital e comprar o máximo de ações que possamos comprar. Atualmente, estou usando 75% do capital disponível no exemplo executável descrito abaixo, o que, penso, seria considerado bastante alto, mas Bateman é apenas um longo tempo e estabelece perdas de parada bastante rígidas. Então eu acho que a escolha é razoável.
Em que intervalo devemos restringir os parâmetros do modelo? Isso é uma questão de preferência. Escolho o seguinte:
Defina o gatilho de compra mínimo para 0, permitindo a compra a preço aberto. Ajuste a perda de parada mínima e gatilho de venda para 0,2% do primeiro preço de abertura, o que usaremos como um tipo de proxy do spread de oferta-pedido histórico. Definir o gatilho de compra máximo, ganho de venda e pare a perda para a diferença média entre preço aberto e alto no último ano, para que possamos estimar os disparadores que estejam razoavelmente em conformidade com os dados históricos.
Para obter a figura mediana acima mencionada, baixamos dados diários de fim de semana para o último ano de Yahoo! Finança. Veja o YahooQuoteFetcher.
Nossa escolha de intervalos influenciará os resultados que obtemos. Veja BuyZoneOptimizer para saber como tudo isso se junta e brincar com ele se quiser mudar os intervalos.
Atualmente, ele faz backtesting com um montante de partida simulado de US $ 100.000 e o que deve ser suposições razoáveis ​​sobre custos de negociação: US $ 10 comissões de uma maneira para negociação, queda de 0,01%. Estes não são atualmente configuráveis ​​pelo usuário, além do símbolo para trabalhar. Simula colocar uma ordem de mercado (longa-só) (em oposição a uma ordem de limite) que ela assume que ela obtém muito bem onde ela compra - assume que as ordens são colocadas rapidamente o suficiente para serem consideradas imediatas para fins de simulação , a um preço com um deslizamento pequeno o bastante para ser bastante pequeno. Também pressupõe que o spread entre a oferta e a pergunta seja pequeno o suficiente para ser razoavelmente contabilizado com as comissões e o cálculo de deslizamento aplicado a todas as negociações. Atualmente, as perdas de paragem de saída não são suportadas. Também será negociado uma vez por dia. Ele mantém negociações de tamanho fixo, não as altera ou realiza novos negócios até que o atual comércio tenha sido fechado.
Esperemos que os pressupostos implementados aqui sejam razoáveis ​​o suficiente para serem úteis para simular o desempenho de uma regra de negociação.
Além disso, a métrica específica que otimiza é, na verdade, a relação Sharpe dos negócios simulados, em vez do lucro líquido; ou seja, destina-se a otimizar os retornos ajustados ao risco. Embora a relação Sharpe seja imperfeita e muitas outras métricas possam ser utilizadas de forma plausível, é amplamente conhecida e atualmente é o que está em vigor.
Para reafirmar e resumir, é necessário um dado conjunto de parâmetros como desencadeadores de candidatos e parar a perda, simula isso em dados históricos e, em seguida, retorna o melhor que ele encontra.
Você precisará do seguinte software para executar isso:
JDK versão 1.7 (observe a versão - usa algumas bibliotecas de E / S específicas de 1.7) Maven 3.
Então você quer começar por clonar o repo:
Então você pode construir o projeto, que deve ser tão simples como:
O Maven irá baixar muitas coisas pela primeira vez. Ele deve executar os testes de unidade do projeto, então, criar um único JAR de gordura no diretório de destino.
Supondo que ele tenha sido construído com sucesso, você poderá executá-lo como qualquer outro JAR:
Isso executará o otimizador real. Atualmente, é codificado para trabalhar no estoque da Apple (AAPL).
Quando você executa isso, uma seqüência de eventos ocorrerá:
Baixe as cotações intradiárias recentes para o símbolo em questão (AAPL) do Google Finance Execute uma otimização de enxame de partículas para encontrar os melhores gatilhos e pare a perda. Imprima os parâmetros que ele vem e execute uma simulação final com estes Escreva um log de negociação simulado com lucro e cálculos de perda para cada comércio simulado para um arquivo CSV, você pode revisar com qualquer planilha eletrônica.
Quando você executa isso, a maior parte do resultado será o progresso do otimizador de enxame de partículas. A seguir, alguns exemplos de resultados são:
O trecho de saída mostrado acima é um exemplo de executar o processo de otimização com os parâmetros listados acima: um saldo inicial de US $ 100.000, independentemente de dados históricos retornados da Google Finance, comissões de negociação de US $ 10, etc. Os "melhores valores" listados são (negativos ) Razões de Sharpe das negociações simuladas que está sendo executada com os três números que você vê listados em cada linha. Em cada iteração, em outras palavras, imprime os melhores disparadores e interrompe a perda até agora. O número deve realmente diminuir, porque, como um algoritmo de otimização, ele minimiza uma função; maximizar uma função f (x) é, em geral, equivalente a minimizar a função g (x) = - f (x). Então, está tentando encontrar razões Sharpe mínimas e negativas. No final, ele imprime o melhor valor encontrado na execução de otimização e depois grava o arquivo CSV fornecido cujo nome de arquivo que você vê impresso acima, que você pode abrir e examinar. Aqui está uma amostra do que o CSV se parece:
Cada linha corresponde a um comércio simulado. O significado das colunas é o seguinte:
OpenIndex e CloseIndex são usados ​​para plotar e podem ser ignorados. Open e Close são as datas em que o comércio foi iniciado e concluído, respectivamente OpenPrice e ClosePrice são os preços do estoque nas datas abertas e fechadas O tipo é o tipo de negociação. Atualmente, isso sempre será "LONGO", pois o Bateman é longo apenas. O tamanho é o número de ações compradas. OutlayCost é o custo total de compra de todas as ações. O lucro é o montante do lucro obtido em cada comércio após a contabilização da derrapagem e das comissões. As perdas aparecerão como lucro negativo. O saldo é o saldo da conta simulada no final da negociação nessa linha; a coluna de saldo constitui uma "curva de patrimônio".
Então, o que o registro de comércio acima significa? Como fizemos em geral? Bem, vamos dar uma olhada. O programa foi executado em um computador na costa oeste dos EUA, no fuso horário do PDT, 3 horas atrasado na bolsa de valores em Nova York. Então, aqui em nosso conjunto de dados, o comércio começa diariamente às 6:30 da manhã. Na amostra de saída acima, podemos ver todos os negócios foram abertos pela manhã e mantidos em qualquer lugar de 5 minutos a algumas horas. Neste conjunto de dados, todos os nossos negócios são lucrativos. Mas se olharmos para a tendência geral da AAPL no intervalo de datas em questão, vemos que estava passando por uma longa manifestação ascendente. Então, nós realmente estamos lucrando com isso. Então, enquanto isso funciona, até certo ponto, estamos apenas recapitulando buy-and-hold, mas de uma forma que nesta simulação nos deixa com ganhos consistentes sempre. Nosso gatilho de compra é de US $ 1,36 e nosso gatilho de venda é de US $ 1,39, então estamos realmente aproveitando um estoque que, em retrospectiva, já estava destinado a fazer um grande movimento ascendente para o dia.
O otimizador procurará tudo o que maximize nossa função objetiva. A simulação acima não captura necessariamente nada por causa da falta de dados para os quais temos acesso. Isso atualmente não pode ser ajudado, pois os dados intradiários do Google Finance só parecem voltar algumas semanas. O uso mais grave disso exigiria mais dados.
Vamos falar por um segundo sobre essa estratégia em comparação com comprar e manter. Alguém que compra ações e segure-se para eles ganhará mais do que uma estratégia comercial ativa, como o que Bateman sugere, sim; e vamos acumular muitas despesas de comissões que comem em nossos lucros. Mas a nossa estratégia comercial também pode nos dar lucros muito mais consistentes no dia-a-dia do que comprar e manter, mesmo que o buy-and-hold superará essa estratégia a longo prazo para algumas ações.
Consulte o arquivo sample_plotting_script. r no diretório de plotagem para obter um exemplo de visualizar os dados de estoque e o log de comércio juntos. Substitua o tempo de execução na parte superior do com os que o Bateman coloca no arquivo CSV de saída, copie os arquivos CSV no diretório de plotagem e execute-o com R, assim:
Os exemplos de CSVs estão incluídos no projeto, portanto, execute isso como deveria funcionar. Você precisará da biblioteca de cronogramas, que você instala com install. packages ("chron").
Veja i. imgur / HBoX2sG. png para obter um exemplo completo da imagem bastante grande que o script atualmente produz; é intencionalmente criado para ser bastante largo, atualmente 5000px, para que você possa ver uma série longa de dados intradiários com clareza. Você, obviamente, precisará rolar a imagem horizontalmente.
Um detalhe do enredo é mostrado abaixo.
A série temporal é plotada como seria de esperar, e os negócios são então sobrepostos nessa série de tempo para mostrar entradas e saídas. Há texto de lado para cada comércio para dar datas e os montantes exatos dos lucros, também. Esses negócios são lucrativos, então eles são exibidos em verde. Perder trades são mostrados em vermelho.
É possível obter muito mais elaborado com a visualização e análise de dados como este, mas basicamente o trabalho é bastante bom.
Se você não usou R antes, considere escolher um livro introdutório sobre ele ou tentar um tutorial.
Preciso examinar mais sobre se os pressupostos que o programa faz sobre como ele coloca suas ordens de mercado são realmente realistas.
Gostaria de tornar o programa mais configurável e mais fácil de entender. Um frontend da web seria bom.
As instalações para analisar e traçar negócios com R podem ser mais automatizadas e melhores.
Uma coisa final interessante a notar é que uma versão um tanto análoga deste sistema poderia ser usada para negociação forex!
Espero que este README prolongado tenha sido útil para entender o que este programa faz.
&cópia de; 2017 GitHub, Inc. Termos Privacidade Segurança Status Ajuda.
Você não pode executar essa ação neste momento.
Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.

No comments:

Post a Comment