Se eliminan los mensajes de precaución y de descarga de paquetes.

options(warn = -1)
suppressPackageStartupMessages({
  library(knitr)
  library(plotly)
  library(dplyr)
  library(ggplot2)
  library(plotly)
  library(moments)
})

Se analiza la serie diaria TRM desde 2000-01-31, hasta 2024-02-20

Datos_TRM = read.table("C:/Users/57314/Downloads/DB_TRM.txt", header = TRUE)

# Guardar el archivo como un archivo HTML
library(knitr)

# Convertir la tabla a HTML
html_TRM <- kable(Datos_TRM, format = "html")

# Guardar el código HTML en un archivo
write(html_TRM, "tabla_trm.html")

head(Datos_TRM)
##        Fecha     TRM
## 1 01/01/2000 1873.77
## 2 02/01/2000 1873.77
## 3 03/01/2000 1873.77
## 4 04/01/2000 1874.35
## 5 05/01/2000 1895.97
## 6 06/01/2000 1912.69

Se convierte al formato correspondiente la columna “Fecha” y “TRM” a número

class(Datos_TRM[,"Fecha"])
## [1] "character"
class(Datos_TRM[,"TRM"])
## [1] "numeric"
Datos_TRM[,"Fecha"]<-as.Date(Datos_TRM[,"Fecha"],format = "%d/%m/%Y")
class(Datos_TRM[,"Fecha"])
## [1] "Date"
Datos_TRM[,"TRM"]<-as.numeric(Datos_TRM[,"TRM"],format = "")
class(Datos_TRM[,"TRM"])
## [1] "numeric"

1. Graficar los datos

Se realiza la gráfica de la Serie Histórica TRM

chooseCRANmirror(ind=1)
install.packages("plotly")
install.packages("dplyr")

library(plotly)
library(dplyr)

Datos_TRM %>%
  plot_ly(x = ~Fecha, y = ~TRM, type = "scatter", mode = "lines", line = list(color = "blue")) %>%
  layout(title = "Serie Histórica TRM", xaxis = list(title = "Fecha"), yaxis = list(title = "TRM"))

Se realiza la gráfica de la Serie Histórica Rendimientos Diarios TRM

library(ggplot2)
library(plotly)

rendimientos_diarios <- diff(log(Datos_TRM$TRM))

gg <- ggplot(data = data.frame(Fecha = Datos_TRM$Fecha[-1], RendimientoDiario = rendimientos_diarios),
             aes(x = Fecha, y = RendimientoDiario, color = "Rendimiento Diario")) +
  geom_line(color = "blue") +
  labs(title = "Serie Histórica Rendimientos Diarios TRM",
       x = "Fecha",
       y = "Rendimiento Diario") +
  theme_minimal() +
  theme(plot.title = element_text(size = 14),
        axis.title = element_text(size = 12),
        axis.text = element_text(size = 10))

plotly_gg <- ggplotly(gg)
plotly_gg

2. Distribución de frecuencias

Se realiza el Histograma de Precios

library(ggplot2)
library(plotly)

# Supongamos que Datos_TRM tiene la columna "TRM"
gg_hist <- ggplot(Datos_TRM, aes(x = TRM)) +
  geom_histogram(binwidth = 30, fill = "blue", color = "white") +
  labs(title = "Histograma de Precios",
       x = "Precio TRM (COP)",
       y = "Frecuencia") +
  theme_minimal() +
  theme(plot.title = element_text(size = 14),
        axis.title = element_text(size = 12),
        axis.text = element_text(size = 10))

# Convierte la gráfica de ggplot a plotly
plotly_hist <- ggplotly(gg_hist)
plotly_hist

Se realiza el Histograma de Rendimientos

library(ggplot2)
library(plotly)

  # Supongamos que Datos_TRM tiene la columna "TRM"
Rtos_TRM<-diff(log(Datos_TRM[,"TRM"]))

gg_hist <- ggplot(data.frame(Rtos_TRM = Rtos_TRM), aes(x = Rtos_TRM)) +
  geom_histogram(binwidth = 0.001, fill = "blue", color = "white") +
  labs(title = "Histograma de Rendimientos",
       x = "Rendimiento Diario (%)",
       y = "Frecuencia") +
  theme_minimal() +
  theme(plot.title = element_text(size = 14),
        axis.title = element_text(size = 12),
        axis.text = element_text(size = 10)) +
  coord_cartesian(xlim = c(-0.02, 0.02))

# Convierte la gráfica de ggplot a plotly
plotly_hist <- ggplotly(gg_hist)
plotly_hist

3. Estadísticas Basicas

max(Datos_TRM[,2])
## [1] 5061.21
min(Datos_TRM[,2]) 
## [1] 1652.41
print("Media de la TRM")
## [1] "Media de la TRM"
mean(Datos_TRM[,"TRM"])
## [1] 2660.966
print("Desviación estandar de la TRM")
## [1] "Desviación estandar de la TRM"
sd(Datos_TRM[,"TRM"])
## [1] 762.4161

Análisis Descriptivo

• Media: La TRM promedio durante el período 2000-2024 fue de $2660.966 COP por USD.

• Desviación estándar: La desviación estándar de la TRM fue de $762.4161 COP por USD, lo que significa que en promedio el precio de la TRM puede subir o bajar $762.4161 en un día.

• Máximo: El valor máximo de la TRM fue de $5061.21 COP por USD alcanzado en 2023.

• Mínimo: El valor mínimo de la TRM fue de $1652.41 COP por USD alcanzado en 2003.

Análisis de Tendencias:

• La tendencia de la TRM ha sido creciente durante el período de tiempo analizado.

• El aumento de la TRM se ha visto afectada por varios factores tanto internos como externos:

Factores externos

• La economía estadounidense ha experimentado un crecimiento durante estos años, acompañado de que la Reserva Federal ha trabajado en que el dólar sea una moneda atractiva para invertir (aumento de las tasas de interés), por esto su precio frente a otras monedas ha aumentado.

• Debido a los diferentes conflictos en países productores de petróleo, su precio ha sido muy volátil, lo que puede conducir a una depreciación de la TRM.

• Los conflictos económicos globales como la guerra de Ucrania o la crisis financiera en USA del 2008, hacen que los inversores busquen activos de bajo riesgo para invertir como las divisas, por ejemplo, el dólar estadounidense.

• La pandemia de COVID-19 en 2020 generó incertidumbre económica global, lo que generó una depreciación del peso colombiano frente al dólar.

Factores internos

• En Colombia los bienes importados son mayores a los exportados, por esto existe un déficit en cuenta corriente, lo que genera un alza en la TRM.

• En los últimos años la inflación en Colombia ha sido superior a la de Estados Unidos esto hace que el peso colombiano pierda poder adquisitivo frente al dólar.

• Cuando el Banco de la República emite pesos para aumentar la oferta de dinero, puede conducir a una depreciación de la moneda.

Análisis de Autocorrelación:

La TRM tiene una autocorrelación positiva, lo que significa que los valores actuales de la TRM están correlacionados con los valores pasados.

print("Sesgo")
## [1] "Sesgo"
skewness(Datos_TRM[,"TRM"])
## [1] 0.8964715
print("curtosis")
## [1] "curtosis"
kurtosis(Datos_TRM[,"TRM"])
## [1] 3.040295
#Percentiles
quantile(Datos_TRM[,"TRM"],c(0.01,0.05,0.1,0.5,0.75,0.90,0.95,0.99))
##       1%       5%      10%      50%      75%      90%      95%      99% 
## 1762.380 1791.626 1838.278 2389.750 3054.380 3857.076 4093.152 4802.480

Análisis

El valor de skewness de 0.8964715 indica que la distribución de la TRM está asimétrica a la derecha. Es decir, que la mayoría de los valores se encuentran por debajo del valor medio, y hay una “cola” más larga de valores por encima del mismo.

4.Rendimientos

max(Rtos_TRM)
## [1] 0.05930667
min(Rtos_TRM)
## [1] -0.05621935
print("Media Rendimientos de la TRM")
## [1] "Media Rendimientos de la TRM"
mean(Rtos_TRM)
## [1] 8.36647e-05
print("Desviación estandar rendimientos de la TRM")
## [1] "Desviación estandar rendimientos de la TRM"
sd(Rtos_TRM)
## [1] 0.005923331
skewness(Rtos_TRM)
## [1] 0.2697866
print("Curtosis")
## [1] "Curtosis"
kurtosis(Rtos_TRM)
## [1] 12.81273
quantile(Rtos_TRM,c(0.01,0.05,0.1,0.5,0.75,0.90,0.95,0.99))
##           1%           5%          10%          50%          75%          90% 
## -0.016723186 -0.008984837 -0.005719115  0.000000000  0.001295204  0.005982923 
##          95%          99% 
##  0.009560857  0.019030831

Análisis Descriptivo

• Media: Los rendimientos promedio de la TRM durante el período 2000-2024 fue de 8.36647e-05 COP por USD.

• Desviación estándar: Los rendimientos promedio de la TRM fue de 0.005923331 COP por USD, lo que significa que los rendimientos promedio de la TRM puede subir o bajar 0.005923331 en un día.

• Máximo: El valor máximo de los rendimientos promedio de la TRM fue de 0.05930667 COP por USD alcanzado en 2023.

• Mínimo: El valor mínimo de los rendimientos promedio de la TRM fue de -0.05621935 COP por USD alcanzado en 2003.

5. Aplicaciones de asignación de probabilidad basada en frecuencia

5.1 Estimación de un intervalo de predicción del 90% para los rendimientos de las TRM

quantile(Rtos_TRM, c(0.05,0.95))
##           5%          95% 
## -0.008984837  0.009560857

Hay una probabilidad del 90% de que los datos estén entre -0.008984837 y 0.009560857.

5.2 ¿Qué probabilidad hay de tener una perdida mayor al 1% en un día?

breaks<-c(min(Rtos_TRM)-0.0000001,-0.01)
corte<-cut(Rtos_TRM,breaks)
tabla<-table(corte)
print(tabla)
## corte
## (-0.0562,-0.01] 
##             359
probabilidad<-tabla/length(Rtos_TRM)
print(probabilidad)
## corte
## (-0.0562,-0.01] 
##      0.04072142

Hay una probabilidad del 0.04072142 de tener una perdida mayor al 1% en un día.

6. Supuesto de normalidad

¿Qué tipo de distribución teórica siguen los rendimientos diarios de la TRM? ¿Es válido el supuesto de normalidad para los rendimientos diarios de la TRM?

En este caso, para la estimación de los parámetros de la distribución normal, se utilizó el promedio aritmético de los rendimientos de la TRM como estimador del valor esperado y la desviación estandar histórica de los rendimientos como estimador de la desviación.

library(ggplot2)
library(plotly)

# Supongamos que Rtos_TRM contiene los rendimientos diarios
gg_hist <- ggplot(data.frame(Rtos_TRM = Rtos_TRM), aes(x = Rtos_TRM)) +
  geom_histogram(binwidth = 0.001, fill = "blue", color = "white", aes(y = ..density..)) +
  stat_function(fun = function(x) dnorm(x, mean = mean(Rtos_TRM), sd = sd(Rtos_TRM)), 
                color = "black", size = 1) +
  labs(title = "Histograma de Rendimientos",
       x = "Rendimiento Diario (%)",
       y = "Densidad") +
  theme_minimal() +
  theme(plot.title = element_text(size = 14),
        axis.title = element_text(size = 12),
        axis.text = element_text(size = 10)) +
  xlim(c(-0.02, 0.02))

# Convierte la gráfica de ggplot a plotly
plotly_hist <- ggplotly(gg_hist)
plotly_hist

Dado el histograma antes mostrado se puede decir que los rendimientos tienen un comportamiento basado en el supuesto de normalidad, lo cuál se sustenta en la forma que toma la campana. Sin embargo, dicha campana esta muy ancha, lo que quiere decir que algunos rendimientos no estan tan cercanos a la media.

6.1 Comparación de cuantiles

library(ggplot2)
library(plotly)

# Supongamos que Rtos_TRM contiene los rendimientos diarios
gg_qq <- ggplot(data.frame(Rtos_TRM = Rtos_TRM), aes(sample = Rtos_TRM)) +
  stat_qq(color = "blue", size = 1.5, pch = 16) +
  labs(title = "Gráfico QQ Rendimientos Diarios TRM",
       x = "Cuantiles teóricos",
       y = "Cuantiles observados") +
  theme_minimal() +
  theme(plot.title = element_text(size = 14),
        axis.title = element_text(size = 12),
        axis.text = element_text(size = 10))

# Convierte la gráfica de ggplot a plotly
plotly_qq <- ggplotly(gg_qq)
plotly_qq

6.2 Comparación de percentiles empíricos con los normales teóricos

cuantiles<-c(0.01,0.025,0.05,0.1,0.25,0.40,0.45,0.5,0.75,0.9,0.95,0.975,0.99)
qnorm(cuantiles,mean = mean(Rtos_TRM),sd=sd(Rtos_TRM))
##  [1] -0.0136960635 -0.0115258505 -0.0096593476 -0.0075073893 -0.0039115613
##  [6] -0.0014169940 -0.0006606690  0.0000836647  0.0040788907  0.0076747187
## [11]  0.0098266770  0.0116931799  0.0138633929
quantile(Rtos_TRM, cuantiles)
##           1%         2.5%           5%          10%          25%          40% 
## -0.016723186 -0.012629880 -0.008984837 -0.005719115 -0.001424711  0.000000000 
##          45%          50%          75%          90%          95%        97.5% 
##  0.000000000  0.000000000  0.001295204  0.005982923  0.009560857  0.013183561 
##          99% 
##  0.019030831

7 Aplicaciones de asignación de probabilidad bajo el supuesto de que los rendimientos de la TRM siguen una distribución normal

7.1 Estimación de un intervalo de predicción del 90% para los rendimientos de la TRM

qnorm(c(0.05,0.95),mean = mean(Rtos_TRM),sd=sd(Rtos_TRM))
## [1] -0.009659348  0.009826677

Es más probable que los rendimientos de la TRM estén entre -0.009659348 y 0.009826677.

7.2 ¿Qué probabilidad hay de tener una perdida mayor al 1% en un día?

pnorm(-0.01,mean =mean(Rtos_TRM),sd=sd(Rtos_TRM))
## [1] 0.04434359

Hay una probabilidad del 0.04434359 de tener una perdida mayor al 1% en un día.

Preguntas

¿Cuál es la probabilidad de obtener una pérdida de hasta un 3% en un día?

1-pnorm(-0.03,mean =mean(Rtos_TRM),sd=sd(Rtos_TRM))
## [1] 0.9999998

Hay una probabilidad de 0.9999998 de obtener una pérdida de hasta un 3% en un día, es decir, que hay una probabilidad cercana a cero de perder más del 3%.

¿Cuál es la probabilidad de ganar hasta un 5% en un día?

pnorm(0.05,mean =mean(Rtos_TRM),sd=sd(Rtos_TRM))
## [1] 1

Hay una probabilidad de 1 de ganar hasta un 5% en un día.

¿Si usted invierte 10.000.000 COP cuál es la probabilidad de obtener pérdidas entre -500.000 Y 500.000 COP en un día?

inversion = 10000000
ganancia = 500000
perdida = -500000

proporcion = ganancia/inversion
proporcion
## [1] 0.05

¿Cuál es la probabilidad de obtener una pérdida de hasta un 5% en un día?

1-pnorm(-0.05,mean =mean(Rtos_TRM),sd=sd(Rtos_TRM))
## [1] 1

¿Cuál es la probabilidad de ganar hasta un 5% en un día?

pnorm(0.05,mean =mean(Rtos_TRM),sd=sd(Rtos_TRM))
## [1] 1

La probabilidad de tener una pérdida de -500000 o una ganancia de 500000 son eventos casi seguros dado que la probabilidad de tener perder o ganar más de un 5% es de 1.391602e-17.

8. Simulación de Montecarlo

Suponga que los rendimientos diarios de la TRM siguen una distribución normal y que la media es estimada como el promedio de los rendimientos diarios observados de la TRM y que la desviación estandar es estimada como la volatilidad histórica de los rendimientos diarios.

8.1 Realice una simulación con 10.0000 iteraciones para el valor de la TRM para el jueves 22 de febrero de 2024 (dos días adelante de la última fecha de la muestra).

Numero_iteraciones=10000
TRM_SIMULADA=matrix(,3,Numero_iteraciones)
TRM_Inicial=Datos_TRM[length(Datos_TRM[,"TRM"]), "TRM"]

TRM_SIMULADA[1,]=TRM_Inicial

for(j in 1:Numero_iteraciones){
  for(i in 2:3){
    TRM_SIMULADA[i,j]=TRM_Inicial*exp(rnorm(1,mean = mean(Rtos_TRM),sd=sd(Rtos_TRM)))
  }
}
TRM_SIMULADA_TRANS<-t(TRM_SIMULADA)

matplot(TRM_SIMULADA,type = "l", col = "blue", main="TRM  SIMULADA")

Se realiza el histograma de simulación de TRM

library(ggplot2)
library(plotly)

# Supongamos que TRM_SIMULADA contiene los datos simulados
gg_hist_density <- ggplot(data.frame(TRM = TRM_SIMULADA[2, ]), aes(x = TRM)) +
  geom_histogram(fill = "blue", alpha = 0.8, bins = 30) +
  stat_density(color = "black", linewidth = 0.8) +
  labs(title = "Histograma y Densidad de TRM Simulada",
       x = "Valor",
       y = "Frecuencia") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))

# Convierte la gráfica de ggplot a plotly
plotly_hist_density <- ggplotly(gg_hist_density)
plotly_hist_density

9. Analizar las posiciones de la TRM

En largo \((S_t - K) = F_0\)

En corto \((K - S_t) = F_0\)

POSICION<-(TRM_SIMULADA_TRANS[,3]-TRM_SIMULADA_TRANS[,1])

Se cuentan las posiciones en largo \(F_0 < S_0e^re^t\)

LARGO<-sum(POSICION>0)
LARGO
## [1] 5076

Si el especulador se va en largo, el número de largos obtenidos sería 4970.

Se cuentan las posiciones en corto \(F_0 > S_0e^re^t\)

CORTO<-sum(POSICION<0)
CORTO
## [1] 4924

Si el especulador se va en corto, el número de cortos obtenidos sería 5030.

Se encuentra la probabilidad de que la posición sea larga o de que la posición sea corta

proporcion_largo = LARGO/(LARGO+CORTO)
proporcion_largo
## [1] 0.5076
proporcion_corto = CORTO/(LARGO+CORTO)
proporcion_corto
## [1] 0.4924

Existe una mayor probabilidad de que la posición sea en corto con un 0.503 y la probabilidad de que la posicón sea en largo es de un 0.497.

LARGOS<- POSICION[POSICION > 0]

PROMEDIO_LARGOS<-mean(LARGOS)
PROMEDIO_LARGOS
## [1] 18.67331
CORTOS<-(POSICION[POSICION < 0])

PROMEDIO_CORTOS<-abs(mean(CORTOS))
PROMEDIO_CORTOS
## [1] 18.03349

El promedio de los largos obtenidos es de 18.94087 y el promedio de los cortos obtenidos es de 18.15755.

Se calculan los payoffs

PAYOFFCORTOS<-(PROMEDIO_CORTOS*10000)
PAYOFFCORTOS
## [1] 180334.9
PAYOFFLARGOS<-(PROMEDIO_LARGOS*10000)
PAYOFFLARGOS
## [1] 186733.1

El payoff si la posición es en corto es de 181575.5 y si la posición es en largo es de 189408.7.

10. Simulación de los Precios de los Futuros

Futuros_TRM = read.table("C:/Users/57314/Downloads/futuros_TRM.txt", header = TRUE)

# Guardar el archivo como un archivo HTML
library(knitr)

# Convertir la tabla a HTML
html_TRM <- kable(Futuros_TRM, format = "html")

# Guardar el código HTML en un archivo
write.csv(Futuros_TRM, "Futuros_TRM.html")

Rtos_FuturoTRM<-diff(log(Futuros_TRM[,"PFuturo"]))

Se realiza la media y la desviación estandar de los rendimientos del futuro

media_futuro<- mean(Rtos_FuturoTRM)
media_futuro
## [1] -0.0008998748
desvi_futuro<- sd(Rtos_FuturoTRM)
desvi_futuro
## [1] 0.01181196

La media de los rendimientos de los futuros es del -0.0008998748 y la desviación estandar es de 0.01181196, lo que significa que en promedio de los rendimientos del futuro de la TRM puede subir o bajar 0.01181196 en un día.

10.1. Simulación del Futuro

Numero_iteraciones=10000
FuturoTRM_SIMULADA=matrix(,90,Numero_iteraciones)
FuturoTRM_Inicial=Futuros_TRM[length(Futuros_TRM[,"PFuturo"]), "PFuturo"]
FuturoTRM_SIMULADA[1,]=FuturoTRM_Inicial

for(j in 1:Numero_iteraciones){
  for(i in 2:90){
    FuturoTRM_SIMULADA[i,j]=FuturoTRM_Inicial*exp(rnorm(1,mean = media_futuro,sd=desvi_futuro)) 
  }
}

FuturoTRM_SIMULADA_TRANS<-t(FuturoTRM_SIMULADA)

10.2. Histograma de simulación futuro TRM 20 de febrero

library(plotly)

ggplotly(ggplot(data = data.frame(FuturoTRM_SIMULADA[2,]), aes(x = FuturoTRM_SIMULADA[2,])) +
  geom_histogram(fill = "blue") +
  labs(title = "HISTOGRAMA SIMULACIÓN FUTURO TRM 20 DE FEBRERO DE 2024", x = "Valor"))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

10.3. Llamado al margen

Numero_de_contratos = 10
Nominal_del_contrato = 50000    
Precio_inicial = 4198
Exposicion_Total = Numero_de_contratos*Nominal_del_contrato*Precio_inicial
Exposicion_Contrato = Exposicion_Total/Numero_de_contratos
Garantia_Inicial = 0.35
Valor_de_la_garantia_inicial = Exposicion_Total*Garantia_Inicial    
Valor_de_la_garantía_minima = Valor_de_la_garantia_inicial*0.18

Se liquidan los futuros y se nombran las columnas

Liq_F<-Futuros_TRM
Diferencia<-diff((Futuros_TRM[,"PFuturo"]))
Diferencia <- append(0, Diferencia)
Liq_F<-cbind(Liq_F,(Diferencia*Numero_de_contratos*Nominal_del_contrato))

colnames(Liq_F) <- c("Fecha","Precio Spot","Precio Futuro","LiquidacionDiaria")
margen<-matrix()
ColumAyu<-matrix()
length(ColumAyu)
## [1] 1

Cálculo del llamado al margen

Llamado_al_margen<-matrix()

for (i in 1:(nrow(Liq_F))) {
  ColumAyu[1]=Valor_de_la_garantia_inicial
  ColumAyu[i+1] <- ColumAyu[i] + Liq_F$LiquidacionDiaria[i+1]
  Llamado_al_margen[i] <- if(ColumAyu[i]<Valor_de_la_garantía_minima){Valor_de_la_garantia_inicial-ColumAyu[i]}
  else{0}
  margen[i]<-ColumAyu[i]+Llamado_al_margen[i]
}
ColumAyu
##  [1] 734650000 722595000 723070000 702395000 690875000 673145000 666395000
##  [8] 650970000 637745000 617595000 626095000 623295000 643895000 642270000
## [15] 699095000 695195000 725845000 712595000 702045000 745795000 777095000
## [22] 804895000 882095000 794695000 765775000 794320000 796445000 785095000
## [29] 769545000 762895000 777470000 733845000 695795000 707145000 672095000
## [36] 630595000 650095000 680595000 658595000 654595000 625395000 619395000
## [43] 684345000 688595000 651645000 675095000 687300000 657595000 609045000
## [50] 621795000 651895000 607245000 634270000 642995000 619970000 622845000
## [57] 628245000 599395000 588045000 578595000 593495000 580170000 543595000
## [64] 551595000 535945000 569945000 572545000 565895000 578895000 589495000
## [71] 571495000 557535000 569495000 575995000 594895000 568045000 553395000
## [78] 574195000 566320000 558945000 567180000 567595000 546495000 571095000
## [85] 585595000 575495000 583000000 578195000 559645000 557845000 560595000
## [92] 556670000 552095000 552545000 554625000 558770000        NA
Llamado_al_margen
##  [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [39] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [77] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
margen<-na.omit(margen)
margen
##  [1] 734650000 722595000 723070000 702395000 690875000 673145000 666395000
##  [8] 650970000 637745000 617595000 626095000 623295000 643895000 642270000
## [15] 699095000 695195000 725845000 712595000 702045000 745795000 777095000
## [22] 804895000 882095000 794695000 765775000 794320000 796445000 785095000
## [29] 769545000 762895000 777470000 733845000 695795000 707145000 672095000
## [36] 630595000 650095000 680595000 658595000 654595000 625395000 619395000
## [43] 684345000 688595000 651645000 675095000 687300000 657595000 609045000
## [50] 621795000 651895000 607245000 634270000 642995000 619970000 622845000
## [57] 628245000 599395000 588045000 578595000 593495000 580170000 543595000
## [64] 551595000 535945000 569945000 572545000 565895000 578895000 589495000
## [71] 571495000 557535000 569495000 575995000 594895000 568045000 553395000
## [78] 574195000 566320000 558945000 567180000 567595000 546495000 571095000
## [85] 585595000 575495000 583000000 578195000 559645000 557845000 560595000
## [92] 556670000 552095000 552545000 554625000 558770000
Liq_F<-cbind(Liq_F,margen,Llamado_al_margen,Diferencia)

Se toma un intervalo de predicción del 90% del valor de la cuenta de margen para dentro de un mes y se escogen 30 días de la base.

head(Liq_F$margen,30)
##  [1] 734650000 722595000 723070000 702395000 690875000 673145000 666395000
##  [8] 650970000 637745000 617595000 626095000 623295000 643895000 642270000
## [15] 699095000 695195000 725845000 712595000 702045000 745795000 777095000
## [22] 804895000 882095000 794695000 765775000 794320000 796445000 785095000
## [29] 769545000 762895000

Liquidación del futuro

print(Liq_F)
##         Fecha Precio Spot Precio Futuro LiquidacionDiaria    margen
## 1  29/08/2023     4111.52       4293.11                 0 734650000
## 2   5/09/2023     4063.36       4269.00         -12055000 722595000
## 3   6/09/2023     4089.46       4269.95            475000 723070000
## 4   7/09/2023     4093.04       4228.60         -20675000 702395000
## 5   8/09/2023     4045.83       4205.56         -11520000 690875000
## 6  11/09/2023     4012.26       4170.10         -17730000 673145000
## 7  12/09/2023     3997.74       4156.60          -6750000 666395000
## 8  13/09/2023     3993.53       4125.75         -15425000 650970000
## 9  14/09/2023     3950.92       4099.30         -13225000 637745000
## 10 18/09/2023     3928.28       4059.00         -20150000 617595000
## 11 19/09/2023     3905.95       4076.00           8500000 626095000
## 12 20/09/2023     3902.54       4070.40          -2800000 623295000
## 13 21/09/2023     3907.21       4111.60          20600000 643895000
## 14 22/09/2023     3948.25       4108.35          -1625000 642270000
## 15 25/09/2023     3948.70       4222.00          56825000 699095000
## 16 26/09/2023     4052.54       4214.20          -3900000 695195000
## 17 27/09/2023     4068.73       4275.50          30650000 725845000
## 18 28/09/2023     4093.60       4249.00         -13250000 712595000
## 19 29/09/2023     4085.57       4227.90         -10550000 702045000
## 20  2/10/2023     4053.76       4315.40          43750000 745795000
## 21  3/10/2023     4141.43       4378.00          31300000 777095000
## 22  4/10/2023     4187.01       4433.60          27800000 804895000
## 23  6/10/2023     4359.40       4588.00          77200000 882095000
## 24 10/10/2023     4386.66       4413.20         -87400000 794695000
## 25 17/10/2023     4249.00       4355.36         -28920000 765775000
## 26 18/10/2023     4222.09       4412.45          28545000 794320000
## 27 19/10/2023     4227.39       4416.70           2125000 796445000
## 28 20/10/2023     4249.71       4394.00         -11350000 785095000
## 29 23/10/2023     4238.85       4362.90         -15550000 769545000
## 30 24/10/2023     4221.39       4349.60          -6650000 762895000
## 31 25/10/2023     4213.97       4378.75          14575000 777470000
## 32 26/10/2023     4201.53       4291.50         -43625000 733845000
## 33 30/10/2023     4120.62       4215.40         -38050000 695795000
## 34  1/11/2023     4114.29       4238.10          11350000 707145000
## 35  2/11/2023     4117.71       4168.00         -35050000 672095000
## 36  3/11/2023     4047.11       4085.00         -41500000 630595000
## 37  7/11/2023     3975.09       4124.00          19500000 650095000
## 38  8/11/2023     4005.06       4185.00          30500000 680595000
## 39  9/11/2023     4065.79       4141.00         -22000000 658595000
## 40 10/11/2023     4056.94       4133.00          -4000000 654595000
## 41 14/11/2023     4037.19       4074.60         -29200000 625395000
## 42 15/11/2023     3963.57       4062.60          -6000000 619395000
## 43 16/11/2023     3976.84       4192.50          64950000 684345000
## 44 17/11/2023     4077.44       4201.00           4250000 688595000
## 45 20/11/2023     4116.59       4127.10         -36950000 651645000
## 46 21/11/2023     4033.83       4174.00          23450000 675095000
## 47 22/11/2023     4060.15       4198.41          12205000 687300000
## 48 24/11/2023     4092.33       4139.00         -29705000 657595000
## 49 28/11/2023     3989.89       4041.90         -48550000 609045000
## 50 29/11/2023     3957.77       4067.40          12750000 621795000
## 51 30/11/2023     3980.67       4127.60          30100000 651895000
## 52  1/12/2023     4045.22       4038.30         -44650000 607245000
## 53  4/12/2023     3983.15       4092.35          27025000 634270000
## 54  5/12/2023     3999.91       4109.80           8725000 642995000
## 55  6/12/2023     4023.21       4063.75         -23025000 619970000
## 56  7/12/2023     3989.55       4069.50           2875000 622845000
## 57 12/12/2023     3982.50       4080.30           5400000 628245000
## 58 14/12/2023     3999.43       4022.60         -28850000 599395000
## 59 18/12/2023     3956.76       3999.90         -11350000 588045000
## 60 19/12/2023     3932.59       3981.00          -9450000 578595000
## 61 20/12/2023     3925.77       4010.80          14900000 593495000
## 62 22/12/2023     3943.03       3984.15         -13325000 580170000
## 63 26/12/2023     3915.43       3911.00         -36575000 543595000
## 64 27/12/2023     3871.45       3927.00           8000000 551595000
## 65 28/12/2023     3844.81       3895.70         -15650000 535945000
## 66  3/01/2024     3895.53       3963.70          34000000 569945000
## 67  4/01/2024     3914.60       3968.90           2600000 572545000
## 68  5/01/2024     3927.64       3955.60          -6650000 565895000
## 69  9/01/2024     3912.93       3981.60          13000000 578895000
## 70 10/01/2024     3934.13       4002.80          10600000 589495000
## 71 11/01/2024     3946.39       3966.80         -18000000 571495000
## 72 12/01/2024     3929.79       3938.88         -13960000 557535000
## 73 15/01/2024     3901.38       3962.80          11960000 569495000
## 74 16/01/2024     3901.38       3975.80           6500000 575995000
## 75 17/01/2024     3940.85       4013.60          18900000 594895000
## 76 18/01/2024     3969.50       3959.90         -26850000 568045000
## 77 22/01/2024     3916.39       3930.60         -14650000 553395000
## 78 23/01/2024     3904.49       3972.20          20800000 574195000
## 79 24/01/2024     3934.62       3956.45          -7875000 566320000
## 80 29/01/2024     3925.26       3941.70          -7375000 558945000
## 81 30/01/2024     3918.93       3958.17           8235000 567180000
## 82 31/01/2024     3925.60       3959.00            415000 567595000
## 83  1/02/2024     3915.56       3916.80         -21100000 546495000
## 84  2/02/2024     3889.05       3966.00          24600000 571095000
## 85  5/02/2024     3928.11       3995.00          14500000 585595000
## 86  6/02/2024     3975.74       3974.80         -10100000 575495000
## 87  7/02/2024     3950.57       3989.81           7505000 583000000
## 88  8/02/2024     3962.23       3980.20          -4805000 578195000
## 89  9/02/2024     3954.68       3943.10         -18550000 559645000
## 90 12/02/2024     3926.08       3939.50          -1800000 557845000
## 91 13/02/2024     3915.28       3945.00           2750000 560595000
## 92 14/02/2024     3929.00       3937.15          -3925000 556670000
## 93 15/02/2024     3916.61       3928.00          -4575000 552095000
## 94 16/02/2024     3909.89       3928.90            450000 552545000
## 95 19/02/2024     3917.84       3933.06           2080000 554625000
## 96 20/02/2024     3917.84       3941.35           4145000 558770000
##    Llamado_al_margen Diferencia
## 1                  0       0.00
## 2                  0     -24.11
## 3                  0       0.95
## 4                  0     -41.35
## 5                  0     -23.04
## 6                  0     -35.46
## 7                  0     -13.50
## 8                  0     -30.85
## 9                  0     -26.45
## 10                 0     -40.30
## 11                 0      17.00
## 12                 0      -5.60
## 13                 0      41.20
## 14                 0      -3.25
## 15                 0     113.65
## 16                 0      -7.80
## 17                 0      61.30
## 18                 0     -26.50
## 19                 0     -21.10
## 20                 0      87.50
## 21                 0      62.60
## 22                 0      55.60
## 23                 0     154.40
## 24                 0    -174.80
## 25                 0     -57.84
## 26                 0      57.09
## 27                 0       4.25
## 28                 0     -22.70
## 29                 0     -31.10
## 30                 0     -13.30
## 31                 0      29.15
## 32                 0     -87.25
## 33                 0     -76.10
## 34                 0      22.70
## 35                 0     -70.10
## 36                 0     -83.00
## 37                 0      39.00
## 38                 0      61.00
## 39                 0     -44.00
## 40                 0      -8.00
## 41                 0     -58.40
## 42                 0     -12.00
## 43                 0     129.90
## 44                 0       8.50
## 45                 0     -73.90
## 46                 0      46.90
## 47                 0      24.41
## 48                 0     -59.41
## 49                 0     -97.10
## 50                 0      25.50
## 51                 0      60.20
## 52                 0     -89.30
## 53                 0      54.05
## 54                 0      17.45
## 55                 0     -46.05
## 56                 0       5.75
## 57                 0      10.80
## 58                 0     -57.70
## 59                 0     -22.70
## 60                 0     -18.90
## 61                 0      29.80
## 62                 0     -26.65
## 63                 0     -73.15
## 64                 0      16.00
## 65                 0     -31.30
## 66                 0      68.00
## 67                 0       5.20
## 68                 0     -13.30
## 69                 0      26.00
## 70                 0      21.20
## 71                 0     -36.00
## 72                 0     -27.92
## 73                 0      23.92
## 74                 0      13.00
## 75                 0      37.80
## 76                 0     -53.70
## 77                 0     -29.30
## 78                 0      41.60
## 79                 0     -15.75
## 80                 0     -14.75
## 81                 0      16.47
## 82                 0       0.83
## 83                 0     -42.20
## 84                 0      49.20
## 85                 0      29.00
## 86                 0     -20.20
## 87                 0      15.01
## 88                 0      -9.61
## 89                 0     -37.10
## 90                 0      -3.60
## 91                 0       5.50
## 92                 0      -7.85
## 93                 0      -9.15
## 94                 0       0.90
## 95                 0       4.16
## 96                 0       8.29

Se calcula la probabilidad

qnorm(c(0.05,0.95),mean = mean(head(Liq_F$margen,30)),sd=sd(head(Liq_F$margen,30)))
## [1] 611004219 826890114

La probabilidad de perder mas de 10.000.000 COP en un mes

proporcion_perd_fut <- 10000000/150000000

pnorm(-proporcion_perd_fut,mean =mean(Rtos_FuturoTRM),sd=sd(Rtos_FuturoTRM))
## [1] 1.289777e-08

Si el margen mínimo es de 130.000.000 COP ¿Cuál es la probabilidad de ser llamado al margen?

Si el margen mínimo es de $130.000.000 la probabilidad de ser llamado al margen es de 0% debido a que el valor minimo del margen es de $523.517.222, si queremos ser llamados al margen la garantía minima debe ser menor a este.