input parameter

x <- 30
B <- 10^-5
C <- 1.09
i <- 0.05
v <- 1 / (1 + i)
omega <- 100

fungsi survival

s_x <- function(age) {
  if (age > omega) return(0)
  exp(- (B / log(C)) * (C^age - 1))
}

fungsi peluang bertahan hidup t tahun untuk usia x:tPx

t_p_x <- function(t, age) {
  s_x(age + t) / s_x(age)
}
t_max <- omega - x 
  1. anuitas jiwa seumur hidup
# Awal (Due)
a_due_a <- 0
for (t in 0:t_max) {
  a_due_a <- a_due_a + (v^t) * t_p_x(t, x)
}

# Akhir (Immediate)
a_imm_a <- 0
for (t in 1:t_max) {
  a_imm_a <- a_imm_a + (v^t) * t_p_x(t, x)
}
{
cat("a. Anuitas Jiwa Seumur Hidup:\n")
cat("   - Awal (Due)     :", round(a_due_a, 4), "\n")
cat("   - Akhir (Immediate):", round(a_imm_a, 4), "\n\n")
}
## a. Anuitas Jiwa Seumur Hidup:
##    - Awal (Due)     : 19.8904 
##    - Akhir (Immediate): 18.8904
  1. anuitas jiwa berjangka 20 tahun
# Awal (Due)
a_due_b <- 0
for (t in 0:19) {
  a_due_b <- a_due_b + (v^t) * t_p_x(t, x)
}

# Akhir (Immediate)
a_imm_b <- 0
for (t in 1:20) {
  a_imm_b <- a_imm_b + (v^t) * t_p_x(t, x)
}
{
cat("b. Anuitas Jiwa Berjangka 20 Tahun:\n")
cat("   - Awal (Due)     :", round(a_due_b, 4), "\n")
cat("   - Akhir (Immediate):", round(a_imm_b, 4), "\n\n")
}
## b. Anuitas Jiwa Berjangka 20 Tahun:
##    - Awal (Due)     : 13.0606 
##    - Akhir (Immediate): 12.4348
  1. anuitas jiwa berjangka 20 tahun tertunda 5 tahun
# Awal (Due)
a_due_c <- 0
for (t in 5:24) {
  a_due_c <- a_due_c + (v^t) * t_p_x(t, x)
}

# Akhir (Immediate)
a_imm_c <- 0
for (t in 6:25) {
  a_imm_c <- a_imm_c + (v^t) * t_p_x(t, x)
}
{
cat("c. Anuitas Jiwa Berjangka 20 Tahun Tertunda 5 Tahun:\n")
cat("   - Awal (Due)     :", round(a_due_c, 4), "\n")
cat("   - Akhir (Immediate):", round(a_imm_c, 4), "\n\n")
}
## c. Anuitas Jiwa Berjangka 20 Tahun Tertunda 5 Tahun:
##    - Awal (Due)     : 10.2144 
##    - Akhir (Immediate): 9.7234
  1. anuitas jiwa awal dan pasti 10 tahun
# Awal (Due)
a_pasti_due <- 0
for(t in 0:9) {
  a_pasti_due <- a_pasti_due + v^t
}
a_tertunda_due <- 0
for(t in 10:t_max) {
  a_tertunda_due <- a_tertunda_due + (v^t) * t_p_x(t, x)
}
a_due_d <- a_pasti_due + a_tertunda_due

# Akhir (Immediate)
a_pasti_imm <- 0
for(t in 1:10) {
  a_pasti_imm <- a_pasti_imm + v^t
}
a_tertunda_imm <- 0
for(t in 11:t_max) {
  a_tertunda_imm <- a_tertunda_imm + (v^t) * t_p_x(t, x)
}
{
a_imm_d <- a_pasti_imm + a_tertunda_imm
cat("d. Anuitas Jiwa Garansi 10 Tahun:\n")
cat("   - Awal (Due)     :", round(a_due_d, 4), "\n")
cat("   - Akhir (Immediate):", round(a_imm_d, 4), "\n")
}
## d. Anuitas Jiwa Garansi 10 Tahun:
##    - Awal (Due)     : 19.8963 
##    - Akhir (Immediate): 18.8976