[Returnanalytics-commits] r3906 - pkg/Dowd/R
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Wed Aug 5 07:21:29 CEST 2015
Author: dacharya
Date: 2015-08-05 07:21:29 +0200 (Wed, 05 Aug 2015)
New Revision: 3906
Added:
pkg/Dowd/R/AmericanPutESSim.R
Log:
Function AmericanPutESSim added
Added: pkg/Dowd/R/AmericanPutESSim.R
===================================================================
--- pkg/Dowd/R/AmericanPutESSim.R (rev 0)
+++ pkg/Dowd/R/AmericanPutESSim.R 2015-08-05 05:21:29 UTC (rev 3906)
@@ -0,0 +1,84 @@
+#' Estimates ES of American vanilla put using binomial option valuation tree and Monte Carlo
+#' Simulation
+#'
+#' Estimates ES of American Put Option using binomial tree to price the option
+#' valuation tree and Monte Carlo simulation with a binomial option valuation
+#' tree nested within the MCS. Historical method to compute the VaR.
+#'
+#' @param amountInvested Total amount paid for the Put Option and is positive
+#' (negative) if the option position is long (short)
+#' @param stockPrice Stock price of underlying stock
+#' @param strike Strike price of the option
+#' @param r Risk-free rate
+#' @param mu Expected rate of return on the underlying asset and is in
+#' annualised term
+#' @param sigma Volatility of the underlying stock and is in annualised
+#' term
+#' @param maturity The term to maturity of the option in days
+#' @param numberTrials The number of interations in the Monte Carlo simulation
+#' exercise
+#' @param numberSteps The number of steps over the holding period at each
+#' of which early exercise is checked and is at least 2
+#' @param cl Confidence level for which VaR is computed and is scalar
+#' @param hp Holding period of the option in days and is scalar
+#' @return Monte Carlo Simulation VaR estimate and the bounds of the 95%
+#' confidence interval for the VaR, based on an order-statistics analysis
+#' of the P/L distribution
+#' @references Dowd, Kevin. Measuring Market Risk, Wiley, 2007.
+#'
+#' Lyuu, Yuh-Dauh. Financial Engineering & Computation: Principles,
+#' Mathematics, Algorithms, Cambridge University Press, 2002.
+#'
+#' @author Dinesh Acharya
+#' @examples
+#'
+#' # Market Risk of American Put with given parameters.
+#' AmericanPutESSim(0.20, 27.2, 25, .16, .2, .05, 60, 30, 20, .95, 30)
+#'
+#' @export
+AmericanPutESSim <- function(amountInvested, stockPrice, strike, r, mu, sigma,
+ maturity, numberTrials, numberSteps, cl, hp){
+ # Precompute Constants
+ annualMaturity <- maturity / 360 # Annualised maturity
+ annualHp <- hp / 360 # Annualised holding period
+ N <- numberSteps # Number of steps
+ dt <- annualHp / N # Size of time-increment equal to holding period
+ nudt <- (mu - .5 * sigma^2) * dt
+ sigmadt <- sigma * sqrt(dt)
+ lnS <- log(stockPrice)
+ M <- numberTrials
+ initialOptionPrice <- AmericanPutPriceBinomial(stockPrice, strike, r, sigma, maturity, N)
+ numberOfOptions <- abs(amountInvested) / initialOptionPrice
+ # Stock price simulation process
+ lnSt <- matrix(0, M, N)
+ newStockPrice <- matrix(0, M, N)
+ for (i in 1:M){
+ lnSt[i, 1] <- lnS + rnorm(1, nudt, sigmadt)
+ newStockPrice[i, 1] <- exp(lnSt[i, 1])
+ for (j in 2:N){
+ lnSt[i, j] <- lnSt[i, j - 1] + rnorm(1, nudt, sigmadt)
+ newStockPrice[i, j] <- exp(lnSt[i,j]) # New stock price
+ }
+ }
+
+ # Option calculation over time
+ newOptionValue <- matrix(0, M, N-1)
+ for (i in 1:M) {
+ for (j in 1:(N-1)) {
+ newOptionValue[i, j] <- AmericanPutPriceBinomial(newStockPrice[i, j],
+ strike, r, sigma, maturity - j * hp / N, N)
+ }
+ }
+ # Profit/Loss
+ profitOrLoss <- (newOptionValue - initialOptionPrice)*numberOfOptions
+
+ # Now adjust for short position
+ if (amountInvested < 0) {# If option position is short
+ profitOrLoss <- -profitOrLoss
+ }
+
+ # VaR estimation
+ ES <- HSESDFPerc(profitOrLoss, .5, cl) # VaR
+ confidenceInterval <- c(HSESDFPerc(profitOrLoss, .025, cl), HSESDFPerc(profitOrLoss, .975, cl))
+ return(list('ES' = ES, 'confidenceInterval' = confidenceInterval))
+}
\ No newline at end of file
More information about the Returnanalytics-commits
mailing list