Cifras generales

fecha.consulta <- 
  file.info(paste0(ruta.1, 'sanciones_', Sys.Date(), '.xlsx'))$ctime

fecha.publicacion <- 
  as.Date(paste0(max(datos.4$Mes.de.Publicación),'01'), format = '%Y%m%d')

Los datos siguientes contemplan las sanciones impuestas entre 2017-05-22 y 2024-07-311. Se analizaron un total de 2,622 sanciones por un monto total de $597,492,038. El monto promedio histórico observado por sanción es de $227,876.4 y se ha sancionado a entidades de 17 sectores:

##  [1] "Almacenes"                                     
##  [2] "Asesores de inversión"                         
##  [3] "Asesores en Inversión"                         
##  [4] "Casas de Bolsa"                                
##  [5] "Casas de Cambio"                               
##  [6] "Centros Cambiarios"                            
##  [7] "Sociedades Operadoras"                         
##  [8] "Banca Múltiple"                                
##  [9] "Banca de Desarrollo"                           
## [10] "Sociedades Cooperativas de Ahorro y Préstamo"  
## [11] "Sociedades Distribuidoras"                     
## [12] "Sociedades Financieras de Objeto Múltiple"     
## [13] "Sociedades Financieras de Objeto Múltiple, ENR"
## [14] "Sociedades Financieras Populares"              
## [15] "Transmisores de dinero"                        
## [16] "Uniones de Crédito"                            
## [17] "No identificado"

El monto de la sanción máxima impuesta ha sido por $8,449,000, impuesta el 2020-01-09 a SISTEMA DE TRANSFERENCIAS Y PAGOS STP, S.A. DE C.V., SOFOM, E.N.R. por NO CUENTA CON EL SISTEMA AUTOMATIZADO EN MATERIA DE PREVENCIÓN DE OPERACIONES CON RECURSOS DE PROCEDENCIA ILICITA A QUE ALUDE LA 43a DE LAS “DISPOSICIONES DE CARÁCTER GENERAL A QUE SE REFIEREN LOS ARTÍCULOS 115 DE LA LEY DE INSTITUCIONES DE CRÉDITO Y 95-BIS DE ESTE ÚLTIMO ORDENAMIENTO, APLICABLES A LAS SOCIEDADES FINANCIERAS DE OBJETO MÚLTIPLE”., infracción cometida en el 2019.

POR AÑO DE IMPOSICIÓN

POR AÑO DE INFRACCIÓN

temp <-
  aggregate(
    x = 
      list(
        Num.sanciones = datos.4$Aux.1
        , Monto.total = datos.4$Monto
        )
    , by  = list(Fecha.de.Infracción = datos.4$Fecha.de.Infracción)
    , FUN = sum
    )

temp <- temp[order(temp$Fecha.de.Infracción, decreasing = TRUE),]

temp$monto.prom <- temp$Monto.total / temp$Num.sanciones

datatable(
  data  = temp,
  style = "bootstrap",
  rownames = FALSE,
  colnames = c('Año', 'Número de Sanciones', 'Monto', 'Monto Promedio')) %>% 
  formatCurrency(
    columns  = 3:4,
    currency = "$",
    interval = 3,
    digits = 0) %>%
  formatRound(
    columns = 2,
    digits = 0
    )

AÑO DE INFRACCIÓN + AÑO DE IMPOSICIÓN

El cruce del año de imposición de la sanción y el año de infracción permite entender cuál es periodo de interés del supervisor en las revisiones efectuadas. Es importante señalar que dicho periodo de interés es móvil y las sanciones proporcionan una visión rezagada de dicho periodo.

# Agrupa los datos del número de sanciones y el monto por año de imposición y 
# año de infracción.
#
datos.48 <- 
  aggregate(
    x = list(Num.Sanc = datos.4$Aux.1, Monto = datos.4$Monto), 
    by = list(
      año.imposicion = datos.4$A_o.Imposicion.Sancion,
      año.infraccion = datos.4$Fecha.de.Infracción),
    FUN = sum)

# Reorganiza en forma tabular el número de sanciones.
#
datos.49 <- 
  dcast(
    data = datos.48, 
    formula = año.imposicion ~ año.infraccion, 
    fun.aggregate = sum, 
    value.var = 'Num.Sanc')

datos.49 <- datos.49[order(datos.49$año.imposicion, decreasing = TRUE),]

# Reorganiza en forma tabular el monto de sanciones.
#
datos.50 <- 
  dcast(
    data = datos.48, 
    formula = año.imposicion ~ año.infraccion, 
    fun.aggregate = sum, 
    value.var = 'Monto')

datos.50 <- datos.50[order(datos.50$año.imposicion, decreasing = TRUE),]
datatable(
  data = datos.49,
  rownames = FALSE,
  colnames = c('IMPOSICIÓN \ INFRACCIÓN' = 1),
  caption = 'Número de sanciones por año de imposición de sanción y año de infracción.') %>%
  formatRound(columns = 2:ncol(datos.49), digits = 0)
datatable(
  data = datos.50,
  rownames = FALSE,
  colnames = c('IMPOSICIÓN \ INFRACCIÓN' = 1),
  caption = 'Monto de las sanciones por año de imposición de sanción y año de infracción.') %>%
  formatCurrency(columns = 2:ncol(datos.50))

AÑO DE INFRACCIÓN + CONDUCTA GENÉRICA

NÚMERO DE SANCIONES

Monto

Monto promedio

AÑO DE INFRACCIÓN + SECTOR

NÚMERO DE SANCIONES

Monto

AÑO DE INFRACCIÓN + GRUPO FINANCIERO

NÚMERO DE SANCIONES

MONTO

MONTO PROMEDIO

POR CONDUCTA GENÉRICA

Número de sanciones y monto de las sanciones total históricos por conducta:

aggregate.by <- list(Conducta = datos.4$Conducta.Gen)

temp <- 
  aggregate(
    x   = list(Sanciones = datos.4$Aux, Monto = datos.4$Monto), 
    by  = aggregate.by , 
    FUN = sum)

datatable(data = temp, rownames = FALSE) %>%
  formatRound(columns = 'Sanciones', digits = 0) %>%
  formatCurrency(columns = 'Monto', digits = 0)

Por conducta y año de imposición

Número de sanciones

Monto

Monto promedio

Por conducta y sector

Número de sanciones

Monto

Sector Capacitación Conocimiento Conservación de información EBR Estructuras internas Identificación Informe de auditoría ND Otras Políticas y procedimientos Registro Reportes Sistemas automatizados Total
Banca Múltiple 0 3,730,100 0 1,612,000 0 825,450 0 144,833,315 3,217,900 6,574,335 0 4,466,800 2,695,900 167,955,800
Sociedades Financieras de Objeto Múltiple, ENR 15,098 0 0 0 0 974,980 9,144,880 131,075,340 622,440 0 0 20,797,578 1,819,880 164,450,196
Centros Cambiarios 48,360 0 0 0 754,900 292,160 1,575,100 57,048,576 319,960 622,440 0 6,334,074 754,900 67,750,470
Casas de Bolsa 0 0 0 806,000 0 0 0 36,810,889 1,612,000 350,500 0 7,316,130 350,500 47,246,019
Sociedades Financieras Populares 0 0 0 0 0 89,620 881,490 31,484,740 0 154,590 0 1,242,920 0 33,853,360
Asesores en Inversión 0 0 0 0 0 0 0 29,798,500 0 518,700 0 0 0 30,317,200
Transmisores de dinero 0 0 292,160 0 0 292,160 0 18,411,762 207,480 0 0 1,743,580 292,160 21,239,302
Uniones de Crédito 0 140,200 0 0 0 140,200 17,924 11,281,272 319,960 508,278 0 330,180 0 12,738,014
Sociedades Cooperativas de Ahorro y Préstamo 161,200 0 84,490 168,980 0 84,490 161,200 7,343,840 171,370 80,600 0 2,063,190 0 10,319,360
No identificado 0 0 0 0 0 0 518,700 8,832,000 0 0 0 754,900 0 10,105,600
Sociedades Distribuidoras 0 0 0 0 0 0 0 10,019,085 0 0 0 0 0 10,019,085
Banca de Desarrollo 0 0 0 806,000 0 0 0 5,662,650 0 0 0 0 0 6,468,650
Sociedades Financieras de Objeto Múltiple 0 0 0 0 0 0 0 4,644,855 0 322,400 0 322,400 468,480 5,758,135
Casas de Cambio 0 632,140 0 0 0 844,900 0 944,320 0 337,960 0 0 844,900 3,604,220
Sociedades Operadoras 0 0 0 0 0 0 0 2,648,853 253,470 0 0 468,270 0 3,370,593
Almacenes 0 0 0 0 0 0 523,552 1,291,324 0 0 0 481,160 0 2,296,036
Asesores de inversión 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Total 224,658 4,502,440 376,650 3,392,980 754,900 3,543,960 12,822,846 502,131,320 6,724,580 9,469,803 0 46,321,182 7,226,720 597,492,038

Monto promedio

Sector Capacitación Conocimiento Conservación de información EBR Estructuras internas Identificación Informe de auditoría ND Otras Políticas y procedimientos Registro Reportes Sistemas automatizados Total
Almacenes 0 0.0 0 0 0 0 261,776.0 143,480.4 0.00 0.0 0 120,290.00 0.0 153,069.1
Asesores de inversión 0 0.0 0 0 0 0 0.0 0.0 0.00 0.0 0 0.00 0.0 0.0
Asesores en Inversión 0 0.0 0 0 0 0 0.0 496,641.7 0.00 518,700.0 0 0.00 0.0 488,987.1
Banca de Desarrollo 0 0.0 0 403,000 0 0 0.0 353,915.6 0.00 0.0 0 0.00 0.0 359,369.4
Banca Múltiple 0 932,525.0 0 403,000 0 412,725 0.0 689,682.4 321,790.00 505,718.0 0 372,233.33 1,347,950.0 653,524.5
Casas de Bolsa 0 0.0 0 403,000 0 0 0.0 1,022,524.7 403,000.00 350,500.0 0 522,580.71 350,500.0 814,586.5
Casas de Cambio 0 158,035.0 0 0 0 844,900 0.0 157,386.7 0.00 168,980.0 0 0.00 844,900.0 225,263.8
Centros Cambiarios 12,090 0.0 0 0 754,900 146,080 157,510.0 124,018.6 24,612.31 155,610.0 0 95,970.82 754,900.0 112,355.7
No identificado 0 0.0 0 0 0 0 518,700.0 552,000.0 0.00 0.0 0 754,900.00 0.0 561,422.2
Sociedades Cooperativas de Ahorro y Préstamo 80,600 0.0 84,490 84,490 0 84,490 80,600.0 104,912.0 34,274.00 80,600.0 0 108,588.95 0.0 100,188.0
Sociedades Distribuidoras 0 0.0 0 0 0 0 0.0 770,698.8 0.00 0.0 0 0.00 0.0 770,698.8
Sociedades Financieras de Objeto Múltiple 0 0.0 0 0 0 0 0.0 185,794.2 0.00 161,200.0 0 107,466.67 156,160.0 174,488.9
Sociedades Financieras de Objeto Múltiple, ENR 15,098 0.0 0 0 0 487,490 166,270.5 136,679.2 207,480.00 0.0 0 135,931.88 606,626.7 139,719.8
Sociedades Financieras Populares 0 0.0 0 0 0 89,620 440,745.0 398,541.0 0.00 77,295.0 0 207,153.33 0.0 376,148.4
Sociedades Operadoras 0 0.0 0 0 0 0 0.0 294,317.0 253,470.00 0.0 0 156,090.00 0.0 240,756.6
Transmisores de dinero 0 0.0 146,080 0 0 146,080 0.0 292,250.2 207,480.00 0.0 0 174,358.00 146,080.0 259,015.9
Uniones de Crédito 0 140,200.0 0 0 0 140,200 17,924.0 221,201.4 159,980.00 127,069.5 0 165,090.00 0.0 205,451.8
Total 32,094 500,271.1 125,550 339,298 377,450 295,330 173,281.7 241,061.6 172,425.13 315,660.1 0 156,490.48 555,901.5 227,876.4

POR SECTOR

temp <- 
  datos.4 %>%
  group_by(Sub.sector) %>%
  summarise(
    Sanciones = sum(Aux.1),
    Monto = sum(Monto))
  
datatable(
  data = temp, 
  colnames = c('Sector' = 'Sub.sector'),
  rownames = FALSE) %>%
  formatRound(columns = 'Sanciones', digits = 0) %>%
  formatCurrency(columns = 'Monto', digits = 0)

SECTOR + AÑO DE IMPOSICIÓN

MONTO

NÚMERO DE SANCIONES

MONTO PROMEDIO POR SANCIÓN

NÚMERO DE ENTIDADES SANCIONADAS

Monto promedio de las sanciones totales por entidad por año de imposición de la sanción y sector sancionado

Por grupo de entidades

Para la presente sección se consideran indistintamente grupos financieros formalmente establecidos, grupos económicos o conglomerados.

POR ENTIDAD

# Histórico de monto y número de sanciones por entidad.

temp <- 
  aggregate(
    x   = list(Monto = datos.4$Monto, Sanciones = datos.4$Aux)
    , by  = list(Institución = datos.4$NOMBRE.CORTO) 
    , FUN = sum
    )

temp$`Monto promedio` <- temp$Monto / temp$Sanciones

temp <- temp[order(temp$Monto, decreasing = TRUE),]

datatable(data = temp, rownames = FALSE) %>%
  formatRound(columns = 'Sanciones', digits = 0) %>%
  formatCurrency(columns = c('Monto'), digits = 0) %>%
  formatCurrency(columns = c('Monto promedio'), digits = 2)

ENTIDAD + AÑO DE IMPOSICIÓN

NÚMERO DE SANCIONES

MONTO

MONTO PROMEDIO

ENTIDAD + AÑO DE INFRACCIÓN

NÚMERO DE SANCIONES

MONTO

ENTIDAD + CONDUCTA GENÉRICA

NÚMERO DE SANCIONES

MONTO

MONTO PROMEDIO POR SANCIÓN

MONTO MÁXIMO POR SANCIÓN

POR GRUPO FINANCIERO/ECONÓMICO

Histórico de sanciones por grupo:

# Histórico de monto y número de sanciones por entidad.

temp <- 
  aggregate(
    x   = list(Monto = datos.4$Monto, Sanciones = datos.4$Aux)
    , by  = list(Grupo = datos.4$GRUPO) 
    , FUN = sum
    )

temp <- temp[order(temp$Monto, decreasing = TRUE),]

datatable(data = temp, rownames = FALSE) %>%
  formatRound(columns = 'Sanciones', digits = 0) %>%
  formatCurrency(columns = 'Monto', digits = 0)


  1. Publicadas el 2024-08-01 y consultadas el 2024-08-19 17:46:32.↩︎