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
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.
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.
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.
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.
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
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.
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