File size: 4,278 Bytes
c5a9b0c
 
 
 
c009ac1
 
 
c5a9b0c
c009ac1
 
 
c5a9b0c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c009ac1
c5a9b0c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e8c591c
a4c7e98
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import os
os.environ['MPLCONFIGDIR'] = '/tmp/matplotlib-config'

from flask import Flask, render_template, request
import matplotlib.pyplot as plt
import io
import base64
import pandas as pd

app = Flask(__name__)

def gerar_simulacao(capital, studio_ret, valorizacao, franquia_ret, acoes_ret, renda_fixa, inflacao):
    # Simulação de 10 anos
    anos = list(range(11))
    studio_valor = []
    franquia_valor = []
    acoes_valor = []
    renda_fixa_valor = []

    cap_studio = capital
    cap_franquia = capital
    cap_acoes = capital
    cap_rf = capital

    for ano in anos:
        # Studio (rendimento mensal *12 + valorização anual)
        rent_studio = cap_studio * (studio_ret/100) * 12
        val_studio = cap_studio * (valorizacao/100)
        cap_studio += rent_studio + val_studio

        # Franquia (lucro fixo anual)
        cap_franquia += franquia_ret

        # Ações (rendimento anual percentual)
        cap_acoes += cap_acoes * (acoes_ret/100)

        # Renda fixa (rendimento anual percentual)
        cap_rf += cap_rf * (renda_fixa/100)

        # Ajuste pela inflação
        cap_studio /= (1 + inflacao/100)
        cap_franquia /= (1 + inflacao/100)
        cap_acoes /= (1 + inflacao/100)
        cap_rf /= (1 + inflacao/100)

        # Armazena valores ajustados
        studio_valor.append(cap_studio)
        franquia_valor.append(cap_franquia)
        acoes_valor.append(cap_acoes)
        renda_fixa_valor.append(cap_rf)

    # Monta DataFrame para excel e gráfico
    df = pd.DataFrame({
        'Ano': anos,
        'Studio (R$)': [round(v,2) for v in studio_valor],
        'Franquia (R$)': [round(v,2) for v in franquia_valor],
        'Ações (R$)': [round(v,2) for v in acoes_valor],
        'Renda Fixa (R$)': [round(v,2) for v in renda_fixa_valor],
    })

    return df

def criar_grafico(df):
    plt.style.use('seaborn-darkgrid')
    fig, ax = plt.subplots(figsize=(10,6))
    ax.plot(df['Ano'], df['Studio (R$)'], label='Studio')
    ax.plot(df['Ano'], df['Franquia (R$)'], label='Franquia')
    ax.plot(df['Ano'], df['Ações (R$)'], label='Ações')
    ax.plot(df['Ano'], df['Renda Fixa (R$)'], label='Renda Fixa')
    ax.set_title('Simulação de Investimentos - Valor Ajustado pela Inflação')
    ax.set_xlabel('Ano')
    ax.set_ylabel('Valor acumulado (R$)')
    ax.legend()
    plt.tight_layout()

    buf = io.BytesIO()
    plt.savefig(buf, format='png')
    plt.close(fig)
    buf.seek(0)
    img_png = base64.b64encode(buf.getvalue()).decode('utf-8')
    return img_png

@app.route('/', methods=['GET', 'POST'])
def index():
    grafico = None
    df = None
    if request.method == 'POST':
        capital = float(request.form['capital'])
        studio_ret = float(request.form['studio_ret'])
        valorizacao = float(request.form['valorizacao'])
        franquia_ret = float(request.form['franquia_ret'])
        acoes_ret = float(request.form['acoes_ret'])
        renda_fixa = float(request.form['renda_fixa'])
        inflacao = float(request.form['inflacao'])

        df = gerar_simulacao(capital, studio_ret, valorizacao, franquia_ret, acoes_ret, renda_fixa, inflacao)
        grafico = criar_grafico(df)

    return render_template('index.html', grafico=grafico, capital=request.form.get('capital', ''),
                           studio_ret=request.form.get('studio_ret', ''),
                           valorizacao=request.form.get('valorizacao', ''),
                           franquia_ret=request.form.get('franquia_ret', ''),
                           acoes_ret=request.form.get('acoes_ret', ''),
                           renda_fixa=request.form.get('renda_fixa', ''),
                           inflacao=request.form.get('inflacao', ''))

@app.route('/download_excel', methods=['POST'])
def download_excel():
    from flask import send_file
    capital = float(request.form['capital'])
    studio_ret = float(request.form['studio_ret'])
    valorizacao = float(request.form['valorizacao'])
    franquia_ret = float(request.form['franquia_ret'])
    acoes_ret = float(request.form['acoes_ret'])
    renda_fixa = float(request.form['renda_fixa'])
    inflacao = float(request.form['inflacao'])

    df = gerar_simulacao(capital, studio_ret, valorizacao, franquia_ret, acoes_ret,