Comparação de Índices

Este gráfico mostra a comparação do índice IBOVESPA, da bolsa brasileira B3, com os índices Dow Jones Industrial Average (DJI) e Nasdaq Composite (COMP). Enquanto no DJI houve um retorno de +18,73% e no COMP houve um retorno de +21,39%, no IBOVESPA houve um retorno de -11,93% para o ano de 2021.

Comparação dos Índices da Bolsas em 2021
Comparação dos Índices da Bolsas em 2021
Dados

Os dados dos índices foram obtidos na página WSJ Markets do The Wall Street Journal.

Programa

Abaixo está mostrado o código do programa, escrito em Python, que gera o gráfico:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun Jan  2 17:25:24 2022

@author: halley
"""

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
NASDAQ Composite Index (COMP) X Dow Jones Industrial Average Index (DJI) X IBOVESPA

Data source: https://www.wsj.com/market-data/stocks/us/indexes

Created on Tue Dec  7 17:24:43 2021

@author: halley
"""

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import os

# Directories
home_dir = os.path.expanduser("~")
data_dir = os.path.join(home_dir + "/R/mercado/WSJ/")
img_dir = os.path.join(home_dir + "/doctec/static/img/indexes/")
# Read Indexes Historical Data
dji = pd.read_csv(data_dir + "wsj_dji_HistoricalPrices.csv")
comp = pd.read_csv(data_dir + "wsj_comp_HistoricalPrices.csv")
ibov = pd.read_csv(data_dir + "wsj_ibovespa_HistoricalPrices.csv")
# Convert dates and sort
dji['Date'] = pd.to_datetime(dji['Date'], format="%m/%d/%y")
dji = dji.sort_values(by='Date')
comp['Date'] = pd.to_datetime(comp['Date'], format="%m/%d/%y")
comp = comp.sort_values(by='Date')
ibov['Date'] = pd.to_datetime(ibov['Date'], format="%m/%d/%y")
ibov = ibov.sort_values(by='Date')
# Return
dji['Return'] = 0
for i in range(len(dji)):
    dji.iloc[i,5] = ((dji.iloc[i,4]-dji.iloc[0,4])/dji.iloc[0,4])*100
comp['Return'] = 0
for i in range(len(comp)):
    comp.iloc[i,5] = ((comp.iloc[i,4]-comp.iloc[0,4])/comp.iloc[0,4])*100
ibov['Return'] = 0
for i in range(len(ibov)):
    ibov.iloc[i,5] = ((ibov.iloc[i,4]-ibov.iloc[0,4])/ibov.iloc[0,4])*100
# Indexes
dji.index = dji['Date']
del dji['Date']
comp.index = comp['Date']
del comp['Date']
ibov.index = ibov['Date']
del ibov['Date']
# Maximum values
max_date = max(dji.index).strftime("%Y-%m-%d")
# Plot
f = plt.figure()
f.set_figwidth(8)
f.set_figheight(4.5)
plt.style.use('seaborn')
plt.plot("Return", data=dji, label="Dow Jones Industrial Average (DJI)")
plt.plot("Return", data=comp, label="Nasdaq Composite (COMP)")
plt.plot("Return", data=ibov, label="IBOVESPA")
plt.title("Stock Indexes 2021")
plt.xlabel("Date")
plt.ylabel("Return %")
plt.legend(loc="best")
plt.grid(True)
plt.savefig(img_dir + "dji_comp_ibovespa_pct.png")
plt.close()