image

Access unlimited bootcamps and 650+ courses

50
%OFF
Article image
Izairton Vasconcelos
Izairton Vasconcelos26/12/2024 11:35
Share

Simulação Econômica com Python: Analisando a Alta do Dólar e o Impacto nas Reservas Cambiais

    Vivemos um momento de grande apreensão no cenário econômico brasileiro. As constantes altas do dólar e a queima regular do estoque de nossas reservas cambiais pelo Banco Central, acendeu não só o sinal vermelho do perigo da inflação como também os sinais da desordem e insegurança.

    Diante desse cenário, este artigo tem como objetivo apresentar um script em Python que simulará diferentes situações da alta do dólar e da queima das reservas cambiais pelo Governo Federal.

    A ideia é bem simples. A partir das recentes altas do dólar e de algumas estratégias contracionistas prováveis do governo, o script retornará uma simulação indicando o quanto de estoque será queimado para conter a alta da moeda americana.

    A lógica aplicada no script também poderá servir para simular eventos de capitais de giro onerosos frente aos juros pagos a terceiros pela redução de reservas financeiras. O script em Python demonstrará através de tabelas, referências visuais e textos explicativos a problemática discutida.


    O Cenário Atual e o Modelo Matemático


    image


    Um dos principais sinais de que uma economia vai indo de mal a pior ou pelo menos apontado para o abismo é quando um governo resolve queimar suas reservas cambiais para conter a alta de outra moeda, em nosso caso o dólar, sem se importar com a verdadeira causa.

    O ponto chave aparece quando o Banco Central intervém no mercado para conter a alta do dólar utilizando para isso a torra de dólares reduzindo nossas reservas cambiais.

    Usaremos nesse modelo a regressão linear para definir as cotações futuras da moeda considerando as altas passadas dos últimos dias. Em seguida, utilizaremos de diferentes estratégias do governo para simular a evolução das reservas cambiais e sua queima no mercado. Além disso, ajustaremos o valor do dólar com base na estratégia e no sentimento de mercado, conceito que adotaremos como sendo outros fatores externos influenciadores do câmbio.

    Criação de um Script em Python

    O desenvolvimento do modelo para simular esse cenário partiu inicialmente da necessidade de prever os valores futuros do dólar, dado as constantes altas apresentadas, e o impacto nas reservas cambiais do Brasil.

    Como as reservas estão sendo queimadas continuamente para acalmar o mercado e a fuga de capitais, o modelo também incluiu prováveis estratégias que poderiam justificar a queima dos dólares por parte do governo federal. Essas estratégias foram definidas como: Moderada, Agressiva, Inatividade e Padrão.

    Para não ficar apenas no campo governamental, optou-se também pela inclusão de um fator que evidenciasse as interferências externas diretamente no mercado, refletindo neste, um estado otimista ou pessimista diante da evolução do dólar e da eficácia da queima de reservas.

    O trecho do código que sinaliza esse entendimento está evidenciado a partir da linha 107, configurações iniciais do script, reproduzido a seguir:


    # Configurações iniciais do script
    
    dollar_values = [6.00, 6.05, 6.10, 6.15, 6.20] # Valores históricos do dólar
    initial_reserves = 170 # Reservas iniciais (em bilhões de dólares)
    burn_rate = 1.7 # Taxa diária de queima de reservas (em bilhões de dólares)
    days_to_predict = 10 # Número de dias para previsão
    strategies = ['moderada', 'agressiva', 'inatividade', 'padrão'] # Estratégias simuladas
    market_sentiment = -0.5 # Sentimento de mercado: -1 (piora), 0 (neutro), 1 (melhora)
     
    

    Por fim, o script retornará cada estratégia com um texto explicativo da discrepância entre a alta do dólar e a torra de reservas cambiais, em consonância com o sentimento do mercado de piora, melhora ou neutralidade.

    O Script em Python

     

    # Importando as bibliotecas necessárias
    import numpy as np  # Biblioteca para manipulação de arrays numéricos
    import pandas as pd  # Biblioteca para manipulação e análise de dados em formato tabular
    from sklearn.linear_model import LinearRegression  # Regressão Linear para previsão do dólar futuro
    import matplotlib.pyplot as plt  # Biblioteca para geração de gráficos
    
    
    # Função que realiza a simulação de estratégias cambiais e gera mensagens explicativas
    def simulate_with_message(dollar_values, initial_reserves, burn_rate, days_to_predict, strategy, market_sentiment):
      """
      Simula a evolução das reservas cambiais com base em diferentes estratégias
      e inclui o impacto do sentimento de mercado (market_sentiment).
      
      Parâmetros:
          dollar_values (list): Valores históricos do dólar.
          initial_reserves (float): Reservas iniciais (em bilhões de dólares).
          burn_rate (float): Taxa diária de queima de reservas (em bilhões de dólares).
          days_to_predict (int): Número de dias para previsão futura.
          strategy (str): Estratégia governamental ('moderada', 'agressiva', 'inatividade', 'padrão').
          market_sentiment (float): Sentimento de mercado (-1: piora, 0: neutro, 1: melhora).
          
      Retorna:
          tuple: (DataFrame com resultados simulados, mensagem explicativa)
      """
      # Criando o modelo de Regressão Linear para prever o dólar futuro
      X = np.array(range(len(dollar_values))).reshape(-1, 1)  # Dias passados como variável independente (X)
      y = np.array(dollar_values)  # Valores históricos do dólar como variável dependente (y)
      model = LinearRegression()  # Inicializa o modelo de Regressão Linear
      model.fit(X, y)  # Treina o modelo nos dados históricos
      future_days = np.array(range(len(dollar_values), len(dollar_values) + days_to_predict)).reshape(-1, 1)
      # Previsão de valores futuros do dólar
      predicted_dollar_values = model.predict(future_days)
    
    
      # Inicializa as reservas com o valor inicial
      reserves = [initial_reserves]
      # Combina os valores históricos do dólar
      dollar_trend = list(dollar_values)
    
    
      # Ajusta o valor do dólar com base na estratégia e no sentimento de mercado
      for day, dollar_value in enumerate(predicted_dollar_values):
          # Ajuste baseado na estratégia
          if strategy == 'moderada':
              adjusted_dollar = dollar_value * (1 + 0.001 * day)
          elif strategy == 'agressiva':
              adjusted_dollar = dollar_value * (1 - 0.002 * day)
          elif strategy == 'inatividade':
              adjusted_dollar = dollar_value * (1 + 0.003 * day)
          else:  # padrão
              adjusted_dollar = dollar_value
          
          # Ajuste adicional com base no sentimento de mercado
          adjusted_dollar *= (1 + market_sentiment * 0.01)  # Pequeno ajuste proporcional ao sentimento
          dollar_trend.append(adjusted_dollar)  # Adiciona o valor ajustado à tendência do dólar
    
    
      # Simula a evolução das reservas para cada dia futuro
      for day in range(days_to_predict):
          if strategy == 'moderada':
              burn = max(burn_rate - 0.1 * day, 0)  # Reduz a queima de reservas ao longo do tempo
          elif strategy == 'agressiva':
              burn = burn_rate * 1.5  # Intensifica a queima para conter o dólar
          elif strategy == 'inatividade':
              burn = 0  # Sem queima de reservas
          else:  # Estratégia padrão
              burn = burn_rate
          
          # Ajusta a eficácia da queima com base no sentimento de mercado
          burn *= (1 - market_sentiment * 0.1)  # Mercado positivo reduz a queima; negativo aumenta
          # Calcula o valor restante das reservas, garantindo que não fique negativo
          reserves.append(max(reserves[-1] - burn, 0))
      
      # Garante que "reserves" e "dollar_trend" tenham o mesmo comprimento
      while len(reserves) < len(dollar_trend):
          reserves.append(reserves[-1])
    
    
      # Cria um DataFrame com os resultados
      data = {
          "Day": list(range(len(dollar_trend))),  # Dias simulados
          "Dollar Value (R$)": dollar_trend,  # Valores do dólar (ajustados por estratégia)
          "Reserves (Billion USD)": reserves  # Reservas restantes
      }
      df = pd.DataFrame(data)
    
    
      # Mensagem explicativa para a estratégia usada
      if strategy == 'moderada':
          message = (
              f"Estratégia Moderada: A queima de reservas é gradualmente reduzida. "
              f"O sentimento de mercado é {'positivo' if market_sentiment > 0 else 'negativo' if market_sentiment < 0 else 'neutro'}."
          )
      elif strategy == 'agressiva':
          message = (
              f"Estratégia Agressiva: A queima de reservas é intensificada para conter o dólar. "
              f"O sentimento de mercado é {'positivo' if market_sentiment > 0 else 'negativo' if market_sentiment < 0 else 'neutro'}."
          )
      elif strategy == 'inatividade':
          message = (
              f"Estratégia de Inatividade: O governo opta por não intervir. "
              f"O sentimento de mercado é {'positivo' if market_sentiment > 0 else 'negativo' if market_sentiment < 0 else 'neutro'}."
          )
      else:
          message = (
              f"Estratégia Padrão: A queima de reservas ocorre a uma taxa fixa. "
              f"O sentimento de mercado é {'positivo' if market_sentiment > 0 else 'negativo' if market_sentiment < 0 else 'neutro'}."
          )
      
      # Retorna os dados simulados e a mensagem explicativa
      return df, message
    
    
    # Configurações iniciais do script
    dollar_values = [6.00, 6.05, 6.10, 6.15, 6.20]  # Valores históricos do dólar
    initial_reserves = 170  # Reservas iniciais (em bilhões de dólares)
    burn_rate = 1.7  # Taxa diária de queima de reservas (em bilhões de dólares)
    days_to_predict = 10  # Número de dias para previsão
    strategies = ['moderada', 'agressiva', 'inatividade', 'padrão']  # Estratégias simuladas
    market_sentiment = -0.5  # Sentimento de mercado: -1 (piora), 0 (neutro), 1 (melhora)
    
    
    # Simula cada estratégia e armazena os resultados
    results_with_messages = {
      strategy: simulate_with_message(
          dollar_values, 
          initial_reserves, 
          burn_rate, 
          days_to_predict, 
          strategy, 
          market_sentiment
      )
      for strategy in strategies
    }
    
    
    # Exibe os resultados e as mensagens para cada estratégia
    for strategy, (df, message) in results_with_messages.items():
      print(f"\n### Estratégia: {strategy.capitalize()} ###")
      print(message)
      print(df)
    
    
    # Gera o gráfico de reservas cambiais por estratégia
    plt.figure(figsize=(12, 8))
    for strategy, (df, _) in results_with_messages.items():
      plt.plot(df["Day"], df["Reserves (Billion USD)"], marker="o", label=f"Reservas ({strategy})")
    
    
    plt.title("Simulação de Reservas Cambiais com Estratégias e Sentimento de Mercado")
    plt.xlabel("Dia")
    plt.ylabel("Reservas (Bilhões USD)")
    plt.legend()
    plt.show()
    
    
    # Gera o gráfico de valores do dólar por estratégia
    plt.figure(figsize=(12, 8))
    for strategy, (df, _) in results_with_messages.items():
      plt.plot(df["Day"], df["Dollar Value (R$)"], marker="o", label=f"Dólar ({strategy})")
    
    
    plt.title("Simulação do Valor do Dólar com Estratégias e Sentimento de Mercado")
    plt.xlabel("Dia")
    plt.ylabel("Dólar (R$)")
    plt.legend()
    plt.show()
     
    

     

    Análise das Tabelas e Gráficos

      

    De posse das tabelas e gráficos gerados pelo script, verifica-se o seguinte:

     

    A) Tabelas


    1) Estratégia Agressiva

     

    - O governo queima muitas reservas rapidamente para conter o dólar.

    - A alta do dólar é a mais controlada entre todas as estratégias.

    - As reservas caem de US$ 170 bilhões para aproximadamente US$ 143 bilhões em 14 dias.

    - Conclui-se que a estratégia é eficaz no curto prazo, mas consome muitas reservas.

    image

    2) Estratégia de Inatividade

     

    - O governo não intervém no mercado cambial.

    - O dólar sobe mais rapidamente do que em qualquer outra estratégia.

    - As reservas permanecem constantes em US$ 170 bilhões.

    - Conclusão de que não há consumo de reservas, mas permite uma alta incontrolada do dólar.

    image

    3) Estratégia Moderada

     

    - O governo reduz gradualmente a queima de reservas ao longo do tempo.

    - O dólar sobe mais devagar que na inatividade, mas mais rápido que na estratégia agressiva.

    - As reservas caem para aproximadamente US$ 156,8 bilhões em 14 dias.

    - Conclusão de tentar equilibrar o controle do dólar e a preservação das reservas.

    image

    4) Estratégia Padrão

     

    - O governo queima reservas a uma taxa fixa diária.

    - O dólar é controlado de maneira moderada, com aumento gradual.

    - As reservas caem para aproximadamente US$ 152 bilhões em 14 dias.

    - A conclusão que se tira é que se oferece um controle mediano, mas consome reservas de forma consistente.

    image

    B) Gráficos

     

    1) Reservas Cambiais com Estratégias e Sentimento de Mercado

     

    O gráfico destaca o custo de cada estratégia em termos de reservas

    image

    2) Valor do Dólar com Estratégias e Sentimento de Mercado

     

    O gráfico deixa claro que a ausência de intervenção leva ao pior cenário para o dólar.

    image

    Conclusão

     

    O script desenvolvido em Python para simular um cenário de altas do dólar com concomitantes queimas de reservas cambiais demonstrou claramente eficiência nos resultados.

    O objetivo principal do retorno dos dados para uma análise mais abrangente da situação da queima de reservas, ficou evidente nas explicações e nas imagens fornecidas.

    A linguagem Python revela-se como uma excelente ferramenta gerencial, contribuindo prontamente para projetos de compreensão de valores no tempo combinados com decisões administrativas.

    A técnica mais uma vez confirma como o caminho curto para solução correta. Nesse caso específico, o script demonstrou que o antitérmico da torra não é a solução definitiva do problema da alta do dólar. É como aquele doente que sabe o remédio a tomar, mas prefere um paliativo a curar-se.

     

    www.linkedin.com/in/izairton-oliveira-de-vasconcelos-a1916351



     

    Share
    Comments (0)