Skip to content
All library documents

Monte Carlo Valuation of a Path-Dependent Express Certificate

Article Quant Q&A · Author: Lumberjack88

Summary

The document describes an express certificate whose annual payoff depends on whether the underlying stock exceeds a sequence of declining barriers. If a barrier is met, the certificate pays a preset amount and ends; if none is met by the final year, the payoff depends on the stock’s final value relative to its initial level. The author attempts to value this path-dependent payoff with a Mathematica Monte Carlo simulation driven by geometric Brownian motion.

The question is why the simulated price exceeds the certificate’s initial issue price and whether the cause lies in the process model or loop logic. The document gives the payoff schedule and describes a simulation, but the notebook itself is represented by an image and no resolution, calibration inputs, or validation results are included. It is therefore useful as a pricing problem setup, while leaving open key modeling choices such as risk-neutral drift, discounting, and whether the simulated payoff logic matches the contract terms.

Key ideas

  • The certificate pays according to annual stock-price barriers that decline over its life.
  • Meeting a barrier triggers a preset payment and ends the certificate’s payoff path.
  • If the final barrier is missed, the payoff is proportional to the terminal stock price relative to its initial level.
  • The author uses Monte Carlo simulation with geometric Brownian motion but reports an unexpectedly high price.
  • The document does not identify the source of the pricing discrepancy or provide validation results.

Tags

Full text
# Monte Carlo Pricer for Express Certificate delivers wrong price [Mathematica]


# Monte Carlo Pricer for Express Certificate delivers wrong price [Mathematica]












So I wanted to price the following Express Certificate with this specific payout structure:

If S1 > S0 -> 105.25 , else ->

If S2 > 0.95*S0 -> 110.5 , else ->

If S3 > 0.9*S0 -> 115.75 , else ->

If S4 > 0.85*S0 -> 121 , else ->

If S5 > 0.65*S0 -> 126.25 , else -> 100*(S5/S0)

S0 to S5 are Stock prices in year 0 up to year 5. If the barrier doesn't get hit, the payout happens and the remaining years can subsequently be ignored, if, however, the stock price is at or below the barrier, no payout will be made that year, instead another comparison will be made in a year with a slightly lower barrier and so on. If year 5 is reached and the underlying price is under 65% of the initial underlying value, the buyer must suffer a loss proportional to the drop in stock value (100*S5/S0), if it's above 65% of the initial value, a payout of 126.25 will be achieved.

Here's my mathematica monte carlo pricer for this express certificate:

I'm using the SE Uploader tool, so I generated this code which you can copy (including the Import at the beginning) into your Mathematica App and it will automatically load my notebook into your current notebook.

Import["http://halirutan.github.io/Mathematica-SE-Tools/decode.m"]["https://i.sstatic.net/fPuB4.png"]

Here's also the visual representation of my notebook:

r is the risk-free rate, sigma is the implied volatility, n is the number of iterations and summe is a variable that accumulates the payoffs throughout the loops. a is just there so that the s5 value is not recalculated in the same loop, as my s[x_] function changes with every single call.

What I don't get is why I get a price way above 100, which was the initial issue price for this express certificate. Is my geometric brownian motion formula wrong? Have I made a mistake somewhere in the "for" loop? Any suggestions are greatly appreciated! Thanks!

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.