Я составляю проект финансового прогнозирования для школы.Я запускаю стохастическое моделирование гипотетической «справедливости» страховой компании на будущее:
Взять начальный резерв, добавить проценты и доход, а затем вычесть годовые убытки, чтобы получить капитал следующего года.Повторите это в будущем, но вместо резерва используйте капитал предыдущего года.Если капитал когда-либо достигнет 0 или ниже, он застрянет на 0 навсегда (банкротство как поглощающее состояние).
Потери распределяются по усеченному нормальному распределению с усечением слева @ 0. Кто-нибудь знает, почему ожидаемый путь является настолько неточным для определенных симуляций?Я использую формулы условного ожидания из этой страницы википедии.
Я пытался создать ожидаемый путь для симуляции, но, похоже, я не могу получить этот путь, чтобы соответствовать среднемуиз моих симуляций!Моя стратегия до сих пор (я считаю) сродни E (X) = E (X | x> 0) * Pr (x> 0).Извиняюсь, я не знаю, латекс.
Любые идеи относительно того, где это идет не так?
Вот мой код:
# This is just for looking at the exp_path vs. mean path
library(crch)
library(tidyr)
library(ggplot2)
library(matrixStats)
num_sim = 100000
rev = 100
reserve = 10
exp_loss = 100
st_dv_loss = 20
real_return = 0.03
plan_horzn = 30
# Simulated forecast
sim_data = matrix(data = NA, nrow = plan_horzn, ncol = num_sim)
sim_data[1,1:num_sim] = as.vector(rep(reserve, num_sim))
for (i in 2:plan_horzn){
equity_vec <- sim_data[i-1,]*(1+real_return) + rev - rtnorm(num_sim, mean = exp_loss, sd = st_dv_loss, left = 0, right = Inf)
equity_vec[equity_vec < 0] <- 0
equity_vec[sim_data[i-1,]==0] <- 0
sim_data[i,] <- equity_vec
}
# My expected forecast path
exp_path = vector(length = plan_horzn)
exp_path[1] = reserve
for (i in 2:plan_horzn){
cash = exp_path[i-1]*(1+real_return) + rev
prob = ptnorm(cash, mean = exp_loss, sd = st_dv_loss, left = 0)
cond_loss = exp_loss + st_dv_loss*(dnorm((0 - exp_loss)/st_dv_loss, mean = 0, sd = 1)-dnorm((cash - exp_loss)/st_dv_loss, mean = 0, sd = 1))/(pnorm((cash - exp_loss)/st_dv_loss, mean = 0, sd = 1) - pnorm((0 - exp_loss)/st_dv_loss, mean = exp_loss, sd = st_dv_loss))
exp_path[i] = (cash - cond_loss)*prob
}
#Plotting a comparison between the mean and expected path
mean <- rowMeans(sim_data)
sim_summary<- data.frame(mean)
sim_summary$med_pc = rowQuantiles(sim_data, probs = .50)
sim_summary$yr <- seq(1,plan_horzn)
sim_summary$expected <- exp_path
sim_summary_adj <- reshape2::melt(sim_summary, id.var = "yr")
g1 <- ggplot(data = sim_summary_adj, aes(x = yr, y = value, colour = variable)) +
geom_line() +
labs( x = "Time (Yrs)",
y = "Equity ($) ",
title = "Company Equity Over Time",
color = "Legend") +
scale_color_manual(labels = c("Mean", "Median", "Exp"), values = c("blue", "purple", "green"))+
theme_minimal()
plot(g1)