Saturday, March 18, 2017

Financial products with capital protection barrier - part 12

Simulation Results Analysis

Abstract

Finally, we have collected simulation results reporting the gain and barrier break events along the lifetime of our structured product which can last at most three years.

The profit take observations happen at fixed interval of six months. Hence we have six observation times to compare the current underlying price with its initial value, and, if greater than that, the profit takes are determined and the product eventually expires.

Barrier break events are evaluated at predetermined observation times for European style products, while they are evaluated at any moment of the product lifetime for American style products.

The main questions to be answered are:

  1. what are the chances of profit/loss ?

  2. what are the chances of profit at each underlying price observation time ?

  3. what are the chances for barrier break events ?

  4. what are the chances that the barrier protection effectively prevents investors' losses ?

We expect American style products barrier breaks to occur more frequently than European ones, since the latter events set is contained by the former one.

Analysis

I am going to analyze the results of the simulations as presented in my previous post. At the purpose I load the environment reporting also such information.

load(file="structured-product-5.RData")
invisible(lapply(ts.package, function(x) {
  suppressPackageStartupMessages(library(x, character.only=TRUE)) }))
suppressPackageStartupMessages(library(ggplot2))
suppressPackageStartupMessages(library(dplyr))

In order to support investors in their decision to have in their own portfolio (or not having it at all) a structured product of the kind I described. During the investment timeline as well, I figure out some metrics at the purpose.

To remark that, in the following I am going to use the term observation window to refer to the timeline between two product price observation points (including the investment beginning). So the first observation window starts from the beginning of the product launch and last six months where the first observation time occurs. From that moment, the second observation window starts over. The last observation window starts from the fifth observation time and ends at the sixth observation time moment.

In other words:

\[ \begin{equation} \begin{aligned} \ observation\ window_{\large i}\ \ :=\ [\ t_{\large i-1},\ t_{\large i}\ ], \ \ \ i=1..6 \end{aligned} \end{equation} \]

I am going herein below to compute a set of metrics associated to each observation window and whose aim is to provide some specific information to assist the investment decision and during the product lifetime span. My comments will follow.

n.obs.time <- 6
observation_time <- sim_df$gain_event_observation_time[1:n.obs.time]

profit <- round(sim_df$frequency*100, 3)
no_profit <- 100 - profit

cum_profit <- cumsum(profit)[1:n.obs.time]
cum_no_profit <- 100 - cum_profit

time_inc_pw_profit <- c(profit[1], sapply(2:n.obs.time, function(x) {round(100*profit[x]/sum(profit[x:(1+n.obs.time)]),3)}))
time_inc_pw_no_profit <- 100 - time_inc_pw_profit

time_inc_res_profit <- sapply(1:n.obs.time, function(x) {round(100*sum(profit[x:n.obs.time])/sum(profit[x:(n.obs.time+1)]),3)})
time_inc_res_no_profit <- 100 - time_inc_res_profit

profit_report <- data.frame(observation_time,
                            profit[1:n.obs.time],
                            no_profit[1:n.obs.time],
                            cum_profit, 
                            cum_no_profit,
                            time_inc_pw_profit,
                            time_inc_pw_no_profit,
                            time_inc_res_profit,
                            time_inc_res_no_profit)

colnames(profit_report) <- c("observation time no",
                             "observation window profit chances %",
                             "observation window no profit/loss chances %",
                             "cumulative profit chances %", 
                             "cumulative no profit/loss chances %",
                             "time incremental per window profit chances %", 
                             "time incremental per window no profit/loss chances %",
                             "time residual cumulative profit chances %", 
                             "time residual cumulative no profit/loss chances %")

kable(profit_report, caption="Simulation Profit vs. Loss Analysis", align='c')
Simulation Profit vs. Loss Analysis
observation time no observation window profit chances % observation window no profit/loss chances % cumulative profit chances % cumulative no profit/loss chances % time incremental per window profit chances % time incremental per window no profit/loss chances % time residual cumulative profit chances % time residual cumulative no profit/loss chances %
1 47.590 52.410 47.590 52.410 47.590 52.410 75.000 25.000
2 12.048 87.952 59.638 40.362 22.988 77.012 52.299 47.701
3 6.777 93.223 66.415 33.585 16.791 83.209 38.061 61.939
4 4.970 95.030 71.385 28.615 14.798 85.202 25.562 74.438
5 1.958 98.042 73.343 26.657 6.843 93.157 12.633 87.367
6 1.657 98.343 75.000 25.000 6.216 93.784 6.216 93.784

I herein provide the definitions and motivations for above metrics.

  1. the observation window profit chances is the chance percentage of profit take for each specific observation window. That is an information to be referred before than the investment starts, at time \(t_{0}\) let us say. In that way, the investor can have information of how its chances are distributed across the observation windows, chances evaluated statically with respect the timeline, hence that do not take into account the progression of the investment over time (other metrics take care of that)

  2. the observation window no profit/loss chances are simply the complement to 100% of the previous metric

  3. the cumulative profit chances are the cumulative sums of the metric a and hence they end up with the overall chance for the investor to make a profit (75% in this case)

  4. the observation window no profit/loss chances are simply the complement to 100% of the previous metric

  5. the time incremental per window profit chances report the chances of making a profit at the current observation window taking into account of the progression of the investment along the time. In other words it is the chance to make a profit at observation window \((i-th)\) taking into account that we did not end with a profit before. It is a conditional probability computed based on metric a re-normalized as based on the residual events set probabilities. This metric takes into account the evolution with time of the profit chances as, by cutting off the past events (of no profit), makes the investor to understand what the profit chances are for the current observation window

  6. the time incremental per window no profit/loss chances are simply the complement to 100% of the previous metric

  7. the time residual cumulative profit chances report the chances of making a profit starting from the current observation window and the future ones after having cut off the past events of no profit. This metric may drive the decision to sell the structured product if the chances for a future profit take are not satisfactory

  8. the time residual cumulative no profit/loss chances are simply the complement to 100% of the previous metric

Among the no profit/loss 25% percentage, we have to distinguish the scenarios where barrier break events happened from the other ones where it did not. In other words, we need to compute the percentage of no profit scenarios and actual losses one as subset of that 25% percentage.

na_gain <- sim_res %>% filter(is.na(gain_event_observation_time))

na_gain_barrier_break_europe <- sum(na_gain$barrier_break_europe)/nrow(na_gain)
na_gain_barrier_break_us <- sum(na_gain$barrier_break_us)/nrow(na_gain)

loss_european <- round(profit_report[n.obs.time, 5]*na_gain_barrier_break_europe, 3)

loss_us <- round(profit_report[n.obs.time, 5]*na_gain_barrier_break_us, 3)

loss_european_v <- c(profit_report[n.obs.time, 5], loss_european, profit_report[n.obs.time, 5] - loss_european)

loss_us_v <- c(profit_report[n.obs.time, 5], loss_us, profit_report[n.obs.time, 5] - loss_us)
loss_df <- data.frame(cbind(loss_european_v, loss_us_v))
colnames(loss_df) <- c("European product", "US product")
rownames(loss_df) <- c("no profit/loss %", "loss %", "no profit")
kable(loss_df)
European product US product
no profit/loss % 25.000 25.000
loss % 19.578 22.741
no profit 5.422 2.259

Above table shows that in case of no profit takes, there are more chances of loss in case of American style product.

We can guess that is due to higher chances of barrier breaks with respect the european style product, as the barrier breaks of European products are a subset of the American ones.

In the following I compute the barrier break percentage for both scenarios.

europe_barrier_break_filtered <- sim_res[sim_res$barrier_break_europe==TRUE,]
nrow(europe_barrier_break_filtered)
## [1] 140
europe_gain_with_barrier_break <- europe_barrier_break_filtered %>% filter(!is.na(gain_event_observation_time))
nrow(europe_gain_with_barrier_break)
## [1] 10
europe_gain_with_barrier_break_perc <- round(100*nrow(europe_gain_with_barrier_break)/nrow(europe_barrier_break_filtered), 3)

us_barrier_break_filtered <- sim_res[sim_res$barrier_break_us==TRUE,]
nrow(us_barrier_break_filtered)
## [1] 170
us_gain_with_barrier_break <- us_barrier_break_filtered %>% filter(!is.na(gain_event_observation_time))
nrow(us_gain_with_barrier_break)
## [1] 19
us_gain_with_barrier_break_perc <- round(100*nrow(us_gain_with_barrier_break)/nrow(us_barrier_break_filtered), 3)

gain_bb_df <- data.frame(cbind(europe_gain_with_barrier_break_perc, us_gain_with_barrier_break_perc))
colnames(gain_bb_df) <- c("European product", "US product")
rownames(gain_bb_df) <- c("barrier break gain chance %")
kable(gain_bb_df)
European product US product
barrier break gain chance % 7.143 11.176

Above table confirms the higher chances of barrier breaks for American style product.

To have a more complete picture of the European vs. American products in terms of barrier breaks, the following table shows off the percentage excess of the American product with respect the European with respect specific barrier break events and sub-events of loss or gain.

barrier_break_excess_percentage <- round(100*nrow(us_barrier_break_filtered)/nrow(europe_barrier_break_filtered), 3) - 100

loss_excess_percentage <- round(100*loss_df[2,2]/loss_df[2,1], 3) - 100

gain_excess_percentage <- round(100*gain_bb_df[1,2]/gain_bb_df[1,1], 3) - 100

excess_perc_df <- data.frame(us_product = c(barrier_break_excess_percentage, loss_excess_percentage, gain_excess_percentage))
colnames(excess_perc_df) <- c("US products")
rownames(excess_perc_df) <- c("barrier breaks excess %", 
                              "barrier breaks loss excess %",
                              "barrier breaks gain excess %")
kable(excess_perc_df, align='c')
US products
barrier breaks excess % 21.429
barrier breaks loss excess % 16.156
barrier breaks gain excess % 56.461

The American style product shows a considerable excess of barrier breaks events chances with respect the European one.

The loss chances excess of the American product in case of barrier breaks are quite limited.

Remarkable is the gain excess of the American product in case of barrier breaks. That means that a barrier break events in case of European product has much more impact on profit chances that in case of the American product scenario.

Conclusions

We have analysed the profit/no profit/loss chances of our structured product for both European and American styles.

The analysis shows good opportunities of making a profit. However such profit chances tail off quickly along the lifetime span of the product, an aspect that has to be strongy considered by the investors to figure out the convenience to hold or to prematurely sell the product.

Finally a comparison of the American and European style products in terms of barrier breaks events and consequent loss, no profit or gain has been outlined.