# ============================================================================= # geometricky Brownuv pohyb -- verze bez pouziti cyklu generuj.gBp <- function (t, dt, X0, r, sigma) { dW <- rnorm (length (t) - 1) * sqrt (dt) dX <- 1 + r * dt + sigma * dW X <- cumprod (c (X0 , dX)) } # ============================================================================= # geometricky Brownuv pohyb -- verze s for-cyklem generuj.gBp <- function (t, dt, X0, r, sigma) { X <- X0 X.posledni <- X0 n <- length (t) for (k in 2:n) { dW <- rnorm (1) * sqrt (dt) dX <- (r * dt + sigma * dW) * X.posledni X.posledni <- X.posledni + dX X <- append (X, X.posledni) } X } # ============================================================================= # Vygenerovani jedne trajektorie X0 <- 100 dt <- 1/252 r <- 0.55 sigma <- 0.3 t <- seq (0, 4, by=dt) X <- generuj.gBp (t, dt, X0, r, sigma) plot (t, X, type="l", col="red", xlab="t", ylab="geometricky Brownuv pohyb") abline (h = X0 , lty = 2) # ============================================================================= # log-returny a jejich charakteristiky vhodne pro odhady parametru n <- length (X) R <- log (X[2:n] / X[1:(n-1)]) plot (t[1:(n-1)], R, type="l", col="red", xlab="t", ylab="log-returns") abline (h = 0 , lty = 2) hist (R, freq = FALSE) acf (R) mean (R) sd (R) library (fBasics) skewness (R, method = "moment") kurtosis (R, method = "moment") # =============================================================================