AGENTE.md — Manual operativo para agentes IA en SignalDashPro#
Este documento define cómo debe trabajar un agente IA en este repositorio para mantener continuidad técnica, disciplina operativa y trazabilidad de cambios.
Addendum vNext (2026-04-09):
- Priorizar documentación canónica actual:
docs/matvard/IMPLEMENTATION_PLAN_VNEXT_SAM.mddocs/matvard/MATVARD_RUNTIME_CONTRACT.mddocs/matvard/PLAYBOOK_SOLUSDC_REAL.mddocs/HANDOFF.mddocs/TODO.md- Tratar bloques históricos extensos de este archivo como referencia de contexto, no como fuente de estado vigente.
Addendum operativo (2026-04-10):
- Estado runtime verificado en CT110:
- estrategia operativa MATVARD en foco:
autopilot:matvard_advanced_shadow runtime_symbolde playbook SOL:SOLUSDT- smoke autenticado MATVARD integrado en deploy release (fase 5c)
- Si se cambia lógica de estrategia, playbook o UX operativa, el agente debe actualizar en la misma sesión:
docs/CHANGELOG.md(Unreleased)docs/HANDOFF.md(estado vigente)docs/TODO.md(checklist + siguiente validación)- este archivo
docs/AGENTE.mdcuando cambie el protocolo de trabajo del agente - Frontend: mantener consistencia visual en páginas operativas (
dashboard,control-tower,matvard) usando patrones globales (hero/chips/nav) ya definidos enfrontend/src/app/globals.css.
0) Estado actual de sesión (2026-04-04)#
Estado operativo confirmado en CT110:
- Release activa:
20260404T131854Z-4d4b45eb. - Frontend y backend activos en
sdp.perlatec.net/api.sdp.perlatec.net. - Fixes recientes de
Analiticadesplegados en producción.
Estado técnico reciente:
- En
Analitica(/analytics), se corrigió el comportamiento del botón "Buscar simbolo activo" que generaba confusión UX (saltaba de símbolo sin feedback claro si solo encontrabadecisionsen vez detrades). - Se dividió en dos acciones explícitas:
Actividad en Símbolo Actual: ajusta filtros (days, all status) explícitamente para ver la actividad del símbolo seleccionado.Ir al Símbolo Más Activo: busca el símbolo con más actividad real e informa explícitamente a qué símbolo cambió.- Se añadió modo explícito para overlays (
lookbackvsrango visible) para evitar falsos vacíos.
Archivos de código clave relacionados:
frontend/src/app/analytics/page.tsxfrontend/src/components/BackendCandlesChart.tsxfrontend/src/lib/api.tsbackend/routers/analytics.py
Commits relevantes:
b553c6d0— overlay activity symbol resolution.0078245f— reset de rango visible al cambiar símbolo con assist.4d4b45eb— modo lookback/rango visible y forzado de lookback enBuscar simbolo activo.
Referencias documentales a revisar primero en próximas sesiones:
docs/HANDOFF.md(handoff operativo, aunque contiene bloques históricos legacy).docs/CHANGELOG.md(trazabilidad de cambios recientes en Analítica).docs/TODO.md(histórico de evolución de overlays y replay en Analítica).docs/architecture/modules/frontend.md(módulo Analítica en frontend).docs/matvard/README.mdydocs/matvard/IMPLEMENTATION_PLAN_VNEXT_SAM.md(estado MATVARD canónico vNext).
Checklist de continuidad para el siguiente agente IA:
- Validar UX en navegador con hard refresh (
Cmd+Shift+R). - Probar nuevas acciones:
Actividad en Símbolo ActualeIr al Símbolo Más Activopara confirmar la mejora UX en resolución de overlays.
1) Propósito del proyecto (north star)#
SignalDashPro es una plataforma Binance-first para trading y analítica, con backend FastAPI + frontend Next.js, orientada a operación autónoma auditable.
Objetivo operativo actual (MVP):
- Operar en Binance Spot Demo.
- Prioridad de activo: PAXGUSDT (ORO tokenizado).
- Estrategia activa:
paxg_mean_reversionenM15. - Estrategia alternativa disponible (experimental):
paxg_matvard_hybrid. - Riesgo base:
AUTOPILOT_ORDER_NOTIONAL_PCT=0.02. - Status operativo vigente (2026-03-17): OPERATIVO COMPLETO
- ✅ Full trading cycle enabled:
AUTOPILOT_ALLOW_SELL=true,TRADE_MANAGER_ENABLED=true - ✅ Parámetros optimizados:
BB_PERIOD=25,RSI_OVERSOLD=30(+1.53% y +3.51% esperado) - ✅ Filtros de riesgo activos:
MAX_VOLATILITY_PCT=0.159%,MIN_VOL_RATIO=4.54x(+22.8pp WR, +3.70pp PnL validado) - ✅ Validación backtest completada: 90 días, -61% trades pero +58.3% win-rate (+1.67% PnL en lugar de -2.03%)
2) Orden de verdad (source of truth)#
Cuando haya contradicciones entre documentos, usar este orden:
- Runtime real (endpoints
/status,/jobs/status,/settings/autopilot,/ops/p0/readiness, logs y timers en CT110). HANDOFF.md(estado operativo y runbooks).README.md(estado resumido y guía principal).TODO.md(backlog vivo; puede mezclar histórico).CHANGELOG.md(histórico de cambios relevantes).
Regla: si runtime != docs, runtime manda y se debe actualizar documentación.
3) Arquitectura y entorno operativo#
Stack#
- Backend: FastAPI + SQLAlchemy + PostgreSQL.
- Frontend: Next.js.
- Docs: MkDocs Material.
- Infra: Proxmox (CT110 app, CT107 DB, CT103 proxy).
Servicios clave en CT110#
deploy-backend-1(API :8096)deploy-frontend-1(UI :3000)deploy-docs-1(Docs :8001)current-db-1(Postgres :5433)
URLs públicas#
- Frontend:
https://sdp.perlatec.net - API:
https://api.sdp.perlatec.net - Docs:
https://sdp.perlatec.net/docs/ - Changelog docs:
https://sdp.perlatec.net/docs/CHANGELOG/
4) Flujo estándar de trabajo del agente#
Para cualquier tarea de desarrollo/ops:
- Diagnóstico breve
- Identificar alcance real (código, docs, runtime, deploy).
-
Buscar contexto en
README.md,HANDOFF.md,TODO.md,CHANGELOG.md. -
Implementación mínima y segura
- Cambiar solo lo necesario.
-
Evitar “overengineering”.
-
Validación técnica
- Sintaxis (
bash -npara scripts shell). -
Verificación funcional mínima (endpoint/log/timer/comando objetivo).
-
Trazabilidad
- Actualizar docs relevantes.
-
Añadir entrada a
CHANGELOG.mdenUnreleasedcuando aplique. -
Publicación
- Commit claro por intención.
- Push a
master. - Si es cambio operativo, sincronizar/activar en CT110 y evidenciar resultado.
5) Política documental obligatoria#
Si cambias comportamiento real, el agente debe actualizar lo siguiente:
README.md: estado operativo resumido y comandos principales.HANDOFF.md: runbook operativo y hallazgos relevantes.TODO.md: backlog y acciones inmediatas.CHANGELOG.md: cambios relevantes (Added/Changed/Fixed/Security).
Regla: no abrir documentos nuevos innecesarios para microcambios; priorizar consolidación.
6) Política de changelog y releases#
Changelog#
- Archivo canónico:
CHANGELOG.md. - Formato:
Added,Changed,Fixed,Security. - Cada PR/cambio significativo debe dejar rastro en
Unreleased.
Docs UI#
- Página navegable:
CHANGELOG.md(referencia al changelog canónico). - Menú de docs configurado en
mkdocs.yml.
Release / deploy#
- Script base:
scripts/ct110_deploy_release.sh. - Retry wrapper:
scripts/ct110_deploy_retry.sh. - Shortcut docs-only:
scripts/ct110_deploy_docs.sh. - Verificación de changelog en deploy:
- Flag:
--verify-docs-changelog=true|false. - Ruta validada:
/docs/CHANGELOG/(fallback/docs/changelog/).
7) Monitoreo y timers (mínimos esperados)#
Timers críticos esperados activos:
signaldashpro-binance-demo-auth-smoke.timersignaldashpro-web-auth-smoke.timersignaldashpro-openai-runtime-smoke.timersignaldashpro-alerts.timersignaldashpro-m15-autopromote.timersignaldashpro-docs-changelog-check.timer(semanal)
Logs operativos principales:
storage/logs/ops/binance-demo-auth-smoke-latest.logstorage/logs/ops/openai-runtime-smoke-latest.logstorage/logs/ops/web-auth-smoke-*.logstorage/logs/ops/docs-changelog-check-latest.log
Endpoint operativo adicional (timeframe recommendations):
GET /ops/reports/paxg-timeframe/latest
8) Implementación reciente: Filtros de volatilidad/volumen (2026-03-17)#
Contexto:
- Backtest de 90 días mostró win-rate de 35.5% con -2.03% PnL (negativo).
- Análisis root-cause: trades perdedores ocurrían en volatilidad HIGH (+70%) y volumen LOW (-47%).
Solución implementada:
- Función
_historical_volatility()agregada abackend/services/strategies/paxg_mean_reversion.py. - Filtros aplicados en lógica de
generate_signal(): rechaza BUY/SELL si: historical_volatility_pct > 0.159%(too turbulent), Ovolume_ratio < 4.54x(insufficient liquidity).
Validación (90d backtest):
- Sin filtros: 31 trades, 35.5% WR, -2.03% PnL
- Con filtros: 12 trades, 58.3% WR, +1.67% PnL
- Mejora: +22.8pp win-rate, +3.70pp PnL, +188% profit factor
Runtime deployment:
AUTOPILOT_PAXG_MAX_VOLATILITY_PCT = 0.159(manual override)AUTOPILOT_PAXG_MIN_VOL_RATIO = 4.54(manual override)- Ambos parametrizables vía
/settings/autopilotendpoint.
Comportamiento en señales:
- Diagnostics incluyen
volatility_pctyvolume_ratioen cada candle. - Si signal es rechazada por filtro, detalles muestran
volatility_ok: falseovolume_ratio_ok: false. - Sirve para debugging de por qué se skipped un entry que parecía válido.
Archivos modificados:
backend/services/strategies/paxg_mean_reversion.py(+volatility calc, +filters logic)backend/routers/settings.py(+new AUTOPILOT keys, +defaults)HANDOFF.md(documented status)TODO.md(marked complete with metrics)CHANGELOG.md(entry to be added)
Próximos pasos opcionales:
- Monitor live performance 24-48h antes de ajustes adicionales.
- Si win-rate observada se acerca a 58.3%, considerar publicar como "optimized_variant v1".
- Sino, revertir uno o ambos filtros vía
/settings/autopiloty retest.
8) Checklist de auditoría rápida (hoy)#
BACKTEST ANUAL EVALUADO Y APLICADO (2026-04-04)#
Análisis de 1 año (365 días M15, $1000): filtro 4.54x vol_ratio original estaba en P99+ (inviable).
Calibración realista aplicada en runtime (0.15% vol, 1.5x vol_ratio).
Resultado histórico esperado: 257 trades, 26.8% WR, +$124.62 (+12.46%), PF=1.23, DD=7.43%.
Reporte base: /storage/reports/paxg_1y_with_filters_final_2026_03_17.json
Status: Runtime defaults actualizados a calibración (0.15%, 1.5x) para optimizar volumen de entrada.
Comandos recomendados:
# Salud base
curl -sS http://127.0.0.1:8096/status
# Login + jobs
TOKEN=$(curl -sS -X POST http://127.0.0.1:8096/auth/login -H 'Content-Type: application/json' -d '{"email":"admin@sdp.perlatec.net","password":"***"}' | python3 -c 'import sys,json;print(json.load(sys.stdin).get("access_token",""))')
curl -sS http://127.0.0.1:8096/jobs/status -H "Authorization: Bearer $TOKEN"
# Estrategia / readiness
curl -sS http://127.0.0.1:8096/settings/autopilot -H "Authorization: Bearer $TOKEN"
curl -sS http://127.0.0.1:8096/settings/trade-manager -H "Authorization: Bearer $TOKEN"
curl -sS http://127.0.0.1:8096/ops/p0/readiness -H "Authorization: Bearer $TOKEN"
curl -sS 'http://127.0.0.1:8096/ops/strategy/performance?days=7' -H "Authorization: Bearer $TOKEN"
# Cola reciente (verificar side/source/error)
curl -sS 'http://127.0.0.1:8096/signals/queue?limit=20' -H "Authorization: Bearer $TOKEN" \
| jq -r '.[] | [.created_at,.symbol,.side,.source,.status,(.last_error//"")] | @tsv'
# Timers
systemctl list-timers --all --no-pager | grep signaldashpro
9) Guardrails de seguridad y cumplimiento#
- Nunca versionar secretos (
BINANCE_API_KEY,BINANCE_API_SECRET, passwords, tokens). env/*con credenciales es gitignored; usar rutas compartidas en servidor.- No exponer credenciales en docs, commits o logs.
- Evitar comandos destructivos sin necesidad (
rm -rf, drop de tablas, etc.). - Confirmar siempre impacto en producción antes de reiniciar servicios.
10) Incidentes frecuentes y respuesta#
- Smoke Binance falla con
Permission denied -
Revisar
chmod +x scripts/check_binance_demo_auth.shy wrapper ops. -
Deploy helper falla al validar changelog docs
- Asegurar ruta correcta:
/docs/CHANGELOG/(o fallback/docs/changelog/). -
Si falla endpoint público desde CT110, usar check interno por defecto (public opcional).
-
currentno es repositorio git - Es release inmutable por symlink; no asumir
git pullencurrent. -
Usar flujo de tarball/deploy helper o copia controlada.
-
Inconsistencia docs vs runtime
- Auditoría rápida de endpoints + timers.
- Actualizar
README/HANDOFF/TODO/CHANGELOGen la misma sesión.
11) Definition of Done (DoD) para un agente#
Una tarea se considera completada solo si:
- [ ] Cambio implementado y validado técnicamente.
- [ ] Evidencia de funcionamiento (salida de comando/log/endpoint).
- [ ] Documentación relevante actualizada.
- [ ] Changelog actualizado si cambia comportamiento.
- [ ] Commit/push realizados (si aplica).
- [ ] Si afecta operación, sincronizado y validado en CT110.
12) Formato recomendado de commits#
Usar prefijos semánticos:
feat(...)nueva capacidadfix(...)correcciónops(...)operación/deploy/timersdocs(...)documentaciónrefactor(...)estructura sin cambio funcional
Ejemplos:
ops(timers): add weekly docs changelog check with systemd timerfix(deploy): verify docs changelog on /docs/changelog pathdocs(audit): unify runtime state as of 2026-03-15
13) Cadencia sugerida para agentes IA#
- Cada sesión debe cerrar con: 1) resumen técnico, 2) riesgos pendientes, 3) próximos pasos concretos.
- Si hay cambios operativos, incluir ruta de log y comando de verificación.
- Mantener mensajes claros, ejecutables y orientados a continuidad entre sesiones.
14) Nota final#
Este AGENTE.md es el contrato operativo para mantener continuidad de desarrollo y operación en SignalDashPro.
Si el estado de runtime cambia (estrategia, timers, endpoints, deploy), este documento debe actualizarse junto con README.md, HANDOFF.md, TODO.md y CHANGELOG.md.