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