Capítulo 5 Opciones, Derivados y Futuros

IMPORTANTE: Aún no está del todo listo el formato en pdf, por lo que recomiendo verlo online.

if(!require("pacman")) install.packages("pacman")
p_load("tidyverse","quantmod")

5.1 Call & Put

A modo de resumen, existen cuatro tipos de posiciones en las opciones:

  1. Posición larga en una opción de compra (call)
  2. Posición larga en una opción de venta (put)
  3. Posición corta en una opción de compra (call)
  4. Posición corta en una opción de venta (put)

Simulamos nuestro \(S_t\):

# Valores para el ejemplo
s <- seq(0,130,by=10) # Precio 
  • Para la call usamos: v (precio de la call) = $5, precio de ejercicio (k) = 100.
  • Para la put usamos: v (precio de la put) = $7, precio de ejercicio (k) = 70.

5.1.1 Posición Larga en Call: Payoff & Profit

EL rendimiento proveniente de una opción larga en una opción de compra europea es:

Payoff opción call larga

\[ \text{payoff} = \text{max}(S_t - k,0) \]

Profit opción call larga \[ \text{profit} = \text{payoff} - v*e^{-r*t} \]

Construimos la función:

long.callpayoff <- function(s,k,v,r,t){
    data.frame("payoff" = pmax(0,s-k), "periodo" = s) %>% 
    mutate("profit" = payoff - v*exp(-r*t))
}
payoff.longcall <- long.callpayoff(s,100,5,0,0)

Gráfico posición larga en call:

g1 <- ggplot(payoff.longcall) + geom_line(aes(x = periodo, y = payoff), colour="red", size=1.5) + xlab("Tiempo de Expiracion") + ylab("Payoff")
g1 <- g1 + theme_bw() + ggtitle("Payoff de una Option Call")
g1 <- g1 + labs(subtitle = "Posicion Larga en Call")
g1 <- g1 + scale_x_continuous(limits=c(70, 130)) + theme(panel.grid.major = element_blank(), panel.grid.minor =                 element_blank())
g1

Para corroborar el gráfico ver la figura 9.1 (capítulo 9) del libro Introducción a los Mercados de Futuros y Opciones (octava edición).

Para efecto de académicos restringimos la escala del eje x e y (dimensión).

Gráfico profit posición larga en call:

g2 <- ggplot(payoff.longcall) + geom_line(aes(x = periodo, y = profit), colour="red", size=1.5) + xlab("Tiempo de Expiracion") + ylab("Profit")
g2 <- g2 + theme_bw() + ggtitle("Profit de una Option Call") + labs(subtitle = "Posicion Larga en Call") 
g2 <- g2 + geom_hline(yintercept=0, linetype="dashed",color = "blue", size=1.5)
g2 <- g2 + scale_x_continuous(breaks = round(seq(min(payoff.longcall$periodo), max(payoff.longcall$periodo), by =                   10),1),limits=c(70, 130)) + scale_y_continuous(breaks = round(seq(min(payoff.longcall$profit),                           max(payoff.longcall$profit), by = 10),1),limits = c(limits=c(-5, 30))) 
g2 <- g2 + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())
g2

5.1.2 Posición larga en put: Payoff & Profit

EL rendimiento para el tenedor de una opción larga en una opción de venta europea:

Payoff opción put larga: \[ \text{payoff} = \text{max}(k - S_t,0) \]

Profit opción put larga: \[ \text{profit} = \text{payoff} - v*e^{-r*t} \]

Construimos la función:

long.putpayoff <- function(s,k,v,r,t){
    data.frame("payoff" = pmax(k-s,0), "periodo" = s) %>% 
    mutate("profit" = payoff - v*exp(-r*t))
}
payoff.longput <- long.putpayoff(s,70,7,0,0)

Gráfico posición larga en put

g3 <- ggplot(payoff.longput) + geom_line(aes(x = periodo, y = payoff), colour="red", size=1.5) + xlab("Tiempo de Expiracion") + ylab("Payoff")
g3 <- g3 + theme_bw() + ggtitle("Payoff de una Option Put") + labs(subtitle = "Posicion Larga en Put")
g3 <- g3 + scale_x_continuous(limits=c(40, 100)) + scale_y_continuous(limits=c(0, 30))  + theme(panel.grid.major =                  element_blank(), panel.grid.minor = element_blank())
g3

Para corroborar el gráfico ver la figura 9.2 (capítulo 9) del libro Introducción a los Mercados de Futuros y Opciones (octava edición).

Para efecto de académicos restringimos la escala del eje x e y (dimensión).

Gráfico posición larga en put:

g4 <- ggplot(payoff.longput) + geom_line(aes(x = periodo, y = profit), colour="red", size=1.5) + xlab("Tiempo de Expiracion") + ylab("Profit")
g4 <- g4 + theme_bw() + ggtitle("Profit de una Option Put") + labs(subtitle = "Posicion Larga en Put") 
g4 <- g4 + geom_hline(yintercept=0, linetype="dashed",color = "blue", size=1.5)
g4 <- g4 + scale_x_continuous(breaks = round(seq(min(payoff.longput$periodo), max(payoff.longput$periodo), by =                     10),1),limits=c(40, 100)) + scale_y_continuous(breaks = round(seq(min(payoff.longput$profit),                            max(payoff.longput$profit), by = 10),1),limits = c(limits=c(-7, 30))) 
g4 <- g4 + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())
g4

5.1.3 Posición corta en call: Payoff & Profit

EL rendimiento para el tenedor de una posición corta en una opción de compra europea es:

Payoff opción call corta:

\[ \text{payoff} = -\text{max}(S_t - k,0) = \text{min}(k - S_t,0) \]

Profit opción call corta:

\[ \text{profit} = \text{payoff} + v*e^{-r*t} \]

Construimos la función:

 short.callpayoff <- function(s,k,v,r,t){
    data.frame("payoff" = pmin(k-s,0),"periodo" = s) %>% 
    mutate("profit" = payoff + v*exp(-r*t))
} 
payoff.shortcall <- short.callpayoff(s,100,5,0,0)

Gráfico posición corta en call

g5 <- ggplot(payoff.shortcall) + geom_line(aes(x = periodo, y = payoff), colour="red", size=1.5) + xlab("Tiempo de Expiracion") + ylab("Payoff")
g5 <- g5 + theme_bw()+ ggtitle("Payoff de una Option Call") + labs(subtitle = "Posicion Corta en Call")
g5 <- g5 + scale_x_continuous(limits=c(70, 130)) + scale_y_continuous(limits=c(-30, 0)) + 
      theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())
g5

Para corroborar el gráfico ver la figura 9.3 (capítulo 9) del libro Introducción a los Mercados de Futuros y Opciones (octava edición).

Para efecto de académicos restringimos la escala del eje x e y (dimensión).

Gráfico posición corta en call:

g6 <- ggplot(payoff.shortcall) + geom_line(aes(x = periodo, y = profit), colour="red", size=1.5) + 
      xlab("Tiempo de Expiracion") + ylab("Profit")
g6 <- g6 + theme_bw() + ggtitle("Profit de una Option Call") + labs(subtitle = "Posicion Corta en Call") 
g6 <- g6 + geom_hline(yintercept=0, linetype="dashed",color = "blue", size=1.5)
g6 <- g6 + scale_x_continuous(breaks = round(seq(min(payoff.shortcall$periodo), max(payoff.shortcall$periodo), by =                 10),1),limits=c(70, 130)) + scale_y_continuous(breaks = round(seq(min(payoff.shortcall$profit),                           max(payoff.shortcall$profit), by = 10),1),limits = c(limits=c(-30, 5))) 
g6 <- g6 + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())
g6

5.1.4 Posición corta en put: Payoff & Profit

EL rendimiento para el tenedor de una posición corta en una opción de venta europea es:

Payoff opción put corta: \[ \text{payoff} = -\text{max}(k - S_t,0) = \text{min}(S_t - k,0) \]

Profit opción put corta:

\[ \text{profit} = \text{payoff} + v*e^{-r*t} \]

Construimos la función:

short.putpayoff <- function(s,k,v,r,t){
    data.frame("payoff" = pmin(s-k,0),"periodo" = s) %>% 
    mutate("profit" = payoff + v*exp(-r*t))
}
payoff.shortput <- short.putpayoff(s,70,7,0,0)

Gráfico posición corta en call:

g7 <- ggplot(payoff.shortput) + geom_line(aes(x = periodo, y = payoff), colour="red", size=1.5) + xlab("Tiempo de Expiracion") + ylab("Payoff")
g7 <- g7 + theme_bw() + ggtitle("Payoff de una Option Put") + labs(subtitle = "Posicion Corta en Put")
g7 <- g7 + scale_x_continuous(limits=c(40, 100)) + scale_y_continuous(limits=c(-30, 0)) + 
      theme(panel.grid.major = element_blank(),panel.grid.minor = element_blank())
g7

Para corroborar el gráfico ver la figura 9.4 (capítulo 9) del libro Introducción a los Mercados de Futuros y Opciones (octava edición).

Para efecto de académicos restringimos la escala del eje x e y (dimensión).

g8 <- ggplot(payoff.shortput) + geom_line(aes(x = periodo, y = profit), colour="red", size=1.5) + xlab("Tiempo de Expiracion") + ylab("Profit")
g8 <- g8 + theme_bw() + ggtitle("Profit de una Option Put") + labs(subtitle = "Posicion Corta en Put") 
g8 <- g8 + geom_hline(yintercept=0, linetype="dashed",color = "blue", size=1.5)
g8 <- g8 + scale_x_continuous(breaks = round(seq(min(payoff.shortput$periodo), max(payoff.shortput$periodo), by =                   10),1),limits=c(40, 100)) + scale_y_continuous(breaks = round(seq(min(payoff.shortput$profit),                           max(payoff.shortput$profit), by = 10),1),limits = c(limits=c(-30, 7))) 
g8 <- g8 + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) 
g8  

5.2 Estrategias

Una estrategia de negociación de diferenciales implica tomar una posición en dos o más opciones del mismo tipo (dos o más opciones de compra o dos o más opciones de venta). Las más conocidas son:

  • Diferenciales Alcistas (bull spreads)
  • Diferenciales bajistas (bear spreads)
  • Estrategias con opciones de tipo mariposa (butterfly spread)

Diferenciales Alcistas (bull spreads):

Este se crea mediante la adquisición de una opción de compra europea sobre una acción, con cierto precio de ejercicio, y la venta de una opción de compra europea sobre la misma acción con un precio de ejercicio más alto. Ambas opciones tienen la misma fecha de expiración.

5.2.1 Bull Spread Utilidades

Intervalo variación precio acción Beneficio derivado de call larga Beneficio derivado de call corta Beneficio total
\(S_t \leq K_1\) 0 0 0
\(K_1 < S_t < K_2\) \(S_t - K_1\) 0 \(S_t - K_1\)
\(S_t \geq K_2\) \(S_t - K_1\) \(K_2 - S_t\) \(K_2 - K_1\)

Ejemplo Bull Spread:

Un inversionista adquiere en 3 una opción de compra a tres meses con un precio de ejercicio de 30, y vende en 1 un opción de compra a tres meses con un precio de ejercicio de 35. El beneficio derivado de esta estrategia de diferencial alcista es de 5 si el precio de la acción está por arriba de 35, y de cero si está por debajo de 30. Si el precio de la acción se encuentra entre 30 y 35, el beneficio es la cantidad en la cual el precio de ejercicio excede de 30. El costo de la estrategia es 3 - 1 = 2. Por lo tanto, la utilidad es:

Intervalo variación precio acción Utilidad
\(S_t \leq 30\) -2
\(30 < S_t < 35\) \(S_t - 32\)
\(S_t \geq 35\) +3

5.2.2 Función Bull Spread

Comenzamos contruyendo la estructura de la estrategia:

bullspread.call <- function(S,K1,K2,precio1,precio2){
  
  if(K1>=S) stop("K1 debe ser menor a S.")
  if(S>=K2) stop("K2 debe ser mayor a S.")
  
  #larga
  callP1 = precio1
  #corto
  callP2 = precio2
  
  stock=unique(round(seq(0,K1,length.out=6)))
  stock=c(stock,round(seq(K1,K2,length.out=4)))
  stock=c(stock,round(seq(K2,K2+K1,length.out=6)))
  stock=unique(stock)
  payoff=rep(0,length(stock))
  profit=rep(0,length(stock))
  
  
  for(i in 1:length(stock)){
    if(stock[i]<=K1) payoff[i]=0
    if(stock[i]>=K2) payoff[i]=K2-K1
    if(stock[i]<K2 & stock[i]>K1) payoff[i]=stock[i]-K1
    profit[i]=payoff[i]+(callP2-callP1)
  }
  
  data <- data.frame(stock,payoff,profit)
  return(data)
} 

5.2.3 Posición call Larga & Corta Para el Bull Spread Call

Para ilustrar calculamos las dos call (larga y corta):

Es la misma función vista anteriormente, solo que en vez de tener una columna llamada “periodo” ahora será “stock”, conceptualmente es lo mismo, pero facilita para graficar:

# Posición larga en call
long.callpayoff <- function(s,k,v,r,t){
  data.frame("payoff" = pmax(0,s-k), "stock" = s) %>% 
    mutate("profit" = payoff - v*exp(-r*t))
}

# Posición corta en call
short.callpayoff <- function(s,k,v,r,t){
  data.frame("payoff" = pmin(k-s,0),"stock" = s) %>% 
    mutate("profit" = payoff + v*exp(-r*t))
} 

5.2.4 Construcción de la Bull Spread Call

En el Global Environment vemos el objeto `bull.spread``, que tiene los stock (\(S_t\)), payoff y profit.

bull.spread <- bullspread.call(32,30,35,3,1)
# Extraemos la St
s <- bull.spread$stock

# Call larga
long.call <- long.callpayoff(s,30,3,0,0)
# Call corta
short.call <- short.callpayoff(s,35,1,0,0)

5.2.5 Gráfico Bull Spread Call

g1 <- ggplot(bull.spread[4:10,]) + geom_line(aes(long.call$stock[4:10],long.call$profit[4:10],color = "blue"),linetype="dashed"
                                             ,size=1) 
g1 <- g1 + geom_line(aes(short.call$stock[4:10],short.call$profit[4:10], color = "red"),linetype="dashed",size=1) 
g1 <- g1 + geom_line(aes(bull.spread$stock[4:10],bull.spread$profit[4:10],color = "green"),size=1)
g1 <- g1 + ggtitle("Estrategia Bull Spreads") + xlab("stock") + ylab("Profit") + theme_bw()
g1 <- g1 + geom_hline(yintercept=0, linetype="dashed",color = "orange", size=1)
g1 <- g1 + scale_color_manual(name = " ",labels = c("Call larga", "Bull Spread", "Call corta"),values =                                      c("blue"="blue","green"="green","red" = "red"))
g1 <- g1 + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),legend.position="bottom") 
g1 

5.2.6 Con librería la Bull Spread Call

Una librería útil para construir estratégias es la librería FinancialMath, recuerden install.packages("FinancialMath") y luego library("FinancialMath"):

# Con librería
# bull.call(S,K1,K2,r,t,price1,price2,plot=FALSE)
 
library("FinancialMath")

bull.call <- bull.call(31,30,35,0.0000001,3,3,1,plot=TRUE)

Otras funciones son, bear.call(),straddle(),strangle(),butterfly.spread().

NB: Es importante que el \(S_t\) debe estar entre \(k_1\) y \(k_2\). Deben incluir una tasa de interés y un T, pero si no se especifica, agreguen una cerca a cero.

5.2.7 Con librería El gráfico Bull Spread Call

5.2.8 Payoff inferior Bull Spread Call de la Librería

Los payoff inferiores deberían ser igual a -2:

head(bull.call$Payoff,4)
Table 5.1: Bull Spread Call
Stock Price Payoff Profit
0 0 -2
6 0 -2
12 0 -2
18 0 -2

5.2.9 Payoff superior Bull Spread Call de la Librería

Los payoff inferiores deberían ser igual a 3:

tail(bull.call$Payoff,4)
Table 5.2: Bull Spread Call
Stock Price Payoff Profit
11 47 5 3
12 53 5 3
13 59 5 3
14 65 5 3

5.3 Black & Scholes

5.3.1 Black & Scholes: de la formula a una función

Las Formulas de Black Scholes y Merton para los precios de las opciones de compra y de venta europeas sobre acciones que no pagan dividendos son:

Formulas de Valuación Black,Scholes & Merton

  • \(c = S_0 N(d_1) - K e^{-rt} N(d_2)\)
  • \(p = K e^{-rt} N(-d_2) - S_0 N(-d_1)\)

donde:

  • \(d_1 = \frac{ln(S_0/K) + (r + \sigma^2 / 2)T}{\sigma \sqrt{T}}\) \
  • \(d_2 = \frac{ln(S_0/K) + (r - \sigma^2 / 2)T}{\sigma \sqrt{T}} = d_1 - \sigma \sqrt{T}\)

5.3.2 Black & Scholes: Ejercicio

Uso de la formula en R:

El precio de las acciones después de seis meses a partir de la expiración de una opción es de 42, el precio de ejercicio de la opción es de 40, la tasa de interés libre de riesgo es de 10% anual y la volatilidad es de 20% anual. Esto Significa:

# Parámetros
S0 <- 42
K <- 40
r <- 0.1
T <- 1/2
sigma <- 0.2

5.3.3 Black & Scholes: Función

Construimos la función basándonos en la formula:

bs.opm <- function(S,K,T,riskfree,sigma,type){
  d1<-(log(S/K)+(riskfree+0.5 * sigma^2) * T)/(sigma * sqrt(T))
  d2<-d1-sigma * sqrt(T)
  if(type=="Call"){
    opt.val<-S * pnorm(d1)-K * exp(-riskfree * T) * pnorm(d2)
  }
  if(type=="Put"){
    opt.val<-K * exp(-riskfree * T) * pnorm(-d2)-S * pnorm(-d1)
  }
  opt.val
}
# Para la call
C <- bs.opm(S = S0, K = K, T = T, riskfree = r, sigma = sigma, type = "Call" ) 
C
## [1] 4.759
# Para la put
C <- bs.opm(S = S0, K = K, T = T, riskfree = r, sigma = sigma, type = "Put" )
C
## [1] 0.8086

5.3.4 Black & Scholes: Ahora con librerías

La librería que se utilizará para usa BS es fOptions, recordar el install.packages("fOptions") y posterior library("fOptions").

library("fOptions") 

La función de la librería es GBSOption():

GBSOption(TypeFlag = " ", S = S0, X = K, Time = T, r = r, b = r, sigma = sigma)

En TypeFlag, va “c” para call y “p” para put, tener presente que deberán seleccionar un b que es el annualized cost-of-carry rate, si no se especifica, debe ser igual a r.

# Con libreria call
GBSOption(TypeFlag = "c", S = S0, X = K, Time = T, r = r, b = r, sigma = sigma)@price
## [1] 4.759
# Con libreria put
GBSOption(TypeFlag = "p", S = S0, X = K, Time = T, r = r, b = r, sigma = sigma)@price
## [1] 0.8086

5.4 Black & Scholes con Datos Reales

5.4.1 Black & Scholes con Datos Reales: Pasos

Una manera de trabajar con datos reales directo usando R, es:

  1. Usar las funcion getOptionChain de la librería quantmod. Seleccionar las call y put para la fecha de valuación (recomiendo en objetos separados).

  2. Usar la función getSymbols de la librería quantmod para elegir el ticker correspondiente, calcular el retorno y extraer el precio a la fecha que se está haciendo la valuación.

  3. “Construimos”" la fecha de expiración y valuación, esto nos permite calcular el \(T\) a través de: \(\frac{\text{expiración - valuación}}{365}\). La tasa libre de riesgo se puede obtener de FRED usando la 3-Month Constant Maturity Treasury yield (debe ser la fecha de valuación, un único valor).

  4. Para la volatilidad se puede usar la desviación estándar de los últimos 3 años multiplicado por 252, esto se hace para anualizarlo.

  5. Finalmente seleccionamos las que están cerca al at the money y usamos Black & Scholes, por librería o bien la función que creamos.

5.4.2 Parte a

Imaginemos que es 31 de mayo del 2018 y queremos valorar las opciones call y put de Oracle con vencimiento al 17 de Agosto del 2018. Para comenzar usamos la función getOptionChain() de la librería quantmod:

opciones <- getOptionChain("ORCL",Exp="2021-01-15")

calls <- opciones$calls[,c(1:2,4:6)] # Nos quedamos con las columnas del 1 al 2 y del 4 al 6.
puts  <- opciones$puts[,c(1:2,4:6)] # Nos quedamos con las columnas del 1 al 2 y del 4 al 6.

5.4.3 Parte b

Como debemos obtener el precio de cierre para el 31 de mayo del 2018 y a su vez el histórico de tres años para la volatilidad usamos:

# Al 31 de mayo la valuación, 31 de mayo del 2015 fue domingo, por ende, usamos el viernes 29
getSymbols("ORCL", from = "2015-05-29", to = "2018-06-01", periodicity = "daily")
## [1] "ORCL"
orcl <- as.data.frame(ORCL) %>%  # a data.frame 
        mutate(ret = log(ORCL.Adjusted/lag(ORCL.Adjusted))) %>%  # construimos el retorno
        select(ORCL.Adjusted,ret) %>% # Seleccionamos el retorno y precio de ajuste
        na.omit() # por el NA que se produce del retorno

# extraemos el precio a la fecha que nos piden
precio <- tail(orcl$ORCL.Adjusted,1)

5.4.4 Parte c y d

Con la función getSymbols usamos la fuente de la FRED y extraemos la rf con subset.

getSymbols("DGS3MO",src ="FRED", to = "2018-06-01", periodicity = "daily")
## [1] "DGS3MO"
rf <- as.numeric(subset(DGS3MO["2018-05-31"]))*0.01 

expiracion.date <- as.Date("2018-08-17")
valuacion.date <- as.Date("2018-06-01")
TTM <- as.numeric((expiracion.date-valuacion.date)/365)

Extraemos del objeto orcl y calculamos su desviación estándar, luego se multiplica por 252.

vol.hist <- sd(orcl$ret)*sqrt(252)

5.4.5 Parte e

Vemos el precio a la fecha la valuación y seleccionamos aquellas cercana a estar at the money, tanto put como call.

bs.call <- calls %>% 
           dplyr::filter(Strike == 45 | Strike == 50) %>% 
           select(Strike,Last,Bid,Ask)

bs.put <- puts %>% 
          dplyr::filter(Strike == 45 | Strike == 50) %>% 
          select(Strike,Last,Bid,Ask)
# call
GBSOption(TypeFlag = "c", S = precio, X = 45, Time = TTM, r = rf, b = rf, sigma = vol.hist)@price
## [1] 1.145
GBSOption(TypeFlag = "c", S = precio, X = 50, Time = TTM, r = rf, b = rf, sigma = vol.hist)@price
## [1] 0
# put
GBSOption(TypeFlag = "p", S = precio, X = 45, Time = TTM, r = rf, b = rf, sigma = vol.hist)@price
## [1] 0
GBSOption(TypeFlag = "p", S = precio, X = 50, Time = TTM, r = rf, b = rf, sigma = vol.hist)@price
## [1] 3.835

5.5 Árbol Binomial

Generalización

Una generalización cuando queremos realizar un árbol con dos pasos:

  • \(p = \frac{e^{r \Delta t} - d}{u - d}\)
  • \(f_u = e^{-r \Delta t} [pf_{uu} + (1-p) f_{ud}]\)
  • \(f_d = e^{-r \Delta t} [pf_{ud} + (1-p) f_{dd}]\)
  • \(f = e^{-r \Delta t} [pf_{u} + (1-p) f_{d}] = e^{-2r \Delta t} [p^2 f_{uu} + 2p(1-p) f_{ud} + (1-p)^2 f_{dd}]\) esto último solo cuando es una opción europea.

  • No obstante, en términos del modelo, \(u = e^{\sigma \sqrt{\Delta t}}\) y \(d = e^{-\sigma \sqrt{\Delta t}} = \frac{1}{u}\).

5.5.1 Ejercicio

Considere una call europea a dos años con precio de strike de 52 en una acción cuyo precio es 50. Suponga que existen two time steps en un año, y en cada time steps el precio se mueve 30%. La tasa de interes libre de riesgo es 5%.

La librería a usar será de nuevo fOptions.

library("fOptions")

5.5.2 Call europea

# Europea 
CRRTree = BinomialTreeOption(TypeFlag = "ce", S = 50, X = 52, Time = 2, r = 0.05, b = 0.05, sigma = 0.3, n = 2)
CRRTree
BinomialTreePlot(CRRTree, dy = 1, cex = 0.8, ylim = c(-6, 7), xlab = "n", ylab = "valores Opción") 
title(main = "Arbol Binomial Opción")

5.5.3 Call europea gráfico

5.5.4 Call americana

# Americana
CRRTree.1 = BinomialTreeOption(TypeFlag = "ca", S = 50, X = 52, Time = 2, r = 0.05, b = 0.05, 
                               sigma = 0.3, n = 2)
CRRTree.1
BinomialTreePlot(CRRTree.1, dy = 1, cex = 0.8, ylim = c(-6, 7), xlab = "n", ylab = "valores Opción") 
title(main = "Arbol Binomial Opción")

5.5.5 Call americana gráfico