---
id: "US-ML-022"
title: "HISTORIA DE USUARIO"
type: "User Story"
status: "Done"
priority: "Media"
epic: "OQI-006"
project: "trading-platform"
story_points: 3
created_date: "2025-12-05"
updated_date: "2026-01-04"
---

# HISTORIA DE USUARIO

**Version:** 1.0.0
**Fecha:** 2025-12-05
**Uso:** Definicion de historia de usuario

---

## US-ML-022: Ver Zonas de Liquidez (BSL/SSL) en Chart

### Metadata

| Campo | Valor |
|-------|-------|
| **ID** | US-ML-022 |
| **Epica** | OQI-006A - Estrategia AMD y Modelos ML Avanzados |
| **Modulo** | ml-signals |
| **Prioridad** | P0 |
| **Story Points** | 8 |
| **Sprint** | Sprint 9 |
| **Estado** | Ready |
| **Asignado a** | ML-Engineer / Frontend-Developer |

---

### Historia de Usuario

**Como** trader que utiliza conceptos de Smart Money,
**quiero** ver las zonas de liquidez (Buy Side Liquidity y Sell Side Liquidity) superpuestas en el chart,
**para** anticipar movimientos institucionales de "stop hunting" y planificar entradas/salidas optimas.

### Descripcion Detallada

Las zonas de liquidez representan areas donde se acumulan ordenes stop-loss de traders retail:

- **BSL (Buy Side Liquidity):** Zonas sobre maximos recientes donde hay stops de posiciones cortas. Color azul claro.
- **SSL (Sell Side Liquidity):** Zonas bajo minimos recientes donde hay stops de posiciones largas. Color rojo claro.

El modelo LiquidityHunter predice:
1. Ubicacion de zonas de liquidez
2. Densidad de liquidez (baja/media/alta)
3. Probabilidad de que el precio visite la zona
4. Si la zona ya fue "sweepada" (barrida)

Los traders institucionales frecuentemente "cazan" estas zonas antes de mover el precio en la direccion opuesta.

### Mockups/Wireframes

```
+----------------------------------------------------------+
|                    TRADING CHART                          |
+----------------------------------------------------------+
|                                                          |
|  BSL Zone =========== [High Density] ============= $2450 |
|            P(sweep): 72%                                 |
|                                                          |
|        /\                                                |
|       /  \    /\                                         |
|      /    \  /  \                                        |
|     /      \/    \    Current: $2380                     |
|    /              \  /                                   |
|   /                \/                                    |
|                                                          |
|  SSL Zone =========== [Medium Density] =========== $2320 |
|            P(sweep): 45%                                 |
|                                                          |
+----------------------------------------------------------+
|  Legend: [BSL] Buy Side Liquidity  [SSL] Sell Side Liq   |
+----------------------------------------------------------+
```

---

### Criterios de Aceptacion

**Escenario 1: Visualizacion de zonas BSL**
```gherkin
DADO que estoy viendo el chart de trading
CUANDO el modelo LiquidityHunter detecta zonas BSL
ENTONCES veo rectangulos azul claro sobre los maximos recientes
Y cada zona muestra su densidad (baja/media/alta)
Y puedo ver la probabilidad de sweep al hacer hover
```

**Escenario 2: Visualizacion de zonas SSL**
```gherkin
DADO que estoy viendo el chart de trading
CUANDO el modelo LiquidityHunter detecta zonas SSL
ENTONCES veo rectangulos rojo claro bajo los minimos recientes
Y cada zona muestra su densidad (baja/media/alta)
Y puedo ver la probabilidad de sweep al hacer hover
```

**Escenario 3: Zona sweepada (barrida)**
```gherkin
DADO que existe una zona de liquidez en el chart
CUANDO el precio atraviesa la zona (sweep)
ENTONCES la zona cambia a color gris con lineas diagonales
Y el label muestra "SWEPT" con timestamp
Y se dispara una alerta visual (si esta configurada)
```

**Escenario 4: Actualizacion dinamica**
```gherkin
DADO que estoy viendo zonas de liquidez
CUANDO se forman nuevos maximos/minimos
ENTONCES las zonas se actualizan en menos de 5 segundos
Y las zonas antiguas se marcan como menos relevantes (opacidad menor)
```

**Escenario 5: Toggle de visualizacion**
```gherkin
DADO que estoy viendo el chart con zonas de liquidez
CUANDO desactivo el indicador de liquidez
ENTONCES las zonas desaparecen del chart
Y el boton de toggle muestra estado "OFF"
```

### Criterios Adicionales

- [ ] Zonas no bloquean visualizacion del precio
- [ ] Opacidad configurable por usuario
- [ ] Filtro por densidad minima (mostrar solo alta/media)
- [ ] Historial de sweeps en sidebar
- [ ] Compatible con TradingView Lightweight Charts

---

### Tareas Tecnicas

**Backend (FastAPI):**
- [ ] BE-ML-030: Endpoint GET /api/ml/liquidity/zones
- [ ] BE-ML-031: Endpoint GET /api/ml/liquidity/sweeps
- [ ] BE-ML-032: WebSocket para actualizaciones de zonas

**ML Model:**
- [ ] ML-030: Implementar LiquidityHunter.detect_zones()
- [ ] ML-031: Implementar LiquidityHunter.predict_sweep()
- [ ] ML-032: Feature engineering para liquidez (10 features)
- [ ] ML-033: Entrenamiento con datos historicos de sweeps

**Frontend:**
- [ ] FE-ML-030: Componente LiquidityZonesOverlay
- [ ] FE-ML-031: Componente LiquidityZoneBadge
- [ ] FE-ML-032: Componente SweepHistoryPanel
- [ ] FE-ML-033: Store liquidityStore (Zustand)
- [ ] FE-ML-034: Integracion con TradingView chart

**Tests:**
- [ ] TEST-ML-030: Unit tests LiquidityHunter
- [ ] TEST-ML-031: Unit tests zona detection
- [ ] TEST-ML-032: E2E tests visualizacion

---

### Dependencias

**Depende de:**
- [ ] OQI-003: Trading Charts basico - Estado: In Progress
- [ ] LiquidityHunter modelo entrenado - Estado: Pending

**Bloquea:**
- [ ] US-ML-024: Score de confluencia (incluye liquidez)

---

### Notas Tecnicas

**Endpoints involucrados:**
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /api/ml/liquidity/zones | Zonas activas |
| GET | /api/ml/liquidity/sweeps | Historial de sweeps |
| WS | /ws/ml/liquidity | Stream de actualizaciones |

**Entidades/Tablas:**
- `ml.liquidity_zones`: Zonas detectadas
- `ml.liquidity_sweeps`: Registro de sweeps

**Componentes UI:**
- `LiquidityZonesOverlay`: Overlay para chart
- `LiquidityZoneBadge`: Badge individual de zona
- `SweepHistoryPanel`: Panel lateral con historial

**Response Schema:**
```typescript
interface LiquidityZone {
  id: string;
  type: 'bsl' | 'ssl';
  price_low: number;
  price_high: number;
  density: 'low' | 'medium' | 'high';
  sweep_probability: number;  // 0-1
  is_swept: boolean;
  swept_at: string | null;    // ISO 8601
  created_at: string;         // ISO 8601
  source_candles: number[];   // Indices de velas que formaron la zona
}

interface SweepEvent {
  zone_id: string;
  swept_at: string;
  sweep_price: number;
  reversal_occurred: boolean;
  reversal_pct: number | null;
}
```

**LiquidityHunter Features:**
```python
features = [
    'swing_high_count_10',    # Numero de swing highs en 10 periodos
    'swing_low_count_10',     # Numero de swing lows en 10 periodos
    'distance_to_bsl',        # Distancia normalizada a BSL mas cercano
    'distance_to_ssl',        # Distancia normalizada a SSL mas cercano
    'bsl_density',            # Densidad de liquidez en BSL
    'ssl_density',            # Densidad de liquidez en SSL
    'volume_at_level',        # Volumen historico en el nivel
    'touches_count',          # Numero de veces que precio toco el nivel
    'time_since_formation',   # Tiempo desde formacion de la zona
    'amd_phase'               # Fase AMD actual (input de AMDDetector)
]
```

---

### Definition of Ready (DoR)

- [x] Historia claramente escrita (quien, que, por que)
- [x] Criterios de aceptacion definidos
- [x] Story points estimados
- [x] Dependencias identificadas
- [ ] LiquidityHunter modelo entrenado
- [x] Diseno/mockup disponible
- [x] API spec disponible

### Definition of Done (DoD)

- [ ] Codigo implementado segun criterios
- [ ] Tests unitarios escritos y pasando
- [ ] Tests de integracion pasando
- [ ] Code review aprobado
- [ ] Documentacion actualizada
- [ ] Inventarios actualizados
- [ ] Traza registrada
- [ ] QA aprobado
- [ ] Desplegado en ambiente de pruebas

---

### Historial de Cambios

| Fecha | Cambio | Autor |
|-------|--------|-------|
| 2025-12-05 | Creacion | Requirements-Analyst |

---

### Notas de Implementacion

_Pendiente de desarrollo_

### Notas de QA

_Pendiente de pruebas_

---

**Creada por:** Requirements-Analyst
**Fecha:** 2025-12-05
**Ultima actualizacion:** 2025-12-05
