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"
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
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
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
• 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.
• 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:
• 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.
• 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.
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
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.
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
• 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.
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.
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.
¿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.
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
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
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.
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.
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%.
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.
inversion = 10000000
ganancia = 500000
perdida = -500000
proporcion = ganancia/inversion
proporcion
## [1] 0.05
1-pnorm(-0.05,mean =mean(Rtos_TRM),sd=sd(Rtos_TRM))
## [1] 1
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.
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.
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
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.
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.
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)
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`.
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
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 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.