View source: R/arithmetic_asian.R
| arithmetic_asian_bounds | R Documentation |
Computes lower and upper bounds for the arithmetic Asian option (call or put) using the relationship between arithmetic and geometric means (Jensen's inequality).
arithmetic_asian_bounds(
S0,
K,
r,
u,
d,
lambda,
v_u,
v_d,
n,
option_type = "call",
compute_path_specific = FALSE,
validate = TRUE
)
S0 |
Initial stock price (must be positive) |
K |
Strike price (must be positive) |
r |
Gross risk-free rate per period (e.g., 1.05) |
u |
Base up factor in CRR model (must be > d) |
d |
Base down factor in CRR model (must be positive) |
lambda |
Price impact coefficient (non-negative) |
v_u |
Hedging volume on up move (non-negative) |
v_d |
Hedging volume on down move (non-negative) |
n |
Number of time steps (positive integer, recommended n <= 20) |
option_type |
Character; either "call" (default) or "put" |
compute_path_specific |
Logical. If TRUE, computes the tighter path-specific upper bound using exact enumeration of all 2^n paths. Default is FALSE. |
validate |
Logical; if TRUE, performs input validation (default TRUE) |
Computes rigorous upper and lower bounds for arithmetic Asian options using Jensen's inequality. The lower bound is the geometric Asian option price (from AM-GM inequality). Two types of upper bounds are available:
Global upper bound: Uses a worst-case spread parameter applicable to all paths.
Path-specific upper bound: Computes tighter bounds by using path-specific spread parameters. This requires exact enumeration of all 2^n paths in the binomial tree (no sampling or approximation). The path-specific bound is typically much tighter than the global bound.
For detailed mathematical formulations, see the package vignettes and the reference paper.
List containing:
Lower bound for arithmetic option (= geometric option price)
Upper bound for arithmetic option (global bound, for backward compatibility)
Global upper bound using \rho^*
Path-specific upper bound (only if compute_path_specific=TRUE, otherwise NA)
Spread parameter \rho^*
Expected geometric average under risk-neutral measure
Geometric Asian option price (same as lower_bound)
Number of paths used for path-specific bound (2^n if computed, 0 otherwise)
Tiwari, P., & Majumdar, S. (2025). Asian option valuation under price impact. arXiv preprint. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.48550/arXiv.2512.07154")}
price_geometric_asian
# Compute basic bounds (global bound only) for call option
bounds <- arithmetic_asian_bounds(
S0 = 100, K = 100, r = 1.05, u = 1.2, d = 0.8,
lambda = 0.1, v_u = 1, v_d = 1, n = 3, option_type = "call"
)
print(bounds)
# Compute bounds for put option
bounds_put <- arithmetic_asian_bounds(
S0 = 100, K = 100, r = 1.05, u = 1.2, d = 0.8,
lambda = 0.1, v_u = 1, v_d = 1, n = 3, option_type = "put"
)
# Compute with path-specific bound (uses exact enumeration of all 2^n paths)
bounds_ps <- arithmetic_asian_bounds(
S0 = 100, K = 100, r = 1.05, u = 1.2, d = 0.8,
lambda = 0.1, v_u = 1, v_d = 1, n = 5,
compute_path_specific = TRUE
)
print(bounds_ps)
# Estimate arithmetic option price as midpoint of path-specific bounds
if (!is.na(bounds_ps$upper_bound_path_specific)) {
estimated_price <- mean(c(bounds_ps$lower_bound,
bounds_ps$upper_bound_path_specific))
cat("Estimated price:", estimated_price, "\n")
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.