European Barrier Options (OTC) 
Use
European barrier buy (call) and sell (put) options are valuated using the Rubinstein Procedure. Four situations can occur:
In addition, a rebate can be paid. This is a fixed amount which is paid based on reaching or not reaching the barrier when the option is not exercised. For an Up & Out option, a fixed amount is paid as soon as the price reaches or exceeds the Up & Out point. For a Down & In, a fixed amount is paid if the price does not reach the in point before the option expires.
Prerequisites/Calculating the Input Parameters
The price calculator for European barrier options has the following parameters:
Features / Valuation
If the expiration date of the option is reached, the internal value of the option (rebate amount) is shown.
For an unexpired option, the option price is calculated as follows:
lograte = log( 1 + opt_domestic_rate / 100).
logforeign = log( 1 + opt_foreign_rate / 100).
yearfrac = opt_days / 365.
dom_disc = exp( lograte * -1 * yearfrac).
for_disc = exp( logforeign * -1 * yearfrac).
adjvola = opt_vola / 100.
volaroot = adjvola * sqrt( yearfrac).
lambda = ( lograte - logforeign + ( adjvola2 / 2)) / adjvola 2)
.eta = -1 for up options
eta = 1 for down options
phi = -1 for puts
phi = 1 for calls
N(x) = standard distribution of x
resign = + for positive rebates
+ for negative rebates
The prices of the barrier options are consist of 6 summands:
res1:
ex = phi * ( ( log( spot / strike) / volaroot) +
( lambda * volaroot)).
ex2 = ex - ( phi * volaroot).
res1 = phi * spot * for_disc * N(ex) -
phi * strike * dom_disc * N(ex2).
res2:
ex = phi * ( ( log( spot / barrier) / volaroot) +
( lambda * volaroot)).
ex2 = ex - ( phi * volaroot).
res2 = phi * spot * for_disc * N(ex) -
phi * strike * dom_disc * N(ex2)
res3:
yps = eta * ( ( log( barrier 2 / spot / strike) /
volaroot) + ( lambda * volaroot)).
yps2 = yps - ( eta * volaroot).
res3 = phi * spot * for_disc *
exp( log( barrier / spot) * 2 * lambda) * N(yps) -
phi * strike * dom_disc *
exp( log( barrier / spot) * ( 2 * lambda - 2)) * N(yps2)
res4:
yps = eta * ( ( log( barrier / spot /
volaroot) + ( lambda * volaroot)).
yps2 = yps - ( eta * volaroot).
res3 = phi * spot * for_disc *
exp( log( barrier / spot) * 2 * lambda) * N(yps) -
phi * strike * dom_disc *
exp( log( barrier / spot) * ( 2 * lambda - 2)) * N(yps2)
res5 (Rebate summand for in options):
ex1 = eta * ( ( log( spot / barrier) /
volaroot) + ( ( lambda - 1) * volaroot)).
yps1 = eta * ( ( log( barrier / spot) /
volaroot) + ( ( lambda - 1) * volaroot)).
if resign = '-'.
res5 = -1 * rebate * dom_disc * ( N(ex1) -
exp( log( barrier / spot) * ( 2 * lambda - 2)) * N(yps1)).
else.
res5 = rebate * dom_disc * ( N(ex1) -
exp( log( barrier / spot) * ( 2 * lambda - 2)) * N(yps1)).
endif.
res6 (Rebate summand for out options):
This component is the same as a one-touch option (see the documentation for one-touch options)
Runtime > 0
24 constellations have to be differentiated between for this valuation:
In - Option
Up - Option
Put (Up&In Put)
Spot < Barrier
Strike >= Barrier
Price = res1 - res2 + res4 + res5
Strike < Barrier
Price = res3 + res5
Spot > Barrier
Standard option, as already knocked
Call (Up&In Call)
Spot < Barrier
Strike >= Barrier
Price = res1 + res5
Strike < Barrier
Price = res2 - res3 + res4 + res5
Spot > Barrier
Standard option, as already knocked
Down - Option
Put (Down&In Put)
Spot > Barrier
Strike >= Barrier
Price = res2 - res3 + res4 + res5
Strike < Barrier
Price = res1 + res5
Spot < Barrier
Standard option, as already knocked
Call (Down&In Call)
Spot > Barrier
Strike >= Barrier
Price = res3 + res5
Strike < Barrier
Price = res1 - res2 + res4 + res5
Spot < Barrier
Standard option, as already knocked
Out - Option
Up - Option
Put (Up&Out Put)
Spot < Barrier
Strike >= Barrier
Price = res2 - res4 + res6
Strike < Barrier
Price = res1 - res3 + res6
Spot > Barrier
Price = res6
Call (Up&Out Call)
Spot < Barrier
Strike >= Barrier
Price = res6
Strike < Barrier
Price = res1 - res2 + res3 - res4 + res6
Spot > Barrier
Price = res6
Down - Option
Put (Down&Out Put)
Spot > Barrier
Strike >= Barrier
Price = res1 - res2 + res3 - res4 + res6
Strike < Barrier
Price = res6
Spot < Barrier
Price = res6
Call (Down&Out Call)
Spot > Barrier
Strike >= Barrier
Price = res1 - res3 + res6
Strike < Barrier
Price = res2 - res4 + res6
Spot < Barrier
Price = res6