Prós e contras de sistemas de negociação automatizados.
Os comerciantes e os investidores podem transformar regras de entrada, saída e gerenciamento de dinheiro precisas em sistemas de negociação automatizados que permitem aos computadores executar e monitorar os negócios. Uma das maiores atrações da automação de estratégia é que pode tirar parte da emoção fora da negociação, uma vez que os negócios são automaticamente colocados assim que determinados critérios forem atendidos. Este artigo apresentará os leitores e explicará algumas das vantagens e desvantagens, bem como as realidades, dos sistemas de negociação automatizados. (Para leitura relacionada, veja The Power Of Program Trades.)
O que é um sistema de negociação automatizado?
Os sistemas de negociação automatizados, também denominados sistemas mecânicos de negociação, negociação algorítmica, negociação automatizada ou negociação de sistemas, permitem que os comerciantes estabeleçam regras específicas para ambas as entradas comerciais e saídas que, uma vez programadas, podem ser executadas automaticamente através de um computador. As regras de entrada e saída comercial podem ser baseadas em condições simples, como um crossover médio móvel, ou podem ser estratégias complicadas que requerem uma compreensão abrangente da linguagem de programação específica para a plataforma de negociação do usuário ou a experiência de um programador qualificado. Os sistemas de negociação automatizados normalmente exigem o uso de software que esteja vinculado a um corretor de acesso direto, e quaisquer regras específicas devem ser escritas na linguagem proprietária dessa plataforma. A plataforma TradeStation, por exemplo, usa a linguagem de programação EasyLanguage; A plataforma NinjaTrader, por outro lado, utiliza a linguagem de programação NinjaScript. A Figura 1 mostra um exemplo de uma estratégia automatizada que desencadeou três negociações durante uma sessão de negociação. (Para leitura relacionada, veja Comércio Global e Mercado Moeda.)
[Os sistemas de negociação automatizada podem usar muitos indicadores técnicos diferentes para definir pontos de entrada e saída. O Curso de Análise Técnica da Investopedia fornece uma visão geral detalhada desses indicadores técnicos e padrões de gráficos que os comerciantes podem usar ao criar sistemas de negociação automatizados.]
Algumas plataformas de negociação possuem "assistentes" de construção de estratégias que permitem aos usuários fazer seleções a partir de uma lista de indicadores técnicos comumente disponíveis para construir um conjunto de regras que podem ser negociadas automaticamente. O usuário poderia estabelecer, por exemplo, que um longo comércio será inserido uma vez que a média móvel de 50 dias cruza acima da média móvel de 200 dias em um gráfico de cinco minutos de um instrumento comercial específico. Os usuários também podem inserir o tipo de ordem (mercado ou limite, por exemplo) e quando o comércio será acionado (por exemplo, no fechamento da barra ou aberto da próxima barra), ou use as entradas padrão da plataforma. Muitos comerciantes, no entanto, optam por programar seus próprios indicadores e estratégias personalizados ou trabalhar em estreita colaboração com um programador para desenvolver o sistema. Embora isso geralmente requer mais esforço do que usar o assistente da plataforma, ele permite um grau de flexibilidade muito maior e os resultados podem ser mais gratificantes. (Infelizmente, não existe uma estratégia de investimento perfeita que garanta o sucesso. Para mais informações, consulte Usando Indicadores Técnicos para Desenvolver Estratégias de Negociação.)
Uma vez que as regras foram estabelecidas, o computador pode monitorar os mercados para encontrar oportunidades de compra ou venda com base nas especificações da estratégia comercial. Dependendo das regras específicas, assim que uma negociação for inserida, serão gerados automaticamente quaisquer pedidos de perdas de proteção de paradas, paradas de trânsito e metas de lucro. Em mercados em movimento rápido, esta entrada de ordem instantânea pode significar a diferença entre uma pequena perda e uma perda catastrófica no caso de o comércio se mover contra o comerciante.
Vantagens de Sistemas de Negociação Automatizados.
Há uma longa lista de vantagens em ter um computador monitorando os mercados para oportunidades comerciais e executar os negócios, incluindo:
Minimize Emoções. Os sistemas de negociação automatizados minimizam as emoções ao longo do processo de negociação. Ao manter as emoções sob controle, os comerciantes normalmente têm um tempo mais fácil de aderir ao plano. Uma vez que as ordens comerciais são executadas automaticamente uma vez que as regras comerciais foram cumpridas, os comerciantes não poderão hesitar ou questionar o comércio. Além de ajudar os comerciantes que têm medo de "puxar o gatilho", o comércio automatizado pode conter aqueles que estão aptos a vender demais - comprando e vendendo em todas as oportunidades percebidas.
Capacidade de Backtest. Backtesting aplica as regras de negociação aos dados históricos do mercado para determinar a viabilidade da idéia. Ao projetar um sistema de negociação automatizada, todas as regras precisam ser absolutas, sem espaço para interpretação (o computador não pode fazer suposições - é preciso dizer exatamente o que fazer). Os comerciantes podem tomar esses conjuntos precisos de regras e testá-los em dados históricos antes de arriscar dinheiro em negociação ao vivo. O backtesting cuidadoso permite aos comerciantes avaliar e afinar uma idéia comercial e determinar a expectativa do sistema - o valor médio que um comerciante pode esperar para ganhar (ou perder) por unidade de risco. (Oferecemos algumas dicas sobre este processo que podem ajudar a repor suas estratégias de negociação atuais. Para mais informações, consulte Backtesting: Interpreting the Past.)
Preserve Discipline. Como as regras comerciais são estabelecidas e a execução comercial é executada automaticamente, a disciplina é preservada mesmo em mercados voláteis. A disciplina é muitas vezes perdida devido a fatores emocionais, como o medo de sofrer uma perda, ou o desejo de obter um pouco mais de lucro de um comércio. O comércio automatizado ajuda a garantir que a disciplina seja mantida porque o plano de negociação será seguido exatamente. Além disso, o erro piloto é minimizado, e uma ordem para comprar 100 ações não será inserida incorretamente como uma ordem para vender 1.000 ações.
Alcançar Consistência. Um dos maiores desafios na negociação é planejar o comércio e negociar o plano. Mesmo que um plano de negociação tenha o potencial de ser rentável, os comerciantes que ignoram as regras estão alterando a expectativa de que o sistema teria tido. Não existe um plano de negociação que ganhe 100% do tempo - as perdas são parte do jogo. Mas as perdas podem ser psicologicamente traumatizantes, então um comerciante que tem duas ou três negociações perdidas em uma fila pode decidir ignorar o próximo comércio. Se esse próximo comércio fosse um vencedor, o comerciante já havia destruído qualquer expectativa do sistema. Os sistemas de negociação automatizados permitem que os comerciantes obtenham consistência ao negociar o plano. (É impossível evitar o desastre sem regras de negociação. Para mais informações, veja 10 Passos para construir um Plano de Negociação vencedor.)
Velocidade de entrada de pedido aprimorada. Uma vez que os computadores respondem imediatamente às mudanças nas condições do mercado, os sistemas automatizados são capazes de gerar ordens assim que os critérios comerciais forem atendidos. Entrar ou sair de um comércio alguns segundos antes pode fazer uma grande diferença no resultado do comércio. Assim que uma posição é inserida, todos os outros pedidos são gerados automaticamente, incluindo perdas protetoras de parada e metas de lucro. Os mercados podem se mover rapidamente, e é desmoralizante ter um comércio atingindo o objetivo de lucro ou superar um nível de perda de parada - antes que as ordens possam ser inseridas. Um sistema de negociação automatizado evita que isso aconteça.
Desvantagens e Realidades dos Sistemas Automatizados de Negociação.
Os sistemas de negociação automatizados possuem muitas vantagens, mas existem algumas quedas e realidades a que os comerciantes devem estar cientes.
Falhas mecânicas. A teoria por trás do comércio automatizado faz com que pareça simples: configurar o software, programar as regras e assisti-lo comercializar. Na realidade, no entanto, a negociação automatizada é um método sofisticado de negociação, mas não infalível. Dependendo da plataforma de negociação, uma ordem comercial pode residir em um computador - e não em um servidor. O que isso significa é que, se uma conexão com a Internet for perdida, um pedido pode não ser enviado ao mercado. Também pode haver uma discrepância entre os "negócios teóricos" gerados pela estratégia e o componente da plataforma de entrada de pedidos que os transforma em trades reais. A maioria dos comerciantes deve esperar uma curva de aprendizado ao usar sistemas de negociação automatizados, e geralmente é uma boa idéia começar com pequenos tamanhos comerciais enquanto o processo é refinado.
Monitoramento. Embora seja ótimo ligar o computador e sair para o dia, os sistemas de negociação automatizados requerem monitoramento. Isso é devido ao potencial de falhas mecânicas, como problemas de conectividade, perdas de energia ou falhas no computador, e às peculiaridades do sistema. É possível que um sistema de negociação automatizado experimente anomalias que possam resultar em ordens erradas, ordens faltantes ou pedidos duplicados. Se o sistema for monitorado, esses eventos podem ser identificados e resolvidos rapidamente.
Os comerciantes têm a opção de executar seus sistemas de negociação automatizados através de uma plataforma de negociação baseada no servidor, como o Strategy Runner. Essas plataformas freqüentemente oferecem estratégias comerciais para venda, um assistente para que os comerciantes possam projetar seus próprios sistemas ou a capacidade de hospedar sistemas existentes na plataforma baseada no servidor. Por uma taxa, o sistema de negociação automatizado pode pesquisar, executar e monitorar negócios - com todos os pedidos que residem em seu servidor, resultando em entradas de pedidos potencialmente mais rápidas e confiáveis.
Embora seja atraente por uma variedade de fatores, os sistemas automáticos de negociação não devem ser considerados um substituto para negociações cuidadosamente executadas. Falhas mecânicas podem acontecer e, como tal, esses sistemas requerem monitoramento. As plataformas baseadas em servidor podem fornecer uma solução para comerciantes que desejam minimizar os riscos de falhas mecânicas. (Para leitura relacionada, veja Day Trading Strategies For Beginners.)
Guia do principiante para negociação quantitativa II: desenvolvimento de sistemas de negociação automatizados.
Na parte I deste guia, falamos sobre programação matemática, dados e habilidades ML que são úteis ao construir suas próprias estratégias de negociação. Espero que você já seja um especialista nesses e esteja pronto para mergulhar na construção de seu próprio sistema de negociação automatizado.
Um Sistema Automatizado de Negociação consiste em vários elementos. Você precisa decidir quais os mercados que quer negociar, criar recursos para identificar uma lógica de negociação e desenvolver uma estratégia para implementar essa lógica para comprar ou vender ações. Seu sistema deve decidir quando entrar e sair de um comércio, contabilizar os custos de negociação e ser otimizado por meio de teste de backtest (mas não superado). Você pode assistir a um vídeo detalhado sobre os elementos-chave de um sistema comercial aqui.
Vamos começar:
1. ENCONTRE O MERCADO DIREITO AO COMÉRCIO.
Escolha o seu mercado e os instrumentos para negociar. Em seguida, encontre dados históricos para esses instrumentos para desenvolver e testar seu modelo. Nós fornecemos dados para 600 ações listadas no NASDAQ que são (ou foram) uma parte da S & amp; P 500 desde 2001. A lista completa de ações está aqui.
Os estoques são geralmente um bom lugar para começar para iniciantes e permitem um grande grau de diversificação. Não entende o que instrumentos financeiros como ações, futuros e opções significam? Saiba mais aqui.
2. CONSTRUINDO SUAS CARACTERÍSTICAS E SINAL DE NEGOCIAÇÃO.
Você precisará de um conjunto de recursos para identificar um sinal / lógica de negociação. Os recursos podem ser médias móveis ou proporções de dados de preço, correlações ou sinais mais complexos. Nós fornecemos dados diários ABERTO, CLOSE, HIGH, BAIXO e VOLUME para os estoques. Você pode combiná-los de várias maneiras para criar novos recursos. Depois de ter seu conjunto de recursos, você precisa gerar um sinal de negociação usando esses recursos, ou seja, quais instrumentos são uma compra, uma venda ou neutro.
Se você precisar de uma atualização sobre a matemática, leia mais aqui.
Você pode começar por experimentar sistemas simples de reversão ou momentum, construindo até pares ligeiramente complexos ou comércios longos e curtos. Você pode verificar a nossa série de iniciantes nestes (com notebooks IPython tutorial) em estratégias de negociação simples.
3. ESTRATÉGIA DE EXECUÇÃO COMERCIAL.
Em seguida, você precisará de uma estratégia que diga ao seu sistema o que fazer com base no sinal gerado por seus recursos. Esta é a ordem final que você envia ao corretor.
Você pode inserir uma troca em duas posições - longa ou curta. Quando há um estoque, você se beneficia se o preço aumentar. Da mesma forma, quando breve você se beneficia se o preço diminuir. Depois de entrar no comércio, você pode optar por aumentar ou diminuir seu tamanho de posição com base na força do seu sinal e, finalmente, sair da posição se você atender aos critérios de lucro, se você acha que o sinal foi revertido ou se você atingiu sua parada .
Portanto, sua estratégia de execução comercial deve decidir a) como entrar em uma posição (comprar ou vender) b) qual o tamanho do comércio c) como subsequentemente dimensionar para cima ou para baixo e d) quando sair, tanto no caso de lucros ou perdas.
4. CUSTOS DE NEGOCIAÇÃO.
Os custos de negociação alteram significativamente o desempenho da estratégia. Os altos custos de negociação podem ser elevados de forma significativa. Nosso backtester conta automaticamente com os custos de negociação. Nós aplicamos uma comissão (taxas cobradas pela bolsa e o corretor para facilitar negócios) e derrapagens (a diferença de preço em que você colocou seu pedido e o preço no qual você realmente negociou) a cada pedido.
Utilizamos US $ 0,10 por ação como comissão e 5% da faixa diária do estoque como uma estimativa de derrapagem. Portanto, o custo total para o comércio (em $) = 0,10 + (ALTO - BAIXO) * 0,05.
5. METROS DE BACKTESTING E PERFORMANCE.
Finalmente, você deve testar seu sistema em dados históricos para ver como sua estratégia teria realizado no passado. Isso ajuda você a otimizar seu sistema para os mercados que você está negociando. Ele também fornece uma expectativa de como sua estratégia deverá fazer no futuro.
Como você compara dois sistemas? Nosso backtester fornece as seguintes métricas para quantificar o desempenho do seu sistema. Este conjunto de métricas não é exaustivo, mas eles são um bom lugar para começar:
Retorno Total Retorno Anualizado Volatilidade Anualizada Razão Sharpe Razão Sortino Máximo Drawdown% Lucro Fator Lucro.
Você pode ler detalhadamente sobre eles aqui.
Não existe um valor de destino correto para essas métricas. Todo investidor busca sistemas com alto desempenho e baixo risco, mas diferentes investidores podem ter limiares variáveis para o que é considerado aceitável com base em seu perfil de risco e estilos de negociação.
6. SER AVANÇADO CONTRA O SUPERFÍCIE E BIASES.
Semelhante a qualquer problema de ciência dos dados, a abundância de dados disponíveis significa que existe uma tendência natural de superar sistemas.
A superposição é a armadilha mais perigosa de uma estratégia comercial. Você pode criar um algoritmo complexo que executa maravilhosamente em um backtest, mas falha miseravelmente em novos dados não vistos. Este sistema não revelou nenhuma tendência de dados e nenhum poder de previsão real. Algumas dicas para evitar a superposição:
Mantenha seus sistemas tão simples quanto possível. Se você se encontra usando recursos demais ou extremamente complexos, você provavelmente está superando, não conseguindo uma tendência. Divida dados disponíveis em dados de treinamento e teste. Não use todos os dados para otimizar seu algoritmo de estratégia, use os dados do teste para validar sua estratégia. Os sistemas que funcionam bem no teste fora da amostra são mais propensos a serem bem-sucedidos em dados do mercado ao vivo. Evite os preconceitos, especialmente a polarização do lookahead. Certifique-se de que sua estratégia não está usando nenhum conhecimento do futuro enquanto faz testes. Esta informação não estará disponível para você ao negociar em dados do mercado ao vivo. Você pode encontrar uma lista de preconceitos de backtesting comuns aqui.
É isso aí. Você está pronto para começar a escrever algumas estratégias próprias. Você pode ler nosso post de acompanhamento em uma abordagem sistemática para identificar a lógica comercial e desenvolver uma estratégia.
Ao bater palmas mais ou menos, você pode nos indicar quais as histórias que realmente se destacam.
Equipe Auquan.
A Auquan pretende envolver pessoas de diversas origens para aplicar as habilidades de seus respectivos campos para desenvolver estratégias de negociação de alta qualidade. Acreditamos que pessoas extremamente talentosas equipadas com conhecimento e atitude adequados podem projetar algoritmos de negociação bem-sucedidos.
Desenvolvimento de sistemas de negociação automatizados
Ainda tem uma pergunta? Peça o seu próprio!
Como cientista da computação, você está na posição perfeita para iniciar a negociação algorítmica. Isso é algo que testemunhamos em primeira mão na Quantiacs [1], onde cientistas e engenheiros conseguem saltar diretamente para negociação automatizada sem qualquer experiência prévia. Em outras palavras, as costeletas de programação são o ingrediente principal necessário para começar. Para obter uma compreensão geral do que os desafios esperam depois / durante a criação de um sistema de negociação algorítmico, confira esta publicação do Quora.
Construir um sistema de negociação desde o início exigirá algum conhecimento de fundo, uma plataforma de negociação, dados de mercado e acesso ao mercado. Embora não seja um requisito, a escolha de uma única plataforma de negociação que forneça a maior parte desses recursos o ajudará a acelerar rapidamente. Dito isto, as habilidades que você desenvolverá serão transferíveis para qualquer linguagem de programação e praticamente qualquer plataforma.
Acredite ou não, construir estratégias de negociação automatizadas não se baseia em ser um especialista em mercado. No entanto, aprender mecânica de mercado básica irá ajudá-lo a descobrir estratégias comerciais lucrativas.
Opções, Futuros e Outros Derivados por John C. Hull - Grande primeiro livro para entrar em finanças quantitativas, e aproximando-se do lado da Matemática. Negociação quantitativa por Ernie Chan - Ernie Chan fornece o melhor livro introdutório para negociação quantitativa e orienta você no processo de criação de algoritmos de negociação em MATLAB e Excel. Comércio Algoritmo de Futuros via Aprendizado de Máquinas - Uma quebra de 5 páginas da aplicação de um modelo simples de aprendizado de máquina aos indicadores de análise técnica comumente usados. Aqui está uma lista de leitura agregada PDF com uma quebra completa de livros, vídeos, cursos e fóruns de negociação.
A melhor maneira de aprender é fazer, e no caso de negociação automatizada que se resume a gráficos e codificação. Um bom ponto de partida são exemplos existentes de sistemas de negociação e exposições existentes de técnicas de análise técnica. Além disso, um cientista informático qualificado tem a vantagem adicional de poder aplicar a aprendizagem de máquinas para negociação algorítmica.
Aqui estão alguns desses recursos:
TradingView - Uma fantástica plataforma de gráficos visuais por conta própria, o TradingView é um ótimo parque infantil para ficar confortável com a análise técnica. Tem o benefício adicional de permitir estratégias de negociação de scripts e navegar nas idéias comerciais de outras pessoas. Fórum Automatizado de Negociação - Grande comunidade on-line para publicar questões iniciantes e encontrar respostas para problemas comuns quando é apenas começar. Quant, os fóruns são um ótimo lugar para mergulhar em estratégias, ferramentas e técnicas. Seminário do YouTube sobre idéias comerciais com exemplos de código de trabalho no Github. Aprendizado de máquinas:
Mais apresentações sobre negociação automatizada podem ser encontradas no Quantiacs Quant Club.
A maioria das pessoas de base científica (seja ciência da computação ou engenharia) tiveram exposição a Python ou MATLAB, que são linguagens populares para financiamento quantitativo. A Quantiacs criou uma caixa de ferramentas de código aberto que fornece backtesting e 15 anos de histórico de dados de mercado gratuitamente. A melhor parte é que tudo é construído tanto no Python como no MATLAB, o que lhe dá a escolha do que desenvolver o seu sistema.
Aqui está uma tendência de exemplo - estratégia de negociação seguinte no MATLAB.
Este é todo o código necessário para executar um sistema de negociação automatizado, apresentando tanto o poder do MATLAB quanto o Quantiacs Toolbox. Quantiacs permite que você negocie 44 futuros e todos os estoques do S & amp; P 500. Além disso, uma variedade de bibliotecas adicionais, como o TensorFlow, são suportadas.
(Disclaimer: trabalho em Quantiacs)
Uma vez que você está pronto para ganhar dinheiro como um quant, você pode participar do mais recente concurso de negociação automatizado da Quantiacs, com um total de US $ 2.250.000 em investimentos disponíveis: você pode competir com os melhores quants?
Em outras línguas.
"Ao investir, o que é confortável raramente é lucrativo." - Robert Arnott.
2. Testando e otimizando uma Estratégia.
Esta resposta foi completamente reescrita.
Aqui estão 6 bases de conhecimento principais para a construção de sistemas de negociação algorítmica. Você deve estar familiarizado com todos eles para construir sistemas comerciais eficazes. Alguns dos termos utilizados podem ser ligeiramente técnicos, mas você deve ser capaz de compreendê-los pela Googling.
Nota: (A maioria) não se aplicam se você quiser fazer o comércio de alta freqüência.
1. Teorias do mercado.
Você precisa entender como o mercado funciona. Mais especificamente, você deve entender as ineficiências do mercado, as relações entre diferentes ativos / produtos e o comportamento dos preços. As idéias comerciais decorrem de ineficiências do mercado. Você precisará saber como avaliar as ineficiências do mercado que lhe dão uma vantagem comercial versus as que não o fazem.
Projetar robôs efetivos implica entender como os sistemas de negociação automatizados funcionam. Essencialmente, uma estratégia de negociação algorítmica consiste em 3 componentes principais: 1) Entradas, 2) Saídas e 3) Dimensionamento da posição. Você precisará projetar esses 3 componentes em relação à ineficiência do mercado que você está capturando (e não, este não é um processo direto).
Você não precisa saber matemática avançada (embora ajude se você pretende construir estratégias mais complexas). As boas habilidades de pensamento crítico e uma compreensão decente sobre as estatísticas o levarão muito longe. O design envolve backtesting (teste de vantagem comercial e robustez) e otimização (maximizando o desempenho com ajuste mínimo da curva).
Você precisará saber como gerenciar um portfólio de estratégias de negociação algorítmicas também. As estratégias podem ser complementares ou conflitantes - isso pode levar a aumentos não planejados na exposição ao risco ou hedging indesejados. A alocação de capital também é importante - você divide o capital igualmente durante intervalos regulares ou recompensa os vencedores com mais capital?
Se você sabe quais produtos você quer negociar, encontre plataformas de negociação adequadas para esses produtos. Então, aprenda a API de linguagem de programação desta plataforma / backtesters.
Se você começar, eu recomendaria a Quantopian (ações somente), Quantconnect (ações e FX) ou Metatrader 4 (FX e CFDs em índices de ações, ações e commodities). As linguagens de programação utilizadas são Python, C # e MQL4 respectivamente.
4. Gerenciamento de dados.
Lixo em == lixo fora. Dados imprecisos levam a resultados de teste imprecisos. Precisamos de dados razoavelmente limpos para testes precisos. A limpeza de dados é um trade-off entre custo e precisão. Se quiser dados mais precisos, você precisa gastar mais tempo (time == money) para limpá-lo. Alguns problemas que causam dados sujos incluem dados em falta, dados duplicados, dados errados (carrapatos ruins). Outras questões que levam a dados enganosos incluem dividendos, divisões de ações e rollovers de futuros etc.
5. Gestão de riscos.
Existem dois principais tipos de risco: risco de mercado e risco operacional. O risco de mercado envolve riscos relacionados à sua estratégia de negociação. Considera os cenários dos piores casos? E se um evento de cisne negro como a Segunda Guerra Mundial acontecer? Você cortou o risco indesejado? Seu tamanho de posição é muito alto?
Além de gerenciar o risco de mercado, você precisa analisar o risco operacional. Choque do sistema, perda de ligação à Internet, algoritmo de execução fraca (levando a preços mal executados ou negócios perdidos devido à incapacidade de lidar com requtas / deslizamento elevado) e o roubo por hackers são problemas muito reais.
6. Execução ao vivo.
Backtesting e negociação ao vivo são muito diferentes. Você precisará selecionar corretores adequados (MM vs STP vs ECN). Forex Market News com Forex Trading Forums & amp; Forex Brokers Reviews é o seu melhor amigo, leia comentários do corretor lá.
Você precisa de uma infra-estrutura apropriada (gerenciamento seguro de VPN e tempo de inatividade, etc.) e procedimentos de avaliação (monitorar o desempenho de seus robôs e analisá-los em relação à ineficiência / backtests / otimizações do mercado) para gerenciar seu robô ao longo de sua vida útil. Você precisa saber quando intervir (modificar / atualizar / desligar / ligar seus robôs) e quando não.
• Avaliação e Otimização de Estratégias de Negociação - Pardo (Grandes idéias sobre métodos de construção e teste de estratégias de negociação)
• Troque seu caminho para a liberdade financeira - Van K Tharp (Ridiculous-Click isqueiro lado de lado, este livro é uma ótima visão geral dos sistemas de negociação mecânica)
• Negociação quantitativa - Ernest Chan (Grande introdução a algo trading em um nível de varejo).
• Negociação e intercâmbios: Microsestrutura de mercado para praticantes - Larry Harris (A microestrutura do mercado é a ciência de como os intercâmbios funcionam e o que realmente acontece quando um comércio é colocado. É importante conhecer essa informação, mesmo que você esteja começando)
• Algorithmic Trading & amp; DMA - Barry Johnson (Shed light sobre os algoritmos de execução dos bancos. Isto não é diretamente aplicável sua troca de algo, mas é bom saber)
• The Quants - Scott Patterson (Histórias de guerra de alguns quants superiores. Bom como uma hora de dormir, leia)
• Quantopian (Code, pesquisa e discuta idéias com a comunidade. Usa Python)
• Fundamentos da Algo Trading | AlgoTrading101 (Disclaimer: Eu possuo este site / curso. Aprenda teorias de design de robôs, teorias de mercado e codificação. Usa MQL4)
• - Junte-se ao desafio (Aprenda os conceitos de negociação e as teorias de backtesting. Recentemente desenvolveram sua própria plataforma de backtesting e trading, então esta parte ainda é novidade para mim. Mas a base de conhecimento sobre os conceitos de negociação é boa.)
Blogs / Fóruns recomendados (estes incluem fóruns de finanças, comércio e trading):
Linguagens de programação recomendadas:
Se você sabe quais produtos você quer negociar, encontre plataformas de negociação adequadas para esses produtos. Então, aprenda a API de linguagem de programação desta plataforma / backtesters.
Se você começar, eu recomendaria a Quantopian (ações somente), Quantconnect (ações e FX) ou Metatrader 4 (FX e CFDs em índices de ações, ações e commodities). As linguagens de programação utilizadas são Python, C # e MQL4 respectivamente.
Algoritmos não são senão a formalização extrema de uma filosofia subjacente.
Trading edge = Win% * Avg Win% - Perda% * Média%
Isso mudou minha vida e a maneira como eu me aproximo dos mercados. Visualize sua distribuição, sempre. Ele irá ajudá-lo a esclarecer seus conceitos, iluminar suas falhas lógicas, mas primeiro deixar começar com filosofia e crença.
1. Por que é importante esclarecer suas crenças?
Nós negociamos nossas crenças. Mais importante ainda, trocamos nossas crenças subconscientes. "Se você não sabe quem você é, os mercados são um lugar caro para descobrir", Adam Smith.
Muitas pessoas não tomam o tempo para suscitar suas crenças e operar em crenças emprestadas. Perguntas não respondidas e lógica defeituosa são a razão pela qual alguns comerciantes sistemáticos ajustam seu sistema em torno de cada redução. Eu costumava ser assim por muitos anos.
Exercícios de eleição de crenças:
O trabalho de Byron Katie. Depois de completar 2 crenças por dia durante 100 dias, eu poderia explicar meu estilo a qualquer avó 5 por quê? Faça uma pergunta com o motivo e mergulhe mais profundamente. Mindsets: expansivo e subtractivo ou smoothie Vs band-aid.
Existem dois tipos de mentalidade, e nós precisamos de ambos em momentos diferentes:
Expansivo para explorar conceitos, idéias, truques, etc Subtrativo: simplificar e esclarecer conceitos Os comerciantes sistemáticos que falham em serem subtractivos têm uma abordagem de smoothie. Eles lançam todos os tipos de coisas em sua estratégia e depois misturam com um otimizador. Movimento ruim: a complexidade é uma forma de preguiça.
Os comerciantes sistemáticos excessivamente subtrativos têm uma mentalidade de ajuda de bandas. Eles codificam tudo e depois estão com boa sorte.
& quot; comerciantes essencialistas & quot; entenda que é uma dança entre períodos de exploração e tempos de simplificação do núcleo rígido. Simples não é fácil.
Levou-me 3.873 horas, e eu aceito que pode demorar toda a vida.
A única vez que você sabe se um negócio foi lucrativo é depois da saída, certo?
Então, concentre-se primeiro na lógica de saída.
Na minha opinião, a principal razão pela qual as pessoas não conseguem automatizar sua estratégia é que eles se concentram demais na entrada e não são suficientes na saída.
A qualidade das suas saídas forma sua distribuição P & amp; L, veja o gráfico acima.
Gaste enorme tempo na perda de parada, pois afeta 4 componentes do seu sistema comercial: Win%, Loss%, perda média%, freqüência de negociação.
A qualidade do seu sistema será determinada pela qualidade da sua perda de parada,
O peso igual é uma forma de preguiça. O tamanho das suas apostas determinará a forma dos seus retornos. Compreenda quando sua estratégia não funciona e reduz o tamanho. Por outro lado, aumentar o tamanho quando funciona.
Escreverei mais sobre o dimensionamento da posição no meu site, mas existem muitos recursos na internet.
Depois de ter assistido uma temporada completa de "donas de casa desesperadas" ou "quebrando mal", teve algum chocolate, andou o cão, alimentou o peixe, chamou sua mãe, então é hora de pensar sobre a entrada.
Leia a fórmula acima, a escolha de estoque não é um componente primário. Pode-se argumentar que a escolha adequada de ações pode aumentar a vitória%. Talvez, mas não vale a pena se não houver uma política de saída adequada, nem gerenciamento de dinheiro.
Em termos probabilísticos, depois de ter resolvido a saída, a entrada se torna uma probabilidade de escala deslizante.
Não existe uma média móvel mágica, o valor do indicador. Ao testar seu sistema, concentre-se em três coisas:
Falso positivo: eles corroem o desempenho. Encontre maneiras simples (elegantes) de reduzi-las, trabalhe nos períodos lógicos quando a estratégia não funciona: nenhuma estratégia funciona o tempo todo. Esteja preparado para isso e prepare planos de contingência com antecedência. Ajudar o sistema durante uma redução é como aprender a nadar em uma tempestade. Comprar energia e gerenciamento de dinheiro: este é outro fato contra-intuitivo. Seu sistema pode gerar idéias, mas você não possui o poder de compra para executar. Por favor, dê uma olhada no gráfico acima. Eu construo todas as minhas estratégias do lado curto primeiro. O melhor teste de robustez para uma estratégia é o lado curto:
Comecei com o desenvolvedor WealthLab. Tem uma biblioteca de dimensionamento de posição espetacular. Esta é a única plataforma que permite o backtetsing e a otimização do portfólio. Teste todos os meus conceitos no WLD. Altamente recomendado. Tem uma desvantagem, não conecta o dimensionador de posição com o comércio real ao vivo.
Perry Kaufman escreveu alguns bons livros sobre TS. Existe uma comunidade vibrante por aí. É mais fácil do que a maioria das outras plataformas.
Se você quer aprender a nadar, você deve pular na água. Muitos novatos querem enviar suas idéias de bilhões de dólares para alguns programadores baratos em algum lugar. Não funciona assim. Você precisa aprender o idioma, a lógica.
Brace para uma longa jornada.
Dado que eu sou um graduado em informática que criou um Sistema de Negociação de Alta Frequência ultra desde o início, acho que posso adicionar a perspectiva do programador para algumas respostas realmente fantásticas sobre como construir um sistema de comércio algorítmico.
Na verdade, existem apenas 3 blocos principais em um sistema de comércio Algo (ATS)
1. Manipulador de Dados de Mercado (por exemplo, manipulador RÁPIDO)
2. Módulo de Estratégia (por exemplo, estratégia crossOver)
3. Encomende o roteador (por exemplo, o roteador FIX)
você pode adicionar o Módulo de Risco no Módulo de Estratégia ou no Módulo do Roteador de Ordem ou ambos. Por enquanto, seu fluxo de dados está correto, você deve ser bom para ir. Lembre-se se você está projetando um ATS para latência mínima, adicionando mais camadas ou complexidade irá aumentá-lo.
Arquitetura mínima ATS.
E se você adicionar os sinos e assobios, ficaria um pouco complexo:
Se você também estiver interessado no conteúdo da implementação da arquitetura acima, você deve manter as seguintes coisas em mente.
Evite bloqueios / mutexes: no caso de você precisar usá-lo, tente substituí-los por estruturas sem trava usando atomics. Existem algumas bibliotecas disponíveis para estruturas de dados sem bloqueio (por exemplo, libcds, kit de concorrência etc.). C ++ - 11 suporta std :: atomic, e você deve se esforçar para usá-los também. Se você está apontando para baixa latência, evite o que é feito no QuickFIX. Está escrito para segurança / flexibilidade / reutilização, pois a criação e destruição do objeto (bloqueio) é feita para cada invocação de qualquer mensagem para o roteador. Certamente nenhuma maneira de escrever um código sensível à latência. Nenhuma alocação de memória de tempo de execução: caminho de tempo de execução deve usar gerenciamento de memória personalizado e sem bloqueio com pool de memória pré-alocada. Toda a inicialização pode ser feita em construtores. Acoplamento apertado: o modelo de Threading, o modelo de E / S eo gerenciamento de memória devem ser projetados para colaborar entre si para alcançar o melhor desempenho geral. Isso vai contra o conceito OOP de acoplamento solto, mas é necessário evitar o custo de tempo de execução do polimorfismo dinâmico. Use modelos: na mesma linha, eu também sugeriria que você olhasse a tempatição do C ++ para conseguir a flexibilidade do código. Com tanto recursos novos adicionados aos modelos no c ++ 11, seria um crime não usá-lo para adicionar flexibilidade. Otimização de sistema operacional / hardware: Finalmente, você deve procurar trabalhar com a placa de rede Linux RT Kernel e Solarflare com o driver OpenOnLoad para alcançar a latência mínima. Você pode olhar para isolar a CPU e executar seu programa nesse núcleo específico.
Se a baixa latência não é o que você pretende, existem variantes de recursos ATS disponíveis gratuitamente na rede, por exemplo, QuickFIX (C ++), Marketcetera (Java).
Muitos outros fornecedores também fornecem backtesting e módulo de troca que estão bem acoplados com seus próprios backends. Os mais populares são o Quantconnect, Quantiacs, Interactive Broker, Wealth Lab, TradeStation e AmiBroker. Quantopian usa a tirolesa, que é uma biblioteca baseada em python de código aberto, e está se tornando bastante popular.
Sistemas de negociação automatizados.
Por que usar o BWT Automated Trading Systems?
A Blue Wave Trading vem desenvolvendo sistemas automáticos de negociação desde 1997 e tornou-se o principal desenvolvedor de estratégias automatizadas no setor varejista da indústria comercial.
Importante: Autotrader de precisão BWT desenvolvido no modo profissional não gerenciado do NinjaTrader para recursos incomparáveis, confiabilidade e velocidade de execução, e evitando erros de execução e superposições.
A base de código BWT Precision Autotrader é profissionalmente escrita com técnicas avançadas de codificação e tem muitas horas de negociação e testes no mercado ao vivo. Troque com confiança em tempo real e dinheiro real e saiba que uma grande atenção e cuidado passou a evitar e resolver enxertos, erros de ordem de entrada e saída e outros cenários comerciais potencialmente perigosos - incluindo um mecanismo de segurança de fluxo de trabalho comercial avançado que evite erros relacionados ao comércio. Tenha cuidado com qualquer estratégia que não esteja escrita no modo não gerenciado do NinjaTrader ou por programadores que nunca tenham trocado em vivo. Infelizmente, esta seria a estratégia de negociação automatizada de todas ou mais competitivas compatível com o NinjaTrader ... Saiba que o BWT Trading Software está escrito em uma base de código institucional profissional, projetado por alguém que realmente negociou e testou nosso software em negociação real.
O OverFills é uma questão séria e perigosa que pode ocorrer ao usar condições de entrada complexas que o suporte do mercado em ambos os sentidos termina com as duas entradas sendo preenchidas em vez de uma ser cancelada. OverFills também pode ocorrer quando você coloca um comércio rapidamente esperando fechar uma posição enquanto uma ordem anterior para fechar a mesma posição já teve uma execução em vôo. Os cenários exatos em que um excesso de enchimento pode ocorrer são altamente dependentes da programação específica da estratégia. Por padrão, o NinjaTrader irá proteger contra enxertos, interrompendo a estratégia, mas isso NÃO é desejável, pois a estratégia encerra todas as posições como uma ordem de mercado com derrapagem e exclui a estratégia do gráfico. O código BWT é talvez o único autotrader que realmente e corretamente aborda este problema corretamente com nossa própria rotina personalizada que não registrou um excesso de carga desde que o BWT Precision Autotrader versão 7 foi lançado & # 8230;
A Blue Wave Trading vem desenvolvendo sistemas de negociação automatizados desde 1997 e tornou-se um dos principais desenvolvedores de estratégias automatizadas no lado varejista da indústria comercial, apoiando as aplicações NinjaTrader e Trade Station. A negociação automatizada trará todos os elementos desejáveis de um comerciante bem sucedido para sua negociação - Disciplina, Estrutura, Objetivos de negociação diária, Eficiência de execução, entrada e saída e muito, muito mais & # 8230;
Blue Wave Trading Automated Trading Systems.
BWT Precision AutoTrader para NinjaTrader.
A Blue Wave Trading começou a desenvolver sistemas em Tradestation em 1997 e se tornou o SIXO NinjaTrader 3rd Party Add On Developer em julho de 2007. Desde então, quase 400 vendedores foram adicionados após 2009. BWT talvez fosse, se não o primeiro fornecedor, a oferecer uma estratégia de negociação automatizada na plataforma NinjaTrader 6.5. Nunca abandonamos nosso algoritmo original e lógica do sistema, mas continuamos aprimorando e aprimorando a funcionalidade de cada ano.
Eu, pessoalmente, tenho codificado, criando e negociado estratégias automatizadas desde 1997. Literalmente, codifiquei e testei centenas, senão milhares de regras de negociação. Adicione à mistura que eu tinha uma carreira de mais de 20 anos como uma série 6 e amp; 26 corretor principal, Conselheiro de Investimento registrado, ganhou uma competição comercial e gerenciou uma carteira de 6 milhões fazendo cronograma de fundos mútuos e negociou uma centena de lote no EMIN SP para meus clientes particulares durante esse período. Fui convidado a consultar os negociantes do piso no CBOT, e fui convidado para os escritórios domésticos de dois grandes players no comércio on-line. Leia minha biografia completa aqui.
BWT Precision Trend Algo Trading Credibility.
O conjunto de indicadores BWT original foi chamado Blue Wave Trading Precision Indicators e MTS Software porque MTS significa "Sistema de Negociação Manual". Este indicador de sequência e inversão utilizado no BWT Precision AutoTrader foi um conceito original e foi o primeiro conjunto de Indicadores do tipo oferecido na Plataforma NinjaTrader em 2007, clique para ver o Press Release original do NinjaTrader.
O que é um sistema de negociação algorítmico ou automatizado?
O comércio algorítmico, também chamado de negociação automática, negociação em caixa preta, ou troca de algo, é o uso de plataformas eletrônicas para inserir ordens comerciais com um algoritmo que executa instruções de negociação pré-programadas que contabilizam uma variedade de variáveis, como timing, preço e volume. [1] O comércio algorítmico é amplamente utilizado por bancos de investimento, fundos de pensão, fundos mútuos e outros comerciantes institucionais de compra (orientados por investidores), para dividir grandes negócios em vários negócios menores para gerenciar o impacto e o risco do mercado. [2] [3]
A negociação algorítmica pode ser usada em qualquer estratégia de investimento, incluindo a criação de mercado, propagação entre mercados, arbitragem ou especulação pura (incluindo seguimento de tendências). A decisão e a implementação do investimento podem ser aumentadas em qualquer etapa com suporte algorítmico ou podem funcionar de forma totalmente automática.
Um terço de todas as negociações de ações da União Européia e dos Estados Unidos em 2006 foram conduzidas por programas automáticos ou algoritmos. [9] A partir de 2009, os estudos sugeriram que as empresas HFT representaram 60-73% de todo o volume de negociação de ações dos EUA, com esse número caindo para aproximadamente 50% em 2012. [10] [11] Em 2006, na London Stock Exchange, Mais de 40% de todas as encomendas foram introduzidas por comerciantes algorítmicos, com 60% previstos para 2007. Os mercados americanos e os mercados europeus geralmente têm uma maior proporção de negócios algorítmicos do que outros mercados, e as estimativas para 2008 variam como uma proporção de 80% em alguns mercados. Os mercados cambiais também possuem negociação algorítmica ativa (cerca de 25% das encomendas em 2006). [12] Os mercados de futuros são considerados bastante fáceis de integrar na negociação algorítmica, [13], com cerca de 20% do volume de opções esperado gerado por computador até 2010. [informações datadas] [14] Os mercados de títulos estão se movendo em direção a um maior acesso a algoritmos comerciantes. [15]
Isenção de responsabilidade do governo dos EUA.
Commodity Futures Trading Commission. * Futuros, opções e negociação em moeda local têm grandes recompensas potenciais, mas também grande risco potencial. Você deve estar ciente dos riscos e estar disposto a aceitá-los para investir nos mercados de futuros e opções. Não troque com dinheiro que não pode perder. Este site não é uma solicitação nem uma oferta para comprar ou vender futuros ou opções. Nenhuma representação está sendo feita que qualquer conta será ou provavelmente alcançará lucros ou perdas similares às discutidas neste site. O desempenho passado de qualquer sistema ou metodologia comercial não é necessariamente indicativo de resultados futuros.
REGRA CFTC 4.41.
RESULTADOS DE DESEMPENHO HIPOTÉTICOS OU SIMULADOS TÊM CERTAS LIMITAÇÕES. DESEJO UM REGISTRO DE DESEMPENHO REAL, OS RESULTADOS SIMULADOS NÃO REPRESENTAM A NEGOCIAÇÃO REAL. TAMBÉM, DESDE QUE OS NEGÓCIOS NÃO FORAM EXECUTADOS, OS RESULTADOS PODERÃO TER COMPRIMIDO COM COMPENSADO PARA O IMPACTO, SE QUALQUER, DE CERTOS FATORES DE MERCADO, COMO FALTA DE LIQUIDEZ. PROGRAMAS DE NEGOCIAÇÃO SIMULADOS EM GERAL SÃO TAMBÉM SUJEITOS AO FATO QUE ESTÃO DESIGNADOS COM O BENEFÍCIO DE HINDSIGHT. NENHUMA REPRESENTAÇÃO ESTÁ FAZENDO QUE QUALQUER CONTA VOCE OU POSSIBILIDADE DE ALCANÇAR LUCROS OU PERDAS SIMILARES ÀOS MOSTRADOS.
O comércio de futuros contém um risco substancial e não é para todos os investidores. Um investidor poderia potencialmente perder todo ou mais do que o investimento inicial. O capital de risco é o dinheiro que pode ser perdido sem prejudicar a segurança financeira ou o estilo de vida. Somente o capital de risco deve ser usado para negociação e somente aqueles com capital de risco suficiente devem considerar a negociação. O desempenho passado não é necessariamente indicativo de resultados futuros.
Os resultados de desempenho hipotéticos têm muitas limitações inerentes, algumas das quais estão descritas abaixo. Nenhuma representação está sendo feita que qualquer conta será ou provavelmente conseguirá lucros ou perdas semelhantes às exibidas. Na verdade, há freqüentemente diferenças acentuadas entre resultados de desempenho hipotéticos e os resultados reais posteriormente alcançados por qualquer programa comercial específico. Uma das limitações dos resultados de desempenho hipotéticos é que eles geralmente são preparados com o benefício de retrospectiva. Além disso, a negociação hipotética não envolve risco financeiro, e nenhum registro de negociação hipotético pode explicar completamente o impacto do risco financeiro na negociação real. Por exemplo, a capacidade de suportar perdas ou de aderir a um determinado programa de negociação, apesar das perdas comerciais, são pontos importantes que também podem prejudicar os resultados comerciais reais. Existem inúmeros outros fatores relacionados aos mercados em geral ou à implementação de qualquer programa de negociação específico que não possa ser totalmente contabilizado na elaboração de resultados de desempenho hipotéticos e todos os quais podem prejudicar os resultados comerciais reais.
Blue Wave Trading Blog.
Divulgação de Risco: Futuros e negociação forex contém um risco substancial e não é para cada investidor. Um investidor poderia potencialmente perder todo ou mais do que o investimento inicial. O capital de risco é o dinheiro que pode ser perdido sem comprometer a segurança financeira ou o estilo de vida. Somente o capital de risco deve ser usado para negociação e somente aqueles com capital de risco suficiente devem considerar a negociação. O desempenho passado não é necessariamente indicativo de resultados futuros.
Divulgação de desempenho hipotético: resultados de desempenho hipotéticos têm muitas limitações inerentes, algumas das quais estão descritas abaixo. Nenhuma representação está sendo feita que qualquer conta será ou provavelmente alcançará lucros ou perdas semelhantes às exibidas; na verdade, há freqüentemente diferenças acentuadas entre resultados de desempenho hipotéticos e os resultados reais posteriormente alcançados por qualquer programa comercial específico. Uma das limitações dos resultados de desempenho hipotéticos é que eles geralmente são preparados com o benefício de retrospectiva. Além disso, a negociação hipotética não envolve risco financeiro, e nenhum registro de negociação hipotético pode explicar completamente o impacto do risco financeiro de negociação real. por exemplo, a capacidade de suportar perdas ou de aderir a um determinado programa de negociação, apesar das perdas comerciais, são pontos importantes que também podem afetar negativamente os resultados comerciais reais. Existem inúmeros outros fatores relacionados aos mercados em geral ou à implementação de qualquer programa de negociação específico que não pode ser totalmente contabilizado na preparação de resultados de desempenho hipotéticos e tudo o que pode afetar negativamente os resultados da negociação.
Desenvolvendo um Sistema Automatizado de Negociação.
Foi meu sonho desde que eu era criança e eu vi o filme de Matthew Broderick War Games em um teatro em 1983 para construir um sistema de negociação automatizado usando o AI. Este ano eu comecei a viver esse sonho. Eu chamo este projeto jVest.
Curioso como eu o construí? Aqui está uma descrição do que criei:
O jVest é um sistema de análise e mercado de mercado de alto volume de transações em tempo real que implementa a aprendizagem de máquinas para análises preditivas. Possui uma UI HTML 5 usando WebSockets para transmitir continuamente informações em tempo real para o navegador. A UI em si é amplamente construída usando Angular 2 com Tipografia. Ele usa o JMS para distribuir as mensagens recebidas de dados de terceiros depois de convertê-los em POJOs para assinantes. Usando um ouvinte, ele persiste selecionando dados em um RDBMS usando JPA. Usando outro ouvinte, ele é transmitido para a lógica do negócio, que transmite sua saída transformada para a interface de usuário da web via WebSockets. Ele também usa o padrão Observer para fluir os dados através de muitos consumidores e produtores e injeção (CDI) para simplificar as interações complexas e fornecer um design altamente extensível.
Ele usa REST para interações do usuário com o servidor e WebSockets para transmissão em tempo real. Para lidar com a conversão de POJOs para / de XML, ele aproveita JAXB para organizar e aproveita as capacidades de negociação do Resteasy na camada REST. Todos os POJOs transportáveis implementam uma interface Marshallable fornecendo métodos padrão comuns para fazer o JAXB mashalling para / de XML e JSON, que é usado para WebSockets, bem como a conversão de XML para POJOs de provedores de dados upstream.
Para a aprendizagem de máquinas, ele usa JServe para integrar com R sobre TCP / IP, o que permite uma escalabilidade elevada através de nós R distribuídos. R lida com os algoritmos preditivos, como regressão linear e KNN. Os usuários podem consultar através da UI da web para analisar os dados do mercado, bem como criar monitores que atualizem regularmente as previsões na interface do usuário da Web via WebSockets.
Como você pode ver, não é apenas um projeto divertido, mas superou as habilidades usando as atualizações mais recentes da pilha Java EE. Além disso, aprendi coisas completamente novas, como o Angular 2 com o tipo de texto que está se tornando uma solução de UI muito popular que incentiva a criação de componentes de UI altamente reutilizáveis; e R, um dos principais idiomas para fazer aprendizagens de máquina com uma grande quantidade de pacotes de análise estatística prontamente disponíveis.
O uso de R para fazer o aprendizado da máquina não é apenas uma vantagem em termos de tecnologia, é uma área de rápido crescimento devido à proliferação de grandes quantidades de dados em computadores, computadores mais rápidos e armazenamento mais barato.
Os limites para a velocidade e o armazenamento do computador foram os motivos que eu deixei de seguir a AI nos anos 80 após o meu dabbling inicial com ele. É excitante poder apanhar esse sonho hoje, agora que o hardware agora pode fazer coisas quase impossíveis de imaginar na década de 80.
28 de outubro de 2016 e # 8211; Adicionado clustering via WebSockets.
Eu adicionei a capacidade de agrupar servidores usando o WebSockets. Isso supera uma limitação. O provedor de dados upstream permite apenas um fluxo em tempo real ao vivo por conta, embora todos os nós possam usar a API síncrona do fornecedor a montante (Think & # 8220; REST & # 8221;). Para superar a limitação de fluxo, outros nós agora podem se conectar via WebSockets para receber os dados de transmissão em tempo real. Como cada instância do aplicativo pode atuar tanto como provedor quanto como consumidor, isso permite uma escala teóricamente ilimitada do processo de negócios e da camada web / UI através de uma topologia hierárquica. Como todos os serviços de transmissão são iniciados através de REST ou agendamento, este é 100% dinamicamente configurável em tempo de execução, tanto a partir de uma perspectiva orientada pelo usuário como, na estrada, talvez para descoberta automática, balanceamento de carga e alta disponibilidade.
Descrição técnica: isso usa WebSockets para Java-para-Java em um contêiner web EE. O nó de extremidade do fornecedor pega mensagens para enviar usando o Observes e o lado do cliente dispara as mensagens que recebe exatamente como faria se fossem recebidas em seu MDB se ele estivesse executando o coletor de dados que lida com transmissão em tempo real com o provedor upstream. Isso demonstra a poderosa capacidade de conexão e extensibilidade do padrão Observer. Ele usa um codificador e decodificador WebSockets para converter todas as mensagens de / para JSON para serialização. Os en / decodificadores foram fáceis de criar, uma vez que todos os POJOs de mensagens que entram e saem dos pontos de extremidade suportam internamente o empate bidirecional JAXB de XML e JSON acessível através de uma interface comum.
Começando: Construindo um Sistema de Negociação Totalmente Automatizado.
Nos últimos 6 meses, fiquei focado no processo de construção da pilha de tecnologia completa de um sistema de negociação automatizado. Eu encontrei muitos desafios e aprendi muito sobre os dois métodos diferentes de backtesting (Vectorizado e Evento conduzido). Na minha jornada de construção de um backtester dirigido por um evento, surpreendi que o que você acabasse fosse perto da pilha de tecnologia completa necessária para construir uma estratégia, testá-la e executar a execução ao vivo.
O meu maior problema ao abordar o problema foi a falta de conhecimento. Olhei em muitos lugares para uma introdução à construção da tecnologia ou um blog que me guiaria. Encontrei alguns recursos que vou compartilhar com você hoje.
Para iniciantes:
Para os leitores novos para negociação quantitativa, eu recomendaria o livro de Ernie P. Chan intitulado: Negociação Quantitativa: como construir seu próprio negócio de negociação algorítmica. Este livro é o básico. Na verdade, é o primeiro livro que eu li em negociação quantitativa e, mesmo assim, achei muito básico, mas há algumas notas que você deveria tomar.
Da página 81-84 Ernie escreve sobre como no nível de varejo uma arquitetura de sistema pode ser dividida em estratégias semi-automáticas e totalmente automatizadas.
Um sistema semi-automatizado é adequado se você deseja fazer alguns negócios por semana. Ernie recomenda o uso de Matlab, R ou mesmo do Excel. Utilizei todas as 3 plataformas e este é o meu conselho:
Saltei Matlab, custou muito dinheiro e eu só consegui acesso aos laboratórios universitários. Não há muito material de treinamento como blogs ou livros que irão ensinar-lhe como codificar uma estratégia usando o Matlab. R tem toneladas de recursos que você pode usar para aprender a construir uma estratégia. Meu blog favorito abordando o tópico é: QuantStratTradeR executado por Ilya Kipnis. O Microsoft Excel é provavelmente o local onde você iniciará se você não tiver experiência de programação. Você pode usar o Excel para negociação semi-automatizada, mas não vai fazer o truque quando se trata de construir a pilha de tecnologia completa.
Quadro semi-automático pg 81.
Sistemas de negociação totalmente automatizados são para quando você deseja colocar negócios automaticamente com base em um feed de dados ao vivo. Eu codifiquei o meu em C #, QuantConnect também usa C #, QuantStart anda pelo leitor através da construção dele em Python, Quantopian usa Python, HFT provavelmente usará C ++. Java também é popular.
Estrutura de negociação totalmente automatizada pg 84.
Passo 1: Obter uma vantagem.
Faça o Programa Executivo em Negociação Algorítmica oferecido pela QuantInsti. Acabei de começar o curso e o primeiro conjunto de palestras foi na arquitetura do sistema. Isso me salvaria cerca de 3 meses de pesquisa se eu tivesse começado aqui. As palestras me acompanharam por cada componente que eu precisaria, bem como uma descrição detalhada do que cada componente precisa fazer. Abaixo está uma captura de tela de uma das suas lâminas utilizadas na apresentação:
Você também pode usar esse quadro geral ao avaliar outros sistemas de negociação automática.
No momento da escrita, estou apenas na terceira semana de palestras, mas estou confiante de que um profissional poderá construir uma estratégia de negociação totalmente automatizada que, com um pouco de polonês, possa ser transformada em um hedge fund quantitativo .
Nota: o curso não está focado na construção da pilha de tecnologia.
Etapa 2: codifique um backtester baseado em eventos básicos.
O blog de Michael Hallsmore e o quantstart & amp; livro "Negociação Algorítmica de Sucesso"
Este livro possui seções dedicadas à construção de um backtester dirigido por eventos robustos. Ele dirige o leitor através de uma série de capítulos que irão explicar sua escolha de linguagem, os diferentes tipos de backtesting, a importância do backtesting dirigido a eventos e como codificar o backtester.
Michael apresenta o leitor às diferentes classes necessárias em um design orientado a objetos. Ele também ensina o leitor a construir um banco de dados mestre de valores mobiliários. É aqui que você verá como a arquitetura do sistema da QuantInsti se encaixa.
Nota: Você precisará comprar seu livro: "Successful Algorithmic Trading", seu blog deixa para fora muita informação.
Passo 3: Vire a TuringFinance.
O programa EPAT Leitura "Successful Algorithmic Trading" & amp; codificando um backtester em um idioma diferente da sua escolha.
Você deve se mudar para um blog chamado TuringFinance e ler o artigo intitulado "Algorithmic Trading System Architecture" Por: Stuart Gordon Reid. Em sua publicação, ele descreve a arquitetura seguindo as diretrizes dos padrões ISO / IEC / IEEE 42010 e padrão de descrição de arquitetura de engenharia de software.
Eu achei esta publicação muito técnica e tem algumas ótimas idéias que você deve incorporar na sua própria arquitetura.
Uma captura de tela de sua postagem.
Passo 4: Estudar sistemas de comércio aberto.
4.1) Quantopian.
Escusado será dizer que Quantopian deve ser adicionado a esta lista e estou com vergonha de dizer que não passei muito tempo usando sua plataforma (devido à minha escolha de linguagem). Quantopian tem muitas vantagens, mas as que melhoram para mim são as seguintes:
Fácil de aprender Python Acesso gratuito a muitos conjuntos de dados Uma grande comunidade e competições Eu adoro como eles hospedam QuantCon!
Quantopian é líder de mercado neste campo e é amado por quants por toda parte! Seu projeto de código aberto está sob o nome de código Zipline e isso é um pouco sobre isso:
"Zipline é o nosso motor de código aberto que alimenta o backtester no IDE. Você pode ver o repositório de códigos no Github e contribuir com solicitações de envio para o projeto. Existe um grupo do Google disponível para procurar ajuda e facilitar discussões ".
Aqui está um link para sua documentação:
4.2) QuantConnect.
Para aqueles que não estão familiarizados com a QuantConnect, eles fornecem um mecanismo de troca algorítmica de código aberto completo. Aqui está um link.
Você deve dar uma olhada em seu código, estudá-lo, & amp; dar-lhes elogios. Eles são competição de Quantopians.
Gostaria de aproveitar esta oportunidade para agradecer a equipe da QuantConnect por me deixar escolher seu cérebro e pelo brilhante serviço que eles fornecem.
Aqui está um link para sua documentação:
Observações finais:
Espero que este guia ajude os membros da comunidade. Eu queria ter essa visão 6 meses atrás, quando comecei a codificar nosso sistema.
Gostaria de chegar à comunidade e perguntar: "Quais bons cursos de negociação algorítmica você conhece?" Eu gostaria de escrever uma publicação que analisa o tópico e fornece uma classificação. Existem recomendações para a construção de um sistema de negociação totalmente automatizado que você gostaria de adicionar a esta publicação?
Compartilhar isso:
Compartilhe essa entrada.
Você pode gostar também.
Bom artigo. Eu gostaria de ter tido cerca de 6 meses atrás. Eu uso QuantConnect porque sou um programador C #. Achei muito conveniente poder fazer o download do teste Lean e back test localmente. Rummaging através do seu código também é valioso. Além disso, eles cortaram um acordo com a Trader por negócios de US $ 1. Isso ajuda muito. Não sou tão saliente sobre spreads e execução da Trader. O IB pode ser melhor para isso.
Vou dar uma olhada no curso que você mencionou.
Você não mencionou a Quantocracy ou RBloggers. Ambos são recursos muito valiosos.
O que você usa para traçar resultados de testes de volta? Eu logro os valores do OHLC e do indicador para csv do evento OnData e estou realmente cansado de usar o Excel para traçar os resultados. Gostaria de apontar um pacote de gráficos para um arquivo de dados e simplesmente ir.
Você ainda possui um fornecedor de caixas de seleção?
Tenho um pensamento sobre os sistemas dirigidos a eventos. O problema com os eventos é que eles são assíncronos e latentes. Parece que eles são inevitáveis assim que você obtém uma corretora envolvida, então eu tenho sonhado com um sistema de streaming mais seguindo os princípios da programação funcional.
& # 8211; Injeste um fluxo de tiquetaque ou barra.
& # 8211; Execute-o através de um processo de cálculo de indicadores, execução de análise ou ML, e assim por diante.
& # 8211; Retornar um sinal.
& # 8211; Envie-o para o corretor para executar.
Em seguida, em um fluxo separado.
& # 8211; Receba uma resposta do corretor.
O problema, é claro, é o estado. Tenho margem suficiente para fazer o comércio? O que está no meu portfólio? Como está funcionando? Normalmente, o corretor api pode ser consultado para descobrir essas coisas, mas leva tempo e é assíncrono. Eu também estou olhando extensões Rx. Dessa forma, o sistema pode reagir às mudanças no sistema através do padrão observável.
Os eventos são ótimos para cliques no mouse. Não é tão bom para processamento transacional de alto volume.
Esta é exatamente a abordagem que tomei com minhas próprias coisas. Essencialmente, eu tenho um & # 8216; normal & # 8217; programa que envolve uma pequena parte que é conduzida a eventos para falar com o corretor (IB API). Agora, para o problema do estado. Você tem duas escolhas; obter o estado do corretor, ou armazená-lo internamente, atualizando-o quando você receber um preenchimento. Isso significa que há momentos em que você não conhece seu estado ou quando as duas fontes de estado estão potencialmente em conflito (dados ruins ou atrasos). Parte disso depende da rapidez com que você troca. A menos que você esteja negociando com muita rapidez, então, pausando se você tiver um conflito de estado, ou você está incerto de estado, é melhor do que prosseguir sem saber o seu estado. Eu uso um banco de dados & # 8216; lock & # 8217; paradigma para lidar com isso.
Quanto a quase tudo o que você pediu, você está perto da resposta em Reactive Extension (Rx).
Com Rx indo de tiques para velas é trivial.
Passar de Velas para Indicadores é trivial.
Indicadores de composição de outros indicadores é trivial.
Escrever Posições de Indicadores é trivial.
Composição de Portfolios (como realizada ao longo do tempo) das Posições é trivial.
Simular o modelo de risco é trivial.
Back testing ou trading live é simplesmente decidir entre uma transmissão ao vivo de dados ou uma repetição simulada de dados do banco de dados.
Executar é trivial.
A implementação é possível em tudo, desde C # até F # para JavaScript para C ++ em código quase idêntico.
A otimização é feita rapidamente porque o Rx puramente funcional é massivamente paralisável ao GPU.
É certo que a otimização e alimentação do efeito da otimização contínua de volta ao teste de back-back não é trivial, mas dado que não é trivial de qualquer maneira, eu irei deixar esse slide 😉
Puramente funcional (ou perto dela) A Rx é, na minha opinião, a única maneira de abordar a infraestrutura desse problema.
Conheço o sistema que quero negociar. Eu não quero programar ou aprender algo que alguém já conhece. Então, quem posso contratar para levar o sistema que eu quero usar e automatizá-lo. Por automatizar isso, quero dizer, eu não quero olhar para ele. Eu vou olhar os resultados uma vez por semana e os negócios serão executados sem a minha atenção. Parece estranho para mim que, em 2016, tanto esforço precisa seguir um conjunto de regras e ter essas regras executadas no meu corretor.
Eu sugeriria inscrever-se com o Quantopian e depois encontrar alguém dentro da comunidade lá para construir a estratégia para você. Eles serão capazes de construí-lo para você dentro da plataforma IB Brokers e ser totalmente automatizado.
Deixe-me dizer, porém, que acho que você deve monitorá-lo de perto, e não apenas "esqueça-o para" # 8221 ;.
Comments
Post a Comment