trading-platform/docs/02-definicion-modulos/OQI-007-llm-agent/historias-usuario/US-LLM-011-ejecutar-trade-desde-chat.md
Adrian Flores Cortes cdec253b02 [TASK-2026-01-25-FRONTEND-ANALYSIS] docs: Add frontend specifications and user stories
- Add 5 frontend specification documents (ET-*-frontend.md):
  - ET-AUTH-006: Authentication module frontend spec
  - ET-ML-008: ML Signals module frontend spec
  - ET-LLM-007: LLM Agent module frontend spec
  - ET-PFM-008: Portfolio Manager frontend spec (design)
  - ET-MKT-003: Marketplace frontend spec (design)

- Add 8 new user stories:
  - US-AUTH-013: Global logout
  - US-AUTH-014: Device management
  - US-ML-008: Ensemble signal view
  - US-ML-009: ICT analysis view
  - US-ML-010: Multi-symbol scan
  - US-LLM-011: Execute trade from chat
  - US-PFM-013: Rebalance alerts
  - US-PFM-014: PDF report generation

- Update task index with completed analysis

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 01:47:27 -06:00

358 lines
8.1 KiB
Markdown

---
id: "US-LLM-011"
title: "Ejecutar Trade desde Chat"
type: "User Story"
status: "Pending"
priority: "Alta"
epic: "OQI-007"
project: "trading-platform"
story_points: 5
created_date: "2026-01-25"
updated_date: "2026-01-25"
---
# US-LLM-011: Ejecutar Trade desde Chat
**Épica:** OQI-007 - LLM Strategy Agent
**Sprint:** TBD
**Story Points:** 5
**Prioridad:** P0 - Alta
---
## Historia de Usuario
**Como** usuario Pro o Premium con capacidad de trading real
**Quiero** ejecutar trades directamente desde el chat con el asistente AI mediante comandos naturales
**Para** operar en los mercados rápidamente sin cambiar de interfaz
---
## Criterios de Aceptación
### AC-1: Interpretar comandos de trading
```gherkin
Given soy usuario Pro/Premium
And tengo acceso a trading real
When digo frases como "Vende 50 acciones de AAPL" o "Compra Bitcoin a $43,000"
Then el agente interpreta correctamente:
- Acción (compra/venta)
- Símbolo del activo
- Cantidad
- Tipo de orden (mercado/límite)
- Precio (si es límite)
And valida que la orden sea válida
```
### AC-2: Mostrar preview de la orden
```gherkin
Given el agente interpreta un comando de trading
When prepara la orden
Then muestra un resumen detallado:
- Símbolo y nombre del activo
- Acción (BUY/SELL)
- Cantidad de unidades
- Tipo de orden (market/limit)
- Precio unitario estimado
- Costo/ingresos totales
- Comisiones estimadas
- Impacto en el portafolio
And NO ejecuta la orden automáticamente
```
### AC-3: Requerir confirmación explícita
```gherkin
Given el agente muestra el preview de la orden
When el usuario revisa los detalles
Then el agente pide confirmación explícita:
- "¿Confirmas esta orden?" o similar
- Botones/acciones claras (Confirmar/Cancelar)
And SOLO ejecuta si el usuario confirma
And permite cancelar en cualquier momento
```
### AC-4: Validar límites de riesgo
```gherkin
Given quiero ejecutar una orden
When el agente prepara la orden
Then valida:
- Saldo disponible suficiente
- Límite de exposición por activo
- Límite de pérdida diaria
- Límite de apalancamiento
And si hay violación:
- Informa qué límite se excede
- Muestra valores actuales vs permitidos
- NO permite ejecutar
```
### AC-5: Ejecutar y retornar feedback
```gherkin
Given el usuario confirma la orden
When se ejecuta correctamente
Then muestra confirmación con:
- ID de la orden
- Status (filled/pending)
- Símbolo y precio ejecutado
- Cantidad y costo final
- Timestamp exacto
- Posición actualizada en el activo
And registra en el historial del chat
```
### AC-6: Manejo de errores
```gherkin
Given intento ejecutar una orden
When ocurre error (conexión, mercado cerrado, etc.)
Then el agente:
- Informa el tipo de error
- Explica por qué no se ejecutó
- Sugiere alternativas (ej: orden pendiente)
- NO procesa parcialmente la orden
```
### AC-7: Restricción por plan
```gherkin
Given soy usuario Free o con trading deshabilitado
When intento ejecutar una orden
Then el agente:
- Rechaza la orden
- Explica que requiere plan Pro/Premium
- Muestra opción de upgrade
- NO ejecuta ninguna orden
```
---
## Flujo de Confirmación
```markdown
## Confirmar Orden 📊
**Acción:** VENTA
**Símbolo:** AAPL - Apple Inc.
**Cantidad:** 50 acciones
**Tipo:** Market Order
**Precio actual:** $185.32
**Costo total:** ~$9,266.00
**Comisión:** ~$9.27
**Neto:** ~$9,256.73
**Tu portafolio:**
- Posición actual: 100 acciones @ $184.50
- Posición después: 50 acciones
---
⚠️ Esta es una orden REAL de trading
¿Confirmas esta orden?
[✅ Confirmar] [❌ Cancelar]
```
---
## Respuesta Post-Ejecución
```markdown
## Orden Ejecutada ✅
**ID:** ORD-20260125-001234
**Status:** Filled (Completada)
**Símbolo:** AAPL
**Acción:** VENTA
**Cantidad:** 50 acciones
**Precio:** $185.31
**Total:** $9,265.50
**Comisión:** $9.27
**Neto:** $9,256.23
**Timestamp:** 15:45:32 ET
**Posición Actualizada:**
- AAPL: 50 acciones @ $185.31 (promedio)
- Valor: $9,265.50
- Variación: +2.5% hoy
Registro guardado en tu historial.
```
---
## Respuesta con Error
```markdown
## Error al Ejecutar ❌
**Razón:** Mercado cerrado (Cierre: 16:00 ET)
La orden no pudo ejecutarse porque el mercado de NYSE está cerrado.
**Alternativas:**
- Crear orden pendiente para la apertura mañana
- Intentar en mercados abiertos (premarket a las 04:00 ET)
- Esperar a mañana a las 09:30 ET
¿Qué prefieres?
[Orden Pendiente] [Otra acción] [Cancelar]
```
---
## API Endpoint
### POST `/api/llm/execute-trade`
**Headers:**
```
Authorization: Bearer {token}
Content-Type: application/json
```
**Request Body:**
```json
{
"sessionId": "chat-session-12345",
"interpretation": {
"action": "BUY|SELL",
"symbol": "AAPL",
"quantity": 50,
"orderType": "market|limit",
"limitPrice": null,
"timeInForce": "DAY|GTC"
},
"userId": "user-uuid",
"confirmedAt": "2026-01-25T15:45:32Z"
}
```
**Response (Success):**
```json
{
"success": true,
"order": {
"orderId": "ORD-20260125-001234",
"status": "filled",
"symbol": "AAPL",
"action": "SELL",
"quantity": 50,
"executedPrice": 185.31,
"totalValue": 9265.50,
"commission": 9.27,
"netValue": 9256.23,
"executedAt": "2026-01-25T15:45:32Z"
},
"message": "Orden ejecutada exitosamente"
}
```
**Response (Error):**
```json
{
"success": false,
"error": {
"code": "MARKET_CLOSED",
"message": "El mercado está cerrado",
"details": "NYSE cierra a las 16:00 ET"
},
"alternatives": [
{
"type": "pending_order",
"description": "Crear orden pendiente para apertura"
}
]
}
```
---
## Notas Técnicas
- **Tool:** `execute_trade` (en el LLM Agent)
- **Servicio:** Trading API Backend (puerto 3080)
- **Confirmación:** OBLIGATORIA antes de ejecutar
- **Validación:** Límites de riesgo, saldo, mercado abierto
- **Logging:** Todas las órdenes registradas con timestamp
- **Rate limit:** 20 órdenes/minuto por usuario
- **Timeout:** 30 segundos para confirmación
- **Rollback:** Si falla ejecución, reversión de cambios
---
## Flujo Técnico
```mermaid
graph TD
A["Usuario: 'Vende 50 AAPL'"] -->|Chat Input| B["LLM Agent"]
B -->|NLU| C["Interpretar Comando"]
C -->|Validar Sintaxis| D{¿Válido?}
D -->|No| E["Error: Comando inválido"]
D -->|Sí| F["Preparar Preview"]
F -->|GET /api/market/price| G["Obtener precio actual"]
G -->|GET /api/portfolio/position| H["Obtener posición actual"]
H -->|Calcular| I["Preparar detalles orden"]
I -->|Mostrar| J["Preview en chat"]
J -->|Usuario revisa| K{¿Confirma?}
K -->|Cancela| L["Cancelado"]
K -->|Confirma| M["POST /api/llm/execute-trade"]
M -->|Validar riesgos| N{¿Límites OK?}
N -->|No| O["Error: Límite excedido"]
N -->|Sí| P["Ejecutar orden"]
P -->|Trading System| Q["Orden procesada"]
Q -->|Response| R["Mostrar confirmación"]
R -->|Actualizar portafolio| S["Feedback final"]
```
---
## Criterios de Aceptación Técnica
- [ ] Interpretar al menos 10 variantes de comandos
- [ ] Validar todos los campos obligatorios
- [ ] Conectar con Trading API backend
- [ ] Mostrar preview antes de ejecutar
- [ ] Requerir confirmación explícita
- [ ] Validar límites de riesgo
- [ ] Ejecutar orden correctamente
- [ ] Mostrar confirmación con detalles
- [ ] Registrar en historial
- [ ] Manejo robusto de errores
- [ ] Tests unitarios (80%+ coverage)
- [ ] Tests E2E del flujo completo
- [ ] QA aprobado
---
## Dependencias
- RF-LLM-005: Herramienta Trading Execution
- RF-LLM-006: Interpretación NLU avanzada
- ET-LLM-005: Arquitectura Tools
- OQI-001: Autenticación y autorización
- OQI-003: Paper Trading System
- REC-BACKEND-001: Trading API
---
## Definición de Done
- [ ] Endpoint `/api/llm/execute-trade` implementado
- [ ] LLM Agent puede interpretar comandos
- [ ] Preview de orden funcionando
- [ ] Confirmación obligatoria
- [ ] Validación de límites de riesgo
- [ ] Ejecución de orden
- [ ] Feedback post-ejecución
- [ ] Manejo de errores
- [ ] Restricción por plan
- [ ] Tests unitarios
- [ ] Tests E2E
- [ ] QA aprobado
- [ ] Documentación actualizada
---
*Historia de usuario - Sistema NEXUS*
*Trading Platform*