Aplicações Financeiras no Python
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))
