Skill de Análise de Portfólio
Analisa o portfólio de ações de Justin com comparação com o S&P 500 (SPY).
Arquivos
portfolio.py— Classe Portfolio para gerenciar posiçõesanalyze.py— Motor de análise (volatilidade, correlação, Sortino, diversificação, crescimento)prices.py— Módulo de obtenção de preços
Uso
Atualizar portfólio a partir de CSV da Fidelity
from portfolio import Portfolio
p = Portfolio()
p.load_from_fidelity_csv("/caminho/para/export.csv")
p.save()
Executar análise
python analyze.py # Padrão 90 dias
python analyze.py --days 180 # Período personalizado
python analyze.py --json portfolio.json --days 60
Saída
Texto formatado para Slack com:
- Volatilidade por posição e do portfólio (anualizada)
- Matriz de correlação
- Pontuação de diversificação
- Índice Sortino (taxa livre de risco 0%)
- Crescimento vs. benchmark SPY
Monitor de Trailing Stop
trailing_stops.py — Trailing stops de volatilidade ajustados por beta para cada posição.
Como funciona
- Calcula volatilidade anualizada móvel de 30 dias e beta em relação ao SPY
- Rastreia o preço máximo de cada posição
- Calcula queda ajustada = queda bruta do máximo − (beta × queda do SPY do seu máximo)
- Alerta quando a queda ajustada excede 1,5× a volatilidade diária por 2 dias consecutivos
- Estado persistido em
stops_state.json
Uso
python trailing_stops.py --status # Mostra níveis atuais para todas as posições
python trailing_stops.py --check # Monitoramento diário (dispara alertas em violação)
Saída
--status: Preço atual, máximo, volatilidade, beta, distância até o nível de stop--check: Alerta se violado, senão "tudo limpo". Reinicia o estado após alerta.
Relatórios
report.py — Relatórios de portfólio em múltiplas cadências com saída formatada para Slack.
Uso
python report.py --cadence daily # Resumo diário curto (cotações ao vivo Finnhub)
python report.py --cadence weekly # Desempenho semanal + trailing stops
python report.py --cadence monthly # Análise completa, retrospectiva de 30 dias
python report.py --cadence quarterly # 90 dias + tendências momentum + deriva de pesos
python report.py --cadence yearly # 252 dias + ranking anual + tendência de diversificação
Detalhes da Cadência
- Diário: ~10-15 linhas. Cotações ao vivo, mudanças nas posições, melhor/pior, comparação com SPY
- Semanal: ~20 linhas. Mudanças semanais, distâncias dos trailing stops, volatilidade
- Mensal: Pacote completo — volatilidade, matriz de correlação, Sortino, diversificação, crescimento vs. SPY, P/L, trailing stops
- Trimestral: Mensal + tendências de momentum (acelerando/desacelerando), deriva de peso em relação a pesos iguais
- Anual: Mensal + rankings anuais, tendência da pontuação de diversificação por trimestre
Fontes de Dados
- Diário: Cotações ao vivo Finnhub (sem problemas de limite de taxa)
- Semanal+: Histórico AlphaVantage (atraso de 3s entre chamadas para controle de limite)
Screener de Momentum
momentum_screener.py — Varre o mercado em busca das principais ações com momentum usando dados do Yahoo Finance.
Uso
python3 momentum_screener.py # Padrão: top 20 por momentum de 10 dias
python3 momentum_screener.py --lookback 5 # Momentum de 5 dias
python3 momentum_screener.py --lookback 20 # Momentum de 20 dias (1 mês)
python3 momentum_screener.py --top 10 # Top 10 resultados
python3 momentum_screener.py --universe bullpen # Varre apenas ações do bullpen
python3 momentum_screener.py --universe sp500 # S&P 500 completo
python3 momentum_screener.py --min-volume 500000 # Filtro de volume médio diário mínimo
python3 momentum_screener.py --compare # Marca posições atuais nos resultados
python3 momentum_screener.py --json # Saída JSON
Saída
Por ação: retorno bruto, volatilidade anualizada, momentum ajustado ao risco, consistência de dias positivos, volume médio.
Rastreador de Rotação
rotation_tracker.py — Registra entradas/saídas do portfólio e rastreia o desempenho da rotação.
Uso
python3 rotation_tracker.py --log GOOGL exit 311.49 "Violação de trailing stop"
python3 rotation_tracker.py --log POWL enter 85.20 "Seleção do screener de momentum"
python3 rotation_tracker.py --stats # Estatísticas de negociação (taxa de acerto, ganho/perda médio, etc.)
python3 rotation_tracker.py --json # Saída JSON
Documento de Estratégia
Veja docs/finance/STRATEGY.md para a documentação completa da estratégia de rotação de momentum.
Notas
- Usa AlphaVantage para preços históricos (5 chamadas/min no nível gratuito, atraso de 3s entre chamadas)
- Dados do portfólio armazenados como JSON em
~/hex/skills/portfolio/portfolio.json - SPAXX (fundo do mercado monetário) é excluído das análises