Learn R Programming

fCertificates (version 0.5-4)

DoubleBarrierBinaryCall: Double Barrier Binary Call valuation using pricing by duplication

Description

Valuation of a Double Barrier Binary Call, aka "Inline Warrant"

Usage

DoubleBarrierBinaryCall(S, K, L, U, T, r, r_d, sigma, ratio=1, nmax = 20)

Arguments

S
the asset price, a numeric value.
K
the fixed cash rebate
L
the lower barrier, a numeric value.
U
the upper barrier, a numeric value.
T
time to maturity measured in years
r
the annualized rate of interest, a numeric value; e.g. 0.25 means 25% pa.
r_d
the annualized dividend yield, a numeric value; e.g. 0.25 means 25% pa.
sigma
the annualized volatility of the underlying security, a numeric value; e.g. 0.3 means 30% volatility pa.
ratio
ratio, number of underlyings one certificate refers to, a numeric value; e.g. 0.25 means 4 certificates refer to 1 share of the underlying asset
nmax
maximum number of iterations. Defaults to 20.

Value

the price (scalar or vector) of the Double Barrier Binary Call

Details

Double Barrier Binary Calls offer a fixed payoff if the underlying stays in the predetermined range [L,U] during the lifetime. If one of the barriers have been hit the certifiate is knocked out and will be worthless. This method implements the Hui (1996) approach, which is a iteration up to a maximum number nmax. Also known as:
  • Inline Warrant
  • Range Warrant

References

Sutrick, Teall, Tucker, Wei (1997). The Range of Brownian Motion Processes. The Journal of Financial Engineering, 6, 31--46

Hui (1996). One-Touch Barrier Binary Option Values. Applied Financial Economics, 6, 343--346

Haug (2007). The complete Guide to Option Pricing Formulas. Wiley & Sons, 2nd edition, 180--181

See Also

DoubleBarrierOption

Examples

Run this code
p <- DoubleBarrierBinaryCall(S=100, K=10, L=80, U=120, T=1, 
   r=0.02, r_d=0, sigma=0.2)
   
# Reproduce Table 4-23 in Haug (2007)
S <- 100
T <- 0.25
L <- c(80, 85, 90, 95)
U <- c(120, 115, 110, 105)
r <- 0.05
b <- 0.03
r_d <- 0.02
K <- 10
sigma <- c(0.1, 0.2, 0.3, 0.5)
p <- matrix(NA, 4, 4)
for (i in 1:4)
{
 for (j in 1:4)
 {
   p[i,j] <- DoubleBarrierBinaryCall(S=S, K=K, L=L[i], U=U[i], T=T, 
     r=r, r_d=r_d, sigma=sigma[j])
 }
}

X=cbind(L, U, p)
colnames(X)=c("L", "U", "sigma=0.1", "sigma=0.2", "sigma=0.3", "sigma=0.5")
X  

Run the code above in your browser using DataLab