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:
what are the chances of profit/loss ?
what are the chances of profit at each underlying price observation time ?
what are the chances for barrier break events ?
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')
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.
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)
the observation window no profit/loss chances are simply the complement to 100% of the previous metric
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)
the observation window no profit/loss chances are simply the complement to 100% of the previous metric
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
the time incremental per window no profit/loss chances are simply the complement to 100% of the previous metric
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
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.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.