Skill de Analítica de Cartera
Analiza la cartera de acciones de Justin con referencia al S&P 500 (SPY).
Archivos
portfolio.py— Clase Portfolio para gestionar posicionesanalyze.py— Motor de análisis (volatilidad, correlación, Sortino, diversificación, crecimiento)prices.py— Módulo de obtención de precios
Uso
Actualizar cartera desde CSV de Fidelity
from portfolio import Portfolio
p = Portfolio()
p.load_from_fidelity_csv("/ruta/al/export.csv")
p.save()
Ejecutar análisis
python analyze.py # 90 días por defecto
python analyze.py --days 180 # período personalizado
python analyze.py --json portfolio.json --days 60
Salida
Texto formateado para Slack con:
- Volatilidad por posición y de la cartera (anualizada)
- Matriz de correlación
- Puntuación de diversificación
- Ratio Sortino (tasa libre de riesgo 0%)
- Crecimiento vs referencia SPY
Monitor de Trailing Stop
trailing_stops.py — Trailing stops de volatilidad ajustados por beta para cada posición.
Cómo funciona
- Calcula volatilidad anualizada rodante de 30 días y beta respecto a SPY
- Rastrea el precio máximo rodante por posición
- Calcula la caída ajustada = caída bruta desde el máximo − (beta × caída de SPY desde su máximo)
- Alerta cuando la caída ajustada supera 1.5× la volatilidad diaria durante 2 días de negociación consecutivos
- El estado se guarda en
stops_state.json
Uso
python trailing_stops.py --status # Muestra niveles actuales de todas las posiciones
python trailing_stops.py --check # Monitoreo diario (genera alertas en caso de ruptura)
Salida
--status: Precio actual, máximo rodante, volatilidad, beta, distancia al nivel de stop--check: Alerta si se ha superado, o "todo en orden". Reinicia el estado tras alertar.
Reportes
report.py — Reportes de cartera multicadencia con salida formateada para Slack.
Uso
python report.py --cadence daily # Resumen diario corto (cotizaciones en vivo de Finnhub)
python report.py --cadence weekly # Rendimiento semanal + trailing stops
python report.py --cadence monthly # Analítica completa, retrospectiva de 30 días
python report.py --cadence quarterly # 90 días + tendencias de momentum + deriva de pesos
python report.py --cadence yearly # 252 días + ranking anual + tendencia de diversificación
Detalles de Cadencia
- Diario: ~10-15 líneas. Cotizaciones en vivo, cambios de posición, mejor/peor, comparación con SPY
- Semanal: ~20 líneas. Cambios semanales, distancias de trailing stop, volatilidad
- Mensual: Suite completa — volatilidad, matriz de correlación, Sortino, diversificación, crecimiento vs SPY, P/L, trailing stops
- Trimestral: Mensual + tendencias de momentum (acelerando/desacelerando), deriva de peso respecto a igual ponderación
- Anual: Mensual + rankings anuales, tendencia de puntuación de diversificación por trimestre
Fuentes de Datos
- Diario: Cotizaciones en vivo de Finnhub (sin problemas de límite de tasa)
- Semanal+: Histórico de AlphaVantage (retardo de 3 segundos entre llamadas por límite de tasa)
Screener de Momentum
momentum_screener.py — Escanea el mercado en busca de las mejores acciones de momentum usando datos de Yahoo Finance.
Uso
python3 momentum_screener.py # Por defecto: top 20 por momentum de 10 días
python3 momentum_screener.py --lookback 5 # Momentum de 5 días
python3 momentum_screener.py --lookback 20 # Momentum de 20 días (1 mes)
python3 momentum_screener.py --top 10 # Top 10 resultados
python3 momentum_screener.py --universe bullpen # Escanear solo acciones del bullpen
python3 momentum_screener.py --universe sp500 # S&P 500 completo
python3 momentum_screener.py --min-volume 500000 # Filtro de volumen medio diario mínimo
python3 momentum_screener.py --compare # Marcar tenencias actuales en resultados
python3 momentum_screener.py --json # Salida JSON
Salida
Por acción: rendimiento bruto, volatilidad anualizada, momentum ajustado por riesgo, consistencia de días alcistas, volumen medio.
Rastreador de Rotación
rotation_tracker.py — Registra entradas/salidas de cartera y rastrea el rendimiento de la rotación.
Uso
python3 rotation_tracker.py --log GOOGL exit 311.49 "Rotura de trailing stop"
python3 rotation_tracker.py --log POWL enter 85.20 "Selección del screener de momentum"
python3 rotation_tracker.py --stats # Estadísticas de operaciones (tasa de acierto, ganancia/pérdida media, etc.)
python3 rotation_tracker.py --json # Salida JSON
Documento de Estrategia
Consulta docs/finance/STRATEGY.md para la documentación completa de la estrategia de rotación de momentum.
Notas
- Utiliza AlphaVantage para precios históricos (5 llamadas/minuto en el plan gratuito, retardo de 3 segundos entre llamadas)
- Los datos de cartera se almacenan como JSON en
~/hex/skills/portfolio/portfolio.json - SPAXX (fondo de mercado monetario) queda excluido del análisis