Guia de Execução
NousTrader
Documento técnico e operacional para desenvolvimento da plataforma. Cada decisão aqui está fundamentada nos materiais de base. Sem ambiguidade. Sem excesso. Sem invenção.
Tese do Produto
Por que a NousTrader existe e qual problema real ela resolve.
O Problema Real
dos day traders brasileiros não persistem por mais de 300 pregões (~15 meses). O problema não é técnico — é comportamental.
abandonam no primeiro mês. R$ 9,9 bilhões perdidos durante a pandemia (2020-2023). Fonte: FGV.
Pesquisa com traders brasileiros confirma: as 3 principais dores são lidar com o emocional, analisar performance e controlar impostos. Nenhuma plataforma resolve as três com qualidade — especialmente a primeira.
Como a NousTrader Resolve
Performance Financeira
KPIs objetivos que revelam onde o trader ganha, perde e qual é seu edge real. Sem ilusão de P&L bruto.
Gestão Emocional
Score de Controle Emocional (ICE) que transforma comportamento em dado acionável. O diferencial que nenhuma plataforma tem.
Gestão de Risco
Limites, alertas e drawdown monitorados. O trader define o plano. A plataforma garante que ele siga.
Diferencial Central
"Não somos apenas uma plataforma de análise. Somos um sistema de consciência para o trader. Enquanto concorrentes vendem gráficos, robôs e setups — nós entregamos autoconhecimento, clareza e consistência."
— DNA da Marca NousTraderPrincípios que Governam Cada Decisão de Produto
Arquitetura do Sistema
Módulos principais, relação entre eles e fluxo de dados.
5 Engines de Evolução
Módulos da Plataforma e Relações
Fluxo de Dados Principal
CSV/Excel com: Ativo, Lado (C/V), Data/Hora, Preço Médio, Qtd Executada
Agrupa C+V → constrói trades completos com resultado, duração, slippage
Adiciona: estratégia, stop, emoção (1–5), plano seguido, observações
Gera todos os indicadores financeiros e emocionais em tempo real
Monitora limites, sequências e comportamentos → dispara alertas acionáveis
Trader toma decisão baseada em dados comportamentais + financeiros
Roadmap por Fase
O que entra, o que não entra e por quê. Cada fase tem hipótese e métrica de validação.
Beta Privado — Behavior Engine
Soft Launch — Analytics Engine
Lançamento Oficial — Decision Engine
Automação
- Integração XP, BTG, Rico (importação automática)
- Sincronização B3 (custos, posições, histórico)
- Journal Automático (trader só registra emoção)
- Risk Guard (revenge trading, overtrading, tilt)
Inteligência Artificial
- IA de Comportamento ("você perde mais após 3 trades consecutivos")
- Coach de Trading (reduzir posição, parar, focar em horário)
- Simulação de Decisão (real vs se o plano fosse seguido)
Ecossistema
- Marketplace de Estratégias
- Copy Trading Consciente (por disciplina, não por P&L)
- API Aberta (TradingView, Profit, MetaTrader)
- App Mobile
Matriz Consolidada
Fase × Página × KPI × Dados × Dependências. A tabela que orienta priorização.
| Fase | Página | KPIs Incluídos | Dados Necessários | Dependências |
|---|---|---|---|---|
| F1 | Home (Placar) | Score ICE, P&L resumido | Trades importados, Diário | Importação + Diário mínimo |
| F1 | Dashboard Resumo (básico) | P&L, Hit Rate, Payoff, Expectancy, ICE | Trades completos (match C+V) | Trade Matching Engine |
| F1 | Diário do Trader | Emoção, Aderência, Plano | Input manual por trade | Importação prévia do trade |
| F1 | Gestão Emocional (básica) | Score ICE (0–100) | Dados do Diário | Diário com 5+ registros |
| F1 | Perfil do Trader | Limites (MDD, risco/trade) | Input manual do trader | Nenhuma |
| F2 | Dashboard Resumo (completo) | PF, MDD, Sortino, Volatilidade + todos F1 | Trades + Custos | Dados históricos (30d+) |
| F2 | Dashboard Day Trade | Slippage, IS, Hit Rate Day, Duração média | Horário de execução, Preços bid/ask | Dados de execução precisos |
| F2 | Dashboard Swing Trade | Exposição, Risco de ruína, Drawdown | Posições abertas, Stop, Alvo | Diário com stop/alvo preenchido |
| F2 | Custos & DARF | Custo/trade, IR acumulado, DARF | Taxas corretagem, emolumentos B3 | Tabela de taxas por corretora |
| F2 | Gestão Emocional (radar) | 8 sub-indicadores ICE, linha temporal | Diário com 20+ registros | Histórico mínimo de 30 dias |
| F3 | Alertas em Tempo Real | ICT, Limite diário, Ruína | Limites definidos no Perfil | Perfil configurado + histórico |
| F3 | Conteúdo Exclusivo | N/A (editorial) | CMS / feed editorial | Time de conteúdo ativo |
Ordem de Desenvolvimento
Sequência técnica com dependências e milestones. O que bloqueia o quê.
Fundação Técnica
Loop Mínimo Viável (Fase 1 Core)
Dashboards Especializados (Fase 2 Core)
Decision Engine (Fase 3)
Modelo de Dados
Entidades, campos, obrigatoriedade e relações. Base para o schema do banco de dados.
Entidades e Relações
Entidade: Alerta
Alerta {
id UUID PK
usuario_id UUID FK → Usuario
tipo enum (sequencia_perda, impulsividade, risco_alto, fora_do_plano, mdd_atingido)
titulo string NOT NULL
mensagem text NOT NULL
acionavel string // CTA: "Revisar limites", "Abrir Diário"
lido boolean DEFAULT false
criado_em timestamp NOT NULL
}
Entidade: Score Emocional (snapshot diário)
ScoreEmocional {
id UUID PK
usuario_id UUID FK → Usuario
data date NOT NULL
ice_score decimal // 0–100
impulsividade decimal // 0–100
aderencia decimal // 0–100
controle_perdas decimal // 0–100
recuperacao decimal // 0–100
consistencia decimal // 0–100
expectativa decimal // 0–100
resiliencia decimal // 0–100
}
Diário do Trader
O core do produto. Cada campo aqui alimenta um KPI ou habilita um insight. Nada é cosmético.
| Campo | Tipo | Obrigatório | Fase | KPI Alimentado | Insight Habilitado |
|---|---|---|---|---|---|
| stop_definido | boolean (s/n) | ✓ Sim | F1 | Aderência ao Plano | % trades com stop → impulsividade |
| stop_valor | decimal | Não | F2 | R/R realizado vs planejado | Qualidade de setup |
| alvo_valor | decimal | Não | F2 | Payoff planejado | Consistência de alvos |
| dentro_do_plano | boolean (s/n) | ✓ Sim | F1 | Aderência ao Plano | Impacto de sair do plano no P&L |
| estrategia | string (select) | ✓ Sim | F1 | Expectancy por setup | Ranking de setups, edge por estratégia |
| Campo | Tipo | Obrigatório | Fase | KPI Alimentado | Insight Habilitado |
|---|---|---|---|---|---|
| emocao_1_5 | integer (1–5) | ✓ Sim | F1 | Score ICE (controle emocional) | Correlação emoção × resultado |
| estado_mental_antes | text (livre) | Não | F1 | ICE (impulsividade) | Gatilhos pré-trade |
| estado_mental_depois | text (livre) | Não | F1 | ICE (recuperação) | Padrão após perda/ganho |
| motivo_entrada | text (livre) | Não | F1 | Aderência ao Plano | Word cloud, padrão de decisão |
| observacoes | text (livre) | Não | F1 | — | Registro qualitativo, future IA |
| Campo | Tipo | Obrigatório | Fase | Insight Habilitado |
|---|---|---|---|---|
| condicoes_mercado | enum (tendência, lateral, volátil) | Não | F3 | Performance por condição de mercado |
| qualidade_execucao | integer (1–5) | Não | F3 | Separar erros de setup vs execução |
| seguiu_regras_money | boolean | Não | F3 | Impacto de gestão de risco no P&L |
| tag_aprendizado | string[] | Não | F4 | IA de padrões, treino do modelo |
KPIs — Especificação Completa
Cada KPI com fórmula, dependência, fase e a decisão que suporta. Se não suporta decisão → removido.
KPIs Financeiros
P&L Líquido = Σ (resultado_bruto por trade) − custos_totais − IR_devido
Hit Rate = (Trades Vencedores / Total de Trades) × 100
Payoff = Média(ganhos) / |Média(perdas)|
Expectancy = (Hit Rate × Ganho Médio) − ((1 − Hit Rate) × |Perda Média|)
MDD = (Pico − Vale) / Pico × 100%
PF = Σ Ganhos Brutos / Σ |Perdas Brutas|
Sortino = (Retorno − Taxa Livre de Risco) / Desvio Padrão Downside
Slippage = |Preço Executado − Preço Referência| × Qtd
KPIs Emocionais — Score ICE
O ICE (Índice de Controle Emocional) é um score composto de 0–100, calculado a partir de 7 sub-indicadores. Cada sub-indicador é calculado a partir dos dados do Diário do Trader.
ICE = média ponderada dos 7 sub-indicadores abaixo
100 − (% trades sem stop definido × peso_impulsividade)% de trades marcados como "dentro do plano"100 − (% perdas acima do limite definido no Perfil)Score de emoção médio nos 2 trades após uma perdaCoeficiente de variação do resultado por períodoDesempenho após sequência ≥3 perdas vs desempenho normal% trades com alvo atingido vs alvo definido (quando informado)KPI Proprietário — Fase 3
ICT = (ICE × 40%) + (Expectancy_norm × 30%) + (Controle_MDD × 20%) + (Aderência × 10%)
Especificação por Página
Objetivo, estrutura, componentes, CTAs e decisões suportadas. Cada página tem propósito único.
Home — Placar do Trader
Dar ao trader uma leitura de 3 segundos sobre seu estado operacional e decidir: operar ou não.
- Header: nome do trader + data
- 4 cards de score com semáforo: Emocional, Geral, Day Trade, Swing
- Alerta ativo (se houver)
- Ação rápida: "Registrar Trade" / "Abrir Diário"
Score <60% → banner vermelho: "Considere reduzir exposição ou parar de operar."
- → Gestão Emocional (click no score emocional)
- → Dashboard Resumo (click no score geral)
- → Diário do Trader
Dashboard — Resumo
Visão consolidada de performance financeira. Responde: "Como estou no período?"
- Cards semáforo: P&L, Hit Rate, Payoff, Expectancy, ICE
- Sem gráficos elaborados no F1
- Cards: PF, MDD, Sortino, Volatilidade
- Curva de equity (linha temporal)
- Waterfall: Bruto → Custos → IR → Líquido
- Heatmap: performance por ativo × horário
- "Detalhar execução" → Dashboard Day
- "Ver posições" → Dashboard Swing
- "Abrir custos/IR" → Custos & DARF
Dashboard — Day Trade
Analisar qualidade de execução intraday. Responde: "Minha execução está coerente com minha estratégia?"
- Cards: Hit Rate Day, Payoff Day, Slippage médio, Duração média em posição
- Histograma de slippage (distribuição)
- Scatter: duração × P&L (outliers visíveis)
- Heatmap: ativo × horário (edge)
- "Ver setups no Diário" → Diário filtrado para Day
- "Ajustar limites" → Perfil
Dashboard — Swing Trade
Controle de portfólio e exposição. Responde: "Minha exposição atual é coerente com meu plano?"
- Cards: P&L aberto, P&L fechado, Exposição total, MDD, Risco de ruína, Sortino
- Tabela posições abertas: preço médio, stop, alvo, exposição, R/R atual
- Equity curve + exposição setorial
- "Registrar setup" → Diário filtrado para Swing
- "Gerir risco" → Perfil
Gestão Emocional
Tornar o estado emocional do trader visível e acionável. Responde: "Meu comportamento está me custando dinheiro?"
- Score ICE com semáforo grande
- Barra de progresso dos sub-indicadores
- Radar chart (8 sub-indicadores ICE)
- Linha temporal semanal de evolução
- Cards semáforo por sub-indicador
- "Abrir Diário" → registrar gatilhos emocionais
- "Ajustar limites/metas" → Perfil
Diário do Trader
Registro qualitativo por trade com fricção mínima. É o input principal do ICE.
- Lista de trades do dia (do import) com status: "sem diário" / "registrado"
- Modal de preenchimento: 3 campos obrigatórios + expandível
- Word cloud de motivos/erros (F2)
- Checklist de execução (F2)
- "Enviar para Gestão Emocional"
- "Gerar relatório semanal"
Custos & DARF
Visibilidade fiscal e controle de eficiência de custos. Responde: "Quanto fico com o mercado vs com a corretora e a Receita?"
- Cards: custo médio/trade, total acumulado, R$/contrato, IR acumulado, DARF a pagar, data limite
- Waterfall bruto→custos→IR→líquido
- Barras mensais: lucro bruto, IR, DARF pago
- "Gerar DARF PDF"
- "Comparar ativos" → drill-down R$/contrato
Perfil do Trader
Configurar os parâmetros de risco que alimentam os alertas. Sem Perfil → alertas não funcionam.
- Limites: MDD máximo, risco/trade (R$), perda diária máxima
- Cadastro de estratégias preferidas
- Preferências de ativos operados
- Upload manual de operações (CSV)
UX & Decisão
Diretrizes de interface que transformam dados em decisão. Cada regra aqui é baseada no brandbook oficial.
Leitura em <3 segundos
Qualquer KPI principal deve ser lido em menos de 3 segundos. Regras de implementação:
- KPI principal: Montserrat 700 · 40–56px · tabular-nums
- Label do KPI: Inter 700 · 11px · uppercase · letter-spacing 0.08em
- Cor do valor segue semáforo (verde/laranja/vermelho) — nunca precisa de legenda
- Máximo 5 KPIs por tela em contexto primário
Sistema de Semáforo — Implementação
Todo KPI deve ter threshold definido e cor aplicada automaticamente:
// Tokens de cor obrigatórios
--state-success: #1F8F5F;
--state-warning: #D97706;
--state-danger: #C24141;
Alertas Acionáveis — Formato Obrigatório
Todo alerta deve ter 3 componentes:
Fluxo Macro → Micro (Hierarquia de Decisão)
O trader nunca começa pelos detalhes. O fluxo de navegação segue:
Cada tela tem exatamente 1 CTA primário que avança no fluxo. CTAs secundários são hierarquicamente menores.
Dark Mode — Padrão do Produto
O produto roda em dark mode por padrão. Não é estética — é decisão funcional para reduzir fadiga visual em sessões longas.
--ink-900#0F1720 · Fundo base--ink-800#182432 · Cards--ink-700#1E2B38 · Seções alt--brand-primary#273D52 · Brand--brand-accent#F09308 · Laranja--neutral-gray#B7B7B7 · CinzaMicrocopy — Padrões Obrigatórios
Regras de Produto
Não são sugestões. São restrições. Qualquer feature proposta passa por esse filtro antes de entrar.
Filtro do MVP
Métricas Proibidas no MVP
- Qualquer KPI sem fórmula definida neste documento
- Métricas redundantes (ex: Sharpe e Sortino juntos no F1)
- Indicadores técnicos de mercado (RSI, médias, etc.)
- Percentual de acerto sem contexto de Payoff
- P&L bruto sem custos (ilusão de resultado)
Anti-Padrões de Interface
- Mais de 5 KPIs primários por tela
- Gráficos sem título e sem contexto de decisão
- CTA genérico ("OK", "Voltar", "Fechar")
- Informação sem semáforo (verde/laranja/vermelho)
- Modal bloqueante sem alternativa de fechar
- Número grande sem label de contexto
Copy Proibido (Compliance)
- Nunca prometer ganho financeiro
- Nunca sugerir previsibilidade do mercado
- Nunca associar disciplina a certeza de lucro
- Nunca celebrar resultado isolado como conquista
- Nunca usar linguagem de "missão" ou "guerra" com o mercado
Prioridade de Desenvolvimento
Quando Adicionar Complexidade
- Heatmap → mín. 30 dias de dados
- Radar emocional → mín. 20 registros no Diário
- ICT → mín. 60 dias + ICE funcionando
- Benchmark → feed de dados confiável integrado
Implementação Técnica
Estrutura frontend, organização de componentes e preparação para escala. Decisões que evitam retrabalho.
Estrutura de Projeto Frontend
nous-trader/
├── public/
│ ├── index.html
│ └── assets/
│ ├── logos/ # 6 versões do logo (brandbook)
│ └── icons/
│
├── src/
│ ├── design-system/ # PRIMEIRO A CONSTRUIR
│ │ ├── tokens.css # Todas as variáveis CSS (cores, tipo, espaçamento)
│ │ ├── typography.css
│ │ └── components/ # Button, Card, Badge, Alert, Semaphore...
│ │
│ ├── modules/
│ │ ├── auth/
│ │ ├── import/ # Parser CSV/Excel → Trade Matching
│ │ │ ├── parser.js
│ │ │ └── matcher.js
│ │ ├── kpis/ # Calculadora central de KPIs
│ │ │ ├── financial.js
│ │ │ └── emotional.js # Score ICE
│ │ ├── alerts/ # Motor de alertas
│ │ └── reports/ # Relatório semanal
│ │
│ ├── pages/
│ │ ├── Home.jsx
│ │ ├── Dashboard/
│ │ │ ├── Resumo.jsx
│ │ │ ├── DayTrade.jsx
│ │ │ └── SwingTrade.jsx
│ │ ├── EmocionalManagement.jsx
│ │ ├── Diary.jsx
│ │ ├── Costs.jsx
│ │ └── Profile.jsx
│ │
│ └── shared/
│ ├── hooks/ # useKPIs, useAlerts, useDiary
│ ├── context/ # TraderContext (dados globais)
│ └── utils/
Decisões Técnicas Críticas
// Lógica de Trade Matching (Dados Nous format)
// Input: [{ ativo, lado, data_hora, preco_medio, qtd }]
// Output: trades completos com resultado
function matchTrades(executions) {
// 1. Agrupar por ativo + data (day trade: mesmo dia)
// 2. Pair C com V na ordem cronológica (FIFO)
// 3. Calcular resultado: (preco_saida - preco_entrada) * qtd * multiplicador
// 4. Identificar tipo: day (mesma data) ou swing (datas diferentes)
// Multiplicador WDOJ/WDOM/WDOK = 10 | WINM = 0.2 (mini-índice)
}
:root {
/* Brand */
--brand-primary: #273D52;
--brand-accent: #F09308;
--neutral-gray: #B7B7B7;
/* Dark Mode Product (padrão) */
--surface-bg: #0F1720;
--surface-card: #182432;
--surface-elevated: #1E2B38;
--border-default: rgba(255,255,255,0.07);
/* State (semáforo) */
--state-success: #1F8F5F;
--state-warning: #D97706;
--state-danger: #C24141;
--state-info: #3B82F6;
/* Typography */
--font-display: 'Montserrat', 'Century Gothic', sans-serif;
--font-ui: 'Inter', 'Segoe UI', system-ui, sans-serif;
/* Spacing (8pt scale) */
--space-1: 4px; --space-2: 8px;
--space-3: 12px; --space-4: 16px;
--space-5: 24px; --space-6: 32px;
--space-7: 48px; --space-8: 64px;
}
function calcularICE(diarios, trades, perfil) {
const impulsividade = calcImpulsividade(diarios); // % sem stop
const aderencia = calcAderencia(diarios); // % dentro do plano
const controlePerdas = calcControlePerdas(trades, perfil); // % acima do limite
const recuperacao = calcRecuperacao(diarios, trades); // emoção pós-perda
const consistencia = calcConsistencia(trades); // variação de resultados
const expectativa = calcExpectativa(diarios); // aderência a alvos
const resiliencia = calcResiliencia(trades); // perf pós-sequência
return Math.round(
(impulsividade * 0.20) +
(aderencia * 0.20) +
(controlePerdas* 0.15) +
(recuperacao * 0.15) +
(consistencia * 0.15) +
(expectativa * 0.10) +
(resiliencia * 0.05)
);
}
- Calculadora de KPIs separada do render: calcular em background, cachear resultado por dia. Re-calcular só quando novos trades são importados.
- Score ICE em snapshot diário: persistir tabela ScoreEmocional diariamente. Não recalcular histórico inteiro toda vez.
- Alertas em fila: processar alertas em batch após importação, não em tempo real no F1–F2.
- Design System primeiro: construir todos os componentes antes de qualquer página. Reuso de 80% do código entre dashboards.
- API interna clara: cada módulo expõe interface limpa. Facilita migração futura para integração com corretoras (F4).