Strasmore Research
Aprendizado Matt ConnorPor Matt Connor

Aprenda trading quantitativo com um livro aberto

Livro aberto de trading quantitativo apresenta o programa completo, mostra o que cada etapa ensina, onde iniciantes param e o que se aplica a ações dos EUA.

Um livro de trading quantitativo de código aberto funciona como um programa público e gratuito: todo o caminho, desde os dados brutos até uma ordem real, registrado na sequência em que um iniciante o encontra. O manuscrito de XQuant: Everyone Can Be a Quantitative Trader, publicado no GitHub por xingwudao, é um exemplo claro, com 686 estrelas em agosto de 2026. Seus nove capítulos percorrem a trajetória presente em quase todo programa de formação quantitativa. Esta página acompanha essa trajetória etapa por etapa, identifica a falha específica de cada fase e indica quais partes continuam válidas na transição das ações A chinesas para as ações dos EUA.

O que contém um livro de trading quantitativo de código aberto?

Retire a marca de qualquer programa para iniciantes e restam cinco etapas, nesta ordem: obter e limpar os dados, criar um sinal a partir deles, testar esse sinal com base no histórico, decidir o tamanho da posição e então enviar a ordem e pagar os custos. O conteúdo do XQuant, conforme o commit 016b66e de 14 de julho de 2026, cobre o mesmo terreno em nove capítulos.

  • Preparação e, depois, capítulo um: executar uma estratégia completa de ponta a ponta.
  • Capítulo dois, o que comprar: começar com três ETFs.
  • Capítulo três, quanto comprar: três métodos de alocação, comparados entre si.
  • Capítulo quatro, quando negociar: rebalanceamento, stop loss e take profit.
  • Capítulo cinco, como avaliar se uma estratégia é realmente boa: quatro perspectivas.
  • Capítulo seis, não comemorar cedo demais: evitar overfitting.
  • Capítulo sete, do ideal ao real: executar as operações.
  • Capítulo oito, a vida depois do lançamento: monitoramento, diagnóstico e iteração.
  • Capítulo nove, encontrar novas oportunidades: uma introdução à pesquisa de fatores.

A ordem merece atenção. O dimensionamento da posição aparece no capítulo três, antes dos dois capítulos sobre backtest, e a pesquisa de fatores fica por último. Os caminhos de quem aprende sozinho geralmente seguem a direção oposta: uma ideia de fator primeiro, um backtest depois e nenhuma regra de dimensionamento. O repositório de exercícios complementar (333 estrelas, na mesma data) é organizado em torno de especificações de tarefas por escrito, e não de código pronto, com o leitor orientando um assistente de IA a implementá-las. Ler código que você não escreveu continua sendo a habilidade que decide tudo o que vem abaixo, porque cada falha posterior se esconde em um detalhe de implementação.

Primeira etapa: obtenha os dados e defina o universo

A limpeza é a metade visível do trabalho com dados: prints incorretos, sessões ausentes e ajustes por desdobramentos e dividendos. Escolher quais nomes estudar é a metade invisível. É nesse ponto que entra o viés de sobrevivência, antes mesmo de existir uma linha de código da estratégia. Considere todos os tickers dos EUA que registraram uma negociação durante uma semana de junho, um ano de cada vez, e pergunte quantos ainda estavam sendo negociados na mesma semana de 2026.

QueryTickers dos EUA negociados em uma semana de junho e quantos ainda eram negociados em junho de 2026
O SQL exato por trás de cada número
WITH june_week AS (
    SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS year,
           ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE toMonth(toTimeZone(window_start, 'America/New_York')) = 6
      AND toDayOfMonth(toTimeZone(window_start, 'America/New_York')) BETWEEN 10 AND 16
      AND toYear(toTimeZone(window_start, 'America/New_York')) BETWEEN 2016 AND 2026
      AND volume > 0
    GROUP BY year, ticker
),
survivors AS (
    SELECT ticker FROM june_week WHERE year = 2026
)
SELECT year,
       uniqExact(ticker) AS tickers_traded,
       uniqExactIf(ticker, ticker IN (SELECT ticker FROM survivors)) AS still_trading_2026,
       round(100 * uniqExactIf(ticker, ticker IN (SELECT ticker FROM survivors))
             / uniqExact(ticker), 1) AS still_trading_pct
FROM june_week
GROUP BY year
ORDER BY year
Run this yourself

Dos 8224 tickers negociados naquela semana de 2016, 50% ainda estavam sendo negociados na mesma semana de 2026. Os demais foram adquiridos, passaram por fusão, mudaram de nome ou foram retirados da bolsa. Um backtest baseado na lista atual estuda apenas os nomes que sobreviveram e atribui retorno a uma estratégia por manter empresas escolhidas após os fatos. Um feed para iniciantes entregará essa lista de sobreviventes sem qualquer aviso: o guia da API gratuita de dados do mercado acionário explica o que esses feeds fornecem e o que não fornecem.

Etapa dois: transformar dados em um sinal

Um sinal é uma regra que atribui uma pontuação a uma ação em determinado momento. Um fator é um sinal que, na sua avaliação, funciona para muitas ações ao mesmo tempo. Momentum, value e baixa volatilidade são os exemplos clássicos. O erro nesta etapa é testar regras até encontrar uma que funcione. Vinte variações de um cruzamento de médias móveis em uma década de um único índice sempre produzirão uma vencedora. E a vencedora será a que melhor se ajustou ao ruído. As defesas são pouco atraentes: defina a regra antes de medi-la, reserve uma parte do histórico que você nunca consulta, conte todas as variações testadas e prefira menos parâmetros ajustáveis. A XQuant dedica um capítulo inteiro a esse tema antes da pesquisa de fatores. Essa é a ordem correta.

Estágio três: o backtest, onde a maioria dos iniciantes para

Este é o estágio que encerra a maioria dos projetos autodidatas. E os encerra silenciosamente, com uma curva de patrimônio que parece excelente. O viés de sobrevivência, mencionado acima, é o primeiro dos dois erros. O viés de antecipação é o segundo: a estratégia usa um número que o relógio ainda não havia disponibilizado quando a ordem deveria ser enviada. A versão mais comum é uma regra calculada com base no preço de fechamento de hoje e executada nesse mesmo preço de fechamento. Meça a distância que essa premissa ignora.

QueryDistância média entre o fechamento de uma sessão e a abertura da sessão seguinte, por mês
O SQL exato por trás de cada número
WITH sessions AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMin(open, window_start) AS session_open,
           argMax(close, window_start) AS session_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'NVDA')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2024-08-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session
),
gaps AS (
    SELECT ticker,
           session,
           toFloat64(session_open) AS open_px,
           toFloat64(lagInFrame(session_close) OVER (PARTITION BY ticker ORDER BY session)) AS prev_close
    FROM sessions
)
SELECT formatDateTime(toStartOfMonth(session), '%Y-%m') AS month,
       formatDateTimeInJodaSyntax(toStartOfMonth(session), 'MMMM yyyy') AS month_label,
       round(avgIf(abs(open_px / prev_close - 1) * 10000, ticker = 'SPY'), 1) AS spy_gap_bps,
       round(avgIf(abs(open_px / prev_close - 1) * 10000, ticker = 'NVDA'), 1) AS nvda_gap_bps
FROM gaps
WHERE prev_close > 0
GROUP BY month, month_label
HAVING countIf(ticker = 'SPY') > 0 AND countIf(ticker = 'NVDA') > 0
ORDER BY month
Run this yourself

Em July 2026, a distância média entre um fechamento e a abertura seguinte, medida pelo preço de abertura dos negócios, foi de 40.8 pontos-base para SPY e de 107.4 para NVDA. Um ponto-base corresponde a um centésimo de ponto percentual. Todos os 24 meses do painel, a partir de August 2024, ficaram acima de zero. Um backtest que toma a decisão no fechamento e executa nesse mesmo fechamento captura essa distância sem custo em todas as operações. Nenhuma ordem real consegue fazer isso. Viés de antecipação no backtest detalha o mecanismo, e por que as ações abrem com gap durante a noite explica o próprio gap.

Etapa quatro: decidir quanto comprar

O problema aqui é a ausência de uma regra. A maioria dos traders autodidatas nunca define uma regra de dimensionamento de posição. Por isso, acaba usando uma regra por acaso, geralmente o mesmo valor em dólares para cada ativo ou todo o caixa disponível. O mesmo valor em dólares não representa o mesmo risco.

QueryDoze meses de movimentos diários: volatilidade anualizada e pior sessão, oito nomes
O SQL exato por trás de cada número
WITH daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMax(close, window_start) AS session_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'KO', 'JNJ', 'MSFT', 'AAPL', 'NVDA', 'TSLA', 'COIN')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2025-08-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session
),
rets AS (
    SELECT ticker,
           toFloat64(session_close) AS close_px,
           toFloat64(lagInFrame(session_close) OVER (PARTITION BY ticker ORDER BY session)) AS prev_close
    FROM daily
)
SELECT ticker,
       round(stddevSamp(close_px / prev_close - 1) * sqrt(252) * 100, 1) AS annualized_vol_pct,
       round(abs(min(close_px / prev_close - 1)) * 100, 2) AS worst_day_pct
FROM rets
WHERE prev_close > 0
GROUP BY ticker
ORDER BY annualized_vol_pct DESC
Run this yourself

Nos doze meses encerrados em 31 de julho de 2026, COIN apresentou volatilidade anualizada de 68%, contra 12.7% de SPY, na ponta mais estável do painel. Sua pior sessão isolada fechou 13.34% abaixo do fechamento anterior, enquanto o pior dia de SPY foi de 2.69%. O mesmo valor em dólares aplicado em cada ativo compra oscilações diárias muito diferentes. É essa oscilação, e não o sinal, que um iniciante efetivamente vivencia. dimensionamento de posição pelo critério de Kelly apresenta uma resposta formal, enquanto risco de concentração mostra a estrutura da resposta informal.

Quinta etapa: execução e os custos que um backtest ignora

Dois custos, apenas um visível. As comissões e as taxas regulatórias aparecem no extrato. O slippage, não: é a diferença entre o preço na tela e o preço obtido. Seu piso é o spread entre bid e ask, a distância entre a melhor cotação de compra e a melhor cotação de venda naquele instante. Os compradores pagam o ask, e os vendedores aggridem o bid. Por isso, uma operação completa atravessa o spread duas vezes. O spread não é constante.

QuerySpread cotado médio por intervalo de 30 min no horário ET: AAPL e KO, sexta-feira, 17 de julho de 2026
O SQL exato por trás de cada número
WITH quotes AS (
    SELECT ticker,
           toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE) AS bucket,
           toFloat64(ask_price - bid_price) / toFloat64((ask_price + bid_price) / 2) * 10000 AS spread_bps
    FROM global_markets.cache_stocks_quotes
    WHERE ticker IN ('AAPL', 'KO')
      AND sip_timestamp >= toDateTime('2026-07-17 13:00:00')
      AND sip_timestamp < toDateTime('2026-07-17 21:00:00')
      AND bid_price > 0
      AND ask_price > bid_price
)
SELECT formatDateTime(bucket, '%H:%i') AS et_time,
       round(avgIf(spread_bps, ticker = 'AAPL'), 2) AS aapl_spread_bps,
       round(avgIf(spread_bps, ticker = 'KO'), 2) AS ko_spread_bps
FROM quotes
WHERE spread_bps > 0 AND spread_bps < 500
GROUP BY et_time
HAVING countIf(ticker = 'AAPL') > 0 AND countIf(ticker = 'KO') > 0
ORDER BY et_time
Run this yourself

O painel cobre 16 intervalos de meia hora de uma sexta-feira, do intervalo 09:00 antes da abertura do mercado ao intervalo 16:30 após o fechamento. A cotação de AAPL tinha 10.53 pontos-base de spread no primeiro intervalo e 3.27 no último, enquanto a de KO tinha 28.87 e 8.04. As cotações mais estreitas do dia aparecem no centro do gráfico, entre essas duas extremidades. Uma estratégia que negocia na abertura em dois dos nomes mais líquidos do mercado paga um custo diferente de sua própria versão executada no meio do dia. Um backtest com premissa de custo zero não precifica nenhum dos dois cenários. O spread entre bid e ask define o número, por que os spreads aumentam na abertura explica a curva, e quanto custa negociar uma ação calcula uma operação completa de ida e volta. Entre um backtest limpo e o dinheiro real há mais uma etapa: paper trading antes de investir dinheiro real.

Quais partes de um curso sobre ações A se aplicam a ações dos EUA?

O XQuant e seus pares foram desenvolvidos para ações A e ETFs chineses. O método é transferido integralmente: a ordem das etapas, as definições, a disciplina contra overfitting, o hábito de registrar os custos como um item separado, e toda a aritmética do dimensionamento da posição. Barras de preço são barras de preço. O que não é transferido é o conjunto de regras que as envolve.

  • As ações A estão sujeitas a uma restrição real de T+1: uma ação comprada hoje só pode ser vendida no pregão seguinte. O T+1 nos EUA é uma convenção de liquidação e não impede operações intraday, embora a regra do pattern day trader limite contas de margem com menos de US$ 25.000 a três day trades em cinco dias úteis.
  • As ações A do mercado principal têm limite de oscilação diária de 10%, enquanto os mercados de crescimento têm limite de 20%. As ações dos EUA não têm limite diário, e as interrupções ocorrem por bandas de volatilidade e halts motivados por notícias.
  • As ordens de ações A são negociadas em lotes de 100 ações. Muitos brokers nos EUA executam ordens de ações fracionárias, o que muda até mesmo o que uma regra de dimensionamento pode expressar.
  • A China cobra imposto de selo sobre as vendas. Nos EUA, os vendedores pagam pequenas taxas regulatórias, de natureza e valor diferentes.
  • A estrutura dos pregões também é diferente, incluindo uma pausa no meio do dia em Xangai e Shenzhen. O horário do mercado de ações dos EUA funciona de forma contínua e termina em um leilão de fechamento.

Qualquer custo ou constante de tempo copiado de um curso para o seu próprio código é um erro à espera da primeira ordem real.

Fixe a referência, não o README

O repositório não tinha releases marcadas até agosto de 2026. Portanto, a citação durável é um commit: 016b66e, datado de 14 de julho de 2026. Isso é importante para um livro que ainda está sendo escrito. Os números dos capítulos mudam, os arquivos README são reescritos, os títulos mudam de lugar, e um link que apontava para o capítulo sete pode passar silenciosamente a apontar para outra coisa. Cite o commit e a data. Registre o título do capítulo lido, e não o número. Assim, suas anotações continuarão verificáveis um ano depois. O manuscrito é publicado sob a licença CC BY-NC-SA 4.0, e os scripts de build estão sob a licença MIT. Essa mesma disciplina é a última lição do próprio programa: uma estratégia que não pode ser reproduzida a partir de um snapshot de dados fixado é uma história, não um resultado.

Perguntas frequentes

É possível aprender trading quantitativo com um livro gratuito e de código aberto?

Para obter um roteiro, sim. E um manuscrito aberto permite verificar cada afirmação na fonte. O que um livro não fornece são os dados, os custos e as regras do seu próprio mercado. É justamente nesse ponto que um programa escrito para uma bolsa deixa de corresponder ao seu broker.

Qual etapa de um currículo de trading quantitativo mais faz iniciantes desistirem?

O backtest. Dois erros aparecem nessa etapa, e ambos melhoram artificialmente o resultado: o viés de sobrevivência, causado por um universo montado depois dos fatos, e o viés de antecipação, causado pelo preenchimento a um preço que ainda não havia sido registrado pelo relógio do mercado. Apenas 50% dos tickers negociados naquela semana de junho de 2016 continuavam sendo negociados uma década depois.

Qual é a diferença entre viés de sobrevivência e viés de antecipação?

O viés de sobrevivência é um problema do universo: os ativos testados foram selecionados porque sobreviveram. O viés de antecipação é um problema de timing: a estratégia usa um número que não existia quando a ordem deveria ser enviada. O primeiro infla a lista de ativos; o segundo infla o preço de execução.

Um curso de trading quantitativo para ações A chinesas funciona para ações dos EUA?

O método funciona. As regras de mercado, não. Mantenha a ordem das etapas, a disciplina contra overfitting e a contabilização dos custos. Depois, substitua a infraestrutura de dados, a restrição de venda no T+1, os limites diários de preço e os lotes pelos equivalentes dos EUA antes de movimentar qualquer recurso.


Cada painel acima é uma consulta armazenada, com seu SQL logo abaixo. Abra um deles, troque os tickers ou as datas e execute a consulta você mesmo no terminal Strasmore.

#quant#learning path#backtesting#open source#beginners