Aplicações Financeiras no Python

Volta aos Exemplos

Você poderá baixar (downloding) uma planilha Excel em VBA tratando do mesmo assunto em (download da Planilha Excel-VBA)

import pandas as pd
import numpy as np

aplicacaoA = {
    'RentabilidadeA': [-0.02, -0.01, 0.00, 0.01, 0.02],
    'ProbabilidadeA':[0.05, 0.10, 0.15, 0.45, 0.25]
}

aplicacaoB = {
    'RentabilidadeB': [-0.03, 0.00, 0.01, 0.03, 0.05],
    'ProbabilidadeB':[0.25, 0.20, 0.30, 0.15, 0.10]
}



dist_freqA = pd.DataFrame(aplicacaoA)
print(dist_freqA)

dist_freqB = pd.DataFrame(aplicacaoB)
print(dist_freqB)

Probabilidade_acumuladaA = []
acumA = 0
for x in dist_freqA['ProbabilidadeA']:
    resultadoA = x + acumA
    Probabilidade_acumuladaA.append(resultadoA)
    acumA = resultadoA
    
Probabilidade_acumuladaB = []
acumB = 0
for x in dist_freqB['ProbabilidadeB']:
    resultadoB = x + acumB
    Probabilidade_acumuladaB.append(resultadoB)
    acumB = resultadoB

# Adicione uma nova coluna chamada 'Probabilidade Acumulada'

dist_freqA['Probabilidade_acumuladaA'] = Probabilidade_acumuladaA
print(dist_freqA)

dist_freqB['Probabilidade_acumuladaB'] = Probabilidade_acumuladaB
print(dist_freqB)

Com essas probabilidades acumuladas construímos os intervalos de números aleatórios e a matriz de busca para as rentabilidades dados os números aleatórios

# Para a Aplicação A
lim_superior_rentabilidadeA = []

for x in dist_freqA['Probabilidade_acumuladaA']:
    lim_sup = x * 100
    lim_superior_rentabilidadeA.append(lim_sup)

lim_sup
lim_superior_rentabilidadeA

dist_freqA['lim_superior_rentabilidadeA'] = lim_superior_rentabilidadeA
print(dist_freqA)

# Para a Aplicação B
lim_superior_rentabilidadeB = []

for x in dist_freqB['Probabilidade_acumuladaB']:
    lim_sup = x * 100
    lim_superior_rentabilidadeB.append(lim_sup)

lim_sup
lim_superior_rentabilidadeB

dist_freqB['lim_superior_rentabilidadeB'] = lim_superior_rentabilidadeB
print(dist_freqB)

# Para a Aplicação A
lim_inferior_rentabilidadeA = [1]

for x in dist_freqA['lim_superior_rentabilidadeA']:
    lim_inf = x + 1
    lim_inferior_rentabilidadeA.append(lim_inf)
    
lim_inferior_rentabilidadeA
lim_inferior_rentabilidadeA.pop(-1)
print(lim_inferior_rentabilidadeA)

dist_freqA['lim_inferior_rentabilidadeA'] = lim_inferior_rentabilidadeA
print(dist_freqA)

# Para a Aplicação B
lim_inferior_rentabilidadeB = [1]

for x in dist_freqB['lim_superior_rentabilidadeB']:
    lim_inf = x + 1
    lim_inferior_rentabilidadeB.append(lim_inf)
    
lim_inferior_rentabilidadeB
lim_inferior_rentabilidadeB.pop(-1)
print(lim_inferior_rentabilidadeB)

dist_freqB['lim_inferior_rentabilidadeB'] = lim_inferior_rentabilidadeB
print(dist_freqB)

 

matriz_buscaA = dist_freqA.loc[:,['RentabilidadeA','lim_inferior_rentabilidadeA','lim_superior_rentabilidadeA']]
print(matriz_buscaA)

matriz_buscaB = dist_freqB.loc[:,['RentabilidadeB','lim_inferior_rentabilidadeB','lim_superior_rentabilidadeB']]
print(matriz_buscaB)

contagemA = matriz_buscaA['RentabilidadeA'].count()    #contagem das linhas da matriz de busca
print(contagemA)
contagemB = matriz_buscaB['RentabilidadeB'].count()    #contagem das linhas da matriz de busca
print(contagemB)

5

5

Agora vamos inserir quantas tentativas gerando números aleatórios e, buscando o intervalo que ele se encontra na matriz de busca, teremos as Rentabilidades. Aqui vamos fazer 12 tentativas (1 ano)

from numpy import random

def criaListaA(lim_inferior_rentabilidadeA, lim_superior_rentabilidadeA):
    return np.arange(lim_inferior_rentabilidadeA, lim_superior_rentabilidadeA+1,1)

def criaListaB(lim_inferior_rentabilidadeB, lim_superior_rentabilidadeB):
    return np.arange(lim_inferior_rentabilidadeB, lim_superior_rentabilidadeB+1,1)


tentativas = int(input("Digite quantas tentativas quer fazer: "))

lista_meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']

lista_rentabilidadeA = []
lista_rentabilidadeB = []

lista_randomicaA = []
lista_randomicaB = []

lista_saldo_inicialA = [40000,0,0,0,0,0,0,0,0,0,0,0]
lista_saldo_inicialB = [40000,0,0,0,0,0,0,0,0,0,0,0]


j = 0
while j <= tentativas:
    aleaA = random.randint(100)
    
    for i in range(0,contagemA):
        xA=int(matriz_buscaA.iloc[i]['lim_inferior_rentabilidadeA'])
        yA=int(matriz_buscaA.iloc[i]['lim_superior_rentabilidadeA'])
        
        zA=matriz_buscaA.iloc[i]['RentabilidadeA']
        
        listaA = criaListaA(xA,yA)
        listaA2=listaA.tolist()    # Transformando array para lista
            
        if aleaA in listaA2:
            rentabilidadeA = zA
            lista_rentabilidadeA.append(rentabilidadeA) 
            lista_randomicaA.append(aleaA) 
            j += 1
        else:
            pass
    #j += 1

matriz_rentabilidadeA = pd.DataFrame(lista_rentabilidadeA, index = [lista_meses], columns=['RentabilidadeA (%)'])
matriz_rentabilidadeA['Num. AleatórioA'] = lista_randomicaA
for k in range(tentativas):
    if k ==0:
        matriz_rentabilidadeA['Saldo inicialA']=40000
        matriz_rentabilidadeA['RentabilidadeA'] = matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']
        matriz_rentabilidadeA['Saldo FinalA'] = matriz_rentabilidadeA['Saldo inicialA']+matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']
        
    else:
        matriz_rentabilidadeA['Saldo inicialA'][k]= matriz_rentabilidadeA['Saldo FinalA'][k-1]
        matriz_rentabilidadeA['RentabilidadeA'] = matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']
        matriz_rentabilidadeA['Saldo FinalA'] = matriz_rentabilidadeA['Saldo inicialA']+matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']

print('Aplicação A: \n',matriz_rentabilidadeA, '\n')
media_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].mean()
mediana_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].median()
moda_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].mode()
desvio_padrao_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].std()
maxima_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].max()
minima_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].min()

#print('A média da RentabilidadeA é: {:.2f}'.format(media_rentabilidadeA))
pd.options.display.float_format = '{:,.2f}'.format
#Sumário EstatísticoA
print('\nEstatísticas Aplicação A:\n', matriz_rentabilidadeA.describe())

j = 0
while j <= tentativas:
    aleaB = random.randint(100)
    for i in range(0,contagemB):
        xB=int(matriz_buscaB.iloc[i]['lim_inferior_rentabilidadeB'])
        yB=int(matriz_buscaB.iloc[i]['lim_superior_rentabilidadeB'])

        zB=matriz_buscaB.iloc[i]['RentabilidadeB']
        
        listaB = criaListaB(xB,yB)
        listaB2=listaB.tolist()           # Transformando array para lista
            
        if aleaB in listaB2:
            rentabilidadeB = zB
            lista_rentabilidadeB.append(rentabilidadeB) 
            lista_randomicaB.append(aleaB)    
            j += 1
        else:
            pass
    #j += 1

matriz_rentabilidadeB = pd.DataFrame(lista_rentabilidadeB, index=[lista_meses], columns=['RentabilidadeB (%)'])
matriz_rentabilidadeB['Num. AleatórioB'] = lista_randomicaB
for k in range(tentativas):
    if k ==0:
        matriz_rentabilidadeB['Saldo inicialB']=40000
        matriz_rentabilidadeB['RentabilidadeB'] = matriz_rentabilidadeB['Saldo inicialB'] * matriz_rentabilidadeB['RentabilidadeB (%)']
        matriz_rentabilidadeB['Saldo FinalB'] = matriz_rentabilidadeB['Saldo inicialB']+matriz_rentabilidadeB['Saldo inicialB'] * matriz_rentabilidadeB['RentabilidadeB (%)']
        from numpy import random

def criaListaA(lim_inferior_rentabilidadeA, lim_superior_rentabilidadeA):
    return np.arange(lim_inferior_rentabilidadeA, lim_superior_rentabilidadeA+1,1)

def criaListaB(lim_inferior_rentabilidadeB, lim_superior_rentabilidadeB):
    return np.arange(lim_inferior_rentabilidadeB, lim_superior_rentabilidadeB+1,1)


tentativas = int(input("Digite quantas tentativas quer fazer: "))

lista_meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']

lista_rentabilidadeA = []
lista_rentabilidadeB = []

lista_randomicaA = []
lista_randomicaB = []

lista_saldo_inicialA = [40000,0,0,0,0,0,0,0,0,0,0,0]
lista_saldo_inicialB = [40000,0,0,0,0,0,0,0,0,0,0,0]


j = 0
while j <= tentativas:
    aleaA = random.randint(100)
    
    for i in range(0,contagemA):
        xA=int(matriz_buscaA.iloc[i]['lim_inferior_rentabilidadeA'])
        yA=int(matriz_buscaA.iloc[i]['lim_superior_rentabilidadeA'])
        
        zA=matriz_buscaA.iloc[i]['RentabilidadeA']
        
        listaA = criaListaA(xA,yA)
        listaA2=listaA.tolist()    # Transformando array para lista
            
        if aleaA in listaA2:
            rentabilidadeA = zA
            lista_rentabilidadeA.append(rentabilidadeA) 
            lista_randomicaA.append(aleaA) 
            j += 1
        else:
            pass
    #j += 1

matriz_rentabilidadeA = pd.DataFrame(lista_rentabilidadeA, index = [lista_meses], columns=['RentabilidadeA (%)'])
matriz_rentabilidadeA['Num. AleatórioA'] = lista_randomicaA
for k in range(tentativas):
    if k ==0:
        matriz_rentabilidadeA['Saldo inicialA']=40000
        matriz_rentabilidadeA['RentabilidadeA'] = matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']
        matriz_rentabilidadeA['Saldo FinalA'] = matriz_rentabilidadeA['Saldo inicialA']+matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']
        
    else:
        matriz_rentabilidadeA['Saldo inicialA'][k]= matriz_rentabilidadeA['Saldo FinalA'][k-1]
        matriz_rentabilidadeA['RentabilidadeA'] = matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']
        matriz_rentabilidadeA['Saldo FinalA'] = matriz_rentabilidadeA['Saldo inicialA']+matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']

print('Aplicação A: \n',matriz_rentabilidadeA, '\n')
media_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].mean()
mediana_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].median()
moda_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].mode()
desvio_padrao_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].std()
maxima_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].max()
minima_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].min()

#print('A média da RentabilidadeA é: {:.2f}'.format(media_rentabilidadeA))
pd.options.display.float_format = '{:,.2f}'.format
#Sumário EstatísticoA
print('\nEstatísticas Aplicação A:\n', matriz_rentabilidadeA.describe())

j = 0
while j <= tentativas:
    aleaB = random.randint(100)
    for i in range(0,contagemB):
        xB=int(matriz_buscaB.iloc[i]['lim_inferior_rentabilidadeB'])
        yB=int(matriz_buscaB.iloc[i]['lim_superior_rentabilidadeB'])

        zB=matriz_buscaB.iloc[i]['RentabilidadeB']
        
        listaB = criaListaB(xB,yB)
        listaB2=listaB.tolist()           # Transformando array para lista
            
        if aleaB in listaB2:
            rentabilidadeB = zB
            lista_rentabilidadeB.append(rentabilidadeB) 
            lista_randomicaB.append(aleaB)    
            j += 1
        else:
            pass
    #j += 1

matriz_rentabilidadeB = pd.DataFrame(lista_rentabilidadeB, index=[lista_meses], columns=['RentabilidadeB (%)'])
matriz_rentabilidadeB['Num. AleatórioB'] = lista_randomicaB
for k in range(tentativas):
    if k ==0:
        matriz_rentabilidadeB['Saldo inicialB']=40000
        matriz_rentabilidadeB['RentabilidadeB'] = matriz_rentabilidadeB['Saldo inicialB'] * matriz_rentabilidadeB['RentabilidadeB (%)']
        matriz_rentabilidadeB['Saldo FinalB'] = matriz_rentabilidadeB['Saldo inicialB']+matriz_rentabilidadeB['Saldo inicialB'] * matriz_rentabilidadeB['RentabilidadeB (%)']

    else:
        matriz_rentabilidadeB['Saldo inicialB'][k]= matriz_rentabilidadeB['Saldo FinalB'][k-1]
        matriz_rentabilidadeB['RentabilidadeB'] = matriz_rentabilidadeB['Saldo inicialB'] * matriz_rentabilidadeB['RentabilidadeB (%)']
        matriz_rentabilidadeB['Saldo FinalB'] = matriz_rentabilidadeB['Saldo inicialB']+matriz_rentabilidadeB['Saldo inicialB'] * matriz_rentabilidadeB['RentabilidadeB (%)']
print('\nAplicação B: \n',matriz_rentabilidadeB, '\n')
media_rentabilidadeB = matriz_rentabilidadeB['RentabilidadeB'].mean()
mediana_rentabilidadeB = matriz_rentabilidadeB['RentabilidadeB'].median()
moda_rentabilidadeB = matriz_rentabilidadeB['RentabilidadeB'].mode()
desvio_padrao_rentabilidadeB = matriz_rentabilidadeB['RentabilidadeB'].std()
maxima_rentabilidadeB = matriz_rentabilidadeB['RentabilidadeB'].max()
minima_rentabilidadeB = matriz_rentabilidadeB['RentabilidadeB'].min()

#print('\nA média da RentabilidadeB é: {:.2f}'.format(media_rentabilidadeB))

#Sumário EstatísticoB
print('\nEstatísticas Aplicação B:\n',matriz_rentabilidadeB.describe(), '\n') 

 

 

Usando o método choice() do random NumPy: np.random.choice()

import pandas as pd
import numpy as np

aplicacaoA = {
    'RentabilidadeA': [-0.02, -0.01, 0.00, 0.01, 0.02],
    'ProbabilidadeA':[0.05, 0.10, 0.15, 0.45, 0.25]
}

aplicacaoB = {
    'RentabilidadeB': [-0.03, 0.00, 0.01, 0.03, 0.05],
    'ProbabilidadeB':[0.25, 0.20, 0.30, 0.15, 0.10]
}



dist_freqA = pd.DataFrame(aplicacaoA)
print(dist_freqA)

dist_freqB = pd.DataFrame(aplicacaoB)
print('\n', dist_freqB)

 

contagemA = dist_freqA['RentabilidadeA'].count()  # contagem das linhas na matriz

contagemB = dist_freqB['RentabilidadeB'].count()  # contagem das linhas na matriz
tentativas = 12

ProbabilidadeA = dist_freqA['ProbabilidadeA']
RentabilidadeA = np.random.choice(dist_freqA['RentabilidadeA'], tentativas, p = dist_freqA['ProbabilidadeA'])
print(RentabilidadeA)

ProbabilidadeB = dist_freqB['ProbabilidadeB']
RentabilidadeB = np.random.choice(dist_freqB['RentabilidadeB'], tentativas, p = dist_freqB['ProbabilidadeB'])
print(RentabilidadeB)

[ 0.02 -0.01 0.02 0.01 0.01 0. 0.02 0. 0.02 0.01 0.01 0.02]

[ 0. -0.03 0.01 0.01 0.03 0.01 0.05 -0.03 0.01 0. -0.03 0.01]

import matplotlib.pyplot as plt

xA = RentabilidadeA
xB = RentabilidadeB

plt.hist(xA,color = 'blue')
plt.xlabel('RentabilidadeA')
plt.ylabel('FrequênciasA')
plt.title('Distribuição das Rentabilidades da AplicaçãoA')
plt.show()

plt.hist(xB, color='red')
plt.xlabel('RentabilidadeB')
plt.ylabel('FrequênciasB')
plt.title('Distribuição das Rentabilidades da AplicaçãoB')
plt.show()

 

 

import matplotlib.pyplot as plt

tentativas = 12

lista_rentabilidadeA = RentabilidadeA.tolist()    # Transformando array para lista
lista_rentabilidadeB = RentabilidadeB.tolist()    # Transformando array para lista

lista_meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']

lista_saldo_inicialA = [40000,0,0,0,0,0,0,0,0,0,0,0]
lista_saldo_inicialB = [40000,0,0,0,0,0,0,0,0,0,0,0]

matriz_rentabilidadeA = pd.DataFrame(lista_rentabilidadeA, index = lista_meses, columns = ['RentabilidadeA (%)'])
matriz_rentabilidadeB = pd.DataFrame(lista_rentabilidadeB, index = lista_meses, columns = ['RentabilidadeB (%)'])

for k in range(tentativas):
    if k ==0:
        matriz_rentabilidadeA['Saldo inicialA'] = 40000
        matriz_rentabilidadeA['RentabilidadeA'] = matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']
        matriz_rentabilidadeA['Saldo FinalA'] = matriz_rentabilidadeA['Saldo inicialA']+matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']
        
    else:
        matriz_rentabilidadeA['Saldo inicialA'][k]= matriz_rentabilidadeA['Saldo FinalA'][k-1]
        matriz_rentabilidadeA['RentabilidadeA'] = matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']
        matriz_rentabilidadeA['Saldo FinalA'] = matriz_rentabilidadeA['Saldo inicialA']+matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']

print('Aplicação A: \n',matriz_rentabilidadeA, '\n')
#media_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].mean()
#mediana_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].median()
#moda_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].mode()
#desvio_padrao_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].std()
#maxima_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].max()
#minima_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].min()

#Sumário EstatísticaA
print('\nEstatísticas Aplicação A:\n', matriz_rentabilidadeA.describe())
print('\n--------------------------------------------------------------------------')



for k in range(tentativas):
    if k ==0:
        matriz_rentabilidadeB['Saldo inicialB'] = 40000
        matriz_rentabilidadeB['RentabilidadeB'] = matriz_rentabilidadeB['Saldo inicialB'] * matriz_rentabilidadeB['RentabilidadeB (%)']
        matriz_rentabilidadeB['Saldo FinalB'] = matriz_rentabilidadeB['Saldo inicialB']+matriz_rentabilidadeB['Saldo inicialB'] * matriz_rentabilidadeB['RentabilidadeB (%)']
        
    else:
        matriz_rentabilidadeB['Saldo inicialB'][k]= matriz_rentabilidadeB['Saldo FinalB'][k-1]
        matriz_rentabilidadeB['RentabilidadeB'] = matriz_rentabilidadeB['Saldo inicialB'] * matriz_rentabilidadeB['RentabilidadeB (%)']
        matriz_rentabilidadeB['Saldo FinalB'] = matriz_rentabilidadeB['Saldo inicialB']+matriz_rentabilidadeB['Saldo inicialB'] * matriz_rentabilidadeB['RentabilidadeB (%)']
        
print('\nAplicação B: \n',matriz_rentabilidadeB, '\n')
#media_rentabilidadeB = matriz_rentabilidadeB['RentabilidadeB'].mean()
#mediana_rentabilidadeB = matriz_rentabilidadeB['RentabilidadeB'].median()
#moda_rentabilidadeB = matriz_rentabilidadeB['RentabilidadeB'].mode()
#desvio_padrao_rentabilidadeB = matriz_rentabilidadeB['RentabilidadeB'].std()
#maxima_rentabilidadeB = matriz_rentabilidadeB['RentabilidadeB'].max()
#minima_rentabilidadeB = matriz_rentabilidadeB['RentabilidadeB'].min()

#Sumário EstatísticaB
print('\nEstatísticas Aplicação B:\n',matriz_rentabilidadeB.describe(), '\n')

Várias Simulações

import matplotlib.pyplot as plt

# Entradas

num_simulacoes = 10

resultadoA = []
resultadoB = []

for i in range(num_simulacoes):
    #Execute até encontrar a rentabilidade média no ano
    tentativas = 12
    
    ProbabilidadeA = dist_freqA['ProbabilidadeA']
    RentabilidadeA = np.random.choice(dist_freqA['RentabilidadeA'], tentativas, p = dist_freqA['ProbabilidadeA'])

    ProbabilidadeB = dist_freqB['ProbabilidadeB']
    RentabilidadeB = np.random.choice(dist_freqB['RentabilidadeB'], tentativas, p = dist_freqB['ProbabilidadeB'])


    lista_rentabilidadeA = RentabilidadeA.tolist()    # Transformando array para lista
    lista_rentabilidadeB = RentabilidadeB.tolist()    # Transformando array para lista

    lista_meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro']

    lista_saldo_inicialA = [40000,0,0,0,0,0,0,0,0,0,0,0]
    lista_saldo_inicialB = [40000,0,0,0,0,0,0,0,0,0,0,0]

    matriz_rentabilidadeA = pd.DataFrame(lista_rentabilidadeA, index = lista_meses, columns = ['RentabilidadeA (%)'])
    matriz_rentabilidadeB = pd.DataFrame(lista_rentabilidadeB, index = lista_meses, columns = ['RentabilidadeB (%)'])

    for k in range(tentativas):
        if k ==0:
            matriz_rentabilidadeA['Saldo inicialA'] = 40000
            matriz_rentabilidadeA['RentabilidadeA'] = matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']
            matriz_rentabilidadeA['Saldo FinalA'] = matriz_rentabilidadeA['Saldo inicialA']+matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']
        
        else:
            matriz_rentabilidadeA['Saldo inicialA'][k]= matriz_rentabilidadeA['Saldo FinalA'][k-1]
            matriz_rentabilidadeA['RentabilidadeA'] = matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']
            matriz_rentabilidadeA['Saldo FinalA'] = matriz_rentabilidadeA['Saldo inicialA']+matriz_rentabilidadeA['Saldo inicialA'] * matriz_rentabilidadeA['RentabilidadeA (%)']

    media_rentabilidadeA = matriz_rentabilidadeA['RentabilidadeA'].mean()
    resultadoA.append(media_rentabilidadeA)
    #print('A média anual da rentabilidadeA: ',resultadoA)
    #print('\n--------------------------------------------------------------------------')
    
    for k in range(tentativas):
        if k ==0:
            matriz_rentabilidadeB['Saldo inicialB'] = 40000
            matriz_rentabilidadeB['RentabilidadeB'] = matriz_rentabilidadeB['Saldo inicialB'] * matriz_rentabilidadeB['RentabilidadeB (%)']
            matriz_rentabilidadeB['Saldo FinalB'] = matriz_rentabilidadeB['Saldo inicialB']+matriz_rentabilidadeB['Saldo inicialB'] * matriz_rentabilidadeB['RentabilidadeB (%)']
        
        else:
            matriz_rentabilidadeB['Saldo inicialB'][k]= matriz_rentabilidadeB['Saldo FinalB'][k-1]
            matriz_rentabilidadeB['RentabilidadeB'] = matriz_rentabilidadeB['Saldo inicialB'] * matriz_rentabilidadeB['RentabilidadeB (%)']
            matriz_rentabilidadeB['Saldo FinalB'] = matriz_rentabilidadeB['Saldo inicialB']+matriz_rentabilidadeB['Saldo inicialB'] * matriz_rentabilidadeB['RentabilidadeB (%)']
        
    media_rentabilidadeB = matriz_rentabilidadeB['RentabilidadeB'].mean()
    resultadoB.append(media_rentabilidadeB)
    #print('A média anual da rentabilidadeB: ',resultadoB)
    #print('\n--------------------------------------------------------------------------')
#print('Lista dos Resultados da Aplicação A em ',num_simulacoes,':',resultadoA)
# Mostrando o gráfico após o término das simulações
plt.subplot(2,1,1)
plt.title("Rentabilidade Média Aplicação A[" + str(num_simulacoes) + " simulações]")
plt.xlabel("Rentabilidade Média Aplicação A")
plt.ylabel("Frequência Aplicação A")
plt.hist(resultadoA, color = 'green')
plt.show()

#Exibindo as médias
ResultadoA_medio = sum(resultadoA)/len(resultadoA)
print("A Rentabilidade Média da Aplicação A após " + str(num_simulacoes) + " simulações: " + str(ResultadoA_medio)+'\n')

print('------------------------------------------------------------------------\n')
#print('Lista dos Resultados da Aplicação B em ',num_simulacoes,':',resultadoB)
# Mostrando o gráfico após o término das simulações
plt.subplot(2,1,2)
plt.title("Rentabilidade Média Aplicação B[" + str(num_simulacoes) + " simulações]")
plt.xlabel("Rentabilidade Média Aplicação B")
plt.ylabel("Frequência Aplicação B")
plt.hist(resultadoB, color = 'red')
plt.show()

#Exibindo as médias
ResultadoB_medio = sum(resultadoB)/len(resultadoB)
print("A Rentabilidade Média da Aplicação B após " + str(num_simulacoes) + " simulações: " + str(ResultadoB_medio))