library(openxlsx) # schauberger2020
library(reshape2) # @wickham2007
library(ggplot2) # @wickham2016
library(scales)
library(DT) # @xie2020
Tratar de medir con precisión la intensidad de una actividad ilícita es, por definición, una tarea condenada al fracaso. No la podemos medir con precisión porque, en lo general, será una actividad que busca realizarse de manera oculta. Podemos, sin embargo, intentar medir de manera aproximada la intensidad de dicha actividad a través de otros indicadores. Es decir, apreciarla de manera indirecta.
El lavado de dinero es una de estas actividades no observable (oculta), no se puede medir directamente. Los esfuerzos para medirlo directamente, por ejemplo, a partir de las acciones de incautación, arrestos o procesos judiciales, dependen en gran medida de la eficacia de las instancias gubernamentales y miden únicamente lo detectado, pero sigue persistiendo el problema de estimar el total de la actividad ilícita.
Existen diversas metodologías propuestas para medir la economía “oculta” de un país, asociando a esta el monto de dinero lavado. Todas las cifras obtenidas con estas metodologías han sido criticadas. Reuter (2004), por ejemplo, dice al respecto: “estimar cuánto dinero es efectivamente lavado en los Estados Unidos, cualquier otro país o globalmente es extremadamente difícil” y por eso sugiere que “medidas indirectas deben ser desarrolladas. Nos parece poco probable que una medición directa del volumen total puede ser mejorada en el futuro previsible”.
La propuesta es, por lo tanto, no intentar medir con exactitud el monto lavado, sino utilizar algunas de estas estimaciones como un termómetro que permita determinar la mejora o deterioro de las condiciones nacionales respecto de la economía ilegal. Una diferencia con otros trabajos, entonces, es que aquí no se busca determinar la magnitud del lavado de dinero en México. No se busca, incluso, determinar si México es un país riesgoso en términos de la incidencia del lavado de dinero. Simplemente se busca determinar si, en el tiempo, las condiciones son más o menos propicias para el lavado de dinero en el país. De ahí el símil con un “térmometro” de lavado de dinero.
Reuter (2004):
Basel Institute on Governance (2020):
A continuación se describen un conjunto de indicadores que, de alguna manera, considero están relacionados con diversas condiciones que favorecen al lavado de dinero en una determinada jurisicción.
El primer indicador que consideraré consiste en un índice compuesto que busca medir, en términos generales, el riesgo de LD/FT que representa una determinada jurisdicción.
El “Basel Institute on Governance” (BIG) es una organización vinculada a la Universidad de Basilea dedicada principalmente a la prevención y combate de la corrupción. Como parte de sus trabajos, el BIG calcula y publica anualmente un índice, el “Basel AML Index” (BAMLI) que “[…] mide el riesgo de LD/FT en países, usando fuentes de datos públicamente disponibles” (Basel Institute on Governance (2019)). El BAMLI, a diferencia de otras metodologías, no busca medir directamente la cantidad de dinero lavada en una determinada jurisdicción sino el riesgo que esa jurisdicción representa en función de la actividad e LD/FT. Es además un índice sintético, ya que utiliza un conjunto de indicadores para “rankear” a las jurisdicciones evaluadas y evalúa cinco áreas:
Las posiciones1 y puntuaciones de México en el BAMLI para los últimos años han sido las siguientes2:
bamli <-
read.xlsx(xlsxFile = 'bamli.xlsx') |>
transform(AÑO = as.character(AÑO))
bamli$`RANKING RELATIVO` <- 100*(bamli$RANKING/bamli$JURISDICCIONES)
bamli <- bamli[order(bamli$AÑO, decreasing = TRUE), ]
datatable(data = bamli, rownames = FALSE) %>%
formatRound(columns = c(4,5), digits = 2)
ggplot(
data = bamli, mapping = aes(x = AÑO, y = RANKING)
) +
geom_bar(stat = 'identity', fill = NA, colour = 'black') +
labs(title = 'BAMLI', subtitle = 'Ranking') +
theme_minimal()
ggplot(data = bamli, mapping = aes(x = AÑO, y = `RANKING RELATIVO`)) +
geom_bar(stat = 'identity', fill = NA, colour = 'black') +
labs(title = 'BAMLI', subtitle = 'Ranking relativo') +
theme_minimal()
ggplot(data = bamli, mapping = aes(x = AÑO, y = SCORE)) +
geom_bar(stat = 'identity', fill = NA, colour = 'black') +
labs(title = 'BAMLI', subtitle = 'Score') +
theme_minimal()
Como se puede apreciar, en los últimos años, si bien México ha pasado en el score del BAMLI de un valor de 5.70 en el 2013 a 5.2 en el 2022 (es decir, ha mejorado), comparativamente a otros países México ha deteriorado su posición pasando del lugar 105 (su mejor posición, en el 2014) al 60 en ranking y de un ranking relativo de 64.81 (2014) a 46.88 en 2022 (recordemos que, mientras mayor es el ranking relativo, mejor).
Es importante señalar que, la metodología del BAMLI sufre cambios años con año para incorporar mejoras metodológicas, lo que puede afectar la comparabilidad temporal estricta de los resultados (Basel Institute on Governance (2020)).
El efectivo (billetes y monedas), dado que favorece el anonimato, la dificultad para darle seguimiento o seguir su rastro (auditabilidad), su universal aceptabilidad y facilidad de transporte, es considerado uno de los instrumentos monetarios más convenientes para llevar a cabo transacciones relacionadas a actividades ilícitas. El uso del efectivo es, por lo tanto, generalmente considerado como un factor de riesgo en materia de LD/FT (Unidad de Inteligencia Financiera (2016), Unidad de Inteligencia Financiera (2020)).
Esta idea subyace en estudios como el de Reuter (2004) que señala que “[…] un método de estimación en particular, el método de demanda de dinero, ha sido frecuentemente aplicado para permitir la comparación de diversos países”. El mismo Reuter (2004) señala también que “utilizar el efectivo como base para medir lavado de dinero resultante de narcotráfico imprime el sezgo correcto al excluir al sector no monetario y tomar en consideración las enormes cantidades de efectivo involucradas en el comercio ilegal de drogas”.
Consideraré entonces que una mayor intensidad del uso del efectivo en el país es una condición que favorece al LD/FT.
Para medir la intensidad del uso del efectivo en México utilizaré los datos de la demandad de billetes y monedas en poder del público en México (M1), publicados por el Banco de México a través del Sistema de Información Económica, en la serie de tiempo de agregados monetarios (metodología 2018).
bym <-
read.xlsx(
xlsxFile = '../../00044_Estadisticas/banxico/banxico_M0.xlsx',
startRow = 18,
detectDates = TRUE)
bym$Fecha <- as.Date(bym$Fecha, origin = '1899/12/30')
bym$SF311409.2 <- bym$SF311409 / 1000000000
ggplot(data = bym, mapping = aes(x = Fecha, y = SF311409.2)) +
geom_line() +
scale_y_continuous(labels = comma) +
labs(
title = 'Billetes y monedas en poder del público',
subtitle = 'Billones de pesos',
caption = 'Fuente: Banco de México, Sistema de Información Económica.') +
ylab(label = 'Monto') +
theme_minimal()
Dado que la demanda de dinero puede verse afectada con el paso del tiempo por el efecto de la inflación, consideraré (por fines prácticos) el valor de los billetes y monedas en poder del público en UDIS (con base, igualmente, en el valos de la UDI publicado por el Banco de México).
udi <-
read.xlsx(
xlsxFile = '../../00044_Estadisticas/banxico/udis.xlsx',
startRow = 18,
detectDates = TRUE)
udi$Fecha <- as.Date(udi$Fecha, origin = '1899/12/30')
bym <-
merge(
x = bym,
y = udi,
by.x = 'Fecha',
by.y = 'Fecha',
all.x = TRUE)
bym$SF311409.u <- bym$SF311409.2 / bym$SP68257
bym <- bym[order(bym$Fecha, decreasing = TRUE), ]
datatable(
data = bym[,c(1,3,5)],
filter = 'top',
rownames = FALSE,
caption = 'Billones de pesos y de UDIs. Fuente: Banco de México, Sistema de Información Económica.',
colnames =
c('FECHA' = 'Fecha', 'MONTO' = 'SF311409.2', 'UDIS' = 'SF311409.u')) %>%
formatRound(columns = c('MONTO', 'UDIS'), digits = 3)
ggplot(data = bym, mapping = aes(x = Fecha, y = SF311409.u)) +
geom_line() +
scale_y_continuous(labels = comma) +
labs(
title = 'Billetes y monedas en poder del público',
subtitle = 'Billones de UDIS',
caption = 'Fuente: Banco de México, Sistema de Información Económica.') +
ylab(label = 'Monto') +
theme_minimal()
Finalmente, es posible argumentar, también que el monto de los billetes y monedas en circulación atiende, de alguna manera, a los niveles de crecimiento poblacional observados, por lo que utilizaré el monto en miles de UDIS per capita, utilizando para ello las proyecciones de población del CONAPO para cada año de la serie de tiempo.
poblacion <-
read.table(
file = '../../00044_Estadisticas/poblacion/conapo/pob_mit_proyecciones.csv',
sep = ',',
header = TRUE,
encoding = 'utf-8'
)
poblacion <- poblacion[which(poblacion$ENTIDAD == 'República Mexicana'),]
poblacion <-
aggregate(
x = list(POBLACION = poblacion$POBLACION),
by = list(AÑO = poblacion$AÑO),
FUN = sum)
ggplot(
data = poblacion[which(poblacion$AÑO >= 2000 & poblacion$AÑO < 2021),],
mapping = aes(x = AÑO, y = POBLACION)) +
geom_line() +
labs(
title = 'Proyecciones de población total en México',
caption = 'Fuente: CONAPO.') +
theme_minimal()
bym$AÑO <- format(x = bym$Fecha, format = '%Y')
bym <-
merge(
x = bym,
y = poblacion,
by.x = 'AÑO',
by.y = 'AÑO',
all.x = TRUE)
bym$SF311409.u.pc <- 1000000000000 * bym$SF311409.u / bym$POBLACION
datatable(
data = bym[order(bym$Fecha, decreasing = TRUE), c(2,4,6,8)],
filter = 'top',
rownames = FALSE,
caption = 'Billones de pesos y de UDIs. Valor per capita expresado en UDIs per capita. Fuente: Banco de México, Sistema de Información Económica; CONAPO.',
colnames =
c(
'FECHA' = 'Fecha',
'MONTO' = 'SF311409.2',
'UDIS' = 'SF311409.u',
'PER CAPITA' = 'SF311409.u.pc')) %>%
formatRound(columns = c('MONTO', 'UDIS', 'PER CAPITA'), digits = 3)
ggplot(data = bym, mapping = aes(x = Fecha, y = SF311409.u.pc)) +
geom_line() +
scale_y_continuous(labels = comma) +
labs(
title = 'Billetes y monedas en poder del público',
subtitle = 'UDIS per capita',
caption = 'Fuente: Banco de México, Sistema de Información Económica; CONAPO.') +
ylab(label = 'Monto') +
theme_minimal()
El lavado de dinero es un delito tipificado en el Código Penal de la Federación. Sin embargo es un delito del que se cuenta con muy escasa información estadística. Sin embargo, asumiendo que un alto porcentaje de los delitos cometidos son cometidos persiguiendo un fin económico, resulta lógico pensar que en lugares en los que se comete una mayor cantidad de delitos existe una mayor necesidad de lavar dinero.
Esta lógica, desde luego, no está excenta de objeciones. Uno podría argumentar, por ejemplo, que el lavado de dinero no se lleva a cabo necesariamente en los lugares en los que se comenten los delitos predicados (esto puede ser particularmente notorio en algunos tipos de delitos específicos).
A pesar de lo señalado en el párrafo anterior, supondremos aquí que, en igualdad de circunstancias, una jurisdicción en la que se observa una mayor presencia o incidencia del crimen en lo general, favorece la realización de todo tipo de delitos, entre ellos el delito de lavado de dinero.
En este sentido, buscamos en esta sección utilizar estadísticas que nos permitan dar seguimiento a la evolución de dicha incidencia delictiva en México en el tiempo, entendiendo con esto que, un incremento en la incidencia delictiva en lo general, favorece al lavado de dinero en lo particular y, desde luego, una dismunción en la incidencia delictiva en lo general se interpreta como una señal de que es más difícil o menos atractivo en lo general delinquir y, por lo tanto, se presume que lo mismo sucede para el delito de lavado de dinero en lo específico.
A nivel nacional, existen dos fuentes de información principales para la construcción de estadísticas relacionadas a la incidencia delictiva: el Secretariado Ejecutivo del Sistema Nacional de Seguridad Pública (SESNSP) y el Instituto Nacional de Estadística y Geografía (INEGI).
Las tablas y gráficos siguientes muestran la evolución de la estadística de la incidencia delictiva estatal medida por el SESNSP.
incidencia.estatal <-
read.table(
file =
'../../00044_Estadisticas/incidencia/incidencia_delictiva_estatal.txt',
sep = '|',
header = TRUE
)
incidencia.estatal <-
melt(
data = incidencia.estatal,
id.vars = 'ENTIDAD',
variable.name = 'año',
value.name = 'incidencia')
incidencia.estatal$año <-
as.numeric(substr(x = incidencia.estatal$año, start = 2, stop = 5))
incidencia.estatal <-
aggregate(
x = list(incidencia = incidencia.estatal$incidencia),
by = list(año = incidencia.estatal$año),
FUN = sum)
incidencia.estatal <- incidencia.estatal[order(incidencia.estatal$año),]
datatable(
data = incidencia.estatal,
filter = 'top',
rownames = FALSE,
caption = 'Incidencia delictiva estatal por año. Número de delitos. Fuente: SESNSP.',
colnames =
c('AÑO' = 'año', 'INCIDENCIA' = 'incidencia')) %>%
formatRound(columns = c(2), digits = 0)
ggplot(data = incidencia.estatal, mapping = aes(x = año, y = incidencia)) +
geom_line() +
scale_y_continuous(labels = comma) +
labs(
title = 'Incidencia delictiva estatal',
subtitle = 'Número de delitos',
caption = 'Fuente: SESNSP.') +
ylab(label = 'Número de delitos') +
theme_minimal()
Y considerando la evolución de la población3:
incidencia.estatal <-
merge(
x = incidencia.estatal,
y = poblacion,
by.x = 'año',
by.y = 'AÑO',
all.x = TRUE)
incidencia.estatal$incidencia.pc <-
10000 * incidencia.estatal$incidencia / incidencia.estatal$POBLACION
incidencia.estatal <- incidencia.estatal[order(incidencia.estatal$año),]
datatable(
data = incidencia.estatal,
filter = 'top',
rownames = FALSE,
caption = 'Incidencia delictiva estatal por año. Número de delitos. Fuente: SESNSP.',
colnames =
c(
'AÑO' = 'año',
'INCIDENCIA' = 'incidencia',
'POBLACIÓN' = 'POBLACION',
'INCIDENCIA PC' = 'incidencia.pc')) %>%
formatRound(columns = c(2:4), digits = 0)
ggplot(data = incidencia.estatal, mapping = aes(x = año, y = incidencia.pc)) +
geom_line() +
scale_y_continuous(labels = comma) +
labs(
title = 'Incidencia delictiva estatal',
subtitle = 'Número de delitos por cada 10,000 habitantes',
caption = 'Fuente: SESNSP, CONAPO.',
x = 'Año') +
ylab(label = 'Número de delitos por cada\n10,000 habitantes') +
theme_minimal()
A diferencia del dato de la incidencia delictiva obtenido de las cifras publicadas por el SESNSP, el dato que se obtiene de la ENVIPE (Instituto Nacional de Estadistica y Geografia (2020)) es una estimación del total de delitos (no solamente los denunciados o perseguidos de oficio) sufridos por la población de 18 años o más. Si bien puede considerarse un dato mas “completo” también es cierto que puede verse contaminado por muchos efectos de “opinión” en la población.
Es importante señalar que el INEGI, para el cálculo de la tasa de incidencia delictiva no incluye los delitos capturados bajo el rubro genérico de “vandalismo”. La cifra que se muestra en la tabla y gráfico siguientes es la cifra considerando la totalidad de los delitos recogidos en la ENVIPE4.
envipe.incidencia.nacional <-
read.table(
file =
'../../00044_Estadisticas/inegi/envipe/envipe_incidencia_nacional.txt',
sep = '|',
header = TRUE,
encoding = 'UTF-8'
) |>
transform(FECHA = as.Date(x = FECHA, format = '%Y-%m-%d'))
# envipe.incidencia.nacional.2 <-
# dcast(
# data = envipe.incidencia.nacional[, c(1, 4, 5, 7)],
# formula = ORDEN + DESCRIPCION ~ Fecha,
# value.var = 'incidencia'
# )
datatable(
data =
envipe.incidencia.nacional[
order(envipe.incidencia.nacional$FECHA, decreasing = TRUE),
]
, colnames = c('POBLACIÓN DE 18 AÑOS O MAYOR' = 3)
, rownames = FALSE
, caption =
'Incidencia delictiva a nivel nacional. Fuente: INEGI, ENVIPE.'
) %>%
formatRound(columns = 2:ncol(envipe.incidencia.nacional), digits = 2)
# envipe.incidencia.nacional.3 <-
# envipe.incidencia.nacional[
# which(envipe.incidencia.nacional$DESCRIPCION == 'TOTAL'), c(1, 3, 6, 7)]
#
# envipe.incidencia.nacional.3 <-
# envipe.incidencia.nacional.3[
# order(envipe.incidencia.nacional.3$Fecha, decreasing = TRUE),]
#
# datatable(
# data = envipe.incidencia.nacional.3,
# colnames =
# c('FECHA' = 1, 'NÚMERO DE DELITOS' = 2, 'POB. 18 +' = 3, 'INCIDENCIA' = 4),
# rownames = FALSE,
# caption = 'Incidencia delictiva a nivel nacional por tipo de delito. Fuente: INEGI, ENVIPE.') %>%
# formatRound(columns = 2:ncol(envipe.incidencia.nacional.3), digits = 2)
#
ggplot(
data = envipe.incidencia.nacional
# envipe.incidencia.nacional[
# which(envipe.incidencia.nacional$DESCRIPCION == 'TOTAL'),],
# mapping =
# aes(
# x = factor(Fecha),
# y = incidencia)
) +
aes(x = FECHA, y = INCIDENCIA) +
geom_col(position = 'dodge', fill = NA, colour = 'black') +
xlab(label = 'FECHA') +
ylab(label = 'INCIDENCIA DELICTIVA') +
labs(
title = 'ESTIMACIÓN DE LA INCIDENCIA DELICTIVA',
subtitle = 'TOTAL NACIONAL',
caption = 'Fuente: INEGI, ENVIPE') +
theme_minimal()
Tomar los datos del archivo ‘ensu_1.txt’.
| INDICADOR | FUENTE | ÚLTIMO DATO DISPONIBLE |
|---|---|---|
| BAMLI | BIG | 2020 |
| M0 | BANXICO | 2021-02 |
| INCIDENCIA ESTATAL | SESNSP | 20205 |
| INCIDENCIA DELICTIVA | INEGI | 2019 |
En la tabla se incluye un “ranking relativo” es decir, la posición relativa de México en la tabla considerando el total de jurisdicciones evaluadas en el año. Las jurisdicciones evaluadas cambian año con año, por lo que ver únicamente la posición en la tabla puede ser engañoso.↩︎
El ranking del BAMLI debe leerse en sentido inverso, es decir, la posición #1 la ocupa el país considerado el más riesgoso, con excepción de los rankings del 2014 que fueron presentados de menor a mayor riesgo, por lo que el dato que se presenta aquí para dicho año está modificado para homologar al criterio usado en el resto de los años. El score es al revés, a mayor score, mayor riesgo.↩︎
La columna “INCIDENCIA PC” muestra la incidencia delictiva por cada 10,000 habitantes.↩︎
Para un análisis más detallado de la ENVIPE: ANÁLISIS DE LA ENCUESTA NACIONAL DE VICTIMIZACIÓN Y PERCEPCIÓN SOBRE SEGURIDAD PÚBLICA.↩︎
Aunque se muestran datos de 2021, la estadística completa para este año todavía no se encuentra disponible.↩︎