File size: 3,131 Bytes
8ed06a5
 
 
 
68ca886
79f9fbf
8ed06a5
 
 
a60a352
 
 
 
8ed06a5
238dbc5
96a3404
79f9fbf
7fbd89c
 
9cfd29b
273ee45
9cfd29b
 
 
 
 
 
 
 
 
 
 
fb7dc9e
9cfd29b
 
 
 
 
 
 
 
 
 
62a7194
9cfd29b
de26c0b
9cfd29b
 
 
 
de26c0b
 
9cfd29b
 
 
de26c0b
 
9cfd29b
 
 
de26c0b
 
9cfd29b
 
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
import streamlit as st
import pandas as pd
import numpy as np
from modelo_risco.modelo_risco_coletivo import *
from util import string_to_list_int, string_to_list_float
import math

st.title('Modelo de Risco Coletivo')

x = string_to_list_int(st.text_input('Valores de 1 sinistro', value="1,2,3"))
px = string_to_list_float(st.text_input('Probabilidades da distribuição Valor de 1 sinistro', value="0.5,0.3,0.2"))
n = string_to_list_int(st.text_input('Quantidade de sinistros', value="0,1,2"))
pn = string_to_list_float(st.text_input('Probabilidades da distribuição Frequência de sinistros',value="0.4,0.3,0.3"))


if len(x) == len(px) and len(n) == len(pn):
    if not math.isclose(sum(px), 1.0) or not math.isclose(sum(pn), 1.0):
        st.warning('A soma das probabilidades precisa ser igual a 1.0')       
         
    else:

        df_x = pd.DataFrame(
                          {
                          'X': x, 'PX': px,
                          }
                          )
        df_n = pd.DataFrame({
                            'N': n, 'PN':pn,
                            })
        st.write(df_x)
        st.write(df_n)
        
    
        modelo = ModeloRiscoCol(df_n['N'], df_n['PN'], df_x['X'], df_x['PX'])
        
        momentos = pd.Series({'E[S]':modelo.esperanca(), 'V[S]': modelo.variancia(), 'Sigma[S]': modelo.desv_pad(), 'CV': modelo.coef_var()}, name='Scol')
        st.write(momentos)
        
        option = st.selectbox(
             'O que você gostaria de calcular?',
             ('Prêmio puro', 'Prêmio comercial', 'Prêmio pela aproximação normal', 'Carregamento de segurança'))
        
        st.write('Você selecionou:', option)
        
        if option == 'Prêmio puro':
            carreg_seg = st.number_input('Qual o valor do carregamento de segurança:', min_value=0.00, value=0.15)
            st.write('carregamento de segurança de ', carreg_seg)
            premio = modelo.premio_puro(carreg_seg)
            st.write('Prêmio puro =', premio) 
        elif option == 'Prêmio comercial':
            carreg_seg = st.number_input('Qual o valor do carregamento de segurança:', min_value=0.00, value=0.15)
            carreg_adm = st.number_input('Qual o valor do carregamento administrativo:', min_value=0.00, value=0.15)                 
            premio = modelo.premio_comercial(carreg_seg, carreg_adm)
            st.write('Prêmio comercial =', premio)               
        elif option == 'Prêmio pela aproximação normal':
            alfa = st.number_input('Qual a probabilidade de o sinistro agregado superar o prêmio puro total:', min_value=0.00,     
                                     max_value=1.00,value=0.05)
            premio = modelo.premio_aprox_normal(alfa) 
            st.write('Prêmio =', premio) 
        else:
            alfa = st.number_input('Qual a probabilidade de o sinistro agregado superar o prêmio puro total:', min_value=0.00,     
                                     max_value=1.00,value=0.05)
            carreg_seg = modelo.carreg_seg(alfa)
            st.write('Carregamento de segurança =', carreg_seg)