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
Open
Conversation
…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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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)
CapitalProtectionsligado 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 desrc/. Agora rodam antes de cada ciclo noSquadOrchestrator, alimentados pelo P&L realizado do ledger.reset_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./v1/risk— o path dorisk_params.yamlusavaparents[4]e resolvia fora do repo: GET devolvia defaults silenciosos e PATCH retornava 500. Corrigido paraparents[3]./v1/risk/circuit-breaker— liadata.timestamp(campo inexistente no eventoposition_closed) e reportava sempre 0%; agora lê o timestamp real do ledger.Robustez e coerência
LLM_TIMEOUT_SECONDS, default 30s) — provider pendurado não trava mais o ciclo de trading; a camada advisory devolveNonee segue determinística.INITIAL_CAPITAL(antes: 10 000 USDT hardcoded, incoerente com o sizing).src/version.py(0.6.0) — API e/healthreportavam "1.0.0" falso.slowapie.env.templateórfão (esquema conflitante com.env.example).changemecomentadas no.env.example— umcpapressado 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%).Testes
rufflimpo.OrchestratorLoopem 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