Asian Option Pricing under Price Impact

Implements the framework of Tiwari and Majumdar (2025) for valuing arithmetic and geometric Asian options under transient and permanent market impact. Provides three pricing approaches: Kemna-Vorst frictionless benchmarks, exogenous diffusion pricing (closed-form for geometric, Monte Carlo for arithmetic), and endogenous Hamilton-Jacobi-Bellman valuation via a tree-based Bellman scheme producing indifference bid-ask prices.


AsianOption: Asian Option Pricing with Price Impact

R-CMD-check CRAN status

Overview

AsianOption implements binomial tree pricing for Asian options incorporating market price impact from hedging activities. The package extends the Cox-Ross-Rubinstein (CRR) binomial model to account for price movements caused by large hedging trades.

Installation

# Install from CRAN
install.packages("AsianOption")

# Development version from GitHub
# install.packages("devtools")
devtools::install_github("plato-12/AsianOption")

Quick Start

Geometric Asian Option Pricing

library(AsianOption)

# Price a geometric Asian call option with price impact
price <- price_geometric_asian(
  S0 = 100,      # Initial stock price
  K = 100,       # Strike price
  r = 1.05,      # Gross risk-free rate (5%)
  u = 1.2,       # Up factor
  d = 0.8,       # Down factor
  lambda = 0.1,  # Price impact coefficient
  v_u = 1,       # Hedging volume (up)
  v_d = 1,       # Hedging volume (down)
  n = 10         # Time steps
)
print(price)

Arithmetic Asian Option Bounds

# Compute bounds for arithmetic Asian options
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 = 5
)
print(bounds)

Monte Carlo for Large n

# For n > 20, Monte Carlo is automatically used
result <- price_geometric_asian(
  S0 = 100, K = 100, r = 1.05, u = 1.2, d = 0.8,
  lambda = 0.1, v_u = 1, v_d = 1, n = 50
)
#> Using Monte Carlo method for n=50 (> 20) with 100000 simulations

# Get full Monte Carlo output with error estimates
mc_result <- price_geometric_asian_mc(
  S0 = 100, K = 100, r = 1.05, u = 1.2, d = 0.8,
  lambda = 0.1, v_u = 1, v_d = 1, n = 50,
  n_simulations = 100000, seed = 42
)
print(mc_result)
#> Geometric Asian Option Price (Monte Carlo)
#> ==========================================
#> Price:       13.899166
#> Std Error:   0.109300 (0.79%)
#> 95% CI:      [13.684937, 14.113395]
#> Simulations: 100000

Main Functions

  • price_geometric_asian(): Price geometric Asian options (calls/puts)
  • price_geometric_asian_mc(): Monte Carlo pricing with error estimates
  • arithmetic_asian_bounds(): Bounds for arithmetic Asian options
  • compute_p_adj(): Compute adjusted risk-neutral probability
  • check_no_arbitrage(): Validate no-arbitrage conditions

Citation

If you use this package in your research, please cite:

Tiwari, P., & Majumdar, S. (2025). Asian option valuation under price impact. arXiv preprint. https://doi.org/10.48550/arXiv.2512.07154

License

GPL (>= 3)

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("AsianOption")

0.2.0 by Priyanshu Tiwari, 7 months ago


https://github.com/plato-12/AsianOption


Report a bug at https://github.com/plato-12/AsianOption/issues


Browse source code at https://github.com/cran/AsianOption


Authors: Priyanshu Tiwari [aut, cre] (ORCID: , Sourav Majumdar [ctb]


Documentation:   PDF Manual  


GPL (>= 3) license


Imports Rcpp

Suggests testthat, covr

Linking to Rcpp


See at CRAN