Monday 25 December 2017

Opções de troca de pitão


Python Algorithmic Trading Library PyAlgoTrade é uma Biblioteca de Negociação Algorítmica Python com foco em backtesting e suporte para troca de papel e negociação ao vivo. Digamos que você tenha uma idéia de uma estratégia de negociação e que gostaria de avaliá-la com dados históricos e ver como ela se comporta. PyAlgoTrade permite que você faça isso com um esforço mínimo. Principais características Totalmente documentado. Evento conduzido. Suporta pedidos de Mercado, Limite, Parada e StopLimit. Suporta arquivos do Yahoo Finance, Google Finance e NinjaTrader CSV. Suporta qualquer tipo de dados da série temporal no formato CSV, por exemplo, Quandl. Suporte comercial Bitcoin através do Bitstamp. Indicadores técnicos e filtros como SMA, WMA, EMA, RSI, Bandas Bollinger, Expositores Hurst e outros. Métricas de desempenho como a taxa de Sharpe e análise de redução. Manipulação de eventos do Twitter em tempo real. Perfil de eventos. Integração TA-Lib. Muito fácil de dimensionar horizontalmente, ou seja, usando um ou mais computadores para testar uma estratégia. PyAlgoTrade é livre, de código aberto, e está licenciado sob a Licença Apache, Versão 2.0.Learn Quant habilidades Se você é um comerciante ou um investidor e gostaria de adquirir um conjunto de habilidades de negociação quantitativa, você está no lugar certo. O curso Trading With Python proporcionará as melhores ferramentas e práticas para pesquisa de negociação quantitativa, incluindo funções e scripts escritos por comerciantes quantitativos especializados. O curso dá o máximo impacto para o seu tempo investido e dinheiro. Ele centra-se na aplicação prática da programação ao comércio e não à informática teórica. O curso irá pagar por si mesmo rapidamente, economizando tempo no processamento manual de dados. Você passará mais tempo pesquisando sua estratégia e implementando negócios lucrativos. Visão geral do curso Parte 1: princípios Você vai aprender por que o Python é uma ferramenta ideal para negociação quantitativa. Começaremos pela criação de um ambiente de desenvolvimento e, em seguida, apresentaremos as bibliotecas científicas. Parte 2: Manipulação dos dados Saiba como obter dados de várias fontes gratuitas, como Yahoo Finance, CBOE e outros sites. Leia e escreva vários formatos de dados, incluindo arquivos CSV e Excel. Parte 3: estratégias de pesquisa Aprenda a calcular o PL e as métricas de desempenho acompanhantes, como Sharpe e Drawdown. Desenvolva uma estratégia de negociação e otimize seu desempenho. Múltiplos exemplos de estratégias são discutidos nesta parte. Parte 4: Iniciando esta parte é centrada em torno da Interactive Brokers API. Você aprenderá a obter dados em estoque em tempo real e a colocar pedidos ao vivo. Muitos códigos de exemplo O material do curso consiste em cadernos que contêm texto juntamente com um código interativo como esse. Você poderá aprender interagindo com o código e modificando-o para seu próprio gosto. Será um excelente ponto de partida para escrever suas próprias estratégias. Enquanto alguns tópicos são explicados com grande detalhe para ajudá-lo a entender os conceitos subjacentes, na maioria dos casos você nem precisa escrever seu próprio código de baixo nível, devido ao suporte aberto existente - bibliotecas de fontes. A biblioteca TradingWithPython combina grande parte das funcionalidades discutidas neste curso como funções prontas a usar e serão usadas ao longo do curso. Pandas irá fornecer-lhe todo o poder de levantamento pesado necessário no trituração de dados. Todo o código é fornecido sob a licença BSD, permitindo seu uso em aplicações comerciais Avaliação do curso Um piloto do curso foi realizado na primavera de 2017, é o que os alunos conseguiram dizer: Matej curso bem projetado e bom treinador. Definitivamente valeu o preço e meu tempo, Lave Jev, obviamente, conhecia suas coisas. A profundidade de cobertura foi perfeita. Se Jev executar algo assim novamente, eu vou ser o primeiro a se inscrever. John Phillips Seu curso realmente me fez começar a pensar em python para a análise do sistema de estoque. Por Python Antes de começarmos, eu gostaria de falar sobre porque uso o Python para a computação financeira. Levei vários anos para entender todas as opções lá fora e vou tentar convencê-lo de que o Python é realmente a melhor ferramenta para a maioria das tarefas envolvidas na negociação. Quando eu comecei a programar como uma criança em algum lugar no início dos anos noventa, escolher uma linguagem de programação era fácil, pois simplesmente não havia muitos para escolher. Comecei pela primeira vez em Pascal e desde então programado em Delphi, C, C, C, Java. VB, PHP, Matlab, Python, SPIN e até mesmo ASM. Eu não aprendi todas essas línguas por diversão, pois tenho coisas melhores a fazer (como o trabalho real), mas eu precisava, pois não tinha linguagem de faca suíça para todas as minhas necessidades. Eu precisava de C e Delphi para fazer aplicativos autônomos, PHP para construir um site e Matlab para cálculos científicos. Como diz o ditado, jack of all trades é mestre de nenhum. Então, mudando de um idioma para outro, nunca adquiri conhecimento especializado em nenhum deles. Idealmente, eu gostaria de aprender apenas um idioma que seja adequado para todos os tipos de trabalho: crunching numérico, criação de aplicativos, desenvolvimento web, interface com API etc. Esse idioma seria fácil de aprender, o código seria compacto e claro. Correr em qualquer plataforma. Isso me permitiria trabalhar de forma interativa, permitindo que o código evoluísse enquanto escrevê-lo e ser pelo menos livre como na fala. E o mais importante, eu me importo muito com o meu próprio tempo do que o tempo de CPU do meu pc, então o desempenho do número de bits é menos importante para mim do que a minha própria produtividade. Atualmente, as duas línguas mais populares para computação técnica e científica são Matlab e Python. Ambos satisfazem muitos dos desejos descritos acima, mas eles têm algumas diferenças importantes. Matlab é mais popular quando se trata de computação técnica. Isto é o que costumava usar o dia-a-dia para resolver problemas de engenharia. Para simulações numéricas e trabalhar com dados limpos, provavelmente é a melhor ferramenta que existe. Bom IDE, fantásticas funções de traçabilidade, excelente documentação. É menos adequado para o desenvolvimento de aplicativos ou como linguagem de propósito geral. Espere pagar 2k por uma licença comercial básica mais extra para caixas de ferramentas específicas. Fazer pesquisas financeiras na Matlab provou ser um grande desafio para mim, principalmente porque não existe uma maneira fácil de lidar com dados sujos (dados que não estão bem alinhados em uma tabela, mas tem várias fontes com datas diferentes e entradas faltantes). Outro desafio que enfrentei foi impedir que meu código se tornasse uma bagunça. É possível escrever bibliotecas seguras com o Matlab, mas está longe de ser trivial e o design do idioma realmente incentiva a codificação desarrumada. Ao usar o desenvolvimento da estratégia Matlab para negociação, consegui lidar com as deficiências desta plataforma. No entanto, quando eu decidi construir um sistema de troca automática, eu tinha atingido um beco sem saída. Enquanto consegui me conectar à Interacive Brokers API, descobriu-se que não havia como criar uma aplicação confiável. Embora seja bom para a pesquisa, a Matlab é uma merda para a implantação. Foi quando eu decidi olhar para outras opções. Python é muito parecido com o Matlab e resolve a maioria de suas falhas. E é grátis. Com o trabalho interativo do Ipython, o Python é fácil, como no Matlab, mas o que você obtém é uma linguagem de programação que pode completar quase todas as tarefas, desde a mineração de dados até aplicativos de desenvolvimento web e qualidade de produção com grandes GUIs. Se eu tiver que começar de novo, eu escolheria Python, pois isso me salvaria o problema de aprender outro idioma para Gui e desenvolvimento web. Depois de usar Python durante três anos, ainda estou entusiasmado com o momento em que me apaixonei por isso. Eu sinto que muitos outros comerciantes podem se beneficiar grandemente aprendendo o Python desde o início e por isso criei um curso de troca com Python. Instalação Python, como a maioria dos softwares de código aberto tem uma característica específica: pode ser um desafio para um iniciante encontrar seu caminho em torno de milhares de bibliotecas e ferramentas. Este guia irá ajudá-lo a obter tudo o que você precisa em sua caixa de ferramentas quant, espero que sem problemas. Felizmente, há várias distribuições, contendo a maioria dos pacotes necessários, tornando a instalação uma brisa. A melhor distribuição na minha opinião é a Anaconda do Continuum Analytics. A distribuição da Anaconda inclui: o intérprete Python 3 Python, no topo do qual tudo o resto funciona com o Ipython. Interactive shell amp notebook Spyder IDE numpy amp. Scipy. Ferramentas de computação científica, semelhantes aos pandas Matlab 2. Biblioteca de estruturas de dados. Muitos mais pacotes científicos e de utilidade, veja a lista de pacotes Então, por favor, vá em frente e instale as ferramentas e as bibliotecas adicionais da Anaconda Ao lado dos brindes incluídos no instalador da Anaconda, você precisará pelo menos de um editor de texto de descida e um bloco de notas do navegador é versátil E editor de texto leve Google Chrome ou navegador Firefox é necessário para o notebook Jupyter (o Internet Explorer não funciona) Outras bibliotecas úteis incluem ferramentas para leitura xml, documentação, etc. serão abordadas mais tarde. Código de execução A maioria do código deste curso é executado em um documento interativo chamado notebook. Nota: O ambiente de programação interativo que usamos é chamado de notebook Jupyter. Anteriormente, era chamado de notebook IPython. Mas foi renomeado para Jupyter. Isso foi feito para mostrar que vários idiomas são suportados (JUlia, PYThon, R. e mais). Este curso foi escrito antes dessa transição de nomeação, por isso ocasionalmente, você encontrará referências ao notebook Ipython. Que é o mesmo que o notebook Jypyter. Lançamento do notebook Jupyter. Neste momento (maio de 2017), não é possível alterar o diretório de trabalho depois de iniciar o notebook. Você precisa iniciá-lo no diretório que contém seus cadernos para acessar seus cadernos. No entanto, existem várias opções para abrir rapidamente seus cadernos: Iniciando o notebook Jupyter com um atalho Se você estiver usando um diretório estático para armazenar os cadernos, a maneira mais fácil de abri-los seria em um diretório personalizado usando um atalho modificado: 1. Encontre o atalho no caderno no menu Iniciar clicando em Iniciar e digitando o Jupyter na janela de pesquisa. Uma vez que o atalho é encontrado, copie-o para a área de transferência pressionando o botão direito do mouse e selecionando a cópia. Em seguida, cole-o em sua área de trabalho. Agora você pode editar o diretório de trabalho clicando no botão direito no atalho da área de trabalho e escolhendo as propriedades. Altere Iniciar no campo para o diretório onde seus cadernos estão localizados. Você pode criar vários atalhos um para cada diretório de cadernos separados. A partir do prompt de comando Opcionalmente, você pode iniciar o Jupyter notebook a partir do comando promt: Para iniciá-lo no diretório direito: Abra o Windows Explorer Pressione e segure a tecla Shift e clique com o botão direito do mouse no diretório que você gostaria de usar como local do caderno. Um menu irá aparecer. Selecione Abrir janela de comando aqui. Um prompt de comando será iniciado com o caminho certo. Comece o Jupyter com o notebook jupyter Começando com o menu de contexto Mais uma opção para iniciar o servidor Jupyter em um diretório de sua escolha seria adicionando um atalho no menu de contexto. Para instalar menus contextuais, siga as instruções de instalação. Ele irá dar-lhe um novo menu de contexto quando você clicar com o botão direito do mouse em um diretório no Windows Explorer: Noções básicas sobre o Python Noções básicas da linguagem Se você é novo no python, agora você deve continuar aprendendo o básico do idioma . Eu recomendo que você comece com o Python Language Essentials no livro Python for Data Analysis. Opcional Uma seleção de tutoriais online grátis pode ser encontrada na página Recursos. Trabalhar com notebooks Jupyter O notebook para você começar pode ser encontrado nos cadernos de exemplo na parte inferior desta página (ou você pode vê-lo online aqui). O primeiro caderno lhe dará uma visão geral do ambiente IPython. Para executar código de exemplo, você precisa fazer o download extrair os cadernos para o diretório de seus cadernos. Uma vez que você baixou o arquivo, você pode iniciar o caderno nesse diretório, o arquivo baixado deve aparecer na lista de cadernos disponíveis. Um tutorial mais extenso sobre o uso do notebook pode ser encontrado aqui. Bibliotecas científicas NumPy é um pacote fundamental projetado para cálculos científicos. Em sua funcionalidade, é muito semelhante ao Matlab, fornecendo métodos de trabalho com matrizes multidimensionais e arrays. O site Numpy fornece toda a documentação que você precisa junto com um tutorial. Mas ler o Capítulo 4 do livro Python for Data Analysis é ainda melhor para obter uma visão geral do que essa ferramenta pode fazer. Você não deve se preocupar muito com a compreensão de todos os sinos e assobios do NumPy, por enquanto é suficiente entender os conceitos gerais de trabalhar com ndarray e indexação. Matplotlib Para ter uma idéia das capacidades quase infinitas desta biblioteca, basta dar uma olhada na galeria matplotlib. Nós normalmente só precisaremos das funções plot () e hist (). Outro ótimo tutorial de funções de traçado é dado neste caderno. Escrita, execução e código de depuração Até agora, nos concentramos em escrever código dentro do notebook IPython. Esta é uma boa maneira para a prototipagem rápida, mas quando você precisa reutilizar a mesma funcionalidade em diferentes cadernos, o código de colar de cópia é um hábito muito ruim. Um bom hábito seria usar módulos para reutilizar a funcionalidade. Um módulo é essencialmente um arquivo. py ou um diretório com arquivos. py contendo funções e classes. Essas classes de funções podem ser acessadas pela diretriz de importação. Uma boa explicação dos módulos pode ser encontrada nos documentos do Python. Nós estaremos olhando para escrever nossos próprios módulos na Parte 2, por enquanto é suficiente saber como reutilizar a funcionalidade dos módulos existentes. Um fluxo típico de desenvolvimento de código consiste em duas etapas: estágio de prototipagem: é aqui que você adota a abordagem rápida e não suja. Desenvolva de forma interativa usando IPython, IPython ou Spyder. Aqui você pode reutilizar funções de bibliotecas existentes e criar novas funcionalidades. O notebook é ideal para trabalho interativo, mas menos adequado para depuração avançada, o Spyder é excelente para depuração e o Ipython está em algum lugar intermediário. Minha própria experiência é que um depurador avançado é raramente necessário, normalmente eu posso resolver 70 dos erros apenas olhando a mensagem de erro, outros 25, adicionando uma declaração de impressão. Há também uma maneira de iniciar um depurador do notebook. Basta digitar qtconsole no notebook e um novo console abrirá conectado ao mesmo ipython nos bastidores. O console tem acesso a todas as variáveis ​​e também pode executar o debug. Que iniciará uma sessão de depuração. Etapa do módulo: uma vez que você está feliz com a funcionalidade desenvolvida em uma fase de prototipagem, você pode integrá-la em um módulo. Nesta fase, é uma boa prática adicionar alguma documentação ao código que você escreveu. A documentação do código em Python é muito fácil com docstrings. Docstrings são cordas de texto incluídas no código que são usadas para documentar a funcionalidade. Para alguns exemplos, dê uma olhada aqui. Para uma produtividade ideal na fase do módulo, você precisa de um bom editor de código fonte. Existem muitas opções lá fora. Os meus favoritos (gratuitos) são (em ordem crescente de complexidade e recursos): bloco de notas do bloco de notas, mas muito melhor (destaque de sintaxe etc). Ideal para mudanças rápidas de código, quando você não deseja ativar um editor mais extenso. Spyder. Editor leve que fecha a lacuna entre o IPython e um IDE completo (Integrated Development Environment). Especificamente visado no trabalho científico interativo. Pyscripter - IDE fácil de usar com um depurador bem integrado. Somente no Windows. Pydev - IDE de qualidade profissional. Pode demorar algum tempo para encontrar uma maneira de desenvolver código que melhor se adapte a você. Para mim, o fluxo de trabalho ideal é: Protótipo com notebook - adicione um módulo com PyDev ou PyScripter - use o módulo em um novo notebook. Mais material de leitura. Capítulo 3 do livro PDA. Ok, teoria suficiente, conseguimos trabalhar com módulos. Se você ainda não baixou as pastas de trabalho para esta parte, obtenha-as da seção de cadernos de exemplo. E dê uma olhada no notebook twp03Workingmodules. Cadernos de exemplo Agora é a hora de usar os conceitos que você aprendeu nesta parte. Iremos direto ao trabalho com matrizes numpy e funções de traçabilidade. No que diz respeito ao traçado, agora só precisa de duas funções plot () e hist () juntamente com alguns comandos para definir os títulos e os eixos das etiquetas. Existem três exemplos de cadernos para esta parte do curso: twp01IPythonNotebook - mostra o caminho ao redor do notebook IPython (view online) twp02Leveragedetfs - simule alavancados etfs para provar que não existe tal como duplicação de etf (view online) twp03Workingwithmodules. ipynb Aprenda a trabalhar com módulos (veja online) Obtenha os notebooks Basta obter o arquivo zip e extraí-lo para sua pasta de cadernos e, em seguida, iniciar o notebook Jupyter para vê-los aparecer no painel.

No comments:

Post a Comment