# AMD (Advanced Micro Devices) - Бином ба GBM симуляци
# Хугацаа: 2025-02-04 – 2026-02-04
# 1. Package
library(quantmod)
## Loading required package: xts
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: TTR
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.2.0 ✔ readr 2.1.6
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.2.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::first() masks xts::first()
## ✖ dplyr::lag() masks stats::lag()
## ✖ dplyr::last() masks xts::last()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# 2. Өгөгдөл татах
symbol <- "AMD"
start_date <- as.Date("2025-02-04")
end_date <- as.Date("2026-02-04")
getSymbols(symbol, from = start_date, to = end_date)
## [1] "AMD"
data <- Cl(AMD)
data <- na.omit(data)
log_returns <- diff(log(data))
log_returns <- na.omit(log_returns)
# Үзүүлэлтүүд
mu <- mean(log_returns)
sigma <- sd(log_returns)
S0 <- as.numeric(last(data))
n <- length(log_returns)
cat("Эхний үнэ S0 =", S0, "\n")
## Эхний үнэ S0 = 242.11
cat("mu =", mu, "\n")
## mu = 0.002824303
cat("sigma =", sigma, "\n")
## sigma = 0.03726343
# 3. БИНОМ ЗАГВАР (50 симуляци)
set.seed(123)
N <- n
dt <- 1/252
u <- exp(sigma * sqrt(dt))
d <- 1/u
p <- (exp(mu*dt) - d) / (u - d)
simulations <- 50
binom_paths <- matrix(0, nrow = N, ncol = simulations)
for (j in 1:simulations) {
S <- S0
for (i in 1:N) {
if (runif(1) < p) {
S <- S * u
} else {
S <- S * d
}
binom_paths[i, j] <- S
}
}
# Бином эцсийн үнэ
binom_final <- binom_paths[N, ]
cat("\n------ БИНОМ ЗАГВАР ------\n")
##
## ------ БИНОМ ЗАГВАР ------
cat("Дундаж =", mean(binom_final), "\n")
## Дундаж = 243.8804
cat("Std Dev =", sd(binom_final), "\n")
## Std Dev = 6.409944
cat("95% интервал =",
quantile(binom_final, 0.025), " - ",
quantile(binom_final, 0.975), "\n")
## 95% интервал = 232.0933 - 256.1413
# График
matplot(binom_paths, type="l", lty=1,
main="AMD - Бином загвар (50 симуляци)",
xlab="Хугацаа (өдөр)",
ylab="Үнэ")
grid()

# 4. ГЕОМЕТР БРОУНЫ ХӨДӨЛГӨӨН (GBM)
gbm_paths <- matrix(0, nrow = N, ncol = simulations)
for (j in 1:simulations) {
S <- S0
for (i in 1:N) {
Z <- rnorm(1)
S <- S * exp((mu - 0.5*sigma^2)*dt + sigma*sqrt(dt)*Z)
gbm_paths[i, j] <- S
}
}
# GBM эцсийн үнэ
gbm_final <- gbm_paths[N, ]
cat("\n------ GBM ЗАГВАР ------\n")
##
## ------ GBM ЗАГВАР ------
cat("Дундаж =", mean(gbm_final), "\n")
## Дундаж = 241.5566
cat("Std Dev =", sd(gbm_final), "\n")
## Std Dev = 8.367094
cat("95% интервал =",
quantile(gbm_final, 0.025), " - ",
quantile(gbm_final, 0.975), "\n")
## 95% интервал = 225.5974 - 256.7188
# График
matplot(gbm_paths, type="l", lty=1,
main="AMD - Геометр Броуны хөдөлгөөн (50 симуляци)",
xlab="Хугацаа (өдөр)",
ylab="Үнэ")
grid()

# 5. ХАРЬЦУУЛАЛТ
cat("\n====== ХАРЬЦУУЛАЛТ ======\n")
##
## ====== ХАРЬЦУУЛАЛТ ======
cat("Бином дундаж эцсийн үнэ =", mean(binom_final), "\n")
## Бином дундаж эцсийн үнэ = 243.8804
cat("Броун дундаж эцсийн үнэ =", mean(gbm_final), "\n")
## Броун дундаж эцсийн үнэ = 241.5566
cat("Одоогийн бодит үнэ =", S0, "\n")
## Одоогийн бодит үнэ = 242.11
# 6. ХАМГИЙН САЙН СИМУЛЯЦИ СОНГОХ
# Бином дундаж зам
binom_mean_path <- rowMeans(binom_paths)
# Броун
gbm_mean_path <- rowMeans(gbm_paths)
best_binom_index <- which.min(abs(binom_final - mean(binom_final)))
best_gbm_index <- which.min(abs(gbm_final - mean(gbm_final)))
best_binom_path <- binom_paths[, best_binom_index]
best_gbm_path <- gbm_paths[, best_gbm_index]
# 7. НЭГТГЭСЭН ГРАФИК
plot(binom_mean_path, type="l", lwd=3,
col="blue",
ylim=range(c(binom_mean_path, gbm_mean_path)),
main="AMD - Бином vs Броун ",
xlab="Өдөр", ylab="Үнэ")
lines(gbm_mean_path, col="red", lwd=3)
legend("topleft",
legend=c("Бином (дундаж)",
"Броун (дундаж)",
"Бином (хамгийн сайн)",
"Броун (хамгийн сайн)"),
col=c("blue","red","blue","red"),
lty=c(1,1,2,2),
lwd=3)
grid()
