Como escolhemos e medimos os picks

Retornos, seleção algorítmica e recompras — tudo público e verificável em blockchain.

Última atualização: 2026-04-10

1. Introdução

Esta página documenta o método exato com o qual calculamos o desempenho do portfólio e selecionamos as posições que aparecem em páginas como /lecciones. O objetivo é que qualquer pessoa (humana ou agente de IA) possa auditar nosso histórico sem precisar confiar em nossa palavra.

2. Tamanho da posição

Cada posição é modelada como um investimento de $50 USD. Compramos frações de ações, então a quantidade de shares é $50 / preço_compra. Isto NÃO representa valores reais de investimento — é um tamanho hipotético fixo para poder comparar picks de forma consistente sem que o tamanho da posição distorça os retornos.

3. Cálculo do retorno

O retorno de uma posição individual é: return_pct = ((preço_atual − preço_médio_ponderado) / preço_médio_ponderado) × 100. Os preços atuais vêm do snapshot diário mais recente em nossa base de dados, que por sua vez consulta Yahoo Finance em cada dia de mercado.

4. Preço médio ponderado (recompras)

Quando temos várias compras do mesmo ticker, o preço efetivo é a média ponderada. Em nosso modelo cada transação investe os mesmos $50 hipotéticos, então a média ponderada por shares é equivalente a: preço_médio = soma($50) / soma($50/preço_i). Uma recompra a preço menor melhora a média e reduz a perda; uma a preço maior piora.

Exemplo: Se compramos XYZ a $100 e depois a $50, cada tranche de $50 compra 0.5 + 1 = 1.5 shares. O preço médio é $100 / 1.5 ≈ $66.67. Se o preço atual for $60, o retorno é (60 − 66.67) / 66.67 ≈ −10%, não −40%.

5. Seleção de picks perdedores (lições)

A lista em /lecciones é gerada por um algoritmo puro que opera sobre o mesmo cálculo de retorno. O algoritmo NÃO pode ser editado manualmente — toda mudança requer modificar o código-fonte público.

  • 1. Agrupar todas as transações por ticker e calcular o preço médio ponderado
  • 2. Calcular o retorno % baseado no preço atual do snapshot mais recente
  • 3. Filtrar posições com ao menos 30 dias desde a PRIMEIRA compra (para evitar ruído de curto prazo)
  • 4. Filtrar posições com retorno < 0
  • 5. Ordenar ASC por return_pct (pior primeiro). Desempate: data da primeira compra mais antiga
  • 6. Pegar os 5 primeiros. Se houver menos de 5 negativas, mostrar apenas as que existirem

6. Splits de ações

Obtemos os eventos reais de splits corporativos diretamente do Yahoo Finance para cada ticker. Quando um split ocorre após uma compra, ajustamos o custo base pela ratio exata (numerator/denominator) para que as shares e o retorno reflitam a realidade pós-split. O handler está em `src/lib/split-detection.ts`.

7. Frequência de atualização

Os preços são atualizados a cada dia de mercado aberto (seg-sex, exceto feriados) às 16:30 ET por um cron job que obtém cotações do Yahoo Finance e salva um snapshot no Supabase. As páginas públicas que dependem desses dados são cacheadas por ~5 minutos com stale-while-revalidate.

8. O que NÃO está incluído

Nossos cálculos são BRUTOS. Não incluem: impostos sobre dividendos nem ganhos de capital, comissões de corretora, slippage de execução, diferenças de câmbio para ações não-USD. Os retornos reais que um investidor obteria serão sempre menores que os mostrados.

9. Limitações conhecidas

Nosso modelo assume execução instantânea a preço de fechamento, reinvestimento perfeito de dividendos (atualmente não modelados), e disponibilidade de frações de shares (o que nem sempre é possível em todas as corretoras). Essas simplificações são padrão na maioria dos backtests mas importam ao comparar com desempenho real de uma conta.

10. Como auditar tudo isto

Todo o código é público. Os cálculos vivem em `src/lib/position-utils.ts` (aggregatePositions) e `src/lib/lessons.ts` (selectLessons). As transações vivem em `src/data/stocks.ts` e cada uma tem um attestation UID on-chain. Se você encontrar um erro no cálculo ou metodologia, abra uma issue no GitHub ou escreva para Hello@vectorialdata.com.

Procurando como começar a investir aos poucos? Esse é o método →