| Type: | Package |
| Title: | Adaptive Multilevel Splitting for Option Simulation and Pricing |
| Version: | 0.1.0 |
| Description: | Simulation and pricing routines for rare-event options using Adaptive Multilevel Splitting and standard Monte Carlo under Black-Scholes and Heston models. Core routines are implemented in C++ via Rcpp and RcppArmadillo with lightweight R wrappers. |
| License: | MIT + file LICENSE |
| URL: | https://github.com/RiccardoGozzo/amsSim, https://arxiv.org/html/2510.23461v1 |
| BugReports: | https://github.com/RiccardoGozzo/amsSim/issues |
| Encoding: | UTF-8 |
| Language: | en-US |
| Depends: | R (≥ 4.1) |
| Imports: | Rcpp (≥ 1.0.0) |
| LinkingTo: | Rcpp, RcppArmadillo |
| SystemRequirements: | C++17 |
| ByteCompile: | true |
| NeedsCompilation: | yes |
| RoxygenNote: | 7.3.3 |
| Suggests: | testthat (≥ 3.0.0) |
| Config/testthat/edition: | 3 |
| Packaged: | 2025-10-28 11:45:15 UTC; riccardogozzo |
| Author: | Riccardo Gozzo [aut, cre] |
| Maintainer: | Riccardo Gozzo <[email protected]> |
| Repository: | CRAN |
| Date/Publication: | 2025-10-31 18:20:23 UTC |
amsSim: Adaptive Multilevel Splitting e Monte Carlo
Description
Simulation and pricing routines for rare-event options using Adaptive Multilevel Splitting and standard Monte Carlo under Black-Scholes and Heston models. Core routines are implemented in C++ via Rcpp and RcppArmadillo with lightweight R wrappers.
Author(s)
Maintainer: Riccardo Gozzo [email protected]
See Also
Useful links:
Report bugs at https://github.com/RiccardoGozzo/amsSim/issues
AMS Adaptive Multilevel Splitting estimator for rare-event option payoffs.
Description
Pipeline per iteration:
Simulate
npaths under the chosen model (BS/Heston-family).Compute continuation scores
a_{i,j}viafunction_AMS_Cpp.Set level
L =K-th order statistic of\max_j a_{i,j}.Identify survivors (top
n-K) and parents (Kindices that cleared the level).For each parent, cut at first index that exceeds
Land resimulate the suffix.Repeat until
L \ge L_{\max}. Then compute discounted payoff on the final population.
Usage
AMS(
model,
type,
funz,
n,
t,
p,
r,
sigma,
S0,
rho = NULL,
rim = 0L,
v0 = 0.04,
Lmax = 0,
strike = 1,
K = 1L
)
Arguments
model |
1 = Black–Scholes; 2,3,4 = Heston variants (as in |
type |
Payoff type passed to |
funz |
1 = BS digital proxy in continuation; 2 = raw feature (signed). |
n |
Population size (> K). |
t |
Maturity in years (>0). |
p |
Total time steps (>0). |
r |
Risk–free rate. |
sigma |
BS volatility (used by continuation; >0 if |
S0 |
Initial spot. |
rho |
Correlation for Heston models (required for |
rim |
Left-trim for simulation (keep last |
v0 |
Initial variance for Heston models (>=0). |
Lmax |
Stopping level: iterate while |
strike |
Strike |
K |
Number of resampled offspring per iteration (1..n-1). |
Value
List with price and std.
Examples
out <- AMS(model = 2, type = 3, funz = 1, n = 500, t = 1, p = 252, r = 0.03,
sigma = 0.2, rho = -0.5, S0 = 1, rim = 0, Lmax = 0.5, strike = 1.3, K = 200)
str(out)
simulate_AMS Monte Carlo simulation of price paths under: 1 = Black–Scholes (exact solution) 2 = Heston (Euler discretisation) 3 = Heston (Milstein discretisation) 4 = Heston (Quadratic–Exponential scheme, Andersen 2008)
Description
simulate_AMS Monte Carlo simulation of price paths under: 1 = Black–Scholes (exact solution) 2 = Heston (Euler discretisation) 3 = Heston (Milstein discretisation) 4 = Heston (Quadratic–Exponential scheme, Andersen 2008)
Usage
simulate_AMS(model, n, t, p, r, sigma, S0, rho = NULL, rim = 0L, v0 = 0.04)
Arguments
model |
Integer in |
n |
Number of simulated paths (>0). |
t |
Maturity in years (>0). |
p |
Total time steps (>0). |
r |
Risk–free rate. |
sigma |
Black–Scholes volatility (>=0, used only when |
S0 |
Initial spot price (>0). |
rho |
Correlation between asset and variance Brownian motions (required for Heston models, finite in |
rim |
Left–trim: discard the first |
v0 |
Initial variance for Heston models (>=0). |
Value
List: for model 1 returns S (n \times (p-rim+1)); for Heston models returns S and V.
Examples
b <- simulate_AMS(1, n = 50, t = 1, p = 10, r = 0.01, sigma = 0.2, S0 = 100, rho = NULL)
str(b)