Skip to content

feat: quick wins Pareto — proteções financeiras ligadas, fixes no /v1/risk e plano de desenvolvimento#66

Open
danzeroum wants to merge 1 commit into
masterfrom
claude/pareto-analysis-dev-plan-up1kko
Open

feat: quick wins Pareto — proteções financeiras ligadas, fixes no /v1/risk e plano de desenvolvimento#66
danzeroum wants to merge 1 commit into
masterfrom
claude/pareto-analysis-dev-plan-up1kko

Conversation

@danzeroum

Copy link
Copy Markdown
Owner

Resumo

Análise Pareto 80/20 do repositório: as 10 melhorias de maior razão valor/esforço (~8h, ≈13,5% do esforço mapeado) foram implementadas e capturam ≈72% do valor identificado. Inclui veredito de funcionalidade (executado, não presumido), diagrama de Pareto interativo e plano de desenvolvimento para o restante.

Veredito da análise: a ferramenta é funcional de ponta a ponta em paper trading — o achado central é que havia código de proteção financeira escrito mas desligado ou quebrado, corrigido aqui.

Proteção financeira (bugs reais)

  • CapitalProtections ligado ao pipeline — os limites de perda semanal (−6%, halva posições) e mensal (−15%, suspende trading + alerta) eram código morto: .check() não era chamado em lugar nenhum de src/. Agora rodam antes de cada ciclo no SquadOrchestrator, alimentados pelo P&L realizado do ledger.
  • Reset diário do circuit breakerreset_daily() nunca era chamado: o contador "diário" acumulava para sempre (limite virava cumulativo-desde-o-início). Agora zera na virada do dia UTC.
  • Fix /v1/risk — o path do risk_params.yaml usava parents[4] e resolvia fora do repo: GET devolvia defaults silenciosos e PATCH retornava 500. Corrigido para parents[3].
  • Fix perda diária no /v1/risk/circuit-breaker — lia data.timestamp (campo inexistente no evento position_closed) e reportava sempre 0%; agora lê o timestamp real do ledger.

Robustez e coerência

  • Timeout nas chamadas LLM (LLM_TIMEOUT_SECONDS, default 30s) — provider pendurado não trava mais o ciclo de trading; a camada advisory devolve None e segue determinística.
  • Saldo paper respeita INITIAL_CAPITAL (antes: 10 000 USDT hardcoded, incoerente com o sizing).
  • Versão única em src/version.py (0.6.0) — API e /health reportavam "1.0.0" falso.
  • Removidos: dependência morta slowapi e .env.template órfão (esquema conflitante com .env.example).
  • Senhas changeme comentadas no .env.example — um cp apressado não sobe mais Postgres/Grafana com credenciais previsíveis.

Docs

  • docs/pareto-analysis-dev-plan.md — análise de funcionalidade + plano de desenvolvimento P0–P3 (unificar thresholds com o yaml, persistir o dia do breaker, hardening para ordens reais, convergir orquestradores, qualidade).
  • docs/pareto-value-diagram.html — diagrama de Pareto interativo (valor por item + acumulado com corte de 80%).
  • README: contagem de testes corrigida (383 → 418); snapshot OpenAPI regenerado (mudança de versão).

Testes

  • 15 testes de regressão novos cobrindo cada correção.
  • Suíte completa: 418 passed, 8 skipped, cobertura 72,9% (gate ≥72%), ruff limpo.
  • Smoke test manual: um ciclo do OrchestratorLoop em dry-run e probes da API (/health, /health/ready, /v1/metrics, POST /v1/orders) executados com sucesso.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AL1NrUBCPydLG8SBwKsHsB


Generated by Claude Code

…sk bugs, dev plan

Análise 80/20 do repositório: 10 melhorias de alto valor/baixo esforço
implementadas, diagrama de Pareto e plano de desenvolvimento.

Proteção financeira (bugs reais corrigidos):
- Wire CapitalProtections (limites semanal -6% / mensal -15%) no
  SquadOrchestrator — era código morto; semana ruim halva posições,
  mês ruim suspende trading com alerta
- CircuitBreaker: contador diário agora zera na virada do dia UTC
  (antes acumulava para sempre)
- /v1/risk: risk_params.yaml resolvia parents[4] (fora do repo) —
  GET devolvia defaults e PATCH dava 500; corrigido para parents[3]
- /v1/risk/circuit-breaker: perda diária lia data.timestamp
  (inexistente) e reportava sempre 0; lê o timestamp do evento

Robustez e coerência:
- LLMClient.reason com timeout (LLM_TIMEOUT_SECONDS, default 30s)
- fetch_balance paper respeita INITIAL_CAPITAL
- versão única em src/version.py (API reportava 1.0.0 falso)
- remove dependência morta slowapi e .env.template órfão
- senhas 'changeme' comentadas no .env.example

Docs: docs/pareto-analysis-dev-plan.md (análise de funcionalidade +
plano P0–P3), docs/pareto-value-diagram.html (diagrama interativo),
contagem de testes do README (383 → 418), snapshot OpenAPI regenerado.

15 testes de regressão novos. Suíte: 418 passed, 8 skipped, cobertura 72.9%.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AL1NrUBCPydLG8SBwKsHsB
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants