Biblioteca de Negociação Algorítmica Python.
O PyAlgoTrade é uma Biblioteca de Negociação Algorítmica Python, com foco em backtesting e suporte para negociação de papéis e negociação ao vivo. Digamos que você tenha uma ideia para uma estratégia de negociação e gostaria de avaliá-la com dados históricos e ver como ela se comporta. O PyAlgoTrade permite que você faça isso com o mínimo de esforço.
Principais características.
Totalmente documentado. Evento dirigido. Suporta ordens Market, Limit, Stop e StopLimit. Suporta o Yahoo! Arquivos Finanças, Google Finance e NinjaTrader CSV. Suporta qualquer tipo de dados de séries temporais no formato CSV, por exemplo, o Quandl. Suporte de negociação Bitcoin através do Bitstamp. Indicadores técnicos e filtros como SMA, WMA, EMA, RSI, Bandas de Bollinger, expoente de Hurst e outros. Métricas de desempenho como a taxa de Sharpe e a análise de rebaixamento. Manipulando eventos do Twitter em tempo real. Criador de perfil de eventos. Integração TA-Lib.
Muito fácil de dimensionar horizontalmente, isto é, usando um ou mais computadores para fazer backtest de uma estratégia.
O PyAlgoTrade é gratuito, de código aberto e está licenciado sob a Licença Apache, Versão 2.0.
QUANTLABS.
Quant. Recursos para Traders.
Introdução ao meu futuro e opções de fórmulas de negociação script Python.
Apresentando o meu futuro e as fórmulas de negociação de opções Script Python.
Eu fiz um script de negociação Python completo, que incidirá sobre dezenas de fórmulas para negociação fundamental com opções e futuros. Como já indiquei no passado, isso está se tornando a base da minha Fase 2 para o negócio de trading independente da Algo em Python & # 8221; série de curso que acabamos de começar na semana passada.
Este script Python será disponibilizado para todos os meus membros do Quant Elite imediatamente.
Use CFTC para dados de futuros históricos e compromisso de interesse aberto de negociação.
Por fim, você sabia sobre algo chamado relatórios de Compromisso de Negociação? Estes podem ser disponibilizados gratuitamente para medir o interesse aberto em todas as principais commodities negociadas em todo os EUA. Muitos comerciantes profissionais usam isso como um meio de medir a direção do mercado toda terça-feira quando esses relatórios são divulgados. Além disso, espere ver isso em minha fase 3 sobre o uso do Forex para medir as condições macroeconômicas do governo.
Lá vai você, outro pedacinho de bondade comercial onde eu tento ajudar você a ter sucesso em sua negociação. Quero dizer a sério, eu faço isso agora quase duas vezes por semana AO VIVO agora tanto para meus membros Quant Elite quanto para outros membros do grupo Meetup.
Ouça todas as suas opções de preços para os meus cursos que acessaram recentemente todos os itens acima.
Necessário para ser um membro do & # 8216; Quantia Elite & # 8217; para acesso a todos os itens acima.
OBSERVAÇÃO: Agora eu posto meus ALERTAS DE NEGOCIAÇÃO em minha CONTA pessoal do FACEBOOK e TWITTER. Não se preocupe, pois não publico vídeos estúpidos sobre gatos ou o que eu como!
Opções de precificação em Python.
Opções de precificação em Python.
Desculpas por essa falta de atualizações, estive ocupado trabalhando em uma biblioteca de preços de opções no Python. Eu até agora consegui criar meu primeiro pricer de opção asiática dependente de caminho e finalmente está me fornecendo os resultados corretos. Ele não está totalmente pronto para implementação, pois precisa de otimização para ser executado em uma velocidade aceitável no meu servidor.
Embora o C ++ seja a linguagem predominante para precificação de opções, decidi ver como eu me sairia produzindo uma biblioteca baseada em Python. Isso não apenas melhoraria minhas habilidades em Python, mas também permitiria uma integração direta da biblioteca no site.
A biblioteca, que estou nomeando provisoriamente PyQuant, é muito simples no momento. Ele consiste em dois componentes principais, um conjunto de soluções de forma fechada para chamadas / puts de Vanilla e os Digitals, além de um pricer - dor básico de Monte Carlo que precifica as opções Digital e Digital Dupla. Com o tempo, vou buscar ou obter soluções de forma fechada para todas as opções que eu puder, mas agora estou aproveitando o desenvolvimento do solucionador de Monte Carlo.
As soluções de formulário fechado dependem de duas funções estatísticas - a Função de densidade de probabilidade normal e a Função de distribuição normal cumulativa. Uma aproximação numérica para o CNDF pode ser encontrada em [1]. De fato, muitas das soluções de forma fechada são dadas naquele texto, que é onde eu as obtive. Com o NPDF e um CNDF, consegui calcular soluções para as Chamadas e Puts de Vanilla, bem como para os gregos comuns: Delta, Gamma, Rho, Vega e Theta. Ainda estou trabalhando em soluções de formulário fechado para as opções digitais.
As soluções baseadas em Monte Carlo funcionam de forma diferente. Existe um módulo que contém todos os objetos pay-off para cada tipo de opção - Call, Put, Forward, Chamada Digital, etc. Outro módulo armazena objetos de opção. No caso da opção Vanilla, é necessário um tempo de expiração e um pagamento. A greve é encapsulada no objeto pay-off, que garante a recuperação do código para pagamentos e opções. O módulo final inclui motores Monte Carlo que calculam uma grande variedade de evoluções do caminho das ações (com base no Movimento Browniano Geométrico) e os usam para calcular um pay-off esperado da opção. O pagamento é descontado na taxa livre de risco e isso fornece o preço.
Nesta fase, é computacionalmente dispendioso executar novamente o pricer de Monte Carlo quando se altera uma entrada. Existem algumas maneiras de otimizar isso. O primeiro é fazer uso do SciPy, uma biblioteca científica do Python. Ele inclui muitas estratégias de otimização - dê uma olhada neste artigo sobre Performance Python, seu desempenho comparado ao C ++ pode apenas surpreendê-lo. A segunda é escrever uma biblioteca C ++ dedicada que possa ser chamada pelo Python. No entanto, isso é contrário à ideia de uma biblioteca de preços de derivativos do Python.
[1] - Joshi, M., Os Conceitos e Prática de Finanças Matemáticas, Cambridge University Press.
A Quantcademy.
Participe do portal de associação da Quantcademy que atende à crescente comunidade de traders de quantificação de varejo e aprenda como aumentar a lucratividade de sua estratégia.
Negociação Algorítmica Bem Sucedida.
Como encontrar novas ideias de estratégia de negociação e avaliá-las objetivamente para o seu portfólio usando um mecanismo de backtesting personalizado no Python.
Comércio Algorítmico Avançado.
Como implementar estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas Bayesianas com R e Python.
Por que Python?
Antes de começarmos, gostaria de falar sobre o motivo pelo qual uso o Python para computação financeira. Levei vários anos para entender todas as opções e tentarei convencê-lo de que o Python é realmente a melhor ferramenta para a maioria das tarefas envolvidas na negociação.
Quando comecei a programar quando criança em algum lugar no início dos anos 90, era fácil escolher uma linguagem de programação, pois simplesmente não havia muitos para escolher. Eu comecei em Pascal e desde então tenho 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, já que tenho coisas melhores para fazer (como o trabalho real), mas eu precisava, pois não tinha uma linguagem de "canivete suíço" para todas as minhas necessidades. Eu precisava de C e Delphi para fazer aplicativos independentes, PHP para construir um site e Matlab para cálculos científicos. Como diz o ditado, "o que é de todos os ofícios não domina ninguém", então, ao mudar de um idioma para outro, nunca adquiri conhecimento especializado em nenhum deles.
Idealmente, eu gostaria de aprender apenas uma linguagem que seja adequada para todos os tipos de trabalho: processamento de números, desenvolvimento de aplicações, desenvolvimento web, interface com APIs etc. Essa linguagem seria fácil de aprender, o código seria compacto e claro, seria executado em qualquer plataforma. Isso me permitiria trabalhar de forma interativa, permitindo que o código evoluísse enquanto eu o escrevia e fosse pelo menos livre como na fala. E o mais importante, eu me preocupo muito mais com o meu próprio tempo do que com o tempo de CPU do meu PC, então o desempenho do processamento de números é menos importante para mim do que minha própria produtividade.
Atualmente, dois idiomas mais populares para computação técnica e científica são o Matlab e o Python. Ambos satisfazem muitos dos desejos descritos acima, mas eles têm algumas diferenças importantes. O Matlab é mais popular quando se trata de computação técnica. Isso é o que eu costumava usar no dia-a-dia para resolver problemas de engenharia. Para simulações numéricas e trabalho com dados "limpos", é provavelmente a melhor ferramenta que existe. Bom IDE, fantásticas funções de plotagem, ótima documentação. É menos adequado para o desenvolvimento de aplicativos ou como uma linguagem de uso geral. Espere pagar
2k \ $ para uma licença comercial básica mais extra para caixas de ferramentas específicas.
Fazer pesquisa financeira no Matlab provou ser um grande desafio para mim, principalmente porque não há uma maneira fácil de lidar com dados "sujos" (dados que não estão bem alinhados em uma tabela, mas têm várias fontes com datas diferentes e entradas ausentes). . Outro desafio que enfrentei foi manter meu código de se tornar uma bagunça. É possível escrever bibliotecas com o Matlab, mas está longe de ser trivial e o design da linguagem realmente encoraja a codificação desordenada. Ao usar o Matlab para o desenvolvimento de estratégias de negociação, pude lidar com as deficiências dessa plataforma. No entanto, quando decidi criar um sistema de negociação automática, atingi um beco sem saída. Embora eu conseguisse me conectar à API Interacive Brokers, descobri que não havia como criar um aplicativo confiável. Embora seja bom para pesquisa, o Matlab é uma droga para a implantação. Foi quando decidi olhar para outras opções. O Python é muito semelhante ao Matlab e resolve a maioria das suas deficiências. E é grátis! Com o trabalho interativo de notebook do Ipython em 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 mineração de dados até desenvolvimento web e qualidade de produção com ótimas GUIs. Se eu tivesse que começar tudo de novo, eu escolheria Python, pois me pouparia o trabalho de aprender outra língua para Gui e desenvolvimento web. Depois de usar o Python por três anos, eu ainda estou tão entusiasmado quanto o momento em que caí. Eu sinto que muitos outros traders podem se beneficiar enormemente aprendendo Python desde o começo e por essa razão eu configurei um curso de Trading With Python.
Instalação.
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 milhares de bibliotecas e ferramentas. Este guia irá ajudá-lo a obter tudo o que você precisa na sua caixa de ferramentas quant, sem problemas.
Felizmente, existem várias distribuições, contendo a maioria dos pacotes necessários, tornando a instalação mais fácil.
A melhor distribuição na minha opinião é Anaconda da Continuum Analytics.
A distribuição Anaconda inclui:
Python 3 Interpretador Python, sobre o qual todo o resto roda o Ipython: Interactive shell & amp; notebook Spyder IDE numpy & amp; scipy: ferramentas de computação científica, semelhantes às pandas2 do Matlab: Biblioteca de estruturas de dados. muitos mais pacotes científicos e utilitários, consulte a lista de pacotes.
Então, por favor, vá em frente e instale o Anaconda.
Ferramentas extras e bibliotecas.
Ao lado dos itens incluídos no instalador do Anaconda, você precisará de pelo menos um editor de texto de descida e um navegador.
notepad ++ é um editor de texto versátil e 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 de xml, documentação, etc., serão abordadas posteriormente.
Código em execução.
A maior parte do código deste curso é executada em um documento interativo chamado "notebook".
Nota: O ambiente de programação interativo que usamos é chamado de notebook Jupyter. Anteriormente, era chamado de "IPython notebook", 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 nomenclatura, portanto, você encontrará referências ao Ipython Notebook, que é o mesmo que o Jypyter Notebook.
Lançamento do notebook Jupyter.
Neste momento (maio de 2016) 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 notebooks para obter acesso aos seus notebooks.
No entanto, existem várias opções para abrir rapidamente seus blocos de anotações:
Iniciando o notebook Jupyter com um atalho.
Se você estiver usando um diretório estático para armazenar os blocos de anotações, a maneira mais fácil de abri-los em um diretório personalizado é usando um atalho modificado: 1. Localize o atalho para o bloco de anotações no menu Iniciar clicando em 'Iniciar' e digitando 'Jupyter 'na janela de pesquisa.
Quando o atalho for encontrado, copie-o para a área de transferência pressionando o botão direito do mouse e selecionando "copiar". Em seguida, cole-o na 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 'propriedades'. Altere o campo "Iniciar em" para o diretório onde seus blocos de anotações estão localizados.
Você pode criar vários atalhos para cada diretório de blocos de anotações separado. & lt;! - Um pequeno screencast mostra como fazer isso.
Um tutorial mais extenso sobre como usar o notebook pode ser encontrado aqui.
Bibliotecas científicas.
O NumPy é um pacote fundamental projetado para cálculos científicos. Em sua funcionalidade, é muito semelhante ao Matlab, fornecendo métodos de trabalho com matrizes e matrizes multidimensionais. O site da Numpy fornece toda a documentação que você precisa, juntamente 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, pois agora é suficiente entender os conceitos gerais de como 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! Normalmente, precisaremos apenas das funções plot () e hist (). Outro ótimo tutorial de plotagem de funções é dado neste caderno.
Escrevendo, executando e depurando código.
Até agora nos concentramos em escrever código dentro do notebook IPython. Esta é uma boa maneira de criar rapidamente protótipos, mas quando você precisa reutilizar a mesma funcionalidade em diferentes blocos de notas, o código de copiar e colar é 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 funções / classes podem ser disponibilizadas pela diretiva de importação. Uma boa explicação dos módulos pode ser encontrada nos documentos em python. 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 de trabalho de desenvolvimento de código típico consiste em dois estágios:
Estágio de prototipagem: é aqui que você adota a abordagem rápida e suja. Desenvolver de forma interativa usando IPython, IPython notebook ou Spyder. Aqui você pode reutilizar funções de bibliotecas existentes e criar novas funcionalidades. O notebook é ideal para trabalhos interativos, mas menos adequado para depuração avançada, o Spyder é excelente para depuração e o Ipython está em algum lugar entre eles. Minha própria experiência é que um depurador avançado raramente é necessário, normalmente eu posso resolver 70% dos erros apenas olhando para a mensagem de erro, outros 25% adicionando uma instrução print. Há também uma maneira de iniciar um depurador a partir do bloco de anotações. Basta digitar% qtconsole no notebook e um novo console será aberto conectado ao mesmo ipython nos bastidores. O console tem acesso a todas as variáveis e também pode executar% debug, que iniciará uma sessão de depuração.
Estágio do módulo: quando estiver satisfeito com a funcionalidade desenvolvida em um estágio de prototipagem, você poderá integrá-lo em um módulo. Neste estágio, é uma boa prática adicionar alguma documentação ao código que você escreveu. A documentação de código no Python é muito fácil com docstrings. Docstrings são strings de texto incluídas no código que são usadas para documentar a funcionalidade. Para alguns exemplos, dê uma olhada aqui. Para otimizar a produtividade no estágio do módulo, você precisa de um bom editor de código fonte. Existem muitas opções por aí. Meus favoritos (gratuitos) são (em ordem crescente de complexidade e recursos):
Notepad ++ notepad, mas muito melhor (destaque de sintaxe etc). Ideal para mudanças rápidas de código, quando você não quer abrir um editor mais extenso. Spyder: * editor leve que fecha a lacuna entre o IPython e um IDE completo (Integrated Development Environment). Especificamente direcionado ao trabalho científico interativo. Pyscripter - Fácil de usar IDE com um depurador bem integrado Somente para Windows Pydev - IDE de qualidade profissional.
Pode levar algum tempo para encontrar uma maneira de desenvolver o código mais adequado a você. Para mim, o fluxo de trabalho ideal é: Protótipo com notebook - & gt; adicionar a um módulo com PyDev ou PyScripter - & gt; Use o módulo em um novo notebook. \ Mais material de leitura: capítulo 3 do livro PDA. Ok, teoria suficiente, vamos começar a trabalhar com módulos. Se você ainda não baixou as pastas de trabalho para esta parte, por favor, pegue-as na seção de cadernos de exemplo e dê uma olhada no caderno twp_03_Working_with_modules.
Exemplos de cadernos
Agora é a hora de utilizar os conceitos que você aprendeu nesta parte. Vamos pular direto para o trabalho com matrizes numpy e funções de plotagem. Quanto à plotagem, agora você só precisa de duas funções: plot () e * hist () *, juntamente com alguns comandos para definir os rótulos de títulos e eixos. Há três exemplos de cadernos para esta parte do curso:
twp_01_IPython_Notebook - mostra o caminho em torno do IPython notebook (ver online) twp_02_Leveraged_etfs - simula o etfs alavancado para provar que não existe o decaimento etf alavancado (ver online) twp_03_Working_with_modules. ipynb aprender a trabalhar com módulos (ver online)
Obtenha os blocos de anotações Basta obter o arquivo zip e extraí-lo para a pasta de blocos de anotações e iniciar o bloco de anotações Jupyter para vê-los no painel.
No comments:
Post a Comment