setwd("H:/Mi unidad/MATERIAS UNAL/9 CÁLCULO ACTUARIAL/Corte 3 - Seguros")
library(readxl)
<- read_excel("qx hombres y mujeres.xls",
qx_mujeres sheet = "Asegurados - Muj",
col_types = c("numeric","numeric"))
<- qx_mujeres$X
edades <- qx_mujeres$qx
qx
<- 0.10 # tasa efectiva anual bruta
i <- 0.0788 # inflación anual proyectada
r <- 1/(1+i) v
Tarea 1 - Tablas de Mortalidad - CÁLCULO ACTUARIAL
Preparación de datos y parámetros
1. Prima entera con fraccionamiento eficiente
Fórmulas:
Tasa efectiva mensual:
\[ i_{(12)} = 12\bigl((1+i)^{1/12}-1\bigr) \]
Tablas de vida: \(\displaystyle l_{x+1} = l_x\,(1 - q_x),\quad l_0 = 100\,000.\)
Valores descontados:
\[ D_x = v^x\,l_x,\quad C_x = D_x\,v\,q_x \]
Momentos decrecientes:
\[ M_x = \sum_{j=x}^n C_j,\quad R_x = \sum_{j=x}^n M_j \]
Anualidad entera:
\[ A_x = \frac{M_x}{D_x},\quad \ddot{A}_x = \frac{R_x}{D_x} \]
Prima fraccionaria eficiente:
\[ \pi_x = \frac{i}{i_{(12)}}\Bigl(A_x \;+\; r\,(\ddot{A}_x - A_x)\Bigr). \]
<- function(qx, VA, m) {
calcular_primas_entero_fracc_efficient <- m * ((1 + i)^(1/m) - 1)
i_m <- length(qx)
n
# l_x
<- numeric(n); lx[1] <- 100000
lx for(k in 1:(n-1)) lx[k+1] <- lx[k] * (1 - qx[k])
<- v^edades * lx
Dx <- Dx * v * qx
Cx <- rev(cumsum(rev(Cx)))
Mx <- rev(cumsum(rev(Mx)))
Rx <- Mx / Dx
Ax <- Rx / Dx
IA_x
<- (i / i_m) * (Ax + r * (IA_x - Ax))
prima
data.frame(
edad = edades,
qx = qx,
Ax = round(Ax, 6),
prima = round(prima*VA, 6)
) }
Uso: esta prima combina valor presente de pagos y ajuste por inflación fraccional.
<- calcular_primas_entero_fracc_efficient(
prima_entera_aritmetica_frac VA = 500000000, m = 12
qx,
)View(prima_entera_aritmetica_frac)
2. Prima SAE fraccionaria
Fórmulas adicionales:
Corrección SAE (fraccional):
\[ \pi_x^{\mathrm{SAE}} = \frac{i}{i_{(12)}}\bigl(A_x + r(\ddot{A}_x - A_x)\bigr) \;+\; r\,\frac{i - i_{(12)}}{i_{(12)}^2}\,A_x. \]
<- function(qx, VA, m) {
calcular_primas_SAE_fracc <- length(qx)
n <- m * ((1 + i)^(1/m) - 1)
im
<- numeric(n); lx[1] <- 100000
lx for(k in 1:(n-1)) lx[k+1] <- lx[k] * (1 - qx[k])
<- v^edades * lx
Dx <- Dx * v * qx
Cx <- rev(cumsum(rev(Cx)))
Mx <- rev(cumsum(rev(Mx)))
Rx <- Mx / Dx
Ax <- Rx / Dx
IA_x
<- (i / im) * (Ax + r * (IA_x - Ax)) +
prima_SAE * ((i - im) / im^2) * Ax)
(r
data.frame(
edad = edades,
qx = qx,
Ax = round(Ax, 6),
prima = round(prima_SAE * VA, 6)
) }
Interpretación: se añade término corrector de nivel para SAE.
<- calcular_primas_SAE_fracc(
prima_entera_aritmetica_frac_m VA = 500000000, m = 12
qx,
)View(prima_entera_aritmetica_frac_m)
3. Prima con crecimiento geométrico
Fórmulas:
Tasa real efectiva:
\[ e = \frac{1+i}{1+r} - 1,\quad v_e = \frac{1}{1+e}. \]
Valores descontados real:
\[ D_x^{(e)}=v_e^x\,l_x,\quad C_x^{(e)}=D_x^{(e)}\,v_e\,q_x. \]
Anualidad real:
\[ A_x^{(e)}=\frac{\sum_{j=x}^n C_j^{(e)}}{D_x^{(e)}}. \]
Prima geométrica:
\[ \pi_x = \frac{i}{i_{(12)}}\,\frac{A_x^{(e)}}{1+r}. \]
<- (1 + i)/(1 + r) - 1
e <- 1 / (1 + e)
Ve
<- function(qx, VA, m) {
calcular_primas_geom_creciente <- length(qx)
n <- m * ((1 + i)^(1/m) - 1)
i_m
<- numeric(n); lx[1] <- 100000
lx for(k in 1:(n-1)) lx[k+1] <- lx[k] * (1 - qx[k])
<- Ve^edades * lx
Dx_e <- Dx_e * Ve * qx
Cx_e <- rev(cumsum(rev(Cx_e)))
Mx_e <- Mx_e / Dx_e
Ax_e
<- (i / i_m) * Ax_e / (1 + r)
prima
data.frame(
edad = edades,
qx = qx,
Ax_e = round(Ax_e, 6),
prima = round(prima * VA, 6)
) }
Uso: interesante para seguros reajustados solo por inflación.
<- calcular_primas_geom_creciente(
prima_geometrica_frac VA = 500000000, m = 12
qx,
)View(prima_geometrica_frac)
4. Comparación de crecimientos del valor asegurado
No hay función aquí; se grafica:
- Aritmético fraccional: \(1 + r\,(k-1)/m\).
- Aritmético anual: \(1 + r\,(t-edad_{start}-1)\).
- Geométrico anual: \((1+r)^{t-edad_{start}-1}\).
<- 0.0788; m <- 12
r <- 20; edad_fin <- 50
edad_inicio
<- (edad_inicio+1):edad_fin
ed_int <- 1 + r*(ed_int-(edad_inicio+1))
benef2
<- 1:((edad_fin-edad_inicio)*m)
k <- edad_inicio + k/m
ti <- 1 + r*((k-1)/m)
benef1 <- (1+r)^(ed_int-(edad_inicio+1))
benef3
plot(ti, benef1, type="l", col=1, lwd=2,
ylim=c(0,max(benef1,benef2,benef3)),
xlab="Edad", ylab="Beneficio",
main="Crecimiento del valor asegurado")
lines(ed_int, benef2, col=2, lwd=2)
lines(ed_int, benef3, col=3, lwd=2)
legend("topleft",
legend=c("Aritmético fracc.","Aritmético anual","Geométrico"),
col=1:3, lwd=2, bty="n")
5. Tabla comparativa de primas
<- 500000000; m <- 12
VA <- calcular_primas_entero_fracc_efficient(qx, VA, m)
aritm <- calcular_primas_SAE_fracc(qx, VA, m)
aritm_m <- calcular_primas_geom_creciente(qx, VA, m)
geom
<- data.frame(
tabla_comparativa Edad = edades,
= aritm$prima,
Seguro1_Aritmético _m = aritm_m$prima,
Seguro2_Aritmético= geom$prima
Seguro3_Geométrico
)View(tabla_comparativa)