bt - Backtesting flexível para Python¶
O que é bt? ¶
bt é um framework flexível de backtesting para Python usado para testar estratégias de negociação quantitativas. Backtesting é o processo de testar uma estratégia em um dado conjunto de dados. Esta estrutura permite que você crie facilmente estratégias que combinam e combinam diferentes Algos. Ele visa promover a criação de blocos de lógica de estratégia facilmente testáveis, reutilizáveis e flexíveis para facilitar o rápido desenvolvimento de estratégias comerciais complexas.
O objetivo: salvar quants de reinventar a roda e deixá-los concentrar-se na parte importante do trabalho - desenvolvimento da estratégia.
bt é codificado em Python e se junta a um ecossistema vibrante e rico para análise de dados. Existem inúmeras bibliotecas para aprendizado de máquina, processamento de sinal e estatísticas e podem ser alavancadas para evitar reinventar a roda - algo que acontece muitas vezes ao usar outras linguagens que não têm a mesma riqueza de alta qualidade, projetos de fontes.
bt é construído em cima do ffn - uma biblioteca de funções financeiras para Python. Confira!
Um exemplo rápido¶
Aqui está um gosto rápido de bt:
Um Backtest de Estratégia Simples¶
Vamos criar uma estratégia simples. Criaremos uma estratégia mensal reequilibrada e de longa duração, onde colocamos pesos iguais em cada ativo em nosso universo de ativos.
Primeiro, vamos baixar alguns dados. Por padrão, bt. get (alias para ffn. get) baixa o Fechar ajustado do Yahoo! Finança. Vamos baixar alguns dados a partir de 1º de janeiro de 2018 para os propósitos desta demonstração.
Uma vez que possamos nossos dados, criaremos nossa estratégia. O objeto Estratégia contém a lógica estratégica ao combinar vários Algos.
Finalmente, vamos criar um Backtest, que é a combinação lógica de uma estratégia com um conjunto de dados.
Uma vez feito isso, podemos executar o backtest e analisar os resultados.
Agora, podemos analisar os resultados do nosso backtest. O objeto Result é um wrapper fino em torno de ffn. GroupStats que adiciona alguns métodos auxiliares.
Modificando uma Estratégia¶
Agora, e se fizéssemos essa estratégia semanalmente e também usássemos alguma abordagem de estilo de paridade de risco usando pesos que são proporcionais ao inverso da volatilidade de cada ativo? Bem, tudo o que temos a fazer é ligar alguns algos diferentes. Ver abaixo:
Como você pode ver, a lógica da estratégia é fácil de entender e, mais importante, fácil de modificar. A idéia de usar Algos simples e composíveis para criar estratégias é um dos principais blocos de construção do bt.
Estrutura da árvore A estrutura da árvore facilita a construção e composição de estratégias complexas de negociação algorítmica que são modulares e reutilizáveis. Além disso, cada nó de árvore possui seu próprio índice de preços que pode ser usado por Algos para determinar a alocação de um nó & # 8217; s. Algorithm Stacks Algos e AlgoStacks são outras características principais que facilitam a criação de lógica de estratégia modular e reutilizável. Devido à sua modularidade, esses blocos de lógica também são mais fáceis de testar - um passo importante na construção de soluções financeiras robustas. Charting and Reporting bt também fornece muitas funções de gráficos úteis que ajudam a visualizar os resultados do backtest. Também planejamos adicionar mais gráficos, tabelas e formatos de relatório no futuro, como relatórios PDF gerados automaticamente. Estatísticas detalhadas Além disso, bt calcula um monte de estatísticas relacionadas a um backtest e oferece uma maneira rápida de comparar essas várias estatísticas em vários backtests diferentes através dos métodos de exibição dos resultados.
Futuros esforços de desenvolvimento incidirão em:
Velocidade Devido à natureza flexível do bt, um trade-off teve que ser feito entre usabilidade e desempenho. A usabilidade sempre será a prioridade, mas desejamos melhorar o desempenho tanto quanto possível. Algos Também desenvolveremos mais algoritmos com o passar do tempo. Também incentivamos alguém a contribuir com seus próprios algos também. Cartografia e Relatórios Esta é outra área que desejamos melhorar constantemente, pois o relatório é um aspecto importante do trabalho. A elaboração de gráficos e relatórios também facilitam a descoberta de erros na lógica da estratégia.
Jon V.
BigData. Iniciantes. Negociação.
BigData. Iniciantes. Negociação.
Construindo um sistema backtesting em Python: ou como perdi $ 3400 em duas horas.
Construir um sistema de backtest é realmente muito fácil. Fácil de estragar, quero dizer. Embora existam toneladas de excelentes bibliotecas por aí (e as abordaremos em algum momento), eu sempre gosto de fazer isso por conta própria para ajustá-la.
De todos os sistemas backtesting que eu vi, podemos assumir que existem duas categorias:
Hoje, falaremos sobre "loopers".
Os "for-loopers" são o meu tipo favorito de backtesters. Eles são triviais para escrever e super divertidos para expandir, mas eles têm alguns fluxos vitais e, infelizmente, a maioria dos backtesters lá fora é "for-loopers" (ps: Eu preciso encontrar um nome melhor para isso!).
Como funciona o looping? Usando um loop for (como você pode ter adivinhado). É algo assim:
Muito simples, certo? É 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 sua estratégia de aplicação () trabalhando no backtesting e na produção Você precisa ter tudo na mesma linguagem de programação.
Vamos mergulhar nessas, uma a uma.
Escalabilidade. Eu estava experimentando um par de semanas atrás com um algoritmo de escalada de colina para otimizar uma das minhas estratégias. Ainda está em execução. Depois de duas semanas. E eu construo sistemas robustos para uma vida. Por que ainda está funcionando? Você pode usar multiprocessamento, Disco, produtor / consumidor (usando o ZeroMQ) ou apenas threads para acelerar isso, mas alguns problemas não são "paralisações embaraçosas" (sim, este é um termo real, e não uma das minhas palavras inventadas). A quantidade de trabalho para escalar um backtester como esse (especialmente quando você quer fazer a mesma máquina aprendendo em cima dela) é enorme. Você pode fazê-lo, mas é o caminho errado.
Produção e backtesting em sincronia. As vezes que fui mordido por isso. Posso recordar as trocas perdidas onde eu estava "hm, por que eu entrei nesse comércio?" ou o meu antigo favorito "POR QUE A PARADA DE REALIZAÇÃO FOI APLICADA AGORA?".
Tempo da história: tive uma ideia para otimizar minha estratégia, para executar um backtester para ver o que aconteceria se eu pudesse colocar uma parada posterior depois que o comércio fosse rentável para garantir sempre lucros. Backtesting funcionou como um charme com um aumento de 13% nos ganhos e a produção perdeu todo comércio. Descobri que depois do meu algo perdi US $ 3400 em algumas horas (uma lição muito cara).
Manter a estratégia apply_strategy em sincronia é muito difícil e torna-se quase impossível quando você deseja fazê-lo de forma distribuída. E você não quer ter duas versões de sua estratégia que sejam "quase" idênticas. A menos que você tenha US $ 3400 de sobra.
Usando diferentes idiomas, adoro Python. E Erlang. E Clojure. E J. E C. E R. E Ruby (na verdade eu odeio Ruby). Eu quero poder aproveitar a força de outros idiomas no meu sistema. Quero experimentar estratégias em R onde há bibliotecas muito bem testadas e há uma enorme comunidade por trás disso. Eu quero ter Erlang para escalar meu código e C para crunch dados. Se você quer ser bem sucedido (não apenas na negociação), você precisa usar todos os recursos disponíveis sem prejuízos. Aprendi toneladas de coisas de sair com os desenvolvedores R sobre como você pode delta hedge bonds e visualizá-los ou por que razão Sharpe pode ser uma mentira. Todo idioma tem uma multidão diferente e você quer que muitas pessoas despejam idéias em seu sistema. Se você tentar aplicar a estratégia apply_strategy em idioma 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, não as envio para o pipeline. Um "melhor" caminho (para que você possa dormir à noite) são os geradores de eventos.
Próximamente, compartilhando e discutindo meu backtester mais simples (mas com maior sucesso)!
Se você tiver mais comentários, clique-me no jonromero ou inscreva-se no boletim informativo.
Legal outro. Este é um tutorial de engenharia sobre como construir uma plataforma algotrading para experimentação e FUN. Qualquer sugestão aqui não é um conselho financeiro. Se você perder qualquer (ou todos) o seu dinheiro porque seguiu quaisquer conselhos de negociação ou implantou este sistema na produção, não pode culpar este blog aleatório (e / ou eu). Aproveite a seu próprio risco.
QuantStart.
Junte-se ao portal de membros privados da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento. Você encontrará um grupo bem informado de mentalistas quant pronto para responder suas perguntas comerciais mais importantes.
Confira meu ebook sobre o comércio de quant, onde eu ensino você como criar estratégias de negociação sistemáticas lucrativas com ferramentas Python, desde o início.
Dê uma olhada no meu novo ebook sobre estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas bayesianas, com Python e R.
Por Michael Halls-Moore em 21 de janeiro de 2018.
No artigo anterior sobre Ambientes de Análise de Análise de Pesquisa Em Python Com Pandas, criamos um ambiente de backtesting baseado em pesquisa orientado a objetos e testávamos isso em uma estratégia de previsão aleatória. Neste artigo, faremos uso da maquinaria que introduzimos para realizar pesquisas sobre uma estratégia real, ou seja, o Crossover de média móvel na AAPL.
Estratégia de Crossover Média em Movimento.
A técnica de Crossover de média móvel é uma estratégia de impulso simplista extremamente conhecida. Muitas vezes, é considerado o exemplo do "Olá Mundo" para negociação quantitativa.
A estratégia descrita aqui é longa apenas. São criados dois filtros de média móvel simples separados, com diferentes períodos de lookback, de uma série temporal específica. Os sinais para comprar o recurso ocorrem quando a média móvel de lookback mais curta excede a média móvel de lookback mais longa. Se a média mais longa exceder a média mais curta, o ativo é vendido de volta. A estratégia funciona bem quando uma série temporal entra em um período de forte tendência e, em seguida, inverte lentamente a tendência.
Para este exemplo, escolhi a Apple, Inc. (AAPL) como a série temporal, com um curto lookback de 100 dias e um longo lookback de 400 dias. Este é o exemplo fornecido pela biblioteca de negociação algorítmica de tirolesa. Assim, se quisermos implementar o nosso próprio backtester, precisamos garantir que ele coincida com os resultados na linha aérea, como um meio básico de validação.
Implementação.
Certifique-se de seguir o tutorial anterior aqui, que descreve como a hierarquia de objeto inicial para o backtester é construída, caso contrário, o código abaixo não funcionará. Para esta implementação particular usei as seguintes bibliotecas:
A implementação do ma_cross. py requer backtest. py do tutorial anterior. O primeiro passo é importar os módulos e objetos necessários:
Como no tutorial anterior, vamos sub-classificar a classe base abstrata da Estratégia para produzir MovingAverageCrossStrategy, que contém todos os detalhes sobre como gerar os sinais quando as médias móveis da AAPL se cruzam.
O objeto requer um short_window e um long_window sobre o qual operar. Os valores foram configurados para padrões de 100 dias e 400 dias, respectivamente, que são os mesmos parâmetros utilizados no exemplo principal de tirolesa.
As médias móveis são criadas usando a função pandas rolling_mean nas barras ['Fechar'] preço de fechamento do estoque da AAPL. Uma vez que as médias móveis individuais foram construídas, a série do sinal é gerada definindo a coluna igual a 1,0 quando a média móvel curta é maior do que a média móvel longa, ou 0,0 caso contrário. A partir disso, as ordens de posições podem ser geradas para representar sinais comerciais.
O MarketOnClosePortfolio é subclassado do Portfolio, que é encontrado em backtest. py. É quase idêntico à implementação descrita no tutorial anterior, com a exceção de que os negócios são agora realizados em uma base Close-to-Close, em vez de Open-to-Open. Para obter detalhes sobre como o objeto Portfolio está definido, consulte o tutorial anterior. Eu deixei o código em completo e mantenho esse tutorial autônomo:
Agora que as classes MovingAverageCrossStrategy e MarketOnClosePortfolio foram definidas, uma função __main__ será chamada para amarrar toda a funcionalidade em conjunto. Além disso, o desempenho da estratégia será examinado através de um gráfico da curva de equidade.
O objeto DataReader de pandas transfere os preços de ações da AAPL da OHLCV para o período de 1º de janeiro de 1990 a 1º de janeiro de 2002, momento em que os sinais DataFrame são criados para gerar os sinais de longo tempo. Posteriormente, o portfólio é gerado com uma base de capital inicial de 100.000 USD e os retornos são calculados na curva de patrimônio.
O passo final é usar matplotlib para plotar um gráfico de dois dígitos de ambos os preços da AAPL, superado com as médias móveis e os sinais de compra / venda, bem como a curva de equidade com os mesmos sinais de compra / venda. O código de plotagem é tomado (e modificado) do exemplo de implementação de tirolesa.
A saída gráfica do código é a seguinte. Utilizei o comando IPython% paste para colocar isso diretamente no console IPython, enquanto no Ubuntu, de modo que a saída gráfica permaneça em exibição. Os roseticks cor-de-rosa representam a compra do estoque, enquanto os bastões negros representam a venda de volta:
AAPL Moving Average Crossover Performance de 1990-01-01 a 2002-01-01.
Como pode ser visto, a estratégia perde dinheiro ao longo do período, com cinco comércios de ida e volta. Isso não é surpreendente, dado o comportamento da AAPL durante o período, que estava em uma ligeira tendência descendente, seguido de um aumento significativo em 1998. O período de lookback dos sinais da média móvel é bastante grande e isso impactou o lucro do comércio final , o que de outra forma pode ter tornado a estratégia rentável.
Em artigos subsequentes, criaremos um meio mais sofisticado de análise de desempenho, além de descrever como otimizar os períodos de lookback dos sinais de média móvel individual.
Apenas iniciando o comércio quantitativo?
3 razões para se inscrever para a lista de e-mails QuantStart:
1. Quant Trading Lessons.
Você terá acesso instantâneo a um curso de e-mail gratuito de 10 partes, repleto de sugestões e dicas para ajudá-lo a começar a negociação quantitativa!
2. Todo o conteúdo mais recente.
Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.
Real, dicas de negociação viáveis, sem tonturas.
estratégias de negociação de backtesting python
Pegue os pedidos 7.
Participe do GitHub hoje.
O GitHub é o lar de mais de 20 milhões de desenvolvedores que trabalham juntos para hospedar e rever o código, gerenciar projetos e criar software juntos.
Clone com HTTPS.
Use o Git ou o check-out com o SVN usando o URL da web.
Com a versão 1.9.50.117 amostras de dados e feeds de dados do YahooFinance foram atualizados para a última informação disponível. Mas sendo o formato não documentado, ainda pode haver mudanças e cantos inesperados.
Aqui, um trecho de um CrossOver médio simples simples. Isso pode ser feito de várias maneiras diferentes. Use os documentos (e exemplos) Luke!
Incluindo um gráfico completo. De uma chance! Isso está incluído nas amostras como sigsmacross / sigsmacross2.py. Ao longo é sigsmacross. py, que pode ser parametrizado a partir da linha de comando.
Live Trading e backtesting plataforma escrita em Python.
Feed de dados ao vivo e negociação com corretores interativos (precisa de IbPy e beneficia muito de uma pira instalada) Gráfico visual (precisa de um garfo de comtypes até que uma solicitação de tração seja integrada na versão e benefícios de pira) Oanda (precisa de oatoterapia) (apenas API REST - v20 não suportou a transmissão em sequência quando implementado) Os feeds de dados de csv / arquivos, fontes on-line ou de pandas e chama Filtros para dados (como quebrar uma barra diária em pedaços para simular intradía) Múltiplos fluxos de dados e estratégias múltiplas suportadas Múltiplos cronogramas ao mesmo tempo Integrados Resampling e Repetição Step-Step backtesting ou de uma só vez (exceto na avaliação da Estratégia) Bateria de indicadores integrada Suporte do indicador TA-Lib (precisa de python ta-lib / verificar os documentos) Desenvolvimento fácil de indicadores personalizados Analisadores (por exemplo: TimeReturn , Ratio de Sharpe, SQN) e integração do pacto. Definição flexível dos esquemas de comissão. Simulação de corretores integrada com Mercado, Close, Limit, Stop, StopLimit, StopTrail, StopTrailLimit * e * OCO, ordens, deslizamento e ajuste contínuo de caixa para instrumentos futuros. Plotting (requer matplotlib)
Leia a documentação completa em:
Lista de indicadores embutidos (116)
Python 2.7 Python 3.2 / 3.3 / 3.4 / 3.5 / 3.6 Também funciona com pypy e pypy3 (sem traçado - matplotlib não é suportado em pypy)
A compatibilidade é testada durante o desenvolvimento com 2.7 e 3.5.
As outras versões são testadas automaticamente com Travis.
O backtrader é autônomo sem dependências externas (exceto se desejar traçar)
pip instalar backtrader.
pip instalar backtrader [plotting]
Se matplotlib não estiver instalado e você deseja fazer algum planejamento.
A versão mínima matplotlib é 1.4.1.
Um exemplo para IB Data Feeds / Trading:
IbPy não parece estar no PyPi. Ou:
ou (se git não estiver disponível no seu sistema):
Para outras funcionalidades como: Visual Chart, Oanda, TA-Lib, verifique as dependências na documentação.
Coloque o diretório backtrader encontrado nas fontes dentro do seu projeto.
X: Número de versão principal. Deve ficar estável, a menos que algo grande seja alterado como uma revisão para usar numpy Y: Número de versão menor. Para ser alterado após a adição de um novo recurso completo ou (Deus proibe), uma mudança de API incompatível. Z: número de versão de revisão. Para ser alterado para atualizações de documentação, pequenas mudanças, pequenas correções de bugs I: Número de Indicadores já incorporados na plataforma.
Se depois de ver os documentos e algumas amostras (veja o blog também) você sente que essa não é sua xícara de chá, você sempre pode dar uma olhada em plataformas semelhantes de Python:
bt ligeiramente pré-data backtrader e tem uma abordagem completamente diferente, mas é divertido, bt também foi escolhido como abreviatura para backtrader durante as importações e que alguns dos métodos têm a mesma denominação (nomeação óbvia de qualquer forma): executar, traçar.
&cópia de; 2018 GitHub, Inc. Termos Privacidade Segurança Status Ajuda.
Você não pode executar essa ação neste momento.
Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.
Quando você deve construir seu próprio Backtester? Por Michael Halls-Moore.
Michael Halls-Moore, fundador da QuantStart, apresentou "Quando você deve construir seu próprio Backtester?" Este ano, na QuantCon, nossa conferência de negociação anual de quant. Se você gostaria de assistir o vídeo da apresentação de Michael, você pode aqui. Você também pode acompanhar os slides aqui.
QuantCon Guest Post de Michael Halls-Moore.
Sobre este post.
O post é adequado para aqueles que estão iniciando negociação quantitativa, bem como aqueles que tiveram alguma experiência com a área. A postagem discute as armadilhas comuns de backtesting, bem como algumas incomuns!
Ele também analisa os diferentes tipos de mecanismos de teste, bem como a paisagem do software que implementa essas abordagens. Em seguida, discutimos se vale a pena construir seu próprio backtester, mesmo com a prevalência de ferramentas de código aberto disponíveis hoje.
Finalmente, discutimos os ins-and-outs de um sistema de backtesting dirigido por eventos, um tópico que cobrimos com frequência no QuantStart em postagens anteriores.
O que é um Backtest?
Um backtest é a aplicação de regras de estratégia de negociação a um conjunto de dados de preços históricos.
Ou seja, se definimos um conjunto de mecanismos de entrada e saída em um portfólio de ativos e aplicamos essas regras aos dados de preços históricos desses ativos, podemos tentar entender o desempenho desta "estratégia de negociação" que poderia ter sido alcançada no passado.
Uma vez foi dito que "Todos os modelos estão errados, mas alguns são úteis". O mesmo se aplica aos backtests. Então, o que eles servem?
Backtests, finalmente, nos ajudam a decidir se vale a pena viver a negociação de um conjunto de regras de estratégia. Ele nos fornece uma idéia de como uma estratégia poderia ter realizado no passado. Essencialmente, nos permite filtrar regras de estratégia ruim antes de alocar qualquer capital real.
É fácil gerar backtests. Infelizmente, os resultados do backtest não são resultados comerciais ao vivo. Eles são, em vez disso, um modelo de realidade. Um modelo que geralmente contém muitos pressupostos.
Existem dois tipos principais de backout de software: os sistemas "for-loop" e "driven-evento".
Ao projetar o software backtesting, há sempre um trade-off entre precisão e complexidade de implementação. Os dois tipos de backtesting acima representam o fim do espectro para essa compensação.
Armaduras de Backtesting.
Há muitas armadilhas associadas ao backtesting. Todos eles dizem respeito ao fato de que um backtest é apenas um modelo de realidade. Algumas das armadilhas mais comuns incluem:
Teste de Amostra - Isso ocorre quando você utiliza os mesmos dados para "treinar" seus modelos de negociação, bem como para "testá-lo". Isso quase sempre infla o desempenho de uma estratégia além daquilo que seria visto na negociação ao vivo. Isso ocorre porque ele não foi validado em dados não vistos, o que provavelmente diferirá marcadamente dos dados de treinamento. Em essência, é uma forma de superação. Sobrevivência Bias - Para índices do mercado de ações, como o S & P500, ocorre um processo periódico de listagem e exclusão, alterando a composição ao longo do tempo. Ao não ter em conta esta composição em mudança ao longo de um backtest, as estratégias de negociação são automaticamente "escolhendo os vencedores" em virtude de ignorar todas as empresas que caiu do índice devido à baixa capitalização de mercado. Por isso, é sempre necessário usar dados livres de viés de sobrevivência ao realizar backtests de longo prazo. Look-Ahead Bias - dados futuros podem "se esgueirar" para backtests de maneiras muito sutis. Considere calcular uma razão de regressão linear ao longo de um período de tempo específico. Se essa relação for usada na mesma amostra, então, implicitamente trouxemos dados futuros e, portanto, teremos provável desempenho inflado. Os analgésicos dirigidos por eventos solucionam em grande parte este problema, como discutiremos a seguir. Mudança do regime de mercado - Isso diz respeito ao fato de que os "parâmetros" do mercado de ações não são estacionários. Ou seja, o processo subjacente que gera movimentos de estoque não precisa ter parâmetros que permaneçam constantes no tempo. Isso dificulta a generalização de modelos parametrizados (das quais muitas estratégias comerciais são instâncias) e, portanto, o desempenho provavelmente será maior nos backtests do que na negociação ao vivo. Custos de transação - muitos testes avançados para Loop não levam em conta nem os custos básicos de transação, como taxas ou comissões. Isto é particularmente verdadeiro em documentos acadêmicos onde backtests são largamente conduzidos sem custos de transação. Infelizmente, é muito fácil encontrar estratégias altamente rentáveis sem custos de transação, mas causar perdas substanciais quando sujeitas a um mercado real. Os custos típicos incluem spread, impacto no mercado e derrapagem. Todos estes devem ser contabilizados em backtestes realistas.
Existem alguns problemas mais sutis com backtesting que não são discutidos com tanta frequência, mas ainda são incrivelmente importantes a serem considerados. Eles incluem:
Dados OHLC - Dados OHLC, que é o tipo de dados diários obtidos em sites gratuitos, como o Yahoo Finance, é muitas vezes uma amalgama de múltiplos recursos de intercâmbio. Portanto, é improvável que alguns dos valores mais extremos vistos (incluindo o preço alto e baixo do dia) provavelmente seriam obtidos por um sistema de negociação ao vivo. Esse "roteamento de pedidos" precisa ser considerado como parte de um modelo. Restrições de capacidade - Quando o backtesting é fácil utilizar um pote de dinheiro "infinito". No entanto, na realidade, o capital, bem como a margem, está fortemente limitado. É necessário também pensar nos limites do Volume diário médio (ADV), especialmente para estoques de pequena capitalização, onde é possível que nossos negócios possam, de fato, mover o mercado. Esses efeitos de "impacto no mercado" deveriam ser levados em consideração para fins de gerenciamento de risco. Benchmark Choice - A escolha do benchmark contra a qual a estratégia backtested está sendo medida um bom? Por exemplo, se você está negociando futuros de commodities e é neutro para o índice de ações S & P500 US, é realmente sensato usar o S & P500 como seu benchmark? Será que uma cesta de outros fundos de negociação de commodities faz mais sentido? Robustez - Ao variar o tempo de início da sua estratégia dentro do seu teste de volta, os resultados mudam drasticamente? Não deve ser importante para uma estratégia de longo prazo se o backtest é iniciado numa segunda-feira ou quinta-feira. No entanto, se é sensível às "condições iniciais", como você pode prever de forma confiável o desempenho futuro quando da negociação ao vivo? Overfitting / Bias-Variance Tradeoff - Nós discutimos isso um pouco acima no ponto de Teste In-Sample. No entanto, a superposição é um problema mais amplo para todos os métodos de aprendizagem de máquinas (supervisionados). A única maneira real de "resolver" esse problema é o uso cuidadoso de técnicas de validação cruzada. Mesmo assim, devemos ter o cuidado de não ter ajustado as nossas estratégias comerciais ao ruído no conjunto de treinamento. Tolerância psicológica - A psicologia é muitas vezes ignorada no financiamento quantitativo porque (supostamente) é removido criando um sistema algorítmico. No entanto, sempre se arrasa porque os quants tendem a "mexer" ou "substituir" o sistema, uma vez que foi implantado ao vivo. Além disso, o que pode parecer tolerável em um backtest, pode ser estomacal na negociação ao vivo. Se a sua curva de patrimônio testado em atraso mostra uma redução de 50% em algum momento do seu histórico de negociação, você também pode enfrentar isso em um cenário de negociação ao vivo?
Muito foi escrito sobre os problemas com backtesting. Tucker Balch e Ernie Chan consideram os problemas extensivamente.
For-Loop Backtest Systems.
Um Backtester For-Loop é o tipo mais direto de sistema backtesting e a variante mais freqüentemente vista em posts de blog quant, puramente por sua simplicidade e transparência.
Essencialmente, o sistema For-Loop itera em todos os dias de negociação (ou barra OHLC), realiza algum cálculo relacionado ao (s) preço (s) do (s) recurso (s), como uma Média Mover do fechamento, e depois vai longo ou curto Ativo particular (muitas vezes no mesmo preço de fechamento, mas às vezes o dia depois). A iteração continua então. Enquanto isso, o patrimônio total está sendo rastreado e armazenado para posteriormente produzir uma curva de patrimônio.
Aqui está o pseudo-código para esse algoritmo:
Como você pode ver, o design de tal sistema é incrivelmente simples. Isso torna atrativo para obter um "primeiro olhar" no desempenho de um determinado conjunto de regras da estratégia.
Vantagens.
Os backtesters For-Loop são simples de implementar em quase qualquer linguagem de programação e são muito rápidos de serem executados. A última vantagem significa que muitas combinações de parâmetros podem ser testadas para otimizar a configuração de negociação.
Desvantagens.
A principal desvantagem com os testes anteriores do For-Loop é que eles são bastante pouco realistas. Eles geralmente não possuem capacidade de custo de transação, a menos que seja especificamente adicionado. Normalmente, os pedidos são preenchidos imediatamente "no mercado" com o preço intermediário. Como tal, muitas vezes não há contabilidade para propagação.
Existe uma reutilização mínima do código entre o sistema backtesting e o sistema de negociação ao vivo. Isso significa que o código geralmente precisa ser escrito duas vezes, apresentando a possibilidade de mais erros.
Os analgésicos de For-Loop são propensos a Bias de Look-Ahead, devido a erros com indexação. Por exemplo, você deveria usar "i", "i + 1" ou "i-1" na indexação do painel?
Os backtesters para Loop devem realmente ser utilizados apenas como mecanismo de filtração. Você pode usá-los para eliminar as estratégias obviamente ruins, mas você deve permanecer cético quanto ao desempenho forte. Muitas vezes são necessárias mais pesquisas. Estratégias raramente funcionam melhor em negociação ao vivo do que em backtests!
Sistemas de Backtest com Drivers de Eventos.
Os testes de retorno conduzidos por eventos estão no outro extremo do espectro. Eles são muito mais parecidos com as implementações de infra-estrutura de negociação ao vivo. Como tal, eles são muitas vezes mais realistas na diferença entre o desempenho comercial backtesteado e ao vivo.
Esses sistemas são executados em um loop "while" grande que busca continuamente "eventos" de diferentes tipos na "fila de eventos". Os eventos potenciais incluem:
Tick Eventos - Assinale a chegada de novos dados de mercado Eventos de sinal - Geração de novos sinais de negociação Pedidos Eventos - Pedidos prontos para serem enviados ao corretor do mercado Eventos de preenchimento - Preencha informações do corretor do mercado.
Quando um determinado evento é identificado, é encaminhado para o (s) módulo (s) apropriado (s) na infra-estrutura, que lida com o evento e potencialmente gera novos eventos que retornam à fila.
O pseudo-código para um sistema Backtesting Drives de Eventos é o seguinte:
Como você pode ver, há uma forte dependência do módulo do gerenciador de portfólio. Esse módulo é o "coração" de um sistema de backtesting dirigido por eventos, como veremos abaixo.
Vantagens.
Existem muitas vantagens em usar um Backtester com Drivers de Eventos:
Eliminação do viés de Look-Ahead - Em virtude do design de passagem de mensagens, os sistemas Drivers de Eventos geralmente são livres de Bias de Look-Ahead, pelo menos no nível de negociação. Existe, no entanto, a possibilidade de introduzir indiretamente indiretamente o viés através de um modelo pré-pesquisado. Reutilização de código - Para negociação ao vivo, só é necessário substituir o manipulador de dados e os módulos do manipulador de execução. Toda estratégia, gerenciamento de risco / posição e código de medição de desempenho é idêntico. Isso significa que geralmente há muito menos erros para consertar. Nível de portfólio - Com um sistema de Drivers de Eventos, é muito mais direto pensar no nível de portfólio. Apresentar grupos de instrumentos e estratégias é fácil, assim como os instrumentos de hedge. Gerenciamento de risco / posição "correto" - Facilmente modular o risco e o gerenciamento de posição. Pode introduzir alavancagem e metodologias como Kelly's Criterion facilmente. Também pode incluir facilmente avisos de exposição setorial, limites ADV, limites de volatilidade e avisos de iliquidez. Implementação / Monitoramento Remoto - A natureza modular do código facilita a implantação na "nuvem" ou a co-localização do software perto de uma troca em um sistema virtualizado.
Desvantagens.
Embora as vantagens sejam claras, também existem algumas desvantagens fortes para o uso de um sistema tão complexo:
Tricky to Code - Construir um sistema testado por evento completamente testado provavelmente levará semanas ou meses de trabalho a tempo inteiro. Um corolário disso é que sempre existe um mercado saudável para desenvolvedores cuidadores freelance / contrato! Exigir Orientação de Objeto - Um design modular requer o uso de princípios de programação orientada a objeto (OOP) e, portanto, um idioma que possa suportar o OOP facilmente. Isso faz com que o teste da unidade seja muito mais direto. Engenharia de software - É mais provável que exijam conhecimentos e capacidades de engenharia de software, tais como log, teste de unidade, controle de versão e integração contínua. Execução Lenta - A natureza passando mensagens do código torna muito mais lento executar em comparação com uma abordagem vectorizada For-Loop. Várias combinações de parâmetros podem levar muito tempo para calcular em códigos não optimizados.
A paisagem do software.
Nesta seção, consideramos o software (tanto de código aberto como comercial) que existe tanto para sistemas For-Loop quanto para Drivers de Eventos.
Para os analgésicos For-Loop, as principais linguagens de programação / software que são utilizados incluem Python (com a biblioteca Pandas), R (e a biblioteca quantmod) e MatLab. Há muitos fragmentos de código a serem encontrados em blogs quant. Uma excelente lista de tais blogs pode ser encontrada naquocardia.
O mercado de sistemas com Drivers de eventos é muito maior, já que os clientes / usuários geralmente desejam que o software seja capaz tanto de backtesting quanto de negociação ao vivo em um único pacote.
As ofertas comerciais caras incluem Deltix e QuantHouse. Eles são freqüentemente encontrados em hedge funds quant, escritórios familiares e empresas comerciais de prop.
Os sistemas de backtesting e sistemas de negociação ao vivo baseados em nuvem são relativamente novos. Quantopian é um exemplo de uma configuração madura baseada na web para backtesting e negociação ao vivo.
Os quitações institucionais muitas vezes também criam seus próprios softwares internos. Isto é devido a uma combinação de restrições regulatórias, relações / relatórios de investidores e auditabilidade.
As quitações de varejo têm a opção de usar a abordagem "cloud + data" de Quantopian ou "rolar a sua própria" usando um fornecedor de nuvem, como Amazon Web Services, Rackspace Cloud ou Microsoft Azure, juntamente com um fornecedor de dados apropriado, como DTN IQFeed ou QuantQuote .
Em termos de software aberto, existem muitas bibliotecas disponíveis. Eles são na maior parte escritos em Python (por razões que descreverei abaixo) e incluem Zipline (Quantopian), PyAlgoTrade, PySystemTrade (Rob Carver / Investment Idiocy) e QSTrader (Quantestart próprio backtester).
Um dos aspectos mais importantes, no entanto, é que, independentemente de qual parte do software você use em última instância, ele deve ser emparelhado com uma fonte igualmente sólida de dados financeiros. Caso contrário, você estará em uma situação de "lixo, lixo fora" e seus resultados de negociação ao vivo diferirem substancialmente de seus backtests.
Linguagens de programação.
Enquanto o software cuida dos detalhes para nós, ele nos esconde de muitos detalhes de implementação que são muitas vezes cruciais quando desejamos expandir nossa complexidade de estratégia comercial. Em algum momento, muitas vezes é necessário escrever nossos próprios sistemas e a primeira questão que surge é "Qual idioma de programação devo usar?".
Apesar de ter um histórico como desenvolvedor de software quantitativo, não estou pessoalmente interessado em "guerras de linguagem". Há apenas tantas horas no dia e, como quants, precisamos fazer as coisas - não gastar tempo defendendo o design de idiomas nos fóruns de internet!
Nós só devemos nos interessar pelo que funciona. Aqui estão alguns dos principais concorrentes:
Python é uma linguagem de programação extremamente fácil de aprender e muitas vezes os indivíduos de primeira língua entram em contato quando decidem aprender programação. Possui uma biblioteca padrão de ferramentas que pode ler em quase qualquer tipo de dados imagináveis e conversar com qualquer outro "serviço" com muita facilidade.
Possui bibliotecas quantitativas de conhecimento / aprendizagem de dados (ML) excepcionais em NumPy, SciPy, Pandas, Scikit-Learn, Matplotlib, PyMC3 e Statsmodels. Embora seja ótimo para ML e ciência geral de dados, sofre um pouco por métodos estatísticos clássicos mais extensos e análise de séries temporais.
É ótimo para construir os sistemas de teste Back-Test for-Loop e Event-Driven. Na verdade, talvez seja uma das únicas línguas que permitam direitas pesquisas de ponta a ponta, backtesting, implantação, negociação ao vivo, relatórios e monitoramento.
Talvez a sua maior desvantagem é que é bastante lento para se executar quando comparado a outros idiomas, como o C ++. No entanto, o trabalho está sendo realizado para melhorar esse problema e ao longo do tempo Python está se tornando mais rápido.
R é um ambiente de programação estatística, em vez de uma "linguagem de programação de primeira classe" (embora alguns possam argumentar o contrário). Foi projetado principalmente para realizar análises estatísticas avançadas para séries temporais, estatísticas clássicas / freqüentadoras, estatísticas bayesianas, aprendizado de máquinas e análise de dados exploratórios.
É amplamente utilizado para o Backtesting For-Loop, muitas vezes através da biblioteca quantmod, mas não é particularmente adequado aos sistemas dirigidos a eventos ou ao comércio ao vivo. No entanto, ele se destaca na pesquisa estratégica.
C ++ tem uma reputação de ser extremamente rápido. Quase toda computação científica de alto desempenho é realizada em Fortran ou C ++. Esta é a principal vantagem. Portanto, se você está considerando a negociação de alta freqüência, ou trabalha em sistemas legados em grandes organizações, então C ++ provavelmente será uma necessidade.
Infelizmente, é doloroso para a realização de pesquisas estratégicas. Devido a estatização estática, é bastante complicado carregar, ler e formatar dados facilmente em comparação com Python ou R.
Apesar da sua idade relativa, recentemente foi modernizado substancialmente com a introdução do C ++ 11 / C ++ 14 e aprimoramentos de padrões adicionais.
Você também pode olhar para Java, Scala, C #, Julia e muitos dos idiomas funcionais. No entanto, minha recomendação é ficar com Python, R e / ou C ++, pois as comunidades comerciais de quant são muito maiores.
Você deveria escrever o seu próprio Backtester (Event-Driven)?
É uma ótima experiência de aprendizado para escrever seu próprio sistema de backtesting dirigido para eventos. Em primeiro lugar, isso obriga você a considerar todos os aspectos da sua infra-estrutura comercial, não apenas passar horas trabalhando em uma estratégia específica.
Mesmo que você não acabe usando o sistema para negociação ao vivo, ele irá fornecer uma grande quantidade de perguntas que você deveria estar perguntando aos seus fornecedores comerciais ou de teste de FOSS.
Por exemplo: como o seu sistema ao vivo atual é diferente da sua simulação de backtest em termos de:
Execução algorítmica e roteamento de pedidos? Distribuição, taxas, derrapagens e impacto no mercado? Gerenciamento de risco e dimensionamento de posição?
Enquanto os sistemas dirigidos a eventos não são rápidos ou fáceis de escrever, a experiência pagará dividendos educacionais enormes na sua carreira comercial.
Projeto Drivers Backtest 101 dirigido por eventos.
Como você faz escrever esse sistema?
A melhor maneira de começar é simplesmente baixar Zipline, QSTrader, PyAlgoTrade, PySystemTrade etc. e tentar ler a documentação e o código. Todos estão escritos em Python (devido aos motivos que descrevi acima) e, felizmente, o Python é muito como ler pseudo-código. Ou seja, é muito fácil de seguir.
Eu também escrevi muitos artigos sobre o projeto Backtest com o evento, que você pode encontrar aqui, que o orientam no desenvolvimento de cada módulo do sistema. Rob Carver, da Investment Idiocy, também expõe sua abordagem para construir esses sistemas para negociar futuros.
Lembre-se de que você não precisa ser um especialista no dia 1. Você pode levá-lo lentamente, dia-a-dia, módulo-por-módulo. Se você precisar de ajuda, você sempre pode contatar-me ou outros blogueiros quantos dispostos. Veja o final do artigo para o meu e-mail de contato.
Agora vou discutir os módulos que são freqüentemente encontrados em muitos sistemas de teste de eventos seguidos. Embora não seja uma lista exaustiva, deve dar-lhe um "sabor" de como esses sistemas são projetados.
Banco de dados mestre de valores mobiliários.
Aqui é onde todos os dados de preços históricos são armazenados, juntamente com o seu histórico comercial, uma vez que você vive. Um sistema de professsional não é apenas alguns arquivos CSV do Yahoo Finance!
Em vez disso, usamos um banco de dados ou sistema de arquivos de "primeira classe", como PostgreSQL, MySQL, SQL Server ou HDF5.
Idealmente, queremos obter e armazenar dados de nível de tiquetaque, pois nos dá uma idéia dos spreads de negociação. Isso também significa que podemos construir nossas próprias barras OHLC, em frequências mais baixas, se desejado.
Devemos sempre estar cientes de lidar com ações corporativas (como divisões de ações e dividendos), viés de sobrevivência (listagem de ações), além de rastrear as diferenças de fuso horário entre várias trocas.
Quantes individuais / de varejo podem competir aqui, já que muitas tecnologias de banco de dados de qualidade de produção são maduras, livres e de código aberto. O próprio dado está se tornando mais barato e "democratizado" através de sites como Quandl.
Ainda há muitos mercados e estratégias que são muito pequenas para que os grandes fundos estejam interessados. Este é um terreno fértil para comerciantes quantos de varejo.
Estratégias de negociação.
O módulo de estratégia de negociação em um sistema Gerenciado por Eventos geralmente administra algum tipo de mecanismo de previsão ou filtração em novos dados do mercado.
Recebe dados de barras ou carrapatos e, em seguida, usa esses mecanismos para produzir um sinal de negociação para um recurso longo ou curto. Este módulo NÃO é projetado para produzir uma quantidade, que é realizada através do módulo de dimensionamento de posição.
95% da discussão do blog de Quant geralmente gira em torno de estratégias de negociação. Eu pessoalmente acredito que deve ser mais como 20%. Isso porque eu acho que é muito mais fácil aumentar os retornos esperados, reduzindo custos através de gerenciamento de risco adequado e dimensionamento de posição, ao invés de perseguir estratégias com "mais alfa".
Portfolio & amp; Gerenciamento de pedidos.
O "coração" de um Backtester Evento-Driven é o Portfolio & amp; Sistema de gerenciamento de pedidos. É a área que requer mais tempo de desenvolvimento e testes de garantia de qualidade.
O objetivo deste sistema é passar do portfólio atual para o portfólio desejado, minimizando o risco e reduzindo os custos de transação.
O módulo vincula a estratégia, o risco, o dimensionamento da posição e as capacidades de execução da ordem do sistema. Ele também administra os cálculos de posição enquanto faz o teste para imitar os cálculos de uma corretora.
A principal vantagem de usar um sistema tão complexo é que permite que uma variedade de instrumentos financeiros sejam tratados sob um único portfólio. Isso é necessário para carteiras de estilo insitucional com hedging. Essa complexidade é muito complicada para codificar em um sistema Back-test For-Loop.
Risco & amp; Gerenciamento de posição.
Separar o gerenciamento de riscos em seu próprio módulo pode ser extremamente vantajoso. O módulo pode modificar, adicionar ou vetar pedidos que são enviados do portfólio.
Em particular, o módulo de risco pode adicionar coberturas para manter a neutralidade do mercado. Pode reduzir o tamanho da ordem devido à exposição do setor ou aos limites ADV. Ele pode vetar completamente um comércio se o spread for muito grande, ou as taxas são muito grandes em relação ao tamanho do comércio.
Um módulo de dimensionamento de posição separado pode implementar estimativas de volatilidade e regras de dimensionamento de posição, como a alavancagem de Kelly. Na verdade, a utilização de uma abordagem modular permite uma ampla personalização aqui, sem afetar qualquer estratégia ou código de execução.
Tais tópicos não estão bem representados na blogosfera quantitativa. No entanto, esta é provavelmente a maior diferença entre como as instituições e alguns comerciantes de varejo pensam sobre suas negociações. Talvez a maneira mais simples de obter retornos melhores seja começar a implementar o gerenciamento de riscos e o dimensionamento das posições desta maneira.
Manipulação de Execução.
Na vida real, nunca nos garantimos obter um preenchimento de mercado no meio do ponto!
Devemos considerar questões transacionais, tais como capacidade, spread, taxas, deslizamento, impacto no mercado e outras preocupações de execução algorítmica, caso contrário, nossos retornos de backtest provavelmente serão muito exagerados.
A abordagem modular de um sistema Gerenciado por Eventos nos permite mudar facilmente o BacktestExecutionHandler com o LiveExecutionHandler e implantar no servidor remoto.
Também podemos adicionar facilmente corretoras múltiplas usando o conceito de "herança" OOP. Isso, obviamente, pressupõe que as corretoras tenham uma interface de programação de aplicativos direta (API) e não nos forçam a utilizar uma interface gráfica de usuário (GUI) para interagir com seu sistema.
Uma questão a ser conhecida é a de "confiança" com bibliotecas de terceiros. Existem muitos desses módulos que facilitam a conversação com corretoras, mas é necessário realizar seus próprios testes. Certifique-se de que você está completamente feliz com essas bibliotecas antes de comprometer o capital extensivo, caso contrário você poderia perder muito dinheiro simplesmente devido a erros nesses módulos.
Performance & amp; Relatórios.
Os quads de varejo podem e devem emprestar as sofisticadas técnicas de relatórios utilizadas por quantis institucionais. Tais ferramentas incluem "painéis de controle" ao vivo do portfólio e os riscos correspondentes, um "backtest equity" vs diferença de "equidade ao vivo" ou "delta", juntamente com todas as métricas "usuais", como custos por comércio, distribuição de retornos, alta água marca (HWM), redução máxima, latência comercial média e alfa / beta em relação a um benchmark.
Devem ser feitas melhorias incrementais consistentes para esta infra-estrutura. Isso pode realmente atrair retornos a longo prazo, simplesmente eliminando erros e melhorando questões como a latência comercial. Não se limita a melhorar a "maior estratégia do mundo" (WGS).
O WGS acabará por corroer devido a "decaimento alfa". Outros acabarão por descobrir a vantagem e arbitrará os retornos. No entanto, uma infra-estrutura de negociação robusta, um sólido pipeline de pesquisa de estratégia e aprendizagem contínua são ótimas maneiras de evitar esse destino.
Otimização de infraestrutura pode ser mais "chato" do que o desenvolvimento da estratégia, mas torna-se significativamente menos aborrecido quando seus retornos são melhorados!
Implantação & amp; Monitoramento.
A implantação para um servidor remoto, juntamente com o monitoramento extensivo desse sistema remoto, é absolutamente crucial para sistemas institucionais. As quitações de varejo podem e devem utilizar essas idéias também.
Um sistema robusto deve ser implantado remotamente em "a nuvem" ou co-localizado perto de uma troca. A banda larga doméstica, fontes de energia e outros fatores significam que a utilização de um desktop / laptop doméstico não é confiável. Muitas vezes, as coisas falham no pior momento e levam a perdas substanciais.
Os principais problemas quando se considera uma implantação remota incluem; monitorando hardware, como CPU, RAM / swap, disco e E / S de rede, alta disponibilidade e redundância de sistemas, um bem pensado backup e plano de restauração, registro extensivo de todos os aspectos do sistema, bem como integração contínua, unidade teste e controle de versão.
Lembre-se da Lei de Murphy - "Se pode falhar, ela falhará".
Existem muitos fornecedores oferecidos que fornecem implantações de nuvem relativamente diretas, incluindo Amazon Web Services, Microsoft Azure, Google e Rackspace. Para fornecedores de tarefas de engenharia de software, incluem Github, Bitbucket, Travis, Loggly e Splunk, bem como muitos outros.
Pensamentos finais.
Infelizmente, não existe uma "solução rápida" na negociação quantitativa. Envolve muito trabalho e aprendizagem para ter sucesso.
Talvez um obstáculo importante para iniciantes (e alguns quants intermediários!) É que eles se concentram demais na melhor "estratégia". Tais estratégias sempre acabam por sucumbir à decomposição alfa e assim tornar-se inúmeras. Por isso, é necessário pesquisar continuamente novas estratégias para adicionar a um portfólio. Em essência, o "pipeline estratégico" deve estar sempre cheio.
Também vale a pena investir muito tempo na sua infra-estrutura comercial. Gaste tempo em questões como implantação e monitoramento. Sempre tente reduzir os custos de transação, pois a rentabilidade é tanto sobre a redução de custos como sobre a obtenção de receitas comerciais.
Eu recomendo escrever o seu próprio sistema de backtesting simplesmente para aprender. Você pode usá-lo e melhorar continuamente ou você pode encontrar um fornecedor e, em seguida, perguntar-lhes todas as perguntas que você descobriu quando criou o seu próprio. Certamente, você terá consciência das limitações dos sistemas comercialmente disponíveis.
Finalmente, sempre esteja lendo, aprendendo e melhorando. Há uma grande quantidade de livros didáticos, revistas comerciais, periódicos acadêmicos, quantos blogs, fóruns e revistas que discutem todos os aspectos da negociação. Para idéias de estratégia mais avançadas, eu recomendo SSRN e arXiv - Quantitative Finance.
Sobre mim e QuantStart.
Meu nome é Mike Halls-Moore e estou com sede em Londres. Tenho uma experiência em pesquisa de dinâmica de fluidos computacionais (CFD) e como desenvolvedor quantitativo em um fundo de ações / futuros London.
Talvez os meus dois maiores takeaways de trabalhar em um ambiente institucional são o vasto abismo entre backtests e negociações ao vivo, bem como a importância de pensar em um nível de carteira e o gerenciamento de risco associado.
Vindo de um conhecimento científico significa que eu sou muito apaixonado pelo compartilhamento de conhecimento e software de código aberto. Os visitantes regulares saberão que este é um tema em execução no QuantStart.
QuantStart próprio foi fundado no final de 2018. Muito mudou em financiamento quantitativo desde então! O site discute negociação quantitativa, carreiras quantitativas, ciência dos dados, aprendizagem mecânica e educação matemática. Em particular, o site discute muitos detalhes de implementação que muitas vezes são ignorados, mas acho absolutamente necessário. O site tenta trazer o pensamento institucional aos quentes de varejo / individuais e também tenta fornecer trechos de código de ponta a ponta que podem ser usados imediatamente.
Se você quiser contatar-me sobre qualquer assunto relacionado a financiamento quantitativo, por favor, envie um e-mail para o e-mail e será protegido e farei o meu melhor para voltar para você.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta de prestação de serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta de prestação de serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer garantia ou estratégia, nem constitui uma oferta para fornecer consultoria de investimento ou outros serviços por meio de Quantopian. Além disso, o conteúdo do site não oferece nenhuma opinião em relação à adequação de qualquer garantia ou qualquer investimento específico.
A Quantopian não oferece garantias quanto à exatidão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas. Todos os investimentos envolvem risco - incluindo perda de principal. Você deve consultar um profissional de investimentos antes de tomar decisões de investimento.
Comments
Post a Comment