Fundamentos de Tributação Forex Para iniciantes forex comerciantes, o objetivo é simplesmente fazer comércios bem sucedidos. Em um mercado onde os lucros - e as perdas - podem ser realizados em um piscar de olhos, muitos investidores se envolver para tentar sua mão antes de pensar a longo prazo. No entanto, se você está planejando fazer forex um caminho de carreira ou estão interessados em ver como sua estratégia panelas, existem enormes benefícios fiscais que você deve considerar antes de seu primeiro comércio. Embora a negociação de forex pode ser um campo confuso para dominar, os impostos de arquivamento nos EUA para a sua relação de lucro pode ser uma reminiscência do Oeste Selvagem. Aqui está uma quebra do que você deve saber. Para os investidores de opções e futuros Para quem quer começar em opções de forex e futuros são agrupados no que são conhecidos como IRC 1256 contratos. Estes contratos IRS-sancionados significa que os comerciantes obter uma menor 6040 consideração fiscal. O que isto significa é 60 de ganhos ou perdas são contados como perda de ganhos de capital de longo prazo e os 40 restantes como curto prazo. Os dois principais benefícios deste tratamento fiscal são: Tempo Muitos comerciantes de opções de futuros de Forex fazer várias transações por dia. Destes negócios, até 60 podem ser contados como ganhos de capital de longo prazo. Taxa de imposto Quando as ações de negociação (realizada menos de um ano), os investidores são tributados à taxa de curto prazo. Ao negociar futuros ou opções, os investidores são tributados a uma taxa de 23 (calculado como 60 vezes a longo prazo 15 taxa máxima mais 40 taxa de curto prazo 35 vezes taxa máxima). Para Investidores Over-The-Counter (OTC) A maioria dos comerciantes spot são tributados de acordo com IRC 988 contratos. Estes contratos são para operações de câmbio liquidadas dentro de dois dias, tornando-os abertos a ganhos e perdas ordinárias como relatado ao IRS. Se você forex forex local provavelmente será agrupado nesta categoria. O principal benefício deste tratamento tributário é a proteção contra perdas. Se você experimentar perdas líquidas através de sua negociação de fim de ano, sendo categorizado como um comerciante 988 serve como um grande benefício. Como no contrato de 1256, você pode contar todas as suas perdas como perdas ordinárias, em vez de apenas os primeiros 3.000. Comparando os dois contratos do IRC 988 são mais simples do que os contratos do IRC 1256, na medida em que a taxa de imposto permanece constante para os ganhos e perdas - uma situação ideal para perdas. 1256 contratos, enquanto mais complexos, oferecem mais poupança para um comerciante com ganhos líquidos - mais 12. A diferença mais significativa entre os dois é a de ganhos e perdas antecipados. A solução: Escolhendo sua categoria com cuidado Agora vem a parte complicada: decidir como arquivar impostos para sua situação. O que torna o arquivamento cambial confuso é que enquanto optionsfutures e OTC são agrupados separadamente, você como o investidor pode escolher um contrato 1256 ou 988. A parte complicada é que você tem que decidir antes de 1 de janeiro do ano comercial. Os dois tipos de arquivamentos forex conflito, mas, na maioria das empresas de contabilidade você estará sujeito a 988 contratos, se você for um comerciante local e 1256 contratos, se você é um comerciante de futuros. O fator chave é conversar com seu contador antes de investir. Uma vez que você começar a negociar você não pode mudar de 988 para 1256 ou vice-versa. A maioria dos comerciantes vai antecipar ganhos líquidos (por que razão comércio) para que eles vão querer eleger fora de seu status 988 e em 1256 status. Para sair de um status 988 você precisa fazer uma nota interna em seus livros, bem como arquivo com o seu contador. Esta complicação se intensifica se você troca ações, bem como moedas. As transacções de acções são tributadas de forma diferente e pode não ser possível escolher 988 ou 1256 contratos, dependendo do seu estatuto. Mantendo o controle: o seu registro de desempenho Em vez de confiar em suas declarações de corretagem, uma forma mais precisa e tax-friendly de manter o controle de profitloss é através de seu registro de desempenho. Subtrair depósitos em dinheiro (para suas contas) e adicionar saques (de suas contas) Subtrair renda de juros e adicionar juros pagos Adicionar outras despesas de negociação A fórmula do registro do desempenho lhe dará uma descrição mais exata de sua relação do profitloss e fará o arquivamento year-end mais fácil para você e seu contador. Coisas para lembrar Quando se trata de tributação forex, existem algumas coisas que você vai querer manter em mente, incluindo: Prazos para a apresentação. Na maioria dos casos, você é obrigado a eleger um tipo de situação fiscal até 1 de janeiro. Se você é um novo operador, você pode tomar essa decisão antes de seu primeiro comércio - se é em 1 de janeiro ou 31 de dezembro. É também digno de nota Que você pode mudar o seu estado no meio do ano, mas apenas com a aprovação do IRS. Manutenção detalhada de registros. Manter bons registros (e backups) pode poupar tempo quando a temporada de impostos se aproximar. Isso lhe dará mais tempo para o comércio e menos tempo para preparar os impostos. Importância do pagamento. Alguns comerciantes tentam vencer o sistema e ganhar uma renda total ou a tempo parcial negociação forex sem pagar impostos. Desde over-the-counter trading não é registrado com a Commodities Futures Trading Commission (CFTC) alguns comerciantes pensam que podem fugir com ele. Não só isso é antiético, mas o IRS vai apanhar eventualmente e taxas de evasão fiscal irá trunfo quaisquer impostos que você devia. O Bottom Line Trading Forex é tudo sobre a capitalização de oportunidades e aumentar as margens de lucro para que um investidor sábio vai fazer o mesmo quando se trata de impostos. Tomando o tempo para arquivar corretamente pode poupar centenas se não milhares em impostos, tornando-se uma transação que vale a pena o tempo. Frexit curto para quotFrancês exitquot é um spin-off francês do termo Brexit, que surgiu quando o Reino Unido votou. Uma ordem colocada com um corretor que combina as características de ordem de parada com as de uma ordem de limite. Uma ordem de stop-limite será. Uma rodada de financiamento onde os investidores comprar ações de uma empresa com uma avaliação menor do que a avaliação colocada sobre a. Uma teoria econômica da despesa total na economia e seus efeitos no produto e na inflação. A economia keynesiana foi desenvolvida. A detenção de um activo numa carteira. Um investimento de carteira é feito com a expectativa de ganhar um retorno sobre ele. Este. Um rácio desenvolvido por Jack Treynor que mede os retornos obtidos em excesso do que poderia ter sido obtido em um riskless. Section 1256 Contrato DEFINIÇÃO da Seção 1256 Contrato Um tipo de investimento definido pelo Internal Revenue Code (IRC) como um contrato de futuros regulamentado, Contrato de moeda estrangeira, opção não patrimonial. Opção de equity de negociante ou contrato de futuros de títulos de negociante. Cada contrato detido por um contribuinte no final do ano fiscal é tratado como se fosse vendido pelo seu justo valor de mercado. E os ganhos ou perdas são tratados como ganhos de capital a curto ou longo prazo. O Internal Revenue Service (IRS) é responsável pela implementação do IRC. QUEBRANDO A Seção 1256 Contrato Investidores relata ganhos e perdas para os investimentos do Contrato de Seção 1256 usando o Formulário 6781. As transações de hedge são tratadas de forma diferente. Informações mais específicas podem ser encontradas no Subtítulo A (Imposto de Renda), Capítulo 1 (Impostos e Sobretaxas Normais), Subcapítulo P (Ganhos e Perdas de Capital), Parte IV (Regras Especiais para Determinação de Ganhos e Perdas de Capital) do Código de Receita Federal. Atualização: Eu atualizei o código para que ele funciona com Oandas nova API. Obter aqui Tempo para falar sobre corretores, como colocar um comércio de forma programática e mais importante como não ficar enganado. Um corretor não é nada mais do que uma empresa que permite que você comércio (comprar ou vender) ativos em um mercado através de sua plataforma. O que é muito importante para algotrading é: O corretor oferece uma API para que possamos fazer pedidos Você pode ter uma conta demo para executar seu ambiente de teste e experimentar A propagação é tão pequena quanto possível No nosso caso, nós realmente não se preocupam com propagação Como nós não estaremos fazendo negociação de alta freqüência em breve. Mesmo que os corretores são regulamentados, houve incidentes nos últimos dois anos, foram corretores dobrado devido a certas condições. Se o broker oferece-lhe alguma alavanca louca (como 1: 200) Se o corretor parece estar em um país muito estranho O que poderia acontecer É que você começa a fazer algum dinheiro e você arent ser capaz de puxá-los para fora. A sério. Situação super estressante. Mas vamos mudar para uma nota mais feliz que está abrindo uma conta e colocando o nosso primeiro comércio programático. Whooha eu estou usando Oanda como um corretor (eu não sou afiliado com eles) e eles oferecem uma API bastante decente, bibliotecas no github e uma conta demo gratuita. Depois de iniciar sessão na sua conta demo, vá para Gerir o Acesso à API. Lá você pode encontrar sua chave de API que vamos usar em nosso sistema para colocar comércios. CERTIFIQUE-SE DE NÃO COMPARTILHAR ESTA CHAVE. O código para isso é e todos os outros posts está em github e você pode instalá-lo e executá-lo muito facilmente. Atualização: Oanda lançou um novo mecanismo de execução (kickass) chamado v20 e lançaram uma nova API (melhorada). Esta postagem foi atualizada para usar a nova API, mas se (por qualquer motivo) você quiser verificar o código antigo, ele está aqui. Você tem sorte Você conectar-se a Oanda precisa de um arquivo conf - que você pode gerar usando um script que Oanda fornece aqui ou você pode apenas criá-lo sozinho. Por que você quer que Primeiro de tudo quando se trata de credenciais (e meu dinheiro), eu prefiro saber tudo o que está acontecendo. E eu não gosto de ter que instalar PyYAML apenas para ler um arquivo conf. Sinta-se livre para usar qualquer método. Agora, prepare-se para ser espantado. O código é direto. Inicializamos a API: e agora vamos colocar uma ordem (comprar 5000 unidades de EURUSD) Verifique o preço atual é tão fácil Super fácil. Não se preocupe com o que é EURUSD ou quantas unidades estamos comprando ou o que uma ordem de mercado é. Por agora, nós colocamos nosso primeiro comércio de nosso laptop e nós estamos indo construir nossa própria API para colocar comércios. Material emocionante Você pode ler a documentação do Oandas aqui para ver o que mais você pode fazer com sua API e encontrar a biblioteca do Python aqui. Tons de exemplos estão disponíveis na página do github de Oandas aqui. Vindo acima em seguida, conectando a um sistema real de algotrading AO VIVO, funcionando de meu RaspberryPI em casa. Você será capaz de ver o (quase) programa final em execução e bem falar mais sobre Forex e estratégias. Se você tiver mais comentários, me ping no jonromero ou cadastre-se para o boletim. Legal outro. Este é um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentação e diversão. Todas as sugestões aqui não são conselhos financeiros. Se você perder algum (ou todos) você dinheiro porque você seguiu qualquer negociação conselhos ou implantado este sistema em produção, você não pode culpar este blog aleatório (andor me). Aproveite a seu próprio risco. Isto é mais de como construir a sua própria estratégia algotrading - a edição Ethereum e não um blog ganhar dinheiro rápido. Também é um exemplo real com retornos reais (e erros reais de produção que me custaram dinheiro), onde você pode ver como identificar oportunidades, por que algotrading é incrível e por que o gerenciamento de riscos pode salvar sua bunda. Recebo essa pergunta quase diariamente. Como posso encontrar uma boa estratégia Como posso construir meu próprio Eu preciso ter um PhD em matemática Newsflash: Se eu posso escrever uma estratégia, qualquer pessoa pode escrever uma estratégia. Confie em mim. O único truque é procurar um simples. Update: Este post foi reescrito pelo menos cinco vezes (como o drama DAO escalado) e é o exemplo perfeito de uma estratégia de fazer um círculo completo. Eu comecei a me envolver com Ethereum no início, como eu realmente gostava de executar seus algoritmos sobre a coisa blockchain. Quando TheDAO saiu, eu li tudo sobre ele e amei a idéia. Você não precisa entender o que Ethereum, theDAO, blockchain é neste momento (eu prometo que vou ramble em um outro post). As mesmas idéias se aplicam ao Forex, estoques mesmo bolas Pokemon. Meu quatro passo - capitão óbvio - sistema Eu pessoalmente, tenho uma maneira específica que eu trabalho. Passo um . Identifique uma idéia. Minha idéia neste caso é que há um par de trocas oferecendo Ethereum e tokens DAO. E se houvesse uma arbitragem entre aqueles dois passos. Teste manualmente a idéia. Se algo kinda funciona, eu estou em algo. Tudo o que eu tinha a fazer é executar todos os passos manualmente e anote quaisquer taxas, condições ou qualquer coisa que deve ser documentada. Passo três . Automatizar Este algoritmo não é um algoritmo de negociação de alta freqüência. Há uma quantidade considerável de tempo de risco (que você pode eliminar, bem ver mais tarde), mas o que eu fiz poderia ser feito manualmente. O problema é que eu teria que gastar todo o tempo na frente do meu computador, verificando se há uma condição de arbitragem e se houve, eu tive que agir rápido e sem estragar. Oh e eu tive que recrutar cinco dos meus amigos para escalar isso. Longa história curta, passei Presidentes Day escrevendo um programa simples que irá reproduzir todas as minhas etapas manuais. O programa iria falhar e não era mais que 100 linhas de código. Esta é a fase de coleta de dados onde eu vejo se há uma vantagem que os algoritmos podem me dar. As vantagens podem ser: Algo que seja automatizado e executado 1000 vezes por segundos ou 1000 vezes em paralelo Algo que pensa mais rápido do que eu posso Algo que não tem sentimentos para estragar o meu sistema Se houver pelo menos uma ou mais condições cumpridas, vou Começar a construir e reescrever o algo. Passo quatro. Tudo em eu estou brincando e você verá em um pouco por gerenciamento de risco é super importante neste negócio. Vamos discutir um pouco sobre o que essa arbitragem foi. A idéia é: eu me pergunto se Kraken e Shapeshift têm preços diferentes para os mesmos ativos. Este é um caso de arbitragem clássico (Kraken e Shapeshift são trocas). Eu poderia trocar DAO por ETH em Kraken, transferir ETH para Shapeshift, trocar ETH por DAO e enviá-los de volta para Kraken e devido a inconsintencies de preço eu iria acabar com mais DAO do que eu inicialmente começou Dinheiro sem risco, o melhor tipo de dinheiro . Você pode ganhar dinheiro enquanto ETHDAO de Kraken DAOETH de ShapeShift gt 1 (taxas de gás). Fórmula muito simples, à direita Todo ciclo, foi um retorno de 2 a 10 do meu capital. Depois de um tempo, eu comecei a bater os limites do Shapeshift e eu tive que fazer isso correr em paralelo. A questão é o que você faria se você tivesse um algoritmo que faz 10 de seu dinheiro a cada 20 minutos. A coisa mais estúpida que você poderia fazer é colocar toneladas de dinheiro nele. Se você não estiver familiarizado com a palavra grega hybris. Considere-se afortunado. Hybris é quando você pensa que você é invencível, melhor do que deuses. E este é o maior NÃO NÃO você pode fazer na negociação. Depois de algumas semanas, o ADO foi invadido. 160 milhões de dólares foram roubados (ou devo dizer congelados) e ninguém sabia o que iria acontecer. Para mim, isso aconteceu, 10 minutos antes de embarcar em um avião para voar para Nova York. Hybris. Ou como as pessoas nos EUA dizem: Foda-se. Eu era inteligente (sorte) o suficiente para ter bons hábitos de gestão de risco (obrigado Forex). Eu nunca, nunca, sempre risco mais que 2 do meu capital, mesmo que parece o melhor tipo de negócio. Felizmente, o dinheiro foi restaurado e eu poderia retirar o meu DAO para Ethereum (mas sim, eu comprei em vôo WiFi para acompanhar o que está acontecendo). Toda esta experiência é um lembrete de que há sempre coisas que você não pode prever. Coisas que você não pode controlar. Este era um risco sistemático e não havia nenhuma maneira que eu poderia ter visto isso acontecer. Empurrar botões e construir algoritmos não é suficiente. Gestão de risco adequada e saber quando você precisa tomar uma pílula chill é o que pode mantê-lo no jogo. No próximo post, vou postar todo o algoritmo e ir linha por linha. Eu também planejo discutir um pouco mais sobre o ADO e Ethereum. Se você não quer perder qualquer um destes e obter mais informações adicionais, sinta-se livre para se inscrever para o boletim onde eu falo sobre fintech, algoritmos e os mercados. By the way, se você quiser fazer sua própria cryptocurrency e aprender mais sobre Ethereum, eu tenho um grande post com o código postado aqui. Próxima: Mergulhar no ETHDAO algotrading programa Se você tiver mais comentários, ping-me em jonromero ou inscrição para o boletim. Legal outro. Este é um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentação e diversão. Todas as sugestões aqui não são conselhos financeiros. Se você perder algum (ou todos) você dinheiro porque você seguiu qualquer negociação conselhos ou implantado este sistema em produção, você não pode culpar este blog aleatório (andor me). Aproveite a seu próprio risco. Aprendizagem e negociação de máquinas é um assunto muito interessante. É também um assunto onde você pode gastar toneladas de tempo escrevendo código e papéis de leitura e, em seguida, um garoto pode vencê-lo enquanto joga Mario Kart. Nas postagens nexts, vamos falar sobre: Otimizar entradas e saídas. Isso e só isso poderia fazer uma tonelada de diferença em seu rolo de banco. Calcule o tamanho da posição (caso você não goste do critério de Kelly) Encontre a possível correlação entre pares diferentes (negociação de pares). Eu amo a correlação EURUSD vs GBPJPY Calcular as linhas de resistência do amplificador de suporte Mas o que é Machine Learning Machine algoritmos de aprendizagem são algoritmos onde uma máquina pode identificar padrões em seus dados. Yeap, é assim tão simples. Por exemplo, encontrar todos os animais nesta foto e desenhar uma caixa em torno deles. Também, nome esse animal. Louco, eu sei. Para negociar como você pode imaginar é bastante semelhante: Para que uma máquina de aprender, você precisa ensinar-lhe o que é certo ou errado (aprendizagem supervisionada) ou dar-lhe um grande conjunto de dados e deixá-lo selvagem (não supervisionado). Para identificar objetos, isso é direto, mas o que acontece com a negociação? Olhei ao redor para ver se existe algum programa de aprendizado de máquina que possa identificar linhas SR, mas sem sucesso. Então eu decidi escrever o primeiro programa de aprendizagem de máquina em python que identifica linhas de suporte e resistência em Python. Outro primeiro Hooray Mas como pode um algoritmo identificar essas áreas Hoooooow Senhoras e senhores (e robôs), deixe-me apresentá-lo a MeanShift. Um algoritmo unsupervised que seja usado na maior parte para o recognition da imagem e é consideravelmente trivial setup e funcionar (mas também muito lento). A idéia é que este algoritmo vai me deixar particionar meus dados (carrapatos forex) em áreas e, em seguida, eu posso usar as bordas como suporte e linhas de resistência. Ideia legal, mas funciona? Analisamos cerca de 12 milhões de pontos de dados de EURUSD em 2014 e um par de meses de 2015. As linhas de resistência são colocadas automagicamente por um algoritmo de aprendizagem de máquina. O que é realmente legal (e assustador) é que o algoritmo praticamente prega-lo. CLAVOS-lo difícil. Ele fica realmente assustador quando vamos usar o algoritmo para identificar micro-estruturas e começar scalping. O sistema é capaz de processar qualquer tipo de dados timeseries (ações, forex, ouro, qualquer) e ele irá tornar um html gráfico interativo (como o gráfico acima) com os seus dados ea máquina gerada SL. O código está aqui para ficar louco. Agora vamos percorrer o código. Depois de ter o seu conjunto de dados que você precisa para lê-los e limpá-los. Prepare-se para a magia de alguns pandas. Nós soltamos os valores vazios (fins de semana) e, em seguida, resample os dados para candelabros 24 horas (ohcl). Isso torna muito mais fácil traçar. Os dados agrupados são os dados que vamos alimentar no algoritmo ml. Em seguida, preparamos os dados que vamos usar no algo. No próximo post, bem discutir como fazer este trabalho ainda melhor, discutir alguns resultados muito interessantes (pode o algoritmo realmente prever sobre o futuro) e começar a usá-lo em nossa própria negociação. Se você quiser verificar o próximo artigo e ler mais sobre negociação e investimento usando algoritmos, cadastre-se para o boletim. Próxima próxima: Aprendizagem da máquina Gone Wild - Usando o código Se você tiver mais comentários, ping-me no jonromero ou inscrição para o boletim. Legal outro. Este é um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentação e diversão. Todas as sugestões aqui não são conselhos financeiros. Se você perder algum (ou todos) você dinheiro porque você seguiu qualquer negociação conselhos ou implantado este sistema em produção, você não pode culpar este blog aleatório (andor me). Aproveite a seu próprio risco. Atualização: O posto de aprendizado da máquina vai ser épico, mas demora muito tempo para tornar o código apresentável. Urso comigo, coisas legais estão vindo (como você leu no boletim de notícias) Disclaimer: ESTE NÃO É CONSELHO FISCAL. O que é realmente surpreendente é que a maioria dos pedidos no boletim são: Use ferramentas para ajudar Trading Machine Learning para otimizar negócios Impostos Os dois primeiros, eu posso entender. Todo mundo quer ser um melhor trader. Entendi. Mas impostos TAXES Este é o seu dia de sorte. Forex impostos são super fácil. A sério. Por padrão (isso é chamado Seção 988), todas as suas perdas vão compensar seus impostos de renda sem o limite de 3k por ano. Isso é muito melhor do que a negociação de ações, onde as perdas compensam seus ganhos de capital. Mas o que acontece com os ganhos por que você se importa por que a maioria dos comerciantes de Forex perdem dinheiro (eu chamá-lo de pagar mensalidades) no primeiro ano (s), então você é melhor mantê-lo simples até que você tenha uma estratégia comprovada e consistente. Dito isto, se você realmente fazer um lucro, você é tributado no ganho de capital de curto prazo (às vezes até 40). As soluções para quando você começar a ganhar dinheiro são: Optando fora da Seção 988 e ficar tributado sob a Seção 1256 onde 60 dos lucros são tributados como ganhos de capital a longo prazo e 40 como curto prazo (mas agora as perdas não podem compensar sua renda). Isso é muito bom quando você ganhar dinheiro, muito ruim quando você não faz. Iniciar uma LLC Para as pessoas que começaram a experimentar com Forex e algotrading, eu sempre sugeri-los para ficar com a Seção 988 (o padrão) e quando eles começam a ganhar algum dinheiro (consistentemente) ou eles querem ir a tempo inteiro, fale comigo :) Seriamente, há assim que muitas coisas que você começará fazer diferentemente quando você vai do estágio do passatempo à segunda renda ao trabalho a tempo completo que não há nenhuma razão para over-optimize este. Próxima próxima: Machine Learning Gone Wild Se você tem mais comentários, ping-me no jonromero ou inscrição para o boletim. Legal outro. Este é um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentação e diversão. Todas as sugestões aqui não são conselhos financeiros. Se você perder algum (ou todos) você dinheiro porque você seguiu qualquer negociação conselhos ou implantado este sistema em produção, você não pode culpar este blog aleatório (andor me). Aproveite a seu próprio risco. Da última vez que falamos sobre o para-looper backtester (como eu amo para chamá-los). Agora é hora de ver algum código Nós dissemos que temos algo parecido: python para cada elemento de readhistoricaldata (): applystrategy () howourstrategydid () Doce, vamos carregar a nossa estratégia, carregar alguns dados históricos, executar o nosso algoritmo e imprimir alguns resultados Eu prefiro ter minhas estratégias em um formato JSON que contém o nome da estratégia e algumas especificações (como quantos pips para stoploss ou takeprofit etc). Dessa forma, quando começar bem usando um backtestter baseado em eventos, podemos passar a estratégia através de um algoritmo de aprendizado de máquina e tentar otimizá-lo. A próxima linha está carregando nossos dados. Eu sei que as pessoas não gostam de pickle e outras formas de carregar dados (e nós vamos falar sobre o BColz em algum momento), mas por agora, apenas nua comigo. A próxima linha é auto-explicativo. Passamos os dados históricos para o nosso algo e voltamos algumas estatísticas para imprimir. Deixa o foco no algoritmo um pouco e nós podemos discutir traçar etc em um ponto mais atrasado. A magia do sistema de backtesting simples Prepare-se para se surpreender com o quão ridiculamente fácil fazer isso. Curiosidades O que acontece com este tipo de backtesting é que 1. você provavelmente cometerá erros quando você quiser usar exatamente o mesmo algoritmo 2. Você não será capaz de escrever uma estratégia muito complexa (pelo menos isso fácil) 3. Muito difícil de escalar (Em comparação com o evento baseado) 4. Você precisa ter sua simulação e execução no mesmo idioma, mas lembre-se que esta é a maneira melhor e mais rápido para começar e descobrir como todas essas coisas funcionam. Coming up next, usando outros backtesters bem conhecidos em Python e adicionando gráficos para o nosso próprio Se você tiver mais comentários, me ping no jonromero ou inscreva-se para o boletim. Legal outro. Este é um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentação e diversão. Todas as sugestões aqui não são conselhos financeiros. Se você perder algum (ou todos) você dinheiro porque você seguiu qualquer negociação conselhos ou implantado este sistema em produção, você não pode culpar este blog aleatório (andor me). Aproveite a seu próprio risco. O que é um bom sistema algotrading sem algumas estratégias legais para implantar Abaixo há uma lista de estratégias que eu encontrei on-line (ou enviado para mim por comerciantes que estão no boletim). Eu pretendo atualizar a lista como eu continuo chegando a novas idéias. O conceito é que, à medida que continuamos a mergulhar cada vez mais no nosso sistema algotrading, vou mostrar-lhe como codificar e implementar estas estratégias. Eu sei com certeza que a maioria deles trabalham com mudanças mínimas. Pior cenário, você terá um sistema para testar suas suposições. Aqui está a lista (e por favor me envie qualquer outra estratégia que você acha que deve ser incluído): Próxima próxima, compartilhando e discutindo meu mais simples (mas mais bem sucedido) backtester Se você tiver mais comentários, me ping no jonromero ou inscreva-se para o Boletim de Notícias. Legal outro. Este é um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentação e diversão. Todas as sugestões aqui não são conselhos financeiros. Se você perder algum (ou todos) você dinheiro porque você seguiu qualquer negociação conselhos ou implantado este sistema em produção, você não pode culpar este blog aleatório (andor me). Aproveite a seu próprio risco. Construir um sistema de backtest é realmente muito fácil. Fácil de estragar, quero dizer. Mesmo que haja toneladas de excelentes bibliotecas lá fora (e bem passá-las em algum ponto), eu sempre gosto de fazer isso por conta própria, a fim de ajustá-lo. De todos os sistemas de backtesting que eu tenho visto, podemos supor que existem duas categorias: O for-loopers Os geradores de eventos Hoje, bem falar sobre for-loopers. Os for-loopers são o meu tipo favorito de backtesters. Eles são triviais para escrever e super divertido para expandir, mas eles têm alguns fluxos vitais e infelizmente a maioria dos backtesters lá fora é para-loopers (ps: eu preciso encontrar um nome melhor para isso). Como os for-loopers funcionam Usando um loop for (como você deve ter adivinhado). É algo como isto: Direito muito simples É assim que funciona um sistema de backtesting, que executa uma estratégia de impulso: Então, qual é o problema Muito difícil de escalar (horizontalmente) Precisa de muito trabalho para manter seu applystrategy () trabalhando em backtesting e Produção Você precisa ter tudo na mesma linguagem de programação Permite mergulhar nesses, um por um. Escalabilidade. Eu estava experimentando um casal há algumas semanas com um algoritmo de escalada para otimizar uma de minhas estratégias. Ele ainda está em execução. Depois de duas semanas. E eu construir sistemas uber-escalável para a vida. Por que ele ainda está sendo executado Você pode usar multiprocessamento. Discoteca. Produtor (usando ZeroMQ) ou apenas threads para acelerar isso, mas alguns problemas não são constrangedor paralelo (sim, este é um termo real, não uma das minhas palavras inventadas). A quantidade de trabalho para escalar um backtester como este (especialmente quando você quer fazer o mesmo aprendizado de máquina em cima dele) é enorme. Você pode fazê-lo, mas é o caminho errado. Produção e backtesting em sincronia. As vezes eu fui mordido por isto. Eu posso recordar os comércios perdidos onde eu era hm, porque eu incorporei este comércio ou meu favorito velho do tempo POR QUE TRAILING STOP FOI APLICADO AGORA. Tempo de história: tive uma idéia para otimizar a minha estratégia, para executar um backtester para ver o que aconteceria se eu pudesse colocar uma parada à direita após o comércio foi rentável, a fim de sempre garantir os lucros. Backtesting funcionou como um encanto em um aumento de 13 de ganhos ea produção perdeu todos os negócios. Eu percebi isso depois que o meu algo perdeu 3400 em um par de horas (uma lição muito cara). Manter o applystrategy em sincronia é muito difícil e torna-se quase impossível quando você quer fazê-lo de forma distribuída. E você não quer ter duas versões de sua estratégia que são quase idênticas. A menos que você tenha 3400 para poupar. Usando línguas diferentes eu amo Python. E Erlang. E Clojure. E J. E C. E R. E Ruby (na verdade, eu odeio Ruby). Eu quero ser capaz de aproveitar a força de outras línguas no meu sistema. Eu quero experimentar estratégias em R, onde existem bibliotecas muito bem testadas e há uma enorme comunidade por trás dele. Eu quero ter Erlang para escalar o meu código e C para trituração de dados. Se você quer ser bem-sucedido (não apenas na negociação), você precisa ser capaz de usar todos os recursos disponíveis sem preconceitos. Eu aprendi toneladas de coisas de sair com desenvolvedores R sobre como você pode delta hedge bonds e visualizá-los ou por razão Sharpe pode ser uma mentira. Cada língua tem uma multidão diferente e você quer como muitas pessoas derramando idéias em seu sistema. Se você tentar ter applystrategy em linguagem diferente, então boa sorte com (2). Você está convencido agora Bem, eu não estou tentando convencê-lo como for-loopers é uma ótima maneira de executar seus testes iniciais. É como eu comecei e para muitas estratégias que eu não enviá-los para baixo para o pipeline. Uma maneira melhor (para que você possa dormir à noite) é o evento geradores. Coming up next, compartilhando e discutindo meu mais simples (mas mais bem sucedido) backtester Se você tiver mais comentários, me ping no jonromero ou inscreva-se para o boletim. Legal outro. Este é um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentação e diversão. Todas as sugestões aqui não são conselhos financeiros. Se você perder algum (ou todos) você dinheiro porque você seguiu qualquer negociação conselhos ou implantado este sistema em produção, você não pode culpar este blog aleatório (andor me). Aproveite a seu próprio risco. Antes de executar qualquer sistema algotrading ao vivo, é uma boa prática backtest (que significa executar uma simulação) os nossos algoritmos. Tenha em mente que isso não significa que se o seu sistema está matando-o para os últimos 5 anos, ele vai fazer um lucro, mas é um bom indicador que você pode estar em algo. Há quatro coisas que precisamos levar em consideração quando fazemos nosso backtesting: A qualidade dos dados Como carregá-los eficientemente Como construir nosso sistema de backtesting Tente ter nosso backtesting e nosso sistema ao vivo compartilhar tanto código quanto pudermos Hoje , Vamos nos concentrar em (1) e (2). Para dados de Forex, estou usando GainCapital. Seus dados estão na forma de carrapatos. Para uma fonte livre é bom o suficiente. Eu costumava usar Oandas serviço de dados históricos, mas parece que eles se mudou para um produto premium. Que pena. Certifique-se de que utiliza dados de GainCapitals apenas para experimentação. Para qualquer outro tipo de dados históricos pagos (ETFs, ações, opções stc), estou usando eoddata (eles também têm alguns dados históricos forex, mas eu havent usou-los). Permite baixar dados por uma semana e experimentar um pouco. O link para os dados é ratedata. gaincapital20151120NovemberEURUSDWeek1.zip para a primeira semana de novembro de 2015. Primeiro precisamos descompactar o arquivo. Python gtunzip EURUSDWeek1.zip e você obterá um arquivo de 25MB chamado EURUSDWeek1.csv. Estes são dados para uma semana para um par de moedas. Você pode imaginar a quantidade de dados que você precisa processar para todas as moedas nos últimos cinco anos (dica: muito). Mas não se preocupe, vamos otimizar isso. Por enquanto, vamos abrir o arquivo e inspecionar. As coisas que nos preocupam é o RateDateTime, RateBid e RateAsk. Como você pode understade cada linha tem um carimbo de data e o quanto era o preço para comprar ou vender. Os formatos baixados por outros serviços são bastante semelhantes. Há muitas maneiras de carregar esses dados em Python, mas o mais preferível quando se trata de cortar dados e manipular é usando Pandas. Podemos sempre usar a biblioteca csv para carregar dados (e pode ser mais rápido), mas precisamos fazer algumas otimizações e processamento primeiro que, como você vai ver, é muito fácil com pandas. Outra ótima ferramenta para carregar TONELADAS de GBs muito eficiente e muito rápido é usando Bcolz. Manipulando dados usando Pandas Os dados que baixamos estão em ticks. A menos que estejamos construindo um algoritmo UHFT (ultra high frequency trading), é Muito mais eficiente (memória, armazenamento e processamento) para agrupar estes ticks em segundos (ou minutos ou horas, dependendo da sua estratégia). Isso fará com que a nossa escala baixar de 25MB para apenas 35KB que se traduzem em enorme desempenho e benefícios de memória. Vamos agrupar todos esses dados em 15 minutos. Como Tempo para se apaixonar por resample. O resampled o conjunto de dados tem este aspecto: Isto é chamado OHLC (Open High Low Close) bar para cada 15 minutos. Você pode ver agora que os carrapatos são Agrupados em segmentos de 15 minutos e você tem o ponto mais alto e mais baixo que o preço atingido durante estes 15 minutos e também o openclose para comprar e vender. Ouro puro Não só você tem todas as informações que você precisa, mas agora é extremamente rápido para carregá-lo . Você apenas Precisa salvar os dados: e então você pode reutilizar este arquivo de 35kb. Podemos escrever um algoritmo simples momento que verifica se houve um movimento enorme nos últimos 15 minutos e se esse fosse o caso, vamos comprar. Vamos mergulhar nisso em um post posterior. Você pode ver o código como sempre no github. Se você tiver mais comentários, me ping no jonromero ou cadastre-se para o boletim. Legal outro. Este é um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentação e diversão. Todas as sugestões aqui não são conselhos financeiros. Se você perder algum (ou todos) você dinheiro porque você seguiu qualquer negociação conselhos ou implantado este sistema em produção, você não pode culpar este blog aleatório (andor me). Aproveite a seu próprio risco. Antes de construir qualquer algotrading sistemas, você precisa saber como trocar manualmente. O que isso realmente significa é que você precisa perder dinheiro em seu próprio antes de culpar a máquina. Tão simples como isso. Então, vamos falar sobre câmbio ou Forex como os caras legais chamá-lo. Primeiro de tudo, por que nós escolhemos Forex para algotrading Por que nós não nos tornamos milionários comerciais como todo mundo Por que não basta comprar Tesla, Amazon, Google, Facebook, Twitter e esperança para o melhor (PS: por favor leia o outro legal no final de Este blog antes de comprar qualquer ações). Resposta fácil. Você não pode ganhar (ou perder) dinheiro rápido o suficiente comprando ações. Forex tem um bom (ou terrível, dependendo de qual lado da moeda você é) coisa chamada alavancagem. A alavancagem pode ser 1:10, 1:50, 1: 100, 1: 200, 1: 1000, dependendo de como você é suicida ou como esboçado seu corretor é (não se preocupe, bem falar sobre corretores no próximo post). Vejamos um exemplo. Queremos colocar um comércio de 1k. A coisa lógica é que, a fim de comprar algo que custa 1k, você precisa ter em sua conta 1k, direito Nope. Você sempre pode obter um empréstimo. Oooooooor: Digite alavancagem. Se tivermos uma alavancagem de 1: 100, podemos colocar um comércio e um controle de 1k com apenas 10. Para aqueles que falharam em matemática (não tenha vergonha, eu sou um de vocês), 10 x 100 (alavancagem) 1.000. Isso significa que você pode negociar grande e ganhar grande Na verdade 100 vezes mais grande. A captura é que você pode realmente ir 100 vezes mais pequeno. Vamos ter outro exemplo. Eu só tenho o meu bônus (1k) e eu quero jogar no Forex. Sem qualquer alavancagem, eu posso comprar 1.000 unidades de Forex que custam 1 (por sinal, não há unidades de Forex, mas bem falar sobre isso mais tarde). Quantas unidades posso comprar com alavancagem de 1:50 Se você responder se 100.000, você fez algo errado. A resposta é 50.000 (1.000 x 50 de alavancagem). Lá você tem. Uma das razões que estamos fazendo Forex, é porque você pode perder vitória grande. Bem voltar para alavancar quando começamos a colocar comércios. Existem três razões mais emocionantes, na verdade, que são ainda mais impressionante (ousar dizer awesomer). Forex (quase) nunca dorme. Os mercados estão abertos TODO O DIA, seis dias por semana. Para ser mais exato, não há um mercado, mas quatro e eles estão se sobrepõem fornecendo o efeito de todos os dias. Forex é muito volátil e há toneladas de dinheiro movendo-se (mais de 5 trilhões por dia). Direito louco Nenhumas taxas em comércios. Você não paga 10 por comércio como você está fazendo com ações. Aqui você paga a propagação que é apenas uma fração de um centavo (novamente, bem falar sobre isso em outro post). Todas essas razões (alavancagem, dia inteiro, volatilidade, taxas) tornam o Forex a plataforma mais excitante para construir e implantar seus algoritmos. Em seguida, os corretores de Forex. Como não ser scammed antes mesmo de escrever uma linha de código. Se você tiver mais comentários, me ping no jonromero ou cadastre-se para o boletim. Legal outro. Este é um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentação e diversão. Todas as sugestões aqui não são conselhos financeiros. Se você perder algum (ou todos) você dinheiro porque você seguiu qualquer negociação conselhos ou implantado este sistema em produção, você não pode culpar este blog aleatório (andor me). Aproveite a seu próprio risco. É isso aí. Todas as semanas, eu recebo pelo menos 10 DMs no twitter perguntando sobre como experimentar com algotrading, Forex e análise de portfólio e Ive decidiu que é hora de fazer algo sobre isso. Atualização: encontre as postagens aqui. Então, eu estou planejando para cobrir os conceitos básicos de como construir sua própria plataforma de negociação, escrever suas próprias estratégias e ir em férias, enquanto os elétrons estão fazendo você dinheiro. Ou zerando sua conta. De qualquer forma, vai ser divertido A maioria dos exemplos vão estar em Python mesmo que possa haver partes em Erlang e eu vou tentar mantê-lo tão fácil quanto possível. Vamos falar agora sobre como será o produto final. Estamos construindo um sistema onde você será capaz de: Simular sua estratégia (isso é chamado backtesting) Executar sua estratégia sem supervisão Alertar você via smsemail para comércios e erros Ser escalável e trivial para implantar novas atualizações Ser capaz de executar mesmo a partir de sua casa (De um raspberrypi por exemplo) eu assumo isto vai ser um total de 20 capítulos, dar ou tomar. Esse é um sistema semelhante ao que estou executando no ano passado e inclui uma interface do usuário, alertas sms, backtesting pipeline, entrega contínua e todas as coisas legais que nós geeks amor. Todo o código será no github e se tudo correr bem, vou embrulhá-lo em um livro para que todos possam desfrutar. Eu tenho como três capítulos quase feito, então se você quiser acesso antecipado apenas ping-me em - jonromero. These are all the post that have been written up until now. I may addremove post as I get more feedback. I love Forex because: It has enormous amount of data (volume) These data are coming extremely fast (velocity) You need to consider multiple resources when you are building your strategy (variety) My definition of BigData is that you have volume-velocity-variety information and you need to react on it right now (realtime). It is one of the main reasons why I dont like Hadoop (ok, the other is because I dont like Java:). Forex is the best place if you want to start playing with BigData. You have (at least) one data channel, hitting you with data, you need to keep running algorithms on this stream (sometimes doing correlations up to a week) and you need be able to respond very fast. If a garbage collector kicks in or if you need to grab data from a database (even if this DB is in memory - long live Redis) then you will have issues. Thats the reason why most of the trading databases have all their data in the same memory space and have custom languages doing the analysis (like Kdb ). That was the inspiration for LDB. Millions of data sources (mobile phones), hitting your database and calculatingupdating for each one of the requests thousands of counters and running all sorts of algorithms. Per request. In realtime. But lets face it. The vast majority of userscompanies will never have millions (or even thousands) of requests hitting their servers. Thats why I started a new opensource database with codename: HybrisDB. HDB has the following characteristics: Simple to install (no moving parts) Simple to use (pre-defined dashboards) It will be perfect for the 99 of userscompanies but not for the 1 like Facebook or Google (sacrificing Enterprise features) The concept is to have a dashboard, to watch indicators going onoff and then (maybe) connect to a system to place an order. Sounds like an interesting cool hobby project and I still try to decide between using Erlang or Clojure for this. Ping me on twitter if you have any ideas One of my new years resolution was study one of your habits each month and I decided to focus on what activities I am spending my online time. So, I installed RescueTime which is a very cool app that sits on the background and creates reports about which apps and sites you are using the most. And no, it is not sending that info to NSA (you are not that important). Even though I spent most of my time working, writing and communicating, I also spent around 2 hours on average on Facebook (gasp). No biggie. What I hated was that for the majority of times I was scrollingrefreshing for new updates. Like opening your refrigirator every two minutes even though you know it is empty Damn you habits So, spending 2 hours every day (sometimes more) on Facebook, means 60 hours per month or 7 working days . 7 freaking working days each month. 7 days, each day with 8 full hours, to sleep, go out, exercise, write a book, learn something new. What I did was installing StayFocused. a free plugin for your browser that doesnt let you spent more than 10 minutes on specific sites everyday. E adivinha. The I am just using facebook to communicate is such a lame excuse as I had no problem communicating with my friends, even by using facebook for 10 minutes. Now, give it a shot and tell me what you built in your spare time
No comments:
Post a Comment