## Option pricing Functions
EuropeanOption <- function(type, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility) {
UseMethod("EuropeanOption")
}
EuropeanOption.default <- function(type, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility) {
type <- match.arg(type, c("call", "put"))
val <- europeanOptionEngine(type, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility)
class(val) <- c("EuropeanOption", "Option")
val
}
AmericanOption <- function(type, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility,
timeSteps=150, gridPoints=149,
engine="BaroneAdesiWhaley") {
UseMethod("AmericanOption")
}
AmericanOption.default <- function(type, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility,
timeSteps=150, gridPoints=149,
engine="BaroneAdesiWhaley") {
type <- match.arg(type, c("call", "put"))
engine <- match.arg(engine, c("BaroneAdesiWhaley", "CrankNicolson"))
val <- americanOptionEngine(type, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility,
timeSteps, gridPoints, engine)
class(val) <- c("AmericanOption","Option")
val
}
BinaryOption <- function(binType, type, excType, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility,
cashPayoff) {
UseMethod("BinaryOption")
}
BinaryOption.default <- function(binType, type, excType, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility,
cashPayoff) {
type <- match.arg(type, c("call", "put"))
binType <- match.arg(binType, c("cash", "asset", "gap"))
excType <- match.arg(excType, c("american", "european"))
val <- binaryOptionEngine(binType, type, excType, underlying,
strike, dividendYield, riskFreeRate,
maturity, volatility, cashPayoff)
class(val) <- c("BinaryOption", "Option")
val
}
BarrierOption <- function(barrType, type, underlying, strike,
dividendYield, riskFreeRate, maturity,
volatility, barrier, rebate=0.0) {
UseMethod("BarrierOption")
}
BarrierOption.default <- function(barrType, type, underlying, strike,
dividendYield, riskFreeRate, maturity,
volatility, barrier, rebate=0.0) {
type <- match.arg(type, c("call", "put"))
barrType <- match.arg(barrType, c("downin", "upin", "downout", "upout"))
val <- barrierOptionEngine(barrType, type, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility, barrier, rebate)
class(val) <- c("BarrierOption", "Option")
val
}
plot.Option <- function(x, ...) {
warning("No plotting available for class", class(x)[1],"\n")
invisible(x)
}
print.Option <- function(x, digits=4, ...) {
cat("Concise summary of valuation for", class(x)[1], "\n")
print(round(unlist(x[1:7]), digits))
invisible(x)
}
summary.Option <- function(object, digits=4, ...) {
cat("Detailed summary of valuation for", class(object)[1], "\n")
print(round(unlist(object[1:7]), digits))
cat("with parameters\n")
print(unlist(object[["parameters"]]))
invisible(object)
}
- ## Option pricing Functions
- EuropeanOption <- function(type, underlying, strike, dividendYield,
- riskFreeRate, maturity, volatility) {
- UseMethod("EuropeanOption")
- }
- EuropeanOption.default <- function(type, underlying, strike, dividendYield,
- riskFreeRate, maturity, volatility) {
- type <- match.arg(type, c("call", "put"))
- val <- europeanOptionEngine(type, underlying, strike, dividendYield,
- riskFreeRate, maturity, volatility)
- class(val) <- c("EuropeanOption", "Option")
- val
- }
- AmericanOption <- function(type, underlying, strike, dividendYield,
- riskFreeRate, maturity, volatility,
- timeSteps=150, gridPoints=149,
- engine="BaroneAdesiWhaley") {
- UseMethod("AmericanOption")
- }
- AmericanOption.default <- function(type, underlying, strike, dividendYield,
- riskFreeRate, maturity, volatility,
- timeSteps=150, gridPoints=149,
- engine="BaroneAdesiWhaley") {
- type <- match.arg(type, c("call", "put"))
- engine <- match.arg(engine, c("BaroneAdesiWhaley", "CrankNicolson"))
- val <- americanOptionEngine(type, underlying, strike, dividendYield,
- riskFreeRate, maturity, volatility,
- timeSteps, gridPoints, engine)
- class(val) <- c("AmericanOption","Option")
- val
- }
- BinaryOption <- function(binType, type, excType, underlying, strike, dividendYield,
- riskFreeRate, maturity, volatility,
- cashPayoff) {
- UseMethod("BinaryOption")
- }
- BinaryOption.default <- function(binType, type, excType, underlying, strike, dividendYield,
- riskFreeRate, maturity, volatility,
- cashPayoff) {
- type <- match.arg(type, c("call", "put"))
- binType <- match.arg(binType, c("cash", "asset", "gap"))
- excType <- match.arg(excType, c("american", "european"))
- val <- binaryOptionEngine(binType, type, excType, underlying,
- strike, dividendYield, riskFreeRate,
- maturity, volatility, cashPayoff)
- class(val) <- c("BinaryOption", "Option")
- val
- }
- BarrierOption <- function(barrType, type, underlying, strike,
- dividendYield, riskFreeRate, maturity,
- volatility, barrier, rebate=0.0) {
- UseMethod("BarrierOption")
- }
- BarrierOption.default <- function(barrType, type, underlying, strike,
- dividendYield, riskFreeRate, maturity,
- volatility, barrier, rebate=0.0) {
- type <- match.arg(type, c("call", "put"))
- barrType <- match.arg(barrType, c("downin", "upin", "downout", "upout"))
- val <- barrierOptionEngine(barrType, type, underlying, strike, dividendYield,
- riskFreeRate, maturity, volatility, barrier, rebate)
- class(val) <- c("BarrierOption", "Option")
- val
- }
- plot.Option <- function(x, ...) {
- warning("No plotting available for class", class(x)[1],"\n")
- invisible(x)
- }
- print.Option <- function(x, digits=4, ...) {
- cat("Concise summary of valuation for", class(x)[1], "\n")
- print(round(unlist(x[1:7]), digits))
- invisible(x)
- }
- summary.Option <- function(object, digits=4, ...) {
- cat("Detailed summary of valuation for", class(object)[1], "\n")
- print(round(unlist(object[1:7]), digits))
- cat("with parameters\n")
- print(unlist(object[["parameters"]]))
- invisible(object)
- }
## Option pricing Functions
EuropeanOption <- function(type, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility) {
UseMethod("EuropeanOption")
}
EuropeanOption.default <- function(type, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility) {
type <- match.arg(type, c("call", "put"))
val <- europeanOptionEngine(type, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility)
class(val) <- c("EuropeanOption", "Option")
val
}
AmericanOption <- function(type, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility,
timeSteps=150, gridPoints=149,
engine="BaroneAdesiWhaley") {
UseMethod("AmericanOption")
}
AmericanOption.default <- function(type, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility,
timeSteps=150, gridPoints=149,
engine="BaroneAdesiWhaley") {
type <- match.arg(type, c("call", "put"))
engine <- match.arg(engine, c("BaroneAdesiWhaley", "CrankNicolson"))
val <- americanOptionEngine(type, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility,
timeSteps, gridPoints, engine)
class(val) <- c("AmericanOption","Option")
val
}
BinaryOption <- function(binType, type, excType, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility,
cashPayoff) {
UseMethod("BinaryOption")
}
BinaryOption.default <- function(binType, type, excType, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility,
cashPayoff) {
type <- match.arg(type, c("call", "put"))
binType <- match.arg(binType, c("cash", "asset", "gap"))
excType <- match.arg(excType, c("american", "european"))
val <- binaryOptionEngine(binType, type, excType, underlying,
strike, dividendYield, riskFreeRate,
maturity, volatility, cashPayoff)
class(val) <- c("BinaryOption", "Option")
val
}
BarrierOption <- function(barrType, type, underlying, strike,
dividendYield, riskFreeRate, maturity,
volatility, barrier, rebate=0.0) {
UseMethod("BarrierOption")
}
BarrierOption.default <- function(barrType, type, underlying, strike,
dividendYield, riskFreeRate, maturity,
volatility, barrier, rebate=0.0) {
type <- match.arg(type, c("call", "put"))
barrType <- match.arg(barrType, c("downin", "upin", "downout", "upout"))
val <- barrierOptionEngine(barrType, type, underlying, strike, dividendYield,
riskFreeRate, maturity, volatility, barrier, rebate)
class(val) <- c("BarrierOption", "Option")
val
}
plot.Option <- function(x, ...) {
warning("No plotting available for class", class(x)[1],"\n")
invisible(x)
}
print.Option <- function(x, digits=4, ...) {
cat("Concise summary of valuation for", class(x)[1], "\n")
print(round(unlist(x[1:7]), digits))
invisible(x)
}
summary.Option <- function(object, digits=4, ...) {
cat("Detailed summary of valuation for", class(object)[1], "\n")
print(round(unlist(object[1:7]), digits))
cat("with parameters\n")
print(unlist(object[["parameters"]]))
invisible(object)
}