Indicadores Econômicos 2025: Como SELIC, IPCA e IGP-M Afetam Investimentos

Domine indicadores econômicos brasileiros! Aprenda como SELIC, IPCA, IGP-M, CDI impactam seus investimentos. Guia completo para decisões macroeconômicas inteligentes ✓

Categoria:Economia e Investimentos • Análise Macroeconômica
19 min
Atualizado em:
Expertise: Análise macroeconômica com 8+ anos de experiência no mercado brasileiro
Tags:
Indicadores EconômicosSELICIPCAEconomiaInvestimentosPolítica MonetáriaInflaçãoMacroeconomia

Neste artigo

Indicadores Econômicos 2025: Como SELIC, IPCA e IGP-M Afetam Investimentos

Os indicadores econômicos brasileiros são fundamentais para decisões de investimento inteligentes. Aprenda como SELIC, IPCA, IGP-M e outros afetam suas aplicações e como monitorá-los para maximizar retornos em 2025.

Publicado em 22 de agosto, 2025

Por Que Indicadores Econômicos São Cruciais para Investidores?

Os indicadores econômicos direcionam o comportamento dos mercados financeiros e determinam a atratividade relativa entre diferentes classes de ativos. Entender sua dinâmica é essencial para timing e alocação de recursos.

Em termos práticos: Quando a SELIC sobe, renda fixa fica mais atrativa que ações. Quando inflação acelera, ativos reais podem ser melhores que nominais.

Impactos Diretos nos seus Investimentos:

  1. SELIC determina retorno da renda fixa
  2. Inflação afeta poder de compra real
  3. PIB influencia crescimento das empresas
  4. Câmbio impacta exportadoras e importadoras
  5. Desemprego afeta consumo e varejo

3. Gestão de Riscos

  • Proteção contra inflação
  • Alocação entre ativos
  • Timing de investimentos

Principais Indicadores Econômicos

1. Taxa SELIC

A SELIC (Sistema Especial de Liquidação e Custódia) é a taxa básica de juros da economia brasileira, definida pelo COPOM (Comitê de Política Monetária).

Como Funciona a SELIC

import requests
from datetime import datetime, timedelta

def obter_selic_atual():
    """Obtém taxa SELIC atual via brapi.dev"""
    
    try:
        url = "https://brapi.dev/api/prime-rate?token=SEU_TOKEN"
        response = requests.get(url)
        data = response.json()
        
        if data and 'prime-rate' in data:
            selic_dados = data['prime-rate']
            
            return {
                'taxa_atual': selic_dados[-1]['value'],
                'data_atualizacao': selic_dados[-1]['date'],
                'historico_6m': selic_dados[-6:],  # Últimos 6 meses
                'tendencia': calcular_tendencia_selic(selic_dados[-12:])
            }
    except Exception as e:
        print(f"Erro ao obter SELIC: {e}")
        return None

def calcular_tendencia_selic(historico):
    """Calcula tendência da SELIC"""
    if len(historico) < 2:
        return "Estável"
    
    valor_atual = historico[-1]['value']
    valor_anterior = historico[-2]['value']
    
    if valor_atual > valor_anterior + 0.25:
        return "Alta"
    elif valor_atual < valor_anterior - 0.25:
        return "Baixa"
    else:
        return "Estável"

# Exemplo de uso
selic_info = obter_selic_atual()

if selic_info:
    print("💰 TAXA SELIC")
    print("=" * 30)
    print(f"Taxa Atual: {selic_info['taxa_atual']:.2f}% a.a.")
    print(f"Última Atualização: {selic_info['data_atualizacao']}")
    print(f"Tendência: {selic_info['tendencia']}")
    
    print(f"\n📊 Histórico 6 meses:")
    for periodo in selic_info['historico_6m']:
        print(f"  {periodo['date']}: {periodo['value']:.2f}%")

Impactos da SELIC nos Investimentos

SELIC Alta (acima de 10%):

  • Renda Fixa: CDB, LCI/LCA, Tesouro mais atrativo
  • Ações: Competição por capital, menor apetite risco
  • FIIs: Yields perdem atratividade relativa
  • Dólar: Real pode se fortalecer

SELIC Baixa (abaixo de 6%):

  • Renda Fixa: Rentabilidade reduzida
  • Ações: Maior busca por rentabilidade
  • FIIs: Yields mais atrativos vs. renda fixa
  • Dólar: Real pode se enfraquecer

2. IPCA (Inflação)

O IPCA (Índice Nacional de Preços ao Consumidor Amplo) é o indicador oficial de inflação do Brasil, usado para metas do governo.

def obter_ipca_dados():
    """Obtém dados do IPCA via brapi.dev"""
    
    try:
        url = "https://brapi.dev/api/inflation?token=SEU_TOKEN"
        response = requests.get(url)
        data = response.json()
        
        if data and 'inflation' in data:
            ipca_dados = data['inflation']
            
            # Calcular inflação acumulada 12 meses
            ultimos_12m = ipca_dados[-12:]
            inflacao_12m = calcular_inflacao_acumulada(ultimos_12m)
            
            return {
                'ipca_mensal': ipca_dados[-1]['value'],
                'data_referencia': ipca_dados[-1]['date'],
                'ipca_12m': inflacao_12m,
                'historico_12m': ultimos_12m,
                'meta_governo': 3.25,  # Meta central 2024
                'banda_superior': 4.75,  # Teto da meta
                'banda_inferior': 1.75   # Piso da meta
            }
    except Exception as e:
        print(f"Erro ao obter IPCA: {e}")
        return None

def calcular_inflacao_acumulada(historico_mensal):
    """Calcula inflação acumulada em 12 meses"""
    acumulado = 1.0
    
    for periodo in historico_mensal:
        acumulado *= (1 + periodo['value'] / 100)
    
    return (acumulado - 1) * 100

def analisar_cenario_inflacionario(ipca_dados):
    """Analisa cenário inflacionário"""
    
    ipca_12m = ipca_dados['ipca_12m']
    meta = ipca_dados['meta_governo']
    teto = ipca_dados['banda_superior']
    piso = ipca_dados['banda_inferior']
    
    if ipca_12m > teto:
        cenario = {
            'status': 'ACIMA DA META',
            'cor': 'vermelho',
            'descricao': 'Inflação acima do teto, pressão para alta da SELIC',
            'impacto_investimentos': 'Favor renda fixa, cuidado com ações'
        }
    elif ipca_12m < piso:
        cenario = {
            'status': 'ABAIXO DA META',
            'cor': 'azul',
            'descricao': 'Inflação baixa, espaço para corte de juros',
            'impacto_investimentos': 'Favor ações e ativos de risco'
        }
    elif piso <= ipca_12m <= teto:
        cenario = {
            'status': 'DENTRO DA META',
            'cor': 'verde',
            'descricao': 'Inflação controlada, SELIC estável',
            'impacto_investimentos': 'Cenário favorável para diversificação'
        }
    else:
        distancia_meta = abs(ipca_12m - meta)
        if distancia_meta < 0.5:
            cenario = {
                'status': 'PRÓXIMO DA META',
                'cor': 'amarelo',
                'descricao': 'Inflação próxima ao centro da meta',
                'impacto_investimentos': 'Cenário estável'
            }
        else:
            cenario = {
                'status': 'DISTANTE DA META',
                'cor': 'laranja',
                'descricao': 'Inflação se afastando da meta',
                'impacto_investimentos': 'Atenção às mudanças de política monetária'
            }
    
    return cenario

# Exemplo de análise IPCA
ipca_info = obter_ipca_dados()

if ipca_info:
    print("📈 IPCA - INFLAÇÃO")
    print("=" * 30)
    print(f"IPCA Mensal: {ipca_info['ipca_mensal']:.2f}%")
    print(f"IPCA 12 meses: {ipca_info['ipca_12m']:.2f}%")
    print(f"Meta do Governo: {ipca_info['meta_governo']:.2f}%")
    
    cenario = analisar_cenario_inflacionario(ipca_info)
    print(f"\nCenário: {cenario['status']}")
    print(f"Análise: {cenario['descricao']}")
    print(f"Impacto: {cenario['impacto_investimentos']}")

3. IGP-M (Índice Geral de Preços)

O IGP-M é usado principalmente em contratos de aluguel e alguns investimentos. Tende a ser mais volátil que o IPCA.

def comparar_indices_inflacao():
    """Compara IPCA vs IGP-M"""
    
    # Dados históricos comparativos (exemplo)
    comparacao = {
        'periodo': '2023',
        'ipca': 4.62,
        'igpm': 5.45,
        'diferenca': 0.83,
        'caracteristicas': {
            'ipca': {
                'foco': 'Famílias 1-40 salários mínimos',
                'peso_alimentacao': 23.12,
                'peso_transporte': 18.77,
                'uso_principal': 'Meta de inflação do governo'
            },
            'igpm': {
                'foco': 'Preços no atacado, construção civil',
                'peso_atacado': 60,
                'peso_varejo': 30,
                'uso_principal': 'Contratos de aluguel'
            }
        }
    }
    
    return comparacao

def calcular_impacto_carteira_inflacao(carteira, ipca_atual, igpm_atual):
    """Calcula impacto da inflação na carteira"""
    
    impactos = []
    
    for ativo in carteira:
        tipo = ativo['tipo']
        valor = ativo['valor']
        
        if tipo == 'CDB_PRE':
            # CDB pré-fixado perde com inflação alta
            rentabilidade_real = ativo['taxa'] - ipca_atual
            impacto = {
                'ativo': ativo['nome'],
                'tipo': 'Renda Fixa Pré',
                'rentabilidade_real': rentabilidade_real,
                'status': 'Positiva' if rentabilidade_real > 0 else 'Negativa',
                'recomendacao': 'Trocar por pós-fixado' if rentabilidade_real < 2 else 'Manter'
            }
        
        elif tipo == 'TESOURO_IPCA':
            # Tesouro IPCA+ protegido da inflação
            impacto = {
                'ativo': ativo['nome'],
                'tipo': 'Renda Fixa Inflação',
                'rentabilidade_real': ativo['taxa_real'],
                'status': 'Protegida',
                'recomendacao': 'Excelente proteção'
            }
        
        elif tipo == 'ACAO':
            # Ações podem se beneficiar de inflação moderada
            impacto = {
                'ativo': ativo['nome'],
                'tipo': 'Renda Variável',
                'rentabilidade_real': 'Variável',
                'status': 'Moderada' if ipca_atual < 6 else 'Atenção',
                'recomendacao': 'Focar empresas com pricing power'
            }
        
        elif tipo == 'FII':
            # FIIs podem se beneficiar com aluguéis indexados ao IGP-M
            impacto = {
                'ativo': ativo['nome'],
                'tipo': 'Fundo Imobiliário',
                'rentabilidade_real': f'Benefício IGP-M: {igpm_atual:.1f}%',
                'status': 'Positiva',
                'recomendacao': 'Bom hedge inflacionário'
            }
        
        impactos.append(impacto)
    
    return impactos

# Exemplo de carteira
carteira_exemplo = [
    {'nome': 'CDB Banco X', 'tipo': 'CDB_PRE', 'valor': 50000, 'taxa': 12.5},
    {'nome': 'Tesouro IPCA+ 2029', 'tipo': 'TESOURO_IPCA', 'valor': 30000, 'taxa_real': 5.8},
    {'nome': 'PETR4', 'tipo': 'ACAO', 'valor': 20000},
    {'nome': 'HGLG11', 'tipo': 'FII', 'valor': 15000}
]

# Análise de impacto
impactos_inflacao = calcular_impacto_carteira_inflacao(carteira_exemplo, 4.5, 5.2)

print("\n💰 IMPACTO INFLAÇÃO NA CARTEIRA")
print("=" * 50)

for impacto in impactos_inflacao:
    print(f"\n{impacto['ativo']} ({impacto['tipo']}):")
    print(f"  Status: {impacto['status']}")
    print(f"  Rentabilidade Real: {impacto['rentabilidade_real']}")
    print(f"  Recomendação: {impacto['recomendacao']}")

4. CDI (Certificado de Depósito Interbancário)

O CDI é referência para investimentos de renda fixa privada, acompanhando de perto a SELIC.

def analisar_cdi_vs_selic():
    """Analisa relação CDI vs SELIC"""
    
    # Dados comparativos (exemplo)
    dados_comparativos = {
        'selic_atual': 11.75,
        'cdi_atual': 11.65,
        'diferenca': 0.10,
        'historico': [
            {'periodo': '2024-01', 'selic': 11.75, 'cdi': 11.65},
            {'periodo': '2023-12', 'selic': 11.75, 'cdi': 11.65},
            {'periodo': '2023-11', 'selic': 11.75, 'cdi': 11.65}
        ]
    }
    
    # Calcular spread médio
    spreads = [abs(h['selic'] - h['cdi']) for h in dados_comparativos['historico']]
    spread_medio = sum(spreads) / len(spreads)
    
    return {
        'dados': dados_comparativos,
        'spread_medio': spread_medio,
        'relacao': 'CDI tradicionalmente 0.1-0.2% abaixo da SELIC'
    }

def calcular_rentabilidade_cdi(valor_inicial, percentual_cdi, periodo_dias):
    """Calcula rentabilidade baseada no CDI"""
    
    cdi_anual = 11.65  # Exemplo: CDI atual
    cdi_aplicado = cdi_anual * (percentual_cdi / 100)  # Ex: 100% do CDI
    
    # Fórmula de juros compostos com CDI
    taxa_periodo = (1 + cdi_aplicado / 100) ** (periodo_dias / 365) - 1
    valor_final = valor_inicial * (1 + taxa_periodo)
    
    return {
        'valor_inicial': valor_inicial,
        'valor_final': valor_final,
        'rendimento': valor_final - valor_inicial,
        'rentabilidade_percentual': taxa_periodo * 100,
        'cdi_aplicado': cdi_aplicado,
        'periodo_dias': periodo_dias
    }

# Exemplo de cálculo CDI
rendimento_cdi = calcular_rentabilidade_cdi(100000, 100, 365)  # R$ 100k, 100% CDI, 1 ano

print("\n💳 ANÁLISE CDI")
print("=" * 30)
print(f"Investimento: R$ {rendimento_cdi['valor_inicial']:,.2f}")
print(f"CDI Aplicado: {rendimento_cdi['cdi_aplicado']:.2f}% a.a.")
print(f"Período: {rendimento_cdi['periodo_dias']} dias")
print(f"Valor Final: R$ {rendimento_cdi['valor_final']:,.2f}")
print(f"Rendimento: R$ {rendimento_cdi['rendimento']:,.2f}")
print(f"Rentabilidade: {rendimento_cdi['rentabilidade_percentual']:.2f}%")

Monitoramento Integrado de Indicadores

Dashboard Macroeconômico

class DashboardMacroeconomico:
    def __init__(self, token):
        self.token = token
        self.indicadores = {}
    
    def atualizar_todos_indicadores(self):
        """Atualiza todos os indicadores econômicos"""
        
        print("Atualizando indicadores...")
        
        # SELIC
        self.indicadores['selic'] = self.obter_selic()
        
        # IPCA
        self.indicadores['ipca'] = self.obter_ipca()
        
        # CDI (estimado baseado na SELIC)
        if self.indicadores['selic']:
            self.indicadores['cdi'] = {
                'taxa': self.indicadores['selic']['taxa'] - 0.1,
                'data': self.indicadores['selic']['data']
            }
        
        # Cenário consolidado
        self.indicadores['cenario'] = self.analisar_cenario_macro()
        
        return self.indicadores
    
    def obter_selic(self):
        """Obtém dados da SELIC"""
        try:
            url = f"https://brapi.dev/api/prime-rate?token={self.token}"
            response = requests.get(url)
            data = response.json()
            
            if data and 'prime-rate' in data:
                ultimo = data['prime-rate'][-1]
                return {
                    'taxa': ultimo['value'],
                    'data': ultimo['date']
                }
        except:
            return None
    
    def obter_ipca(self):
        """Obtém dados do IPCA"""
        try:
            url = f"https://brapi.dev/api/inflation?token={self.token}"
            response = requests.get(url)
            data = response.json()
            
            if data and 'inflation' in data:
                ultimos_12m = data['inflation'][-12:]
                ipca_acumulado = calcular_inflacao_acumulada(ultimos_12m)
                
                return {
                    'mensal': data['inflation'][-1]['value'],
                    'acumulado_12m': ipca_acumulado,
                    'data': data['inflation'][-1]['date']
                }
        except:
            return None
    
    def analisar_cenario_macro(self):
        """Analisa cenário macroeconômico consolidado"""
        
        if not self.indicadores.get('selic') or not self.indicadores.get('ipca'):
            return {'status': 'DADOS INSUFICIENTES'}
        
        selic = self.indicadores['selic']['taxa']
        ipca_12m = self.indicadores['ipca']['acumulado_12m']
        
        taxa_real = selic - ipca_12m
        
        # Análise de cenário
        if taxa_real > 4:
            cenario = {
                'status': 'JUROS ALTOS',
                'taxa_real': taxa_real,
                'descricao': 'Taxa real alta, favorável à renda fixa',
                'recomendacao': 'Aumentar posição em renda fixa',
                'impacto_acoes': 'Negativo',
                'impacto_fiis': 'Negativo'
            }
        elif taxa_real > 2:
            cenario = {
                'status': 'JUROS MODERADOS',
                'taxa_real': taxa_real,
                'descricao': 'Taxa real adequada, cenário equilibrado',
                'recomendacao': 'Manter diversificação',
                'impacto_acoes': 'Neutro',
                'impacto_fiis': 'Neutro'
            }
        else:
            cenario = {
                'status': 'JUROS BAIXOS',
                'taxa_real': taxa_real,
                'descricao': 'Taxa real baixa, busca por renda variável',
                'recomendacao': 'Aumentar posição em ações e FIIs',
                'impacto_acoes': 'Positivo',
                'impacto_fiis': 'Positivo'
            }
        
        return cenario
    
    def gerar_relatorio(self):
        """Gera relatório consolidado"""
        
        relatorio = {
            'data_geracao': datetime.now().strftime('%d/%m/%Y %H:%M'),
            'indicadores': self.indicadores,
            'alertas': self.identificar_alertas(),
            'recomendacoes': self.gerar_recomendacoes()
        }
        
        return relatorio
    
    def identificar_alertas(self):
        """Identifica alertas importantes"""
        
        alertas = []
        
        if self.indicadores.get('ipca'):
            ipca_12m = self.indicadores['ipca']['acumulado_12m']
            
            if ipca_12m > 4.75:  # Teto da meta
                alertas.append({
                    'tipo': 'INFLACAO_ALTA',
                    'mensagem': f'IPCA {ipca_12m:.1f}% acima do teto da meta (4.75%)',
                    'severidade': 'ALTA'
                })
            elif ipca_12m < 1.75:  # Piso da meta
                alertas.append({
                    'tipo': 'INFLACAO_BAIXA',
                    'mensagem': f'IPCA {ipca_12m:.1f}% abaixo do piso da meta (1.75%)',
                    'severidade': 'MEDIA'
                })
        
        if self.indicadores.get('selic'):
            selic = self.indicadores['selic']['taxa']
            
            if selic > 13:
                alertas.append({
                    'tipo': 'SELIC_MUITO_ALTA',
                    'mensagem': f'SELIC {selic:.1f}% em nível muito elevado',
                    'severidade': 'ALTA'
                })
            elif selic < 3:
                alertas.append({
                    'tipo': 'SELIC_MUITO_BAIXA',
                    'mensagem': f'SELIC {selic:.1f}% em nível muito baixo',
                    'severidade': 'MEDIA'
                })
        
        return alertas
    
    def gerar_recomendacoes(self):
        """Gera recomendações de alocação"""
        
        if not self.indicadores.get('cenario'):
            return []
        
        cenario = self.indicadores['cenario']['status']
        
        if cenario == 'JUROS ALTOS':
            return [
                'Aumentar alocação em renda fixa (60-70%)',
                'Reduzir exposição a ações de crescimento',
                'Evitar FIIs com yields baixos',
                'Considerar Tesouro SELIC para liquidez'
            ]
        elif cenario == 'JUROS BAIXOS':
            return [
                'Aumentar alocação em ações (50-60%)',
                'Buscar FIIs com yields atrativos',
                'Reduzir renda fixa para o mínimo estratégico',
                'Considerar ações de crescimento'
            ]
        else:
            return [
                'Manter alocação equilibrada (40% RF, 40% RV, 20% FIIs)',
                'Diversificar entre setores defensivos e cíclicos',
                'Acompanhar evolução dos indicadores',
                'Rebalancear conforme mudanças macro'
            ]

# Exemplo de uso do dashboard
dashboard = DashboardMacroeconomico('SEU_TOKEN')
indicadores = dashboard.atualizar_todos_indicadores()
relatorio = dashboard.gerar_relatorio()

print("🌍 DASHBOARD MACROECONÔMICO")
print("=" * 50)
print(f"Data: {relatorio['data_geracao']}")

if indicadores.get('selic'):
    print(f"\n💰 SELIC: {indicadores['selic']['taxa']:.2f}%")

if indicadores.get('ipca'):
    print(f"📊 IPCA (12m): {indicadores['ipca']['acumulado_12m']:.2f}%")

if indicadores.get('cdi'):
    print(f"💳 CDI: {indicadores['cdi']['taxa']:.2f}%")

if indicadores.get('cenario'):
    cenario = indicadores['cenario']
    print(f"\n🎯 CENÁRIO: {cenario['status']}")
    print(f"Taxa Real: {cenario['taxa_real']:.2f}%")
    print(f"Descrição: {cenario['descricao']}")

print(f"\n⚠️ ALERTAS:")
for alerta in relatorio['alertas']:
    print(f"  • {alerta['mensagem']} (Severidade: {alerta['severidade']})")

print(f"\n💡 RECOMENDAÇÕES:")
for rec in relatorio['recomendacoes']:
    print(f"  • {rec}")

Estratégias por Cenário Macroeconômico

Alocação Tática de Ativos

def estrategia_por_cenario(cenario_macro, valor_carteira=100000):
    """Define estratégia de alocação baseada no cenário"""
    
    estrategias = {
        'JUROS_ALTOS_INFLACAO_CONTROLADA': {
            'nome': 'Defensiva - Renda Fixa',
            'alocacao': {
                'tesouro_selic': 30,
                'cdb_di': 25,
                'tesouro_ipca': 15,
                'acoes_defensivas': 20,
                'fiis': 10
            },
            'justificativa': 'Juros altos favorecem renda fixa',
            'expectativa_retorno': 'SELIC - 1%'
        },
        
        'JUROS_BAIXOS_INFLACAO_CONTROLADA': {
            'nome': 'Agressiva - Renda Variável',
            'alocacao': {
                'acoes_crescimento': 35,
                'acoes_value': 25,
                'fiis': 20,
                'tesouro_ipca': 10,
                'reserva_liquidez': 10
            },
            'justificativa': 'Busca por yield em cenário de juros baixos',
            'expectativa_retorno': 'IPCA + 6-8%'
        },
        
        'JUROS_ALTOS_INFLACAO_ALTA': {
            'nome': 'Proteção Inflacionária',
            'alocacao': {
                'tesouro_ipca': 40,
                'acoes_commodities': 25,
                'fiis': 15,
                'tesouro_selic': 15,
                'ouro_dolar': 5
            },
            'justificativa': 'Proteção contra inflação alta',
            'expectativa_retorno': 'IPCA + 3-5%'
        },
        
        'CENARIO_INCERTO': {
            'nome': 'Balanceada - Diversificação',
            'alocacao': {
                'tesouro_ipca': 25,
                'acoes_diversificadas': 30,
                'fiis': 20,
                'cdb_di': 15,
                'reserva': 10
            },
            'justificativa': 'Diversificação em cenário incerto',
            'expectativa_retorno': 'CDI + 2-4%'
        }
    }
    
    return estrategias.get(cenario_macro, estrategias['CENARIO_INCERTO'])

def simular_carteira_cenarios(valor_inicial, cenario_atual):
    """Simula performance da carteira em diferentes cenários"""
    
    estrategia = estrategia_por_cenario(cenario_atual, valor_inicial)
    
    # Simulação de retornos (12 meses)
    retornos_esperados = {
        'tesouro_selic': 11.75,
        'cdb_di': 11.65,
        'tesouro_ipca': 15.5,  # IPCA + taxa real
        'acoes_defensivas': 12.0,
        'acoes_crescimento': 15.0,
        'acoes_value': 13.0,
        'acoes_commodities': 10.0,
        'acoes_diversificadas': 13.5,
        'fiis': 11.0,
        'reserva_liquidez': 10.0,
        'reserva': 10.0,
        'ouro_dolar': 8.0
    }
    
    simulacao = {
        'estrategia': estrategia['nome'],
        'valor_inicial': valor_inicial,
        'alocacao_detalhada': {},
        'valor_final_esperado': 0,
        'retorno_total_esperado': 0
    }
    
    valor_total_final = 0
    
    for ativo, percentual in estrategia['alocacao'].items():
        valor_ativo = valor_inicial * (percentual / 100)
        retorno_ativo = retornos_esperados.get(ativo, 10) / 100
        valor_final_ativo = valor_ativo * (1 + retorno_ativo)
        
        simulacao['alocacao_detalhada'][ativo] = {
            'percentual': percentual,
            'valor_inicial': valor_ativo,
            'retorno_esperado': retorno_ativo * 100,
            'valor_final': valor_final_ativo,
            'ganho': valor_final_ativo - valor_ativo
        }
        
        valor_total_final += valor_final_ativo
    
    simulacao['valor_final_esperado'] = valor_total_final
    simulacao['retorno_total_esperado'] = ((valor_total_final / valor_inicial) - 1) * 100
    
    return simulacao

# Exemplo de simulação
cenario_exemplo = 'JUROS_ALTOS_INFLACAO_CONTROLADA'
simulacao_resultado = simular_carteira_cenarios(100000, cenario_exemplo)

print(f"\n💼 SIMULAÇÃO DE CARTEIRA")
print("=" * 50)
print(f"Cenário: {cenario_exemplo}")
print(f"Estratégia: {simulacao_resultado['estrategia']}")
print(f"Valor Inicial: R$ {simulacao_resultado['valor_inicial']:,.2f}")
print(f"Valor Final Esperado: R$ {simulacao_resultado['valor_final_esperado']:,.2f}")
print(f"Retorno Esperado: {simulacao_resultado['retorno_total_esperado']:+.2f}%")

print(f"\n📊 ALOCAÇÃO DETALHADA:")
for ativo, dados in simulacao_resultado['alocacao_detalhada'].items():
    print(f"\n{ativo.replace('_', ' ').title()}: {dados['percentual']}%")
    print(f"  Valor: R$ {dados['valor_inicial']:,.2f}")
    print(f"  Retorno: {dados['retorno_esperado']:.2f}%")
    print(f"  Ganho: R$ {dados['ganho']:+,.2f}")

Alertas e Automação

Sistema de Monitoramento Automático

def configurar_alertas_macro(parametros_alerta):
    """Configura alertas para indicadores macroeconômicos"""
    
    alertas_config = {
        'selic': {
            'limite_superior': parametros_alerta.get('selic_max', 15),
            'limite_inferior': parametros_alerta.get('selic_min', 2),
            'variacao_maxima': parametros_alerta.get('selic_variacao', 0.75)  # 0.75 p.p.
        },
        'ipca': {
            'limite_superior': parametros_alerta.get('ipca_max', 4.75),  # Teto da meta
            'limite_inferior': parametros_alerta.get('ipca_min', 1.75),  # Piso da meta
            'variacao_maxima': parametros_alerta.get('ipca_variacao', 1.0)
        },
        'taxa_real': {
            'limite_inferior': parametros_alerta.get('taxa_real_min', 2),
            'limite_superior': parametros_alerta.get('taxa_real_max', 6)
        }
    }
    
    return alertas_config

def verificar_alertas_indicadores(indicadores_atuais, alertas_config):
    """Verifica se algum alerta deve ser disparado"""
    
    alertas_disparados = []
    
    # Verificar SELIC
    if indicadores_atuais.get('selic'):
        selic = indicadores_atuais['selic']['taxa']
        config_selic = alertas_config['selic']
        
        if selic > config_selic['limite_superior']:
            alertas_disparados.append({
                'tipo': 'SELIC_ALTA',
                'mensagem': f'SELIC {selic:.2f}% acima do limite ({config_selic["limite_superior"]}%)',
                'acao_sugerida': 'Aumentar renda fixa'
            })
        elif selic < config_selic['limite_inferior']:
            alertas_disparados.append({
                'tipo': 'SELIC_BAIXA',
                'mensagem': f'SELIC {selic:.2f}% abaixo do limite ({config_selic["limite_inferior"]}%)',
                'acao_sugerida': 'Aumentar renda variável'
            })
    
    # Verificar IPCA
    if indicadores_atuais.get('ipca'):
        ipca = indicadores_atuais['ipca']['acumulado_12m']
        config_ipca = alertas_config['ipca']
        
        if ipca > config_ipca['limite_superior']:
            alertas_disparados.append({
                'tipo': 'INFLACAO_ALTA',
                'mensagem': f'IPCA {ipca:.2f}% acima da meta ({config_ipca["limite_superior"]}%)',
                'acao_sugerida': 'Aumentar proteção inflacionária'
            })
        elif ipca < config_ipca['limite_inferior']:
            alertas_disparados.append({
                'tipo': 'INFLACAO_BAIXA',
                'mensagem': f'IPCA {ipca:.2f}% abaixo da meta ({config_ipca["limite_inferior"]}%)',
                'acao_sugerida': 'Reduzir proteção inflacionária'
            })
    
    return alertas_disparados

def enviar_alerta_telegram_macro(alertas, bot_token, chat_id):
    """Envia alertas macroeconômicos via Telegram"""
    
    if not alertas:
        return
    
    mensagem = "🌍 <b>ALERTAS MACROECONÔMICOS</b>\n\n"
    
    for alerta in alertas:
        emoji = "🔴" if "ALTA" in alerta['tipo'] else "🔵" if "BAIXA" in alerta['tipo'] else "⚠️"
        mensagem += f"{emoji} <b>{alerta['tipo'].replace('_', ' ')}</b>\n"
        mensagem += f"   {alerta['mensagem']}\n"
        mensagem += f"   💡 <i>{alerta['acao_sugerida']}</i>\n\n"
    
    # Código para enviar via Telegram seria implementado aqui
    print(f"📱 Enviando alerta: {mensagem}")

# Exemplo de configuração de alertas
config_alertas = configurar_alertas_macro({
    'selic_max': 14,
    'selic_min': 3,
    'ipca_max': 4.5,
    'ipca_min': 2.0
})

# Verificar alertas com dados atuais
alertas_atuais = verificar_alertas_indicadores(indicadores, config_alertas)

if alertas_atuais:
    print("\n🚨 ALERTAS DISPARADOS:")
    for alerta in alertas_atuais:
        print(f"  • {alerta['mensagem']}")
        print(f"    Ação: {alerta['acao_sugerida']}")
else:
    print("\n✅ Nenhum alerta disparado - indicadores dentro dos parâmetros")

Conclusão

O acompanhamento de indicadores econômicos é fundamental para tomar decisões de investimento bem informadas. A brapi.dev facilita esse monitoramento ao disponibilizar dados atualizados de SELIC, IPCA e outros indicadores essenciais.

Pontos-Chave:

  1. SELIC direciona a atratividade entre renda fixa e variável
  2. IPCA impacta a rentabilidade real dos investimentos
  3. Taxa real (SELIC - IPCA) é crucial para alocação
  4. Monitoramento contínuo permite ajustes táticos
  5. Automação de alertas ajuda na gestão ativa

Estratégias por Cenário:

  • Juros Altos: Favor renda fixa e Tesouro SELIC
  • Juros Baixos: Favor ações e FIIs com bons yields
  • Inflação Alta: Tesouro IPCA+ e ativos reais
  • Incerteza: Diversificação balanceada

Próximos Passos:

  • Explore nossa API para dados macroeconômicos atualizados
  • Use nossa plataforma para análises integradas
  • Implemente dashboards de monitoramento automático
  • Configure alertas para mudanças importantes

Recursos Adicionais:

Lembre-se: O cenário macroeconômico muda constantemente. Mantenha-se atualizado e ajuste sua estratégia conforme necessário, sempre respeitando seu perfil de risco e objetivos de longo prazo!

Artigos Relacionados