答案 0 :(得分:0)
我假设你的数据是这样的:
IR1 IR2 IR3 IR4 IR5 IR6 IR7 IR8 Coupon lastPayment
# # # # # # # # 40 1040
让您的数据称为dat。然后,您可以通过运行此来找到您的现值。
dat$presentvalue = dat$Coupon*(1/(1+dat$IR1)^(.5) + 1/(1+dat$IR2) + 1/(1 + dat$IR3)^(3/2) + ... + 1/(1 + dat$IR7)^(3.5)) + dat$lastPayment/(1+dat$IR8)^4
一个功能示例:
doStuff = function(dat){
dat$presentvalue = dat$Coupon*(1/(1+dat$IR1)^(.5) + 1/(1+dat$IR2) + 1/(1 + dat$IR3)^(3/2) + ... + 1/(1 + dat$IR7)^(3.5)) + dat$lastPayment/(1+dat$IR8)^4
return(dat)
}
因为这是用于模拟的,所以你真的想要运行这样的东西。
for(i in 1:nSim){
dat = generateDat
dat$presentvalue = dat$Coupon*(1/(1+dat$IR1)^(.5) + 1/(1+dat$IR2) + 1/(1 + dat$IR3)^(3/2) + ... + 1/(1 + dat$IR7)^(3.5)) + dat$lastPayment/(1+dat$IR8)^4
}
您不需要函数来计算当前值。模拟将每次都设置相同,所以只需将它添加到您生成数据的下面的for循环中。