Communitygithub.com

jwd2a/skills

Analiza la cartera de acciones de Justin con referencia al S&P 500 (SPY).

¿Qué es skills?

Esta skill proporciona un conjunto completo de herramientas para analizar y gestionar la cartera de acciones personales de Justin. Incluye un módulo de análisis que calcula volatilidad anualizada, matriz de correlación, ratio Sortino, puntuación de diversificación y crecimiento comparado con el S&P 500 (SPY). También ofrece un monitor de trailing stops ajustado por beta, un screener de momentum para descubrir nuevas oportunidades en el mercado, un rastreador de rotación de posiciones y reportes multicadencia (diario, semanal, mensual, trimestral, anual) con formato para Slack. Compatible con Python, usa datos de Finnhub (tiempo real), AlphaVantage (histórico) y Yahoo Finance, con control de límites de tasa. Ideal para inversores que usan agentes de IA como Claude Code, Cursor o Codex para automatizar el seguimiento y la toma de decisiones de cartera.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jwd2a/skills/tree/HEAD/portfolio

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

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 posiciones
  • analyze.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

Skills relacionados