Purpose
To Simulate a Simple VA exercise

Data Preparation

> library(xts)
> niftybees <- read.csv("C:/Cauldron/Benchmark/Interns/niftybees.csv",
+     header = T, stringsAsFactors = F)
> niftybees$trade.date <- as.Date(niftybees[, 1], format = "%d-%b-%y")
> niftybees <- xts(niftybees[, 2], niftybees$trade.date)

Plot of NIFTY BeES over the last 7.5 years

> plot(niftybees, main = "NIFTY BeES")

VA2-002.jpg

Prepare Resampled Returns

> library(fSeries)
> niftybees.ret <- as.xts(returns(niftybees)[-1, ])
> plot(niftybees.ret, main = "NIFTY BeES Returns")

VA2-003.jpg

> GetRealization <- function(spot, spotreturns, steps) {
+     x <- sample(spotreturns, steps)
+     y <- spot * cumprod(1 + x)
+     return(y)
+ }

Plain Vanilla VIP
Business Case : Target Maturity Date = 5 Years Growth Rate = 1 percent every month Amount = 5000 Rs Per month What is the payoff at the end of 5 years

> NiftySpot <- 530
> T <- 60
> g <- 0.01
> C <- 2000
> portfolio <- vector(mode = "numeric", length = (T + 1))
> units <- vector(mode = "numeric", length = (T + 1))
> target <- vector(mode = "numeric", length = (T + 1))
> monthly.inv <- vector(mode = "numeric", length = (T + 1))
> portfolio[1] <- C
> target[1] <- C
> units[1] <- C/NiftySpot
> monthly.inv[1] <- C
> price.path <- GetRealization(NiftySpot, niftybees.ret, (T))
> price.path <- c(NiftySpot, price.path)
> i <- 2
> for (i in 2:(T + 1)) {
+     print(i)
+     current.val <- units[i - 1] * price.path[i]
+     target[i] <- target[i - 1] * (1 + g) + C
+     if (current.val < target[i]) {
+         delta.val <- target[i] - current.val
+         delta.units <- delta.val/price.path[i]
+         units[i] <- units[i - 1] + delta.units
+         monthly.inv[i] <- delta.units * price.path[i]
+     }
+     if (current.val > target[i]) {
+         delta.val <- current.val - target[i]
+         delta.units <- delta.val/price.path[i]
+         units[i] <- units[i - 1] - delta.units
+         monthly.inv[i] <- 0
+     }
+ }
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
[1] 11
[1] 12
[1] 13
[1] 14
[1] 15
[1] 16
[1] 17
[1] 18
[1] 19
[1] 20
[1] 21
[1] 22
[1] 23
[1] 24
[1] 25
[1] 26
[1] 27
[1] 28
[1] 29
[1] 30
[1] 31
[1] 32
[1] 33
[1] 34
[1] 35
[1] 36
[1] 37
[1] 38
[1] 39
[1] 40
[1] 41
[1] 42
[1] 43
[1] 44
[1] 45
[1] 46
[1] 47
[1] 48
[1] 49
[1] 50
[1] 51
[1] 52
[1] 53
[1] 54
[1] 55
[1] 56
[1] 57
[1] 58
[1] 59
[1] 60
[1] 61
> results <- cbind(target, monthly.inv)

Basic Plots of Value Path, Monthly Outflow and Asset Path realization

> layout(rbind(c(1, 2), c(3, 3)))
> plot(results[, 1]/1e+05, type = "l", ylim = c(0, 2), col = "blue",
+     lwd = 2, ylab = "INR (Lakhs) ", xlab = "Time", main = "Value Path")
> plot(results[, 2] * 10, type = "l", , col = "blue", lwd = 2,
+     ylab = "Monthly Outflow", xlab = "Time", main = "Monthly Outflow")
> abline(h = C)
> abline(h = 0)
> plot(price.path, type = "l", lwd = 2, col = "blue", main = "Hypothetical Asset Value Realization")

VA2-006.jpg

If you are designing a target maturity product, the volatility that you see at the end of 5 years is going to kill you . Hence there is an obvious need for shifting to lesser risk assets as the investor approaches the maturity period.